From 42d1a4f67e29e05c5d6e87c8668a61a25bf038d0 Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Tue, 21 Jul 2026 15:53:54 +0800 Subject: [PATCH] chore: update frontend bundle and project assets --- frontend-dist/css/136.93acb05d.css | 1 + frontend-dist/css/136.93acb05d.css.gz | Bin 0 -> 12223 bytes frontend-dist/css/148.ff5f4652.css | 1 - frontend-dist/css/148.ff5f4652.css.gz | Bin 11864 -> 0 bytes .../{385.20c34d33.css => 173.5edc1a8c.css} | 2 +- frontend-dist/css/173.5edc1a8c.css.gz | Bin 0 -> 5027 bytes frontend-dist/css/227.e7484000.css | 1 - frontend-dist/css/227.e7484000.css.gz | Bin 2468 -> 0 bytes .../{412.ba63fb59.css => 267.d120d397.css} | 2 +- frontend-dist/css/267.d120d397.css.gz | Bin 0 -> 8661 bytes frontend-dist/css/278.e44cbf52.css | 1 - frontend-dist/css/278.e44cbf52.css.gz | Bin 1647 -> 0 bytes frontend-dist/css/278.f8d0bad0.css | 1 + frontend-dist/css/278.f8d0bad0.css.gz | Bin 0 -> 1746 bytes frontend-dist/css/30.755fb9d7.css | 1 + frontend-dist/css/30.755fb9d7.css.gz | Bin 0 -> 5629 bytes frontend-dist/css/331.12334816.css | 1 + frontend-dist/css/331.12334816.css.gz | Bin 0 -> 1789 bytes frontend-dist/css/331.dd13d5f5.css | 1 - frontend-dist/css/331.dd13d5f5.css.gz | Bin 1691 -> 0 bytes frontend-dist/css/385.20c34d33.css.gz | Bin 4931 -> 0 bytes .../{903.7a90c42f.css => 390.9faa139f.css} | 2 +- frontend-dist/css/390.9faa139f.css.gz | Bin 0 -> 15344 bytes frontend-dist/css/412.ba63fb59.css.gz | Bin 8637 -> 0 bytes frontend-dist/css/451.7e03bef9.css | 1 - frontend-dist/css/451.7e03bef9.css.gz | Bin 5055 -> 0 bytes frontend-dist/css/488.64e37d88.css | 1 + frontend-dist/css/488.64e37d88.css.gz | Bin 0 -> 2580 bytes frontend-dist/css/647.4c84bc35.css | 1 + frontend-dist/css/647.4c84bc35.css.gz | Bin 0 -> 11197 bytes frontend-dist/css/679.e7484000.css | 1 - frontend-dist/css/679.e7484000.css.gz | Bin 2468 -> 0 bytes frontend-dist/css/804.64e37d88.css | 1 + frontend-dist/css/804.64e37d88.css.gz | Bin 0 -> 2580 bytes frontend-dist/css/888.af58b0bb.css | 1 - frontend-dist/css/888.af58b0bb.css.gz | Bin 11138 -> 0 bytes frontend-dist/css/903.7a90c42f.css.gz | Bin 15313 -> 0 bytes frontend-dist/css/967.3f3c6dac.css | 1 - frontend-dist/css/967.3f3c6dac.css.gz | Bin 1580 -> 0 bytes frontend-dist/css/967.b80746a3.css | 1 + frontend-dist/css/967.b80746a3.css.gz | Bin 0 -> 1681 bytes frontend-dist/css/app.f639726f.css | 1 + frontend-dist/css/app.f639726f.css.gz | Bin 0 -> 3854 bytes frontend-dist/css/app.ffc502cb.css | 1 - frontend-dist/css/app.ffc502cb.css.gz | Bin 5078 -> 0 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 546 -> 547 bytes frontend-dist/js/136.e7c2a2d2.js | 2 ++ frontend-dist/js/136.e7c2a2d2.js.gz | Bin 0 -> 33680 bytes frontend-dist/js/136.e7c2a2d2.js.map | 1 + frontend-dist/js/136.e7c2a2d2.js.map.gz | Bin 0 -> 85182 bytes frontend-dist/js/148.b1b1da05.js | 2 -- frontend-dist/js/148.b1b1da05.js.gz | Bin 33624 -> 0 bytes frontend-dist/js/148.b1b1da05.js.map | 1 - frontend-dist/js/148.b1b1da05.js.map.gz | Bin 85144 -> 0 bytes .../js/{21.f318bc2e.js => 21.618c6fee.js} | 4 ++-- frontend-dist/js/21.618c6fee.js.gz | Bin 0 -> 2732 bytes frontend-dist/js/21.618c6fee.js.map | 1 + frontend-dist/js/21.618c6fee.js.map.gz | Bin 0 -> 8103 bytes frontend-dist/js/21.f318bc2e.js.gz | Bin 2719 -> 0 bytes frontend-dist/js/21.f318bc2e.js.map | 1 - frontend-dist/js/21.f318bc2e.js.map.gz | Bin 8071 -> 0 bytes frontend-dist/js/227.44709224.js.gz | Bin 897 -> 0 bytes frontend-dist/js/227.44709224.js.map.gz | Bin 2458 -> 0 bytes frontend-dist/js/267.6c191923.js | 2 ++ frontend-dist/js/267.6c191923.js.gz | Bin 0 -> 47886 bytes frontend-dist/js/267.6c191923.js.map | 1 + frontend-dist/js/267.6c191923.js.map.gz | Bin 0 -> 163701 bytes .../js/{278.bb8355a5.js => 278.740dc6f4.js} | 4 ++-- frontend-dist/js/278.740dc6f4.js.gz | Bin 0 -> 3567 bytes frontend-dist/js/278.740dc6f4.js.map | 1 + frontend-dist/js/278.740dc6f4.js.map.gz | Bin 0 -> 9823 bytes frontend-dist/js/278.bb8355a5.js.gz | Bin 3552 -> 0 bytes frontend-dist/js/278.bb8355a5.js.map | 1 - frontend-dist/js/278.bb8355a5.js.map.gz | Bin 9782 -> 0 bytes frontend-dist/js/283.5d4f325d.js | 2 -- frontend-dist/js/283.5d4f325d.js.gz | Bin 3483 -> 0 bytes frontend-dist/js/283.5d4f325d.js.map | 1 - frontend-dist/js/283.5d4f325d.js.map.gz | Bin 9679 -> 0 bytes frontend-dist/js/293.4c283028.js | 2 ++ frontend-dist/js/293.4c283028.js.gz | Bin 0 -> 3505 bytes frontend-dist/js/293.4c283028.js.map | 1 + frontend-dist/js/293.4c283028.js.map.gz | Bin 0 -> 9667 bytes .../js/{331.4f42d273.js => 331.096fa41f.js} | 4 ++-- frontend-dist/js/331.096fa41f.js.gz | Bin 0 -> 3784 bytes frontend-dist/js/331.096fa41f.js.map | 1 + frontend-dist/js/331.096fa41f.js.map.gz | Bin 0 -> 10094 bytes frontend-dist/js/331.4f42d273.js.gz | Bin 3772 -> 0 bytes frontend-dist/js/331.4f42d273.js.map | 1 - frontend-dist/js/331.4f42d273.js.map.gz | Bin 10059 -> 0 bytes frontend-dist/js/390.b089c785.js | 2 ++ frontend-dist/js/390.b089c785.js.gz | Bin 0 -> 58876 bytes frontend-dist/js/390.b089c785.js.map | 1 + frontend-dist/js/390.b089c785.js.map.gz | Bin 0 -> 147276 bytes frontend-dist/js/412.2eefa4a8.js | 2 -- frontend-dist/js/412.2eefa4a8.js.gz | Bin 47758 -> 0 bytes frontend-dist/js/412.2eefa4a8.js.map | 1 - frontend-dist/js/412.2eefa4a8.js.map.gz | Bin 163538 -> 0 bytes .../js/{227.44709224.js => 488.ca0cfcd4.js} | 4 ++-- frontend-dist/js/488.ca0cfcd4.js.gz | Bin 0 -> 897 bytes ...27.44709224.js.map => 488.ca0cfcd4.js.map} | 2 +- frontend-dist/js/488.ca0cfcd4.js.map.gz | Bin 0 -> 2456 bytes .../js/{888.f7235188.js => 647.408915ac.js} | 6 +++--- frontend-dist/js/647.408915ac.js.gz | Bin 0 -> 106576 bytes ...88.f7235188.js.map => 647.408915ac.js.map} | 2 +- frontend-dist/js/647.408915ac.js.map.gz | Bin 0 -> 365184 bytes frontend-dist/js/679.23bb4457.js.gz | Bin 893 -> 0 bytes frontend-dist/js/679.23bb4457.js.map.gz | Bin 2285 -> 0 bytes .../js/{679.23bb4457.js => 804.e8b06fe3.js} | 4 ++-- frontend-dist/js/804.e8b06fe3.js.gz | Bin 0 -> 893 bytes ...79.23bb4457.js.map => 804.e8b06fe3.js.map} | 2 +- frontend-dist/js/804.e8b06fe3.js.map.gz | Bin 0 -> 2283 bytes frontend-dist/js/888.f7235188.js.gz | Bin 106579 -> 0 bytes frontend-dist/js/888.f7235188.js.map.gz | Bin 365181 -> 0 bytes frontend-dist/js/903.808d69b5.js | 2 -- frontend-dist/js/903.808d69b5.js.gz | Bin 58913 -> 0 bytes frontend-dist/js/903.808d69b5.js.map | 1 - frontend-dist/js/903.808d69b5.js.map.gz | Bin 147096 -> 0 bytes frontend-dist/js/967.db104add.js.gz | Bin 3633 -> 0 bytes frontend-dist/js/967.db104add.js.map | 1 - frontend-dist/js/967.db104add.js.map.gz | Bin 9787 -> 0 bytes .../js/{967.db104add.js => 967.f004078f.js} | 4 ++-- frontend-dist/js/967.f004078f.js.gz | Bin 0 -> 3645 bytes frontend-dist/js/967.f004078f.js.map | 1 + frontend-dist/js/967.f004078f.js.map.gz | Bin 0 -> 9823 bytes frontend-dist/js/app.08a5e390.js | 2 -- frontend-dist/js/app.08a5e390.js.gz | Bin 25179 -> 0 bytes frontend-dist/js/app.08a5e390.js.map.gz | Bin 18374 -> 0 bytes frontend-dist/js/app.4fc1f60f.js | 2 ++ frontend-dist/js/app.4fc1f60f.js.gz | Bin 0 -> 25177 bytes ...pp.08a5e390.js.map => app.4fc1f60f.js.map} | 2 +- frontend-dist/js/app.4fc1f60f.js.map.gz | Bin 0 -> 18380 bytes functions/api/manage/sysConfig/page.js | 5 +++-- readme/202410011443570.png | Bin 1034302 -> 0 bytes readme/upload.png | Bin 1759197 -> 5183469 bytes readme/海报.png | Bin 1176335 -> 1042058 bytes 136 files changed, 53 insertions(+), 52 deletions(-) create mode 100644 frontend-dist/css/136.93acb05d.css create mode 100644 frontend-dist/css/136.93acb05d.css.gz delete mode 100644 frontend-dist/css/148.ff5f4652.css delete mode 100644 frontend-dist/css/148.ff5f4652.css.gz rename frontend-dist/css/{385.20c34d33.css => 173.5edc1a8c.css} (98%) create mode 100644 frontend-dist/css/173.5edc1a8c.css.gz delete mode 100644 frontend-dist/css/227.e7484000.css delete mode 100644 frontend-dist/css/227.e7484000.css.gz rename frontend-dist/css/{412.ba63fb59.css => 267.d120d397.css} (67%) create mode 100644 frontend-dist/css/267.d120d397.css.gz delete mode 100644 frontend-dist/css/278.e44cbf52.css delete mode 100644 frontend-dist/css/278.e44cbf52.css.gz create mode 100644 frontend-dist/css/278.f8d0bad0.css create mode 100644 frontend-dist/css/278.f8d0bad0.css.gz create mode 100644 frontend-dist/css/30.755fb9d7.css create mode 100644 frontend-dist/css/30.755fb9d7.css.gz create mode 100644 frontend-dist/css/331.12334816.css create mode 100644 frontend-dist/css/331.12334816.css.gz delete mode 100644 frontend-dist/css/331.dd13d5f5.css delete mode 100644 frontend-dist/css/331.dd13d5f5.css.gz delete mode 100644 frontend-dist/css/385.20c34d33.css.gz rename frontend-dist/css/{903.7a90c42f.css => 390.9faa139f.css} (52%) create mode 100644 frontend-dist/css/390.9faa139f.css.gz delete mode 100644 frontend-dist/css/412.ba63fb59.css.gz delete mode 100644 frontend-dist/css/451.7e03bef9.css delete mode 100644 frontend-dist/css/451.7e03bef9.css.gz create mode 100644 frontend-dist/css/488.64e37d88.css create mode 100644 frontend-dist/css/488.64e37d88.css.gz create mode 100644 frontend-dist/css/647.4c84bc35.css create mode 100644 frontend-dist/css/647.4c84bc35.css.gz delete mode 100644 frontend-dist/css/679.e7484000.css delete mode 100644 frontend-dist/css/679.e7484000.css.gz create mode 100644 frontend-dist/css/804.64e37d88.css create mode 100644 frontend-dist/css/804.64e37d88.css.gz delete mode 100644 frontend-dist/css/888.af58b0bb.css delete mode 100644 frontend-dist/css/888.af58b0bb.css.gz delete mode 100644 frontend-dist/css/903.7a90c42f.css.gz delete mode 100644 frontend-dist/css/967.3f3c6dac.css delete mode 100644 frontend-dist/css/967.3f3c6dac.css.gz create mode 100644 frontend-dist/css/967.b80746a3.css create mode 100644 frontend-dist/css/967.b80746a3.css.gz create mode 100644 frontend-dist/css/app.f639726f.css create mode 100644 frontend-dist/css/app.f639726f.css.gz delete mode 100644 frontend-dist/css/app.ffc502cb.css delete mode 100644 frontend-dist/css/app.ffc502cb.css.gz create mode 100644 frontend-dist/js/136.e7c2a2d2.js create mode 100644 frontend-dist/js/136.e7c2a2d2.js.gz create mode 100644 frontend-dist/js/136.e7c2a2d2.js.map create mode 100644 frontend-dist/js/136.e7c2a2d2.js.map.gz delete mode 100644 frontend-dist/js/148.b1b1da05.js delete mode 100644 frontend-dist/js/148.b1b1da05.js.gz delete mode 100644 frontend-dist/js/148.b1b1da05.js.map delete mode 100644 frontend-dist/js/148.b1b1da05.js.map.gz rename frontend-dist/js/{21.f318bc2e.js => 21.618c6fee.js} (77%) create mode 100644 frontend-dist/js/21.618c6fee.js.gz create mode 100644 frontend-dist/js/21.618c6fee.js.map create mode 100644 frontend-dist/js/21.618c6fee.js.map.gz delete mode 100644 frontend-dist/js/21.f318bc2e.js.gz delete mode 100644 frontend-dist/js/21.f318bc2e.js.map delete mode 100644 frontend-dist/js/21.f318bc2e.js.map.gz delete mode 100644 frontend-dist/js/227.44709224.js.gz delete mode 100644 frontend-dist/js/227.44709224.js.map.gz create mode 100644 frontend-dist/js/267.6c191923.js create mode 100644 frontend-dist/js/267.6c191923.js.gz create mode 100644 frontend-dist/js/267.6c191923.js.map create mode 100644 frontend-dist/js/267.6c191923.js.map.gz rename frontend-dist/js/{278.bb8355a5.js => 278.740dc6f4.js} (86%) create mode 100644 frontend-dist/js/278.740dc6f4.js.gz create mode 100644 frontend-dist/js/278.740dc6f4.js.map create mode 100644 frontend-dist/js/278.740dc6f4.js.map.gz delete mode 100644 frontend-dist/js/278.bb8355a5.js.gz delete mode 100644 frontend-dist/js/278.bb8355a5.js.map delete mode 100644 frontend-dist/js/278.bb8355a5.js.map.gz delete mode 100644 frontend-dist/js/283.5d4f325d.js delete mode 100644 frontend-dist/js/283.5d4f325d.js.gz delete mode 100644 frontend-dist/js/283.5d4f325d.js.map delete mode 100644 frontend-dist/js/283.5d4f325d.js.map.gz create mode 100644 frontend-dist/js/293.4c283028.js create mode 100644 frontend-dist/js/293.4c283028.js.gz create mode 100644 frontend-dist/js/293.4c283028.js.map create mode 100644 frontend-dist/js/293.4c283028.js.map.gz rename frontend-dist/js/{331.4f42d273.js => 331.096fa41f.js} (82%) create mode 100644 frontend-dist/js/331.096fa41f.js.gz create mode 100644 frontend-dist/js/331.096fa41f.js.map create mode 100644 frontend-dist/js/331.096fa41f.js.map.gz delete mode 100644 frontend-dist/js/331.4f42d273.js.gz delete mode 100644 frontend-dist/js/331.4f42d273.js.map delete mode 100644 frontend-dist/js/331.4f42d273.js.map.gz create mode 100644 frontend-dist/js/390.b089c785.js create mode 100644 frontend-dist/js/390.b089c785.js.gz create mode 100644 frontend-dist/js/390.b089c785.js.map create mode 100644 frontend-dist/js/390.b089c785.js.map.gz delete mode 100644 frontend-dist/js/412.2eefa4a8.js delete mode 100644 frontend-dist/js/412.2eefa4a8.js.gz delete mode 100644 frontend-dist/js/412.2eefa4a8.js.map delete mode 100644 frontend-dist/js/412.2eefa4a8.js.map.gz rename frontend-dist/js/{227.44709224.js => 488.ca0cfcd4.js} (90%) create mode 100644 frontend-dist/js/488.ca0cfcd4.js.gz rename frontend-dist/js/{227.44709224.js.map => 488.ca0cfcd4.js.map} (98%) create mode 100644 frontend-dist/js/488.ca0cfcd4.js.map.gz rename frontend-dist/js/{888.f7235188.js => 647.408915ac.js} (99%) create mode 100644 frontend-dist/js/647.408915ac.js.gz rename frontend-dist/js/{888.f7235188.js.map => 647.408915ac.js.map} (99%) create mode 100644 frontend-dist/js/647.408915ac.js.map.gz delete mode 100644 frontend-dist/js/679.23bb4457.js.gz delete mode 100644 frontend-dist/js/679.23bb4457.js.map.gz rename frontend-dist/js/{679.23bb4457.js => 804.e8b06fe3.js} (89%) create mode 100644 frontend-dist/js/804.e8b06fe3.js.gz rename frontend-dist/js/{679.23bb4457.js.map => 804.e8b06fe3.js.map} (98%) create mode 100644 frontend-dist/js/804.e8b06fe3.js.map.gz delete mode 100644 frontend-dist/js/888.f7235188.js.gz delete mode 100644 frontend-dist/js/888.f7235188.js.map.gz delete mode 100644 frontend-dist/js/903.808d69b5.js delete mode 100644 frontend-dist/js/903.808d69b5.js.gz delete mode 100644 frontend-dist/js/903.808d69b5.js.map delete mode 100644 frontend-dist/js/903.808d69b5.js.map.gz delete mode 100644 frontend-dist/js/967.db104add.js.gz delete mode 100644 frontend-dist/js/967.db104add.js.map delete mode 100644 frontend-dist/js/967.db104add.js.map.gz rename frontend-dist/js/{967.db104add.js => 967.f004078f.js} (58%) create mode 100644 frontend-dist/js/967.f004078f.js.gz create mode 100644 frontend-dist/js/967.f004078f.js.map create mode 100644 frontend-dist/js/967.f004078f.js.map.gz delete mode 100644 frontend-dist/js/app.08a5e390.js delete mode 100644 frontend-dist/js/app.08a5e390.js.gz delete mode 100644 frontend-dist/js/app.08a5e390.js.map.gz create mode 100644 frontend-dist/js/app.4fc1f60f.js create mode 100644 frontend-dist/js/app.4fc1f60f.js.gz rename frontend-dist/js/{app.08a5e390.js.map => app.4fc1f60f.js.map} (75%) create mode 100644 frontend-dist/js/app.4fc1f60f.js.map.gz delete mode 100644 readme/202410011443570.png diff --git a/frontend-dist/css/136.93acb05d.css b/frontend-dist/css/136.93acb05d.css new file mode 100644 index 00000000..0d4b82a2 --- /dev/null +++ b/frontend-dist/css/136.93acb05d.css @@ -0,0 +1 @@ +.history-container[data-v-f70e7770]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-f70e7770]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-f70e7770]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-f70e7770]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-f70e7770]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-f70e7770]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-f70e7770]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-f70e7770]{display:flex;gap:10px}.header-right .el-button[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-f70e7770]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-f70e7770]{background:#dc2626;color:#fff}.history-content[data-v-f70e7770]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-f70e7770]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-f70e7770]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--glass-border)}.grid-item[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-f70e7770]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-f70e7770],.grid-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-f70e7770]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-f70e7770]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-f70e7770]{opacity:1}.grid-actions[data-v-f70e7770]{display:flex;gap:15px}.grid-info[data-v-f70e7770]{padding:12px}.file-name[data-v-f70e7770]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-f70e7770]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-f70e7770]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.list-item[data-v-f70e7770]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-f70e7770]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-f70e7770],.list-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-f70e7770]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-f70e7770]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-f70e7770]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-f70e7770]{display:flex;gap:8px}.empty-state[data-v-f70e7770]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-f70e7770]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-f70e7770]::-webkit-scrollbar{width:8px}.history-content[data-v-f70e7770]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-f70e7770]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-f70e7770]:last-child{border-left:2px solid transparent}.timeline-header[data-v-f70e7770]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-f70e7770]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:none;z-index:2;box-sizing:border-box}.date-label[data-v-f70e7770]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-f70e7770]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-f70e7770]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-f70e7770],.no-more-hint[data-v-f70e7770]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-f70e7770]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-f70e7770]{padding:15px 20px}.header-left h2[data-v-f70e7770]{font-size:20px}.history-content[data-v-f70e7770]{padding:15px 20px}.grid-view[data-v-f70e7770]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-f70e7770]{height:120px}.list-meta[data-v-f70e7770]{display:none}.list-info[data-v-f70e7770]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.upload-settings-dialog .radio-card-group.compact{gap:8px}.upload-settings-dialog .radio-card-group.compact .radio-card{padding:8px 12px;font-size:13px}.upload-settings-dialog .radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;gap:6px}.upload-settings-dialog .radio-card-group.compact .channel-icon{width:18px;font-size:18px;text-align:center;flex-shrink:0}.upload-settings-dialog .slider-item{flex-direction:column;align-items:flex-start;gap:12px}.upload-settings-dialog .slider-wrapper{display:flex;align-items:center;gap:12px;width:100%}.upload-settings-dialog .slider-wrapper .el-slider{flex:1;min-width:0}.upload-settings-dialog .slider-input{width:96px!important;flex-shrink:0}.upload-settings-dialog .slider-input .el-input__inner{text-align:center}.upload-settings-dialog .slider-input-wrapper{display:flex;align-items:center;gap:6px;flex-shrink:0}.upload-settings-dialog .slider-unit{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}.upload-settings-dialog .channel-brand-telegram{color:#229ed9!important}.upload-settings-dialog .channel-brand-cfr2{color:#f38020!important}.upload-settings-dialog .channel-brand-s3{color:#f90!important}.upload-settings-dialog .channel-brand-discord{color:#5865f2!important}.upload-settings-dialog .channel-brand-huggingface{color:#ff9d00!important}.upload-settings-dialog .channel-brand-webdav{color:#14b8a6!important}@media (max-width:768px){.upload-settings-dialog .setting-item .radio-card-group.compact{width:100%}.upload-settings-dialog .radio-card-group.compact{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.upload-settings-dialog .radio-card-group.compact .radio-card{width:100%;box-sizing:border-box;justify-content:center;flex:1}.upload-settings-dialog .radio-card-group.compact .radio-card .el-radio__label{justify-content:center}.upload-settings-dialog .slider-wrapper{gap:8px}}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.upload-list-item[data-v-698179d6]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(37,99,235,.1));padding:10px 12px;border-radius:16px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-698179d6]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-698179d6]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-698179d6]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-698179d6]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-698179d6]:last-child{margin-bottom:0}.upload-list-item-url[data-v-698179d6]{display:flex;flex-direction:column}.file-icon[data-v-698179d6]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-698179d6]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,rgba(37,99,235,.05));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(37,99,235,.12));transition:all .3s ease}.upload-list-item-name-wrapper[data-v-698179d6]:hover{background:var(--file-name-hover-bg,rgba(37,99,235,.09));border-color:var(--file-name-hover-border,rgba(37,99,235,.2))}.upload-list-item-name[data-v-698179d6]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-698179d6]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,rgba(37,99,235,.04));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(37,99,235,.1))}.upload-list-item-progress[data-v-698179d6] .el-progress{--el-color-primary:#2563eb}.upload-list-item-progress[data-v-698179d6] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-698179d6] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,rgba(0,0,0,.045));box-shadow:none;overflow:hidden}.upload-list-item-progress[data-v-698179d6] .el-progress-bar__inner{border-radius:8px;background:#2563eb!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-698179d6] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.12);pointer-events:none}.upload-list-item-progress[data-v-698179d6] .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-698179d6 1s linear infinite}.upload-list-item-progress[data-v-698179d6] .el-progress--success .el-progress-bar__inner{background:#16a34a!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-698179d6] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-698179d6] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-698179d6] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-698179d6 1s ease-in-out infinite}.upload-list-item-progress[data-v-698179d6] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-698179d6{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-698179d6{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-698179d6] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-698179d6] .el-input__wrapper{border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-698179d6] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-698179d6] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-698179d6] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-698179d6] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-698179d6 2s infinite;z-index:0}@keyframes shimmer-698179d6{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-698179d6] .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-698179d6] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-698179d6] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-698179d6] .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-698179d6] .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-698179d6] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-698179d6] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-698179d6] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-698179d6 2s ease-in-out infinite}.upload-list-item-url[data-v-698179d6] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-698179d6{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-698179d6]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:10px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);box-shadow:var(--upload-action-btn-shadow);cursor:pointer;transition:background-color .22s ease,color .22s ease,transform .22s ease;font-size:16px;position:relative;overflow:hidden;margin:4px 0;outline:none}.modern-file-action-btn[data-v-698179d6]:before{content:"";position:absolute;inset:2px;border-radius:8px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-file-action-btn[data-v-698179d6]:hover{background:var(--upload-action-btn-hover-bg)}.modern-file-action-btn[data-v-698179d6]:hover:before{opacity:.08}.modern-file-action-btn[data-v-698179d6]:active{transform:scale(.96)}.modern-file-action-btn-primary[data-v-698179d6]{color:var(--upload-action-copy-color)}.modern-file-action-btn-danger[data-v-698179d6]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-file-action-btn-danger[data-v-698179d6]:hover{background:var(--upload-action-danger-hover-bg)}@media (max-width:768px){.upload-list-item[data-v-698179d6]{margin:5px 6px;padding:7px 8px;border-radius:12px}.upload-list-item-content[data-v-698179d6]{margin-left:2px}.upload-list-item-action[data-v-698179d6]{gap:3px}.upload-list-item-url-row[data-v-698179d6]{width:42vw;flex-direction:column;gap:4px;margin-bottom:4px}.upload-list-item-progress[data-v-698179d6]{width:32vw;margin-top:5px;padding:2px 5px;border-radius:9px}.upload-list-item-progress[data-v-698179d6] .el-progress-bar__outer{height:6px!important}.upload-list-item-url[data-v-698179d6] .el-input__wrapper{border-radius:7px}.upload-list-item-url[data-v-698179d6] .el-input__inner{font-size:10px;padding-left:8px}.upload-list-item-url[data-v-698179d6] .el-input-group__prepend{font-size:9px;padding:0 6px;border-radius:7px 0 0 7px}.modern-file-action-btn[data-v-698179d6]{width:26px;height:26px;margin:2px 0;border-radius:8px;font-size:12px}.upload-list-item-name-wrapper[data-v-698179d6]{padding:3px 8px;margin-bottom:5px;border-radius:7px}.upload-list-item-name[data-v-698179d6]{font-size:11px;width:32vw}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-fca24b68{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-fca24b68],.upload-list-card[data-v-fca24b68]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-fca24b68]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-fca24b68] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-fca24b68]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-fca24b68],.upload-list-container[data-v-fca24b68]{width:70vw}}.upload-list-card.upload-list-busy[data-v-fca24b68],.upload-list-container.upload-list-busy[data-v-fca24b68]{height:40vh}.upload-list-card.is-uploading[data-v-fca24b68]{border:1px solid var(--el-upload-dragger-uniform-color,#2563eb)!important;box-shadow:none!important}.upload-card-wrapper[data-v-fca24b68]{position:relative;overflow:visible}.upload-card-glow[data-v-fca24b68]{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-fca24b68]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-fca24b68]{width:70vw}}.upload-card-busy[data-v-fca24b68] .el-upload-dragger{height:17vh}[data-v-fca24b68] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:1px solid var(--glass-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow)}[data-v-fca24b68] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-fca24b68] .el-upload-dragger.is-dragover,[data-v-fca24b68] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-fca24b68] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-fca24b68]{position:relative;background:none}.upload-card.is-uploading[data-v-fca24b68]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-fca24b68 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-fca24b68]{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-fca24b68]{font-size:small}}.el-upload__text.upload-list-busy[data-v-fca24b68]{font-size:small}.el-icon--upload[data-v-fca24b68]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-fca24b68]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-fca24b68]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-fca24b68]{font-size:30px}}.paste-card[data-v-fca24b68]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-fca24b68]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-fca24b68]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-fca24b68]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-fca24b68 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-fca24b68] .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-fca24b68]{height:17vh}.upload-card-textarea[data-v-fca24b68]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,rgba(37,99,235,.02));transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-fca24b68]{height:50%}.upload-card-textarea[data-v-fca24b68]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:rgba(37,99,235,.2);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-fca24b68]:hover:before{opacity:1}.upload-card-textarea[data-v-fca24b68]:focus-within:before{opacity:1;background:rgba(37,99,235,.4)}[data-v-fca24b68] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-fca24b68] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-fca24b68] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-fca24b68] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(37,99,235,.03))}[data-v-fca24b68] .el-textarea__inner:focus{border-color:transparent;box-shadow:none;background:var(--textarea-inner-focus-bg,rgba(37,99,235,.02))}.upload-card-textarea[data-v-fca24b68] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-fca24b68] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-fca24b68] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-fca24b68] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-fca24b68]{display:flex;justify-content:space-between;align-items:center;width:50vw;gap:12px;margin-top:16px}.paste-card-upload-button[data-v-fca24b68]{min-width:92px;height:38px;border-radius:10px!important;font-weight:600;font-size:14px;letter-spacing:.04em;color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 10%,var(--toolbar-button-bg-color))!important;border:1px solid color-mix(in srgb,var(--el-upload-dragger-uniform-color) 30%,var(--glass-border))!important;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,transform .2s ease!important}.paste-card-upload-button[data-v-fca24b68]:hover{color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 15%,var(--toolbar-button-bg-color))!important;border-color:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 48%,var(--glass-border))!important;transform:translateY(-1px);box-shadow:none}.paste-card-upload-button[data-v-fca24b68]:focus-visible{color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 15%,var(--toolbar-button-bg-color))!important;border-color:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 48%,var(--glass-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--el-upload-dragger-uniform-color) 14%,transparent)!important}.paste-card-upload-button[data-v-fca24b68]:active{transform:translateY(0);background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 18%,var(--toolbar-button-bg-color))!important}.upload-card-busy .paste-card-upload-button[data-v-fca24b68]{min-width:72px;height:32px;border-radius:8px!important;font-size:13px;letter-spacing:.02em}.upload-card-busy .paste-card-actions[data-v-fca24b68]{margin-top:10px}.paste-card-method-group[data-v-fca24b68]{display:inline-flex;align-items:center;height:38px;box-sizing:border-box;gap:2px;padding:3px;background:var(--modern-action-group-bg);border:1px solid var(--modern-action-group-border);border-radius:10px}.paste-card-method-group[data-v-fca24b68] .el-radio-button__inner{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:30px;box-sizing:border-box;padding:0 14px;border-radius:7px!important;border:none!important;background:transparent;font-weight:500;font-size:13px;line-height:1;color:var(--toolbar-button-color);box-shadow:none!important;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}.paste-card-method-group[data-v-fca24b68] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-fca24b68] .el-radio-button:last-child .el-radio-button__inner{border-radius:7px!important}.paste-card-method-group[data-v-fca24b68] .el-radio-button__inner:hover{background:var(--modern-action-group-hover-bg);color:var(--el-text-color-primary)}.paste-card-method-group[data-v-fca24b68] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 16%,var(--toolbar-button-bg-color))!important;color:var(--el-upload-dragger-uniform-color)!important;font-weight:600;box-shadow:0 0 0 1px color-mix(in srgb,var(--el-upload-dragger-uniform-color) 52%,var(--glass-border)) inset!important}@media (max-width:768px){.paste-card[data-v-fca24b68]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-fca24b68]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-fca24b68]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-fca24b68]:before{border-radius:11px}[data-v-fca24b68] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-fca24b68]{width:100%!important;margin-top:8px;gap:8px}.paste-card-upload-button[data-v-fca24b68]{height:32px;min-width:64px;border-radius:8px!important;font-size:12px;letter-spacing:.02em;padding:0 12px}.paste-card-method-group[data-v-fca24b68]{height:32px;padding:3px;border-radius:9px}.paste-card-method-group[data-v-fca24b68] .el-radio-button__inner{min-width:52px;height:26px;padding:0 10px;font-size:11px;border-radius:6px!important}}.upload-list-dashboard[data-v-fca24b68]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);opacity:.7}[data-v-fca24b68] .el-upload-dragger{position:relative;overflow:hidden}[data-v-fca24b68] .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-fca24b68] .el-upload-dragger:after,[data-v-fca24b68] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-fca24b68] .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-fca24b68]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-fca24b68 60s linear infinite}.upload-card[data-v-fca24b68]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-fca24b68 40s linear infinite,starPulse-fca24b68 4s ease-in-out infinite}@keyframes starScroll-fca24b68{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-fca24b68{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-fca24b68]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-fca24b68]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-fca24b68]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-fca24b68]:focus,.modern-action-btn[data-v-fca24b68]:focus-visible{outline:none!important}.modern-action-btn[data-v-fca24b68]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-fca24b68]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-fca24b68]:hover:before{opacity:.08}.modern-action-btn[data-v-fca24b68]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-fca24b68]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-fca24b68]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-fca24b68]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-fca24b68]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-fca24b68]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-fca24b68]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-fca24b68]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:none;border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-fca24b68]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-fca24b68]{height:34px;gap:2px;padding:2px;border-radius:9px}.modern-action-btn[data-v-fca24b68]{width:28px;height:28px;border-radius:7px;font-size:11px}.upload-list-dashboard-title[data-v-fca24b68]{height:34px;font-size:11px;padding:0 7px;border-radius:9px}.upload-list-dashboard-title .el-icon[data-v-fca24b68]{font-size:13px;margin-right:1px}.upload-list-dashboard[data-v-fca24b68]{padding:0 6px;gap:4px}.upload-list-dashboard-title[data-v-fca24b68]{gap:3px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-fca24b68]{flex-shrink:0}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-c93807da]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:var(--glass-bg);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-c93807da]{border:1px solid #34343a}#themeToggle[data-v-c93807da]:hover{border-color:#bfc4cc}html.dark #themeToggle[data-v-c93807da]:hover{border-color:#4a4a52}#themeToggle[data-v-c93807da]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}@media (max-width:768px){#themeToggle[data-v-c93807da]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-c93807da]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-c93807da]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-c93807da]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-c93807da]{transform:rotate(40deg)}.theme_toggle_g[data-v-c93807da]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-c93807da],.icon-fade-leave-active[data-v-c93807da]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-c93807da]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-c93807da]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-c93807da],.icon-fade-leave-from[data-v-c93807da]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-c93807da]{display:inline-block}.container[data-v-c4d6ef3e]{background:var(--bg-color);min-height:100vh}.rotate[data-v-c4d6ef3e]{animation:spin-c4d6ef3e 2s ease-in-out}.scale[data-v-c4d6ef3e]{animation:scale-c4d6ef3e .5s ease-in-out}@keyframes spin-c4d6ef3e{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-c4d6ef3e{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-c4d6ef3e{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-c4d6ef3e{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-c4d6ef3e{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-c4d6ef3e]{display:inline-block}.mobile-only[data-v-c4d6ef3e]{display:none}@media (max-width:768px){.desktop-only[data-v-c4d6ef3e]{display:none!important}.mobile-only[data-v-c4d6ef3e]{display:flex!important}}.toggle-dark-button[data-v-c4d6ef3e]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}html.dark .toggle-dark-button[data-v-c4d6ef3e]{border:1px solid #34343a}.more-dropdown[data-v-c4d6ef3e]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-c4d6ef3e]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .more-dropdown .more-button[data-v-c4d6ef3e]{border:1px solid #34343a}.more-dropdown .more-button[data-v-c4d6ef3e]:hover{transform:scale(1.05);border-color:#bfc4cc}html.dark .more-dropdown .more-button[data-v-c4d6ef3e]:hover{border-color:#4a4a52}.upload-method-button[data-v-c4d6ef3e]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}html.dark .upload-method-button[data-v-c4d6ef3e]{border:1px solid #34343a}@media (max-width:768px){.upload-method-button[data-v-c4d6ef3e]{width:2rem;height:2rem}}.upload-method-icon[data-v-c4d6ef3e]{outline:none}.more-button .svg-inline--fa[data-v-c4d6ef3e],.upload-method-button .svg-inline--fa[data-v-c4d6ef3e]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-c4d6ef3e]{font-size:1.2em}.mobile-more-dropdown[data-v-c4d6ef3e]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-c4d6ef3e]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .mobile-more-button[data-v-c4d6ef3e]{border:1px solid #34343a}.mobile-more-button[data-v-c4d6ef3e]:hover{transform:scale(1.05);border-color:#bfc4cc}html.dark .mobile-more-button[data-v-c4d6ef3e]:hover{border-color:#4a4a52}.upload-folder-container[data-v-c4d6ef3e]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-c4d6ef3e]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-c4d6ef3e],.upload-folder-container[data-v-c4d6ef3e]{right:58px}}.upload-folder[data-v-c4d6ef3e]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-c4d6ef3e]{width:200px}@media (max-width:768px){.upload-folder[data-v-c4d6ef3e]{width:80px;height:2rem}.upload-folder.active[data-v-c4d6ef3e]{width:120px}}.directory-tree-trigger[data-v-c4d6ef3e]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-c4d6ef3e]:hover{border-color:#bfc4cc;transform:scale(1.05)}html.dark .directory-tree-trigger[data-v-c4d6ef3e]:hover{border-color:#4a4a52}@media (max-width:768px){.directory-tree-trigger[data-v-c4d6ef3e]{width:2rem;height:2rem}.directory-tree-trigger .svg-inline--fa[data-v-c4d6ef3e]{font-size:1.1em}}.upload-folder[data-v-c4d6ef3e] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-c4d6ef3e] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-c4d6ef3e] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-c4d6ef3e] .el-input__wrapper:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-c4d6ef3e] .el-input__wrapper:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder[data-v-c4d6ef3e] .el-input__wrapper.is-focus,.upload-folder[data-v-c4d6ef3e] .el-input__wrapper:focus-within{border-color:var(--glass-border);box-shadow:var(--glass-shadow)!important}.quick-toolbar[data-v-c4d6ef3e]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid #d9dce2;background-color:var(--glass-bg);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}html.dark .quick-toolbar[data-v-c4d6ef3e]{border:1px solid #34343a}.directory-tree-trigger[data-v-c4d6ef3e],.mobile-more-button[data-v-c4d6ef3e],.more-dropdown .more-button[data-v-c4d6ef3e],.quick-toolbar[data-v-c4d6ef3e],.toggle-dark-button[data-v-c4d6ef3e],.upload-method-button[data-v-c4d6ef3e]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.quick-toolbar-button[data-v-c4d6ef3e]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-c4d6ef3e]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-c4d6ef3e]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-c4d6ef3e]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-c4d6ef3e]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-c4d6ef3e]{margin-top:4px}.quick-toolbar-icon[data-v-c4d6ef3e]{font-size:16px}.quick-toolbar-toggle-icon[data-v-c4d6ef3e]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-c4d6ef3e]{transform:rotate(0deg)}.info-container[data-v-c4d6ef3e]:hover,.quick-toolbar-button[data-v-c4d6ef3e]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-c4d6ef3e]:hover{border-color:#bfc4cc}html.dark .quick-toolbar[data-v-c4d6ef3e]:hover{border-color:#4a4a52}.quick-toolbar-button[data-v-c4d6ef3e]:hover{transform:none}.toggle-dark-button[data-v-c4d6ef3e]:hover,.upload-method-button[data-v-c4d6ef3e]:hover{transform:scale(1.05);border-color:#bfc4cc}html.dark .toggle-dark-button[data-v-c4d6ef3e]:hover,html.dark .upload-method-button[data-v-c4d6ef3e]:hover{border-color:#4a4a52}.upload-folder[data-v-c4d6ef3e]:hover .el-input__wrapper{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-c4d6ef3e]:hover .el-input__wrapper{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.quick-toolbar[data-v-c4d6ef3e]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-c4d6ef3e]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-c4d6ef3e]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-c4d6ef3e]{gap:2px}.quick-toolbar-more[data-v-c4d6ef3e]{margin-top:3px}.quick-toolbar-icon[data-v-c4d6ef3e]{font-size:14px}}[data-v-c4d6ef3e] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-c4d6ef3e]{display:flex;justify-content:center;margin-top:20px}.header[data-v-c4d6ef3e]{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-c4d6ef3e]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-c4d6ef3e 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-c4d6ef3e]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-c4d6ef3e]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-c4d6ef3e]:hover:after{width:80%}.main-title[data-v-c4d6ef3e]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));transition:opacity .16s ease}.title:hover .main-title[data-v-c4d6ef3e]{opacity:0}.title[data-v-c4d6ef3e]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-c4d6ef3e]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -10px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-c4d6ef3e]{animation:crayonWrite-c4d6ef3e .82s steps(18) forwards,crayonScratch-c4d6ef3e .16s steps(2) .82s 3}@keyframes float-c4d6ef3e{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-c4d6ef3e{0%{opacity:0;clip-path:inset(-10px 100% -10px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -10px -10px)}47%{clip-path:inset(-10px 52% -10px -10px)}63%{clip-path:inset(-10px 34% -10px -10px)}78%{clip-path:inset(-10px 18% -10px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -10px -10px)}}@keyframes crayonScratch-c4d6ef3e{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-c4d6ef3e]{font-size:1.55rem;letter-spacing:1px}.title[data-v-c4d6ef3e]:hover{transform:scale(1.05)}}.upload-home[data-v-c4d6ef3e]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-c4d6ef3e]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-c4d6ef3e]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-c4d6ef3e]{padding-bottom:5px}.upload[data-v-c4d6ef3e]{top:-3.8vh}}.footer[data-v-c4d6ef3e]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/136.93acb05d.css.gz b/frontend-dist/css/136.93acb05d.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..62d65e565046b3734558922f0a71413e59b359bf GIT binary patch literal 12223 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

8z=lKyUh zZ5SE>folfNa2q^~BTlK}3fYFF4pM+kYu%B64zfd2e-dw~h&&2cwji&6R3|;A54lI> z3(X61$6)jOqqOZWeJyw~Pf%z&Lv#`jzencGZQ&upg5+OO-%Ok4@~vKH4g3IkzB|yI ziYo2EEvo;-P~7;5!KsB%URZQGJ%NB&5zBNklD#bQ*$qBl$%RK4AJ z;S-4tG@D&{X^ucU{?QUo8>HcQaqw|;2`mwGzW`MNde(SunaBF_)TrR5?^Y$U;YTAi;GW%>y;yL4aSVdig{`9ml83sUvle)?XdF@+u_-UuJo=BH?p&gQA4 zG%Lwpm=m4jXg00q7JCR^%({~w2cNK*I3J!_o}Awpe;7>_{N#$zLH^}Zwm@JrF15mU z@Y>+q9I2}@#pO)`ZDMVFQ0PO8So>2PPZ#m>eD&|T5k%_T!k0-`a|u$D@TLFPba{8w z)!D7_?HRLh05<f|OqL*dV$q>596k1bWc=?K_nBkamN{8IjMt%j7%OV}$`>7) zoU`#*oKB!&;xFd>xHRfH6kKpp53B2LJQcC9*F|dV(^FA?ZT?zcngTT5KZDQ7|E#Mt zt0$+rs*(TAC6|Z6L>1EmA}dDSfqfXb@(2+7<3i-+d~nj64N69XgNzG@kZWx!RC~eMBA0wzP3Cg`cWMmB%1Cls{?_9o=EB4Uf|j_ zsa)7a2vyQQ9~Z*1`O$|Gy=qG?h{X{mW^bO7^~Vq{F9$o~0oYPZY_17oo>4;x7ekkR zB6$;eQ&`4@`)wiuz#m!qOKs5lhN*E%Vk99%L2vnLLcQ(pv(vKthF978Xi5$HpnSKG zNpA9FOg)?vr)v7j>9&Gjg(QB{wR^{(+jCmoq=yAc_sza&Xqb&>+Ckr&!Bg;?@Moqp zI;1>SQZroylzc|XU^jgx*q@CPG5WHsveuXn*5EiE6rnbNJ$ZtN9Ge_PpMdOw zqfRXGCxnh~#g(`*BWfVq2dgGL2y}x}^nMg=u`9vP18i!|(T1|BeCKkx?hG~Bf{;g( z7-JA2pZ2E7v?4C+b39B>x>Fw5DDuhfc2vqy+?HDxWdQ9$Xws^wBz_{ZvJ?3>WNn_6 zH(E7G-D_M#q@$>QD!a4wtQe1rZ7^jhJ|nKfG+k66v9jY@a~2K^s%io@P%Mq>IQ%27 zpaJp%^mz(Lz*kWfAYp^$rYqA!t;A#96u-ejLnXEzZEdNFg)%<~EpgezBI_=&ZV`O@ zDXtM|rnK<4)}J>Ks$Hw`)!Nl%TM-!171_{N1+4{Y6jzG4HwsRtk+@HT4`}&pmQRe}fs;$7efJT}4-SSGf@Yvo-hK8M z7w3_0ieoWz%Tn0tUV-jXZsdhVTAq*TE78>cDfDUdBGcVWVF{AbMkpfePX$;+v7gXg*L;)J;yBr0+(Q2oI%12I=!b}1!3NYn=>(L!WhGWyT5baX-aKlo12 z;oRO>f=$vb!nFeldu_vel=QyvIs(hnSFy4aVt`zirRzIh*cf(>pUy5*%CGM6Bs zwU8B3-ciy_=w8UuGJAF35CJUp<9klMxXnTO@$-dB?09S-0T!c%d}x0_(%X6JwZKLUL*j1gdEwHf+gV z9Vh7G%IAWXoL~kT-CowZEHsl;enrkRbOuQpnOIK=dl=H%eH$EwYcz`YVE>_nIeM}y zUr~ltW42Q@M8Tlt^S3IjniM)~pmgv855|HSs3PaJQITxBw7ax{m|Ss?TElSRy|kiP zkB8v0DMS_?L>Oa*uW@j(ckQ+@W~j2l#+OKgQ^pkq5h5@_53yLNqrFe2=r)=T{l_q{ z62i>?3UM8HZ5TneAsx9^kn;xWA+FN74IGXa?N)Yo28W(j2j`Cy90mEnVS=XBub!I; zFC6g;lYC}R*Kf*mSO~WN2+FcJw?%8Z?;co0OQJlquKaTpha|kj5juD-h2M0V2RSG~ z=cJ|Bj#v}ANY_XBT8DQI2jJ}h(W7QOui!#%;2&b8Un3;Xpvphy3b8z5bN7Ud@WSaW zB%kFhTH&ZI7+7p@sDuV@oB{MB)a2zgyw00E2?HfB#GtrjPS0W{C}O%(#0B8^cscE=v?zu2_x0}YAcHw%x($?^X;E3MOs8=Kx|?5% zP)l#if|@xmVoGmm4U4Qb8iXSUfZ|4n%Fo z-CaOFEYmOf`ht6YBi7^^P*!3&m7wWJb-k<^dx}2Gd4z}_3OuveuulV5L))UogFHvU zIw%lSePJu6C^V3Ri|iRhh_+z#DU64Om&3t|)PU}tVoFI(S?b^t9=?%QZ9M&FwjN;%u z;WOcqM_VPJqvA$ixM&@sp+6Elr<#n~D#F_Viyps(ylV=(QS~2Fk)b8O1){NYd{ix3 zSS-LGTACH5<*=e;lZa32Nbw^&lHn?ZUAvH(@c=TuUKmw%G%1md=}aWGh0Ax*uXd;m z_^nxvdB9$AlEN4SAbK4M^`u1${t=XJ9wD#bvjBgCT1|lWe4?eiq!d}pPrW;|3n}!L8nN9-_sj#qO$0%FCXIbFf5K-3N2`O*7>#Cb-bT~d4l1t1j zLdpc@Cpf1(*rz%09e0$3t5@(zD8s?#NPo4z&5jb932q1)zGC14nSH^Im?c_16hX*! z7WvCac%SRLK@cYvIgm}0%UfQ~SgtKXZIs?g26cE(Kh3V_N}w`18nEYOhpeTRG^q2i z-wmivxF%ixY{6$>F?#ZF8g1(~g23H9;U^%*qXmlsfTA*~K2xV2wZ zmtHr2`XA_@fBw@JCf+F0GWbZ#3)sL6PFu2e?Pi~rt&r^vgZf`cLI?XSjpw_?3g%rB zM?qj<0w(G6Y=M60pRPhSrVmyrv|q*CfzUuxnz-bnHYk3org?W5kJQ9TK0bTp^5du& zQPLy%ld z!T-?IiRKd3rm!Ly%ZNuRU!gR3>%}BmB$GIS*&BVSHpmistTb79hn!q?{e<#0Z_jYV zuXi-nXv2qyp?+88$QBCn%W(Q>FR>Y8e_%a7yTsl#`k6qFI>$;VME>|Nw63qBh> z9Dbjg7#eABCGDt?cz*6UQ;qMmZhVyQ#HEAez=qVdPth*n2B*huUW3dU5TUBzGUYHH z2IidL6K!Ukh9~S@0CGP~Lo83TZsy;deQilYyY@slzEkOqnUohpQXT2uJiz_pVISK`)eH z$dTN(9=I+YH?jUFri@62ybvVLJ%;4JkHQ*ylI%2eolRc@^Ov2|2U`re>kTt^1#V?#NUDZ5Vv7(z*@yTZ@3CQ;i;T9AT=7}A?LnAWkf7h z7Ks$3FtwGk4As$$H716GNiLu_3i+$y*DBw@L z-`bfe^v}wE*X2saFBg&C505!t4K9@-E(eyBRLXk0Q(MSD`Ull*8w97Ug&EWzpXB^S zC{Om-4pAyx2tm@{vl^=rtD&>T9ytV-{2`z%aU!1qtZtej^J8!tz{_|>N?|v`(wsnd ztaDs4zogqRh4v=C42qk>0tG_1JHW#x9bH}awtc}S) z9jRf;MbY!cVy@I8($P$+b*2PFJ|%Hw=? z;#$sP3a$V4#LBs3O`kjgespr(rC5FBS(Y@}cDk+6m%VW@q@Te|O2X`(d-)0Rz8G`Z zKByJQTDo$SM$a6jNvuD+J>-kyn8til=ip974+Ehj>c!8;u@^K8d)=Z@ep`8VeEuUbPktok ziyw*k@<(F6`jMEge5vp3A-a?bjS7LZ_0c2O$rvf&aQ_-wFEE+# z*2l6hi1p--|FGnO&Y~G3I`eUT$BJ^m;TBE89|U}ryukmylNVvNa1Z|pMPu^fEq>$x zi{u3k@{J51!O%S~!U24?Ckbjw2#K$`O5!ZGrR~z@7jy;0B3l-r658_U&{93`#lXmO zb>s&E-19ySbojWBqi(;qLob96{B%E|AW#qed6%J!I7!vCrwg&1_Ka22 z=1uCu=%h+?4n0nVRLsincx2}`Ta%MS!Orv!V=Nk6nN)X@+pCxJ z9>cl4dim^|tCxRENpiuh=UAtFu2b~QrPGH?n)9WDc$dNO>d|Dpt}Xius3(Serh0l5 zeP8)>8;;{Er@O2uZaiXh4OdyWb+%tWd9>X6(g}AA%z`{Bw62PWafR7Aa1H31QSeX) z3qY~Nx(mc-i@XmH{#bqYq4g5l%PR)`7kT|zX)CoqF4jeN59h1t<4@>`I)@2T?dYJ) z6!wQW@Pfz1->-FL1t`&k_5F&RHv&4wU9^kUDD8q?fywJHVXBQ4TlD2WwZ|nS`I7|d z(|%bg#Uj5*+Gsc<_B120IQE@%I$k}HuUliiU)4cvAGG8OkNl>{+bsrJ$eg5_xb4A!(KDNGauq$`}Wur)%zy0Cv;%&@j_}Q%K;1T z_i0%l>YyyDciJ>s?vr`Ej(^4FnsSiUIM*oNGWvA>5Q+wX@%55)&p^-!_Qe(CDx6-~ zLBH!BmbX!v5ei-v>ACg_E&MIO44ZqDX2cPHI~^;$TSZkaH8C+Pj6c58@*Ds=Uv<$^V0 z?dX`|qas4c%TW@4nZWJK?nAiW$)`!g=zMO#9yBdYftMY@32b2PMnZ9yVPSJR_6|wY z3bgI(bnW~1`xHMOs++H%y&MjpMaK@Rut{OZtKACZ>5{(*6<#E1_Av*GYDp?M{bptt z$v-1r>?>?)avQGK>-FP)4E;0Ea}ATUaBn{qjg_?Mja+tBuV&8|NCA%ql?;aRVtidO zxZU~-Qa;sf@P%&mg;Ahhry(|f6}}M9^qKBfmEr;S1pMbHp92k9m-2}@D z9w^Q9QwMk4zt)EXQxdZEY!xo^RFgsIr+l4fAU35De8|rfPm>0mdQA`iOULtriC9L( zVJG@P>_p=yBH!-E?o>{pwDHE0Z8o3HXQ`dqx{8ZG?e^I`%Unm+f|#fCG>L~+`bS;2 zn@?0bLWDPX&S=2texIUVZyoCPhEq31YIi;i@QNw`a&GlW_N9Dk*dPZ5 zDj_8eWrXko43CLlX`J@sU>$?wOQo#gVl@e1ZNq82oJ7+k5uL5V@N{g*Q?3XI`DH_# z_f_a>$GrFU$#h1E8(_}R0Eq?S&Qf4axP~Q2KY*#>&GN>QE;mQU*#J859lkn-_F)ROw}(Nu-R+6lyXmJcanxgqwyTb;ozs#fj1sOjOym(Xg1}0XVXnw-k zk`r^UrLI>nL%(&ksh4K&}%X74hP;?Hed^@_-0WT@o{A&KNnL3WrJ4az!Ob-lsl1@6gpj4JDQYlGwUQH@Tk zaX8Ib&bJjG;u~^GpcBQ7TIlptH$X94Sw}lkGsO)ifb;M_|6l_n8w}`VIyT{NboC4| zW(^z}!w$vhg$olYwn4RF9vDY!(ol~yiO>Fn=f0EY>{1{?e;?*cw-qvSPwY@6Bm2IFySB$OQ+G`C+;L6Wsz6t?nmfl+JljhC*A009ip}V%rsoVPSDWa zbS@=v!I(}Z4~{G}!Vy$90a@{rZny{SPAEh%P7bOU#G`bLhb5kl+)fujLJ`bxqzhg5 z#_3rRH|mPz0SCS7GFe>hTdgGIh2Aq`5W#0L+sE;ltk`^u!VvKql3{asQ<^Rd$tiT7 zYPdcf1_c9V5CHzt)sT7C71rAusYY>o=ql+yDW|{Nz83DL#iyi$!g>5g6T+wyH7n8R z6){~?9@`RS0DPIinN6lE2My%g21g-$aXf+lH=j&bD|u|K&f+p6Oeai2xyNJ6XKTDY z`DB1!wEuf4vUi%eKoti;AT%Hk)bKeb|3MZSf91RXe?;iXT|)SvAp+&4nT0zAFGh#_CR&#Bha z-(I0s;j^CtoQ`ILL3*@WD_bQMDQ}v@@_l}^m_(E5Y!dks0mp&1?9N;B=*iYoA}~C- z!1bI~ImkU%+H1%i?Hh^4d=z>lQyFD(F&3}ZqJeX_4!8|Q9R@Tsn(RhR*qew56myVX zCTr4gDm?jUseeDBBBP=pX0?&~=v|=VQv$gUkg6v=_wO5o)vSL4W+SZk6b3YQ zqT1IM&kEKMCvH;R?mqh=i!MDKvLB&tL1m8sq5AM+WWw^?;drO3;dID9<;-+PX6*fj zyARaRRcqG%c=Kt*;I8JA+4J#`Me?*g0yBB>*Bj)3I;GcFm`QVj04zR^-p?pqy!W#Q zs*l$;-GhK64R1k5jy2!+`NvPr>WZX)e8(v)f}9zVF&&)bE!XISW%j_q0uQ6R-WY}n zDeA-Rn*-o6R9gT%ZNb+gBHzU4P6k!Ol#P=S3b~c1N08=&dW*ZOxUX)Ih$+Qkp()J) zgh!`Dc)C!U?h%*zJ|5x|%)|=6LSeP3@L)~HG4V7;jtIF(0s8koJr(8G=3mmR*cVwn z`RBT;yB{)FDrRr11WI9@1-`U`MHCF<;fyNQ z+ylLhhF`;lFI#=wA1b>`pEc5lo|YUH7|TnQg9ZoUDd|IIV#z#mt(6Rv$yD zwpAdsp*LDD_vtBxn_ItCG`!843%u>}=u*SkhSi5pZ?Gbez!J*%zv)b@<>9uBJNf>ChUf!CDd*RACu4g z7oAr@eePqHPz2{3fb-<1D37Cf&DWUjt8JhucTN2cHq%+6-sn?$R{=WV$|Iytd~aVjpJ|h~6WsWhtVz4<$Tf#M3pbB_+flpA+SD))SPe>rX(NG)I z&*0M|sGmuyM)ZiPk@)N?`dFX9Lq0xt4VrWLt>>^jtKNc0bJ(zVA@Ps7#DcXZi!3=` zExNIV_$G@%c>M~cEOfCVc=0rWFK7&_Ch4eLl5CAX4WTz(eH`!i>AtQz9U}Bi`^WMA N{{YhpSKrGs0RSFuw^slF literal 0 HcmV?d00001 diff --git a/frontend-dist/css/148.ff5f4652.css b/frontend-dist/css/148.ff5f4652.css deleted file mode 100644 index eb591cbc..00000000 --- a/frontend-dist/css/148.ff5f4652.css +++ /dev/null @@ -1 +0,0 @@ -.history-container[data-v-f70e7770]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-f70e7770]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-f70e7770]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-f70e7770]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-f70e7770]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-f70e7770]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-f70e7770]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-f70e7770]{display:flex;gap:10px}.header-right .el-button[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-f70e7770]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-f70e7770]{background:#dc2626;color:#fff}.history-content[data-v-f70e7770]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-f70e7770]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-f70e7770]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--glass-border)}.grid-item[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-f70e7770]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-f70e7770],.grid-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-f70e7770]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-f70e7770]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-f70e7770]{opacity:1}.grid-actions[data-v-f70e7770]{display:flex;gap:15px}.grid-info[data-v-f70e7770]{padding:12px}.file-name[data-v-f70e7770]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-f70e7770]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-f70e7770]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.list-item[data-v-f70e7770]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-f70e7770]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-f70e7770],.list-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-f70e7770]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-f70e7770]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-f70e7770]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-f70e7770]{display:flex;gap:8px}.empty-state[data-v-f70e7770]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-f70e7770]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-f70e7770]::-webkit-scrollbar{width:8px}.history-content[data-v-f70e7770]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-f70e7770]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-f70e7770]:last-child{border-left:2px solid transparent}.timeline-header[data-v-f70e7770]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-f70e7770]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:none;z-index:2;box-sizing:border-box}.date-label[data-v-f70e7770]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-f70e7770]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-f70e7770]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-f70e7770],.no-more-hint[data-v-f70e7770]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-f70e7770]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-f70e7770]{padding:15px 20px}.header-left h2[data-v-f70e7770]{font-size:20px}.history-content[data-v-f70e7770]{padding:15px 20px}.grid-view[data-v-f70e7770]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-f70e7770]{height:120px}.list-meta[data-v-f70e7770]{display:none}.list-info[data-v-f70e7770]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.upload-list-item[data-v-3620a174]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(37,99,235,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,hsla(0,0%,100%,.8));box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-3620a174]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-3620a174]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-3620a174]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-3620a174]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-3620a174]:last-child{margin-bottom:0}.upload-list-item-url[data-v-3620a174]{display:flex;flex-direction:column}.file-icon[data-v-3620a174]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-3620a174]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,rgba(37,99,235,.05));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(37,99,235,.12));transition:all .3s ease}.upload-list-item-name-wrapper[data-v-3620a174]:hover{background:var(--file-name-hover-bg,rgba(37,99,235,.09));border-color:var(--file-name-hover-border,rgba(37,99,235,.2))}.upload-list-item-name[data-v-3620a174]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-3620a174]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,rgba(37,99,235,.04));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(37,99,235,.1))}.upload-list-item-progress[data-v-3620a174] .el-progress{--el-color-primary:#2563eb}.upload-list-item-progress[data-v-3620a174] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,rgba(0,0,0,.045));box-shadow:none;overflow:hidden}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner{border-radius:8px;background:#2563eb!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.12);pointer-events:none}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-3620a174 1s linear infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner{background:#16a34a!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-3620a174 1s ease-in-out infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-3620a174{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-3620a174{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-3620a174] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-3620a174] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-3620a174 2s infinite;z-index:0}@keyframes shimmer-3620a174{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-3620a174] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-3620a174 2s ease-in-out infinite}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-3620a174{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-3620a174]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-3620a174]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-3620a174]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-3620a174]{background:var(--file-action-primary-bg,#2563eb);color:#fff;box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-3620a174]{background:var(--file-action-danger-bg,#dc2626);color:#fff;box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-3620a174]{margin-left:2px}.upload-list-item-url-row[data-v-3620a174]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-3620a174]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-3620a174]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-3620a174]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-3620a174]{font-size:12px;width:32vw}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-5afbc1b3{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-5afbc1b3],.upload-list-card[data-v-5afbc1b3]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-5afbc1b3]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-5afbc1b3] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-5afbc1b3]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-5afbc1b3],.upload-list-container[data-v-5afbc1b3]{width:70vw}}.upload-list-card.upload-list-busy[data-v-5afbc1b3],.upload-list-container.upload-list-busy[data-v-5afbc1b3]{height:40vh}.upload-list-card.is-uploading[data-v-5afbc1b3]{border:1px solid var(--el-upload-dragger-uniform-color,#2563eb)!important;box-shadow:none!important}.upload-card-wrapper[data-v-5afbc1b3]{position:relative;overflow:visible}.upload-card-glow[data-v-5afbc1b3]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-5afbc1b3]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-5afbc1b3]{width:70vw}}.upload-card-busy[data-v-5afbc1b3] .el-upload-dragger{height:17vh}[data-v-5afbc1b3] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:1px solid var(--glass-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow)}[data-v-5afbc1b3] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-5afbc1b3] .el-upload-dragger.is-dragover,[data-v-5afbc1b3] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-5afbc1b3] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-5afbc1b3]{position:relative;background:none}.upload-card.is-uploading[data-v-5afbc1b3]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-5afbc1b3 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-5afbc1b3]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-5afbc1b3]{font-size:small}}.el-upload__text.upload-list-busy[data-v-5afbc1b3]{font-size:small}.el-icon--upload[data-v-5afbc1b3]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-5afbc1b3]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-5afbc1b3]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-5afbc1b3]{font-size:30px}}.paste-card[data-v-5afbc1b3]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-5afbc1b3]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-5afbc1b3]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-5afbc1b3]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-5afbc1b3 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-5afbc1b3] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-5afbc1b3]{height:17vh}.upload-card-textarea[data-v-5afbc1b3]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,rgba(37,99,235,.02));transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-5afbc1b3]{height:50%}.upload-card-textarea[data-v-5afbc1b3]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:rgba(37,99,235,.2);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-5afbc1b3]:hover:before{opacity:1}.upload-card-textarea[data-v-5afbc1b3]:focus-within:before{opacity:1;background:rgba(37,99,235,.4)}[data-v-5afbc1b3] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-5afbc1b3] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-5afbc1b3] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-5afbc1b3] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(37,99,235,.03))}[data-v-5afbc1b3] .el-textarea__inner:focus{border-color:transparent;box-shadow:none;background:var(--textarea-inner-focus-bg,rgba(37,99,235,.02))}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-5afbc1b3]{display:flex;justify-content:space-between;align-items:center;width:50vw;gap:12px;margin-top:16px}.paste-card-upload-button[data-v-5afbc1b3]{min-width:92px;height:38px;border-radius:10px!important;font-weight:600;font-size:14px;letter-spacing:.04em;color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 10%,var(--toolbar-button-bg-color))!important;border:1px solid color-mix(in srgb,var(--el-upload-dragger-uniform-color) 30%,var(--glass-border))!important;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,transform .2s ease!important}.paste-card-upload-button[data-v-5afbc1b3]:hover{color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 15%,var(--toolbar-button-bg-color))!important;border-color:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 48%,var(--glass-border))!important;transform:translateY(-1px);box-shadow:none}.paste-card-upload-button[data-v-5afbc1b3]:focus-visible{color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 15%,var(--toolbar-button-bg-color))!important;border-color:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 48%,var(--glass-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--el-upload-dragger-uniform-color) 14%,transparent)!important}.paste-card-upload-button[data-v-5afbc1b3]:active{transform:translateY(0);background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 18%,var(--toolbar-button-bg-color))!important}.upload-card-busy .paste-card-upload-button[data-v-5afbc1b3]{min-width:72px;height:32px;border-radius:8px!important;font-size:13px;letter-spacing:.02em}.upload-card-busy .paste-card-actions[data-v-5afbc1b3]{margin-top:10px}.paste-card-method-group[data-v-5afbc1b3]{display:inline-flex;align-items:center;height:38px;box-sizing:border-box;gap:2px;padding:3px;background:var(--modern-action-group-bg);border:1px solid var(--modern-action-group-border);border-radius:10px}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:30px;box-sizing:border-box;padding:0 14px;border-radius:7px!important;border:none!important;background:transparent;font-weight:500;font-size:13px;line-height:1;color:var(--toolbar-button-color);box-shadow:none!important;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-5afbc1b3] .el-radio-button:last-child .el-radio-button__inner{border-radius:7px!important}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner:hover{background:var(--modern-action-group-hover-bg);color:var(--el-text-color-primary)}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 16%,var(--toolbar-button-bg-color))!important;color:var(--el-upload-dragger-uniform-color)!important;font-weight:600;box-shadow:0 0 0 1px color-mix(in srgb,var(--el-upload-dragger-uniform-color) 52%,var(--glass-border)) inset!important}@media (max-width:768px){.paste-card[data-v-5afbc1b3]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-5afbc1b3]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-5afbc1b3]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-5afbc1b3]:before{border-radius:11px}[data-v-5afbc1b3] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-5afbc1b3]{width:100%!important;margin-top:8px;gap:8px}.paste-card-upload-button[data-v-5afbc1b3]{height:32px;min-width:64px;border-radius:8px!important;font-size:12px;letter-spacing:.02em;padding:0 12px}.paste-card-method-group[data-v-5afbc1b3]{height:32px;padding:3px;border-radius:9px}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner{min-width:52px;height:26px;padding:0 10px;font-size:11px;border-radius:6px!important}}.upload-list-dashboard[data-v-5afbc1b3]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);opacity:.7}[data-v-5afbc1b3] .el-upload-dragger{position:relative;overflow:hidden}[data-v-5afbc1b3] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-5afbc1b3] .el-upload-dragger:after,[data-v-5afbc1b3] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-5afbc1b3] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-5afbc1b3]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-5afbc1b3 60s linear infinite}.upload-card[data-v-5afbc1b3]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-5afbc1b3 40s linear infinite,starPulse-5afbc1b3 4s ease-in-out infinite}@keyframes starScroll-5afbc1b3{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-5afbc1b3{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-5afbc1b3]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-5afbc1b3]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-5afbc1b3]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-5afbc1b3]:focus,.modern-action-btn[data-v-5afbc1b3]:focus-visible{outline:none!important}.modern-action-btn[data-v-5afbc1b3]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-5afbc1b3]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-5afbc1b3]:hover:before{opacity:.08}.modern-action-btn[data-v-5afbc1b3]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-5afbc1b3]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-5afbc1b3]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-5afbc1b3]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-5afbc1b3]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-5afbc1b3]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-5afbc1b3]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-5afbc1b3]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:1px solid var(--glass-border);border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-5afbc1b3]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-5afbc1b3]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-5afbc1b3]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-5afbc1b3]{font-size:12px;padding:4px 10px}.upload-list-dashboard[data-v-5afbc1b3]{padding:0 8px;gap:4px}.upload-list-dashboard-title[data-v-5afbc1b3]{gap:4px;padding:3px 8px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-5afbc1b3]{flex-shrink:0}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.container[data-v-579106c0]{background:var(--bg-color);min-height:100vh}.rotate[data-v-579106c0]{animation:spin-579106c0 2s ease-in-out}.scale[data-v-579106c0]{animation:scale-579106c0 .5s ease-in-out}@keyframes spin-579106c0{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-579106c0{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-579106c0{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-579106c0{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-579106c0{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-579106c0]{display:inline-block}.mobile-only[data-v-579106c0]{display:none}@media (max-width:768px){.desktop-only[data-v-579106c0]{display:none!important}.mobile-only[data-v-579106c0]{display:flex!important}}.toggle-dark-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}html.dark .toggle-dark-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .more-dropdown .more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown .more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .more-dropdown .more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-method-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}html.dark .upload-method-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.upload-method-button[data-v-579106c0]{width:2rem;height:2rem}}.upload-method-icon[data-v-579106c0]{outline:none}.more-button .svg-inline--fa[data-v-579106c0],.upload-method-button .svg-inline--fa[data-v-579106c0]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-579106c0]{font-size:1.3em}.mobile-more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-579106c0]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .mobile-more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .mobile-more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder-container[data-v-579106c0]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-579106c0]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-579106c0],.upload-folder-container[data-v-579106c0]{right:58px}}.upload-folder[data-v-579106c0]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-579106c0]{width:200px}@media (max-width:768px){.upload-folder[data-v-579106c0]{width:80px;height:2rem}.upload-folder.active[data-v-579106c0]{width:120px}}.directory-tree-trigger[data-v-579106c0]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc;transform:scale(1.05)}html.dark .directory-tree-trigger[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.directory-tree-trigger[data-v-579106c0]{width:2rem;height:2rem}}.upload-folder[data-v-579106c0] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-579106c0] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-579106c0] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid #d9dce2;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}html.dark .quick-toolbar[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.quick-toolbar-button[data-v-579106c0]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-579106c0]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-579106c0]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-579106c0]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-579106c0]{margin-top:4px}.quick-toolbar-icon[data-v-579106c0]{font-size:16px}.quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(0deg)}.info-container[data-v-579106c0]:hover,.quick-toolbar-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .quick-toolbar[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar-button[data-v-579106c0]:hover{transform:none}.toggle-dark-button[data-v-579106c0]:hover,.upload-method-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark-button[data-v-579106c0]:hover,html.dark .upload-method-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-579106c0]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-579106c0]{gap:2px}.quick-toolbar-more[data-v-579106c0]{margin-top:3px}.quick-toolbar-icon[data-v-579106c0]{font-size:14px}}[data-v-579106c0] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-579106c0]{display:flex;justify-content:center;margin-top:20px}.header[data-v-579106c0]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-579106c0]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-579106c0 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-579106c0]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-579106c0]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-579106c0]:hover:after{width:80%}.main-title[data-v-579106c0]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));transition:opacity .16s ease}.title:hover .main-title[data-v-579106c0]{opacity:0}.title[data-v-579106c0]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-579106c0]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -10px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-579106c0]{animation:crayonWrite-579106c0 .82s steps(18) forwards,crayonScratch-579106c0 .16s steps(2) .82s 3}@keyframes float-579106c0{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-579106c0{0%{opacity:0;clip-path:inset(-10px 100% -10px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -10px -10px)}47%{clip-path:inset(-10px 52% -10px -10px)}63%{clip-path:inset(-10px 34% -10px -10px)}78%{clip-path:inset(-10px 18% -10px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -10px -10px)}}@keyframes crayonScratch-579106c0{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-579106c0]{font-size:1.55rem;letter-spacing:1px}.title[data-v-579106c0]:hover{transform:scale(1.05)}}.upload-home[data-v-579106c0]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-579106c0]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-579106c0]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-579106c0]{padding-bottom:5px}.upload[data-v-579106c0]{top:-3.8vh}}.footer[data-v-579106c0]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/148.ff5f4652.css.gz b/frontend-dist/css/148.ff5f4652.css.gz deleted file mode 100644 index ea18f5f36dc4be22393400a62e08960700e1cbb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11864 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: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-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-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}.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-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} \ No newline at end of file +: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-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-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-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-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}.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-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}.background-image1:not([src]),.background-image2:not([src]){display:none}body:has(#bg1[src]){background-color:transparent!important}body:has(#bg1[src]) .blocked-container,body:has(#bg1[src]) .container,body:has(#bg1[src]) .login,body:has(#bg1[src]) .not-found-container,body:has(#bg1[src]) .upload-home,body:has(#bg1[src]) .whitelist-container{background:transparent!important;background-color:transparent!important} \ No newline at end of file diff --git a/frontend-dist/css/173.5edc1a8c.css.gz b/frontend-dist/css/173.5edc1a8c.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7203e61713c1c049594b2f85a6f5f50174023d6b GIT binary patch literal 5027 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/css/227.e7484000.css b/frontend-dist/css/227.e7484000.css deleted file mode 100644 index f7e8ad87..00000000 --- a/frontend-dist/css/227.e7484000.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))}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.login[data-v-583fe0d5]{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;transition:height .35s ease-out,min-height .35s ease-out}.login-title[data-v-583fe0d5]{font-size:2.3rem;margin-bottom:15px;color:var(--login-title-color);font-family:Pacifico,Noto Sans SC,sans-serif;cursor:pointer;transition:all .3s ease;letter-spacing:2px}@media (max-width:768px){.login-title[data-v-583fe0d5]{font-size:1.5rem}}.login-title[data-v-583fe0d5]:focus,.login-title[data-v-583fe0d5]:hover{text-shadow:0 0 10px var(--login-title-glow-color,rgba(52,152,219,.5))}.login-container[data-v-583fe0d5]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:auto;height:auto;width:600px;border-radius:12px;box-shadow:var(--login-container-box-shadow);background-color:var(--login-container-bg-color);border:1px solid var(--glass-border);transition:all .3s ease;padding:40px 0;gap:20px;position:relative;z-index:101}@media (max-width:768px){.login-container[data-v-583fe0d5]{width:85vw;padding:25px 0;gap:12px}}.login-container[data-v-583fe0d5]:hover{box-shadow:var(--login-container-hover-box-shadow)}.input-container[data-v-583fe0d5]{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-583fe0d5]{width:85%;gap:4px;margin-bottom:8px}}.input-wrapper[data-v-583fe0d5]{position:relative;width:100%;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}.input-icon[data-v-583fe0d5]{margin-right:6px;font-size:1rem}.input-name[data-v-583fe0d5]{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-583fe0d5]:after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--login-input-underline-color,#5b9bd3);transition:width .3s linear;border-radius:1px}.input-container:has(.input-wrapper.focused) .input-name[data-v-583fe0d5]:after,.input-container:hover .input-name[data-v-583fe0d5]:after{width:var(--underline-width,50px)}.input-container:has(.input-wrapper.focused) .input-name[data-v-583fe0d5],.input-container:hover .input-name[data-v-583fe0d5]{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.input-name[data-v-583fe0d5]{font-size:.85rem}}.submit[data-v-583fe0d5]{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-583fe0d5]{width:48px;border-radius:50%;background-color:transparent!important;box-shadow:none!important;pointer-events:none}.loading-ring[data-v-583fe0d5]{display:inline-block;width:34px;height:34px;border:4px solid transparent;border-radius:50%;border-top-color:var(--login-title-color,#fff);animation:spin-583fe0d5 1s ease-in-out infinite;box-sizing:border-box}@keyframes spin-583fe0d5{to{transform:rotate(1turn)}}@media (max-width:768px){.submit[data-v-583fe0d5]{width:50%}}.submit[data-v-583fe0d5]:not(.is-loading):focus,.submit[data-v-583fe0d5]:not(.is-loading):hover{transform:scale(1.05);box-shadow:none}.submit[data-v-583fe0d5]:disabled{cursor:default;transform:none}.password-input[data-v-583fe0d5]{width:100%;height:50px;position:relative}.password-input[data-v-583fe0d5] .el-input__prefix{color:var(--login-input-icon-color,#59636e);font-size:1rem;transition:color .3s ease}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within .el-input__prefix{color:var(--login-input-label-focus-color,#5b9bd3)}.password-input[data-v-583fe0d5] .el-input__wrapper{border-radius:12px;background-color:var(--password-input-bg-color);border:1px solid var(--glass-border);box-shadow:none;padding:12px 16px;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.password-input[data-v-583fe0d5] .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-583fe0d5] .el-input__wrapper:hover:before{left:100%}.password-input[data-v-583fe0d5] .el-input__wrapper:hover{box-shadow:none;border-color:var(--login-input-underline-color,#5b9bd3)}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within{border-color:var(--login-input-underline-color,#5b9bd3);box-shadow:none}.password-input[data-v-583fe0d5] .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-583fe0d5] .el-input__inner,[data-theme=dark] .password-input[data-v-583fe0d5] .el-input__inner{color:var(--text-color,#fff)!important}.password-input[data-v-583fe0d5] .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-583fe0d5] .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-583fe0d5] .el-input__wrapper:focus-within .el-input__inner::-moz-placeholder{opacity:.7}.password-input[data-v-583fe0d5] .el-input__wrapper:focus-within .el-input__inner::placeholder{opacity:.7}.password-input[data-v-583fe0d5] .el-input__suffix{color:var(--icon-color,#666)}.password-input[data-v-583fe0d5] .el-input__suffix-inner{transition:color .3s ease}.password-input[data-v-583fe0d5] .el-input__wrapper:hover .el-input__suffix-inner{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.password-input[data-v-583fe0d5]{width:100%;height:40px}.password-input[data-v-583fe0d5] .el-input__wrapper{padding:8px 12px}}.footer[data-v-583fe0d5]{position:fixed;bottom:0;width:100vw}.toggle-dark[data-v-583fe0d5]{position:fixed;top:30px;right:30px;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px}html.dark .toggle-dark[data-v-583fe0d5]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.toggle-dark[data-v-583fe0d5]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark[data-v-583fe0d5]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.language-switcher[data-v-583fe0d5]{position:fixed;top:30px;right:80px;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:12px;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;z-index:100}html.dark .language-switcher[data-v-583fe0d5]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.language-switcher[data-v-583fe0d5]{width:2rem;height:2rem}}.language-switcher[data-v-583fe0d5]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .language-switcher[data-v-583fe0d5]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52} \ No newline at end of file diff --git a/frontend-dist/css/227.e7484000.css.gz b/frontend-dist/css/227.e7484000.css.gz deleted file mode 100644 index bed7314fff73712173da733641b215c3fb804269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2468 zcmV;V30w9biwFP!000023dI`Pit9M`S3F%@h`};;5@)d)Xqfk5pyzG4TohYQG-XRh zQmRrnfw1_iKiERltup zFVH3V@0kmne}I${fryAxL3_Irsk44p*@FF^CM z-R!E1d-Z3fZQ0-@EQ;IBH@p&9q9OQ{WD>d~**n6=lZdxLkSM7$lu`x-rbP2!QI6Gr z3>8q|HJR+pUt-{~%3orrnEbg#n5VEni_l-X4x<7Jv;g5ULr3@K7xYLKsv1kU z&7<{lzx;k3wTIg4FexxW;84)?Rbv@JFm5TyfwBxSz+i^YJl<6o!v@Il1!Y4#jj5>b ziJ(=y3~Gx|zkUKtGIWuLQ{$@bbp~AxQg5j(ab`bI)hCEG~m*) zhtS3yA}OafLHV=ZL?|oa^sa5YYisRNp=@%~zTLF9HYuwDh`>WJa!Qj%7dA#0Ns~)* zTnNPCjL{146U^xQB5(pH462Kx-9?c*7WCcti8~WCA5q=9m1q69>Nf4J&BLnOMyT;WKjX0<2nP2HyNH3D1&f&DcnNa{LwB(>-xPCFahV3-HruR6rWVPjY?**;6r zGMP~7C$*_9eCbCFl}*0Z|8;|VsIquJWuJHf7l9Xi^JF&l{O!_B4)kKe!9d~t{f@tk zwE8_mt-ow#&wA~45@q2_qjc`5uFowy9^hiR^yJ^#^S6;^qSF&(x9gKx!!?YS)6sTbamFZYlVGU4-F&s{hqm7zDQ0Pb!r^x7 zz|)K4N1dw2OFsrntiLi!X*o+t`EnPFOi)EU;(3RoalRfM{&t+DVHsn@o%DRbDL9~? z7_o)F*?GW^BF|rLWju(w;b6q^Z|eLXWk4ljlYQ5LuJ}4z=Q%f-VW?*nqH>rapyC05 zsa* zf^ev>c}c8wlH1*GYKzgK}-;9{Lo~_#x31MhP_bB-L=eiKNwX3fkhh)TZOgBf9bDeOf=1&X=y`QD0WhRi>%Y2=di@Z zNBl3C;vA>c`zICD`2!N}{P7QuL&5<^4CnpCKGk~_NJ!)3(t@OBs>^(F{fK~}%KW!^ zh3Jykn};zygls%bEih~i8ZEUQf~PWDwDiJg=`F*(=SQwvv(p&P9itvM)yGZUGHPXf z_V2ol2-HktSRl2vk1eKU@(qAHH2@iGsoi2&tmqBL0&))YM|aX*Y8P5-7dk@Idk^PA zZ37(MHL001(cru2?Y(v1sG%*@b-RDEbp>=!ueznRw0rY0sm|gTjmEYP1;GVm!dSsB z_%;>`h6b-F0ZvRzbRzv>e8dUQ`*#M-WjZ_F(gCI+DTaQfHp=<`&$V)`lp zA?wG%R+7e^;}hhIu66n+w4q|=jTI-#iV=IG0h%Veyc5Mz3aNIAC9@=uts@ks$i=_GYJlY zSc$Ojv+Kz~ROd`JiKwf}_=K|zkr8*U6IGBrS0>j=^)Uwpg%a0PELR%rYD4OGpbRBz z1sNjZZ@8=|6Of4hkj469>PCRx5D{EoRr!V&z(yGw>mSUKuVkt*XRdx5eXg4t#NuyE z9K9lF1!m*2_mbzin?Qm~eMiA7Od1xQu+t|xnBq%^ea(FI;)pY9p z73BP#vP=h|DT!6NU|(j8+{4_#IFL-nE7Ed z)cph>CfMr}0`FLyF!=J?=tUHeIo(27jmCE zkORsoL-Vzdyu}N21q76R4oy}4wyGapy?~=sF(N{bcRVYcdHr$j(zQQ#(vYMqr)y6M zsPCqYm`VnHH~lQCYyVI?!{NuPzF&5q>yw0sk?j+VU_w--Y)xOAS0LVy2kYa@YPE6) z(Zw!mqQHK)5D#--t?wTDYSjN}Av_JD=DdHGD84&irU;d9+p^*F8jfRi;Z_weMJHNh zJyOY89DO9DN& z>%MLq88PV>KBk8Z?8kaH-`s=Ah;|o)OzbOJWa??rsvW$J+=+knRr7Nf-ow((y6>GA z{+F(-XHm~L5?^qU{Rs7^FS4g!nLKJZyP#Xj{@?9m#C%6;{+ag~PrmrDpSM}3_kediv{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-53b527ba]{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-53b527ba]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-drag:none}.tm-video-wrap[data-v-53b527ba]{width:100%;max-width:800px;touch-action:auto}.plyr-video[data-v-53b527ba]{width:100%}.tm-audio-wrap[data-v-53b527ba]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:24px;width:100%;max-width:400px;touch-action:auto}.plyr-audio[data-v-53b527ba]{width:100%}.audio-cover[data-v-53b527ba]{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:none}.cover-img[data-v-53b527ba]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.audio-icon-large[data-v-53b527ba]{width:80px;height:80px;color:#a1a1aa}.audio-info[data-v-53b527ba]{text-align:center;width:100%}.audio-title[data-v-53b527ba]{font-size:18px;font-weight:600;color:#fff;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-artist[data-v-53b527ba]{font-size:14px;color:#c8c9cc}.audio-placeholder[data-v-53b527ba],.video-placeholder[data-v-53b527ba]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:#a1a1aa}.video-placeholder svg[data-v-53b527ba]{width:80px;height:80px}.audio-placeholder .audio-name[data-v-53b527ba]{font-size:14px;color:#c8c9cc;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:1px solid var(--glass-border);border-radius:8px;box-shadow:none;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-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.public-browse[data-v-58d060c5]{min-height:100vh;background:#0a0a0a;color:#fff}.header[data-v-58d060c5]{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);border-bottom:1px solid #1a1a1a;position:relative}.header-left[data-v-58d060c5]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:8px}.header-right[data-v-58d060c5]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:10px}.search-box[data-v-58d060c5]{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-58d060c5]{color:hsla(0,0%,100%,.8);display:flex;align-items:center;justify-content:center}.search-box .search-icon svg[data-v-58d060c5]{width:14px;height:14px}.search-box.expanded[data-v-58d060c5]{width:auto;min-width:160px;border-radius:14px;padding:4px 10px;background:rgba(30,30,30,.98);box-shadow:none}.search-box.expanded .search-icon svg[data-v-58d060c5]{width:12px;height:12px}.search-box.expanded .search-input[data-v-58d060c5]{width:110px;font-size:12px}.search-box[data-v-58d060c5]:focus-within{box-shadow:0 0 0 2px rgba(59,130,246,.5)}.search-input[data-v-58d060c5]{background:transparent;border:none;outline:none;color:#fff;font-size:12px;transition:width .3s}.search-input[data-v-58d060c5]::-moz-placeholder{color:#c8c9cc;font-size:11px}.search-input[data-v-58d060c5]::placeholder{color:#c8c9cc;font-size:11px}.theme-toggle-btn[data-v-58d060c5]{display:flex;align-items:center;justify-content:center;background:transparent;border-radius:8px;transition:background .2s}.theme-toggle-btn[data-v-58d060c5]:hover{background:hsla(0,0%,100%,.1)}@media (max-width:600px){.header-right[data-v-58d060c5]{gap:8px}.search-box[data-v-58d060c5]{width:26px;height:26px}.search-box .search-icon svg[data-v-58d060c5]{width:12px;height:12px}.search-box.expanded[data-v-58d060c5]{min-width:140px;padding:3px 8px}.search-box.expanded .search-input[data-v-58d060c5]{width:90px;font-size:11px}.search-box.expanded .search-icon svg[data-v-58d060c5]{width:11px;height:11px}}.header-center[data-v-58d060c5]{position:absolute;left:50%;transform:translateX(-50%);z-index:0}.logo[data-v-58d060c5]{font-size:20px;font-weight:600;color:#fff;text-decoration:none;cursor:pointer;transition:opacity .2s}.logo[data-v-58d060c5]:hover{opacity:.8}.breadcrumb[data-v-58d060c5]{display:flex;align-items:center;gap:4px;font-size:14px}.breadcrumb-item[data-v-58d060c5]{padding:6px 12px;border-radius:6px;cursor:pointer;transition:background .2s;color:#ccc}.breadcrumb-item[data-v-58d060c5]:hover{background:#252525;color:#fff}.breadcrumb-sep[data-v-58d060c5]{color:#444}.file-count[data-v-58d060c5]{color:#666;font-size:14px}.error-container[data-v-58d060c5],.loading-container[data-v-58d060c5]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#666}.error-credit[data-v-58d060c5]{margin-top:40px;text-align:center;color:#a1a1aa;font-size:14px}.error-credit p[data-v-58d060c5]{margin-bottom:12px}.error-credit-links[data-v-58d060c5]{display:flex;gap:24px;justify-content:center}.error-credit-links a[data-v-58d060c5]{display:flex;align-items:center;gap:6px;color:#c8c9cc;text-decoration:none;transition:color .2s}.error-credit-links a[data-v-58d060c5]:hover{color:#3b82f6}.loading-spinner[data-v-58d060c5]{width:48px;height:48px;border:3px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-58d060c5 1s linear infinite}.loading-spinner-small[data-v-58d060c5]{width:24px;height:24px;border:2px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-58d060c5 1s linear infinite}@keyframes spin-58d060c5{to{transform:rotate(1turn)}}.retry-btn[data-v-58d060c5]{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-58d060c5]:hover{background:#2563eb}.gallery-container[data-v-58d060c5]{padding:8px}@media (min-width:1200px){.gallery-container[data-v-58d060c5]{max-width:1400px;margin:0 auto;padding:24px}}.folders-section[data-v-58d060c5]{margin-bottom:24px}.folders-grid[data-v-58d060c5]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.folder-card[data-v-58d060c5]{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-58d060c5]:hover{background:#1a1a1a;border-color:#333}.folder-icon[data-v-58d060c5]{width:48px;height:48px;margin-bottom:12px;color:#555}.folder-icon svg[data-v-58d060c5]{width:100%;height:100%}.folder-name[data-v-58d060c5]{font-size:14px;color:#999;text-align:center;word-break:break-all}.waterfall[data-v-58d060c5]{display:flex;gap:16px}.waterfall-column[data-v-58d060c5]{flex:1;display:flex;flex-direction:column;gap:16px}.waterfall-item[data-v-58d060c5]{cursor:pointer}.image-wrapper[data-v-58d060c5]{position:relative;border-radius:12px;overflow:hidden;background:#141414;border:1px solid #1a1a1a;min-height:180px}.image-wrapper[data-v-58d060c5]:before{content:"";position:absolute;inset:0;background:#1a1a1a;background-size:200% 100%;animation:shimmer-58d060c5 1.5s infinite;z-index:1;pointer-events:none}.image-wrapper.loaded[data-v-58d060c5]:before{display:none}.image-wrapper.loaded[data-v-58d060c5]{min-height:auto}.image-wrapper img[data-v-58d060c5],.image-wrapper video[data-v-58d060c5]{width:100%;display:block;position:relative;z-index:2}@keyframes shimmer-58d060c5{0%{background-position:200% 0}to{background-position:-200% 0}}.image-wrapper[data-v-58d060c5]:hover{border-color:#333}.overlay[data-v-58d060c5]{position:absolute;inset:0;background:rgba(0,0,0,.5);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-58d060c5]{opacity:1}.file-placeholder[data-v-58d060c5]{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-58d060c5]{width:48px;height:48px}.file-name[data-v-58d060c5]{font-size:12px;color:#fafafa;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-58d060c5]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#16213e;gap:12px;padding:16px;box-sizing:border-box}.audio-icon[data-v-58d060c5]{width:48px;height:48px;color:#c8c9cc}.audio-name[data-v-58d060c5]{font-size:12px;color:#fafafa;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-58d060c5]{display:flex;gap:8px}.action-btn[data-v-58d060c5]{width:32px;height:32px;border:none;border-radius:50%;background:hsla(0,0%,100%,.08);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:#c8c9cc}.action-btn svg[data-v-58d060c5]{width:16px;height:16px}.action-btn[data-v-58d060c5]:hover{background:hsla(0,0%,100%,.2);color:#fff;transform:scale(1.1)}.load-trigger[data-v-58d060c5]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px;min-height:100px}.floating-page-indicator[data-v-58d060c5]{position:fixed;bottom:24px;right:24px;background:rgba(0,0,0,.6);border:1px solid var(--glass-border);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-58d060c5]{bottom:16px;right:16px;padding:4px 10px;font-size:11px;border-radius:12px}}.loading-more[data-v-58d060c5]{display:flex;align-items:center;gap:12px;color:#666;font-size:14px}.no-more[data-v-58d060c5]{color:#444;font-size:14px}.credit-link[data-v-58d060c5]{display:block;margin-top:8px;color:#555;font-size:12px;text-decoration:none;transition:color .2s;text-align:center}.credit-link[data-v-58d060c5]:hover{color:#888}.preview-modal[data-v-58d060c5]{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-58d060c5]{padding:60px 80px;box-sizing:border-box;overflow:hidden}.preview-content-mobile[data-v-58d060c5],.preview-content[data-v-58d060c5]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-content-mobile[data-v-58d060c5]{flex-direction:column;padding:0;position:absolute;top:0;left:0}.mobile-video-native[data-v-58d060c5]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#000}.mobile-audio-wrap[data-v-58d060c5]{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-58d060c5]{margin-top:20px}.swipe-hint[data-v-58d060c5]{font-size:12px;color:#a1a1aa}.other-file-preview[data-v-58d060c5]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#c8c9cc;gap:16px}.other-file-preview svg[data-v-58d060c5]{width:64px;height:64px}.other-file-preview .file-name[data-v-58d060c5]{font-size:14px;color:#fafafa;text-align:center;padding:0 20px;word-break:break-all}.swipe-viewport[data-v-58d060c5]{width:100%;height:100%;overflow:hidden;position:relative}.swipe-track[data-v-58d060c5]{width:300%;height:100%;display:flex;will-change:transform}.swipe-slide[data-v-58d060c5]{width:33.333%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.preview-image[data-v-58d060c5],.preview-video[data-v-58d060c5]{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-58d060c5]{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-58d060c5]:hover{background:hsla(0,0%,100%,.2)}.preview-close svg[data-v-58d060c5]{width:28px;height:28px}.page-indicator[data-v-58d060c5]{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);border:1px solid var(--glass-border);color:hsla(0,0%,100%,.8);padding:8px 16px;border-radius:20px;font-size:14px;z-index:1010}.preview-next[data-v-58d060c5],.preview-prev[data-v-58d060c5]{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-58d060c5]:hover,.preview-prev[data-v-58d060c5]:hover{background:hsla(0,0%,100%,.2)}.preview-next svg[data-v-58d060c5],.preview-prev svg[data-v-58d060c5]{width:32px;height:32px}.preview-prev[data-v-58d060c5]{left:20px}.preview-next[data-v-58d060c5]{right:20px}.rotate-btn[data-v-58d060c5]{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-58d060c5]:hover{background:hsla(0,0%,100%,.2)}.rotate-btn svg[data-v-58d060c5]{width:24px;height:24px}@media (max-width:768px){.page-indicator[data-v-58d060c5]{bottom:40px}}@media (max-width:1199px) and (min-width:601px){.gallery-container[data-v-58d060c5]{padding:12px}.waterfall-column[data-v-58d060c5],.waterfall[data-v-58d060c5]{gap:10px}.image-wrapper[data-v-58d060c5]{border-radius:8px}}@media (max-width:600px){.header[data-v-58d060c5]{padding:10px 12px}.header-left .logo[data-v-58d060c5]{font-size:16px}.breadcrumb[data-v-58d060c5]{font-size:12px}.breadcrumb-item[data-v-58d060c5]{padding:4px 8px}.file-count[data-v-58d060c5]{font-size:12px}.gallery-container[data-v-58d060c5]{padding:6px}.waterfall-column[data-v-58d060c5],.waterfall[data-v-58d060c5]{gap:6px}.image-wrapper[data-v-58d060c5]{border-radius:6px;min-height:120px}.folders-section[data-v-58d060c5]{margin-bottom:12px}.folders-grid[data-v-58d060c5]{grid-template-columns:repeat(2,1fr);gap:8px}.folder-card[data-v-58d060c5]{padding:16px 12px;border-radius:8px}.folder-icon[data-v-58d060c5]{width:36px;height:36px;margin-bottom:8px}.folder-name[data-v-58d060c5]{font-size:12px}.load-trigger[data-v-58d060c5]{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-58d060c5]{background:#f5f5f5;color:#333}:root:not(.dark) .header[data-v-58d060c5]{background:hsla(0,0%,100%,.95);border-bottom-color:#e0e0e0}:root:not(.dark) .logo[data-v-58d060c5]{color:#333}:root:not(.dark) .breadcrumb-item[data-v-58d060c5]{color:#666}:root:not(.dark) .breadcrumb-item[data-v-58d060c5]:hover{background:#e8e8e8;color:#333}:root:not(.dark) .breadcrumb-sep[data-v-58d060c5]{color:#ccc}:root:not(.dark) .file-count[data-v-58d060c5]{color:#59636e}:root:not(.dark) .search-box[data-v-58d060c5]{background:rgba(0,0,0,.08)}:root:not(.dark) .search-box.expanded[data-v-58d060c5]{background:hsla(0,0%,100%,.98);box-shadow:none}:root:not(.dark) .search-box.expanded .search-input[data-v-58d060c5]{color:#333}:root:not(.dark) .search-box.expanded .search-input[data-v-58d060c5]::-moz-placeholder{color:#4e5969}:root:not(.dark) .search-box.expanded .search-input[data-v-58d060c5]::placeholder{color:#4e5969}:root:not(.dark) .search-box .search-icon[data-v-58d060c5]{color:#1d2129}:root:not(.dark) .search-box .search-icon[data-v-58d060c5]:hover{color:#333}:root:not(.dark) .error-container[data-v-58d060c5],:root:not(.dark) .loading-container[data-v-58d060c5]{color:#59636e}:root:not(.dark) .error-credit[data-v-58d060c5]{color:#4e5969}:root:not(.dark) .error-credit-links a[data-v-58d060c5]{color:#1d2129}:root:not(.dark) .loading-spinner-small[data-v-58d060c5],:root:not(.dark) .loading-spinner[data-v-58d060c5]{border-color:#ddd;border-top-color:#3b82f6}:root:not(.dark) .folder-card[data-v-58d060c5]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .folder-card[data-v-58d060c5]:hover{background:#fafafa;border-color:#ccc}:root:not(.dark) .folder-icon[data-v-58d060c5]{color:#59636e}:root:not(.dark) .folder-name[data-v-58d060c5]{color:#666}:root:not(.dark) .image-wrapper[data-v-58d060c5]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .image-wrapper[data-v-58d060c5]:before{background:#e5e6eb}:root:not(.dark) .image-wrapper[data-v-58d060c5]:hover{border-color:#ccc}:root:not(.dark) .file-placeholder[data-v-58d060c5]{background:#f5f5f5;color:#59636e}:root:not(.dark) .file-name[data-v-58d060c5]{color:#1d2129}:root:not(.dark) .audio-placeholder[data-v-58d060c5]{background:#eff6ff}:root:not(.dark) .audio-icon[data-v-58d060c5]{color:#4e5969}:root:not(.dark) .audio-name[data-v-58d060c5]{color:#1d2129}:root:not(.dark) .no-more[data-v-58d060c5]{color:#bbb}:root:not(.dark) .credit-link[data-v-58d060c5]{color:#aaa}:root:not(.dark) .credit-link[data-v-58d060c5]:hover{color:#666}:root:not(.dark) .loading-more[data-v-58d060c5]{color:#59636e}:root:not(.dark) .theme-toggle-btn[data-v-58d060c5]:hover{background:rgba(0,0,0,.08)}:root:not(.dark) .floating-page-indicator[data-v-58d060c5]{background:hsla(0,0%,100%,.85);color:#1d2129;box-shadow:none} \ No newline at end of file +@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-53b527ba]{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-53b527ba]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-drag:none}.tm-video-wrap[data-v-53b527ba]{width:100%;max-width:800px;touch-action:auto}.plyr-video[data-v-53b527ba]{width:100%}.tm-audio-wrap[data-v-53b527ba]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:24px;width:100%;max-width:400px;touch-action:auto}.plyr-audio[data-v-53b527ba]{width:100%}.audio-cover[data-v-53b527ba]{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:none}.cover-img[data-v-53b527ba]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.audio-icon-large[data-v-53b527ba]{width:80px;height:80px;color:#a1a1aa}.audio-info[data-v-53b527ba]{text-align:center;width:100%}.audio-title[data-v-53b527ba]{font-size:18px;font-weight:600;color:#fff;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-artist[data-v-53b527ba]{font-size:14px;color:#c8c9cc}.audio-placeholder[data-v-53b527ba],.video-placeholder[data-v-53b527ba]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:#a1a1aa}.video-placeholder svg[data-v-53b527ba]{width:80px;height:80px}.audio-placeholder .audio-name[data-v-53b527ba]{font-size:14px;color:#c8c9cc;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:1px solid var(--glass-border);border-radius:8px;box-shadow:none;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-c93807da]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:var(--glass-bg);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-c93807da]{border:1px solid #34343a}#themeToggle[data-v-c93807da]:hover{border-color:#bfc4cc}html.dark #themeToggle[data-v-c93807da]:hover{border-color:#4a4a52}#themeToggle[data-v-c93807da]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}@media (max-width:768px){#themeToggle[data-v-c93807da]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-c93807da]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-c93807da]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-c93807da]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-c93807da]{transform:rotate(40deg)}.theme_toggle_g[data-v-c93807da]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-c93807da],.icon-fade-leave-active[data-v-c93807da]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-c93807da]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-c93807da]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-c93807da],.icon-fade-leave-from[data-v-c93807da]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-c93807da]{display:inline-block}.public-browse[data-v-4d67c66a]{min-height:100vh;background:#0a0a0a;color:#fff}.header[data-v-4d67c66a]{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);border-bottom:1px solid #1a1a1a;position:relative}.header-left[data-v-4d67c66a]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:8px}.header-right[data-v-4d67c66a]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:10px}.search-box[data-v-4d67c66a]{--search-control-size:2.5rem;--search-icon-size:18px;--search-icon-offset:10px;position:relative;display:flex;flex:0 0 auto;align-items:center;justify-content:center;gap:6px;width:var(--search-control-size);height:var(--search-control-size);box-sizing:border-box;padding:0 10px;background-color:var(--glass-bg);border:1px solid #d9dce2;border-radius:12px;box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);overflow:hidden;transition:width .22s ease,border-color .2s ease,background-color .2s ease;will-change:width;cursor:pointer}html.dark .search-box[data-v-4d67c66a]{border-color:#34343a}.search-box[data-v-4d67c66a]:hover{border-color:#bfc4cc}html.dark .search-box[data-v-4d67c66a]:hover{border-color:#4a4a52}.search-box .search-icon[data-v-4d67c66a]{position:absolute;right:var(--search-icon-offset);flex:0 0 auto;color:var(--theme-toggle-color);display:flex;align-items:center;justify-content:center}.search-box .search-icon svg[data-v-4d67c66a]{width:var(--search-icon-size);height:var(--search-icon-size)}.search-box.expanded[data-v-4d67c66a]{width:180px;padding-right:calc(var(--search-icon-offset) + var(--search-icon-size) + 6px)}.search-box.expanded .search-input[data-v-4d67c66a]{flex:1 1 auto;width:0;min-width:0}.search-box[data-v-4d67c66a]:focus-within{border-color:rgba(59,130,246,.72)}.search-input[data-v-4d67c66a]{background:transparent;border:none;outline:none;color:var(--el-text-color-primary);font-size:12px}.search-input[data-v-4d67c66a]::-moz-placeholder{color:var(--el-text-color-placeholder);font-size:11px}.search-input[data-v-4d67c66a]::placeholder{color:var(--el-text-color-placeholder);font-size:11px}@media (max-width:600px){.header-right[data-v-4d67c66a]{gap:8px}}@media (max-width:768px){.search-box[data-v-4d67c66a]{--search-control-size:2rem;--search-icon-size:15px;--search-icon-offset:8px;padding:0 7px}.search-box.expanded[data-v-4d67c66a]{width:150px}.search-box.expanded .search-input[data-v-4d67c66a]{font-size:11px}}.header-center[data-v-4d67c66a]{position:absolute;left:50%;transform:translateX(-50%);z-index:0}.logo[data-v-4d67c66a]{font-size:20px;font-weight:600;color:#fff;text-decoration:none;cursor:pointer;transition:opacity .2s}.logo[data-v-4d67c66a]:hover{opacity:.8}.breadcrumb[data-v-4d67c66a]{display:flex;align-items:center;gap:4px;font-size:14px}.breadcrumb-item[data-v-4d67c66a]{padding:6px 12px;border-radius:6px;cursor:pointer;transition:background .2s;color:#ccc}.breadcrumb-item[data-v-4d67c66a]:hover{background:#252525;color:#fff}.breadcrumb-sep[data-v-4d67c66a]{color:#444}.file-count[data-v-4d67c66a]{color:#666;font-size:14px}.error-container[data-v-4d67c66a],.loading-container[data-v-4d67c66a]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#666}.error-credit[data-v-4d67c66a]{margin-top:40px;text-align:center;color:#a1a1aa;font-size:14px}.error-credit p[data-v-4d67c66a]{margin-bottom:12px}.error-credit-links[data-v-4d67c66a]{display:flex;gap:24px;justify-content:center}.error-credit-links a[data-v-4d67c66a]{display:flex;align-items:center;gap:6px;color:#c8c9cc;text-decoration:none;transition:color .2s}.error-credit-links a[data-v-4d67c66a]:hover{color:#3b82f6}.loading-spinner[data-v-4d67c66a]{width:48px;height:48px;border:3px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-4d67c66a 1s linear infinite}.loading-spinner-small[data-v-4d67c66a]{width:24px;height:24px;border:2px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-4d67c66a 1s linear infinite}@keyframes spin-4d67c66a{to{transform:rotate(1turn)}}.retry-btn[data-v-4d67c66a]{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-4d67c66a]:hover{background:#2563eb}.gallery-container[data-v-4d67c66a]{padding:8px}@media (min-width:1200px){.gallery-container[data-v-4d67c66a]{max-width:1400px;margin:0 auto;padding:24px}}.folders-section[data-v-4d67c66a]{margin-bottom:24px}.folders-grid[data-v-4d67c66a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.folder-card[data-v-4d67c66a]{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-4d67c66a]:hover{background:#1a1a1a;border-color:#333}.folder-icon[data-v-4d67c66a]{width:48px;height:48px;margin-bottom:12px;color:#555}.folder-icon svg[data-v-4d67c66a]{width:100%;height:100%}.folder-name[data-v-4d67c66a]{font-size:14px;color:#999;text-align:center;word-break:break-all}.waterfall[data-v-4d67c66a]{display:flex;gap:16px}.waterfall-column[data-v-4d67c66a]{flex:1;display:flex;flex-direction:column;gap:16px}.waterfall-item[data-v-4d67c66a]{cursor:pointer}.image-wrapper[data-v-4d67c66a]{position:relative;border-radius:12px;overflow:hidden;background:#141414;border:1px solid #1a1a1a;min-height:180px}.image-wrapper[data-v-4d67c66a]:before{content:"";position:absolute;inset:0;background:#1a1a1a;background-size:200% 100%;animation:shimmer-4d67c66a 1.5s infinite;z-index:1;pointer-events:none}.image-wrapper.loaded[data-v-4d67c66a]:before{display:none}.image-wrapper.loaded[data-v-4d67c66a]{min-height:auto}.image-wrapper img[data-v-4d67c66a],.image-wrapper video[data-v-4d67c66a]{width:100%;display:block;position:relative;z-index:2}@keyframes shimmer-4d67c66a{0%{background-position:200% 0}to{background-position:-200% 0}}.image-wrapper[data-v-4d67c66a]:hover{border-color:#333}.overlay[data-v-4d67c66a]{position:absolute;inset:0;background:rgba(0,0,0,.5);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-4d67c66a]{opacity:1}.file-placeholder[data-v-4d67c66a]{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-4d67c66a]{width:48px;height:48px}.file-name[data-v-4d67c66a]{font-size:12px;color:#fafafa;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-4d67c66a]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#16213e;gap:12px;padding:16px;box-sizing:border-box}.audio-icon[data-v-4d67c66a]{width:48px;height:48px;color:#c8c9cc}.audio-name[data-v-4d67c66a]{font-size:12px;color:#fafafa;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-4d67c66a]{display:flex;gap:8px}.action-btn[data-v-4d67c66a]{width:32px;height:32px;border:none;border-radius:50%;background:hsla(0,0%,100%,.08);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:#c8c9cc}.action-btn svg[data-v-4d67c66a]{width:16px;height:16px}.action-btn[data-v-4d67c66a]:hover{background:hsla(0,0%,100%,.2);color:#fff;transform:scale(1.1)}.load-trigger[data-v-4d67c66a]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px;min-height:100px}.floating-page-indicator[data-v-4d67c66a]{position:fixed;bottom:24px;right:24px;background:rgba(0,0,0,.6);border:1px solid var(--glass-border);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-4d67c66a]{bottom:16px;right:16px;padding:4px 10px;font-size:11px;border-radius:12px}}.loading-more[data-v-4d67c66a]{display:flex;align-items:center;gap:12px;color:#666;font-size:14px}.no-more[data-v-4d67c66a]{color:#444;font-size:14px}.credit-link[data-v-4d67c66a]{display:block;margin-top:8px;color:#555;font-size:12px;text-decoration:none;transition:color .2s;text-align:center}.credit-link[data-v-4d67c66a]:hover{color:#888}.preview-modal[data-v-4d67c66a]{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-4d67c66a]{padding:60px 80px;box-sizing:border-box;overflow:hidden}.preview-content-mobile[data-v-4d67c66a],.preview-content[data-v-4d67c66a]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-content-mobile[data-v-4d67c66a]{flex-direction:column;padding:0;position:absolute;top:0;left:0}.mobile-video-native[data-v-4d67c66a]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#000}.mobile-audio-wrap[data-v-4d67c66a]{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-4d67c66a]{margin-top:20px}.swipe-hint[data-v-4d67c66a]{font-size:12px;color:#a1a1aa}.other-file-preview[data-v-4d67c66a]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#c8c9cc;gap:16px}.other-file-preview svg[data-v-4d67c66a]{width:64px;height:64px}.other-file-preview .file-name[data-v-4d67c66a]{font-size:14px;color:#fafafa;text-align:center;padding:0 20px;word-break:break-all}.swipe-viewport[data-v-4d67c66a]{width:100%;height:100%;overflow:hidden;position:relative}.swipe-track[data-v-4d67c66a]{width:300%;height:100%;display:flex;will-change:transform}.swipe-slide[data-v-4d67c66a]{width:33.333%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.preview-image[data-v-4d67c66a],.preview-video[data-v-4d67c66a]{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-4d67c66a]{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-4d67c66a]:hover{background:hsla(0,0%,100%,.2)}.preview-close svg[data-v-4d67c66a]{width:28px;height:28px}.page-indicator[data-v-4d67c66a]{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);border:1px solid var(--glass-border);color:hsla(0,0%,100%,.8);padding:8px 16px;border-radius:20px;font-size:14px;z-index:1010}.preview-next[data-v-4d67c66a],.preview-prev[data-v-4d67c66a]{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-4d67c66a]:hover,.preview-prev[data-v-4d67c66a]:hover{background:hsla(0,0%,100%,.2)}.preview-next svg[data-v-4d67c66a],.preview-prev svg[data-v-4d67c66a]{width:32px;height:32px}.preview-prev[data-v-4d67c66a]{left:20px}.preview-next[data-v-4d67c66a]{right:20px}.rotate-btn[data-v-4d67c66a]{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-4d67c66a]:hover{background:hsla(0,0%,100%,.2)}.rotate-btn svg[data-v-4d67c66a]{width:24px;height:24px}@media (max-width:768px){.page-indicator[data-v-4d67c66a]{bottom:40px}}@media (max-width:1199px) and (min-width:601px){.gallery-container[data-v-4d67c66a]{padding:12px}.waterfall-column[data-v-4d67c66a],.waterfall[data-v-4d67c66a]{gap:10px}.image-wrapper[data-v-4d67c66a]{border-radius:8px}}@media (max-width:600px){.header[data-v-4d67c66a]{padding:10px 12px}.header-left .logo[data-v-4d67c66a]{font-size:16px}.breadcrumb[data-v-4d67c66a]{font-size:12px}.breadcrumb-item[data-v-4d67c66a]{padding:4px 8px}.file-count[data-v-4d67c66a]{font-size:12px}.gallery-container[data-v-4d67c66a]{padding:6px}.waterfall-column[data-v-4d67c66a],.waterfall[data-v-4d67c66a]{gap:6px}.image-wrapper[data-v-4d67c66a]{border-radius:6px;min-height:120px}.folders-section[data-v-4d67c66a]{margin-bottom:12px}.folders-grid[data-v-4d67c66a]{grid-template-columns:repeat(2,1fr);gap:8px}.folder-card[data-v-4d67c66a]{padding:16px 12px;border-radius:8px}.folder-icon[data-v-4d67c66a]{width:36px;height:36px;margin-bottom:8px}.folder-name[data-v-4d67c66a]{font-size:12px}.load-trigger[data-v-4d67c66a]{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-4d67c66a]{background:#f5f5f5;color:#333}:root:not(.dark) .header[data-v-4d67c66a]{background:hsla(0,0%,100%,.95);border-bottom-color:#e0e0e0}:root:not(.dark) .logo[data-v-4d67c66a]{color:#333}:root:not(.dark) .breadcrumb-item[data-v-4d67c66a]{color:#666}:root:not(.dark) .breadcrumb-item[data-v-4d67c66a]:hover{background:#e8e8e8;color:#333}:root:not(.dark) .breadcrumb-sep[data-v-4d67c66a]{color:#ccc}:root:not(.dark) .error-container[data-v-4d67c66a],:root:not(.dark) .file-count[data-v-4d67c66a],:root:not(.dark) .loading-container[data-v-4d67c66a]{color:#59636e}:root:not(.dark) .error-credit[data-v-4d67c66a]{color:#4e5969}:root:not(.dark) .error-credit-links a[data-v-4d67c66a]{color:#1d2129}:root:not(.dark) .loading-spinner-small[data-v-4d67c66a],:root:not(.dark) .loading-spinner[data-v-4d67c66a]{border-color:#ddd;border-top-color:#3b82f6}:root:not(.dark) .folder-card[data-v-4d67c66a]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .folder-card[data-v-4d67c66a]:hover{background:#fafafa;border-color:#ccc}:root:not(.dark) .folder-icon[data-v-4d67c66a]{color:#59636e}:root:not(.dark) .folder-name[data-v-4d67c66a]{color:#666}:root:not(.dark) .image-wrapper[data-v-4d67c66a]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .image-wrapper[data-v-4d67c66a]:before{background:#e5e6eb}:root:not(.dark) .image-wrapper[data-v-4d67c66a]:hover{border-color:#ccc}:root:not(.dark) .file-placeholder[data-v-4d67c66a]{background:#f5f5f5;color:#59636e}:root:not(.dark) .file-name[data-v-4d67c66a]{color:#1d2129}:root:not(.dark) .audio-placeholder[data-v-4d67c66a]{background:#eff6ff}:root:not(.dark) .audio-icon[data-v-4d67c66a]{color:#4e5969}:root:not(.dark) .audio-name[data-v-4d67c66a]{color:#1d2129}:root:not(.dark) .no-more[data-v-4d67c66a]{color:#bbb}:root:not(.dark) .credit-link[data-v-4d67c66a]{color:#aaa}:root:not(.dark) .credit-link[data-v-4d67c66a]:hover{color:#666}:root:not(.dark) .loading-more[data-v-4d67c66a]{color:#59636e}:root:not(.dark) .floating-page-indicator[data-v-4d67c66a]{background:hsla(0,0%,100%,.85);color:#1d2129;box-shadow:none} \ No newline at end of file diff --git a/frontend-dist/css/267.d120d397.css.gz b/frontend-dist/css/267.d120d397.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..98b2c38466ff63b55818b19eab6c6005aa6b887a GIT binary patch literal 8661 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 diff --git a/frontend-dist/css/278.f8d0bad0.css b/frontend-dist/css/278.f8d0bad0.css new file mode 100644 index 00000000..ad89a9a4 --- /dev/null +++ b/frontend-dist/css/278.f8d0bad0.css @@ -0,0 +1 @@ +.background-image1:not([src]),.background-image2:not([src]){display:none}body:has(#bg1[src]){background-color:transparent!important}body:has(#bg1[src]) .blocked-container,body:has(#bg1[src]) .container,body:has(#bg1[src]) .login,body:has(#bg1[src]) .not-found-container,body:has(#bg1[src]) .upload-home,body:has(#bg1[src]) .whitelist-container{background:transparent!important;background-color:transparent!important}.whitelist-container[data-v-0c389049]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,#6366f1);color:var(--text-color,#333)}.background-wrapper[data-v-0c389049]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.whitelist-content[data-v-0c389049]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:none}.back-button-wrapper[data-v-0c389049]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-0c389049]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-0c389049]:hover{transform:scale(1.1);box-shadow:none;background:var(--primary-color,#2563eb);color:#fff}.status-animation[data-v-0c389049]{margin-bottom:2rem;position:relative}.status-icon[data-v-0c389049]{position:relative;display:inline-block;margin-bottom:1rem}.shield-icon[data-v-0c389049]{font-size:4rem;color:var(--primary-color,#2563eb);animation:pulse-0c389049 2s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(37,99,235,.3))}.status-badge[data-v-0c389049]{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:none}.clock-icon[data-v-0c389049]{color:#fff;font-size:.8rem;animation:tick-0c389049 1s ease-in-out infinite}.status-info[data-v-0c389049]{animation:fadeInUp-0c389049 1s ease-out .5s both}.status-title[data-v-0c389049]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);color:var(--not-found-title-text-color,#2563eb)}.status-description[data-v-0c389049]{font-size:1.1rem;line-height:1.6;margin-bottom:1rem;opacity:.9;color:var(--text-color,#333)}.status-description-en[data-v-0c389049]{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-0c389049]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-0c389049]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:none;border:none;min-width:140px}.primary-btn[data-v-0c389049]{background:var(--primary-color,#2563eb);color:#fff}.secondary-btn[data-v-0c389049]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-0c389049]:hover{box-shadow:none}.btn-icon[data-v-0c389049]{margin-right:8px}.help-info[data-v-0c389049]{animation:fadeInUp-0c389049 1s ease-out 1s both;margin-bottom:1.5rem}.help-text[data-v-0c389049]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-0c389049]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-0c389049]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(37,99,235,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-0c389049]:hover{background:var(--primary-color,#2563eb);color:#fff;box-shadow:none}.powered-by[data-v-0c389049]{animation:fadeInUp-0c389049 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-0c389049]{margin:0;font-size:.85rem;color:var(--text-color-secondary,#666)}.project-link[data-v-0c389049]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:600;transition:all .3s ease}.project-link[data-v-0c389049]:hover{color:#67c23a;text-shadow:0 0 10px rgba(103,194,58,.3)}.floating-elements[data-v-0c389049]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-0c389049]{position:absolute;background:rgba(37,99,235,.1);border-radius:50%;animation:floatShapes-0c389049 8s ease-in-out infinite}.shape-1[data-v-0c389049]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-0c389049]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-0c389049]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-0c389049]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-0c389049]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes pulse-0c389049{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}@keyframes tick-0c389049{0%,to{transform:rotate(0deg)}50%{transform:rotate(180deg)}}@keyframes floatShapes-0c389049{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-0c389049{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.whitelist-content[data-v-0c389049]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-0c389049]{top:-20px;right:-20px}.shield-icon[data-v-0c389049]{font-size:3rem}.status-title[data-v-0c389049]{font-size:1.5rem}.status-description[data-v-0c389049]{font-size:1rem}.status-description-en[data-v-0c389049]{font-size:.9rem}.status-actions[data-v-0c389049]{flex-direction:column;align-items:center}.action-btn[data-v-0c389049]{width:200px}.quick-links[data-v-0c389049]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-0c389049]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}}@media (max-width:480px){.whitelist-content[data-v-0c389049]{padding:1rem;margin:.5rem;max-width:calc(100% - 1rem)}.status-title[data-v-0c389049]{font-size:1.3rem}.status-description[data-v-0c389049]{font-size:.95rem}.status-description-en[data-v-0c389049]{font-size:.85rem}.shield-icon[data-v-0c389049]{font-size:2.5rem}}@media (prefers-color-scheme:dark){.whitelist-container[data-v-0c389049]{background:var(--bg-color,#1f1f22);color:var(--text-color,#e4e7ed)}.whitelist-content[data-v-0c389049]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.status-description[data-v-0c389049],.status-title[data-v-0c389049]{color:var(--text-color,#e4e7ed)}.help-text[data-v-0c389049],.powered-by p[data-v-0c389049],.status-description-en[data-v-0c389049]{color:var(--text-color-secondary,#a1a1aa)}} \ No newline at end of file diff --git a/frontend-dist/css/278.f8d0bad0.css.gz b/frontend-dist/css/278.f8d0bad0.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a4f0ea180174084175adc544ce88c28c2f7d9b37 GIT binary patch literal 1746 zcmV;@1}*s?iwFP!000023bk2FucI~?{VP;gk%EMg4S^)EnQhlq7gg1T0h4$x*wi@p zCUcelUfH}H9(hdL&4?TD`CjLHdE5l2?+3w8ECaN}2ZAET<@(QBq<`6tJAUgKZ@)5H zR|URAj5Bggcy@`7xL&^{2h@IGoKAVcMI;4gb%h0C@)ufGTu991+)>L-3ZA|bb&yF+ z84=FxXAfQ%{6N|KE5;?rTixzroT`H33>*Sxs0>}jgVC$_2cRq?=Ln#&*9enS zAzC%S=}Mg$Nz zqo+FZ6khXFgsQVu^MYp9_?V}Tok4xX8UJiDOuG&wCn-65)px)Ps&g!~vzq7L*x&|u z3OI?lJ%4bjhZms%A6Qp30h)t=@j*X&?ia9_qROHuWl`|Jkmwyawt$;+CP7Vq zkZ7aSGUK&idT(b`or;?DSe92?1lI&m2KY%@l;xCBN#dLql87i1ylQ>Dh8DC`PFUiQ z;I+SX_ItQ_VH&2RtPJ3)tt-CD&$h1U=bx;l zE%p6A#T7%QNu8=#Ed*p>Ry@SU-KpRVo|iOz9~_V79X~LN<$Nk=K+ADPer3N`Q$z*l z2DO!NdF)TvadR!EB1MJB-5mSu-_QHSR#BV2}}&xv=g)y(Q3{0lMozL%3?kbp=001ztUI zi5XnA^)*ucC8--j>ZaMioAIQx#+$JQYe37q}#~b-U4h!IdNVba5Vv6S@X) zHM3d6;HH3?B5qcfi3GtVmShbxaxI28o)mQgzTM5Sk)IMxqCGWpO@q+T#>$j3*6kF@z%4!?#sJB!v7fwy@S6*ZC-=;5Xnb+= zTR8J@Su@WqE>U_4%%~vxgDB<2sbn*A&HeSLiGc^T@9vJM^YZ$kX;$*R$+VFSO8x`n zv?o#91kGQJElP)bekz`$>PB^d7pZCxwPWoZQ&Gdz=LzKh1c92h{bwk&3tqX9^BQ{h z9;^h(iKx3FEU(E6JIX;kHMXLe3YZy^Om:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{overflow:hidden;padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none}.el-drawer__dragger,.el-drawer__dragger:before{background-color:transparent;position:absolute;transition:all .2s}.el-drawer__dragger:before{content:""}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{bottom:0;cursor:ew-resize;height:100%;top:0;width:var(--el-drawer-dragger-size)}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{bottom:0;top:0;width:3px}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger,.el-drawer.ttb>.el-drawer__dragger{cursor:ns-resize;height:var(--el-drawer-dragger-size);left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger:before,.el-drawer.ttb>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translateX(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translateX(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.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-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0deg);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.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-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.directory-tree-picker[data-v-62eab69a],.drawer-trigger-wrapper[data-v-62eab69a],.popover-trigger-wrapper[data-v-62eab69a]{display:inline-block}.tree-container[data-v-62eab69a]{min-height:200px;max-height:400px;overflow-y:auto;padding:8px}.directory-tree[data-v-62eab69a]{background:transparent;--el-tree-node-hover-bg-color:var(--el-fill-color-light)}.directory-tree[data-v-62eab69a] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px;transition:all .2s ease}.directory-tree[data-v-62eab69a] .el-tree-node__content:hover{background-color:var(--el-fill-color-light)}.directory-tree[data-v-62eab69a] .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.tree-node[data-v-62eab69a]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%;min-height:36px}.tree-node.is-current[data-v-62eab69a]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-62eab69a]{color:var(--el-color-warning);font-size:16px;flex-shrink:0}.node-label[data-v-62eab69a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-tree[data-v-62eab69a] .el-tree-node__content{height:48px;padding:0 12px}.mobile-tree .tree-node[data-v-62eab69a]{min-height:40px}.error-state[data-v-62eab69a]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-62eab69a]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-62eab69a]{color:var(--el-text-color-secondary);font-size:14px}.tree-container[data-v-62eab69a] .el-loading-mask{border-radius:8px}.settings-dialog-scope .dialog-section{margin-bottom:24px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter));border-radius:12px;padding:16px;border:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .section-title{font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.settings-dialog-scope .inline-help-icon,.settings-dialog-scope .section-help-icon{color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s}.settings-dialog-scope .section-help-icon{font-size:14px}.settings-dialog-scope .inline-help-icon{font-size:13px;margin-left:6px}.settings-dialog-scope .inline-help-icon:hover,.settings-dialog-scope .section-help-icon:hover{color:var(--el-color-primary)}.settings-dialog-scope .section-content{display:flex;flex-direction:column;gap:16px}.settings-dialog-scope .radio-card-group{display:flex;flex-wrap:wrap;gap:10px}.settings-dialog-scope .radio-card-group .radio-card{margin-right:0;padding:10px 16px;border-radius:8px;background:var(--dialog-control-bg-color,var(--el-bg-color));border:1px solid var(--el-border-color-lighter);transition:all .2s ease}.settings-dialog-scope .radio-card-group .radio-card:hover{border-color:var(--el-color-primary-light-5)}.settings-dialog-scope .radio-card-group .radio-card.is-checked{background:#eff6ff;border-color:var(--el-color-primary)}html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked{background:rgba(74,93,155,.38);border-color:var(--el-color-primary-light-5);color:var(--el-text-color-primary)}html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked .el-radio__label,html.dark .settings-dialog-scope .radio-card-group .radio-card.is-checked .radio-icon{color:var(--el-text-color-primary)!important}.settings-dialog-scope .radio-card-group .el-radio__input{display:none}.settings-dialog-scope .radio-card-group .el-radio__label{padding-left:0;font-weight:500;display:flex;align-items:center;gap:8px}.settings-dialog-scope .setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--dialog-control-bg-color,var(--el-bg-color));border-radius:8px;border:1px solid var(--el-border-color-lighter)}.settings-dialog-scope .setting-label{font-size:14px;font-weight:500;color:var(--el-text-color-primary)}.settings-dialog-scope .setting-input{width:60%;max-width:250px}.settings-dialog-scope .dialog-action{display:flex;justify-content:flex-end;padding-top:16px}.settings-dialog-scope .confirm-btn{min-width:100px;border-radius:8px}.settings-dialog-scope .radio-card-group.grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-dialog-scope .radio-icon{font-size:14px;opacity:.8;width:20px;text-align:center;display:inline-block}.settings-dialog-scope .radio-card.is-checked .radio-icon{opacity:1}@media (min-width:769px){.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{justify-content:flex-start;padding-left:20px}}@media (max-width:768px){.settings-dialog-scope .dialog-section{padding:12px;overflow:hidden}.settings-dialog-scope .radio-card-group{flex-direction:column}.settings-dialog-scope .radio-card-group .radio-card{width:100%;text-align:center}.settings-dialog-scope .setting-item{flex-direction:column;align-items:flex-start;gap:10px}.settings-dialog-scope .setting-input{width:100%!important;max-width:none!important}.settings-dialog-scope .radio-card-group.grid-2x2{grid-template-columns:repeat(2,1fr);gap:8px}.settings-dialog-scope .radio-card-group.grid-2x2 .radio-card{padding:10px 12px;font-size:13px;justify-content:center}}.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-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-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)}.directory-tree-popover{padding:0!important;border-radius:12px!important;box-shadow:var(--el-box-shadow-light)!important}.el-zoom-in-top-enter-active.directory-tree-popover,.el-zoom-in-top-leave-active.directory-tree-popover{transition:transform .15s ease-out,opacity .15s ease-out!important}.directory-tree-drawer{border-radius:16px 16px 0 0!important}.directory-tree-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.directory-tree-drawer .el-drawer__body{padding:0} \ No newline at end of file diff --git a/frontend-dist/css/30.755fb9d7.css.gz b/frontend-dist/css/30.755fb9d7.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0577daf8017c62fe1c1200e2c695427fae023e04 GIT binary patch literal 5629 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 XYboqF30$*>ecb;6L~#XJmW%)Z&Cn88 literal 0 HcmV?d00001 diff --git a/frontend-dist/css/331.12334816.css b/frontend-dist/css/331.12334816.css new file mode 100644 index 00000000..b221468b --- /dev/null +++ b/frontend-dist/css/331.12334816.css @@ -0,0 +1 @@ +.background-image1:not([src]),.background-image2:not([src]){display:none}body:has(#bg1[src]){background-color:transparent!important}body:has(#bg1[src]) .blocked-container,body:has(#bg1[src]) .container,body:has(#bg1[src]) .login,body:has(#bg1[src]) .not-found-container,body:has(#bg1[src]) .upload-home,body:has(#bg1[src]) .whitelist-container{background:transparent!important;background-color:transparent!important}.blocked-container[data-v-98114f90]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,#dc2626);color:var(--text-color,#333)}.background-wrapper[data-v-98114f90]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.blocked-content[data-v-98114f90]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:none}.back-button-wrapper[data-v-98114f90]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-98114f90]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-98114f90]:hover{transform:scale(1.1);box-shadow:none;background:var(--primary-color,#2563eb);color:#fff}.status-animation[data-v-98114f90]{margin-bottom:2rem;position:relative}.status-icon[data-v-98114f90]{position:relative;display:inline-block;margin-bottom:1rem}.ban-icon[data-v-98114f90]{font-size:4rem;color:#f56c6c;animation:shake-98114f90 2s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(245,108,108,.3))}.status-badge[data-v-98114f90]{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:none}.exclamation-icon[data-v-98114f90]{color:#fff;font-size:.9rem;animation:bounce-98114f90 1.5s ease-in-out infinite}.status-info[data-v-98114f90]{animation:fadeInUp-98114f90 1s ease-out .5s both}.status-title[data-v-98114f90]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);color:var(--not-found-title-text-color,#2563eb)}.status-description[data-v-98114f90]{font-size:1.1rem;line-height:1.6;margin-bottom:1rem;opacity:.9;color:var(--text-color,#333)}.status-description-en[data-v-98114f90]{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-98114f90]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-98114f90]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:none;border:none;min-width:140px}.primary-btn[data-v-98114f90]{background:var(--primary-color,#2563eb);color:#fff}.secondary-btn[data-v-98114f90]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-98114f90]:hover{box-shadow:none}.btn-icon[data-v-98114f90]{margin-right:8px}.help-info[data-v-98114f90]{animation:fadeInUp-98114f90 1s ease-out 1s both;margin-bottom:1.5rem}.help-text[data-v-98114f90]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-98114f90]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-98114f90]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(37,99,235,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-98114f90]:hover{background:var(--primary-color,#2563eb);color:#fff;box-shadow:none}.powered-by[data-v-98114f90]{animation:fadeInUp-98114f90 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-98114f90]{margin:0;font-size:.85rem;color:var(--text-color-secondary,#666)}.project-link[data-v-98114f90]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:600;transition:all .3s ease}.project-link[data-v-98114f90]:hover{color:#67c23a;text-shadow:0 0 10px rgba(103,194,58,.3)}.floating-elements[data-v-98114f90]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-98114f90]{position:absolute;background:hsla(0,87%,69%,.1);border-radius:50%;animation:floatShapes-98114f90 8s ease-in-out infinite}.shape-1[data-v-98114f90]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-98114f90]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(230,162,60,.1)}.shape-3[data-v-98114f90]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-98114f90]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,100%,71%,.1)}.shape-5[data-v-98114f90]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(238,90,36,.1)}@keyframes shake-98114f90{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-98114f90{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-5px)}60%{transform:translateY(-3px)}}@keyframes floatShapes-98114f90{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-98114f90{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.blocked-content[data-v-98114f90]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-98114f90]{top:-20px;right:-20px}.ban-icon[data-v-98114f90]{font-size:3rem}.status-title[data-v-98114f90]{font-size:1.5rem}.status-description[data-v-98114f90]{font-size:1rem}.status-description-en[data-v-98114f90]{font-size:.9rem}.status-actions[data-v-98114f90]{flex-direction:column;align-items:center}.action-btn[data-v-98114f90]{width:200px}.quick-links[data-v-98114f90]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-98114f90]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}}@media (max-width:480px){.blocked-content[data-v-98114f90]{padding:1rem;margin:.5rem;max-width:calc(100% - 1rem)}.status-title[data-v-98114f90]{font-size:1.3rem}.status-description[data-v-98114f90]{font-size:.95rem}.status-description-en[data-v-98114f90]{font-size:.85rem}.ban-icon[data-v-98114f90]{font-size:2.5rem}}@media (prefers-color-scheme:dark){.blocked-container[data-v-98114f90]{background:var(--bg-color,#1f1f22);color:var(--text-color,#e4e7ed)}.blocked-content[data-v-98114f90]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.status-description[data-v-98114f90],.status-title[data-v-98114f90]{color:var(--text-color,#e4e7ed)}.help-text[data-v-98114f90],.powered-by p[data-v-98114f90],.status-description-en[data-v-98114f90]{color:var(--text-color-secondary,#a1a1aa)}} \ No newline at end of file diff --git a/frontend-dist/css/331.12334816.css.gz b/frontend-dist/css/331.12334816.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cbb64d1cb2f1b85ba8b45dc6e0e0ed0db0c308e4 GIT binary patch literal 1789 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 BvFZQ- diff --git a/frontend-dist/css/903.7a90c42f.css b/frontend-dist/css/390.9faa139f.css similarity index 52% rename from frontend-dist/css/903.7a90c42f.css rename to frontend-dist/css/390.9faa139f.css index 7c25673b..1b63ab9a 100644 --- a/frontend-dist/css/903.7a90c42f.css +++ b/frontend-dist/css/390.9faa139f.css @@ -1 +1 @@ -.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-3b79a1b6]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-3b79a1b6]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-3b79a1b6]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-3b79a1b6]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:rgba(56,189,248,.1);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-3b79a1b6]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-3b79a1b6]:before{content:"";display:inline-block;width:4px;height:16px;background:#38bdf8;border-radius:2px}.mobile-drawer-close[data-v-3b79a1b6]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-3b79a1b6]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-3b79a1b6]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-3b79a1b6]{background:rgba(56,189,248,.15);color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-3b79a1b6]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-3b79a1b6]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-3b79a1b6]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-3b79a1b6]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-3b79a1b6]{animation:slideInLeft-3b79a1b6 .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-3b79a1b6]{animation:slideOutLeft-3b79a1b6 .2s ease-in}.drawer-slide-enter-from[data-v-3b79a1b6],.drawer-slide-leave-to[data-v-3b79a1b6]{opacity:0}@keyframes slideInLeft-3b79a1b6{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-3b79a1b6{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-efef5a4c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-efef5a4c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-efef5a4c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:none}.bottom-sheet-header[data-v-efef5a4c]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-efef5a4c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-efef5a4c]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.dark .bottom-sheet-title[data-v-efef5a4c]{color:#f0f0f0}.bottom-sheet-content[data-v-efef5a4c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-efef5a4c]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-efef5a4c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-efef5a4c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-efef5a4c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-efef5a4c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-efef5a4c],.bottom-sheet-danger[data-v-efef5a4c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-efef5a4c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-efef5a4c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-efef5a4c]{animation:slideUp-efef5a4c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-efef5a4c]{animation:slideDown-efef5a4c .2s ease-in}.bottom-sheet-enter-from[data-v-efef5a4c],.bottom-sheet-leave-to[data-v-efef5a4c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-efef5a4c],.bottom-sheet-leave-to .bottom-sheet[data-v-efef5a4c]{transform:translateY(100%)}@keyframes slideUp-efef5a4c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-efef5a4c{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-0d04afa1]{padding:0}.tab-content[data-v-0d04afa1]{padding:20px}.tab-description[data-v-0d04afa1]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-0d04afa1]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-0d04afa1]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-0d04afa1]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-0d04afa1]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-0d04afa1],.tags-to-add-section[data-v-0d04afa1]{margin-bottom:20px}.common-tags-section h4[data-v-0d04afa1],.tags-to-add-section h4[data-v-0d04afa1]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-0d04afa1]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-0d04afa1]{cursor:default}.empty-message[data-v-0d04afa1]{color:#59636e;font-size:13px;padding:10px 0}.action-buttons[data-v-0d04afa1]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-24c809e4]{padding:10px 0}.input-section[data-v-24c809e4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-24c809e4]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-24c809e4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-24c809e4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-24c809e4],.popular-tags-section[data-v-24c809e4]{margin-bottom:20px}.current-tags-section h4[data-v-24c809e4],.popular-tags-section h4[data-v-24c809e4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-24c809e4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-24c809e4]{cursor:default}.tag-item.clickable[data-v-24c809e4]{cursor:pointer;transition:transform .2s}.empty-message[data-v-24c809e4]{color:#59636e;font-size:13px;padding:10px 0}.dialog-footer[data-v-24c809e4]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-38a97614]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-38a97614]{margin-left:0!important}.video-preview[data-v-38a97614]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-38a97614],.video-preview[data-v-38a97614]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-38a97614]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-38a97614] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-38a97614]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-38a97614]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-38a97614]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-38a97614] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-38a97614] .el-descriptions__content .el-tag,[data-v-38a97614] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-38a97614] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-38a97614] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-38a97614]{justify-content:center}}.batch-floating-bar[data-v-6de9da06]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:6px;max-width:min(720px,calc(100vw - 48px));padding:6px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow)}.batch-selection-summary[data-v-6de9da06]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-6de9da06]{min-width:18px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-batch-clear-color);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-6de9da06]{width:1px;height:16px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.58}.batch-floating-actions[data-v-6de9da06]{display:flex;align-items:center;gap:4px}.batch-floating-btn[data-v-6de9da06]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-6de9da06]:hover{transform:none;background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.danger[data-v-6de9da06]{color:var(--admin-batch-delete-color)}.batch-floating-btn.ban[data-v-6de9da06],.batch-floating-btn.tag[data-v-6de9da06],.batch-floating-btn.white[data-v-6de9da06]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ghost[data-v-6de9da06]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-6de9da06]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-6de9da06],.batch-toolbar-leave-active[data-v-6de9da06]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-6de9da06]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:5px;border-radius:999px}.batch-selection-summary[data-v-6de9da06]{padding:0 1px}.batch-selection-count[data-v-6de9da06]{min-width:16px;height:22px;padding:0 3px;font-size:12px}.batch-toolbar-divider[data-v-6de9da06]{height:14px}.batch-floating-actions[data-v-6de9da06]{flex:1;min-width:0;gap:3px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-6de9da06]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-6de9da06]{width:32px;height:32px;min-width:32px;padding:0;border-radius:50%}.batch-floating-icon[data-v-6de9da06]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.dashboard-checkbox[data-v-f8222714]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--list[data-v-f8222714]{width:18px;height:18px;border:2px solid #d9dce2;border-radius:5px;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--list[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--list[data-v-f8222714]:hover{border-color:#38bdf8;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--list[data-v-f8222714]:hover{background:rgba(22,22,24,.88)}.dashboard-checkbox--list[data-v-f8222714]:focus-visible{outline:none;border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}.dashboard-checkbox--list.checked[data-v-f8222714],.dashboard-checkbox--list.indeterminate[data-v-f8222714]{border-color:#38bdf8;background:#0ea5e9}.dashboard-checkbox--breadcrumb[data-v-f8222714]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]{border:1px solid #34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid #d9dce2;border-radius:5px;background:transparent;transition:border-color .18s ease,background .18s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:before{border-color:#34343a}.dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#4a4a52;background:rgba(22,22,24,.88)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:focus-visible{outline:none;border-color:rgba(56,189,248,.34)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714],.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#d9dce2;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--breadcrumb.checked[data-v-f8222714],html.dark .dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]:before{border-color:hsla(0,0%,100%,.4);background:#0ea5e9}.dashboard-checkbox-mark[data-v-f8222714]{position:relative;z-index:1;width:10px;height:10px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--list[data-v-f8222714]{width:16px;height:16px;border-width:1.5px}.dashboard-checkbox--list .dashboard-checkbox-mark[data-v-f8222714]{width:9px;height:9px}.dashboard-checkbox--breadcrumb[data-v-f8222714]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{inset:6px;border-radius:5px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:10px;height:10px}}.list-item[data-v-4b029ac8]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-4b029ac8]:last-child{border-bottom:none}.list-item[data-v-4b029ac8]:hover{background:var(--el-fill-color-light)}.list-col[data-v-4b029ac8]{display:flex;align-items:center}.list-col-checkbox[data-v-4b029ac8]{justify-content:center;min-width:40px}.list-col-preview[data-v-4b029ac8]{justify-content:center;cursor:pointer}.list-col-name[data-v-4b029ac8]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-4b029ac8]:hover{color:#38bdf8}.filename-ellipsis[data-v-4b029ac8]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-4b029ac8]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-4b029ac8]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-4b029ac8]{font-size:13px}.address-box[data-v-4b029ac8],.channel-name-box[data-v-4b029ac8]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-4b029ac8]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-4b029ac8]{width:70px}.address-box[data-v-4b029ac8]::-webkit-scrollbar,.channel-name-box[data-v-4b029ac8]::-webkit-scrollbar{display:none}.list-col-tags[data-v-4b029ac8]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-4b029ac8]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-4b029ac8]{min-width:30px;text-align:center}.list-empty[data-v-4b029ac8]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-4b029ac8]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-4b029ac8]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-4b029ac8]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-4b029ac8]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-4b029ac8]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-4b029ac8]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-4b029ac8]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-4b029ac8]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-4b029ac8],.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8],.list-col-tags[data-v-4b029ac8]{display:none}.list-col-name[data-v-4b029ac8]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-4b029ac8]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-4b029ac8]{font-size:24px}.list-file-icon[data-v-4b029ac8]{font-size:21px}.list-col-actions[data-v-4b029ac8]{gap:3px}.list-action-btn[data-v-4b029ac8]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-4b029ac8]{width:18px;min-width:18px}}.img-card[data-v-12b39bad]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-12b39bad]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-12b39bad] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-12b39bad] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-12b39bad]:hover{transform:scale(1.05)}.image-preview[data-v-12b39bad],.video-preview[data-v-12b39bad]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-12b39bad]{cursor:pointer}.img-card:hover .file-icon[data-v-12b39bad],.img-card:hover .image-preview[data-v-12b39bad],.img-card:hover .video-preview[data-v-12b39bad]{transform:scale(1.03)}.image-preview[data-v-12b39bad]:hover{opacity:.8}.file-short-info[data-v-12b39bad]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-12b39bad]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-12b39bad]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-12b39bad]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-12b39bad]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-12b39bad]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-12b39bad]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-12b39bad]{cursor:pointer}.card-bottom-overlay[data-v-12b39bad]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-12b39bad]{display:flex;align-items:center;justify-content:center}.file-name[data-v-12b39bad]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-12b39bad]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-12b39bad]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-12b39bad],.action-bar-right[data-v-12b39bad]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-12b39bad]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-12b39bad]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-12b39bad]:active{transform:scale(.95)}.action-btn-danger[data-v-12b39bad]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-12b39bad]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-12b39bad] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-12b39bad]:hover{transform:none}.file-short-info[data-v-12b39bad]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-12b39bad],.primary-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-12b39bad]{padding:22px 6px 6px}.file-name[data-v-12b39bad]{font-size:11px}.file-icon[data-v-12b39bad]{font-size:34px}.action-bar[data-v-12b39bad]{display:none!important}}@keyframes skeleton-shimmer-12b39bad{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-12b39bad]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-12b39bad 1.5s ease-in-out infinite}.error-wrapper[data-v-12b39bad]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-12b39bad]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-12b39bad]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-e3ec6a12]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-e3ec6a12] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-e3ec6a12] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-e3ec6a12]:hover{transform:scale(1.05)}.folder-card[data-v-e3ec6a12]{cursor:pointer}.folder-icon[data-v-e3ec6a12]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-e3ec6a12]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-e3ec6a12]{transform:scale(1.03)}.card-bottom-overlay[data-v-e3ec6a12]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-e3ec6a12]{display:flex;align-items:center;justify-content:center}.file-name[data-v-e3ec6a12]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-e3ec6a12]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-e3ec6a12]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-e3ec6a12],.action-bar-right[data-v-e3ec6a12]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-e3ec6a12]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-e3ec6a12]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-e3ec6a12]:active{transform:scale(.95)}.action-btn-danger[data-v-e3ec6a12]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-e3ec6a12]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-e3ec6a12] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-e3ec6a12]:hover{transform:none}.folder-icon-svg[data-v-e3ec6a12]{font-size:36px}.card-bottom-overlay[data-v-e3ec6a12]{padding:22px 6px 6px}.file-name[data-v-e3ec6a12]{font-size:11px}.action-bar[data-v-e3ec6a12]{display:none!important}}@keyframes skeleton-shimmer-070880ec{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-070880ec{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-070880ec]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-070880ec]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-info[data-v-070880ec]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-070880ec]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-list-item[data-v-070880ec]{animation:skeleton-pulse-070880ec 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-070880ec]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-070880ec]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-long[data-v-070880ec]{width:80%}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-short[data-v-070880ec]{width:60px}.skeleton-text-tiny[data-v-070880ec]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-tag[data-v-070880ec]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-070880ec]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-070880ec]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-070880ec]{display:flex;align-items:center}.list-col-checkbox[data-v-070880ec],.list-col-preview[data-v-070880ec]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-070880ec]{height:148px;border-radius:7px}.skeleton-info[data-v-070880ec]{padding:22px 6px 6px}.skeleton-text[data-v-070880ec]{height:11px;width:68%;border-radius:3px}.list-item[data-v-070880ec]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-070880ec]{width:16px;height:16px}.skeleton-preview[data-v-070880ec]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{height:10px;border-radius:3px}.skeleton-actions[data-v-070880ec]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-070880ec],.list-col-channel-name[data-v-070880ec],.list-col-channel[data-v-070880ec],.list-col-date[data-v-070880ec],.list-col-size[data-v-070880ec],.list-col-tags[data-v-070880ec]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-e6a38b20]{flex-shrink:0}.filter-trigger[data-v-e6a38b20]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-e6a38b20]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-e6a38b20]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-e6a38b20] .el-badge__content{background:#0ea5e9;border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-e6a38b20]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-e6a38b20]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-e6a38b20]:last-of-type{border-bottom:none}.filter-title[data-v-e6a38b20]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-e6a38b20],.filter-options[data-v-e6a38b20] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-e6a38b20] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-e6a38b20] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-e6a38b20]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-e6a38b20]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-e6a38b20]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-e6a38b20]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-e6a38b20]:hover:not(:disabled){background:#0ea5e9;border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-e6a38b20]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-e6a38b20]{min-width:160px;max-height:320px}.filter-section[data-v-e6a38b20]{padding:6px 10px}.filter-title[data-v-e6a38b20]{font-size:11px;margin-bottom:4px}.filter-options[data-v-e6a38b20] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:12px}.header-icon[data-v-e6a38b20]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-07e603fa]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-07e603fa]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-07e603fa]{z-index:1200}.page-switcher-sheet[data-v-07e603fa]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-07e603fa]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-07e603fa]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-07e603fa]{line-height:1}.page-switcher-arrow[data-v-07e603fa]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-07e603fa]{transform:rotate(180deg)}.page-option[data-v-07e603fa]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-07e603fa]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-07e603fa]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-07e603fa]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-07e603fa]{opacity:1}.page-switcher.is-open .page-option-list[data-v-07e603fa]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-07e603fa]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-07e603fa],.page-option.is-current>.page-switcher-arrow[data-v-07e603fa],.page-option.is-current>.page-switcher-title[data-v-07e603fa]{translate:0 1px}.page-option[data-v-07e603fa]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-07e603fa]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-07e603fa]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-07e603fa]{gap:6px}.page-switcher-title[data-v-07e603fa]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-07e603fa]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-07e603fa]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-07e603fa]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-07e603fa]{width:15px}.page-option-list[data-v-07e603fa]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-07e603fa]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-07e603fa]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-07e603fa]{margin-left:4px}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-07e603fa] #themeToggle,.tabs[data-v-07e603fa] #themeToggle:hover,.tabs[data-v-07e603fa] .language-switcher,.tabs[data-v-07e603fa] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.container[data-v-57eabdee]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-57eabdee] .el-container,[data-v-57eabdee] .el-main{overflow:visible}[data-v-57eabdee] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-57eabdee]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-57eabdee]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-57eabdee]{font-size:.95em}.header-content .actions[data-v-57eabdee]{gap:10px}.search-card[data-v-57eabdee] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-57eabdee] .el-input__wrapper{padding:0 10px}.search-card[data-v-57eabdee] .el-input__inner:focus{width:65vw}}.header-content[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.82);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-57eabdee]:hover{background:rgba(35,35,35,.85);box-shadow:none}.header-icon[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-57eabdee]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-57eabdee]{height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb-view-toggle[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb-view-toggle[data-v-57eabdee]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .breadcrumb-view-toggle[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-view-button[data-v-57eabdee]{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-57eabdee]:hover{color:#38bdf8}.breadcrumb-view-button.is-active[data-v-57eabdee]{color:#38bdf8;background:rgba(56,189,248,.12);box-shadow:none}.breadcrumb-view-icon[data-v-57eabdee]{width:14px;height:14px}@media (max-width:768px){.breadcrumb-container[data-v-57eabdee]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-57eabdee]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-button[data-v-57eabdee]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-57eabdee]{width:12px;height:12px}}.stats-badge[data-v-57eabdee]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:hsla(0,0%,100%,.72);padding:4px 12px;border-radius:12px;border:1px solid #d9dce2;box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}html.dark .stats-badge[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.stats-badge[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .stats-badge[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.stats-badge-icon[data-v-57eabdee]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-57eabdee]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-57eabdee]{font-size:9px}}.header-content .actions[data-v-57eabdee]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-57eabdee]{margin-top:10px}}.header-content .actions i[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-57eabdee]{color:#c0c4cc;pointer-events:none}.header-content .actions .enabled[data-v-57eabdee]{color:var(--admin-purple)}.search-area[data-v-57eabdee]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-57eabdee]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-57eabdee]{display:flex;align-items:center}.search-card[data-v-57eabdee] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-57eabdee] .el-input__wrapper{border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-57eabdee] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-57eabdee] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-57eabdee] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-57eabdee] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-57eabdee] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-57eabdee] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner:focus{width:55vw}}.search-icon[data-v-57eabdee]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-57eabdee]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-57eabdee] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-57eabdee]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-57eabdee]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:86px}}.content[data-v-57eabdee]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-57eabdee],.list-view.is-drag-selecting[data-v-57eabdee]{cursor:crosshair}.content.is-drag-selecting[data-v-57eabdee] .img-card:hover,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-57eabdee] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-57eabdee] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-57eabdee] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-57eabdee]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-57eabdee]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-57eabdee]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-57eabdee]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-57eabdee]{padding:80px 20px}@media (max-width:768px){.content[data-v-57eabdee]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-57eabdee]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-57eabdee]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-57eabdee]{display:flex;align-items:center}.list-col-checkbox[data-v-57eabdee]{justify-content:center;min-width:40px}@media (max-width:768px){.list-header[data-v-57eabdee]{display:none}}.pagination-container[data-v-57eabdee]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-57eabdee]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-57eabdee] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-57eabdee] .el-pager li{background:hsla(0,0%,100%,.72);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .el-pager li{background:rgba(22,22,24,.75);border:1px solid #34343a}.pagination-container[data-v-57eabdee] .el-pager li:hover{color:#38bdf8;background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .pagination-container[data-v-57eabdee] .el-pager li:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.pagination-container[data-v-57eabdee] .el-pager li.is-active{background:#0ea5e9!important;color:#fff!important;border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-57eabdee] .el-pager li.is-active:hover{box-shadow:none!important}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{background:hsla(0,0%,100%,.72)!important;border-radius:10px!important;min-width:36px;height:36px;border:1px solid #d9dce2!important;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .btn-next,html.dark .pagination-container[data-v-57eabdee] .btn-prev{background:rgba(22,22,24,.75)!important;border:1px solid #34343a!important}.pagination-container[data-v-57eabdee] .btn-next:hover,.pagination-container[data-v-57eabdee] .btn-prev:hover{color:#38bdf8;background:hsla(0,0%,100%,.85)!important;border-color:#bfc4cc!important}html.dark .pagination-container[data-v-57eabdee] .btn-next:hover,html.dark .pagination-container[data-v-57eabdee] .btn-prev:hover{background:rgba(22,22,24,.88)!important;border-color:#4a4a52!important}.pagination-right[data-v-57eabdee]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-57eabdee]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-57eabdee]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-57eabdee]{width:50px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:8px;padding:0 8px;height:28px}html.dark .page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:rgba(22,22,24,.75);border:1px solid #34343a}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-57eabdee]{background:#0ea5e9;border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:none;transition:all .3s ease}.page-jump .jump-btn[data-v-57eabdee]:hover{box-shadow:none}@media (max-width:768px){.pagination-container[data-v-57eabdee]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-57eabdee]{order:0;gap:6px;flex-wrap:wrap;justify-content:center}.pagination-container[data-v-57eabdee] .el-pager li{min-width:30px;height:30px;line-height:30px;margin:0 2px;border-radius:8px;font-size:12px}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{position:static!important;top:auto!important;left:auto!important;right:auto!important;display:none!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px;scale:1!important}.pagination-right[data-v-57eabdee]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-57eabdee],.page-total[data-v-57eabdee]{font-size:12px}.page-jump .jump-input[data-v-57eabdee]{width:40px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{height:26px;line-height:26px;font-size:12px}.page-jump .jump-btn[data-v-57eabdee]{height:26px;padding:0 10px;border-radius:7px;font-size:11px}.refresh-btn[data-v-57eabdee]{width:30px!important;min-width:30px!important;padding:0!important}.load-more[data-v-57eabdee],.refresh-btn[data-v-57eabdee]{--el-button-size:30px;height:30px!important;border-radius:8px!important;font-size:12px!important}.load-more[data-v-57eabdee]{min-height:30px!important;padding:0 10px!important}}.refresh-btn[data-v-57eabdee]{cursor:pointer;background:hsla(0,0%,100%,.72);box-shadow:none;color:#38bdf8;border:1px solid #d9dce2;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .refresh-btn[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.refresh-btn[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc;color:#0ea5e9}html.dark .refresh-btn[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.load-more[data-v-57eabdee]{cursor:pointer;background:#0ea5e9;box-shadow:none;color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-57eabdee]:hover{box-shadow:none}[data-v-57eabdee] .btn-prev{left:8px}[data-v-57eabdee] .btn-next,[data-v-57eabdee] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-57eabdee] .btn-next{right:8px}@media (min-width:768px){[data-v-57eabdee] .el-pagination.is-background .btn-next,[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:rgba(22,22,24,.75);border:1px solid #34343a}[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}}.question-icon[data-v-57eabdee]{margin:0 3px}.breadcrumb[data-v-57eabdee]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb[data-v-57eabdee]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb[data-v-57eabdee]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .breadcrumb[data-v-57eabdee]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-home-icon[data-v-57eabdee]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-57eabdee]:hover{color:#38bdf8}[data-v-57eabdee] .el-breadcrumb__item{cursor:pointer}[data-v-57eabdee] .el-breadcrumb,[data-v-57eabdee] .el-breadcrumb__inner,[data-v-57eabdee] .el-breadcrumb__item,[data-v-57eabdee] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-57eabdee] .el-breadcrumb__inner{cursor:pointer}[data-v-57eabdee] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-57eabdee]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:hsla(0,0%,100%,.72);border-radius:8px;border:1px solid #d9dce2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .mobile-directory-trigger[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-directory-trigger[data-v-57eabdee]:active{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}.mobile-directory-icon[data-v-57eabdee]{flex:0 0 auto;font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-57eabdee]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-57eabdee]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-57eabdee]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-57eabdee]{display:flex}.desktop-only[data-v-57eabdee]{display:none!important}.breadcrumb-container[data-v-57eabdee]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-57eabdee]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px} \ No newline at end of file +.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-3b79a1b6]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-3b79a1b6]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-3b79a1b6]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-3b79a1b6]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:rgba(56,189,248,.1);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-3b79a1b6]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-3b79a1b6]:before{content:"";display:inline-block;width:4px;height:16px;background:#38bdf8;border-radius:2px}.mobile-drawer-close[data-v-3b79a1b6]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-3b79a1b6]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-3b79a1b6]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-3b79a1b6]{background:rgba(56,189,248,.15);color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-3b79a1b6]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-3b79a1b6]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-3b79a1b6]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-3b79a1b6]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-3b79a1b6]{animation:slideInLeft-3b79a1b6 .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-3b79a1b6]{animation:slideOutLeft-3b79a1b6 .2s ease-in}.drawer-slide-enter-from[data-v-3b79a1b6],.drawer-slide-leave-to[data-v-3b79a1b6]{opacity:0}@keyframes slideInLeft-3b79a1b6{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-3b79a1b6{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-efef5a4c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-efef5a4c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-efef5a4c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:none}.bottom-sheet-header[data-v-efef5a4c]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-efef5a4c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-efef5a4c]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.dark .bottom-sheet-title[data-v-efef5a4c]{color:#f0f0f0}.bottom-sheet-content[data-v-efef5a4c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-efef5a4c]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-efef5a4c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-efef5a4c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-efef5a4c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-efef5a4c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-efef5a4c],.bottom-sheet-danger[data-v-efef5a4c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-efef5a4c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-efef5a4c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-efef5a4c]{animation:slideUp-efef5a4c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-efef5a4c]{animation:slideDown-efef5a4c .2s ease-in}.bottom-sheet-enter-from[data-v-efef5a4c],.bottom-sheet-leave-to[data-v-efef5a4c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-efef5a4c],.bottom-sheet-leave-to .bottom-sheet[data-v-efef5a4c]{transform:translateY(100%)}@keyframes slideUp-efef5a4c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-efef5a4c{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-0d04afa1]{padding:0}.tab-content[data-v-0d04afa1]{padding:20px}.tab-description[data-v-0d04afa1]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-0d04afa1]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-0d04afa1]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-0d04afa1]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-0d04afa1]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-0d04afa1],.tags-to-add-section[data-v-0d04afa1]{margin-bottom:20px}.common-tags-section h4[data-v-0d04afa1],.tags-to-add-section h4[data-v-0d04afa1]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-0d04afa1]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-0d04afa1]{cursor:default}.empty-message[data-v-0d04afa1]{color:#59636e;font-size:13px;padding:10px 0}.action-buttons[data-v-0d04afa1]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-24c809e4]{padding:10px 0}.input-section[data-v-24c809e4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-24c809e4]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-24c809e4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-24c809e4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-24c809e4],.popular-tags-section[data-v-24c809e4]{margin-bottom:20px}.current-tags-section h4[data-v-24c809e4],.popular-tags-section h4[data-v-24c809e4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-24c809e4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-24c809e4]{cursor:default}.tag-item.clickable[data-v-24c809e4]{cursor:pointer;transition:transform .2s}.empty-message[data-v-24c809e4]{color:#59636e;font-size:13px;padding:10px 0}.dialog-footer[data-v-24c809e4]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-38a97614]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-38a97614]{margin-left:0!important}.video-preview[data-v-38a97614]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-38a97614],.video-preview[data-v-38a97614]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-38a97614]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-38a97614] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-38a97614]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-38a97614]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-38a97614]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-38a97614] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-38a97614] .el-descriptions__content .el-tag,[data-v-38a97614] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-38a97614] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-38a97614] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-38a97614]{justify-content:center}}.batch-floating-bar[data-v-6de9da06]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:6px;max-width:min(720px,calc(100vw - 48px));padding:6px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow)}.batch-selection-summary[data-v-6de9da06]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-6de9da06]{min-width:18px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-batch-clear-color);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-6de9da06]{width:1px;height:16px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.58}.batch-floating-actions[data-v-6de9da06]{display:flex;align-items:center;gap:4px}.batch-floating-btn[data-v-6de9da06]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-6de9da06]:hover{transform:none;background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.danger[data-v-6de9da06]{color:var(--admin-batch-delete-color)}.batch-floating-btn.ban[data-v-6de9da06],.batch-floating-btn.tag[data-v-6de9da06],.batch-floating-btn.white[data-v-6de9da06]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ghost[data-v-6de9da06]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-6de9da06]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-6de9da06],.batch-toolbar-leave-active[data-v-6de9da06]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-6de9da06]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:5px;border-radius:999px}.batch-selection-summary[data-v-6de9da06]{padding:0 1px}.batch-selection-count[data-v-6de9da06]{min-width:16px;height:22px;padding:0 3px;font-size:12px}.batch-toolbar-divider[data-v-6de9da06]{height:14px}.batch-floating-actions[data-v-6de9da06]{flex:1;min-width:0;gap:3px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-6de9da06]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-6de9da06]{width:32px;height:32px;min-width:32px;padding:0;border-radius:50%}.batch-floating-icon[data-v-6de9da06]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.dashboard-checkbox[data-v-4d90a32e]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--list[data-v-4d90a32e]{width:18px;height:18px;border:2px solid #d9dce2;border-radius:5px;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--list[data-v-4d90a32e]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--list[data-v-4d90a32e]:hover{border-color:#38bdf8;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--list[data-v-4d90a32e]:hover{background:rgba(22,22,24,.88)}.dashboard-checkbox--list[data-v-4d90a32e]:focus-visible{outline:none;border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}.dashboard-checkbox--list.checked[data-v-4d90a32e],.dashboard-checkbox--list.indeterminate[data-v-4d90a32e]{border-color:#38bdf8;background:#0ea5e9}.dashboard-checkbox--breadcrumb[data-v-4d90a32e]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid #d9dce2;border-radius:10px;background:var(--glass-bg);box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .2s ease,border-color .2s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-4d90a32e]{border:1px solid #34343a}.dashboard-checkbox--breadcrumb[data-v-4d90a32e]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid #d9dce2;border-radius:5px;background:transparent;transition:border-color .18s ease,background .18s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-4d90a32e]:before{border-color:#34343a}.dashboard-checkbox--breadcrumb[data-v-4d90a32e]:hover{border-color:#bfc4cc}html.dark .dashboard-checkbox--breadcrumb[data-v-4d90a32e]:hover{border-color:#4a4a52}.dashboard-checkbox--breadcrumb[data-v-4d90a32e]:focus-visible{outline:none;border-color:rgba(56,189,248,.34)}.dashboard-checkbox--breadcrumb.checked[data-v-4d90a32e],.dashboard-checkbox--breadcrumb.indeterminate[data-v-4d90a32e]{border-color:#d9dce2;background:var(--glass-bg)}html.dark .dashboard-checkbox--breadcrumb.checked[data-v-4d90a32e],html.dark .dashboard-checkbox--breadcrumb.indeterminate[data-v-4d90a32e]{border-color:#34343a}.dashboard-checkbox--breadcrumb.checked[data-v-4d90a32e]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-4d90a32e]:before{border-color:hsla(0,0%,100%,.4);background:#0ea5e9}.dashboard-checkbox-mark[data-v-4d90a32e]{position:relative;z-index:1;width:10px;height:10px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-4d90a32e]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--list[data-v-4d90a32e]{width:16px;height:16px;border-width:1.5px}.dashboard-checkbox--list .dashboard-checkbox-mark[data-v-4d90a32e]{width:9px;height:9px}.dashboard-checkbox--breadcrumb[data-v-4d90a32e]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-4d90a32e]:before{inset:6px;border-radius:5px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-4d90a32e]{width:10px;height:10px}}.list-item[data-v-4b029ac8]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-4b029ac8]:last-child{border-bottom:none}.list-item[data-v-4b029ac8]:hover{background:var(--el-fill-color-light)}.list-col[data-v-4b029ac8]{display:flex;align-items:center}.list-col-checkbox[data-v-4b029ac8]{justify-content:center;min-width:40px}.list-col-preview[data-v-4b029ac8]{justify-content:center;cursor:pointer}.list-col-name[data-v-4b029ac8]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-4b029ac8]:hover{color:#38bdf8}.filename-ellipsis[data-v-4b029ac8]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-4b029ac8]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-4b029ac8]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-4b029ac8]{font-size:13px}.address-box[data-v-4b029ac8],.channel-name-box[data-v-4b029ac8]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-4b029ac8]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-4b029ac8]{width:70px}.address-box[data-v-4b029ac8]::-webkit-scrollbar,.channel-name-box[data-v-4b029ac8]::-webkit-scrollbar{display:none}.list-col-tags[data-v-4b029ac8]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-4b029ac8]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-4b029ac8]{min-width:30px;text-align:center}.list-empty[data-v-4b029ac8]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-4b029ac8]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-4b029ac8]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-4b029ac8]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-4b029ac8]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-4b029ac8]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-4b029ac8]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-4b029ac8]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-4b029ac8]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-4b029ac8],.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8],.list-col-tags[data-v-4b029ac8]{display:none}.list-col-name[data-v-4b029ac8]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-4b029ac8]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-4b029ac8]{font-size:24px}.list-file-icon[data-v-4b029ac8]{font-size:21px}.list-col-actions[data-v-4b029ac8]{gap:3px}.list-action-btn[data-v-4b029ac8]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-4b029ac8]{width:18px;min-width:18px}}.img-card[data-v-4e907760]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-4e907760]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-4e907760] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-4e907760] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-4e907760]:hover{transform:scale(1.05)}.image-preview[data-v-4e907760],.video-preview[data-v-4e907760]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-4e907760]{cursor:pointer}.img-card:hover .file-icon[data-v-4e907760],.img-card:hover .image-preview[data-v-4e907760],.img-card:hover .video-preview[data-v-4e907760]{transform:scale(1.03)}.image-preview[data-v-4e907760]:hover{opacity:.8}.file-short-info[data-v-4e907760]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-4e907760]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-4e907760],.success-tag[data-v-4e907760]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-4e907760]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-4e907760]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-4e907760]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-4e907760]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-4e907760]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-4e907760]{cursor:pointer}.card-bottom-overlay[data-v-4e907760]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-4e907760]{display:flex;align-items:center;justify-content:center}.file-name[data-v-4e907760]{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-4e907760]{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-4e907760]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-4e907760],.action-bar-right[data-v-4e907760]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-4e907760]{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-4e907760]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-4e907760]:active{transform:scale(.95)}.action-btn-danger[data-v-4e907760]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-4e907760]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-4e907760] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-4e907760]:hover{transform:none}.file-short-info[data-v-4e907760]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-4e907760],.primary-tag[data-v-4e907760],.success-tag[data-v-4e907760]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-4e907760]{padding:22px 6px 6px}.file-name[data-v-4e907760]{font-size:11px}.file-icon[data-v-4e907760]{font-size:34px}.action-bar[data-v-4e907760]{display:none!important}}@keyframes skeleton-shimmer-4e907760{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-4e907760]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-4e907760 1.5s ease-in-out infinite}.error-wrapper[data-v-4e907760]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-4e907760]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-4e907760]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-9b698e78]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-9b698e78] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-9b698e78] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-9b698e78]:hover{transform:scale(1.05)}.folder-card[data-v-9b698e78]{cursor:pointer}.folder-icon[data-v-9b698e78]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-9b698e78]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-9b698e78]{transform:scale(1.03)}.card-bottom-overlay[data-v-9b698e78]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-9b698e78]{display:flex;align-items:center;justify-content:center}.file-name[data-v-9b698e78]{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-9b698e78]{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-9b698e78]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-9b698e78],.action-bar-right[data-v-9b698e78]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-9b698e78]{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-9b698e78]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-9b698e78]:active{transform:scale(.95)}.action-btn-danger[data-v-9b698e78]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-9b698e78]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-9b698e78] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-9b698e78]:hover{transform:none}.folder-icon-svg[data-v-9b698e78]{font-size:36px}.card-bottom-overlay[data-v-9b698e78]{padding:22px 6px 6px}.file-name[data-v-9b698e78]{font-size:11px}.action-bar[data-v-9b698e78]{display:none!important}}@keyframes skeleton-shimmer-070880ec{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-070880ec{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-070880ec]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-070880ec]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-info[data-v-070880ec]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-070880ec]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-list-item[data-v-070880ec]{animation:skeleton-pulse-070880ec 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-070880ec]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-070880ec]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-long[data-v-070880ec]{width:80%}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-short[data-v-070880ec]{width:60px}.skeleton-text-tiny[data-v-070880ec]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-tag[data-v-070880ec]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-070880ec]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-070880ec]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-070880ec]{display:flex;align-items:center}.list-col-checkbox[data-v-070880ec],.list-col-preview[data-v-070880ec]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-070880ec]{height:148px;border-radius:7px}.skeleton-info[data-v-070880ec]{padding:22px 6px 6px}.skeleton-text[data-v-070880ec]{height:11px;width:68%;border-radius:3px}.list-item[data-v-070880ec]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-070880ec]{width:16px;height:16px}.skeleton-preview[data-v-070880ec]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{height:10px;border-radius:3px}.skeleton-actions[data-v-070880ec]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-070880ec],.list-col-channel-name[data-v-070880ec],.list-col-channel[data-v-070880ec],.list-col-date[data-v-070880ec],.list-col-size[data-v-070880ec],.list-col-tags[data-v-070880ec]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-e6a38b20]{flex-shrink:0}.filter-trigger[data-v-e6a38b20]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-e6a38b20]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-e6a38b20]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-e6a38b20] .el-badge__content{background:#0ea5e9;border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-e6a38b20]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-e6a38b20]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-e6a38b20]:last-of-type{border-bottom:none}.filter-title[data-v-e6a38b20]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-e6a38b20],.filter-options[data-v-e6a38b20] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-e6a38b20] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-e6a38b20] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-e6a38b20]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-e6a38b20]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-e6a38b20]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-e6a38b20]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-e6a38b20]:hover:not(:disabled){background:#0ea5e9;border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-e6a38b20]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-e6a38b20]{min-width:160px;max-height:320px}.filter-section[data-v-e6a38b20]{padding:6px 10px}.filter-title[data-v-e6a38b20]{font-size:11px;margin-bottom:4px}.filter-options[data-v-e6a38b20] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:12px}.header-icon[data-v-e6a38b20]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-07e603fa]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-07e603fa]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-07e603fa]{z-index:1200}.page-switcher-sheet[data-v-07e603fa]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-07e603fa]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-07e603fa]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-07e603fa]{line-height:1}.page-switcher-arrow[data-v-07e603fa]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-07e603fa]{transform:rotate(180deg)}.page-option[data-v-07e603fa]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-07e603fa]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-07e603fa]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-07e603fa]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-07e603fa]{opacity:1}.page-switcher.is-open .page-option-list[data-v-07e603fa]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-07e603fa]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-07e603fa],.page-option.is-current>.page-switcher-arrow[data-v-07e603fa],.page-option.is-current>.page-switcher-title[data-v-07e603fa]{translate:0 1px}.page-option[data-v-07e603fa]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-07e603fa]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-07e603fa]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-07e603fa]{gap:6px}.page-switcher-title[data-v-07e603fa]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-07e603fa]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-07e603fa]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-07e603fa]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-07e603fa]{width:15px}.page-option-list[data-v-07e603fa]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-07e603fa]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-07e603fa]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-07e603fa]{margin-left:4px}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-07e603fa] #themeToggle,.tabs[data-v-07e603fa] #themeToggle:hover,.tabs[data-v-07e603fa] .language-switcher,.tabs[data-v-07e603fa] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.container[data-v-14a7b6e2]{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-14a7b6e2] .el-container,[data-v-14a7b6e2] .el-main{overflow:visible}[data-v-14a7b6e2] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-14a7b6e2]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-14a7b6e2]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-14a7b6e2]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-14a7b6e2]{font-size:.95em}.header-content .actions[data-v-14a7b6e2]{gap:10px}.search-card[data-v-14a7b6e2] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-14a7b6e2] .el-input__wrapper{padding:0 10px}.search-card[data-v-14a7b6e2] .el-input__inner:focus{width:65vw}}.header-content[data-v-14a7b6e2]:hover{background:hsla(0,0%,100%,.82);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-14a7b6e2]:hover{background:rgba(35,35,35,.85);box-shadow:none}.header-icon[data-v-14a7b6e2]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-14a7b6e2]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-14a7b6e2]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-14a7b6e2]{height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #d9dce2;border-radius:10px;background:var(--glass-bg);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb-view-toggle[data-v-14a7b6e2]{border:1px solid #34343a}.breadcrumb-view-toggle[data-v-14a7b6e2]:hover{border-color:#bfc4cc}html.dark .breadcrumb-view-toggle[data-v-14a7b6e2]:hover{border-color:#4a4a52}.breadcrumb-view-button[data-v-14a7b6e2]{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-14a7b6e2]:hover{color:#38bdf8}.breadcrumb-view-button.is-active[data-v-14a7b6e2]{color:#38bdf8;background:rgba(56,189,248,.12);box-shadow:none}.breadcrumb-view-icon[data-v-14a7b6e2]{width:14px;height:14px}@media (max-width:768px){.breadcrumb-container[data-v-14a7b6e2]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-14a7b6e2]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-button[data-v-14a7b6e2]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-14a7b6e2]{width:12px;height:12px}}.stats-badge[data-v-14a7b6e2]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--glass-bg);padding:4px 12px;border-radius:12px;border:1px solid #d9dce2;box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}html.dark .stats-badge[data-v-14a7b6e2]{border:1px solid #34343a}.stats-badge[data-v-14a7b6e2]:hover{border-color:#bfc4cc}html.dark .stats-badge[data-v-14a7b6e2]:hover{border-color:#4a4a52}.stats-badge-icon[data-v-14a7b6e2]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-14a7b6e2]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-14a7b6e2]{font-size:9px}}.header-content .actions[data-v-14a7b6e2]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-14a7b6e2]{margin-top:10px}}.header-content .actions i[data-v-14a7b6e2]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-14a7b6e2]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-14a7b6e2]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-14a7b6e2]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-14a7b6e2]{color:#c0c4cc;pointer-events:none}.header-content .actions .enabled[data-v-14a7b6e2]{color:var(--admin-purple)}.search-area[data-v-14a7b6e2]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-14a7b6e2]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-14a7b6e2]{display:flex;align-items:center}.search-card[data-v-14a7b6e2] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-14a7b6e2] .el-input__wrapper{border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-14a7b6e2] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-14a7b6e2] .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-14a7b6e2] .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-14a7b6e2] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-14a7b6e2] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-14a7b6e2] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-14a7b6e2] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-14a7b6e2] .el-input__inner:focus{width:55vw}}.search-icon[data-v-14a7b6e2]{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-14a7b6e2]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-14a7b6e2]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-14a7b6e2] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-14a7b6e2]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-14a7b6e2]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-14a7b6e2]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-14a7b6e2]{padding-bottom:86px}}.content[data-v-14a7b6e2]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-14a7b6e2],.list-view.is-drag-selecting[data-v-14a7b6e2]{cursor:crosshair}.content.is-drag-selecting[data-v-14a7b6e2] .img-card:hover,.content.is-drag-selecting[data-v-14a7b6e2] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-14a7b6e2] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-14a7b6e2] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-14a7b6e2] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-14a7b6e2] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-14a7b6e2] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-14a7b6e2] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-14a7b6e2] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-14a7b6e2] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-14a7b6e2]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-14a7b6e2]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-14a7b6e2]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-14a7b6e2]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-14a7b6e2]{padding:80px 20px}@media (max-width:768px){.content[data-v-14a7b6e2]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-14a7b6e2]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-14a7b6e2]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-14a7b6e2]{display:flex;align-items:center}.list-col-checkbox[data-v-14a7b6e2]{justify-content:center;min-width:40px}@media (max-width:768px){.list-header[data-v-14a7b6e2]{display:none}}.pagination-container[data-v-14a7b6e2]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-14a7b6e2]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-14a7b6e2] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-14a7b6e2] .el-pager li{background:hsla(0,0%,100%,.72);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-14a7b6e2] .el-pager li{background:rgba(22,22,24,.75);border:1px solid #34343a}.pagination-container[data-v-14a7b6e2] .el-pager li:hover{color:#38bdf8;background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .pagination-container[data-v-14a7b6e2] .el-pager li:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.pagination-container[data-v-14a7b6e2] .el-pager li.is-active{background:#0ea5e9!important;color:#fff!important;border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-14a7b6e2] .el-pager li.is-active:hover{box-shadow:none!important}.pagination-container[data-v-14a7b6e2] .btn-next,.pagination-container[data-v-14a7b6e2] .btn-prev{background:hsla(0,0%,100%,.72)!important;border-radius:10px!important;min-width:36px;height:36px;border:1px solid #d9dce2!important;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-14a7b6e2] .btn-next,html.dark .pagination-container[data-v-14a7b6e2] .btn-prev{background:rgba(22,22,24,.75)!important;border:1px solid #34343a!important}.pagination-container[data-v-14a7b6e2] .btn-next:hover,.pagination-container[data-v-14a7b6e2] .btn-prev:hover{color:#38bdf8;background:hsla(0,0%,100%,.85)!important;border-color:#bfc4cc!important}html.dark .pagination-container[data-v-14a7b6e2] .btn-next:hover,html.dark .pagination-container[data-v-14a7b6e2] .btn-prev:hover{background:rgba(22,22,24,.88)!important;border-color:#4a4a52!important}.pagination-right[data-v-14a7b6e2]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-14a7b6e2]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-14a7b6e2]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-14a7b6e2]{width:50px}.page-jump .jump-input[data-v-14a7b6e2] .el-input__wrapper{background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:none;border:1px solid #d9dce2;border-radius:8px;padding:0 8px;height:28px}html.dark .page-jump .jump-input[data-v-14a7b6e2] .el-input__wrapper{border:1px solid #34343a}.page-jump .jump-input[data-v-14a7b6e2] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-14a7b6e2]{background:#0ea5e9;border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:none;transition:all .3s ease}.page-jump .jump-btn[data-v-14a7b6e2]:hover{box-shadow:none}@media (max-width:768px){.pagination-container[data-v-14a7b6e2]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-14a7b6e2]{order:0;gap:6px;flex-wrap:wrap;justify-content:center}.pagination-container[data-v-14a7b6e2] .el-pager li{min-width:30px;height:30px;line-height:30px;margin:0 2px;border-radius:8px;font-size:12px}.pagination-container[data-v-14a7b6e2] .btn-next,.pagination-container[data-v-14a7b6e2] .btn-prev{position:static!important;top:auto!important;left:auto!important;right:auto!important;display:none!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px;scale:1!important}.pagination-right[data-v-14a7b6e2]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-14a7b6e2],.page-total[data-v-14a7b6e2]{font-size:12px}.page-jump .jump-input[data-v-14a7b6e2]{width:40px}.page-jump .jump-input[data-v-14a7b6e2] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-14a7b6e2] .el-input__inner{height:26px;line-height:26px;font-size:12px}.page-jump .jump-btn[data-v-14a7b6e2]{height:26px;padding:0 10px;border-radius:7px;font-size:11px}.refresh-btn[data-v-14a7b6e2]{width:30px!important;min-width:30px!important;padding:0!important}.load-more[data-v-14a7b6e2],.refresh-btn[data-v-14a7b6e2]{--el-button-size:30px;height:30px!important;border-radius:8px!important;font-size:12px!important}.load-more[data-v-14a7b6e2]{min-height:30px!important;padding:0 10px!important}}.refresh-btn[data-v-14a7b6e2]{cursor:pointer;background:var(--glass-bg);box-shadow:none;color:#38bdf8;border:1px solid #d9dce2;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .refresh-btn[data-v-14a7b6e2]{border:1px solid #34343a}.refresh-btn[data-v-14a7b6e2]:hover{border-color:#bfc4cc;color:#0ea5e9}html.dark .refresh-btn[data-v-14a7b6e2]:hover{border-color:#4a4a52}.load-more[data-v-14a7b6e2]{cursor:pointer;background:#0ea5e9;box-shadow:none;color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-14a7b6e2]:hover{box-shadow:none}[data-v-14a7b6e2] .btn-prev{left:8px}[data-v-14a7b6e2] .btn-next,[data-v-14a7b6e2] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-14a7b6e2] .btn-next{right:8px}@media (min-width:768px){[data-v-14a7b6e2] .el-pagination.is-background .btn-next,[data-v-14a7b6e2] .el-pagination.is-background .btn-prev{background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease}html.dark[data-v-14a7b6e2] .el-pagination.is-background .btn-next,html.dark[data-v-14a7b6e2] .el-pagination.is-background .btn-prev{background-color:rgba(22,22,24,.75);border:1px solid #34343a}[data-v-14a7b6e2] .el-pagination.is-background .btn-next:hover,[data-v-14a7b6e2] .el-pagination.is-background .btn-prev:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark[data-v-14a7b6e2] .el-pagination.is-background .btn-next:hover,html.dark[data-v-14a7b6e2] .el-pagination.is-background .btn-prev:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}}.question-icon[data-v-14a7b6e2]{margin:0 3px}.breadcrumb[data-v-14a7b6e2]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:var(--glass-bg);border:1px solid #d9dce2;border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb[data-v-14a7b6e2]{border:1px solid #34343a}.breadcrumb[data-v-14a7b6e2]:hover{border-color:#bfc4cc}html.dark .breadcrumb[data-v-14a7b6e2]:hover{border-color:#4a4a52}.breadcrumb-home-icon[data-v-14a7b6e2]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-14a7b6e2]:hover{color:#38bdf8}[data-v-14a7b6e2] .el-breadcrumb__item{cursor:pointer}[data-v-14a7b6e2] .el-breadcrumb,[data-v-14a7b6e2] .el-breadcrumb__inner,[data-v-14a7b6e2] .el-breadcrumb__item,[data-v-14a7b6e2] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-14a7b6e2] .el-breadcrumb__inner{cursor:pointer}[data-v-14a7b6e2] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-14a7b6e2]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:var(--glass-bg);border-radius:8px;border:1px solid #d9dce2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .mobile-directory-trigger[data-v-14a7b6e2]{border:1px solid #34343a}.mobile-directory-trigger[data-v-14a7b6e2]:active{border-color:#bfc4cc}.breadcrumb-view-toggle[data-v-14a7b6e2],.breadcrumb[data-v-14a7b6e2],.mobile-directory-trigger[data-v-14a7b6e2],.refresh-btn[data-v-14a7b6e2],.stats-badge[data-v-14a7b6e2]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.mobile-directory-icon[data-v-14a7b6e2]{flex:0 0 auto;font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-14a7b6e2]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-14a7b6e2]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-14a7b6e2]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-14a7b6e2]{display:flex}.desktop-only[data-v-14a7b6e2]{display:none!important}.breadcrumb-container[data-v-14a7b6e2]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-14a7b6e2]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px} \ No newline at end of file diff --git a/frontend-dist/css/390.9faa139f.css.gz b/frontend-dist/css/390.9faa139f.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cb9636891d214fa9033bbcbf10bde898a9f43f3d GIT binary patch literal 15344 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 Pn2P@cXsAz.el-icon{vertical-align:-2px}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;overflow:hidden;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{overflow:hidden;padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{-webkit-user-select:none;user-select:none}.el-drawer__dragger,.el-drawer__dragger:before{background-color:transparent;position:absolute;transition:all .2s}.el-drawer__dragger:before{content:""}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{bottom:0;cursor:ew-resize;height:100%;top:0;width:var(--el-drawer-dragger-size)}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{bottom:0;top:0;width:3px}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger,.el-drawer.ttb>.el-drawer__dragger{cursor:ns-resize;height:var(--el-drawer-dragger-size);left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger:before,.el-drawer.ttb>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translateX(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translateX(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.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-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}.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-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0deg);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.directory-tree-picker[data-v-62eab69a],.drawer-trigger-wrapper[data-v-62eab69a],.popover-trigger-wrapper[data-v-62eab69a]{display:inline-block}.tree-container[data-v-62eab69a]{min-height:200px;max-height:400px;overflow-y:auto;padding:8px}.directory-tree[data-v-62eab69a]{background:transparent;--el-tree-node-hover-bg-color:var(--el-fill-color-light)}.directory-tree[data-v-62eab69a] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px;transition:all .2s ease}.directory-tree[data-v-62eab69a] .el-tree-node__content:hover{background-color:var(--el-fill-color-light)}.directory-tree[data-v-62eab69a] .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.tree-node[data-v-62eab69a]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%;min-height:36px}.tree-node.is-current[data-v-62eab69a]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-62eab69a]{color:var(--el-color-warning);font-size:16px;flex-shrink:0}.node-label[data-v-62eab69a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-tree[data-v-62eab69a] .el-tree-node__content{height:48px;padding:0 12px}.mobile-tree .tree-node[data-v-62eab69a]{min-height:40px}.error-state[data-v-62eab69a]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-62eab69a]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-62eab69a]{color:var(--el-text-color-secondary);font-size:14px}.tree-container[data-v-62eab69a] .el-loading-mask{border-radius:8px}.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)}.directory-tree-popover{padding:0!important;border-radius:12px!important;box-shadow:var(--el-box-shadow-light)!important}.el-zoom-in-top-enter-active.directory-tree-popover,.el-zoom-in-top-leave-active.directory-tree-popover{transition:transform .15s ease-out,opacity .15s ease-out!important}.directory-tree-drawer{border-radius:16px 16px 0 0!important}.directory-tree-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.directory-tree-drawer .el-drawer__body{padding:0} \ No newline at end of file diff --git a/frontend-dist/css/451.7e03bef9.css.gz b/frontend-dist/css/451.7e03bef9.css.gz deleted file mode 100644 index 051488a03b41e8f3664aa1944dda4c5113bafae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5055 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 VA%z8Q*;Cr_{{gL#H0c|C0080a;$Hv& diff --git a/frontend-dist/css/488.64e37d88.css b/frontend-dist/css/488.64e37d88.css new file mode 100644 index 00000000..93dec440 --- /dev/null +++ b/frontend-dist/css/488.64e37d88.css @@ -0,0 +1 @@ +.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))}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-c93807da]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:var(--glass-bg);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-c93807da]{border:1px solid #34343a}#themeToggle[data-v-c93807da]:hover{border-color:#bfc4cc}html.dark #themeToggle[data-v-c93807da]:hover{border-color:#4a4a52}#themeToggle[data-v-c93807da]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}@media (max-width:768px){#themeToggle[data-v-c93807da]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-c93807da]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-c93807da]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-c93807da]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-c93807da]{transform:rotate(40deg)}.theme_toggle_g[data-v-c93807da]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-c93807da],.icon-fade-leave-active[data-v-c93807da]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-c93807da]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-c93807da]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-c93807da],.icon-fade-leave-from[data-v-c93807da]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-c93807da]{display:inline-block}.background-image1:not([src]),.background-image2:not([src]){display:none}body:has(#bg1[src]){background-color:transparent!important}body:has(#bg1[src]) .blocked-container,body:has(#bg1[src]) .container,body:has(#bg1[src]) .login,body:has(#bg1[src]) .not-found-container,body:has(#bg1[src]) .upload-home,body:has(#bg1[src]) .whitelist-container{background:transparent!important;background-color:transparent!important}.login[data-v-5b07fe04]{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;transition:height .35s ease-out,min-height .35s ease-out}.login-title[data-v-5b07fe04]{font-size:2.3rem;margin-bottom:15px;color:var(--login-title-color);font-family:Pacifico,Noto Sans SC,sans-serif;cursor:pointer;transition:all .3s ease;letter-spacing:2px}@media (max-width:768px){.login-title[data-v-5b07fe04]{font-size:1.5rem}}.login-title[data-v-5b07fe04]:focus,.login-title[data-v-5b07fe04]:hover{text-shadow:0 0 10px var(--login-title-glow-color,rgba(52,152,219,.5))}.login-container[data-v-5b07fe04]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:auto;height:auto;width:600px;border-radius:12px;box-shadow:var(--login-container-box-shadow);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);transition:all .3s ease;padding:40px 0;gap:20px;position:relative;z-index:101}@media (max-width:768px){.login-container[data-v-5b07fe04]{width:85vw;padding:25px 0;gap:12px}}.login-container[data-v-5b07fe04]:hover{box-shadow:var(--login-container-hover-box-shadow)}.input-container[data-v-5b07fe04]{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-5b07fe04]{width:85%;gap:4px;margin-bottom:8px}}.input-wrapper[data-v-5b07fe04]{position:relative;width:100%;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}.input-icon[data-v-5b07fe04]{margin-right:6px;font-size:1rem}.input-name[data-v-5b07fe04]{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-5b07fe04]:after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--login-input-underline-color,#5b9bd3);transition:width .3s linear;border-radius:1px}.input-container:has(.input-wrapper.focused) .input-name[data-v-5b07fe04]:after,.input-container:hover .input-name[data-v-5b07fe04]:after{width:var(--underline-width,50px)}.input-container:has(.input-wrapper.focused) .input-name[data-v-5b07fe04],.input-container:hover .input-name[data-v-5b07fe04]{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.input-name[data-v-5b07fe04]{font-size:.85rem}}.submit[data-v-5b07fe04]{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-5b07fe04]{width:48px;border-radius:50%;background-color:transparent!important;box-shadow:none!important;pointer-events:none}.loading-ring[data-v-5b07fe04]{display:inline-block;width:34px;height:34px;border:4px solid transparent;border-radius:50%;border-top-color:var(--login-title-color,#fff);animation:spin-5b07fe04 1s ease-in-out infinite;box-sizing:border-box}@keyframes spin-5b07fe04{to{transform:rotate(1turn)}}@media (max-width:768px){.submit[data-v-5b07fe04]{width:50%}}.submit[data-v-5b07fe04]:not(.is-loading):focus,.submit[data-v-5b07fe04]:not(.is-loading):hover{transform:scale(1.05);box-shadow:none}.submit[data-v-5b07fe04]:disabled{cursor:default;transform:none}.password-input[data-v-5b07fe04]{width:100%;height:50px;position:relative}.password-input[data-v-5b07fe04] .el-input__prefix{color:var(--login-input-icon-color,#59636e);font-size:1rem;transition:color .3s ease}.password-input[data-v-5b07fe04] .el-input__wrapper:focus-within .el-input__prefix{color:var(--login-input-label-focus-color,#5b9bd3)}.password-input[data-v-5b07fe04] .el-input__wrapper{border-radius:12px;background-color:var(--password-input-bg-color);border:1px solid var(--glass-border);box-shadow:none;padding:12px 16px;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.password-input[data-v-5b07fe04] .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-5b07fe04] .el-input__wrapper:hover:before{left:100%}.password-input[data-v-5b07fe04] .el-input__wrapper:hover{box-shadow:none;border-color:var(--login-input-underline-color,#5b9bd3)}.password-input[data-v-5b07fe04] .el-input__wrapper:focus-within{border-color:var(--login-input-underline-color,#5b9bd3);box-shadow:none}.password-input[data-v-5b07fe04] .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-5b07fe04] .el-input__inner,[data-theme=dark] .password-input[data-v-5b07fe04] .el-input__inner{color:var(--text-color,#fff)!important}.password-input[data-v-5b07fe04] .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-5b07fe04] .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-5b07fe04] .el-input__wrapper:focus-within .el-input__inner::-moz-placeholder{opacity:.7}.password-input[data-v-5b07fe04] .el-input__wrapper:focus-within .el-input__inner::placeholder{opacity:.7}.password-input[data-v-5b07fe04] .el-input__suffix{color:var(--icon-color,#666)}.password-input[data-v-5b07fe04] .el-input__suffix-inner{transition:color .3s ease}.password-input[data-v-5b07fe04] .el-input__wrapper:hover .el-input__suffix-inner{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.password-input[data-v-5b07fe04]{width:100%;height:40px}.password-input[data-v-5b07fe04] .el-input__wrapper{padding:8px 12px}}.footer[data-v-5b07fe04]{position:fixed;bottom:0;width:100vw}.toggle-dark[data-v-5b07fe04]{position:fixed;top:30px;right:30px;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;border-radius:12px}html.dark .toggle-dark[data-v-5b07fe04]{border:1px solid #34343a}.toggle-dark[data-v-5b07fe04]:hover{transform:scale(1.05);border-color:#bfc4cc}html.dark .toggle-dark[data-v-5b07fe04]:hover{border-color:#4a4a52}.language-switcher[data-v-5b07fe04]{position:fixed;top:30px;right:80px;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;border:1px solid #d9dce2;border-radius:12px;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;z-index:100}html.dark .language-switcher[data-v-5b07fe04]{border:1px solid #34343a}@media (max-width:768px){.language-switcher[data-v-5b07fe04]{width:2rem;height:2rem}}.language-switcher[data-v-5b07fe04]:hover{transform:scale(1.05);border-color:#bfc4cc}html.dark .language-switcher[data-v-5b07fe04]:hover{border-color:#4a4a52}.language-switcher[data-v-5b07fe04],.toggle-dark[data-v-5b07fe04]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)} \ No newline at end of file diff --git a/frontend-dist/css/488.64e37d88.css.gz b/frontend-dist/css/488.64e37d88.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..85f4ddec28780525358d8466b9dfc98029e2cf1a GIT binary patch literal 2580 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

KIaD+4>Q{r1i^$Tq-=HE+Xq12PzLMc(`vPH z2ie62HBn$cS&4_Wud(-)`0C2&%Sw29it6qEU6OcpzReJ--r6n5uM&=9b=O*#Fhd7g z=2xt&@&4^+D+1ssqa=sy(+ad`_w4yw*X_S&S_gr?*`2vjNM^o0qTT;YvG0=mR{fgV zwdUTzfB7reeFG7 z-M8yMY#eDZ>Bn8>3>nz(G%von`;-~&CIwm8R}y6EZqcf1=8imv`0kemUw`W`gl*QF zfqBIzUn|TmyKz96eZz1M;n6n?)9-!m-N$XvN0$HB?Hci<5%@jxO6I|LH})e#Ygg_t q?xe5G^y_a^oqX$Yd+jf|;oamPbw=+-.el-tooltip[data-v-6b0a5e1a],.action-buttons>.restore-section[data-v-6b0a5e1a],.restore-section[data-v-6b0a5e1a]{flex:1;width:100%}.action-btn[data-v-6b0a5e1a]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-6b0a5e1a]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-6b0a5e1a]{position:relative;background:var(--glass-bg);border-radius:16px;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);transition:all .3s ease;height:300px;overflow:hidden;cursor:pointer}.card-bg-media[data-v-6b0a5e1a]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-6b0a5e1a],.card-bg-media[data-v-6b0a5e1a] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-6b0a5e1a] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-6b0a5e1a]{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-6b0a5e1a]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-6b0a5e1a]{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,.5) 0,rgba(0,0,0,.2) 55%,transparent);z-index:2}.file-card-header .fa-icon[data-v-6b0a5e1a]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-6b0a5e1a]{color:#f59e0b}.info-card-footer[data-v-6b0a5e1a]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-6b0a5e1a]{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-6b0a5e1a]{font-size:12px;color:#fafafa;text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-6b0a5e1a]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-6b0a5e1a]{height:450px}}.file-info-card[data-v-6b0a5e1a]:hover{box-shadow:var(--glass-shadow)}.file-info-card:hover .card-bg-media[data-v-6b0a5e1a]{transform:scale(1)}@media (max-width:768px){.status-panel[data-v-6b0a5e1a]{padding:15px}.charts-section[data-v-6b0a5e1a],.overview-cards[data-v-6b0a5e1a]{grid-template-columns:1fr;gap:15px}.trend-chart-header[data-v-6b0a5e1a]{align-items:stretch}.chart-title[data-v-6b0a5e1a]{width:100%}.trend-controls[data-v-6b0a5e1a]{width:100%;justify-content:stretch}.trend-date-dialog[data-v-6b0a5e1a] .el-dialog__body{padding:12px 14px 18px}.trend-group-switch[data-v-6b0a5e1a]{width:100%}.trend-group-switch[data-v-6b0a5e1a] .el-radio-button{flex:1}.trend-group-switch[data-v-6b0a5e1a] .el-radio-button__inner{width:100%;padding:0 10px}.line-chart-wrapper[data-v-6b0a5e1a],.trend-empty-state[data-v-6b0a5e1a]{height:280px}.file-info-section[data-v-6b0a5e1a]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-6b0a5e1a]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-6b0a5e1a]{font-size:24px}.action-buttons[data-v-6b0a5e1a]{flex-direction:column;gap:12px}.action-btn[data-v-6b0a5e1a]{width:100%;min-width:unset}}.stats-fill[data-v-6b0a5e1a]{animation:fillAnimation-6b0a5e1a 1s ease-out}@keyframes fillAnimation-6b0a5e1a{0%{width:0}}.progress-container[data-v-6b0a5e1a]{width:100%;padding:20px;text-align:center}.progress-header[data-v-6b0a5e1a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.progress-phase[data-v-6b0a5e1a]{font-size:16px;font-weight:600;color:var(--admin-container-color)}.progress-percentage[data-v-6b0a5e1a]{font-size:18px;font-weight:700;color:var(--admin-purple)}.progress-bar[data-v-6b0a5e1a]{margin-bottom:16px}.progress-bar[data-v-6b0a5e1a] .el-progress-bar__outer{background-color:rgba(139,92,246,.1);border-radius:6px}.progress-bar[data-v-6b0a5e1a] .el-progress-bar__inner{background:#6366f1;border-radius:6px;transition:width .3s ease}.progress-details[data-v-6b0a5e1a]{display:flex;justify-content:center;gap:24px;margin-bottom:12px;flex-wrap:wrap}.progress-count[data-v-6b0a5e1a],.progress-time[data-v-6b0a5e1a]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.progress-count .fa-icon[data-v-6b0a5e1a],.progress-time .fa-icon[data-v-6b0a5e1a]{color:var(--admin-purple);font-size:12px}.progress-message[data-v-6b0a5e1a]{font-size:13px;color:#888;margin-bottom:16px;min-height:20px}.cancel-btn[data-v-6b0a5e1a]{margin-top:12px;border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:#ef4444}.cancel-btn[data-v-6b0a5e1a]:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);box-shadow:none}.cancel-btn .fa-icon[data-v-6b0a5e1a]{margin-right:8px}.error-container[data-v-6b0a5e1a]{width:100%;padding:20px;display:flex;flex-direction:column;align-items:center;gap:16px;background:rgba(239,68,68,.05);border-radius:12px;border:1px solid rgba(239,68,68,.2)}.error-icon[data-v-6b0a5e1a]{width:48px;height:48px;border-radius:50%;background:rgba(239,68,68,.1);display:flex;align-items:center;justify-content:center;color:#ef4444;font-size:24px}.error-content[data-v-6b0a5e1a]{text-align:center}.error-message[data-v-6b0a5e1a]{font-size:15px;font-weight:600;color:#ef4444;margin-bottom:8px}.error-suggestion[data-v-6b0a5e1a]{font-size:13px;color:#666}.error-actions[data-v-6b0a5e1a]{display:flex;gap:12px}.error-actions .el-button[data-v-6b0a5e1a]{border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:100px}.error-actions .el-button--primary[data-v-6b0a5e1a]{background:#6366f1;border:none;color:#fff}.error-actions .el-button--primary[data-v-6b0a5e1a]:hover{background:#4f46e5;box-shadow:none}.error-actions .el-button--default[data-v-6b0a5e1a]{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);color:var(--el-text-color-regular)}.error-actions .el-button--default[data-v-6b0a5e1a]:hover{background:hsla(0,0%,100%,.15);border-color:#4a4a52;box-shadow:none}.error-actions .fa-icon[data-v-6b0a5e1a]{margin-right:8px}html.dark .progress-count[data-v-6b0a5e1a],html.dark .progress-time[data-v-6b0a5e1a]{color:#aaa}html.dark .progress-message[data-v-6b0a5e1a]{color:#999}html.dark .error-container[data-v-6b0a5e1a]{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}html.dark .error-suggestion[data-v-6b0a5e1a]{color:#aaa}@media (max-width:768px){.error-container[data-v-6b0a5e1a],.progress-container[data-v-6b0a5e1a]{padding:16px}.progress-header[data-v-6b0a5e1a]{flex-direction:column;gap:8px;text-align:center}.progress-details[data-v-6b0a5e1a]{flex-direction:column;gap:8px}.error-actions[data-v-6b0a5e1a]{flex-direction:column;width:100%}.error-actions .el-button[data-v-6b0a5e1a]{width:100%;margin: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-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}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.custom-select[data-v-3554ed88]{position:relative}.custom-select-trigger[data-v-3554ed88]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:8px;cursor:pointer;transition:background-color .2s ease,border-color .2s ease;box-sizing:border-box}html.dark .custom-select-trigger[data-v-3554ed88]{background:rgba(22,22,24,.75);border:1px solid #34343a}.custom-select-trigger[data-v-3554ed88]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .custom-select-trigger[data-v-3554ed88]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.custom-select.is-open .custom-select-trigger[data-v-3554ed88]{border-color:var(--el-color-primary)}.custom-select-value[data-v-3554ed88]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-3554ed88],.custom-select-value.is-placeholder[data-v-3554ed88]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-3554ed88]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-3554ed88]{transform:rotate(180deg)}.custom-select-dropdown[data-v-3554ed88]{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:hsla(0,0%,100%,.88);border:1px solid #d9dce2;border-radius:8px;box-shadow:none;z-index:2000;overflow:hidden}html.dark .custom-select-dropdown[data-v-3554ed88]{background:rgba(22,22,24,.9);border:1px solid #34343a}.custom-select-option[data-v-3554ed88]{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-3554ed88]:hover{background:rgba(0,0,0,.04)}html.dark .custom-select-option[data-v-3554ed88]:hover{background:hsla(0,0%,100%,.08);color:var(--el-text-color-primary)}.custom-select-option.is-selected[data-v-3554ed88]{color:var(--el-color-primary);font-weight:500}html.dark .custom-select-option.is-selected[data-v-3554ed88]{background:rgba(74,93,155,.38);color:#fff;font-weight:600}html.dark .custom-select-option.is-selected[data-v-3554ed88]:hover{background:rgba(94,115,181,.48);color:#fff}.option-icon[data-v-3554ed88]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-3554ed88],.dropdown-fade-leave-active[data-v-3554ed88]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-3554ed88],.dropdown-fade-leave-to[data-v-3554ed88]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-68503f89]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-68503f89]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-68503f89]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-68503f89]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.inline-warning-icon[data-v-68503f89]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-warning-icon[data-v-68503f89]:hover{color:var(--el-color-primary)}.inline-help-icon[data-v-68503f89]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-help-icon[data-v-68503f89]:hover{color:var(--el-color-primary)}.add-btn[data-v-68503f89]{border-radius:8px;background-color:rgba(37,99,235,.9)!important;border-color:rgba(37,99,235,.9)!important;color:#fff!important;transition:background-color .2s ease,border-color .2s ease}html.dark .add-btn[data-v-68503f89]{background-color:rgba(59,130,246,.9)!important;border-color:rgba(59,130,246,.9)!important}.add-btn[data-v-68503f89]:hover{background-color:rgba(37,99,235,.78)!important;border-color:rgba(37,99,235,.78)!important}html.dark .add-btn[data-v-68503f89]:hover{background-color:rgba(59,130,246,.78)!important;border-color:rgba(59,130,246,.78)!important}.header-actions[data-v-68503f89]{display:flex;gap:12px}.header-actions[data-v-68503f89] .el-button{border-radius:8px}.channel-group[data-v-68503f89]{margin-bottom:32px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);overflow:hidden;box-shadow:var(--glass-shadow)}.group-header[data-v-68503f89]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.group-title[data-v-68503f89]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-68503f89]{font-size:20px;color:var(--el-color-primary)}.channel-count[data-v-68503f89]{font-size:12px}.load-balance-switch[data-v-68503f89]{display:flex;align-items:center;gap:8px}.switch-label[data-v-68503f89]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-68503f89]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-68503f89]{background:var(--glass-bg);border-radius:10px;border:1px solid var(--glass-border);overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:var(--glass-shadow)}.channel-card[data-v-68503f89],.channel-group[data-v-68503f89]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.card-glow[data-v-68503f89]{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-68503f89]{background:radial-gradient(circle,rgba(84,169,235,.2) 0,transparent 70%)}.channel-card.cfr2 .card-glow[data-v-68503f89]{background:radial-gradient(circle,rgba(246,130,31,.2) 0,transparent 70%)}.channel-card.s3 .card-glow[data-v-68503f89]{background:radial-gradient(circle,rgba(86,154,49,.2) 0,transparent 70%)}.channel-card.discord .card-glow[data-v-68503f89]{background:radial-gradient(circle,rgba(88,101,242,.2) 0,transparent 70%)}.channel-card.huggingface .card-glow[data-v-68503f89]{background:radial-gradient(circle,rgba(255,210,30,.2) 0,transparent 70%)}.channel-card.webdav .card-glow[data-v-68503f89]{background:radial-gradient(circle,rgba(20,184,166,.2) 0,transparent 70%)}.channel-card[data-v-68503f89]:hover{border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.channel-card.disabled[data-v-68503f89]{opacity:.6;background:var(--el-fill-color-lighter)}.card-header[data-v-68503f89]{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.card-title[data-v-68503f89]{display:flex;align-items:center;gap:8px}.channel-name[data-v-68503f89]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-68503f89]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-68503f89]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-68503f89]{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-68503f89]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-68503f89]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-68503f89]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-68503f89] .el-progress{margin-bottom:4px}.quota-text[data-v-68503f89]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-68503f89]{display:flex;justify-content:flex-end;gap:4px;padding:10px 16px;border-top:1px solid var(--glass-header-border);background:var(--glass-header-bg);margin-top:auto}.empty-tip[data-v-68503f89]{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-68503f89]{font-size:32px}.channel-warning[data-v-68503f89]{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)}.channel-type-option[data-v-68503f89]{display:inline-flex;align-items:center;gap:8px;line-height:1}.select-option-icon[data-v-68503f89]{width:16px;height:16px;font-size:16px;text-align:center}.form-warning[data-v-68503f89]{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-68503f89]{width:100%}.quota-status[data-v-68503f89] .el-progress{margin-bottom:8px}.quota-info[data-v-68503f89]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border:1px solid var(--glass-border);border-radius:6px}.quota-info.quota-warning[data-v-68503f89]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-68503f89]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-68503f89]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-68503f89]{animation:fa-spin-68503f89 1s linear infinite}@keyframes fa-spin-68503f89{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-68503f89]{padding:12px}.page-header[data-v-68503f89]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-68503f89]{grid-template-columns:1fr;padding:12px}.group-header[data-v-68503f89]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-68503f89] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-68503f89] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.floating-save-btn[data-v-a230355c]{position:fixed;right:var(--floating-btn-right,24px);bottom:var(--floating-btn-bottom,24px);display:flex;align-items:center;gap:6px;padding:10px 18px;background:var(--floating-btn-bg);color:var(--floating-btn-color);border-radius:50px;cursor:pointer;box-shadow:var(--floating-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:100;font-weight:500;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.floating-save-btn[data-v-a230355c]:hover{box-shadow:var(--floating-btn-shadow-hover)}.floating-save-btn[data-v-a230355c]:active{transform:translateY(-1px);box-shadow:var(--floating-btn-shadow)}.floating-save-btn.is-loading[data-v-a230355c]{cursor:not-allowed;opacity:.8}.floating-save-btn.is-loading[data-v-a230355c]:hover{transform:none}.floating-save-btn svg[data-v-a230355c]{font-size:14px}.fade-up-enter-active[data-v-a230355c]{transition:all .3s ease-out}.fade-up-leave-active[data-v-a230355c]{transition:all .2s ease-in}.fade-up-enter-from[data-v-a230355c]{opacity:0;transform:translateY(20px)}.fade-up-leave-to[data-v-a230355c]{opacity:0;transform:translateY(10px)}@media (max-width:768px){.floating-save-btn[data-v-a230355c]{right:16px;bottom:16px;padding:10px 16px;font-size:12px}.floating-save-btn svg[data-v-a230355c]{font-size:12px}}@media (max-width:480px){.floating-save-btn[data-v-a230355c]{right:12px;bottom:12px;padding:12px;border-radius:50%}.save-text[data-v-a230355c]{display:none}.floating-save-btn svg[data-v-a230355c]{font-size:16px}}.security-settings[data-v-f87cbcb2]{padding:20px;min-height:500px}.first-settings[data-v-f87cbcb2]{margin-bottom:40px}.first-title[data-v-f87cbcb2]{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-f87cbcb2]{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-f87cbcb2] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-f87cbcb2] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-f87cbcb2] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-f87cbcb2] .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-f87cbcb2] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-f87cbcb2] .el-input,.first-settings[data-v-f87cbcb2] .el-select{width:100%}.first-settings[data-v-f87cbcb2] .el-switch{--el-switch-on-color:var(--el-color-primary)}.form-item-hint[data-v-f87cbcb2]{display:inline-block;margin-left:8px;font-size:14px;color:var(--el-text-color-regular);line-height:32px;vertical-align:middle}.query-param-list[data-v-f87cbcb2]{display:flex;flex-direction:column;gap:10px;width:100%}.query-param-row[data-v-f87cbcb2]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,1.4fr) auto;gap:8px;align-items:center;width:100%}.response-field-row[data-v-f87cbcb2]{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;gap:4px;align-items:center;width:100%}.response-field-row[data-v-f87cbcb2] .el-button+.el-button{margin-left:0}.token-title[data-v-f87cbcb2]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-f87cbcb2]{margin-left:5px}.token-table-container[data-v-f87cbcb2]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-f87cbcb2]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border)}.token-table[data-v-f87cbcb2] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-f87cbcb2] .el-table__body-wrapper{border-radius:0 0 12px 12px;background:transparent}.token-table[data-v-f87cbcb2] .el-table{border-radius:12px;background:transparent}.token-table[data-v-f87cbcb2] .el-table__header{background-color:rgba(0,0,0,.04)}.token-table[data-v-f87cbcb2] .el-table th{background-color:rgba(0,0,0,.04)!important;border-bottom:1px solid #d9dce2;text-align:center}.token-table[data-v-f87cbcb2] .el-table td{background-color:transparent!important;border-bottom:1px solid #d9dce2}html.dark .token-table[data-v-f87cbcb2] .el-table th{background-color:hsla(0,0%,100%,.05)!important;border-bottom:1px solid #34343a}html.dark .token-table[data-v-f87cbcb2] .el-table td{border-bottom:1px solid #34343a}.token-table[data-v-f87cbcb2] .el-table__row:hover td{background-color:rgba(0,0,0,.03)!important}html.dark .token-table[data-v-f87cbcb2] .el-table__row:hover td{background-color:hsla(0,0%,100%,.05)!important}.token-table[data-v-f87cbcb2] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-f87cbcb2]{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px;padding:8px 4px;min-height:40px;text-align:center}.action-buttons[data-v-f87cbcb2]{gap:8px}.action-button[data-v-f87cbcb2]{margin-left:0}.permission-tag[data-v-f87cbcb2]{margin:2px!important}.token-display[data-v-f87cbcb2]{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-f87cbcb2]{padding:15px;padding-bottom:80px}.first-settings[data-v-f87cbcb2] .el-form{padding:12px 15px}.first-settings[data-v-f87cbcb2] .el-form-item__content{max-width:100%}.query-param-row[data-v-f87cbcb2]{grid-template-columns:1fr}.response-field-row[data-v-f87cbcb2]{grid-template-columns:1fr auto auto auto}.token-table-container[data-v-f87cbcb2]{padding:0 10px}.table-cell-content[data-v-f87cbcb2]{padding:6px 2px;min-height:36px}.token-display[data-v-f87cbcb2]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-f87cbcb2]{padding:0 5px}.table-cell-content[data-v-f87cbcb2]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-f87cbcb2]{padding:4px 8px;font-size:12px}.permission-tag[data-v-f87cbcb2]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-f87cbcb2]{padding:10px 0}.token-result .el-form-item[data-v-f87cbcb2]{margin-bottom:20px}.dialog-footer[data-v-f87cbcb2]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-f87cbcb2],.fade-slide-leave-active[data-v-f87cbcb2]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-f87cbcb2],.fade-slide-leave-to[data-v-f87cbcb2]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-f87cbcb2],.fade-slide-leave-from[data-v-f87cbcb2]{opacity:1;transform:translateY(0)}[data-v-f87cbcb2] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);border:1px solid var(--glass-border);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-5fc03908]{padding:20px;min-height:500px}.first-settings[data-v-5fc03908]{margin-bottom:40px}.first-title[data-v-5fc03908]{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-5fc03908]{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-5fc03908] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.first-settings[data-v-5fc03908] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-5fc03908] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-5fc03908] .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-5fc03908] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-5fc03908] .el-form-item:has(.el-textarea) .el-form-item__content{max-width:600px}.first-settings[data-v-5fc03908] .el-input,.first-settings[data-v-5fc03908] .el-select{width:100%}.first-settings[data-v-5fc03908] .el-switch{--el-switch-on-color:var(--el-color-primary)}.announcement-refresh-option[data-v-5fc03908]{width:100%;margin-top:10px;display:flex;justify-content:flex-start}.first-settings[data-v-5fc03908] .el-form-item:has(.announcement-refresh-option) .el-form-item__content{flex-direction:column;align-items:flex-start}@media (max-width:768px){.page-settings[data-v-5fc03908]{padding:15px;padding-bottom:80px}.first-settings[data-v-5fc03908] .el-form{padding:12px 15px}.first-settings[data-v-5fc03908] .el-form-item__content{max-width:100%}}.others-settings[data-v-69ae97d8]{padding:20px;min-height:500px}.first-settings[data-v-69ae97d8]{margin-bottom:40px}.first-title[data-v-69ae97d8]{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-69ae97d8]{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-69ae97d8] .el-form{padding:20px 24px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-69ae97d8] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-69ae97d8] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-69ae97d8] .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-69ae97d8] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-69ae97d8] .el-input{width:100%}.first-settings[data-v-69ae97d8] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.others-settings[data-v-69ae97d8]{padding:15px;padding-bottom:80px}.first-settings[data-v-69ae97d8] .el-form{padding:12px 15px}.first-settings[data-v-69ae97d8] .el-form-item__content{max-width:100%}}.container[data-v-036a2d40]{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-036a2d40]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-036a2d40]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-036a2d40]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-036a2d40]{font-size:.95em}}.header-content[data-v-036a2d40]:hover{background:hsla(0,0%,100%,.72);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-036a2d40]:hover{background:rgba(22,22,24,.75);box-shadow:none}.header-icon[data-v-036a2d40]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-036a2d40]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-036a2d40]{display:flex;gap:10px}.main-container[data-v-036a2d40]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-036a2d40]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-036a2d40],.main-container[data-v-036a2d40]{width:auto;margin-left:65px;margin-right:15px;padding:0;min-height:calc(100vh - 60px);box-sizing:border-box}} \ No newline at end of file diff --git a/frontend-dist/css/647.4c84bc35.css.gz b/frontend-dist/css/647.4c84bc35.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a992a6db0461a59269b3c254c8b39c93e616b459 GIT binary patch literal 11197 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

KIaD+4>Q{r1i^$Tq-=HE+Xq12PzLMc(`vPH z2ie62HBn$cS&4_Wud(-)`0C2&%Sw29it6qEU6OcpzReJ--r6n5uM&=9b=O*#Fhd7g z=2xt&@&4^+D+1ssqa=sy(+ad`_w4yw*X_S&S_gr?*`2vjNM^o0qTT;YvG0=mR{fgV zwdUTzfB7reeFG7 z-M8yMY#eDZ>Bn8>3>nz(G%von`;-~&CIwm8R}y6EZqcf1=8imv`0kemUw`W`gl*QF zfqBIzUn|TmyKz96eZz1M;n6n?)9-!m-N$XvN0$HB?Hci<5%@jxO6I|LH})e#Ygg_t q?xe5G^y_a^oqX$Yd+jf|;oamPbw=+-.el-tooltip[data-v-5fc5ce27],.action-buttons>.restore-section[data-v-5fc5ce27],.restore-section[data-v-5fc5ce27]{flex:1;width:100%}.action-btn[data-v-5fc5ce27]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-5fc5ce27]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-5fc5ce27]{position:relative;background:var(--glass-bg);border-radius:16px;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);transition:all .3s ease;height:300px;overflow:hidden;cursor:pointer}.card-bg-media[data-v-5fc5ce27]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-5fc5ce27],.card-bg-media[data-v-5fc5ce27] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-5fc5ce27] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-5fc5ce27]{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-5fc5ce27]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-5fc5ce27]{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,.5) 0,rgba(0,0,0,.2) 55%,transparent);z-index:2}.file-card-header .fa-icon[data-v-5fc5ce27]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-5fc5ce27]{color:#f59e0b}.info-card-footer[data-v-5fc5ce27]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-5fc5ce27]{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-5fc5ce27]{font-size:12px;color:#fafafa;text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-5fc5ce27]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-5fc5ce27]{height:450px}}.file-info-card[data-v-5fc5ce27]:hover{box-shadow:var(--glass-shadow)}.file-info-card:hover .card-bg-media[data-v-5fc5ce27]{transform:scale(1)}@media (max-width:768px){.status-panel[data-v-5fc5ce27]{padding:15px}.charts-section[data-v-5fc5ce27],.overview-cards[data-v-5fc5ce27]{grid-template-columns:1fr;gap:15px}.trend-chart-header[data-v-5fc5ce27]{align-items:stretch}.chart-title[data-v-5fc5ce27]{width:100%}.trend-controls[data-v-5fc5ce27]{width:100%;justify-content:stretch}.trend-date-dialog[data-v-5fc5ce27] .el-dialog__body{padding:12px 14px 18px}.trend-group-switch[data-v-5fc5ce27]{width:100%}.trend-group-switch[data-v-5fc5ce27] .el-radio-button{flex:1}.trend-group-switch[data-v-5fc5ce27] .el-radio-button__inner{width:100%;padding:0 10px}.line-chart-wrapper[data-v-5fc5ce27],.trend-empty-state[data-v-5fc5ce27]{height:280px}.file-info-section[data-v-5fc5ce27]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-5fc5ce27]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-5fc5ce27]{font-size:24px}.action-buttons[data-v-5fc5ce27]{flex-direction:column;gap:12px}.action-btn[data-v-5fc5ce27]{width:100%;min-width:unset}}.stats-fill[data-v-5fc5ce27]{animation:fillAnimation-5fc5ce27 1s ease-out}@keyframes fillAnimation-5fc5ce27{0%{width:0}}.progress-container[data-v-5fc5ce27]{width:100%;padding:20px;text-align:center}.progress-header[data-v-5fc5ce27]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.progress-phase[data-v-5fc5ce27]{font-size:16px;font-weight:600;color:var(--admin-container-color)}.progress-percentage[data-v-5fc5ce27]{font-size:18px;font-weight:700;color:var(--admin-purple)}.progress-bar[data-v-5fc5ce27]{margin-bottom:16px}.progress-bar[data-v-5fc5ce27] .el-progress-bar__outer{background-color:rgba(139,92,246,.1);border-radius:6px}.progress-bar[data-v-5fc5ce27] .el-progress-bar__inner{background:#6366f1;border-radius:6px;transition:width .3s ease}.progress-details[data-v-5fc5ce27]{display:flex;justify-content:center;gap:24px;margin-bottom:12px;flex-wrap:wrap}.progress-count[data-v-5fc5ce27],.progress-time[data-v-5fc5ce27]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.progress-count .fa-icon[data-v-5fc5ce27],.progress-time .fa-icon[data-v-5fc5ce27]{color:var(--admin-purple);font-size:12px}.progress-message[data-v-5fc5ce27]{font-size:13px;color:#888;margin-bottom:16px;min-height:20px}.cancel-btn[data-v-5fc5ce27]{margin-top:12px;border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:#ef4444}.cancel-btn[data-v-5fc5ce27]:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);box-shadow:none}.cancel-btn .fa-icon[data-v-5fc5ce27]{margin-right:8px}.error-container[data-v-5fc5ce27]{width:100%;padding:20px;display:flex;flex-direction:column;align-items:center;gap:16px;background:rgba(239,68,68,.05);border-radius:12px;border:1px solid rgba(239,68,68,.2)}.error-icon[data-v-5fc5ce27]{width:48px;height:48px;border-radius:50%;background:rgba(239,68,68,.1);display:flex;align-items:center;justify-content:center;color:#ef4444;font-size:24px}.error-content[data-v-5fc5ce27]{text-align:center}.error-message[data-v-5fc5ce27]{font-size:15px;font-weight:600;color:#ef4444;margin-bottom:8px}.error-suggestion[data-v-5fc5ce27]{font-size:13px;color:#666}.error-actions[data-v-5fc5ce27]{display:flex;gap:12px}.error-actions .el-button[data-v-5fc5ce27]{border-radius:10px;padding:10px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:100px}.error-actions .el-button--primary[data-v-5fc5ce27]{background:#6366f1;border:none;color:#fff}.error-actions .el-button--primary[data-v-5fc5ce27]:hover{background:#4f46e5;box-shadow:none}.error-actions .el-button--default[data-v-5fc5ce27]{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);color:var(--el-text-color-regular)}.error-actions .el-button--default[data-v-5fc5ce27]:hover{background:hsla(0,0%,100%,.15);border-color:#4a4a52;box-shadow:none}.error-actions .fa-icon[data-v-5fc5ce27]{margin-right:8px}html.dark .progress-count[data-v-5fc5ce27],html.dark .progress-time[data-v-5fc5ce27]{color:#aaa}html.dark .progress-message[data-v-5fc5ce27]{color:#999}html.dark .error-container[data-v-5fc5ce27]{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}html.dark .error-suggestion[data-v-5fc5ce27]{color:#aaa}@media (max-width:768px){.error-container[data-v-5fc5ce27],.progress-container[data-v-5fc5ce27]{padding:16px}.progress-header[data-v-5fc5ce27]{flex-direction:column;gap:8px;text-align:center}.progress-details[data-v-5fc5ce27]{flex-direction:column;gap:8px}.error-actions[data-v-5fc5ce27]{flex-direction:column;width:100%}.error-actions .el-button[data-v-5fc5ce27]{width:100%;margin: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-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}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.custom-select[data-v-56d23a4c]{position:relative}.custom-select-trigger[data-v-56d23a4c]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:8px;cursor:pointer;transition:background-color .2s ease,border-color .2s ease;box-sizing:border-box}html.dark .custom-select-trigger[data-v-56d23a4c]{background:rgba(22,22,24,.75);border:1px solid #34343a}.custom-select-trigger[data-v-56d23a4c]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .custom-select-trigger[data-v-56d23a4c]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.custom-select.is-open .custom-select-trigger[data-v-56d23a4c]{border-color:var(--el-color-primary)}.custom-select-value[data-v-56d23a4c]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-56d23a4c],.custom-select-value.is-placeholder[data-v-56d23a4c]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-56d23a4c]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-56d23a4c]{transform:rotate(180deg)}.custom-select-dropdown[data-v-56d23a4c]{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:hsla(0,0%,100%,.88);border:1px solid #d9dce2;border-radius:8px;box-shadow:none;z-index:2000;overflow:hidden}html.dark .custom-select-dropdown[data-v-56d23a4c]{background:rgba(22,22,24,.9);border:1px solid #34343a}.custom-select-option[data-v-56d23a4c]{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-56d23a4c]:hover{background:rgba(0,0,0,.04)}html.dark .custom-select-option[data-v-56d23a4c]:hover{background:hsla(0,0%,100%,.08);color:var(--el-text-color-primary)}.custom-select-option.is-selected[data-v-56d23a4c]{color:var(--el-color-primary);font-weight:500}html.dark .custom-select-option.is-selected[data-v-56d23a4c]{color:var(--el-color-primary-light-8)}html.dark .custom-select-option.is-selected[data-v-56d23a4c]:hover{background:rgba(74,93,155,.38);color:#fff}.option-icon[data-v-56d23a4c]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-56d23a4c],.dropdown-fade-leave-active[data-v-56d23a4c]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-56d23a4c],.dropdown-fade-leave-to[data-v-56d23a4c]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-290ee17a]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-290ee17a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-290ee17a]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-290ee17a]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.inline-warning-icon[data-v-290ee17a]{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-warning-icon[data-v-290ee17a]:hover{color:var(--el-color-primary)}.add-btn[data-v-290ee17a]{border-radius:8px;background-color:rgba(37,99,235,.9)!important;border-color:rgba(37,99,235,.9)!important;color:#fff!important;transition:background-color .2s ease,border-color .2s ease}html.dark .add-btn[data-v-290ee17a]{background-color:rgba(59,130,246,.9)!important;border-color:rgba(59,130,246,.9)!important}.add-btn[data-v-290ee17a]:hover{background-color:rgba(37,99,235,.78)!important;border-color:rgba(37,99,235,.78)!important}html.dark .add-btn[data-v-290ee17a]:hover{background-color:rgba(59,130,246,.78)!important;border-color:rgba(59,130,246,.78)!important}.header-actions[data-v-290ee17a]{display:flex;gap:12px}.header-actions[data-v-290ee17a] .el-button{border-radius:8px}.channel-group[data-v-290ee17a]{margin-bottom:32px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);overflow:hidden;box-shadow:var(--glass-shadow)}.group-header[data-v-290ee17a]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.group-title[data-v-290ee17a]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-290ee17a]{font-size:20px;color:var(--el-color-primary)}.channel-count[data-v-290ee17a]{font-size:12px}.load-balance-switch[data-v-290ee17a]{display:flex;align-items:center;gap:8px}.switch-label[data-v-290ee17a]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-290ee17a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-290ee17a]{background:var(--glass-bg);border-radius:10px;border:1px solid var(--glass-border);overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:var(--glass-shadow)}.card-glow[data-v-290ee17a]{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-290ee17a]{background:radial-gradient(circle,rgba(84,169,235,.2) 0,transparent 70%)}.channel-card.cfr2 .card-glow[data-v-290ee17a]{background:radial-gradient(circle,rgba(246,130,31,.2) 0,transparent 70%)}.channel-card.s3 .card-glow[data-v-290ee17a]{background:radial-gradient(circle,rgba(86,154,49,.2) 0,transparent 70%)}.channel-card.discord .card-glow[data-v-290ee17a]{background:radial-gradient(circle,rgba(88,101,242,.2) 0,transparent 70%)}.channel-card.huggingface .card-glow[data-v-290ee17a]{background:radial-gradient(circle,rgba(255,210,30,.2) 0,transparent 70%)}.channel-card.webdav .card-glow[data-v-290ee17a]{background:radial-gradient(circle,rgba(20,184,166,.2) 0,transparent 70%)}.channel-card[data-v-290ee17a]:hover{border-color:var(--glass-border);box-shadow:var(--glass-shadow);background:var(--glass-bg)}.channel-card.disabled[data-v-290ee17a]{opacity:.6;background:var(--el-fill-color-lighter)}.card-header[data-v-290ee17a]{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--glass-header-bg);border-bottom:1px solid var(--glass-header-border)}.card-title[data-v-290ee17a]{display:flex;align-items:center;gap:8px}.channel-name[data-v-290ee17a]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-290ee17a]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-290ee17a]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-290ee17a]{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-290ee17a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-290ee17a]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-290ee17a]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-290ee17a] .el-progress{margin-bottom:4px}.quota-text[data-v-290ee17a]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-290ee17a]{display:flex;justify-content:flex-end;gap:4px;padding:10px 16px;border-top:1px solid var(--glass-header-border);background:var(--glass-header-bg);margin-top:auto}.empty-tip[data-v-290ee17a]{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-290ee17a]{font-size:32px}.channel-warning[data-v-290ee17a]{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)}.channel-type-option[data-v-290ee17a]{display:inline-flex;align-items:center;gap:8px;line-height:1}.select-option-icon[data-v-290ee17a]{width:16px;height:16px;font-size:16px;text-align:center}.form-warning[data-v-290ee17a]{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-290ee17a]{width:100%}.quota-status[data-v-290ee17a] .el-progress{margin-bottom:8px}.quota-info[data-v-290ee17a]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border:1px solid var(--glass-border);border-radius:6px}.quota-info.quota-warning[data-v-290ee17a]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-290ee17a]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-290ee17a]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-290ee17a]{animation:fa-spin-290ee17a 1s linear infinite}@keyframes fa-spin-290ee17a{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-290ee17a]{padding:12px}.page-header[data-v-290ee17a]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-290ee17a]{grid-template-columns:1fr;padding:12px}.group-header[data-v-290ee17a]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-290ee17a] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-290ee17a] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.floating-save-btn[data-v-a230355c]{position:fixed;right:var(--floating-btn-right,24px);bottom:var(--floating-btn-bottom,24px);display:flex;align-items:center;gap:6px;padding:10px 18px;background:var(--floating-btn-bg);color:var(--floating-btn-color);border-radius:50px;cursor:pointer;box-shadow:var(--floating-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:100;font-weight:500;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.floating-save-btn[data-v-a230355c]:hover{box-shadow:var(--floating-btn-shadow-hover)}.floating-save-btn[data-v-a230355c]:active{transform:translateY(-1px);box-shadow:var(--floating-btn-shadow)}.floating-save-btn.is-loading[data-v-a230355c]{cursor:not-allowed;opacity:.8}.floating-save-btn.is-loading[data-v-a230355c]:hover{transform:none}.floating-save-btn svg[data-v-a230355c]{font-size:14px}.fade-up-enter-active[data-v-a230355c]{transition:all .3s ease-out}.fade-up-leave-active[data-v-a230355c]{transition:all .2s ease-in}.fade-up-enter-from[data-v-a230355c]{opacity:0;transform:translateY(20px)}.fade-up-leave-to[data-v-a230355c]{opacity:0;transform:translateY(10px)}@media (max-width:768px){.floating-save-btn[data-v-a230355c]{right:16px;bottom:16px;padding:10px 16px;font-size:12px}.floating-save-btn svg[data-v-a230355c]{font-size:12px}}@media (max-width:480px){.floating-save-btn[data-v-a230355c]{right:12px;bottom:12px;padding:12px;border-radius:50%}.save-text[data-v-a230355c]{display:none}.floating-save-btn svg[data-v-a230355c]{font-size:16px}}.security-settings[data-v-d23348da]{padding:20px;min-height:500px}.first-settings[data-v-d23348da]{margin-bottom:40px}.first-title[data-v-d23348da]{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-d23348da]{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-d23348da] .el-form{padding:20px 24px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-d23348da] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-d23348da] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-d23348da] .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-d23348da] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-d23348da] .el-input,.first-settings[data-v-d23348da] .el-select{width:100%}.first-settings[data-v-d23348da] .el-switch{--el-switch-on-color:var(--el-color-primary)}.form-item-hint[data-v-d23348da]{display:inline-block;margin-left:8px;font-size:14px;color:var(--el-text-color-regular);line-height:32px;vertical-align:middle}.query-param-list[data-v-d23348da]{display:flex;flex-direction:column;gap:10px;width:100%}.query-param-row[data-v-d23348da]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,1.4fr) auto;gap:8px;align-items:center;width:100%}.response-field-row[data-v-d23348da]{display:grid;grid-template-columns:minmax(180px,1fr) auto auto auto;gap:4px;align-items:center;width:100%}.response-field-row[data-v-d23348da] .el-button+.el-button{margin-left:0}.token-title[data-v-d23348da]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-d23348da]{margin-left:5px}.token-table-container[data-v-d23348da]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-d23348da]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow);background:var(--glass-bg);border:1px solid var(--glass-border)}.token-table[data-v-d23348da] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-d23348da] .el-table__body-wrapper{border-radius:0 0 12px 12px;background:transparent}.token-table[data-v-d23348da] .el-table{border-radius:12px;background:transparent}.token-table[data-v-d23348da] .el-table__header{background-color:rgba(0,0,0,.04)}.token-table[data-v-d23348da] .el-table th{background-color:rgba(0,0,0,.04)!important;border-bottom:1px solid #d9dce2;text-align:center}.token-table[data-v-d23348da] .el-table td{background-color:transparent!important;border-bottom:1px solid #d9dce2}html.dark .token-table[data-v-d23348da] .el-table th{background-color:hsla(0,0%,100%,.05)!important;border-bottom:1px solid #34343a}html.dark .token-table[data-v-d23348da] .el-table td{border-bottom:1px solid #34343a}.token-table[data-v-d23348da] .el-table__row:hover td{background-color:rgba(0,0,0,.03)!important}html.dark .token-table[data-v-d23348da] .el-table__row:hover td{background-color:hsla(0,0%,100%,.05)!important}.token-table[data-v-d23348da] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-d23348da]{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px;padding:8px 4px;min-height:40px;text-align:center}.action-buttons[data-v-d23348da]{gap:8px}.action-button[data-v-d23348da]{margin-left:0}.permission-tag[data-v-d23348da]{margin:2px!important}.token-display[data-v-d23348da]{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-d23348da]{padding:15px;padding-bottom:80px}.first-settings[data-v-d23348da] .el-form{padding:12px 15px}.first-settings[data-v-d23348da] .el-form-item__content{max-width:100%}.query-param-row[data-v-d23348da]{grid-template-columns:1fr}.response-field-row[data-v-d23348da]{grid-template-columns:1fr auto auto auto}.token-table-container[data-v-d23348da]{padding:0 10px}.table-cell-content[data-v-d23348da]{padding:6px 2px;min-height:36px}.token-display[data-v-d23348da]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-d23348da]{padding:0 5px}.table-cell-content[data-v-d23348da]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-d23348da]{padding:4px 8px;font-size:12px}.permission-tag[data-v-d23348da]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-d23348da]{padding:10px 0}.token-result .el-form-item[data-v-d23348da]{margin-bottom:20px}.dialog-footer[data-v-d23348da]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-d23348da],.fade-slide-leave-active[data-v-d23348da]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-d23348da],.fade-slide-leave-to[data-v-d23348da]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-d23348da],.fade-slide-leave-from[data-v-d23348da]{opacity:1;transform:translateY(0)}[data-v-d23348da] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);border:1px solid var(--glass-border);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-65cb1659]{padding:20px;min-height:500px}.first-settings[data-v-65cb1659]{margin-bottom:40px}.first-title[data-v-65cb1659]{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-65cb1659]{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-65cb1659] .el-form{padding:20px 24px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.first-settings[data-v-65cb1659] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-65cb1659] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-65cb1659] .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-65cb1659] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-65cb1659] .el-form-item:has(.el-textarea) .el-form-item__content{max-width:600px}.first-settings[data-v-65cb1659] .el-input,.first-settings[data-v-65cb1659] .el-select{width:100%}.first-settings[data-v-65cb1659] .el-switch{--el-switch-on-color:var(--el-color-primary)}.announcement-refresh-option[data-v-65cb1659]{width:100%;margin-top:10px;display:flex;justify-content:flex-start}.first-settings[data-v-65cb1659] .el-form-item:has(.announcement-refresh-option) .el-form-item__content{flex-direction:column;align-items:flex-start}@media (max-width:768px){.page-settings[data-v-65cb1659]{padding:15px;padding-bottom:80px}.first-settings[data-v-65cb1659] .el-form{padding:12px 15px}.first-settings[data-v-65cb1659] .el-form-item__content{max-width:100%}}.others-settings[data-v-3724133b]{padding:20px;min-height:500px}.first-settings[data-v-3724133b]{margin-bottom:40px}.first-title[data-v-3724133b]{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-3724133b]{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-3724133b] .el-form{padding:20px 24px;background:var(--glass-bg);border-radius:16px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow)}.first-settings[data-v-3724133b] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-3724133b] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-3724133b] .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-3724133b] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-3724133b] .el-input{width:100%}.first-settings[data-v-3724133b] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.others-settings[data-v-3724133b]{padding:15px;padding-bottom:80px}.first-settings[data-v-3724133b] .el-form{padding:12px 15px}.first-settings[data-v-3724133b] .el-form-item__content{max-width:100%}}.container[data-v-036a2d40]{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-036a2d40]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-036a2d40]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-036a2d40]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-036a2d40]{font-size:.95em}}.header-content[data-v-036a2d40]:hover{background:hsla(0,0%,100%,.72);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-036a2d40]:hover{background:rgba(22,22,24,.75);box-shadow:none}.header-icon[data-v-036a2d40]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-036a2d40]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-036a2d40]{display:flex;gap:10px}.main-container[data-v-036a2d40]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-036a2d40]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-036a2d40],.main-container[data-v-036a2d40]{width:auto;margin-left:65px;margin-right:15px;padding:0;min-height:calc(100vh - 60px);box-sizing:border-box}} \ No newline at end of file diff --git a/frontend-dist/css/888.af58b0bb.css.gz b/frontend-dist/css/888.af58b0bb.css.gz deleted file mode 100644 index dc56da437b3032731c196ed8ecfd3bd597f0e885..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11138 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 UbO;T%QncRxKSP6-sN@d;0M{9rT>t<8 diff --git a/frontend-dist/css/903.7a90c42f.css.gz b/frontend-dist/css/903.7a90c42f.css.gz deleted file mode 100644 index 883913e5392ea69447d987c7c1c4589170a96a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15313 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 diff --git a/frontend-dist/css/967.3f3c6dac.css b/frontend-dist/css/967.3f3c6dac.css deleted file mode 100644 index 00f822bb..00000000 --- a/frontend-dist/css/967.3f3c6dac.css +++ /dev/null @@ -1 +0,0 @@ -.not-found-container[data-v-59d53856]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,#6366f1);color:var(--text-color,#333)}.background-wrapper[data-v-59d53856]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.not-found-content[data-v-59d53856]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:none}.back-button-wrapper[data-v-59d53856]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-59d53856]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-59d53856]:hover{transform:scale(1.1);box-shadow:none;background:var(--primary-color,#2563eb);color:#fff}.error-animation[data-v-59d53856]{margin-bottom:2rem;position:relative}.error-number[data-v-59d53856]{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,#2563eb)}.error-number span[data-v-59d53856]{display:inline-block;animation:bounce-59d53856 2s infinite;color:var(--not-found-title-text-color,#2563eb)}.error-number .four[data-v-59d53856]:first-child{animation-delay:-.5s}.error-number .zero[data-v-59d53856]{animation-delay:-.25s;color:#f56c6c;-webkit-text-fill-color:#f56c6c}.error-number .four[data-v-59d53856]:last-child{animation-delay:0s}.error-image[data-v-59d53856]{display:flex;justify-content:center;margin:1.5rem 0}.floating-image[data-v-59d53856]{width:100px;height:100px;-o-object-fit:contain;object-fit:contain;animation:float-59d53856 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;border:1px solid hsla(0,0%,100%,.2)}.error-info[data-v-59d53856]{animation:fadeInUp-59d53856 1s ease-out .5s both}.error-title[data-v-59d53856]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);color:var(--not-found-title-text-color,#2563eb)}.error-description[data-v-59d53856]{font-size:1.1rem;line-height:1.6;margin-bottom:2rem;opacity:.8;color:var(--text-color-secondary,#666)}.error-actions[data-v-59d53856]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-59d53856]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:none;border:none;min-width:140px}.primary-btn[data-v-59d53856]{background:var(--primary-color,#2563eb);color:#fff}.secondary-btn[data-v-59d53856]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-59d53856]:hover{box-shadow:none}.btn-icon[data-v-59d53856]{margin-right:8px}.help-links[data-v-59d53856]{animation:fadeInUp-59d53856 1s ease-out 1s both}.help-text[data-v-59d53856]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-59d53856]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-59d53856]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(37,99,235,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-59d53856]:hover{background:var(--primary-color,#2563eb);color:#fff;box-shadow:none}.floating-elements[data-v-59d53856]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-59d53856]{position:absolute;background:rgba(37,99,235,.1);border-radius:50%;animation:floatShapes-59d53856 8s ease-in-out infinite}.shape-1[data-v-59d53856]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-59d53856]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-59d53856]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-59d53856]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-59d53856]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes bounce-59d53856{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-15px)}60%{transform:translateY(-8px)}}@keyframes float-59d53856{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-15px) rotate(5deg)}}@keyframes floatShapes-59d53856{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-59d53856{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.not-found-content[data-v-59d53856]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-59d53856]{top:-20px;right:-20px}.error-number[data-v-59d53856]{font-size:4rem;gap:.3rem}.error-title[data-v-59d53856]{font-size:1.5rem}.error-description[data-v-59d53856]{font-size:1rem}.error-actions[data-v-59d53856]{flex-direction:column;align-items:center}.action-btn[data-v-59d53856]{width:200px}.quick-links[data-v-59d53856]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-59d53856]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}.floating-image[data-v-59d53856]{width:80px;height:80px;border-radius:15px;padding:8px}}@media (prefers-color-scheme:dark){.not-found-container[data-v-59d53856]{background:var(--bg-color,#1f1f22);color:var(--text-color,#e4e7ed)}.not-found-content[data-v-59d53856]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.error-title[data-v-59d53856]{color:var(--text-color,#e4e7ed)}.error-description[data-v-59d53856],.help-text[data-v-59d53856]{color:var(--text-color-secondary,#a1a1aa)}} \ No newline at end of file diff --git a/frontend-dist/css/967.3f3c6dac.css.gz b/frontend-dist/css/967.3f3c6dac.css.gz deleted file mode 100644 index d0f7aaf4f8121dd8cf2e7c6a8c2dd3c239114bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1580 zcmV+{2GjW;iwFP!000023awa8kFz!q{wqkYA_WN}8v;q-(reFE4^`EJfgy1hY-*g{ z?5^_PE1N(dd?b0>%PI?I=9%#`Gmq_Zp-?VPJVUAAiZTxJ&x|UH-chj60)H2Te|?vX zqa(1xQAGsf_hX!~x+>^rloxQ0X~7O0F$HBErN9-)`0rD#SpI2j0$1(hO4Lj-!6OL; zRqP#N@eVRC#7A^wSq3~#X!>@L8c+02HG-&FwBV^n}4rw6`WQ3-uHd` z;@%9P4@s+PDx3}mO=?k`6vRqY5snMURfOXYmZ_r-bQRx%Ud3OC@eIxpA{TdxK6!4to!Ly4Fj|4icVyxh0l1wIH05u>08`oG)lyY zr_impyxL+sXPl`a!)_fwF;&2TV$*QkT%5+)j&dezh0-G{vhNNC%0Od8ZcyJ_`2s1% zQH{U!g1Vzl5T;=oqYp^lm};QrtSHdn{c~^&I*S%}SXoIAFrWG*<}~Dph@pywFK%84 zsu(}a8ST1tb?&w6>Kr41MDjPJI#v~3r&~Pn=(hRB*KP0p+5%bwVjPK+y73@qg#sC6 zQdC#cuCYZlWkj;dsAFr* z@Or5`c=z35i}6%(FAeOUt*H#^RI+Ni3Em(Q*B~&J-jc%&+WZu%+OvhGDA1geDwIq|G@sf<+0(% zGN4ft8Kgos2{bhAvp>MNtB+>T7<9ubBEhgxzs9YdZNFAvcU|5L5r6CK_m1ZWMzHtx zX=jAgqf=NXxfV0p68YuA9G@V%Sq%l0z*YT!oxLi-bVLZ=wbf=ryAwvwZ+)Z{Jma(% z?R}<4C#nFi?lr=1+E0Be$lbJ3xVQ!oB6G4O?5P&>TPK4At0o3{j^a-^k#dRw7pY%kx*}iFE_3Y_+G%+TWP|HIt zTsuZr5^|7rs}R#8ln`Z9zKys&bF;i~-%E0md)~Z4hYf5Yv!A+*y>H6h>HP8Wn%EC` e{Se<{nmbG4{jnUUgc3^a%jI9PHlRk%7XSbxDi=%u diff --git a/frontend-dist/css/967.b80746a3.css b/frontend-dist/css/967.b80746a3.css new file mode 100644 index 00000000..d20aa47c --- /dev/null +++ b/frontend-dist/css/967.b80746a3.css @@ -0,0 +1 @@ +.background-image1:not([src]),.background-image2:not([src]){display:none}body:has(#bg1[src]){background-color:transparent!important}body:has(#bg1[src]) .blocked-container,body:has(#bg1[src]) .container,body:has(#bg1[src]) .login,body:has(#bg1[src]) .not-found-container,body:has(#bg1[src]) .upload-home,body:has(#bg1[src]) .whitelist-container{background:transparent!important;background-color:transparent!important}.not-found-container[data-v-59d53856]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,#6366f1);color:var(--text-color,#333)}.background-wrapper[data-v-59d53856]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.not-found-content[data-v-59d53856]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:none}.back-button-wrapper[data-v-59d53856]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-59d53856]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-59d53856]:hover{transform:scale(1.1);box-shadow:none;background:var(--primary-color,#2563eb);color:#fff}.error-animation[data-v-59d53856]{margin-bottom:2rem;position:relative}.error-number[data-v-59d53856]{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,#2563eb)}.error-number span[data-v-59d53856]{display:inline-block;animation:bounce-59d53856 2s infinite;color:var(--not-found-title-text-color,#2563eb)}.error-number .four[data-v-59d53856]:first-child{animation-delay:-.5s}.error-number .zero[data-v-59d53856]{animation-delay:-.25s;color:#f56c6c;-webkit-text-fill-color:#f56c6c}.error-number .four[data-v-59d53856]:last-child{animation-delay:0s}.error-image[data-v-59d53856]{display:flex;justify-content:center;margin:1.5rem 0}.floating-image[data-v-59d53856]{width:100px;height:100px;-o-object-fit:contain;object-fit:contain;animation:float-59d53856 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;border:1px solid hsla(0,0%,100%,.2)}.error-info[data-v-59d53856]{animation:fadeInUp-59d53856 1s ease-out .5s both}.error-title[data-v-59d53856]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);color:var(--not-found-title-text-color,#2563eb)}.error-description[data-v-59d53856]{font-size:1.1rem;line-height:1.6;margin-bottom:2rem;opacity:.8;color:var(--text-color-secondary,#666)}.error-actions[data-v-59d53856]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-59d53856]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:none;border:none;min-width:140px}.primary-btn[data-v-59d53856]{background:var(--primary-color,#2563eb);color:#fff}.secondary-btn[data-v-59d53856]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-59d53856]:hover{box-shadow:none}.btn-icon[data-v-59d53856]{margin-right:8px}.help-links[data-v-59d53856]{animation:fadeInUp-59d53856 1s ease-out 1s both}.help-text[data-v-59d53856]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-59d53856]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-59d53856]{color:var(--primary-color,#2563eb);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(37,99,235,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-59d53856]:hover{background:var(--primary-color,#2563eb);color:#fff;box-shadow:none}.floating-elements[data-v-59d53856]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-59d53856]{position:absolute;background:rgba(37,99,235,.1);border-radius:50%;animation:floatShapes-59d53856 8s ease-in-out infinite}.shape-1[data-v-59d53856]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-59d53856]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-59d53856]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-59d53856]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-59d53856]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes bounce-59d53856{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-15px)}60%{transform:translateY(-8px)}}@keyframes float-59d53856{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-15px) rotate(5deg)}}@keyframes floatShapes-59d53856{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-59d53856{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.not-found-content[data-v-59d53856]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-59d53856]{top:-20px;right:-20px}.error-number[data-v-59d53856]{font-size:4rem;gap:.3rem}.error-title[data-v-59d53856]{font-size:1.5rem}.error-description[data-v-59d53856]{font-size:1rem}.error-actions[data-v-59d53856]{flex-direction:column;align-items:center}.action-btn[data-v-59d53856]{width:200px}.quick-links[data-v-59d53856]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-59d53856]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}.floating-image[data-v-59d53856]{width:80px;height:80px;border-radius:15px;padding:8px}}@media (prefers-color-scheme:dark){.not-found-container[data-v-59d53856]{background:var(--bg-color,#1f1f22);color:var(--text-color,#e4e7ed)}.not-found-content[data-v-59d53856]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.error-title[data-v-59d53856]{color:var(--text-color,#e4e7ed)}.error-description[data-v-59d53856],.help-text[data-v-59d53856]{color:var(--text-color-secondary,#a1a1aa)}} \ No newline at end of file diff --git a/frontend-dist/css/967.b80746a3.css.gz b/frontend-dist/css/967.b80746a3.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a0d0e2f3235b73832a36e4faabac745adbb9c4f6 GIT binary patch literal 1681 zcmV;C25$KuiwFP!000023awbdj-xmb{S{WDNI}BLhCtGAnd_ccdsvP3V8A4v2Aj2= z?sP}__mxc`5DZDr?xmH+Q1z<(s_NN(hV$3G;73*fTH`%I3FB)0LyG)w*YodJgTd;# zpt7m(N5VKGmy8!5$pOptw``BDFAToUdBsJd1ZJ|qf-vBX3F-d<7XAmUy1&Z zDNGp=p7pf{%N5^KW?y1lf%1xN(Z;c#AZ!3TdBb82K(=r3d*9+Pj!WdGZ8+_!A}7_Y zhhgYmhKza_xM^(R^e}KHd397IRlG@HT9HyEFnysD2M<8 z7xXBTK-+5{C8#+$l2^2F?mr9kXD1*JxZv+?g_+cW?5GrHU(Fo|qUMweldSf4A8a%- zJT*Akam9I+VbLM!32-06i`#{6@Q-;hwsB9B``A-c9M`z2%JD<#u*U`vKN_>@(Y5n$#(+GjM$_>twL zf8PnDLs>}~Rbz(TI)I|8A|r~~;rJy#PP3hqROrrrpjC11VSs{YjKGiNy_HWQ_%y2N zmq8?Z>O^rK=P7t6*(+5o)RI;e7_C1Cx5Be%VUN|!^7+&+F{dR*f(%t0c=5}MV@271 z&S>AQo713OH>VVEz_Xtu*RiVPI^9ysqub^iU$?yvr9-eJfHJ_3>c)eTR*HzE5WKmP zb`2e*DLdh9;M)81Vngqy0eZ5P_i1P45;c+%7vy*LXLE}XT_e=t`H^%ot`40w!|SE) z5Zrf%Erhn>UK-fHT2lp)xuA``3Em(g-ykrR-jTzPQ%jfR4bG|hNc`OlULZ-%S%Jle z_bra&9tqAh2>F2Ry89U@Gql$)nW3BLKNf%&zjXvMWgDVnibVrSfdb9TO>-J;RSe-5 zhTe2`4d$*Ehu0$9z~*%EyXI_1`U_L9&-{}nzoHt&0&sx`)R2#-_&8u5Lb-pa*)nXlI=|NlAC{B;ige_;R6^3?ES8PKYU zg5+GZ2{bevvOj{bua9=n7uhCJhR5bb@Y zCnu^1uI@F$AKH(+739vY6fV921kjvpi3h61{MN}p(W*@c8af_`tk!5SXLL6(y6cR_ zaCJSOY4a1g7|2OV5DY!^vhkvw&PnGrob$RFc-^$Zr5#>fG=U`=u<66u%o*Me3~#$| zwAD78z!naY7KydnuDtkVHH;>ja~chtMuTWj@7K0DAe^Q#2%(4Kz>A@A{QZ@Dlmgd8 zx9!nU;|y0`09RfFSKbb;JjDm+Nb{@0iu|>P?qvg4_BEiJmV1e3*LQk(2x2UG&x?K? z!4+0y4GXe&FVQlH?&Zk5JaKtfL0@ou8(r}NhG2*R?e4w|$AIn!>=~}k-Md$vbnigR zc=w`s{~k)`cI)!JCI!XL`gZHHjrB&HpSefsb=>gq+)mS*y&PBhT6anZI9e^bPu}LV zcQN-X8Y{I>e;&sC9nVaQ>`(9L{G6?1sI@ypdDcq+nWAB@Ce>#7ByhiQ=UO&Y5 bnC9M+cz-O%F~SIA_j36cNO#r*ZW#aoez{BU literal 0 HcmV?d00001 diff --git a/frontend-dist/css/app.f639726f.css b/frontend-dist/css/app.f639726f.css new file mode 100644 index 00000000..9dba586b --- /dev/null +++ b/frontend-dist/css/app.f639726f.css @@ -0,0 +1 @@ +@font-face{font-family:Pacifico;src:url(/fonts/Pacifico-Regular.dc63ac94.woff2) format("woff2");font-display:swap}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#1d2129}body{margin:0;padding:0;background-color:#f7f7f8}:focus-visible{outline:none}*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:root{--bg-color:#f7f7f8;--popper-bg-color:#fff;--popper-shadow:none;--image-preview-filter:none;--text-bg-color:#f2f3f5;--background-image-filter:none;--upload-list-card-bg-color:#fff;--upload-list-card-border:1px solid #e5e6eb;--upload-list-card-box-shadow:none;--upload-list-item-border:1px solid #e5e6eb;--upload-list-dashboard-bg-color:#fff;--upload-list-dashboard-shadow:none;--upload-list-file-icon-color:#2563eb;--el-upload-dragger-bg-color:#fafafb;--el-upload-dragger-border:2px dashed #c9cdd4;--el-upload-dragger-border-color:#c9cdd4;--el-upload-dragger-hover-box-shadow:none;--el-upload-dragger-uniform-color:#2563eb;--paste-card-textarea-border-color:#c9cdd4;--paste-card-textarea-box-shadow:none;--el-icon--upload-color:#2563eb;--upload-text-color:#4e5969;--upload-header-color:#1d2129;--upload-main-title-color:#1d2129;--upload-title-text-color:#4e5969;--upload-title-text-shadow:none;--upload-title-hover-glow:transparent;--upload-title-underline-bg:#2563eb;--upload-title-underline-shadow:none;--upload-title-crayon-deep:#1d2129;--upload-title-crayon-base:#1d2129;--upload-title-crayon-light:#4e5969;--upload-title-crayon-edge:#c9cdd4;--upload-title-crayon-fleck:transparent;--upload-title-crayon-burr:transparent;--upload-title-crayon-dust:transparent;--modern-action-group-bg:#f7f8fa;--modern-action-group-border:#e5e6eb;--logo-glow-color:transparent;--modern-action-group-shadow:none;--modern-action-group-hover-bg:#f2f3f5;--modern-action-group-hover-shadow:none;--upload-action-toolbar-bg:#fff;--upload-action-toolbar-border:#e5e6eb;--upload-action-toolbar-shadow:none;--upload-action-toolbar-hover-bg:#f7f8fa;--upload-action-toolbar-hover-border:#c9cdd4;--upload-action-toolbar-hover-shadow:none;--upload-action-btn-bg:transparent;--upload-action-btn-color:#4e5969;--upload-action-btn-shadow:none;--upload-action-btn-hover-bg:#f2f3f5;--upload-action-btn-hover-shadow:none;--upload-action-btn-active-shadow:none;--upload-action-copy-color:#2563eb;--upload-action-retry-color:#16a34a;--upload-action-danger-color:#dc2626;--upload-action-danger-bg:transparent;--upload-action-danger-hover-bg:#fef2f2;--upload-action-danger-hover-shadow:none;--file-name-bg:#f7f8fa;--file-name-border:#e5e6eb;--file-name-hover-bg:#f2f3f5;--file-name-hover-border:#c9cdd4;--upload-list-item-bg:#fff;--upload-list-item-border-color:#e5e6eb;--upload-list-item-shadow:none;--upload-list-item-hover-border:#c9cdd4;--upload-list-item-hover-shadow:none;--dashboard-title-bg:transparent;--toolbar-button-bg-color:#fff;--toolbar-button-shadow:none;--toolbar-button-shadow-hover:none;--toolbar-button-color:#4e5969;--page-footer-text-color:#59636e;--page-footer-name-color:#1d2129;--login-container-bg-color:#fff;--password-input-bg-color:#fff;--password-input-border:1px solid #e5e6eb;--login-title-color:#1d2129;--login-container-box-shadow:none;--login-container-hover-box-shadow:none;--login-submit-btn-bg-color:#2563eb;--login-title-glow-color:transparent;--login-input-underline-color:#2563eb;--login-input-underline-secondary-color:#3b82f6;--login-input-label-focus-color:#2563eb;--dialog-bg-color:#fff;--dialog-box-shadow:none;--dialog-section-bg-color:#f2f3f5;--dialog-control-bg-color:#f7f8fa;--tabs-dropdown-popper-bg-color:#fff;--tabs-dropdown-popper-shadow:none;--tabs-switcher-hover-bg:#f2f3f5;--tabs-switcher-border-color:#e5e6eb;--tabs-switcher-hover-border-color:#c9cdd4;--tabs-switcher-accent-color:#2563eb;--tabs-switcher-current-color:#2563eb;--tabs-switcher-current-bg:#eff6ff;--tabs-switcher-current-border-color:#2563eb;--tabs-switcher-current-shadow:none;--admin-header-content-bg-color:#fff;--admin-header-content-hover-bg-color:#f7f8fa;--admin-header-content-border-bottom:1px solid #e5e6eb;--admin-header-content-box-shadow:none;--admin-header-content-hover-box-shadow:none;--admin-container-bg-color:#f7f7f8;--admin-container-color:#1d2129;--admin-dashborad-stats-bg-color:#fff;--admin-dashborad-stats-hover-bg-color:#f7f8fa;--admin-dashboard-search-card-bg-color:#fff;--admin-dashboard-stats-shadow:none;--admin-dashboard-stats-hover-shadow:none;--admin-dashboard-search-card-box-shadow:none;--admin-dashboard-btn-color:#4e5969;--admin-dashboard-btn-bg-color:#fff;--admin-dashboard-btn-shadow:none;--admin-dashboard-btn-hover-shadow:none;--admin-dashboard-imgcard-bg-color:#fff;--admin-dashboard-imgcard-shadow:none;--admin-dashboard-tag-suggestion-bg-color:#fff;--admin-dashboard-tag-suggestion-border-color:#e5e6eb;--admin-dashboard-tag-suggestion-box-shadow:none;--admin-dashboard-tag-suggestion-item-hover-bg-color:#f7f8fa;--skeleton-bg-color:#e5e6eb;--skeleton-shimmer-color:#f7f8fa;--admin-cuscfg-table-shadow:none;--admin-cuscfg-table-bg-color:#fff;--admin-syscfg-tabs-border-color:#e5e6eb;--admin-purple:#6366f1;--admin-batch-toolbar-bg:#fff;--admin-batch-toolbar-border:#e5e6eb;--admin-batch-toolbar-shadow:none;--admin-batch-action-bg:transparent;--admin-batch-action-shadow:none;--admin-batch-action-hover-bg:#f2f3f5;--admin-batch-action-hover-shadow:none;--admin-batch-delete-color:#dc2626;--admin-batch-tag-color:#d97706;--admin-batch-clear-color:#4e5969;--theme-toggle-color:#1d2129;--theme-toggle-bg-color:#1d2129;--admin-theme-toggle-color:#1d2129;--admin-theme-toggle-bg-color:#1d2129;--not-found-title-text-color:#1d2129;--floating-btn-bg:#2563eb;--floating-btn-color:#fff;--floating-btn-shadow:none;--floating-btn-shadow-hover:none;--floating-btn-right:32px;--floating-btn-bottom:32px;--glass-bg:hsla(0,0%,100%,.45);--glass-bg-hover:hsla(0,0%,100%,.55);--glass-border:#d9dce2;--glass-border-hover:#bfc4cc;--glass-shadow:none;--glass-shadow-hover:none;--glass-header-bg:rgba(247,248,250,.45);--glass-header-border:#d9dce2;--el-text-color-primary:#1d2129;--el-text-color-regular:#4e5969;--el-text-color-secondary:#59636e;--el-text-color-placeholder:#86909c;--el-text-color-disabled:#c0c4cc;--el-border-color:#c9cdd4;--el-border-color-light:#d9dce2;--el-border-color-lighter:#e5e6eb;--el-border-color-extra-light:#eceef1;--el-border-radius-base:8px;--el-border-radius-small:6px;--el-fill-color:#f2f3f5;--el-fill-color-light:#f7f8fa;--el-fill-color-lighter:#fafafb;--el-fill-color-blank:#fff;--text-color:#1d2129;--text-color-secondary:#59636e;--login-input-icon-color:#86909c;--icon-color:#59636e;--placeholder-color:#86909c}.dark{--bg-color:#0a0a0b;--popper-bg-color:#161618;--popper-shadow:none;--image-preview-filter:brightness(0.7);--text-bg-color:#1f1f22;--background-image-filter:brightness(0.7);--upload-list-card-bg-color:#161618;--upload-list-card-border:1px solid #2a2a2e;--upload-list-card-box-shadow:none;--upload-list-item-border:1px solid #2a2a2e;--upload-list-dashboard-bg-color:#161618;--upload-list-dashboard-shadow:none;--upload-list-file-icon-color:#60a5fa;--el-upload-dragger-bg-color:#131316;--el-upload-dragger-border:2px dashed #3a3a3f;--el-upload-dragger-border-color:#3a3a3f;--el-upload-dragger-hover-box-shadow:none;--el-upload-dragger-uniform-color:#60a5fa;--paste-card-textarea-border-color:#3a3a3f;--paste-card-textarea-box-shadow:none;--el-icon--upload-color:#60a5fa;--upload-text-color:#a1a1aa;--upload-header-color:#fafafa;--upload-main-title-color:#fafafa;--upload-title-text-color:#a1a1aa;--upload-title-text-shadow:none;--upload-title-hover-glow:transparent;--upload-title-underline-bg:#60a5fa;--upload-title-underline-shadow:none;--upload-title-crayon-deep:#fafafa;--upload-title-crayon-base:#fafafa;--upload-title-crayon-light:#a1a1aa;--upload-title-crayon-edge:#3a3a3f;--upload-title-crayon-fleck:transparent;--upload-title-crayon-burr:transparent;--upload-title-crayon-dust:transparent;--toolbar-button-bg-color:#161618;--toolbar-button-shadow:none;--toolbar-button-shadow-hover:none;--toolbar-button-color:#a1a1aa;--modern-action-group-bg:#131316;--modern-action-group-border:#2a2a2e;--logo-glow-color:transparent;--modern-action-group-shadow:none;--modern-action-group-hover-bg:#1f1f22;--modern-action-group-hover-shadow:none;--upload-action-toolbar-bg:#161618;--upload-action-toolbar-border:#2a2a2e;--upload-action-toolbar-shadow:none;--upload-action-toolbar-hover-bg:#1f1f22;--upload-action-toolbar-hover-border:#3a3a3f;--upload-action-toolbar-hover-shadow:none;--upload-action-btn-bg:transparent;--upload-action-btn-color:#a1a1aa;--upload-action-btn-shadow:none;--upload-action-btn-hover-bg:#1f1f22;--upload-action-btn-hover-shadow:none;--upload-action-btn-active-shadow:none;--upload-action-copy-color:#60a5fa;--upload-action-retry-color:#4ade80;--upload-action-danger-color:#f87171;--upload-action-danger-bg:transparent;--upload-action-danger-hover-bg:hsla(0,91%,71%,.12);--upload-action-danger-hover-shadow:none;--file-name-bg:#1f1f22;--file-name-border:#2a2a2e;--file-name-hover-bg:#26262a;--file-name-hover-border:#3a3a3f;--upload-list-item-bg:#161618;--upload-list-item-border-color:#2a2a2e;--upload-list-item-shadow:none;--upload-list-item-hover-border:#3a3a3f;--upload-list-item-hover-shadow:none;--dashboard-title-bg:transparent;--page-footer-text-color:#71717a;--page-footer-name-color:#a1a1aa;--login-container-bg-color:#161618;--password-input-bg-color:#131316;--password-input-border:1px solid #2a2a2e;--login-title-color:#fafafa;--login-container-box-shadow:none;--login-container-hover-box-shadow:none;--login-submit-btn-bg-color:#4a5d9b;--login-title-glow-color:transparent;--login-input-underline-color:#60a5fa;--login-input-underline-secondary-color:#3b82f6;--login-input-label-focus-color:#60a5fa;--dialog-bg-color:#161618;--dialog-box-shadow:none;--dialog-section-bg-color:#1f1f22;--dialog-control-bg-color:#161618;--tabs-dropdown-popper-bg-color:#161618;--tabs-dropdown-popper-shadow:none;--tabs-switcher-hover-bg:#1f1f22;--tabs-switcher-border-color:#2a2a2e;--tabs-switcher-hover-border-color:#3a3a3f;--tabs-switcher-accent-color:#60a5fa;--tabs-switcher-current-color:#60a5fa;--tabs-switcher-current-bg:rgba(59,130,246,.14);--tabs-switcher-current-border-color:#3b82f6;--tabs-switcher-current-shadow:none;--admin-header-content-bg-color:#161618;--admin-header-content-hover-bg-color:#1f1f22;--admin-header-content-border-bottom:1px solid #2a2a2e;--admin-header-content-box-shadow:none;--admin-header-content-hover-box-shadow:none;--admin-container-bg-color:#0a0a0b;--admin-container-color:#fafafa;--admin-dashborad-stats-bg-color:#161618;--admin-dashborad-stats-hover-bg-color:#1f1f22;--admin-dashboard-stats-shadow:none;--admin-dashboard-stats-hover-shadow:none;--admin-dashboard-search-card-bg-color:#161618;--admin-dashboard-search-card-box-shadow:none;--admin-dashboard-btn-color:#a1a1aa;--admin-dashboard-btn-bg-color:#161618;--admin-dashboard-btn-shadow:none;--admin-dashboard-btn-hover-shadow:none;--admin-dashboard-imgcard-bg-color:#161618;--admin-dashboard-imgcard-shadow:none;--admin-dashboard-tag-suggestion-bg-color:#161618;--admin-dashboard-tag-suggestion-border-color:#2a2a2e;--admin-dashboard-tag-suggestion-box-shadow:none;--admin-dashboard-tag-suggestion-item-hover-bg-color:#1f1f22;--skeleton-bg-color:#1f1f22;--skeleton-shimmer-color:#26262a;--admin-cuscfg-table-shadow:none;--admin-cuscfg-table-bg-color:#161618;--admin-syscfg-tabs-border-color:#2a2a2e;--theme-toggle-color:#d4d4d8;--theme-toggle-bg-color:#e4e4e7;--admin-theme-toggle-color:#d4d4d8;--admin-theme-toggle-bg-color:#e4e4e7;--admin-batch-toolbar-bg:#161618;--admin-batch-toolbar-border:#2a2a2e;--admin-batch-toolbar-shadow:none;--admin-batch-action-bg:transparent;--admin-batch-action-shadow:none;--admin-batch-action-hover-bg:#1f1f22;--admin-batch-action-hover-shadow:none;--admin-batch-delete-color:#f87171;--admin-batch-tag-color:#fbbf24;--admin-batch-clear-color:#a1a1aa;--not-found-title-text-color:#fafafa;--floating-btn-bg:#3b82f6;--floating-btn-color:#fff;--floating-btn-shadow:none;--floating-btn-shadow-hover:none;--glass-bg:rgba(22,22,24,.5);--glass-bg-hover:rgba(35,35,35,.6);--glass-border:#34343a;--glass-border-hover:#4a4a52;--glass-shadow:none;--glass-shadow-hover:none;--glass-header-bg:rgba(31,31,34,.5);--glass-header-border:#34343a;--el-text-color-primary:#fafafa;--el-text-color-regular:#c8c9cc;--el-text-color-secondary:#a1a1aa;--el-text-color-placeholder:#6b6b73;--el-text-color-disabled:#4a4a52;--el-border-color:#34343a;--el-border-color-light:#2a2a2e;--el-border-color-lighter:#26262a;--el-border-color-extra-light:#1f1f22;--el-fill-color:#1f1f22;--el-fill-color-light:#1a1a1d;--el-fill-color-lighter:#161618;--el-fill-color-blank:#161618;--el-bg-color:#161618;--el-bg-color-page:#0a0a0b;--el-bg-color-overlay:#1f1f22;--el-color-primary:#4a5d9b;--el-color-primary-light-3:#5e73b5;--el-color-primary-light-5:#768cc6;--el-color-primary-light-7:#98a9d5;--el-color-primary-light-8:#b0bde0;--el-color-primary-light-9:#ccd4ec;--el-color-primary-dark-2:#3a4b80;--text-color:#fafafa;--text-color-secondary:#a1a1aa;--login-input-icon-color:#71717a;--icon-color:#a1a1aa;--placeholder-color:#6b6b73}.el-message{border-radius:10px!important;border:1px solid var(--glass-border)!important;padding:10px 20px!important;box-shadow:var(--glass-shadow)!important;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);min-width:unset!important;top:30px!important}.el-message .el-message__icon{font-size:18px!important;color:var(--el-text-color-primary)!important}.el-message .el-message__content{font-size:16px!important;font-weight:500!important;color:var(--el-text-color-primary)!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:var(--glass-bg)!important;border:1px solid var(--glass-border)!important;box-shadow:var(--glass-shadow)!important}@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}}.el-dialog,.el-message-box{border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow)!important;border:1px solid var(--glass-border);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.el-dialog__header,.el-message-box__header{border-bottom:none;padding:16px 20px!important;margin-right:0!important;position:relative}.el-dialog__header:after,.el-message-box__header:after{content:"";position:absolute;bottom:0;left:20px;right:20px;height:1px;background:#e5e6eb}.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:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border)!important;box-shadow:var(--glass-shadow)!important}.dark .el-dialog__header,.dark .el-message-box__header{border-bottom:none}.dark .el-dialog__header:after,.dark .el-message-box__header:after{background:#2a2a2e}.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}.dark .el-button--primary{--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--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)}html.dark .el-button--primary.is-plain{--el-button-text-color:var(--el-text-color-primary);--el-button-bg-color:hsla(0,0%,100%,.04);--el-button-border-color:rgba(118,140,198,.65);--el-button-hover-text-color:#fff;--el-button-hover-bg-color:var(--el-color-primary);--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);color:var(--el-text-color-primary)!important;background-color:hsla(0,0%,100%,.04)!important;border-color:rgba(118,140,198,.65)!important}html.dark .el-button--primary.is-plain:focus,html.dark .el-button--primary.is-plain:hover{color:#fff!important;background-color:var(--el-color-primary)!important;border-color:var(--el-color-primary-light-3)!important}.dark .el-pager li.is-active{background-color:var(--el-color-primary);color:#fff}.dark .el-pager li{color:#a1a1aa}.dark .el-pagination .btn-next,.dark .el-pagination .btn-prev,.dark .el-pagination button{background-color:transparent;color:#a1a1aa}.dark .el-input__wrapper.is-focus,.dark .el-select__wrapper.is-focused,.dark .el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-color-primary-light-5) inset!important}html.dark .el-cascader__dropdown__item.hover,html.dark .el-select-dropdown__item.is-hovering{background-color:hsla(0,0%,100%,.08)!important;color:var(--el-text-color-primary)!important}html.dark .el-cascader__dropdown__item.is-active,html.dark .el-select-dropdown__item.is-selected{background-color:rgba(74,93,155,.38)!important;color:#fff!important}.dark .el-switch.is-checked .el-switch__core{background-color:var(--el-color-primary)!important;border-color:var(--el-color-primary)!important}.dark .el-tabs__active-bar,.dark .el-tabs__item.is-active{color:var(--el-color-primary-light-7)}.dark .el-tabs__item.is-active:after{background-color:var(--el-color-primary)}.dark .el-checkbox__input.is-checked .el-checkbox__inner,.dark .el-radio__input.is-checked .el-radio__inner{background-color:var(--el-color-primary)!important;border-color:var(--el-color-primary)!important}.dark .el-checkbox__input.is-checked+.el-checkbox__label,.dark .el-radio__input.is-checked+.el-radio__label{color:var(--el-text-color-primary)!important}.el-loading-mask{border-radius:12px}.el-dropdown__popper.el-popper{border-radius:8px;border:1px solid #d9dce2;background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow)}html.dark .el-dropdown__popper.el-popper{border-color:#34343a}.el-dropdown__popper.el-popper .el-dropdown-menu{padding:4px;border-radius:7px;background:transparent;border:none;overflow:hidden}.el-dropdown__popper.el-popper .el-dropdown-menu__item{min-height:34px;padding:0 12px;border-radius:6px;border:none;background:transparent;color:var(--el-text-color-regular);transition:background-color .2s ease,color .2s ease}.el-dropdown__popper.el-popper .el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown__popper.el-popper .el-dropdown-menu__item:not(.is-disabled):hover{background-color:rgba(0,0,0,.04);color:var(--el-text-color-primary)}html.dark .el-dropdown__popper.el-popper .el-dropdown-menu__item:not(.is-disabled):focus,html.dark .el-dropdown__popper.el-popper .el-dropdown-menu__item:not(.is-disabled):hover{background-color:hsla(0,0%,100%,.08);color:var(--el-text-color-primary)}.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}.el-card,.el-dialog,.el-dropdown__popper.el-popper,.el-message-box{background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}html.dark .el-card,html.dark .el-dialog,html.dark .el-dropdown__popper.el-popper,html.dark .el-message-box{background-color:var(--glass-bg)!important} \ No newline at end of file diff --git a/frontend-dist/css/app.f639726f.css.gz b/frontend-dist/css/app.f639726f.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..87cd54800a363d5bbe4ce2422311b0084849bf03 GIT binary patch literal 3854 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.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}.background-image1:not([src]),.background-image2:not([src]){display:none}#themeToggle,.action-card,.breadcrumb,.breadcrumb-view-toggle,.channel-card,.channel-group,.chart-card,.custom-select-dropdown,.custom-select-trigger,.directory-tree-trigger,.el-card,.el-dialog,.el-dropdown__popper.el-popper,.el-message-box,.first-settings .el-form,.img-card,.language-switcher,.login-container,.mobile-directory-trigger,.mobile-more-button,.more-button,.overview-card,.page-jump .el-input__wrapper,.quick-toolbar,.refresh-btn,.stats-badge,.toggle-dark,.toggle-dark-button,.token-table,.upload-list-card,.upload-list-item,.upload-method-button{background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}html.dark #themeToggle,html.dark .action-card,html.dark .breadcrumb,html.dark .breadcrumb-view-toggle,html.dark .channel-card,html.dark .channel-group,html.dark .chart-card,html.dark .custom-select-dropdown,html.dark .custom-select-trigger,html.dark .directory-tree-trigger,html.dark .el-card,html.dark .el-dialog,html.dark .el-dropdown__popper.el-popper,html.dark .el-message-box,html.dark .first-settings .el-form,html.dark .img-card,html.dark .language-switcher,html.dark .login-container,html.dark .mobile-directory-trigger,html.dark .mobile-more-button,html.dark .more-button,html.dark .overview-card,html.dark .page-jump .el-input__wrapper,html.dark .quick-toolbar,html.dark .refresh-btn,html.dark .stats-badge,html.dark .toggle-dark,html.dark .toggle-dark-button,html.dark .token-table,html.dark .upload-list-card,html.dark .upload-list-item,html.dark .upload-method-button{background-color:var(--glass-bg)!important}body:has(#bg1[src]){background-color:transparent!important}body:has(#bg1[src]) .blocked-container,body:has(#bg1[src]) .container,body:has(#bg1[src]) .login,body:has(#bg1[src]) .not-found-container,body:has(#bg1[src]) .upload-home,body:has(#bg1[src]) .whitelist-container{background:transparent!important;background-color:transparent!important} \ No newline at end of file diff --git a/frontend-dist/css/app.ffc502cb.css.gz b/frontend-dist/css/app.ffc502cb.css.gz deleted file mode 100644 index 9fb8477090ccb64af29abada76c461bdd128769b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5078 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 diff --git a/frontend-dist/index.html b/frontend-dist/index.html index 367904be..457c3418 100644 --- a/frontend-dist/index.html +++ b/frontend-dist/index.html @@ -1 +1 @@ -Sanyue ImgHub

\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/frontend-dist/index.html.gz b/frontend-dist/index.html.gz index 4c9ab56eb30c110f908e655f36a0a3551e4af29b..7549496fde19094a01bb57b47d089ac888f59549 100644 GIT binary patch delta 535 zcmV+y0_gps1fv9y7k^2%?P^PC?`;b$_+X8ByrdA1bdt%{~m3!E!|cKxLA7D zyf+`ueWx%r~V12h+zh*b|^iq9%Zw}veYzU5LM}{-$6hph1KK*bO9SFipYwsE_yUp z6^>fU2j8BAt6^}MF(ut)|4Hpt-2Dp&G&u@Vylpo1X1zWglEJ8h9oQaZp5}C?{FD%G z`}Sk1A%h#}$$wz*&{&7iQDo~|7@XpULVv2b!)Z^!#8+~wqu%O7Wd*iZ?K7wyB?FNu zsF#ka#2tlK!e6YYO1A8~;=yX1G-h~7|$`SxOS zdAV8F`9l;{SuE7QNvL7SH;q1Tw(I5varW!zkB%?1HGkLIY_8VlxsFjRwnm;D#txCi zYxW^gv%S2&y4W^<;uOnL)nuls^z_sL2l8!ok7ofPQV0{&i6PDt`)>QTOEnn6=+7AT z6m~EK8ZfvC_Le(J44>4f?v_EIKkS3a;j=>(@rc1PFwOp0pD-_rW7e|xU5K$GSTjHU ZL$$_^RS;P$)fV#~@e3ff5dJd+000}<2x}*r*Pq5PWwGd4;pwvy}kR_-=hKO8?#9ekR4z~mInBk9PrdoW< zzT9T-$c>UsYf*qA&*-@pckgS|JwB4WbXbeY;C7_IPvW*l^M6oloQ%S31}ozY8)>ts zq{aGt<>XJ}k~`uQG0Z@=7HdzdN7<}1Tq~L|h^Df}Zy=zpg;C@M3<0}Z6p%W<@rF(ox*|4DT+ZvKS>iY$d%yzbWRx-3tJq%o>sMmBqyN(Ms+pxKqUq?zR+kd?B|w=&epvR$!d$pFm|PX^2cg zK6g|m9w@vJ{%k~3v0;nNN#RwoTvkhqps~ZSZ@I%DAO=;7;vp7lNPd$|=rx6yzqwdn zUareFe~6-~iiP?&2|12=c`dK-@}_)7oc%iZqvG>y-G7bJ>$l~3u3{96t&w*Y(o_wq1r!jie;%<(z~YebnJiw`M&vzX8|En2s>yKL!2k}-MD^8Eoj2%<88 zHZTSnG1wh!4G)wUKFUenFM~k8-v^z;CyO%T0fS*+n*A|8VO|x7tX1*55N#$fdVc!* YYPFe~st;JIE#^Ps7srA3V>1K*0J~-dp#T5? diff --git a/frontend-dist/js/136.e7c2a2d2.js b/frontend-dist/js/136.e7c2a2d2.js new file mode 100644 index 00000000..62ecc5c8 --- /dev/null +++ b/frontend-dist/js/136.e7c2a2d2.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[136],{213:function(e,t,o){"use strict";o(85331),o(19104)},732:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i=["href","target"],l=["alt","src"];function n(e,t,o,n,r,d){return(0,a.uX)(),(0,a.CE)("a",{href:d.logoHref,target:o.target,class:(0,s.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,s.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,l)],10,i)}var r=o(60782),d={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,r.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||o(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-17f54292"]]);var p=u},808:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),s=o(45130),i=o(24232);const l={id:"themeMask"},n=["cx","cy","r"],r=["r"],d=["opacity"];function c(e,t,o,c,u,p){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>p.handleToggleClick&&p.handleToggleClick(...e))},[(0,a.bF)(s.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[u.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",l,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,n)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,d)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},p=o(71241);const h=(0,p.A)(u,[["render",c],["__scopeId","data-v-c93807da"]]);var m=h},2893:function(e,t,o){"use strict";o(85331)},3261:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},7835:function(e,t,o){"use strict";e.exports=o.p+"img/background-light.f17603bc.jpg"},10456:function(e,t,o){"use strict";o(85331)},10732:function(e,t,o){"use strict";e.exports=o.p+"img/background.de27f549.jpg"},11393:function(e,t,o){o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(a){if(t[a])return t[a].exports;var s=t[a]={i:a,l:!1,exports:{}};return e[a].call(s.exports,s,s.exports,o),s.l=!0,s.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)o.d(a,s,function(t){return e[t]}.bind(null,s));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var a;function s(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return l}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return g}),o.d(t,"urltoImage",function(){return f}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return k}),o.d(t,"EImageType",function(){return a}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(a||(a={}));var i=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function l(e,t=.92,o=a.JPEG){return i(this,void 0,void 0,function*(){return s(o)||(o=a.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=a.JPEG){return new Promise(a=>e.toBlob(e=>a(e),o,t))}var r=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let a=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let l=i.length;const n=new Uint8Array(l);for(;l--;)n[l]=i.charCodeAt(l);return s(t)&&(a=t),new Blob([n],{type:a})})}function c(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),a.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const a=document.createEvent("MouseEvents");a.initEvent("click",!1,!1),o.dispatchEvent(a),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),a=document.createElement("canvas"),s=a.getContext("2d");let i,l;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;l=e.width*t,i=e.height*t}else l=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=l,a.width=i):(a.height=i,a.width=l),o.orientation){case 3:s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 8:s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;case 2:s.translate(a.width,0),s.scale(-1,1),s.drawImage(e,0,0,a.width,a.height);break;case 4:s.translate(a.width,0),s.scale(-1,1),s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:s.translate(a.width,0),s.scale(-1,1),s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 7:s.translate(a.width,0),s.scale(-1,1),s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;default:s.drawImage(e,0,0,a.width,a.height)}return a})}function g(e){return fetch(e).then(e=>e.blob())}function f(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),a.src=e})}var y=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;s(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield l(u,t.quality,n),g=yield d(h,i);return g.size>e.size?e:g})}function k(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;s(t.type)&&(h=t.type,u=t.type);const g=yield c(r),f=yield m(g,Object.assign({},t));let y,b=.5;const k=[null,null];for(let e=1;e<=7;e++){y=yield l(f,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...k].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;k[0]=y,b+=Math.pow(.5,e+1)}}const v=yield d(y,u);return v.size>e.size?e:v})}}])})},13378:function(e,t,o){"use strict";o(85331),o(38736),o(79899)},15616:function(e,t,o){"use strict";o(85331),o(97197)},18785:function(e,t,o){"use strict";o(85331)},19104:function(e,t,o){"use strict";o(85331)},21136:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return To}});var a=o(78507),s=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),l=o(24232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},g=["src"],f=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},k={class:"grid-actions"},v={class:"grid-info"},C=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},x=["title"],_=["title"],I={class:"list-meta"},A={class:"upload-time"},M={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},R={key:1,class:"load-more-hint"},B={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function W(e,t,o,W,N,z){const V=(0,i.g2)("font-awesome-icon"),H=s.S2,Q=a.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,l.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,l.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,l.v_)(e.$t("uploadHistory.totalRecords",{count:N.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:z.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"grid"===N.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:z.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"times"})]),_:1})])]),N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>z.handleScroll&&z.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(z.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[4]||(t[4]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,l.v_)(e.date),1)]),"grid"===N.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,g)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,f)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(V,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",k,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",v,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,C),(0,i.Lk)("div",w,(0,l.v_)(z.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,U)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(V,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,x),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,l.v_)(e.url),9,_)]),(0,i.Lk)("div",I,[(0,i.Lk)("div",A,(0,l.v_)(z.formatTime(e.time)),1)]),(0,i.Lk)("div",M,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[N.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(V,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",R,(0,l.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",B,(0,l.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(V,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,l.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var N={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),a=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[a]||(e[a]=[]),e[a].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,a=t.scrollHeight,s=t.clientHeight;a-o-s<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),l=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${s} ${i}:${l}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success(this.$t("uploadHistory.linkCopied"))}).catch(()=>{this.$message.error(this.$t("uploadHistory.copyFailed"))})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(96682)}}},z=o(71241);const V=(0,z.A)(N,[["render",W],["__scopeId","data-v-f70e7770"]]);var H=V,Q=o(86975),X=o(9267),q=(o(15616),o(81418)),O=(o(50333),o(74757)),j=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810)),Y=(o(34396),o(4885),o(53676));const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item"},se={class:"setting-label"},ie={key:0,class:"setting-item"},le={class:"setting-label"},ne={class:"setting-item"},re={class:"setting-label"},de={class:"setting-item"},ce={class:"setting-label"},ue={class:"dialog-section"},pe={class:"section-header"},he={class:"section-title"},me={class:"section-content"},ge={class:"dialog-section"},fe={class:"section-header"},ye={class:"section-title"},be={class:"section-content"},ke={class:"setting-item"},ve={class:"setting-label"},Ce={class:"setting-item"},we={class:"setting-label"},Fe={key:0,class:"setting-item slider-item"},Le={class:"setting-label"},Ue={class:"slider-wrapper"},$e={class:"slider-input-wrapper"},Se={key:1,class:"setting-item slider-item"},Te={class:"setting-label"},xe={class:"slider-wrapper"},_e={class:"slider-input-wrapper"},Ie={key:0,class:"dialog-section"},Ae={class:"section-header"},Me={class:"section-title"},Ee={class:"section-content"},De={class:"setting-item"},Re={class:"setting-label"},Be={class:"dialog-action"};function Pe(e,t,o,n,r,d){const c=Y.A,u=J.ll,p=J.MQ,h=(0,i.g2)("font-awesome-icon"),m=a.R7,g=K.P9,f=K.AV,y=G.WK,b=j.qi,k=O.B8,v=q.lq,C=s.S2,w=X.kZ;return(0,i.uX)(),(0,i.Wv)(w,{title:e.$t("uploadSettings.title"),modelValue:d.visible,"onUpdate:modelValue":t[12]||(t[12]=e=>d.visible=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope upload-settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[(0,i.Lk)("span",te,(0,l.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",oe,[(0,i.Lk)("div",ae,[(0,i.Lk)("span",se,(0,l.v_)(e.$t("uploadSettings.channelType")),1),(0,i.bF)(p,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"telegram",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"telegram",class:"channel-icon channel-brand-telegram"}),t[13]||(t[13]=(0,i.Lk)("span",null,"TG",-1))]),_:1}),(0,i.bF)(u,{label:"cfr2",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"cfr2",class:"channel-icon channel-brand-cfr2"}),t[14]||(t[14]=(0,i.Lk)("span",null,"R2",-1))]),_:1}),(0,i.bF)(u,{label:"s3",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"s3",class:"channel-icon channel-brand-s3"}),t[15]||(t[15]=(0,i.Lk)("span",null,"S3",-1))]),_:1}),(0,i.bF)(u,{label:"discord",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"discord",class:"channel-icon channel-brand-discord"}),t[16]||(t[16]=(0,i.Lk)("span",null,"DC",-1))]),_:1}),(0,i.bF)(u,{label:"huggingface",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"huggingface",class:"channel-icon channel-brand-huggingface"}),t[17]||(t[17]=(0,i.Lk)("span",null,"HF",-1))]),_:1}),(0,i.bF)(u,{label:"webdav",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"webdav",class:"channel-icon channel-brand-webdav"}),t[18]||(t[18]=(0,i.Lk)("span",null,"WD",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",ie,[(0,i.Lk)("span",le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(f,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(g,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",ne,[(0,i.Lk)("span",re,(0,l.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(y,{"model-value":o.uploadFolder,"onUpdate:modelValue":d.handleUploadFolderInput,placeholder:e.$t("uploadSettings.uploadDirectoryPlaceholder"),class:"setting-input"},null,8,["model-value","onUpdate:modelValue","placeholder"])]),(0,i.Lk)("div",de,[(0,i.Lk)("span",ce,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ue,[(0,i.Lk)("div",pe,[(0,i.Lk)("span",he,(0,l.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",me,[(0,i.bF)(p,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(u,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(u,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(u,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",ge,[(0,i.Lk)("div",fe,[(0,i.Lk)("span",ye,(0,l.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",be,[(0,i.Lk)("div",ke,[(0,i.Lk)("span",ve,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",Ce,[(0,i.Lk)("span",we,(0,l.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(b,{"model-value":o.customerCompress,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Fe,[(0,i.Lk)("span",Le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ue,[(0,i.bF)(k,{"model-value":o.compressBar,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",$e,[(0,i.bF)(v,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[19]||(t[19]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Se,[(0,i.Lk)("span",Te,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",xe,[(0,i.bF)(k,{"model-value":o.compressQuality,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",_e,[(0,i.bF)(v,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[20]||(t[20]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.Lk)("div",Ae,[(0,i.Lk)("span",Me,(0,l.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ee,[(0,i.Lk)("div",De,[(0,i.Lk)("span",Re,(0,l.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(b,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Be,[(0,i.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var We={name:"UploadSettingsDialog",components:{ChannelIcon:Y.A},methods:{handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const Ne=(0,z.A)(We,[["render",Pe]]);var ze=Ne,Ve=o(88559),He=(o(85970),o(813)),Qe=(o(34896),o(69655)),Xe=(o(2893),o(74253));o(79899);const qe={class:"upload-list-item"},Oe=["href"],je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Ge=["src"],Ke=["src"],Je={key:2,style:{width:"10vw","border-radius":"12px"}},Ye={class:"upload-list-item-content"},Ze={class:"upload-list-item-name-wrapper"},et={key:0,class:"upload-list-item-url"},tt={class:"upload-list-item-url-row"},ot={class:"upload-list-item-url-row"},at={key:1,class:"upload-list-item-progress"},st={class:"upload-list-item-action"};function it(e,t,o,a,s,n){const r=(0,i.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=Qe.ve,p=(0,i.g2)("Link"),h=He.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",qe,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",je,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ge),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,Ke)):((0,i.uX)(),(0,i.CE)("div",Je,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Oe),(0,i.Lk)("div",Ye,[(0,i.Lk)("div",Ze,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",et,[(0,i.Lk)("div",tt,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",ot,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",at,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",st,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var lt=o(57477);const nt=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],rt=["mp4","webm","ogg","mkv"];var dt={name:"UploadFileItem",components:{Link:lt.Link,Delete:lt.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return nt.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return rt.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const ct=(0,z.A)(dt,[["render",it],["__scopeId","data-v-698179d6"]]);var ut=ct,pt=o(62086),ht=(o(40670),o(88830),o(23597),o(70683)),mt=(o(95385),o(3261),o(47358));const gt={class:"upload-form"},ft={class:"upload-card-glow",ref:"uploadCardGlow"},yt=["innerHTML"],bt={key:0,class:"upload-card"},kt={class:"paste-card-actions"},vt={class:"upload-list-dashboard-action"},Ct={class:"modern-action-group"},wt={class:"modern-dropdown-item-content"},Ft={class:"modern-action-btn modern-action-btn-danger"};function Lt(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=He.tk,h=mt.j5,m=G.WK,g=s.S2,f=J.Zh,y=J.MQ,b=ht.Ik,k=(0,i.g2)("List"),v=(0,i.g2)("Checked"),C=(0,i.g2)("Failed"),w=Xe.$g,F=(0,i.g2)("font-awesome-icon"),L=a.R7,U=j.qi,$=pt.c6,S=pt.Iy,T=pt.dW,x=ut,_=Ve.kA;return(0,i.uX)(),(0,i.CE)("div",gt,[(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e))},[(0,i.Lk)("div",ft,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,l.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,l.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(u)]),_:1},8,["class"]),(0,i.Lk)("div",{class:(0,l.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,yt)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",bt,[(0,i.bF)(b,{class:(0,l.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:e.$t("upload.pasteUrlPlaceholder"),type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","placeholder","rows"]),(0,i.Lk)("div",kt,[(0,i.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,i.bF)(y,{modelValue:d.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>d.pasteUploadMethod=e),class:"paste-card-method-group",size:c.pasteCardMethodButtonSize},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"save"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteSave")),1)]),_:1}),(0,i.bF)(f,{label:"external"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteExternal")),1)]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,l.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(_,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(w,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",vt,[(0,i.Lk)("div",Ct,[(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[4]||(t[4]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(F,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",wt,[(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadForm.autoRetry")),1),(0,i.bF)(U,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[5]||(t[5]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)($,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",Ft,[(0,i.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)(x,{key:e.name,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[7]||(t[7]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var Ut=o(457),$t=o(76334),St=o(60782);function Tt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function xt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function _t(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Tt(e.srcID,e.name,t);Object.assign(e,o)})}const It=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),At=(e,t)=>e>>>t|e<<32-t;function Mt(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=At(o[u-15],7)^At(o[u-15],18)^o[u-15]>>>3,t=At(o[u-2],17)^At(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,s,i,l,n,r,d,c]=t;for(let u=0;u<64;u++){const e=At(n,6)^At(n,11)^At(n,25),t=n&r^~n&d,p=c+e+t+It[u]+o[u]>>>0,h=At(a,2)^At(a,13)^At(a,22),m=a&s^a&i^s&i,g=h+m>>>0;c=d,d=r,r=n,n=l+p>>>0,l=i,i=s,s=a,a=p+g>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+s>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+l>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function Et(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(s){a+=s.length;let i=0;if(o>0){const a=64-o,l=Math.min(a,s.length);t.set(s.subarray(0,l),o),o+=l,i=l,64===o&&(Mt(t,e),o=0)}while(i+64<=s.length)Mt(s.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),Mt(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(s/4294967296),!1),i.setUint32(60,s>>>0,!1),Mt(t,e);let l="";for(let t=0;t<8;t++)l+=e[t].toString(16).padStart(8,"0");return l}}}async function Dt(e){const t=Et(),o=4194304;let a=0;while(athis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){_t(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&_t(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,St.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),a=o?.uploadChannel||this.uploadChannel;if("external"===a)return void this.uploadSingleFile(e);if("huggingface"===a){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===a){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const s=20971520;e.file.size>s?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,a=t.uploadChannel||this.uploadChannel,s=this.autoRetry&&"external"!==a,i="external"===a?"default":this.uploadNameType,l=new AbortController;this.abortControllers.set(e.file.uid,l);const n=new FormData;if(n.append("file",e.file),"external"===a&&n.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Dt(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Ut.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+s+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:l.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,a=new AbortController;this.abortControllers.set(e.file.uid,a);const s="discord"===o?9437184:16777216,i=e.file.size,l=e.file.type||"application/octet-stream",n=Math.ceil(i/s),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType;let u=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),u=await Dt(e.file),console.log("SHA256 computed:",u)}catch(p){console.error("Failed to compute SHA256:",p)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",l),t.append("totalChunks",n.toString());const h=await(0,Ut.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!h.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+h.data.message);const m=h.data.uploadId;console.log("分块上传初始化成功,uploadId:",m);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=m);const f=3,y=new Array(n).fill(0);let b=0,k=!1,v="",C=!1;const w=async t=>{if(k||C)return;const u=t*s,h=Math.min(u+s,i),g=e.file.slice(u,h),f=new FormData;f.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",n.toString()),f.append("uploadId",m),f.append("originalFileName",e.file.name),f.append("originalFileType",l);let b=0;const w=3;while(b{if(k||C)return;const a=Math.round(o.loaded/o.total*100);y[t]=a;const s=Math.round(y.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:s,file:e.file})}})}catch(p){if("CanceledError"===p.name||"ERR_CANCELED"===p.code)return C=!0,void console.log("分块上传已取消:",e.file.name);if(b++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${b}/${w}):`,p),b>=w)throw k=!0,v=`分块 ${t+1}/${n} 上传失败: ${p.message}`,new Error(v);await new Promise(e=>setTimeout(e,2e3*b))}}},F=[];for(let e=0;e{while(bt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),p.response&&401!==p.response.status?(this.exceptionList.push(e),e.onError(p,e.file)):p.response||(this.exceptionList.push(e),e.onError(p,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Ut.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const a=o.uploadChannel||this.uploadChannel;if("external"!==a){const a=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+a;const s=Tt(a,t.name,this.rootUrl);Object.assign(o,s),o.srcID=a}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.$t("uploadForm.uploadSuccess",{name:this.truncateFilename(t.name)})}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(a){this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(xt(e,this.selectedUrlForm)),this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})):this.$message({type:"warning",message:this.$t("uploadForm.fileNotUploaded")})},beforeUpload(e){return new Promise(async(t,o)=>{let a=e;const s=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(s)try{const t=await this.convertImageToWebp(e);t&&(a=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,l=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)$t.compressAccurately(a,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const s=new File([t],a.name,{type:t.type});s.uid=e.uid;const i=this.uploadCount++,l=this.serverCompress&&s.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(s,l):setTimeout(()=>{n(s,l),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(l){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);0===e?n(a,t):setTimeout(()=>{n(a,t),this.uploadCount--},300*e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>xt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:this.$t("uploadForm.copyAllSuccess")})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:this.$t("uploadForm.fileListCleared")})):this.$message({type:"info",message:this.$t("uploadForm.fileListEmpty")})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:this.$t("uploadForm.successFilesCleared")})):this.$message({type:"info",message:this.$t("uploadForm.successFilesEmpty")})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,l=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:s,htmlURL:i,ubbURL:l,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&Ut.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(s){a=""}}""===a&&(o=t.exec(i),null!=o&&o[1]&&(a=decodeURIComponent(o[1])))}if(""===a){const t=new URL(e);a=t.pathname.split("/").pop()}if(""===a){const o=new URL(e);let s=o.pathname.split(".").pop();(!s||""===s||s.length>10)&&(s="bin"),a="PastedFile"+Date.now()+t+"."+s}const l=o.data,n=new File([l],a,{type:l.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:this.$t("uploadForm.urlRequestFailed")})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:this.$t("uploadForm.noFailedFiles")})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?this.$t("uploadForm.autoRetryOn"):this.$t("uploadForm.autoRetryOff")}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;tthis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:this.$t("uploadForm.maxRetryReached",{name:e.name,max:this.maxRetryCount})})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Dt(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const a=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),s=btoa(String.fromCharCode(...a));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,Ut.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:s,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const l=i.data;if(console.log("Upload info:",l),l.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(l.needsLfs&&l.uploadAction){const{href:t,header:a}=l.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,l,o);else{console.log("Uploading to S3 (basic)...");const s=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!s.ok){const e=await s.text();throw new Error(`S3 upload failed: ${s.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,Ut.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:l.fullId,filePath:l.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:l.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(a){if("CanceledError"===a.name||"ERR_CANCELED"===a.code||"AbortError"===a.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",a),this.exceptionList.push(e),e.onError(a,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:s,header:i}=a,l=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${l}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,a=t*l,s=Math.min(a+l,e.file.size),n=e.file.slice(a,s);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(s,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const a=new Image,s=document.createElement("canvas"),i=s.getContext("2d");a.onload=()=>{s.width=a.width,s.height=a.height,i.drawImage(a,0,0),s.toBlob(s=>{if(s){const o=e.name,a=o.lastIndexOf("."),i=a>0?o.substring(0,a)+".webp":o+".webp",l=new File([s],i,{type:"image/webp"});l.uid=e.uid,t(l)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(a.src)},"image/webp",.92)},a.onerror=()=>{URL.revokeObjectURL(a.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},a.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),a=e.clientX-o.left,s=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=s+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Bt=(0,z.A)(Rt,[["render",Lt],["__scopeId","data-v-fca24b68"]]);var Pt=Bt,Wt=o(732),Nt=o(33892),zt=o(45130);const Vt={class:"directory-suggestion-input",ref:"wrapperRef"},Ht={class:"suggestion-dropdown"},Qt={class:"suggestion-list"},Xt=["title","onMousedown"];function qt(e,t,o,a,s,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",Vt,[(0,i.bF)(r,{ref:"inputRef",modelValue:n.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputValue=e),placeholder:o.placeholder,onFocus:n.handleFocus,onBlur:n.handleBlur,onInput:n.handleInput},null,8,["modelValue","placeholder","onFocus","onBlur","onInput"]),(0,i.bo)((0,i.Lk)("div",Ht,[(0,i.Lk)("ul",Qt,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,zt.D$)(t=>n.selectItem(e),["prevent"])},(0,l.v_)(e.value),41,Xt))),128))])],512),[[zt.aG,s.dropdownVisible&&s.suggestions.length>0]])],512)}var Ot={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,dropdownVisible:!1,isFocused:!1,suggestions:[]}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{modelValue(){this.isFocused&&this.refreshSuggestions()}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.ensureDirectoryTreeLoaded(),this.$emit("focus"),setTimeout(()=>{this.isFocused&&(this.refreshSuggestions(),this.dropdownVisible=!0)},500)},handleBlur(){this.isFocused=!1,this.dropdownVisible=!1,this.$emit("blur")},handleInput(e){this.$nextTick(()=>{this.refreshSuggestions(),this.isFocused&&(this.dropdownVisible=!0)})},selectItem(e){const t=e.value;this.inputValue=t,this.$emit("select",t);const o=this.normalizeDirectoryPath(t),a=this.directoryChildrenMap[o];a&&a.length>0?this.$nextTick(()=>{this.refreshSuggestions(),this.dropdownVisible=!0,this.$refs.inputRef?.focus()}):this.dropdownVisible=!1},refreshSuggestions(){this.suggestions=this.getDirectorySuggestions(this.modelValue||"")},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const a=this.normalizeDirectoryPath(e.path),s=Array.isArray(e.children)?e.children:[];t[a]=s.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),s.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Ut.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),a=o.split("/"),s=a[a.length-1]||"",i=a.slice(0,-1).filter(Boolean),l=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:s,parentPath:l}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),a=this.directoryChildrenMap[o]||[];if(!t)return a.slice(0,10).map(e=>({value:e.path}));const s=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(s)).slice(0,10).map(e=>({value:e.path}))}}};const jt=(0,z.A)(Ot,[["render",qt],["__scopeId","data-v-28b8eda7"]]);var Gt=jt,Kt=o(808);const Jt={class:"container"},Yt={class:"upload-home"},Zt={class:"quick-toolbar-actions"},eo={class:"quick-toolbar-actions-inner"},to={class:"header"},oo={class:"title"},ao={class:"title-crayon-text","aria-hidden":"true"},so={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},io={class:"dialog-section"},lo={class:"section-header"},no={class:"section-title"},ro={class:"section-content"},co={class:"dialog-section"},uo={class:"section-header"},po={class:"section-title"},ho={class:"section-content"},mo={class:"setting-item"},go={class:"setting-label"},fo={key:0,class:"setting-item"},yo={class:"setting-label"},bo={class:"dialog-action"},ko=["innerHTML"],vo={class:"dialog-footer"};function Co(e,t,o,n,r,d){const c=Kt.A,u=(0,i.g2)("font-awesome-icon"),p=s.S2,h=pt.c6,m=pt.Iy,g=pt.dW,f=Gt,y=G.WK,b=Nt.A,k=a.R7,v=Wt.A,C=Pt,w=J.ll,F=J.MQ,L=j.qi,U=X.kZ,$=ze,S=Q.A,T=H;return(0,i.uX)(),(0,i.CE)("div",Jt,[(0,i.Lk)("div",Yt,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(g,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(f,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","placeholder","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(y,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","placeholder","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(p,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(k,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,i.bF)(g,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(h,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,i.Lk)("div",Zt,[(0,i.Lk)("div",eo,[(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,i.bF)(k,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(p,{class:(0,l.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,i.bF)(v,{useConfigLink:!0}),(0,i.Lk)("div",to,[(0,i.Lk)("h1",oo,[(0,i.Lk)("span",ao,(0,l.v_)(d.ownerName)+" ImgHub",1),(0,i.Lk)("a",so,(0,l.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub ",-1))])]),(0,i.bF)(C,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:e.$t("settings.linkFormatTitle"),modelValue:r.showUrlDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",io,[(0,i.Lk)("div",lo,[(0,i.Lk)("span",no,(0,l.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",ro,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[6]||(t[6]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",co,[(0,i.Lk)("div",uo,[(0,i.Lk)("span",po,(0,l.v_)(e.$t("settings.customLink")),1),(0,i.bF)(k,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ho,[(0,i.Lk)("div",mo,[(0,i.Lk)("span",go,(0,l.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",fo,[(0,i.Lk)("span",yo,(0,l.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[8]||(t[8]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",bo,[(0,i.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[11]||(t[11]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[12]||(t[12]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[13]||(t[13]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[14]||(t[14]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[15]||(t[15]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[16]||(t[16]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[17]||(t[17]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[18]||(t[18]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[19]||(t[19]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[20]||(t[20]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[21]||(t[21]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:e.$t("upload.announcementTitle"),modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",vo,[(0,i.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,ko)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var wo=o(46638),Fo=o(48903),Lo=o(90144),Uo=o(62388),$o={name:"UploadHome",mixins:[Fo.A],data(){return{selectedUrlForm:(0,Lo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,isQuickToolbarOpen:!1,isQuickToolbarPinned:!1,showAnnouncementDialog:!1,announcementContent:"",displayedAnnouncementRefreshAt:null,showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Uo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,St.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!0,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto",this.showAnnouncementIfNeeded()},components:{UploadForm:Pt,Footer:Q.A,ToggleDark:Kt.A,Logo:Wt.A,UploadHistory:H,UploadSettingsDialog:ze,DirectoryTreePicker:Nt.A,DirectorySuggestionInput:Gt},methods:{async fetchAvailableChannels(){try{const e=await Ut.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,a=this.availableChannels[this.uploadChannel]||[];t&&a.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&a.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,Uo.G)(e,{strict:t});return!!o.valid||(this.$message.error(o.error),!1)},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){Ut.A.post("/api/auth/logout",{authType:"user"},{withCredentials:!0}).finally(()=>{this.$store.commit("setUserLoggedIn",!1),this.$router.push("/login"),this.$message.success(this.$t("upload.logoutSuccess"))})},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleQuickToolbarMoreEnter(){this.isQuickToolbarOpen=!0},handleQuickToolbarLeave(){this.isQuickToolbarPinned||(this.isQuickToolbarOpen=!1)},toggleQuickToolbar(){this.isQuickToolbarPinned=!this.isQuickToolbarPinned,this.isQuickToolbarOpen=this.isQuickToolbarPinned},closeQuickToolbar(){this.isQuickToolbarPinned=!1,this.isQuickToolbarOpen=!1},handleQuickToolbarCommand(e){this.closeQuickToolbar(),"linkFormat"===e?this.openUrlDialog():"manage"===e?this.handleManage():"logout"===e&&this.handleLogout()},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){if("toggleTheme"===e)"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1));else if("toggleUploadMethod"===e)this.handleChangeUploadMethod();else if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},handleDesktopMenuCommand(e){if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?this.$t("theme.lightMode"):"light"===this.themeMode?this.$t("theme.darkMode"):this.$t("theme.autoMode")},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?this.openAnnouncement(e):this.$message.info(this.$t("upload.noAnnouncement"))},getAnnouncementRefreshAt(){const e=Number(this.userConfig?.announcementRefreshAt);return Number.isFinite(e)&&e>0?e:null},openAnnouncement(e){this.announcementContent=e,this.displayedAnnouncementRefreshAt=this.getAnnouncementRefreshAt(),this.showAnnouncementDialog=!0},showAnnouncementIfNeeded(){const e=this.userConfig?.announcement;if(!e)return;const t=this.getAnnouncementRefreshAt();if(t){const o=Number(localStorage.getItem("announcementAcknowledgedRefreshAt"));return void((!Number.isFinite(o)||t>o)&&this.openAnnouncement(e))}localStorage.getItem("announcementAcknowledgedAt")||this.openAnnouncement(e)},acknowledgeAnnouncement(){localStorage.setItem("announcementAcknowledgedAt",String(Date.now())),this.displayedAnnouncementRefreshAt&&localStorage.setItem("announcementAcknowledgedRefreshAt",String(this.displayedAnnouncementRefreshAt)),this.showAnnouncementDialog=!1},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const So=(0,z.A)($o,[["render",Co],["__scopeId","data-v-c4d6ef3e"]]);var To=So},23597:function(e,t,o){"use strict";o(85331)},30694:function(e,t,o){"use strict";o(85331)},33153:function(e,t,o){"use strict";e.exports=o.p+"img/logo.e8dbfa27.png"},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var a=o(99114),s=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),l=(o(19104),o(31802)),n=(o(13378),o(80047)),r=(o(99648),o(56768)),d=o(45130),c=o(24232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},g={class:"node-label"},f={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},k={class:"node-label"};function v(e,t,o,v,C,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=l.qk,$=i.Vc,S=s.pw,T=a.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:C.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>C.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[C.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",g,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:C.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>C.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",f,[C.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:1},8,["modelValue","title"])],64))])}var C=o(457),w=o(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await C.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(71241);const U=(0,L.A)(F,[["render",v],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},34896:function(e,t,o){"use strict";o(85331)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},48903:function(e,t,o){"use strict";var a=o(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const o=document.createElement("img");o.id="bg2",o.className="background-image2",o.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(o,e.firstChild)},initializeBackground(e,t=".login",o=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:o,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),l=document.getElementById("bg2");if(!i||!l)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const n=this.userConfig?.[e];"bing"===n?this.setupBingWallpaper(i,l,t):Array.isArray(n)&&n.length>1?this.setupCustomWallpaperCarousel(i,l,n,t):Array.isArray(n)&&1===n.length?this.setupSingleCustomWallpaper(i,n[0],t):o&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,o){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,o,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,o,a){this.loadBackgroundImage(e,o[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,o)},this.bkInterval)},setupSingleCustomWallpaper(e,t,o){this.loadBackgroundImage(e,t,o)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=o(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,o,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(o);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},l=new Image;l.onload=()=>{e.src=t,i()},l.onerror=()=>{e.src=t,i()},l.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const o=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${o}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const o=0!=e.style.opacity,a=o?e:t,s=o?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const l=new Image;l.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},l.src=i},switchCustomWallpaper(e,t,o){const a=0!=e.style.opacity,s=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%o.length;const l=o[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const n=new Image;n.onload=()=>{i.src=l,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},n.src=l},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),o=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.removeAttribute("src"),setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),o&&(o.style.transition="none",o.style.opacity=0,o.removeAttribute("src"),setTimeout(()=>{o&&(o.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&t.removeAttribute("src")},1200)),o&&(o.style.opacity=0,setTimeout(()=>{o&&o.removeAttribute("src")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,s);const l=document.getElementById("bg1"),n=document.getElementById("bg2");if(!l||!n)return void this.reinitializeBackground(e,t,a,s);const r=0!=l.style.opacity?l:n,d=0!=l.style.opacity?n:l,c=this.useDarkMode,u=o(c?10732:7835),p=new Image;p.onload=()=>{d.src=u,d.onload=()=>{r.style.opacity=0,setTimeout(()=>{d.style.opacity=this.bkOpacity},50)}},p.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},p.src=u},reinitializeBackground(e,t=".login",o=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,o,a)},100)}}}},50333:function(e,t,o){"use strict";o(85331),o(29092)},53676:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const s={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},l={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",(0,a.v6)(e.$attrs,{class:"channel-icon-wrapper"}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",s,[...t[0]||(t[0]=[(0,a.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...t[2]||(t[2]=[(0,a.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=o(71241);const c=(0,d.A)(r,[["render",n],["__scopeId","data-v-33933ada"]]);var u=c},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return s}});var a=o(46638);function s(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:a.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:a.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:a.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:a.Ay.global.t("validation.consecutiveSlashNotAllowed")};const s=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return s.test(e)?{valid:!1,error:a.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67819:function(e,t,o){"use strict";o(85331)},70797:function(e,t,o){"use strict";o.d(t,{A:function(){return l}});o(44114);var a=o(25507),s=o(16915);let i=!1;async function l(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),s.A.push("/adminLogin").finally(()=>{i=!1})),o}},76334:function(e,t,o){e.exports=o(11393)},79899:function(e,t,o){"use strict";o(85331)},85970:function(e,t,o){"use strict";o(85331)},86975:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i={key:0,class:"page-footer"},l=["href"];function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return d.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,s.v_)(d.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:d.footerLink,target:"_blank"},[(0,a.bF)(c,{icon:"paper-plane",class:"footer-link-icon"})],8,l)])]))}var r=o(60782),d={name:"Footer",computed:{...(0,r.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-08acbaa9"]]);var p=u},88830:function(e,t,o){"use strict";o(85331)},95385:function(e,t,o){"use strict";o(85331)},96682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},96808:function(e,t,o){"use strict";o(85331),o(18785),o(67819),o(85970),o(19104)}}]); +//# sourceMappingURL=136.e7c2a2d2.js.map \ No newline at end of file diff --git a/frontend-dist/js/136.e7c2a2d2.js.gz b/frontend-dist/js/136.e7c2a2d2.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d147304ab6a636a777f3faa8e8fea7865f9338e4 GIT binary patch literal 33680 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 E0J6;LYybcN literal 0 HcmV?d00001 diff --git a/frontend-dist/js/136.e7c2a2d2.js.map b/frontend-dist/js/136.e7c2a2d2.js.map new file mode 100644 index 00000000..87fd7758 --- /dev/null +++ b/frontend-dist/js/136.e7c2a2d2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/136.e7c2a2d2.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?5a8c","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?0f8d","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?2681","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?5e70","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?79b9","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?6707","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?5714","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?4482","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468"],"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=c93807da&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=c93807da&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-c93807da\"]])\n\nexport default __exports__","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.clearRecords'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadHistory.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('uploadHistory.pullToLoadMore')), 1))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('uploadHistory.noMoreRecords')), 1)) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('uploadHistory.emptyHistory')), 1)]))], 2);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm(this.$t('uploadHistory.clearConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success(this.$t('uploadHistory.recordsCleared'));\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm(this.$t('uploadHistory.deleteConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success(this.$t('uploadHistory.recordDeleted'));\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success(this.$t('uploadHistory.linkCopied'));\n }).catch(() => {\n this.$message.error(this.$t('uploadHistory.copyFailed'));\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=f70e7770&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=f70e7770&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f70e7770\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-header\"\n};\nconst _hoisted_3 = {\n class: \"section-title\"\n};\nconst _hoisted_4 = {\n class: \"section-content\"\n};\nconst _hoisted_5 = {\n class: \"setting-item\"\n};\nconst _hoisted_6 = {\n class: \"setting-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_8 = {\n class: \"setting-label\"\n};\nconst _hoisted_9 = {\n class: \"setting-item\"\n};\nconst _hoisted_10 = {\n class: \"setting-label\"\n};\nconst _hoisted_11 = {\n class: \"setting-item\"\n};\nconst _hoisted_12 = {\n class: \"setting-label\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"dialog-section\"\n};\nconst _hoisted_18 = {\n class: \"section-header\"\n};\nconst _hoisted_19 = {\n class: \"section-title\"\n};\nconst _hoisted_20 = {\n class: \"section-content\"\n};\nconst _hoisted_21 = {\n class: \"setting-item\"\n};\nconst _hoisted_22 = {\n class: \"setting-label\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_26 = {\n class: \"setting-label\"\n};\nconst _hoisted_27 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_28 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_30 = {\n class: \"setting-label\"\n};\nconst _hoisted_31 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_32 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_33 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_34 = {\n class: \"section-header\"\n};\nconst _hoisted_35 = {\n class: \"section-title\"\n};\nconst _hoisted_36 = {\n class: \"section-content\"\n};\nconst _hoisted_37 = {\n class: \"setting-item\"\n};\nconst _hoisted_38 = {\n class: \"setting-label\"\n};\nconst _hoisted_39 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('uploadSettings.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope upload-settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadSettings.uploadChannel')), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('uploadSettings.channelType')), 1), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"telegram\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"telegram\",\n class: \"channel-icon channel-brand-telegram\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"cfr2\",\n class: \"channel-icon channel-brand-cfr2\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"s3\",\n class: \"channel-icon channel-brand-s3\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"discord\",\n class: \"channel-icon channel-brand-discord\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"huggingface\",\n class: \"channel-icon channel-brand-huggingface\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"webdav\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"webdav\",\n class: \"channel-icon channel-brand-webdav\"\n }), _cache[18] || (_cache[18] = _createElementVNode(\"span\", null, \"WD\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createElementVNode(\"span\", _hoisted_30, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"span\", _hoisted_38, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","import ChannelIcon from '@/components/icons/ChannelIcon.vue';\nexport default {\n name: 'UploadSettingsDialog',\n components: {\n ChannelIcon\n },\n methods: {\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=bb927c90\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"./UploadSettingsDialog.css?vue&type=style&index=1&lang=css&external\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('uploadForm.copyFailed')\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=698179d6&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=698179d6&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-698179d6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = [\"innerHTML\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_5 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_6 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_7 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_8 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_9 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n innerHTML: _ctx.$t('upload.dragUploadText')\n }, null, 10, _hoisted_3)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: _ctx.$t('upload.pasteUrlPlaceholder'),\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteUploadBtn')), 1)]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteSave')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteExternal')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.retryFailed'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-retry\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.clearList'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearUploaded')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.name,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[7] || (_cache[7] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const fileType = file.file.type || 'application/octet-stream';\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', fileType);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error(this.$t('uploadForm.chunkInitFailed') + ': ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', fileType);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || this.$t('uploadForm.uploadError'));\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.chunkMerging'),\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', fileType);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.deleted', {\n name: this.truncateFilename(file.name)\n })\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.uploadSuccess', {\n name: this.truncateFilename(file.name)\n })\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.fileNotUploaded')\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(this.$t('uploadForm.compressedFileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(this.$t('uploadForm.compressFailedCannotUpload', {\n name: processedFile.name\n }));\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(this.$t('uploadForm.fileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copyAllSuccess')\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.fileListCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.fileListEmpty')\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.successFilesCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.successFilesEmpty')\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.urlRequestFailed')\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n this.retryFailedFiles(this.exceptionList);\n this.exceptionList = [];\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.noFailedFiles')\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? this.$t('uploadForm.autoRetryOn') : this.$t('uploadForm.autoRetryOff')\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files) {\n files.forEach(file => {\n const retryCount = file.retryCount || 0;\n if (retryCount < this.maxRetryCount) {\n file.retryCount = retryCount + 1;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.maxRetryReached', {\n name: file.name,\n max: this.maxRetryCount\n })\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error(this.$t('uploadForm.imageLoadFailed')));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=fca24b68&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=fca24b68&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-fca24b68\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-suggestion-input\",\n ref: \"wrapperRef\"\n};\nconst _hoisted_2 = {\n class: \"suggestion-dropdown\"\n};\nconst _hoisted_3 = {\n class: \"suggestion-list\"\n};\nconst _hoisted_4 = [\"title\", \"onMousedown\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_input, {\n ref: \"inputRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n placeholder: $props.placeholder,\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onInput: $options.handleInput\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onInput\"]), _withDirectives(_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"ul\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, (item, index) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: index,\n class: \"suggestion-item\",\n title: item.value,\n onMousedown: _withModifiers($event => $options.selectItem(item), [\"prevent\"])\n }, _toDisplayString(item.value), 41, _hoisted_4);\n }), 128))])], 512), [[_vShow, $data.dropdownVisible && $data.suggestions.length > 0]])], 512);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n dropdownVisible: false,\n isFocused: false,\n suggestions: []\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n watch: {\n modelValue() {\n // 外部修改 modelValue 时也刷新建议\n if (this.isFocused) {\n this.refreshSuggestions();\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n setTimeout(() => {\n if (this.isFocused) {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n }\n }, 500);\n },\n handleBlur() {\n this.isFocused = false;\n this.dropdownVisible = false;\n this.$emit('blur');\n },\n handleInput(val) {\n // val 是 el-input @input 事件传来的最新值\n this.$nextTick(() => {\n this.refreshSuggestions();\n if (this.isFocused) {\n this.dropdownVisible = true;\n }\n });\n },\n selectItem(item) {\n const path = item.value;\n this.inputValue = path;\n this.$emit('select', path);\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n this.$nextTick(() => {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n this.$refs.inputRef?.focus();\n });\n } else {\n this.dropdownVisible = false;\n }\n },\n refreshSuggestions() {\n this.suggestions = this.getDirectorySuggestions(this.modelValue || '');\n },\n normalizeDirectoryPath(path) {\n if (!path) return '/';\n let normalized = path;\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized !== '/' && !normalized.endsWith('/')) normalized += '/';\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) return;\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n return parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=28b8eda7&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=28b8eda7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-28b8eda7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n class: \"quick-toolbar-actions\"\n};\nconst _hoisted_4 = {\n class: \"quick-toolbar-actions-inner\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"title-crayon-text\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_8 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-header\"\n};\nconst _hoisted_11 = {\n class: \"section-title\"\n};\nconst _hoisted_12 = {\n class: \"section-content\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"setting-item\"\n};\nconst _hoisted_18 = {\n class: \"setting-label\"\n};\nconst _hoisted_19 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_20 = {\n class: \"setting-label\"\n};\nconst _hoisted_21 = {\n class: \"dialog-action\"\n};\nconst _hoisted_22 = [\"innerHTML\"];\nconst _hoisted_23 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_dropdown, {\n class: \"more-dropdown desktop-only\",\n trigger: \"click\",\n onCommand: $options.handleDesktopMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('upload.switchUploadMethod'),\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\", \"disabled\"]), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? _ctx.$t('upload.pasteUpload') : _ctx.$t('upload.fileUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quick-toolbar\", {\n 'is-expanded': $data.isQuickToolbarOpen\n }]),\n onMouseleave: _cache[5] || (_cache[5] = (...args) => $options.handleQuickToolbarLeave && $options.handleQuickToolbarLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.logout'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleQuickToolbarCommand('logout'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.manage'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleQuickToolbarCommand('manage'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleQuickToolbarCommand('linkFormat'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: $options.openCompressDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_button, {\n class: _normalizeClass([\"quick-toolbar-button quick-toolbar-more\", {\n 'is-active': $data.isQuickToolbarOpen\n }]),\n \"aria-expanded\": $data.isQuickToolbarOpen,\n onMouseenter: $options.handleQuickToolbarMoreEnter,\n onClick: $options.toggleQuickToolbar\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"quick-toolbar-icon quick-toolbar-toggle-icon\"\n })]),\n _: 1\n }, 8, [\"class\", \"aria-expanded\", \"onMouseenter\", \"onClick\"])], 34), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString($options.ownerName) + \" ImgHub\", 1), _createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub \", -1))])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('settings.linkFormatTitle'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [_createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_21, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[9] || (_cache[9] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[12] || (_cache[12] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[13] || (_cache[13] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[14] || (_cache[14] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[15] || (_cache[15] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[16] || (_cache[16] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[17] || (_cache[17] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[18] || (_cache[18] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[19] || (_cache[19] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[20] || (_cache[20] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[21] || (_cache[21] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: _ctx.$t('upload.announcementTitle'),\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_23, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.acknowledgeAnnouncement\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_22)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[23] || (_cache[23] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { setLocale } from '@/locales';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n isQuickToolbarOpen: false,\n isQuickToolbarPinned: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n displayedAnnouncementRefreshAt: null,\n // 当前弹窗所展示的公告版本\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', true, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n this.showAnnouncementIfNeeded();\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n this.$message.error(result.error);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n axios.post('/api/auth/logout', {\n authType: 'user'\n }, {\n withCredentials: true\n }).finally(() => {\n this.$store.commit('setUserLoggedIn', false);\n this.$router.push('/login');\n this.$message.success(this.$t('upload.logoutSuccess'));\n });\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleQuickToolbarMoreEnter() {\n this.isQuickToolbarOpen = true;\n },\n handleQuickToolbarLeave() {\n if (!this.isQuickToolbarPinned) {\n this.isQuickToolbarOpen = false;\n }\n },\n toggleQuickToolbar() {\n this.isQuickToolbarPinned = !this.isQuickToolbarPinned;\n this.isQuickToolbarOpen = this.isQuickToolbarPinned;\n },\n closeQuickToolbar() {\n this.isQuickToolbarPinned = false;\n this.isQuickToolbarOpen = false;\n },\n handleQuickToolbarCommand(command) {\n this.closeQuickToolbar();\n if (command === 'linkFormat') {\n this.openUrlDialog();\n } else if (command === 'manage') {\n this.handleManage();\n } else if (command === 'logout') {\n this.handleLogout();\n }\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n handleDesktopMenuCommand(command) {\n if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return this.$t('theme.lightMode');\n if (this.themeMode === 'light') return this.$t('theme.darkMode');\n return this.$t('theme.autoMode');\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.openAnnouncement(announcement);\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\n },\n getAnnouncementRefreshAt() {\n const refreshAt = Number(this.userConfig?.announcementRefreshAt);\n return Number.isFinite(refreshAt) && refreshAt > 0 ? refreshAt : null;\n },\n openAnnouncement(announcement) {\n this.announcementContent = announcement;\n this.displayedAnnouncementRefreshAt = this.getAnnouncementRefreshAt();\n this.showAnnouncementDialog = true;\n },\n showAnnouncementIfNeeded() {\n const announcement = this.userConfig?.announcement;\n if (!announcement) return;\n const refreshAt = this.getAnnouncementRefreshAt();\n if (refreshAt) {\n const acknowledgedRefreshAt = Number(localStorage.getItem('announcementAcknowledgedRefreshAt'));\n if (!Number.isFinite(acknowledgedRefreshAt) || refreshAt > acknowledgedRefreshAt) {\n this.openAnnouncement(announcement);\n }\n return;\n }\n\n // 尚未产生刷新时间的旧公告在升级后再展示一次,确认后使用新版时间标记。\n if (!localStorage.getItem('announcementAcknowledgedAt')) {\n this.openAnnouncement(announcement);\n }\n },\n acknowledgeAnnouncement() {\n localStorage.setItem('announcementAcknowledgedAt', String(Date.now()));\n if (this.displayedAnnouncementRefreshAt) {\n localStorage.setItem('announcementAcknowledgedRefreshAt', String(this.displayedAnnouncementRefreshAt));\n }\n this.showAnnouncementDialog = false;\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=c4d6ef3e&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=c4d6ef3e&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-c4d6ef3e\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\nimport '@/styles/background.css'\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.removeAttribute('src')\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.removeAttribute('src')\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.removeAttribute('src')\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.removeAttribute('src')\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: \"channel-icon-wrapper\"\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=33933ada&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=33933ada&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-33933ada\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08acbaa9\"]])\n\nexport default __exports__"],"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","t","e","module","exports","n","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","bind","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","Image","onload","onerror","Error","document","createElement","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","result","readAsDataURL","h","assign","getContext","Number","scale","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","quality","isNaN","accuracy","filter","sort","abs","pow","v","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_el_button","_component_el_tooltip","show","$t","count","totalCount","content","placement","circle","toggleViewMode","viewMode","clearHistory","$event","$emit","historyList","ref","onScroll","handleScroll","groupedHistory","group","date","items","item","time","isImage","url","loading","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","title","formatTime","hasMore","loadingMore","spin","allHistory","pageSize","currentPage","watch","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","mounted","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","console","error","setTimeout","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_component_ChannelIcon","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","modelValue","visible","dialogWidth","uploadChannel","label","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","components","ChannelIcon","startsWith","Array","emits","set","innerWidth","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","status","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","_component_CameraFilled","_component_el_upload","_component_el_radio_button","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","$nextTick","$refs","scrollContainer","setScrollTop","deep","immediate","location","protocol","host","addEventListener","handlePaste","storeAutoReUpload","beforeUnmount","removeEventListener","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","abortController","AbortController","formData","FormData","append","err","axios","encodeURIComponent","method","withAuthCode","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","onProgress","percent","res","code","response","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","warn","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","File","myUploadCount","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","trim","test","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","ok","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","index","undefined","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","path","normalizedPath","normalizeDirectoryPath","children","inputRef","focus","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","node","parentPath","isArray","child","tree","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","queryString","parentChildren","keyword","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","trigger","onCommand","handleDesktopMenuCommand","command","announcementAvailable","$i18n","locale","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","onSelect","handleDirectorySelect","source","handleChangeUploadMethod","handleMobileMenuCommand","getThemeIcon","getThemeText","isQuickToolbarOpen","handleQuickToolbarLeave","handleQuickToolbarCommand","openCompressDialog","onMouseenter","handleQuickToolbarMoreEnter","toggleQuickToolbar","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","acknowledgeAnnouncement","announcementContent","showHistory","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","isQuickToolbarPinned","displayedAnnouncementRefreshAt","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","strict","valid","storeUploadFolder","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","showAnnouncementIfNeeded","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","handleManage","$router","defaultValue","num","parseFloat","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","popoverVisible","transition","reference","$slots","fetchDirectoryTree","treeData","treeProps","currentDirectory","onNodeClick","handleNodeClick","expanded","openDrawer","drawerVisible","direction","windowWidth","newVal","treeRef","store","nodesMap","treeRefMobile","setCurrentKey","handleResize","fetchWithAuth","json","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","oldVal","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","getElementById","textContent","head","existingStyle","remove","createBackgroundElements","bg1","className","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","dispatch","bingWallPapers","loadBackgroundImage","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","zoomDuration","transformOrigin","computedStyle","getComputedStyle","isolation","isBg1Current","curBg","nextBg","nextUrl","clearBackgroundInterval","removeAttribute","reinitializeBackground","currentBg","newThemeImage","preloadImg","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/136.e7c2a2d2.js.map.gz b/frontend-dist/js/136.e7c2a2d2.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..246e85a45b1e4f790074f21cb7a0fd88d3e74c97 GIT binary patch literal 85182 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�b#{8T7N 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 )9)f2Y9|NVzNU%QZ+ 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/148.b1b1da05.js b/frontend-dist/js/148.b1b1da05.js deleted file mode 100644 index 4ba35a97..00000000 --- a/frontend-dist/js/148.b1b1da05.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[148],{213:function(e,t,o){"use strict";o(85331),o(19104)},732:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i=["href","target"],l=["alt","src"];function n(e,t,o,n,r,d){return(0,a.uX)(),(0,a.CE)("a",{href:d.logoHref,target:o.target,class:(0,s.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,s.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,l)],10,i)}var r=o(60782),d={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,r.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||o(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-17f54292"]]);var p=u},2893:function(e,t,o){"use strict";o(85331)},3261:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},7835:function(e,t,o){"use strict";e.exports=o.p+"img/background-light.f17603bc.jpg"},10456:function(e,t,o){"use strict";o(85331)},10732:function(e,t,o){"use strict";e.exports=o.p+"img/background.de27f549.jpg"},11393:function(e,t,o){o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(a){if(t[a])return t[a].exports;var s=t[a]={i:a,l:!1,exports:{}};return e[a].call(s.exports,s,s.exports,o),s.l=!0,s.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)o.d(a,s,function(t){return e[t]}.bind(null,s));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var a;function s(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return l}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return g}),o.d(t,"urltoImage",function(){return f}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return k}),o.d(t,"EImageType",function(){return a}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(a||(a={}));var i=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function l(e,t=.92,o=a.JPEG){return i(this,void 0,void 0,function*(){return s(o)||(o=a.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=a.JPEG){return new Promise(a=>e.toBlob(e=>a(e),o,t))}var r=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let a=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let l=i.length;const n=new Uint8Array(l);for(;l--;)n[l]=i.charCodeAt(l);return s(t)&&(a=t),new Blob([n],{type:a})})}function c(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),a.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const a=document.createEvent("MouseEvents");a.initEvent("click",!1,!1),o.dispatchEvent(a),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),a=document.createElement("canvas"),s=a.getContext("2d");let i,l;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;l=e.width*t,i=e.height*t}else l=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=l,a.width=i):(a.height=i,a.width=l),o.orientation){case 3:s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 8:s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;case 2:s.translate(a.width,0),s.scale(-1,1),s.drawImage(e,0,0,a.width,a.height);break;case 4:s.translate(a.width,0),s.scale(-1,1),s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:s.translate(a.width,0),s.scale(-1,1),s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 7:s.translate(a.width,0),s.scale(-1,1),s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;default:s.drawImage(e,0,0,a.width,a.height)}return a})}function g(e){return fetch(e).then(e=>e.blob())}function f(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),a.src=e})}var y=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;s(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield l(u,t.quality,n),g=yield d(h,i);return g.size>e.size?e:g})}function k(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;s(t.type)&&(h=t.type,u=t.type);const g=yield c(r),f=yield m(g,Object.assign({},t));let y,b=.5;const k=[null,null];for(let e=1;e<=7;e++){y=yield l(f,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...k].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;k[0]=y,b+=Math.pow(.5,e+1)}}const v=yield d(y,u);return v.size>e.size?e:v})}}])})},13378:function(e,t,o){"use strict";o(85331),o(38736),o(79899)},15616:function(e,t,o){"use strict";o(85331),o(97197)},18785:function(e,t,o){"use strict";o(85331)},19104:function(e,t,o){"use strict";o(85331)},23597:function(e,t,o){"use strict";o(85331)},30694:function(e,t,o){"use strict";o(85331)},33153:function(e,t,o){"use strict";e.exports=o.p+"img/logo.e8dbfa27.png"},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var a=o(99114),s=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),l=(o(19104),o(31802)),n=(o(13378),o(80047)),r=(o(99648),o(56768)),d=o(45130),c=o(24232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},g={class:"node-label"},f={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},k={class:"node-label"};function v(e,t,o,v,C,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=l.qk,$=i.Vc,S=s.pw,T=a.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:C.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>C.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[C.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",g,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:C.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>C.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",f,[C.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:1},8,["modelValue","title"])],64))])}var C=o(457),w=o(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await C.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(71241);const U=(0,L.A)(F,[["render",v],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},34896:function(e,t,o){"use strict";o(85331)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},48903:function(e,t,o){"use strict";var a=o(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const o=document.createElement("img");o.id="bg2",o.className="background-image2",o.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(o,e.firstChild)},initializeBackground(e,t=".login",o=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:o,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),l=document.getElementById("bg2");if(!i||!l)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const n=this.userConfig?.[e];"bing"===n?this.setupBingWallpaper(i,l,t):Array.isArray(n)&&n.length>1?this.setupCustomWallpaperCarousel(i,l,n,t):Array.isArray(n)&&1===n.length?this.setupSingleCustomWallpaper(i,n[0],t):o&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,o){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,o,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,o,a){this.loadBackgroundImage(e,o[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,o)},this.bkInterval)},setupSingleCustomWallpaper(e,t,o){this.loadBackgroundImage(e,t,o)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=o(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,o,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(o);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},l=new Image;l.onload=()=>{e.src=t,i()},l.onerror=()=>{e.src=t,i()},l.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const o=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${o}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const o=0!=e.style.opacity,a=o?e:t,s=o?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const l=new Image;l.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},l.src=i},switchCustomWallpaper(e,t,o){const a=0!=e.style.opacity,s=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%o.length;const l=o[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const n=new Image;n.onload=()=>{i.src=l,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},n.src=l},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),o=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),o&&(o.style.transition="none",o.style.opacity=0,o.src="",setTimeout(()=>{o&&(o.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),o&&(o.style.opacity=0,setTimeout(()=>{o&&(o.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,s);const l=document.getElementById("bg1"),n=document.getElementById("bg2");if(!l||!n)return void this.reinitializeBackground(e,t,a,s);const r=0!=l.style.opacity?l:n,d=0!=l.style.opacity?n:l,c=this.useDarkMode,u=o(c?10732:7835),p=new Image;p.onload=()=>{d.src=u,d.onload=()=>{r.style.opacity=0,setTimeout(()=>{d.style.opacity=this.bkOpacity},50)}},p.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},p.src=u},reinitializeBackground(e,t=".login",o=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,o,a)},100)}}}},50148:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return To}});var a=o(78507),s=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),l=o(24232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},g=["src"],f=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},k={class:"grid-actions"},v={class:"grid-info"},C=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},x=["title"],_=["title"],I={class:"list-meta"},M={class:"upload-time"},A={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},R={key:1,class:"load-more-hint"},B={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function W(e,t,o,W,N,z){const V=(0,i.g2)("font-awesome-icon"),H=s.S2,Q=a.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,l.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,l.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,l.v_)(e.$t("uploadHistory.totalRecords",{count:N.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:z.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"grid"===N.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:z.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"times"})]),_:1})])]),N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>z.handleScroll&&z.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(z.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[4]||(t[4]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,l.v_)(e.date),1)]),"grid"===N.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,g)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,f)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(V,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",k,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",v,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,C),(0,i.Lk)("div",w,(0,l.v_)(z.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,U)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(V,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,x),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,l.v_)(e.url),9,_)]),(0,i.Lk)("div",I,[(0,i.Lk)("div",M,(0,l.v_)(z.formatTime(e.time)),1)]),(0,i.Lk)("div",A,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[N.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(V,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",R,(0,l.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",B,(0,l.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(V,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,l.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var N={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),a=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[a]||(e[a]=[]),e[a].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,a=t.scrollHeight,s=t.clientHeight;a-o-s<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),l=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${s} ${i}:${l}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success(this.$t("uploadHistory.linkCopied"))}).catch(()=>{this.$message.error(this.$t("uploadHistory.copyFailed"))})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(96682)}}},z=o(71241);const V=(0,z.A)(N,[["render",W],["__scopeId","data-v-f70e7770"]]);var H=V,Q=o(86975),X=o(9267),q=(o(15616),o(81418)),O=(o(50333),o(74757)),j=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810)),Y=(o(34396),o(4885),o(53676));const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item"},se={class:"setting-label"},ie={key:0,class:"setting-item"},le={class:"setting-label"},ne={class:"setting-item"},re={class:"setting-label"},de={class:"setting-item"},ce={class:"setting-label"},ue={class:"dialog-section"},pe={class:"section-header"},he={class:"section-title"},me={class:"section-content"},ge={class:"dialog-section"},fe={class:"section-header"},ye={class:"section-title"},be={class:"section-content"},ke={class:"setting-item"},ve={class:"setting-label"},Ce={class:"setting-item"},we={class:"setting-label"},Fe={key:0,class:"setting-item slider-item"},Le={class:"setting-label"},Ue={class:"slider-wrapper"},$e={class:"slider-input-wrapper"},Se={key:1,class:"setting-item slider-item"},Te={class:"setting-label"},xe={class:"slider-wrapper"},_e={class:"slider-input-wrapper"},Ie={key:0,class:"dialog-section"},Me={class:"section-header"},Ae={class:"section-title"},Ee={class:"section-content"},De={class:"setting-item"},Re={class:"setting-label"},Be={class:"dialog-action"};function Pe(e,t,o,n,r,d){const c=Y.A,u=J.ll,p=J.MQ,h=(0,i.g2)("font-awesome-icon"),m=a.R7,g=K.P9,f=K.AV,y=G.WK,b=j.qi,k=O.B8,v=q.lq,C=s.S2,w=X.kZ;return(0,i.uX)(),(0,i.Wv)(w,{title:e.$t("uploadSettings.title"),modelValue:d.visible,"onUpdate:modelValue":t[12]||(t[12]=e=>d.visible=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[(0,i.Lk)("span",te,(0,l.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",oe,[(0,i.Lk)("div",ae,[(0,i.Lk)("span",se,(0,l.v_)(e.$t("uploadSettings.channelType")),1),(0,i.bF)(p,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"telegram",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"telegram",class:"channel-icon channel-brand-telegram"}),t[13]||(t[13]=(0,i.Lk)("span",null,"TG",-1))]),_:1}),(0,i.bF)(u,{label:"cfr2",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"cfr2",class:"channel-icon channel-brand-cfr2"}),t[14]||(t[14]=(0,i.Lk)("span",null,"R2",-1))]),_:1}),(0,i.bF)(u,{label:"s3",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"s3",class:"channel-icon channel-brand-s3"}),t[15]||(t[15]=(0,i.Lk)("span",null,"S3",-1))]),_:1}),(0,i.bF)(u,{label:"discord",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"discord",class:"channel-icon channel-brand-discord"}),t[16]||(t[16]=(0,i.Lk)("span",null,"DC",-1))]),_:1}),(0,i.bF)(u,{label:"huggingface",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"huggingface",class:"channel-icon channel-brand-huggingface"}),t[17]||(t[17]=(0,i.Lk)("span",null,"HF",-1))]),_:1}),(0,i.bF)(u,{label:"webdav",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"webdav",class:"channel-icon channel-brand-webdav"}),t[18]||(t[18]=(0,i.Lk)("span",null,"WD",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",ie,[(0,i.Lk)("span",le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(f,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(g,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",ne,[(0,i.Lk)("span",re,(0,l.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(y,{"model-value":o.uploadFolder,"onUpdate:modelValue":d.handleUploadFolderInput,placeholder:e.$t("uploadSettings.uploadDirectoryPlaceholder"),class:"setting-input"},null,8,["model-value","onUpdate:modelValue","placeholder"])]),(0,i.Lk)("div",de,[(0,i.Lk)("span",ce,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ue,[(0,i.Lk)("div",pe,[(0,i.Lk)("span",he,(0,l.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",me,[(0,i.bF)(p,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(u,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(u,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(u,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",ge,[(0,i.Lk)("div",fe,[(0,i.Lk)("span",ye,(0,l.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",be,[(0,i.Lk)("div",ke,[(0,i.Lk)("span",ve,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",Ce,[(0,i.Lk)("span",we,(0,l.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(b,{"model-value":o.customerCompress,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Fe,[(0,i.Lk)("span",Le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ue,[(0,i.bF)(k,{"model-value":o.compressBar,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",$e,[(0,i.bF)(v,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[19]||(t[19]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Se,[(0,i.Lk)("span",Te,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",xe,[(0,i.bF)(k,{"model-value":o.compressQuality,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",_e,[(0,i.bF)(v,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[20]||(t[20]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.Lk)("div",Me,[(0,i.Lk)("span",Ae,(0,l.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ee,[(0,i.Lk)("div",De,[(0,i.Lk)("span",Re,(0,l.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(b,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Be,[(0,i.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var We={name:"UploadSettingsDialog",components:{ChannelIcon:Y.A},methods:{handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const Ne=(0,z.A)(We,[["render",Pe]]);var ze=Ne,Ve=o(88559),He=(o(85970),o(813)),Qe=(o(34896),o(69655)),Xe=(o(2893),o(74253));o(79899);const qe={class:"upload-list-item"},Oe=["href"],je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Ge=["src"],Ke=["src"],Je={key:2,style:{width:"10vw","border-radius":"12px"}},Ye={class:"upload-list-item-content"},Ze={class:"upload-list-item-name-wrapper"},et={key:0,class:"upload-list-item-url"},tt={class:"upload-list-item-url-row"},ot={class:"upload-list-item-url-row"},at={key:1,class:"upload-list-item-progress"},st={class:"upload-list-item-action"};function it(e,t,o,a,s,n){const r=(0,i.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=Qe.ve,p=(0,i.g2)("Link"),h=He.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",qe,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",je,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ge),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,Ke)):((0,i.uX)(),(0,i.CE)("div",Je,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Oe),(0,i.Lk)("div",Ye,[(0,i.Lk)("div",Ze,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",et,[(0,i.Lk)("div",tt,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",ot,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",at,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",st,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var lt=o(57477);const nt=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],rt=["mp4","webm","ogg","mkv"];var dt={name:"UploadFileItem",components:{Link:lt.Link,Delete:lt.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return nt.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return rt.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const ct=(0,z.A)(dt,[["render",it],["__scopeId","data-v-3620a174"]]);var ut=ct,pt=o(62086),ht=(o(40670),o(88830),o(23597),o(70683)),mt=(o(95385),o(3261),o(47358));const gt={class:"upload-form"},ft={class:"upload-card-glow",ref:"uploadCardGlow"},yt=["innerHTML"],bt={key:0,class:"upload-card"},kt={class:"paste-card-actions"},vt={class:"upload-list-dashboard-action"},Ct={class:"modern-action-group"},wt={class:"modern-dropdown-item-content"},Ft={class:"modern-action-btn modern-action-btn-danger"};function Lt(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=He.tk,h=mt.j5,m=G.WK,g=s.S2,f=J.Zh,y=J.MQ,b=ht.Ik,k=(0,i.g2)("List"),v=(0,i.g2)("Checked"),C=(0,i.g2)("Failed"),w=Xe.$g,F=(0,i.g2)("font-awesome-icon"),L=a.R7,U=j.qi,$=pt.c6,S=pt.Iy,T=pt.dW,x=ut,_=Ve.kA;return(0,i.uX)(),(0,i.CE)("div",gt,[(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e))},[(0,i.Lk)("div",ft,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,l.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,l.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(u)]),_:1},8,["class"]),(0,i.Lk)("div",{class:(0,l.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,yt)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",bt,[(0,i.bF)(b,{class:(0,l.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:e.$t("upload.pasteUrlPlaceholder"),type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","placeholder","rows"]),(0,i.Lk)("div",kt,[(0,i.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,i.bF)(y,{modelValue:d.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>d.pasteUploadMethod=e),class:"paste-card-method-group",size:c.pasteCardMethodButtonSize},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"save"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteSave")),1)]),_:1}),(0,i.bF)(f,{label:"external"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteExternal")),1)]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,l.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(_,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(w,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",vt,[(0,i.Lk)("div",Ct,[(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[4]||(t[4]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(F,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",wt,[(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadForm.autoRetry")),1),(0,i.bF)(U,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[5]||(t[5]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)($,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",Ft,[(0,i.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)(x,{key:e.name,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[7]||(t[7]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var Ut=o(457),$t=o(76334),St=o(60782);function Tt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function xt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function _t(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Tt(e.srcID,e.name,t);Object.assign(e,o)})}const It=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=(e,t)=>e>>>t|e<<32-t;function At(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=Mt(o[u-15],7)^Mt(o[u-15],18)^o[u-15]>>>3,t=Mt(o[u-2],17)^Mt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,s,i,l,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Mt(n,6)^Mt(n,11)^Mt(n,25),t=n&r^~n&d,p=c+e+t+It[u]+o[u]>>>0,h=Mt(a,2)^Mt(a,13)^Mt(a,22),m=a&s^a&i^s&i,g=h+m>>>0;c=d,d=r,r=n,n=l+p>>>0,l=i,i=s,s=a,a=p+g>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+s>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+l>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function Et(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(s){a+=s.length;let i=0;if(o>0){const a=64-o,l=Math.min(a,s.length);t.set(s.subarray(0,l),o),o+=l,i=l,64===o&&(At(t,e),o=0)}while(i+64<=s.length)At(s.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),At(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(s/4294967296),!1),i.setUint32(60,s>>>0,!1),At(t,e);let l="";for(let t=0;t<8;t++)l+=e[t].toString(16).padStart(8,"0");return l}}}async function Dt(e){const t=Et(),o=4194304;let a=0;while(athis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){_t(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&_t(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,St.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),a=o?.uploadChannel||this.uploadChannel;if("external"===a)return void this.uploadSingleFile(e);if("huggingface"===a){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===a){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const s=20971520;e.file.size>s?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,a=t.uploadChannel||this.uploadChannel,s=this.autoRetry&&"external"!==a,i="external"===a?"default":this.uploadNameType,l=new AbortController;this.abortControllers.set(e.file.uid,l);const n=new FormData;if(n.append("file",e.file),"external"===a&&n.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Dt(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Ut.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+s+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:l.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,a=new AbortController;this.abortControllers.set(e.file.uid,a);const s="discord"===o?9437184:16777216,i=e.file.size,l=e.file.type||"application/octet-stream",n=Math.ceil(i/s),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType;let u=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),u=await Dt(e.file),console.log("SHA256 computed:",u)}catch(p){console.error("Failed to compute SHA256:",p)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",l),t.append("totalChunks",n.toString());const h=await(0,Ut.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!h.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+h.data.message);const m=h.data.uploadId;console.log("分块上传初始化成功,uploadId:",m);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=m);const f=3,y=new Array(n).fill(0);let b=0,k=!1,v="",C=!1;const w=async t=>{if(k||C)return;const u=t*s,h=Math.min(u+s,i),g=e.file.slice(u,h),f=new FormData;f.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",n.toString()),f.append("uploadId",m),f.append("originalFileName",e.file.name),f.append("originalFileType",l);let b=0;const w=3;while(b{if(k||C)return;const a=Math.round(o.loaded/o.total*100);y[t]=a;const s=Math.round(y.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:s,file:e.file})}})}catch(p){if("CanceledError"===p.name||"ERR_CANCELED"===p.code)return C=!0,void console.log("分块上传已取消:",e.file.name);if(b++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${b}/${w}):`,p),b>=w)throw k=!0,v=`分块 ${t+1}/${n} 上传失败: ${p.message}`,new Error(v);await new Promise(e=>setTimeout(e,2e3*b))}}},F=[];for(let e=0;e{while(bt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),p.response&&401!==p.response.status?(this.exceptionList.push(e),e.onError(p,e.file)):p.response||(this.exceptionList.push(e),e.onError(p,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Ut.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const a=o.uploadChannel||this.uploadChannel;if("external"!==a){const a=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+a;const s=Tt(a,t.name,this.rootUrl);Object.assign(o,s),o.srcID=a}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.$t("uploadForm.uploadSuccess",{name:this.truncateFilename(t.name)})}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(a){this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(xt(e,this.selectedUrlForm)),this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})):this.$message({type:"warning",message:this.$t("uploadForm.fileNotUploaded")})},beforeUpload(e){return new Promise(async(t,o)=>{let a=e;const s=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(s)try{const t=await this.convertImageToWebp(e);t&&(a=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,l=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)$t.compressAccurately(a,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const s=new File([t],a.name,{type:t.type});s.uid=e.uid;const i=this.uploadCount++,l=this.serverCompress&&s.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(s,l):setTimeout(()=>{n(s,l),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(l){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);0===e?n(a,t):setTimeout(()=>{n(a,t),this.uploadCount--},300*e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>xt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:this.$t("uploadForm.copyAllSuccess")})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:this.$t("uploadForm.fileListCleared")})):this.$message({type:"info",message:this.$t("uploadForm.fileListEmpty")})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:this.$t("uploadForm.successFilesCleared")})):this.$message({type:"info",message:this.$t("uploadForm.successFilesEmpty")})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,l=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:s,htmlURL:i,ubbURL:l,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&Ut.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(s){a=""}}""===a&&(o=t.exec(i),null!=o&&o[1]&&(a=decodeURIComponent(o[1])))}if(""===a){const t=new URL(e);a=t.pathname.split("/").pop()}if(""===a){const o=new URL(e);let s=o.pathname.split(".").pop();(!s||""===s||s.length>10)&&(s="bin"),a="PastedFile"+Date.now()+t+"."+s}const l=o.data,n=new File([l],a,{type:l.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:this.$t("uploadForm.urlRequestFailed")})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:this.$t("uploadForm.noFailedFiles")})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?this.$t("uploadForm.autoRetryOn"):this.$t("uploadForm.autoRetryOff")}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;tthis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:this.$t("uploadForm.maxRetryReached",{name:e.name,max:this.maxRetryCount})})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Dt(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const a=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),s=btoa(String.fromCharCode(...a));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,Ut.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:s,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const l=i.data;if(console.log("Upload info:",l),l.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(l.needsLfs&&l.uploadAction){const{href:t,header:a}=l.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,l,o);else{console.log("Uploading to S3 (basic)...");const s=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!s.ok){const e=await s.text();throw new Error(`S3 upload failed: ${s.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,Ut.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:l.fullId,filePath:l.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:l.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(a){if("CanceledError"===a.name||"ERR_CANCELED"===a.code||"AbortError"===a.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",a),this.exceptionList.push(e),e.onError(a,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:s,header:i}=a,l=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${l}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,a=t*l,s=Math.min(a+l,e.file.size),n=e.file.slice(a,s);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(s,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const a=new Image,s=document.createElement("canvas"),i=s.getContext("2d");a.onload=()=>{s.width=a.width,s.height=a.height,i.drawImage(a,0,0),s.toBlob(s=>{if(s){const o=e.name,a=o.lastIndexOf("."),i=a>0?o.substring(0,a)+".webp":o+".webp",l=new File([s],i,{type:"image/webp"});l.uid=e.uid,t(l)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(a.src)},"image/webp",.92)},a.onerror=()=>{URL.revokeObjectURL(a.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},a.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),a=e.clientX-o.left,s=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=s+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Bt=(0,z.A)(Rt,[["render",Lt],["__scopeId","data-v-5afbc1b3"]]);var Pt=Bt,Wt=o(732),Nt=o(33892),zt=o(45130);const Vt={class:"directory-suggestion-input",ref:"wrapperRef"},Ht={class:"suggestion-dropdown"},Qt={class:"suggestion-list"},Xt=["title","onMousedown"];function qt(e,t,o,a,s,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",Vt,[(0,i.bF)(r,{ref:"inputRef",modelValue:n.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputValue=e),placeholder:o.placeholder,onFocus:n.handleFocus,onBlur:n.handleBlur,onInput:n.handleInput},null,8,["modelValue","placeholder","onFocus","onBlur","onInput"]),(0,i.bo)((0,i.Lk)("div",Ht,[(0,i.Lk)("ul",Qt,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,zt.D$)(t=>n.selectItem(e),["prevent"])},(0,l.v_)(e.value),41,Xt))),128))])],512),[[zt.aG,s.dropdownVisible&&s.suggestions.length>0]])],512)}var Ot={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,dropdownVisible:!1,isFocused:!1,suggestions:[]}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{modelValue(){this.isFocused&&this.refreshSuggestions()}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.ensureDirectoryTreeLoaded(),this.$emit("focus"),setTimeout(()=>{this.isFocused&&(this.refreshSuggestions(),this.dropdownVisible=!0)},500)},handleBlur(){this.isFocused=!1,this.dropdownVisible=!1,this.$emit("blur")},handleInput(e){this.$nextTick(()=>{this.refreshSuggestions(),this.isFocused&&(this.dropdownVisible=!0)})},selectItem(e){const t=e.value;this.inputValue=t,this.$emit("select",t);const o=this.normalizeDirectoryPath(t),a=this.directoryChildrenMap[o];a&&a.length>0?this.$nextTick(()=>{this.refreshSuggestions(),this.dropdownVisible=!0,this.$refs.inputRef?.focus()}):this.dropdownVisible=!1},refreshSuggestions(){this.suggestions=this.getDirectorySuggestions(this.modelValue||"")},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const a=this.normalizeDirectoryPath(e.path),s=Array.isArray(e.children)?e.children:[];t[a]=s.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),s.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Ut.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),a=o.split("/"),s=a[a.length-1]||"",i=a.slice(0,-1).filter(Boolean),l=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:s,parentPath:l}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),a=this.directoryChildrenMap[o]||[];if(!t)return a.slice(0,10).map(e=>({value:e.path}));const s=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(s)).slice(0,10).map(e=>({value:e.path}))}}};const jt=(0,z.A)(Ot,[["render",qt],["__scopeId","data-v-28b8eda7"]]);var Gt=jt,Kt=o(91543);const Jt={class:"container"},Yt={class:"upload-home"},Zt={class:"quick-toolbar-actions"},eo={class:"quick-toolbar-actions-inner"},to={class:"header"},oo={class:"title"},ao={class:"title-crayon-text","aria-hidden":"true"},so={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},io={class:"dialog-section"},lo={class:"section-header"},no={class:"section-title"},ro={class:"section-content"},co={class:"dialog-section"},uo={class:"section-header"},po={class:"section-title"},ho={class:"section-content"},mo={class:"setting-item"},go={class:"setting-label"},fo={key:0,class:"setting-item"},yo={class:"setting-label"},bo={class:"dialog-action"},ko=["innerHTML"],vo={class:"dialog-footer"};function Co(e,t,o,n,r,d){const c=Kt.A,u=(0,i.g2)("font-awesome-icon"),p=s.S2,h=pt.c6,m=pt.Iy,g=pt.dW,f=Gt,y=G.WK,b=Nt.A,k=a.R7,v=Wt.A,C=Pt,w=J.ll,F=J.MQ,L=j.qi,U=X.kZ,$=ze,S=Q.A,T=H;return(0,i.uX)(),(0,i.CE)("div",Jt,[(0,i.Lk)("div",Yt,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(g,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(f,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","placeholder","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(y,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","placeholder","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(p,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(k,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,i.bF)(g,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(h,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,i.Lk)("div",Zt,[(0,i.Lk)("div",eo,[(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,i.bF)(k,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(p,{class:(0,l.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,i.bF)(v,{useConfigLink:!0}),(0,i.Lk)("div",to,[(0,i.Lk)("h1",oo,[(0,i.Lk)("span",ao,(0,l.v_)(d.ownerName)+" ImgHub",1),(0,i.Lk)("a",so,(0,l.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub ",-1))])]),(0,i.bF)(C,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:e.$t("settings.linkFormatTitle"),modelValue:r.showUrlDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",io,[(0,i.Lk)("div",lo,[(0,i.Lk)("span",no,(0,l.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",ro,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[6]||(t[6]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",co,[(0,i.Lk)("div",uo,[(0,i.Lk)("span",po,(0,l.v_)(e.$t("settings.customLink")),1),(0,i.bF)(k,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ho,[(0,i.Lk)("div",mo,[(0,i.Lk)("span",go,(0,l.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",fo,[(0,i.Lk)("span",yo,(0,l.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[8]||(t[8]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",bo,[(0,i.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[11]||(t[11]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[12]||(t[12]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[13]||(t[13]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[14]||(t[14]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[15]||(t[15]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[16]||(t[16]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[17]||(t[17]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[18]||(t[18]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[19]||(t[19]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[20]||(t[20]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[21]||(t[21]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:e.$t("upload.announcementTitle"),modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",vo,[(0,i.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,ko)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var wo=o(46638),Fo=o(48903),Lo=o(90144),Uo=o(62388),$o={name:"UploadHome",mixins:[Fo.A],data(){return{selectedUrlForm:(0,Lo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,isQuickToolbarOpen:!1,isQuickToolbarPinned:!1,showAnnouncementDialog:!1,announcementContent:"",displayedAnnouncementRefreshAt:null,showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Uo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,St.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!0,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto",this.showAnnouncementIfNeeded()},components:{UploadForm:Pt,Footer:Q.A,ToggleDark:Kt.A,Logo:Wt.A,UploadHistory:H,UploadSettingsDialog:ze,DirectoryTreePicker:Nt.A,DirectorySuggestionInput:Gt},methods:{async fetchAvailableChannels(){try{const e=await Ut.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,a=this.availableChannels[this.uploadChannel]||[];t&&a.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&a.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,Uo.G)(e,{strict:t});return!!o.valid||(this.$message.error(o.error),!1)},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){Ut.A.post("/api/auth/logout",{authType:"user"},{withCredentials:!0}).finally(()=>{this.$store.commit("setUserLoggedIn",!1),this.$router.push("/login"),this.$message.success(this.$t("upload.logoutSuccess"))})},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleQuickToolbarMoreEnter(){this.isQuickToolbarOpen=!0},handleQuickToolbarLeave(){this.isQuickToolbarPinned||(this.isQuickToolbarOpen=!1)},toggleQuickToolbar(){this.isQuickToolbarPinned=!this.isQuickToolbarPinned,this.isQuickToolbarOpen=this.isQuickToolbarPinned},closeQuickToolbar(){this.isQuickToolbarPinned=!1,this.isQuickToolbarOpen=!1},handleQuickToolbarCommand(e){this.closeQuickToolbar(),"linkFormat"===e?this.openUrlDialog():"manage"===e?this.handleManage():"logout"===e&&this.handleLogout()},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){if("toggleTheme"===e)"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1));else if("toggleUploadMethod"===e)this.handleChangeUploadMethod();else if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},handleDesktopMenuCommand(e){if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?this.$t("theme.lightMode"):"light"===this.themeMode?this.$t("theme.darkMode"):this.$t("theme.autoMode")},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?this.openAnnouncement(e):this.$message.info(this.$t("upload.noAnnouncement"))},getAnnouncementRefreshAt(){const e=Number(this.userConfig?.announcementRefreshAt);return Number.isFinite(e)&&e>0?e:null},openAnnouncement(e){this.announcementContent=e,this.displayedAnnouncementRefreshAt=this.getAnnouncementRefreshAt(),this.showAnnouncementDialog=!0},showAnnouncementIfNeeded(){const e=this.userConfig?.announcement;if(!e)return;const t=this.getAnnouncementRefreshAt();if(t){const o=Number(localStorage.getItem("announcementAcknowledgedRefreshAt"));return void((!Number.isFinite(o)||t>o)&&this.openAnnouncement(e))}localStorage.getItem("announcementAcknowledgedAt")||this.openAnnouncement(e)},acknowledgeAnnouncement(){localStorage.setItem("announcementAcknowledgedAt",String(Date.now())),this.displayedAnnouncementRefreshAt&&localStorage.setItem("announcementAcknowledgedRefreshAt",String(this.displayedAnnouncementRefreshAt)),this.showAnnouncementDialog=!1},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const So=(0,z.A)($o,[["render",Co],["__scopeId","data-v-579106c0"]]);var To=So},50333:function(e,t,o){"use strict";o(85331),o(29092)},53676:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const s={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},l={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",(0,a.v6)(e.$attrs,{class:"channel-icon-wrapper"}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",s,[...t[0]||(t[0]=[(0,a.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...t[2]||(t[2]=[(0,a.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=o(71241);const c=(0,d.A)(r,[["render",n],["__scopeId","data-v-33933ada"]]);var u=c},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return s}});var a=o(46638);function s(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:a.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:a.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:a.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:a.Ay.global.t("validation.consecutiveSlashNotAllowed")};const s=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return s.test(e)?{valid:!1,error:a.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67819:function(e,t,o){"use strict";o(85331)},70797:function(e,t,o){"use strict";o.d(t,{A:function(){return l}});o(44114);var a=o(25507),s=o(16915);let i=!1;async function l(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),s.A.push("/adminLogin").finally(()=>{i=!1})),o}},76334:function(e,t,o){e.exports=o(11393)},79899:function(e,t,o){"use strict";o(85331)},85970:function(e,t,o){"use strict";o(85331)},86975:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i={key:0,class:"page-footer"},l=["href"];function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return d.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,s.v_)(d.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:d.footerLink,target:"_blank"},[(0,a.bF)(c,{icon:"paper-plane",class:"footer-link-icon"})],8,l)])]))}var r=o(60782),d={name:"Footer",computed:{...(0,r.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-08acbaa9"]]);var p=u},88830:function(e,t,o){"use strict";o(85331)},91543:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),s=o(45130),i=o(24232);const l={id:"themeMask"},n=["cx","cy","r"],r=["r"],d=["opacity"];function c(e,t,o,c,u,p){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>p.handleToggleClick&&p.handleToggleClick(...e))},[(0,a.bF)(s.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[u.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",l,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,n)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,d)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},p=o(71241);const h=(0,p.A)(u,[["render",c],["__scopeId","data-v-66e6a1f0"]]);var m=h},95385:function(e,t,o){"use strict";o(85331)},96682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},96808:function(e,t,o){"use strict";o(85331),o(18785),o(67819),o(85970),o(19104)}}]); -//# sourceMappingURL=148.b1b1da05.js.map \ No newline at end of file diff --git a/frontend-dist/js/148.b1b1da05.js.gz b/frontend-dist/js/148.b1b1da05.js.gz deleted file mode 100644 index cb69fbb0018c5901f8f218f1a2cdb4017b83a092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33624 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%0A*rhZ@|mwuM9Wx??YK1w@7%HbTnwJ5PG z)r+iLhuOuqWj}Ph8R0{J0l$p@K%sp_3+D);g&`F8qBW8tjFH$cY7|b;Es+kIM7y!T z6Ck{R=FPU-hVKlcZ+$^6$cFE@Wwxuk8u~S*n^`22z$+4>cG{M9tHLmXZCTY@mI8)e7-!ZR`bmx z?AAtbz>8IVu^zh+pzeQn>>*iIf4!Wq5T%g!0(1?!&^aJ;HGQ*^u|zvb{tMvcMm7HV4m&f`*k;{1dba` zu5Rc+-~k1_qx6%T)%^T$r^bA0sbsA+pl7q5&el}SFgse{`ITl_!qzW z{MB{z>hRU*)yr3}UtPVr`Pt83{lh=~htK}ar;}H|eDz84`Y0@kbr|pQ{kt6zc_xXTzp#B#TMx=PXV(?5rwh)oMLKB*EsYWhWQahvLjo zV240k&BXz1$n~b&T&}OL=hxSV^T`1O@uTh$t4Fi*`LZ7jV~sEzE(S*FpCS-OKePsh zb2Azx_03I^8>RFX5i3@GcTul4Lpmy)SWCQFXOXS^(KD(gPc-|nk)TV(L@AeD0yiG~h58!ja zxLcH=?SK8(NWwu%Np;sgxf`_8pQ>_&bZ}o*$V*zyqLU9%>~g)e2bS8Z%Xkp5JY7;O zN|0gPoB%(aZ_X}Hz;j2>%GLAgUA2T~VpFb8tIaqZ1;0srw8-DjU7DJtd)TGzd-SGW zMSrR<4}5;Pq~9HC8n^=8LAIFfb{ruP3ws)}zg!?xa(b~Smu==3KOzLOXcE69Hd#1$ z;}J=HXn1brD47Lt;$|z}iU7LW4gmUkl(hZ4CG2Bc==%B&s@^1F8k_nKm(}|Sr%XpU z|N7)|v2c%@;F_+-x3u3YcYS>zAZ4dR&~k}MngX=U?gLu5EvF}CSu~*KVsd$tSZme2 zmwX{Itv-6mpYK`nIunYIlKF7;FD6%W2J^W_?xw4A(*r$`|;MHJOl{5n}pUefPu z@-nV3$|)j3cjUp;%Y$ihnOp>UZ~?mlME&;hrxty{_|PpEjjo&TrL$^%;^zw=Ai<7O|}vs*4}R(+9pHm7rtZ%U}BbBe@`9LDouvY4`sa(~I@YXnz3-f0({`M|;m zFMuQgRh;-_U6hU~Ju4S)()DIlzik&Nm32o-eX4OsKBV7{$FX2pb&hqos8{3oUAa0; zQ=(Ex)=5uBNHo4rn39v#b!>gPOercu(xgS5`?RQ3=|8$k|IxjI_z7c-7(q&q>@*}n zcYQjm5Qd?->>Y^3rv)7+@EecgWxaHveKGLV1@j-rvc0vKFRN*J5szaE$=ZMLmwLWz zpSTC(CJP2e-$+A}pXcCeIF+{~FFnRd?>M)iDjb z;yPs73M!;WNB2;KdQKMQ6e;n(Yp5FH1iRLzA36`D!UNo1b?z4NIL_L%OG}@5&Q{MfmX41dx{=(}SGul-^f8E(SwrKdCyFaN91+K%3Lw?BM0oCl2Gy*d~^HPZ9FBsQ6iUMI4f>F>t51-$TX zqn5^l%o>iZ#&<+nO`IqnAKVeI^`;Z3bX&nRLCKt2@E3Tu6O#T7(xa0JJW&w-&dRAUs%$KJx{_u1nv}GsaM9fN_vA?X@d3o`F0Z&Wq<%HM)0RL63 AUH||9 diff --git a/frontend-dist/js/148.b1b1da05.js.map b/frontend-dist/js/148.b1b1da05.js.map deleted file mode 100644 index 7e2ad724..00000000 --- a/frontend-dist/js/148.b1b1da05.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/148.b1b1da05.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/Logo.vue?a6d2","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?0f8d","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?0f5d","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?9e81","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?73af","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?6707","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?cc0a","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?4482","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0f43","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce"],"sourcesContent":["import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"href\", \"target\"];\nconst _hoisted_2 = [\"alt\", \"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"a\", {\n href: $options.logoHref,\n target: $props.target,\n class: _normalizeClass(_ctx.logo - _ctx.link)\n }, [_createElementVNode(\"img\", {\n class: _normalizeClass($options.logoClasses),\n alt: $props.alt,\n src: $options.logoUrl\n }, null, 10, _hoisted_2)], 10, _hoisted_1);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Logo',\n props: {\n // Logo链接地址(可被用户配置覆盖)\n href: {\n type: String,\n default: 'https://github.com/MarSeventh/CloudFlare-ImgBed'\n },\n // 链接打开方式\n target: {\n type: String,\n default: '_blank',\n // _blank, _self, _parent, _top\n validator: value => ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=17f54292&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=17f54292&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17f54292\"]])\n\nexport default __exports__","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.clearRecords'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadHistory.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('uploadHistory.pullToLoadMore')), 1))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('uploadHistory.noMoreRecords')), 1)) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('uploadHistory.emptyHistory')), 1)]))], 2);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm(this.$t('uploadHistory.clearConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success(this.$t('uploadHistory.recordsCleared'));\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm(this.$t('uploadHistory.deleteConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success(this.$t('uploadHistory.recordDeleted'));\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success(this.$t('uploadHistory.linkCopied'));\n }).catch(() => {\n this.$message.error(this.$t('uploadHistory.copyFailed'));\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=f70e7770&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=f70e7770&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f70e7770\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-header\"\n};\nconst _hoisted_3 = {\n class: \"section-title\"\n};\nconst _hoisted_4 = {\n class: \"section-content\"\n};\nconst _hoisted_5 = {\n class: \"setting-item\"\n};\nconst _hoisted_6 = {\n class: \"setting-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_8 = {\n class: \"setting-label\"\n};\nconst _hoisted_9 = {\n class: \"setting-item\"\n};\nconst _hoisted_10 = {\n class: \"setting-label\"\n};\nconst _hoisted_11 = {\n class: \"setting-item\"\n};\nconst _hoisted_12 = {\n class: \"setting-label\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"dialog-section\"\n};\nconst _hoisted_18 = {\n class: \"section-header\"\n};\nconst _hoisted_19 = {\n class: \"section-title\"\n};\nconst _hoisted_20 = {\n class: \"section-content\"\n};\nconst _hoisted_21 = {\n class: \"setting-item\"\n};\nconst _hoisted_22 = {\n class: \"setting-label\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_26 = {\n class: \"setting-label\"\n};\nconst _hoisted_27 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_28 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_30 = {\n class: \"setting-label\"\n};\nconst _hoisted_31 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_32 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_33 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_34 = {\n class: \"section-header\"\n};\nconst _hoisted_35 = {\n class: \"section-title\"\n};\nconst _hoisted_36 = {\n class: \"section-content\"\n};\nconst _hoisted_37 = {\n class: \"setting-item\"\n};\nconst _hoisted_38 = {\n class: \"setting-label\"\n};\nconst _hoisted_39 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('uploadSettings.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadSettings.uploadChannel')), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('uploadSettings.channelType')), 1), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"telegram\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"telegram\",\n class: \"channel-icon channel-brand-telegram\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"cfr2\",\n class: \"channel-icon channel-brand-cfr2\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"s3\",\n class: \"channel-icon channel-brand-s3\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"discord\",\n class: \"channel-icon channel-brand-discord\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"huggingface\",\n class: \"channel-icon channel-brand-huggingface\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"webdav\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"webdav\",\n class: \"channel-icon channel-brand-webdav\"\n }), _cache[18] || (_cache[18] = _createElementVNode(\"span\", null, \"WD\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createElementVNode(\"span\", _hoisted_30, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"span\", _hoisted_38, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","import ChannelIcon from '@/components/icons/ChannelIcon.vue';\nexport default {\n name: 'UploadSettingsDialog',\n components: {\n ChannelIcon\n },\n methods: {\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=3eb5cfdc\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('uploadForm.copyFailed')\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=3620a174&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=3620a174&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3620a174\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = [\"innerHTML\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_5 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_6 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_7 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_8 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_9 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n innerHTML: _ctx.$t('upload.dragUploadText')\n }, null, 10, _hoisted_3)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: _ctx.$t('upload.pasteUrlPlaceholder'),\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteUploadBtn')), 1)]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteSave')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteExternal')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.retryFailed'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-retry\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.clearList'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearUploaded')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.name,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[7] || (_cache[7] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const fileType = file.file.type || 'application/octet-stream';\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', fileType);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error(this.$t('uploadForm.chunkInitFailed') + ': ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', fileType);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || this.$t('uploadForm.uploadError'));\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.chunkMerging'),\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', fileType);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.deleted', {\n name: this.truncateFilename(file.name)\n })\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.uploadSuccess', {\n name: this.truncateFilename(file.name)\n })\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.fileNotUploaded')\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(this.$t('uploadForm.compressedFileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(this.$t('uploadForm.compressFailedCannotUpload', {\n name: processedFile.name\n }));\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(this.$t('uploadForm.fileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copyAllSuccess')\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.fileListCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.fileListEmpty')\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.successFilesCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.successFilesEmpty')\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.urlRequestFailed')\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n this.retryFailedFiles(this.exceptionList);\n this.exceptionList = [];\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.noFailedFiles')\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? this.$t('uploadForm.autoRetryOn') : this.$t('uploadForm.autoRetryOff')\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files) {\n files.forEach(file => {\n const retryCount = file.retryCount || 0;\n if (retryCount < this.maxRetryCount) {\n file.retryCount = retryCount + 1;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.maxRetryReached', {\n name: file.name,\n max: this.maxRetryCount\n })\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error(this.$t('uploadForm.imageLoadFailed')));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=5afbc1b3&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=5afbc1b3&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5afbc1b3\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-suggestion-input\",\n ref: \"wrapperRef\"\n};\nconst _hoisted_2 = {\n class: \"suggestion-dropdown\"\n};\nconst _hoisted_3 = {\n class: \"suggestion-list\"\n};\nconst _hoisted_4 = [\"title\", \"onMousedown\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_input, {\n ref: \"inputRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n placeholder: $props.placeholder,\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onInput: $options.handleInput\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onInput\"]), _withDirectives(_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"ul\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, (item, index) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: index,\n class: \"suggestion-item\",\n title: item.value,\n onMousedown: _withModifiers($event => $options.selectItem(item), [\"prevent\"])\n }, _toDisplayString(item.value), 41, _hoisted_4);\n }), 128))])], 512), [[_vShow, $data.dropdownVisible && $data.suggestions.length > 0]])], 512);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n dropdownVisible: false,\n isFocused: false,\n suggestions: []\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n watch: {\n modelValue() {\n // 外部修改 modelValue 时也刷新建议\n if (this.isFocused) {\n this.refreshSuggestions();\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n setTimeout(() => {\n if (this.isFocused) {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n }\n }, 500);\n },\n handleBlur() {\n this.isFocused = false;\n this.dropdownVisible = false;\n this.$emit('blur');\n },\n handleInput(val) {\n // val 是 el-input @input 事件传来的最新值\n this.$nextTick(() => {\n this.refreshSuggestions();\n if (this.isFocused) {\n this.dropdownVisible = true;\n }\n });\n },\n selectItem(item) {\n const path = item.value;\n this.inputValue = path;\n this.$emit('select', path);\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n this.$nextTick(() => {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n this.$refs.inputRef?.focus();\n });\n } else {\n this.dropdownVisible = false;\n }\n },\n refreshSuggestions() {\n this.suggestions = this.getDirectorySuggestions(this.modelValue || '');\n },\n normalizeDirectoryPath(path) {\n if (!path) return '/';\n let normalized = path;\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized !== '/' && !normalized.endsWith('/')) normalized += '/';\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) return;\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n return parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=28b8eda7&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=28b8eda7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-28b8eda7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n class: \"quick-toolbar-actions\"\n};\nconst _hoisted_4 = {\n class: \"quick-toolbar-actions-inner\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"title-crayon-text\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_8 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-header\"\n};\nconst _hoisted_11 = {\n class: \"section-title\"\n};\nconst _hoisted_12 = {\n class: \"section-content\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"setting-item\"\n};\nconst _hoisted_18 = {\n class: \"setting-label\"\n};\nconst _hoisted_19 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_20 = {\n class: \"setting-label\"\n};\nconst _hoisted_21 = {\n class: \"dialog-action\"\n};\nconst _hoisted_22 = [\"innerHTML\"];\nconst _hoisted_23 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_dropdown, {\n class: \"more-dropdown desktop-only\",\n trigger: \"click\",\n onCommand: $options.handleDesktopMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('upload.switchUploadMethod'),\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\", \"disabled\"]), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? _ctx.$t('upload.pasteUpload') : _ctx.$t('upload.fileUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quick-toolbar\", {\n 'is-expanded': $data.isQuickToolbarOpen\n }]),\n onMouseleave: _cache[5] || (_cache[5] = (...args) => $options.handleQuickToolbarLeave && $options.handleQuickToolbarLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.logout'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleQuickToolbarCommand('logout'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.manage'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleQuickToolbarCommand('manage'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleQuickToolbarCommand('linkFormat'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: $options.openCompressDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_button, {\n class: _normalizeClass([\"quick-toolbar-button quick-toolbar-more\", {\n 'is-active': $data.isQuickToolbarOpen\n }]),\n \"aria-expanded\": $data.isQuickToolbarOpen,\n onMouseenter: $options.handleQuickToolbarMoreEnter,\n onClick: $options.toggleQuickToolbar\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"quick-toolbar-icon quick-toolbar-toggle-icon\"\n })]),\n _: 1\n }, 8, [\"class\", \"aria-expanded\", \"onMouseenter\", \"onClick\"])], 34), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString($options.ownerName) + \" ImgHub\", 1), _createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub \", -1))])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('settings.linkFormatTitle'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [_createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_21, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[9] || (_cache[9] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[12] || (_cache[12] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[13] || (_cache[13] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[14] || (_cache[14] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[15] || (_cache[15] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[16] || (_cache[16] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[17] || (_cache[17] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[18] || (_cache[18] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[19] || (_cache[19] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[20] || (_cache[20] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[21] || (_cache[21] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: _ctx.$t('upload.announcementTitle'),\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_23, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.acknowledgeAnnouncement\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_22)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[23] || (_cache[23] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { setLocale } from '@/locales';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n isQuickToolbarOpen: false,\n isQuickToolbarPinned: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n displayedAnnouncementRefreshAt: null,\n // 当前弹窗所展示的公告版本\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', true, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n this.showAnnouncementIfNeeded();\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n this.$message.error(result.error);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n axios.post('/api/auth/logout', {\n authType: 'user'\n }, {\n withCredentials: true\n }).finally(() => {\n this.$store.commit('setUserLoggedIn', false);\n this.$router.push('/login');\n this.$message.success(this.$t('upload.logoutSuccess'));\n });\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleQuickToolbarMoreEnter() {\n this.isQuickToolbarOpen = true;\n },\n handleQuickToolbarLeave() {\n if (!this.isQuickToolbarPinned) {\n this.isQuickToolbarOpen = false;\n }\n },\n toggleQuickToolbar() {\n this.isQuickToolbarPinned = !this.isQuickToolbarPinned;\n this.isQuickToolbarOpen = this.isQuickToolbarPinned;\n },\n closeQuickToolbar() {\n this.isQuickToolbarPinned = false;\n this.isQuickToolbarOpen = false;\n },\n handleQuickToolbarCommand(command) {\n this.closeQuickToolbar();\n if (command === 'linkFormat') {\n this.openUrlDialog();\n } else if (command === 'manage') {\n this.handleManage();\n } else if (command === 'logout') {\n this.handleLogout();\n }\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n handleDesktopMenuCommand(command) {\n if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return this.$t('theme.lightMode');\n if (this.themeMode === 'light') return this.$t('theme.darkMode');\n return this.$t('theme.autoMode');\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.openAnnouncement(announcement);\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\n },\n getAnnouncementRefreshAt() {\n const refreshAt = Number(this.userConfig?.announcementRefreshAt);\n return Number.isFinite(refreshAt) && refreshAt > 0 ? refreshAt : null;\n },\n openAnnouncement(announcement) {\n this.announcementContent = announcement;\n this.displayedAnnouncementRefreshAt = this.getAnnouncementRefreshAt();\n this.showAnnouncementDialog = true;\n },\n showAnnouncementIfNeeded() {\n const announcement = this.userConfig?.announcement;\n if (!announcement) return;\n const refreshAt = this.getAnnouncementRefreshAt();\n if (refreshAt) {\n const acknowledgedRefreshAt = Number(localStorage.getItem('announcementAcknowledgedRefreshAt'));\n if (!Number.isFinite(acknowledgedRefreshAt) || refreshAt > acknowledgedRefreshAt) {\n this.openAnnouncement(announcement);\n }\n return;\n }\n\n // 尚未产生刷新时间的旧公告在升级后再展示一次,确认后使用新版时间标记。\n if (!localStorage.getItem('announcementAcknowledgedAt')) {\n this.openAnnouncement(announcement);\n }\n },\n acknowledgeAnnouncement() {\n localStorage.setItem('announcementAcknowledgedAt', String(Date.now()));\n if (this.displayedAnnouncementRefreshAt) {\n localStorage.setItem('announcementAcknowledgedRefreshAt', String(this.displayedAnnouncementRefreshAt));\n }\n this.showAnnouncementDialog = false;\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=579106c0&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=579106c0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-579106c0\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: \"channel-icon-wrapper\"\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=33933ada&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=33933ada&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-33933ada\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08acbaa9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=66e6a1f0&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=66e6a1f0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66e6a1f0\"]])\n\nexport default __exports__"],"names":["_hoisted_1","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","href","logoHref","target","class","logo","link","logoClasses","alt","src","logoUrl","name","props","type","String","default","validator","value","includes","customSrc","position","size","enableHover","Boolean","useConfigLink","computed","this","userConfig","logoLink","__exports__","t","e","module","exports","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","bind","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","Image","onload","onerror","Error","document","createElement","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","accuracy","filter","sort","abs","pow","v","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","onClick","$slots","undefined","error","icon","fetchDirectoryTree","$t","_","ref","data","treeData","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","loading","args","openDrawer","modelValue","drawerVisible","direction","title","source","children","label","windowWidth","innerWidth","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","withAuthCode","tree","err","console","startsWith","$emit","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","useDarkMode","oldVal","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","getElementById","style","id","textContent","head","existingStyle","remove","createBackgroundElements","container","warn","bg1","className","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","zoomDuration","max","transformOrigin","computedStyle","getComputedStyle","isolation","isBg1Current","curBg","nextBg","nextUrl","clearBackgroundInterval","immediate","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_el_tooltip","show","count","totalCount","content","circle","toggleViewMode","viewMode","clearHistory","historyList","onScroll","handleScroll","groupedHistory","group","date","items","item","time","isImage","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","formatTime","hasMore","loadingMore","spin","allHistory","pageSize","currentPage","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","start","end","newItems","slice","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_component_ChannelIcon","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","dialogWidth","uploadChannel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","step","compressQuality","precision","serverCompress","components","ChannelIcon","emits","set","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","_component_CameraFilled","_component_el_upload","_component_el_radio_button","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","x","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","fill","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","scrollContainer","setScrollTop","deep","commit","location","protocol","host","handlePaste","storeAutoReUpload","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","abortController","AbortController","formData","FormData","append","encodeURIComponent","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","onProgress","percent","res","code","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","File","myUploadCount","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","trim","test","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","index","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","normalizedPath","normalizeDirectoryPath","inputRef","focus","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","parentPath","child","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","queryString","parentChildren","keyword","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","onCommand","handleDesktopMenuCommand","command","announcementAvailable","$i18n","locale","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","onSelect","handleDirectorySelect","handleChangeUploadMethod","handleMobileMenuCommand","getThemeIcon","getThemeText","isQuickToolbarOpen","handleQuickToolbarLeave","handleQuickToolbarCommand","openCompressDialog","onMouseenter","handleQuickToolbarMoreEnter","toggleQuickToolbar","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","acknowledgeAnnouncement","announcementContent","showHistory","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","isQuickToolbarPinned","displayedAnnouncementRefreshAt","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","strict","valid","storeUploadFolder","announcement","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","getters","showAnnouncementIfNeeded","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","handleManage","$router","defaultValue","num","parseFloat","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","viewBox","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","handleToggleClick","mode","isAuto","stroke","cx","cy","mask","x1","y1","x2","y2"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/148.b1b1da05.js.map.gz b/frontend-dist/js/148.b1b1da05.js.map.gz deleted file mode 100644 index 4fc0c27cd1da3742843144ab2899fda13b4a53d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85144 zcmV(yK;L|1QB_8rR+Or!Q%|YZsZq+DR+Xxq zHk4Uv<2RXwdLGu5YcrRw~u%0Daov$prMYEFG+(nYGUdfHT~eOgoMU7rR@l~0W_ zIb%-CN>z$fy6&CUm3c$+xBPvD+QXA7ecIIz^t{}lud0vycazGjxIH7)b5D&jd0lco zz2-)$r!8fA#&92=xRvHS0eWMN zqE%&Xjcwh#dBRhp%=I(>X{1C=sru=-sQjlF%(YSGwy|HNuDl0x+EA)V6RGN0hq_V? zyr(zxSB)Rmi>HC|m)=7-y;tS^Iy=gL3h<>-=HYg~M4MQ@Le%e;5LnU6H z_DclHe{G=dvNAW+R1=MMlzF3dQE#Wd@;oM?E-!KUj>gui^52F!@I2t%&}5=NttgXX z`cPDzx(~k(*7&}3+EJ>nJ*NU1lo^?lJZka`)Ri~Vc(f(jGrv%4Q-LIn7ZUjm{Z*sa z_aS}ML6PO#(-zH3P@89jde@ z8BIg!YK)bu3+tTls>xFt*6B$RtY}#T5panf^#l66cS}Eq zw>QjLcs{U+sfK{c`9$CW>OzD37rpnR27La(o8FVps2cY{iQDGd@ZpVHnrim=L5Y8I zh5W$3!H3*-So0N^D)R%T^)jAZabYx|oG17cEqGDgB`H$H`hp#U&w3U9`6#`lpH=4x zny5vy@glPk4XP-u(a&3XOT&MbMmkD$emP%p2imltOyNFCKVi^Rpy(E+HgE9mT@xqn zYaXeR+KCu%_FC#|dBkKx4W^idW9`rM-UlFRD)>t8z@lwc^y@n6j@l&%S%yG3xt+&r ze&P;>T1AQIJE^CyX%iRuA0lYPmg+buVn6e^i7cL}Lb}+#OiKX#Dbye!PRP@Q*jtjdI~OEIM?~)m`sy z*gMw8PXw`O3RRfeKDe%UiiT{W#P1jKG*9vgXn* zL1P{K{W%+IrCiEA(;;IER(ijDhtGhpcq1x(w_mu+v>26MJC)B9Dks_zWljUew$F9#gVY|g;P46P`X9(WLUZ$6~5gsYlSM5{cviYCe%FB zN-dmzUpnQp-}WSk3On2Y^DfrxQ{M?)#q6oG2Ov^ewfTDE6&Zimdt z*_?N=?Xj~_g}|eFPBdg$`ZBNG;w*6BNmfTZNMw+dwj-kM&rNjX%Wa7MuR08JN8V}5 z3?8Vrk7|}bu2-s=ntiTGKR?jlfpJdoS3YCgPN`RJtIdnzi#QRoM}FWttXa8Cj;;>U z$SXgQ^ND--iFr)9Ebkoy+ZuQ7>GO9J@^C*|-AB71@iqhBd2lYrKYcD+=ZRLi99CEZ z8wC4-ghoxO{Yqq}&iHE4SQ>XWyl`pieCLby#1S16vZbjnU|JwNW-#n5W}+-&C1gUh z9Z>{TF?Lw~)clwB{}Lx60=pnqZ1QVF)2D%CpiL( z(VcPNh}gp-ru@?=^=afy8YkXNJ3E0o{LF7(TsokSF^+Lj#J@J3%hcg1Y8znT7A3hJ zV1JO5($(3b!(!H`L7tr#MYDimi|&IYB>J=NXd?2(s4sGq7iGgUC6Zj6M_(?BxRTUq zF6`YZNa1DIkzbyj?#wr zzvt}AVQgO$sg8>7Y|2HKxd_e8+>6~c!wrzt4(qHRxVYX3W8G!47q~fZJ?FjC$1~5l zY0_VL_u6aUQhC`LUp%6}Cq-A>JHeZR=jgIPcwO+cloz#phHvBonnAy_`1BnA^-6BF zDbH3#Bp83U@f^xKht!tyY|Zhn<26gSoOe5G?EIifSc2Q8-3vM9_5utiYL-t!Owdxh zQ@6otm)wF|R}(4areLr#MHiwM<0a);k4=_rUvT?yW5`;ZfOpPIj?j9B@6ukv0!Rm< zcQt6gtym(&?=}yn{9W_mJeHH&iT5GWq=l_+|JtCX33vW}&}z5DH4aL9dqWDWo$C4d zCUFA7ALXCU_HXy#KTIWmx!?a@^7^+=^Uvs#=6U=3lqJ<#7Uu}ApI|iwM^5`FaTP1{ zc8x)8jB}c=OAgDVT4bD${|JG7>?t+&z7W{y!DlIw8n&hX3WfiRg+f%i`9dgMg8=fS zM4=E87Y)o(SSZm!emm`ZO7%V0R5N!8=6O$+>|jH?I<8MhIc)!`ib(NUk^#`OHa2$2 zeFIJ{q)e{^u4L!(MLnrHYqECr4Pdiz<-*8a>vKq_S?$JmRA&{wO>#HYJCOAEQf2!)*fGRrW+=AjK%& zU5b5_ncHn^14_N$+eFavtgXf6>rHflVsh#GVi#pft{@`Y=t4WB?QWwJoT+lZI7jc& zsA=pH=HTm%#6N^u2hMdzz#$Q7hqE7jmU4`uYS#u2wvEkLDB7;jueQB4hwaFi-M*wv zB>tf>=T_z_+#Ajs%D3D!l$U9=BBRfj9LxS?Dbh$5N)BXVh!@Y!KufMbA~Mjqw_8kV zxeSYiZ=#m?(<_I5FCCNfS<$Wo{g=UwQ(yoLDexm3d9*4`SLmYY{GBRy1Olq254D;I zxLy3pJIr$?OXVM6o_&9pd4fhx-$&Y*P4*T7W?-R+W}u&ee)`nPyLxh-H}QN(&(E)% z7XbGW*y$#Jg+d+WU0u3m3i6_@ysH!UMap^6b-U3Eoc8+eo9pEEhHjZr5LG*NUreGG zrO0S@B-E1TYR!vw!rOeP$slY7fLnbKzc4G{I%oXP9RDyt&1`gHu|OG7qPi$f>g1e_ z5`gWnF06hTgqCnF*t(J$jWUzqF`5{DTkmlNmHstgcVos4P5B|i?5YZX`bw2&EC)13 z&L^s`dE_Y%;6bY8X)YklK$*Kmh*>lbf*1JI%Jek!a2`SHTJgVpWquhL-G^G4C+c|- zmJExK#8G1LrWV6FFAlEJ@|jlVZg|bb)BA(rIj9jhv1)-mr%h#Y#jw_A{32KUu-FB6v2YAvvAA62>^g*Px&^mV(DtUqOUqJ@DO836cO|;I zUCM~NT0oRCAD7H`pXo`TC|X*p+PfH63)y|a_4clESE#q4%xw*S5?-^UMz?gew5GJ8#&C3)s!xxImkjuS-s;bJoFywMUb(^K;Zn305U`zsVFp|j3wcQY0 zb9Gjx?wPDE$gIt}3DYp28ih@;WbZStjvkrc|` zbCQaXNb4oqj|2aN$Mu{8RbNp3W@NF#y_+LgG=D?pNfJEGpmZ+Ekcu)-n`vzur(XQ0D0qD?7P~?c}~u=52EwP2epPeDipAIJ=72;XL??A5M4qq5orkI1C(; zUHxz7hdlEC6hplD|0hEnyVSM*k1|9HCnOo2X2+bawMhl=lo`pUUuf4=#@sBfEu9hN z>-lw(TZ;G8El2(`qjHiHi8&lQc|(k;D7N6_0zUmuT$b zT9ocJ%%UlnNDE&}UGEjD(R*@>3PSY@Um~mPqFh^uq;>Rr6r!^o66NADKQ30So*i^Zd*yFMeVtse+~vvI%4;Tu0Bushlu3S_@5TZ$+7CfYC! z27+;04W-lr7w)->&D`0nq!1ktxj^#IzH%K$r#c60%cPOjiV<<8w zQ_Vt2o%|}yQ=#nkFonH26#t}it-LvD5e^r*)C5)MNp8)!V|5~AI#bK8`&i`$1E`?y zM9(?#h>3Xv9WQyxs_=_G`Ps zR)!k~=a{)+zQW8DY>0>Hme0H8&u`f4lc$c#d&)3tiH-I0nurfC7rQUdheizz@hiVH zcRYj_y!wiLm7eD~To=rNe=YggY4U%nF@Wjd?1m+$oKD~D9vH83U<@H#U5&yoAUzXC z%%t^X=W&BoTxmVsdEVsPOj^%(p7YWNBf~=(F;C->dfpW6e^h90%pFffj~538Dk~KD zyx|MWU59zers6#G=X#5QeO69CKnp%u$G6f8x9&kGoCJ55dUwt%EUGqWmy`HP47Uf# zA8Nx6AJn{uu^<&zT-Qd|E=sRXZ~NDB!29CTX`Z-jgVMvCT-aNx5V3^O>;m7A5T>xq9h11w4y7FoXUDv zr_ZWLE5b%pvDCE5jgMWFVl7db#vuNv%KFJF;nFJXOHEUdjZIgT1pYIguHYV8i;6N2 ztUL^OPd@Y7_aHL`8?ZWJ0zM3MXUr`t`Tc6oQSDWp{t z(kv@354t6edX0%>aq8rK~L*C^&4HHUmy6j&~{~%QQ}{=S3B~MbtOesau&+Hj>lEpv_QMY7VWSDM^WLl~0eR(lHWWqIytrRwpD&!b zSj8q^lsez5vLfu^48vGoTbDf__8Yp@2|u1yMP0&}hB9*iC>qM@T(e6j$TexiS+A;;S@yzmd2~RTyr{+y^WTRe^y1rhgzt-ymbq25Gmoqo*rYK zgfdV^eE0FD{xm!S#$0GvwD1QrHCfbfZkvG#qf9co$?FYTJE!|E`%{$FhanCsqmQo< zymOzo1`}%A-5CM4aWjvG*Egc?e2%)jDIL@0OS?oH9q&Uxg`|2GEzBeLd~L{VBt5s3 z0K{FJ-N{VO9O!dY%Hyj#Ro90&h3Xta@mZ!N>O6<&-n+vVVTSmN(JzK|fyKUN$@YQR zEk%j(UZm`9`x&&KciW#qxI_Ezns@9o&bVF?+qch$aEs>@(B|e6Eaa1S4qwx5OiKJd!?IOcpMDmV`YhH+@3}3W4(T5L=$0QAMOnqt{=~c_O>2Y0NYHrlI<~JK z!SqAHhz+TPB8;{~m&9b^jPDgudazo=yiq^18im@+8tvVlK7$Bxhq2t^7W+*2kviQ= z7cBm?A4!<(X@KRV@Taj$>u2L{W+K+q>D1)ywA8Wf6!JkxdBmFx*!AXihh0}8LwPbm zUGDBXv*5YT8@V=z#A~*?#k9d|)IkA0(@kDqfMxLNcd~d@!r3F7|AQrYwa}{@`#*Rj z3vTkz?VKq<{2gN&m$h#X5Wi4_cSvPb+~pQa-C-$gv-f7Dmpj~|g&gxB_PvzOURfUc$8IGvpoVX5*d z3LAGFZg4-kFZ9fLk(CZ39IVQrNjXgz9iz`nyVQy~nra9J!AkCmzVaR~%HizZoE4)3 zVyEJFkB^qJ@`{%wr}?M-<}XXmn^^MzMF!gg&7Zr?KP5F^RYCE*v^V-#BiYh{0ohTP zS!G*QUh%WKH*u;p zyMg>D=-Mb>eb(eov-G0o$LPy~6(r>m?#xho{yhEoQU+#^9*jk@7QKS&3O_aR@R0(Te&0Eg&_(f6i~&3Z`eb5GHRe zyYogm&hO4~6e4tEK4gpDuOS$AewS7GX_v0PV~$O+w*+@5nA6Fvm36&|&RoS*1*8Lg zogcRrf$~SC1>WVup^$+P?6722b!NAcuW5O3B`Tkf8Uq4vEGu=?JSJ3bMuHMc!K>ZV z(4&Z7Imgr~R?f_=$VRSSDmFTk=j-y#sejrnn-xXEWMgJ^A5l9zfT->40%~(tA$r%x=`Qg!nPjG@R?gfzMMSvj9Vz{cHq2zXs8K8AKdI$pW!8Q z>rXku=sp}8M#8X057CF?2j|7)AsX+y`(paw3}xoN*(7xJgV(|>wY@p8mLG1ZbV4a6 z`n6jsn^21T_34(%-6W#C|1Qk->?Xo#7n0G~Kx(8P_RvZpqQ_+U&e>q4MRnLfq|x2r zxvNGT?Rmq4Ltjvl|%l367F4 zyHLFM1}h{4iZ_2aSmEbYgaR9RK!JVoQ8FQX290;Yh^2+bA^J>qpIr!8Q<>LIIT3@^ zR_0C}LT9zO5B+j9QOjcDL|y*5iCQ8=FR_W+&lrAj!3!&Mw))weRd`e0`@cH}QwMH2 zPg>aYmwpHsL3ws-eYwo4$io;^emIQhXcRSN`~qlT&A~pO({~^O<~0c$KIOd^6PcR1 zJCpO1@Q*iV2U?lNy>wxKk-&p*!-KNhLs@wqlfFU89 z(gD83PGe-{1=B1OO1KdL-EVjK(TM}#1*A67%fg+jQZ0h#-r~=4RE*ZY>q03%Y+r0i zyG`>AyG@(Ci*^RotDt8`%+R7D(mgnAS()Ws^8Dm6KM=ahT=X&9u;=Xl^gv3&^ep-B zdiPPnEmIAXMk3gmN%LxP717iNf6u@k*d@?B=1TawN|HOa%lz?J(i%Rpjp|*G9_{}y zC~TRwwtf_Q9l@VESl{~iG4j++8i0k9P5o~N&@F{tLJqt(&uhI87MDo);YJ3uS&+O} zLni{fMS#-|EV*#=dc2AQ6%Wb|6TNboQlTEBVCdmgz5cdaeIdukZH`u2`Qx9{EB>xKp!4XH$Rh z5QEX$p_a=ak%%~%Ldjk_o{9BCe8TmIb_(GM!PLeL`>bN)AN1=;aNv@qFB8?*d8XX@ z8e@GF_QTUvS7sZ80cza}213|Jut2ykyDTsj{23OQsYlnrRQ*RRaPrS#fgkK1+||8@ zAMwEX@AAOOkvuS+$OAhBcaA>#ygo>=Suge56#KbHvCJ^No?IiFdo_ZiNR0^dN6*4h z_xU2$)rSY1ur*c>2e-z~Rb{1jW-sM1`gtvh|J45HG5Xs7NJd}#k2CrqyNk8xA{4L*Kbb^VffA;ea|_mIu#D$6?P4)&&$zvvjG)qiJimE*O`;KGbgz>cTSR= z`9fz9bmk$}mlL`m$^Iu(oPTOgyG4__1I}}B9TGy!{b~FV<;EF3Byq~=;=w_)=p0u zS6iD`qgWvmL^2P+f;d1LqQW3dTiJaik#zeHz~^Y}5>_H8_JRaaVp=FxGn;uLm!Lv` zltvXe_X5&IWF)cM#tg`TS#p4AD;ZAUL_l^=qDvdKDew6GT!5~Z?t(Hve?r11BP1Jm z=Fzh$%Dq2AvoS?WGvb!!E~20!C@8RG#1qvpPCVpWxAPFk2e102o^A&4I(&JII32fnGEdRC(zlXDmIc6nUCI|fFFcA!Dry4#p|T; z@GM{_IC+@G!wfz2vjDnxiUOjezuDK?q#Tm<9wL&>iUVEU**h1^zuDLmJ+!J}O2}9I zz$R=*bUdchIxKBcCK@_g$f2@6{N)GDnB&uojP^#{o$SN0VH6PQi~Vj@S{cPZ?6Ol_ zzbfuHlla?r2C%0BtMoKCpT!Vud@DHPq|N^ot$Si_+hY<4FKCm=5Tn@WDLOQ3ihltI z$7=2l)8zH6Y6G2_r^w?l%{#Tpj)xD^hc9MuLAK(6ineamlf* zB=p-EpDguabRzaVVOKKaGS{+42i0ThD168AsvI+rxbn%pOSf=alUZe_%f_Z@zip98 zLAvwR@||b~7KIEof0e{g3GaJO4Ao;-)Ib?CZ0@c&9e4vyZB-ldQF0sk=?rx&DW(#& za`Yp5w)0o?!|D!}S1_yr9?a8P-#$bEw?`)G{0N=z zI-M_n(Ro7HnXBLHir{9KNnN3xlgG|s#J3zHNF@*x&Mui9iyu!F@!&`xYb*2e0n2Ir z=@_Yu;LpVctgnTqZ=^HQwiu~C6)QYs7q92dPSrW{39#eM=~fqiIrYR zJn)^;%c6}ap!|2<&o%y8=bu&l&032lgMT+pzR4V~cYRO-$p;b^KKeP}ds(><`FJdi zFpcl_RKya=sdp9Qqf5NmcRu!dChFZ8`@Gjj=v^LhAy2T~5ih0;`M`0Lzx3cIKVg>p zrlO;nlEd0NH%n1lc(ta>K)1Z>-}Y*)oz8A3)PRi`DL9jcgBHMTlpm`vANP|VkCPvF zkE`V3>Hs|9==Q_X0%h1O9e@0@(!(D;K2XW{-(UCNGABt(b^a%&bNz2^X#C>50NgJD zL-X#In!Y%1X6~E$i_?!qtmYSIg+AOjs~2b5*Y2B*Tid7mX6w8u*|fl_`fxNR=aM~3 z7{X%ZdpP~b4d5Jsll1030lTxfalj+%a(2Qx$Lcx#M=`E2xB1o&FeV?2=T9-}y->1By7TYnu+@E$Se_h=q)?5l zB>A!hUw&K3$+OTjX-bQO7i%~$w_e{NZ5Atzj+d z?9>!Ok@^pGwiAV9Cdd1cXqb%Cpz1RI{Wc=cDDT|I@^vqoB2CCTmKWC ztw)_*{H4xTly{>J*`G*fgurzdEdd_nAHRT}CGyAUp%Zg(RN7;eeTk|S^2?!vM_k<} z;t^-Y!6R0Wz#}GG;f8LQM#2$4d|n?4?b$)-q*`=_u8Pdd=iu6xe6EGOJoOV^j$k+7 z<+)Pko-H$j*IhuYnd|;N#!RZpZOaA3B~sH7hzme|?LxonfI%02BsILcQbP|EaDiLu zggkl8{Q^{dapydI1kqi**k=@{V;8qt6GZEjsKZ0EPFyUqFYC>3 zwYQ@lc7eJgdmPwMg<9f(wZgo=ze2+cTQ~Q4^8Z0 zX=Ub~3%|XWcMb;x6-;KJ+q*;ty8as&==ul-`twmIo+3LF&<`izz%i0eK1M$NdB@1& zHFn2dz5dP}8-dh!j*%lz?Sm(V?8$I`*UlIQx9%7|UU}PxgV_9J5CCUk5Iui)5RmpI z%f`p6jl!59;U7s!+t*!5odPi(rld`>grE5jQBv}`?JiBv=cUk ztUd)8wflqtFY{yfNm~}Re$-aUe!o?!d|hr)7^^$0yY50z+u1P;53!78RN&?=5jcJNNF$O>voP|qfkU8&Zz6}Yn*in$yHwN;UMjfOmW2H! z2$7jTGm{CkR#2?f+pgp+F`V4t8OTWQb$jPPS~+~uMHLbB7>?nQJvFc+4|>-?r4i&t zcL9SJBq;@dw!mtM@{QF!;TXbG1n8eUM)>TL>!?SC>wWaNue_(TmoV+YYwl$~bH=ms zp3YywtR_!|m*fl_nHPIxB1i>_U9z6}Hdl3)CZN!O-4o^H zTT%G(U-N{Dn#y~6Z$)EV9;j&6iX|FZ9VoVFMN_dsnadKlXMMh?)Mv|vTBlq@*@NXW zZtwH0WPJZ+%dTh?uK`yP8y4Ns8@_A1L#2o~V@OGyL7Ww7bT@59ko?7!L#009+k7X{ z2r%OPYudHHfWo0NV+w}D=`CH*ztARn3fde=@(7A){^>;(4<4hGCx|LkLCS?P$D;_$ z#=8!ahK7(Ge;={~Z1!p6^rK{MRhV_%#+NCF2Y-Zl;f-y69YD`4e8)y7J$g4=2?fbjJ?j$9xYKS|>w2 z&X0SXRO3bRr+QV;~eiKb|A%WVz7k1J{=a78gnY#dMs+dhsp1758S?fC-}UWS8PI&wf)tyPOo>rRLw0zK}V&thlnrFAKZ{K=WS#v zT)py|&EY(D!E)U%N#?pUokV@3U&*f9c5r=dvD;=)>X#2EKa+SlNYK_=IEwbPmpCOg z$;l&Nt6#@Y3E$vqg$Ja-{ZCBEvjn?bem^D8f}Khx9e1AQSBdk)S$xBJn*Ly(cwmjx z1JY3bZS%BqwQ=Xkg8ip|mUP%lKAe*I52mES48GR@T<f50a7L&-mf&e75r=!c$RD*s}SeY05lSWVJ!M?HF%ewLyj_fg!fn zEO#RKLbe?VN}1QlBRq}2FWDpU_M!y_5h(vxRy%h_kvLU@8%%5W-pB4h@2}C7Z27c* zC95G%rjZHCXd&lhUJi&|NhzVZ~JcnQ?l1$#I5^{CCu{sBKd$6sj~?D;GG zsDVpqV3O1T`;+uE{7I0juOR^q15N@(TnoXe;rEp1!>V!lY?B12D*M{NLkG^p9h=3^ zrvFGoZwKyIx#S+)`f&WDvqulWkWSi?=C6TJxXLdfv*%TGMUuB1t$Q2$(A*WR%E-It z-tg9G@YV}*&tcM`s9F!z@d*K&X(&nGD$VYTujC(6Vuk;kD z8fU+lW;g9UPo&Wo{!6iHY6q)1*Bm4uFq7hu>WU!Izo>EgUJCt-qKmo(j&%-s3`Oz$ z$fu&{s1{mr)k0n;1}06Yb#cHw$Rs}g_)+Og^P6}7F>MvnU)91SA33DK2=DJFTFe3* znwlvr)C8nsz7gk-uHVGmbNx0D^Esvy*wq>M7HGnL#AapoGzUv01q`c6KYZ&9vWPi@ zpcj|?c|n`KecXBa%Tl@%uD-d;bdW6j?byIo-8a^&U+CVO z{U7g!1#9@-&yTKg_{KS#F7@cm{(s5;Z#j|8C`i6a3q+n~>shIdMxy%a;*GSe zmrly^x5zS)4JOUl=GcvtYcI&b5fXSv);|V@GKAqv_=E?1IKicK}+( zg3~i{r5uKKL>QN27LG<@QyjGS<_544$Zj$dH#-y25r)NxW$Q~L*>$mtySr=){JINR25zQ)$IUY zz4Dc66&S%@@GMr9%xQP)RuYu@l5y`g&H*_XjoFi+Rg7-3#-u%T^h?;U;fCG+K%&hoXF!lF5-J z{V=@Q*nt<1ym@TF-n+~Kq7_>mwPNxa1t)ysgoYu$n8th8*Spg|^8{tU=y`~SbJkFL1u2AqSTWBk9C1J@s-?>>585N)QnihMb;b1afG5>JA`z;Y) z=sYn?grDAo!K7PsKxHM%0g1QQh^iO-i4KAx3tQ}RNH1@roj7=2G}9AfweKfKpy$I= z(%#Pt#V_<2YdPxD4TnG-GLt}m)Wr@5#K-=uFS=S{Y{a2t18=AGRq#dYpVE5v>()QI zT9UTyv^LspZF2QRYiH70?(5dp!d%9@okm`^8Q;4?UM*=ddk`oKsI006TwL!HGMv-K> zBr(MQ$otvsEPgmUt&3mb4F{w$^13EGb9YM*tT#IsTy-Mj*LT}5^DDg1$p-MUzrN!b ziC$unCqgo>PsCqkZ?>@m_OeR~ zEAWs$Q#GJ-k3_$#UI~-H9tDq?N|eQ8$_AAB=N;>c^?4=4bhdI8zJhM=Bt+?=9ol|s zdAi$?bZAr!om_K3m(CoE9G9_D8mW-w;j}eWYfenxEi~tL8io>%1(1jP# zrXw z#%5BDf2ogh9{QsaPj8h|69VDpPjP3czT#5tCpjRmlW~F zYF1Qmi`5I1mv*iRsW+7H*dxOe|C&H?mU}%z+umH-9(T31K&k5qI>E^>?pV}>w>(khu>W=<_$(`TF`~rxH2dzzJt!9u5 zkOuCODzKZSa-aeGe!qdT08=O4?yT<>4V+;X_v$ZybfdV?Jqju4VUl1X@Uhr9+QqGy zgXH=d_t6DYX1U*HI&&yyYMV+R87zd*-dcLdytur?f1GrxypYKWAKDS^JTx1Fh$@v7 z{|Yi(q?$z+IL)b<>oFAROSZ`dGyYXhT>;v_mMyRF1~J~5%CfBJ#+*q{AGu7f6Ls{w z6MMv|MRy;WjroA71U7ous%F(K81)s{H>n{88o6;zmPeA^=AL7fk9#sz(JUnQXr4+FaB7P zeA-~{o1(W{{u;@EeDGawN`}*TkNr8w7MaB>u*`;sQogr;DB;h5?pGH*oEuxPhbc}P ze_ae=9>HfV7RT4y!YY5x_kKDby?ef2z-y2X$2MY9_i(X566N}Yb1po*OSYgITXCs@ zH)p$5?ES9Z!zne2;9`>bVhD_Xt%nS&10);o^g>61|tH`PRYA+xettzIP+r{bpjmb5Ps;qM*NVLficyWxjS9Z0?lL zo3Gsm{hjhl^NmkmW9Ng}RpdM6q)&D`wK88jBkoSp$5m8*bW8)d zh+`1T&i8}fny)=5ck7>0T6_gll#D@!bvNH3|+vl6d^>ATl#s)<^?goq#X*& zo%f=+u9u#ys)s=CVY(rEsU_rJU=2W3^8RT=Uw?SER_{&3o3ip=!aw~NW4-RYSLuPr zWyKimDW8Jq$`-_NgDWeYlB-rU#Qtukq7T+yRb&;*nO`o#K(Z9A2f(8h^ajkJJS<}_ z%gVgohKW*ca@R<{0QJg(y-vN?iPRlEMn+vxzy@+`_;*t&NbRv*&^8zKs-mFnF^crE zf+h6sM-F}Quy~2QY!UjRRoAVjkpI+`NsL|1U7@OK^X%}apFOIb;pcW7-{_ed6$ zHzqW7*@=+P`Hnl0Y1om+eA|aVR8OupOSb;ZnBaPP5jYPQI(x;K*ph=S&N%Su!k3M- zcNT;;=VxW^^81EM?l5H4u3pGElgfx z-!QT{s(sxIvq)VC9Syn>9kobsoe06dW5=nXp30Niz)AYBfe>;gwg_w_GOW5!DT{*{ z1n2-6A=D^xdk$8eot;%v{zGGD%q5Oi>Ae%zCAC?Y5sNWR-qy!O&UgGn>T~4rIvcW< zeq+*hue`DGZ}NtAhgz(75lnj8LXIBPdf_{z0qH2BVR1spsW1~0-jVb_o-*h>GNq@ z`Agna3+91Pv3Vt$8YQLrBb%LYN{3{1qoq7;*^vfFzHfkP0+_xc;Dx%XYsZayQ(K&3D~kYnIJHyA3GHNTJIf!n+L4);fjwVM|uhg^U7|DlB;1}}m zkuJjTXG&}s2k3_Y$B5Y#?siTZpJ>|-nd+Wt?G$@iEF+e2!cNl_GM zVY?gCzj525tH7K+2-A8MS2O{&dM!dqm?Cb&D6BgZ%Mf?YE-mjY#jup?vHYS~E305h zCFjhuBD9ES9Mr!5B;a|Vr*joJBwFtM0tpTBZ1+|;&S0$V>lPxHNige~X0v)(Yy|s5`#4{{$OelMKz#&rxe?+ zLcSSwc~obqj*%83Y6lrgJGRyM&3LkQ$tcf`>N$1GJA37mc9;|k^A)?#t2#=HMK`y)~D)TbtKs;x9 za&>|fT&ImmHsO7K?W#I_b1UFX&)%fu5*^AI#V)*`#$1md?q?_e%y| zde$2wK$g17319eIc@Jh!M#b^_StCn>KlqEDVlCd~-m)jPCPv%5v; zUN93^=~e8_L1s}f7vqGI%qyl)RduiuysXipwQ!SU{stl!T^acXVI^<(7cx*|?Gck0 zX+Ahqc89S%{`2@s_YhzCT>+EkhLM7 z;AY#<_OjVv1S0T(lDm!oSpalhz?nMhO)3XOTyDrbOm1T`Ze5ipIywi_1pf2xu!hIU zu097jDM_e_Hiwg3#n~rO{jOwKQDqJpTT&P7ZfH~*AN3JQ15mpbW}hBV<^;9Yj1Xuu z5AISpIg+a*D|KP02^w@&8L+cP?Q(S~ZcEo423YIpHeNwoT>cMa+8Fm$U?~12JpuCreY06Q`nYB$?uW|gX z%r5&Ln4yln+GqZ~;`>gSgFJpxTuhUSvcY+7;Jz@6m!Qt`aKwKpmlMIp8 zjE}=<9mGb58)`q4KigzlE5I*tOuOCOEq}#WH4aY><>sgK>ev4yO-4m|Sz(AZcJ7yBy|+|&Wyk9fBSxPN74>4u6(epE79f$PEj8O}e#XQjYv9}r z5L+HMxRaL5LdiO@)s@eYkUYgV`pOyy;D>ktHg13kr5i|*&q`*Xy+dMepA#izz~9z@ z?-q*Fwsqb$_vJ|1JpX0Uc;3_YS8SWnK3ot5n5=UkFW*=ZF)PM47(t8J;|ef#OJih` z?=z~Ty$pF@WC8tMWf)eb0OvfCn7o@v?{S10%*^+!h46j!1X9`uDj6}R>vLl-s>)wN zFLp8&jiH>-W=@e|*cYN1I^X#D@=+KII;*xUUlcHen&VRj*P=-&@_4j_)Q44P*Q2a2 zEMGPAo#N|!jpF}uT&983A=1R z3n?d=B{;gsH~XTY{JF`LLu?o@5o>r@Pal4VW|qb6y`+l})K3){Thh-4WE+npPrl3F zrLNpTE)fb(9@;TU;2HJ_|8}o?6LW$qS~$y1k$F9L+jMx_V6s_I25sP2X@Dd_t+z~9 zPz{Q_#P{;z#Y1?X?&*}Iy|Im_c=^oR=N)`%Ve9Ob8D5`77Lw^**o=9SK;Rd#@0rc- zhnDQn=>z>i?H+T*n8??{19ui;wjkuNl89^D7{Q^n7%jwr;Zb)d<(TLKm*_NYR6-j> zJcn{9oKr|0^<1diqm;mwe}Ls|Ss&)z?2!K7Llw`;|0P>*%yG`{1o+gSvZj)K1qAc5 zyk^Wxf%iNXA;pAJml}RHP*qM529or0b)}w^*y*3;@9I`(DtjR)KLXeHSA+>d)05<} zDUJre!!9ngdKl<0u2F|SJ<+NzAT1Vlx_l6|VB&m=AoxqhVAY0QXreyB71?Y@zRS?z z@sYBmTLdZ7Sp!mqfp03=KR#b@&_HchM(o+LgiC57lJNcu;=GA3NMcERQB@|zF)@O3 z=xIt3b1=YI&ZSFqXT#lQ%a{CKab0D7ZVBV@fHfX;_Rf8|Jmgph(R`Pi-E@W%;QTe_ zNkA>1+XIm#HK>=;=*7g;pU!p9J_{k2 z$^Ffs;{3?5wyCbZY(g~}N2TRKcPo%7GcP)d+uH zj&iOzn0I4y@|pWjFDfy5#Perm?lZM0q1slw9~5Zi@)ppMKzYC5dp2j+b@t#4GF7Nj z$Q&^?H`Yf=RVPA`moLKluzkgB?G-#+bW`Kql}em^Qm1Z=NOWKF;CI77WHL8d9y}Cc z9&vb5Z>jruP#sO<8XU?86S5u$G9!u~T*Di(va)n6qLW1aX~IUr_$NgipdX@NTd@Jn zd-+8BwG`jBDzP=62vkruY{BvxzDN3VJrvVt)*5hIq7yl1(yI+-dlQP#ihI;N<<>{~ zgjH~*>xe_B`hboVZ>v+Ukt}xkwpYSz!+v}+Ajw=KQ5pMnJ+2-i+=029+O9$*aw~Hdt)MkRyjQ-Q)pLVcvST`V=AB^auGX@5PC3`s*%W~tOqz11gh?Hoa`AUFo*mv#g_WOd6o0NGJUecDot%bZ znQ?i+55=w}e7V!wQ7rX5*BU9;7Ph}uhGmAAJ5c$}Rp^-`CXDJP=34RF9t=aM$#aNY zeaTn7PJwBuBDWHedel%~_|{lpa@WiHp3rm=h-Y6{|7LvdxdVTnF(9k5dP{J`!4?(- zV5E!L0Dr)|Yt8rF=ShiWT{C8`)0~oE?!E4-ar!>!LYRyTr1!oC(*JCfL|+sATdMR6 zL>`ZPO%|A;4QA+~BkExoJYya%U+IgEr52O(ME?HSh-be)Vwx;FV!8^g+k6$8&}*F1 z2&}tB=WWFJ&p8jNTSU@Q=&jwCH9p#^bhe-L%$;1T;bQQY3@vvgd@OlY8w-U z1A%$~7_3T$rN#zH<-8Ryd9yd+wj88yc5d+|txp~h4u(Nn4SL_=Q^Tb7unpmd?+R_c z-ke-FulUxE!FeLf7+ACS?2HW!v%dxUizf{0%(e!XM zbRWYPe%4s^4U!M9cn5lO-gM33qv)ANkIb_iqxO{7=TQAvne$F7W1x)GG2+Csdg{pA$2~HD?XAHQ>R3qB9JspQQ zJ96(jc21Rfb#@xM3fu9HXa~XqH}=eqwg(%de4nN$AqmS${ZdG%qG0WLfUrerU5abb z`&X6s3o<<0m^SrYmS#hyHQ}`wIfA8Ng1Yn~1DNRvi;bV+#4!fIz*H}4kO~avsKC+v z$%v-%mNKV#uiu{G|7Ehj#bg8Jn|BCN8&)pt*sYGdcf1=_O*ty_3tr#Wn)l(;3Wd)) z@WM8@q5H5Nk|{R-m~`(ntXv9B6=P<&mE~Iu5ix~Tw2s@b+!ik8_Nti|GWdX!Bdb>f z?S9{tuuQ9g{)@LnzKe{XXxt0kyTLA%hzbd{4j-|%8`y7VqsM$3tWR*($(OF0<=kHE zoaTdVag2bC@}6~ZDyRvdlSR0hI_G5~7dy~FB~n!As^sm>0f2Q>Ssmrxs+1qfKerLcjJ zd}R;pDjQo)Qt(}XTf#Y{w}|bnLc-o+Z&3R<+Lb;oUG&=6TF$wvhPH*T$OgyiHxv3p z6SDj7a)k0B8a@9ZhfWf3Hm#U#Y(}J#jXOsYsqBL7Bq5%v3xzl?M)-17J)zK7-c~b~FfY<)IA%sNCBUN# z0+v~78?;UZg?Br@pHKTv5@F8o^6-}VcyV?uz<+w!TS8MqHR1+L61Sf+^ZP>+<{vd- z7vY3`TtkV=5UOQQ$1zkrV?k77(%Te@d(cmIUH#-#FpUJSwka9+=-s=wOAz#K0!Z(! z#~Z(-h(&c})cTqND5%i`(mTCGfLCv%t1!lGULprIGuH_3HGhfVtKM8stA~9G>R~M6 zcORh}1mgw=rsci^lX#(@-v)T{wjpN4Tu(j(?p{^q`u&5s8S5zUfq9eb zm(M8|DH_#vPI%qLLQ4j}9+VGg^f}9Eg6FL5xY^+#mmw*hTqD!rM6LuZF!^~&XId5k-hZg%BoO00D(Pa;97kEb7Cs@Nqo-^ha95Pr* zCz%_}^t)&sdwq#-!rU^?t_4c4fe!ybimOr>?;^M`e}es-zy3A0un5M! zY$2zQVhb54nrkegG#RNek;DVIs5amV#tEH_8hd{O7rA6)d~1O|ED3GprFHKpUT^{O zNXK}=XrC9%WbxB+Uht`vmo__#4>y5sIsBkPg&>4rx+QI*&JROVIj4d(H^5q!yC3o9 zmXy%Y-{{L%7h4Z2>{!pE1D($B-v`%Mlv;D3#aHos9}&Os<{WWH36TCfBJ~Tqko&PA z(D^&=u|=_h{|+v^%<;beFfN?pvlx=jI1)$#UjqnPv{>f)5|K@=IILIiLloy9I`m1K z=zA`~`gsp}4#cs26o<)Y<>zz*P?81C|4Ud=k@2FI9^)zQN4(X$(*GVyd8X%Gczeq+ z(;vt*G?`g0-A68$sTa9gb;TM2^;#+XpvtowSU;}?ZY?!%#;zmP;%3?IbKGn+pFD*GlDPS(zm*YsJuh`x`TNj{dCxUHN)?ktNN}G zYI0^L&g~&*);Z;$+wqA~Lw&|(%~}zO%W#I+;kmZ)ad^SE zdRC11(lDCOXQk@X4&UygzD%n3o6PUiJmXFo#iLD3JnGsa1&$;;Hwp3)@-K_}vabh&n1JLZ2}tKG zAVqOQK70fY0cdlj_n@kLL}mmo%sNz0)B*Eq0%DXR3?@QJzj)!LaL%2*OHPoA@*g3# zmLhF-8o9e4GZ=1tHM5=$EN(RDM)iSrm12k;YQovo6m%bwM6jKSo`U4pGmGc~`P42Y zheH9d_K7~hgK7Z@>FT1*2=e^Dnc4zD`W>XQ7EErKX=$m&tzwSJy)e*_g(*%*3h@y2 zP(JRg9vofIRQK5u-x*3QfqEF7abxhTF{y`f{R1i1tH)z8Dv*C;C`D_^^n53V)YjWq zvWup>4u(2f>BvGp7LWby^*)kts%J$&Hdt%($k4E9DN^Wftfbdg!9*jG0zngT5l7U= z(Ml4><0e%h6UPvZ1{{3MajfB;7#Re=%xVF}^QSbX6K@wv8!$$g zcMnG>Wx$|1qga-HxPiwO0`?J$BYZy8k^(%i8C_UU{1kEM>KvbXiw_I)psaK&lBpTR zDVZ)wAcDU_UmJYv+L{;f2ExsoCOjBd$ZWw82I zuh}G9`>AiH8ONJC!`l!h+nT)qAR}JgX4FxV1#702w=JDEPKUOG=LFLli=_w)Yc~QySvNxFvBU z%M3)YZrWeuFjr9?@qB3xr84PMZ;(Gdi$oyjYgV+*Z34~S=F0?{gKOt2)yl#EIVffB z`NEiLA@VCF6({b7#N7Ec7|P|E*K?!+9#6^R?k3ExN2LeoL4CO4xV<)Qz=4$FxZy&s zs9R2WDDSAvHP3b?@0$#Rla1v5*=QSBUzs_8q8}XpyH|6Uz+T|hW7Ug#~+ob+|gxN z!9)sXSozp!ab91=hx)u+Xln-s$T(Y~Ob!~E97X`3vt#?Mi6Xk6Tt`VA3fKFg@&n~P zUA#m|3Q`G43d+iVy$qwoD`RtK*5I?E2;XE1ELN++{Z7<;k`SZJ#-udC4GsZ%I3hW8 zwtRAjuC-8ut+b>bAmQQ0#*t>2cO{Cz{}6`1AHX1!UPY-~`Q!|zfR#UmrH-O8*wJ^RwV24( zHl`f$+4RU2l?mFJK}Z#EDqI)eTZp@@rN2f{Gi#t>Q}|MY7Rv8y&GP5XREpc)*9keN z_u}#o!3ko0Bn98iL>`>4bd*HE+lW_XX#KtA9xuP_u~P*vZ*CRu8hO`80M{Y>Z=NTw zjBvFES0}r`s2uBR(ROurEU~WpHtst0n!ORRjm5iegU~5!mlupQ02V_KQ)@YvoME|O zXKGa=ZJZFRpA)$)%kzr_uk>dBD;C)>Z5-y8FEF01{&NL<_*Sa@Tx-7Yto3#sZZI2(eJ+rJ z1!IFJ;t?;?fs{mL5!EfP6E~|%%qCm1J>?IGBbLhYv^gIMQCI1vJ<|4iP1oiyS?QYs zp3B-M#PNcpk(VrFzot@D~gnqz%R_g04F>&El25L{7%d;zz z_0aTp!! zSY~WxXdSCIon9yV>e$a|Brnzn$>tl)n>>K?aQZKAXmq~Z+QfR>fU$i=(dJBE!cep@ zBcch3#X~{rV$#FYw%C9m#$#lk&3)UYt-sf$DgtMk^!4>$yZk*T-2Fx(U9}Q#b)Ceg zpUGFiljO&Z#HaPdr|)c6X+y2!J?$50DRXxviPnqC+GkA%#1xr1Ak+c*XiU3(|Z5P&W0&^wQCcy@WQ$DvVn>&GY?|zsBmac zR+6;H>#JrlW~<07pI~;=!o%WAvoB@vnyds7{qeF4)!{W@eD6}Id^TYh+F=;QK z>EGSVBy8UM-)&%FKOM(hU~?YVLNImYEP9CYOfuty-o||tO&(t)a&5D`EBl!*O!+g zJl;E|5Sl64Z8R|V{_{p#ZN!#oNgk_b&PS?5ysB$ zRTZ>+7AE7SbGwv3QtVj#wj6aKRGhuGbk^dBtZr!&f-qP6qhnngG`Ok88r;0aHvIw_ zaLaoSaRnNbkCUSRdj9NUOCQUBG`!vO83Kq)=Hu+ca& z2{&>aLeF_vm3#R!BngWT1g@wB8nf5-cOAxmlH#LutUP1?f@NA@jumUBtU9s^Kwfs{ zS{Ymku@mOaY*j{{hwB-;pmljUHrIk-nFFygdu3+5(Sdxj#q-Zs`QQpU5AbwBDcj6M zmocT;R~vDSQKJ&TE8T)G65yN6qc-bxm-6a#fN4SjQ!xAt6Th5eQSt@{;loJjPE%{NYs&5w?_6puW9x zvnIPLy0?z24SY{in~^$jl|Wb=N;Rer#8;}TN9>JjCZ#DXw0R%O2VTgYj{GgBt9SDxVRW*{}Gs{kt~^_qe6;-ni3S2^q`7uCyWM z)p=?6-aV{EU7Z@+)$$+iYDbxy`-6{hpvDJm+U)LNVw7QM)G&wj!mNqzwrQs{p$-Tk`BnMEH*}NQB z^(1!(diTjzua$P{>Trh>02E)2dZfP`_J^}OHg}uYuupbb`RJ%|pMu<>(QI=fF2Ss5L<)~RD^&piaF^ZNBfL0z`x@|YU=8}bmYW4(s;B*|LV zYjsSG{0)hwb*$I8e&9|ciQ_lNREm$(SWmdtTbs6)GMwvUHYsi-o<2v3dhu$krmoR4sH72DCwg(ihQO%^&A`}_w7wboH-;Y z90D-_5r5LM=NUqc6ywok|3CKLz0HZ^N*w+w?O6v&(9-BSR|_(u8DI<;@PKbK^Nw4s zlGM=Zmb+VX0p@*h){eme<4t^v?OdEqVm4W0XOoSwjgt?vNWfqI3cu&nsqU`6NiEGl z$gZ>5py{eQb?VfqQ>UuV#d`#@o#D8xVBF*`XtX0CdjY#f+0NnHFS|y`MO>pqOLt~n z0f`?Ehd(_5Z=Q;N;^5vD)P)0R$T5xw>wFFkMLl*O;6pfR%*Wk5CJ^5&TD~k6@O89_ z-WbIkz14jQTQ>7?<{8>ZEYPv-AIQJ8R_bC!oLHz_XrkZ4Vl&6Ry};GXN!vubVn>7eos(>p8S+3mH!+xl2k&2KmXpIa zfW`VrH*)%-8#(>R++uyv@&BvpReSX@x17Z`Y>2j&u-Ke0K5h3!{RJ10LZ{~zYo(`c zm%_yt4oDt1#Ytwcb9QdA#_mp_dF}j5o@!@3V>IVI&W$g)YiJSfo^(4q#iB8Pn)=8z zz!-S3SviHbmk>|+w0&8-Sf~C9nj*F_e}T5F1zRF1SzHTKmM>a|F|Wf(nsxym>*qJ9-T$*4dSUnqOBVqR zCo2qo{w3QHZ0X#5;UznF6pHu@G~?L?J1Q&xo#r?R;s{(|pbA*1xQS}=6hl&=L#qax zvE37gHeGS!*6XyP+@=j*3N}RMVGSp_hFR*pBj*}GU{|qlt4xFY zWbL#v%?5L`z^rZ!wsTCfig3XWTYYYR0fR&@pu5dBb1AP0`jEtVE+ z7%ay&jj?t_oA-U@(|5pR&(XOqE%H8?Ce56Evhh4#r?WHHY4nB0KvK?Bv~Vgk&r}?6 zo>X!T+xpyL%mXKpF~?8xjOptWwGs@KG0yU6z-je(6U_vtAXD1n3vR^YDGF7Zra)ha z50pf}Tn4u*I<~Va9ow_vFma)uJI&Hrx=9Q949zcKj28sZ$l2^xK;M~Twgb%~OZ-v9 z@ASmonrFe~k74T72|L96(%j-R7-I;QXr->PluMywruZEhr|yW0(Vn)iVE%O$kW$C9 z$&qo47h&Y)ZU6SladcG-oDrGY#PlhqHZe;bZx!|zwJ@dcTyxtOILB?UvO}k5a3AVi zU=I(c>8rlOygA8jagOG}J6Sx8HJ6x!DUCSK%Z|=-ZX2!YX>)`+S2@#Pe8~}jCyjGF zJ~|8QOI44pdaPu@FH%j^4ON{-k7~N(x3@jeQ5z`DyP<{VCMz6mJheO9^IUFTYk>uW zgGO5~xs94H`6Q8%o#)c>*{;J27#ai;aTQL|;kQ}N#bfmXgOjemwCi}jLT8^}pc{g<+$Y6|nHieIvbLRZC zr}-3XPQCpXFB~3crJa}Pp?U+mZsY-@MQgr^2@Wv4Ej$~t7`S=cbNF1IhYsKIqynl} z>9ER5b%%@EjEh=%n`_7EnX@uoaf;62C7%|k+N3cw3l+O$yM_t7F*}%!^%gJ8w^_HZ zm*FzcJ4!wQZx( zjGn3B*JJeSF=hz-G&P_?T@|Bu=q&pMT6DWnKemxcmLMeQmg&U1SUg2sOHhsQ;hb^oHQKo1-Ff&5g+M3r{HcqwR z;m-nI=~)$(<*$t)M32lZ8H-a@)ZQ?PK+8^=8m+!nnu}rTTZMXY8}pdQnK~mFG$hR2 z`2{#yFTvjjaB*){xVriIS6GfEM7=Kx3Z9!M58K0MC@9c$iN-3WA%K~yyS5SP>TW`u z2bzljlYrY{Nr6%3ATW5vzU8D>Nf;A(8MS5$$Fj`g##ih>50%3Fg^GIsrogK#q5)f- z7eFmtWPaVvMFdLqrpBTZmf5O6f6v3tb{Yb+qCdyU&L&Nd_nfUdc@u4F82GLQ!>mw- zI`RS++9Hd|2Ny4}-5B;^HzvU(pOpe*t>%IisV=^;?T8yHHQjLFAkUj89by;@#&Le= zlqP)e@FOL=v8!V?bMtNmye()huv)`tfR18&0EewHUeOCEuPlY7YLXbS7O{F3EpeoC z>{4T@V23aO7Tdt+aL;Yfr~nETNYBmTL)a8XB$-69``k4BbFPR9jWPZ$tNRMQ7^1%` z$!?Iy9m4dQa2aUw2Lj}8`V>dN4pyv2#JS{*P+EOd@ zguo0ks28(!K4MnS0?DU6*;Mc<(0bmVCk3PWvEgpAtEAk8KBp7ASEfD!sohXC=TBp- zBnAL1gV@=j!gS;c6EXxv42uhYta%ijs+XgWZ7hNcL~pIkHIITNGK(BRm2P1F3Jr*w zV-p<;3!gX8ILEndpn+vJb1Z|#R&KrzGWb-$0N6J%pwrJCU}qwWja~^IJq>d~4+tk! zRs6P?6Y zoAK(m_@acHEb6X}KL2=BeF=-7zeimvV<)Ym5!l zPIDNI6?6Prp!QHvyY2NtIfh|ND(wX-^(S%5c*$0`Y^H^PT~u&Y*#6`Wnr@PZ|CbFK zc1)8V+c6Juhb@!wZ4W0+P@kDPaKn;^<=}V>t^vy z>)3d~ix(V(ZLN>8)D({b#o)yzbDBSQm_IZXapTEhypeOP&Ut1k4le+6n2D2GN-nXV zOEf^1n-%RSK6_litY|jUjjVl7fydv1GaT?8g;y4(vc)LeDAIeeN}h59Cu5ofys<@!oGW_!#+8Q|J!#nYs++)Ib6#V#QD{y?i9M~F zmAR$df+)`&J*J-a(2n+;v?)t34NNvPhGO zxEm1*qB)7#8)a;cwy7nQyc3IzJf|TY6pKm;(*R=jlvU>&>Y$iaSi={cnh+^^Ytf#t zkm*@u2dL&eOY4VEYVG;J8IV33vajyp2W@KbibJi~q42^~&|H;9bgPIJVh3H?TnYqP+E@t0AF?e8USydH%?amCy0W!6S(ixeALacbYN)$fM@`WQFTB8|byo^?Ia#udR7e zpMpFK2Trpdo`(*2_^$-uw~o5-+wq4rx%I3)uI<*MGqAH5_>Q^aPH`La1Zk=u$eUkc3xS>Ylt+lIxpik%X|{&>={v*13yNOS%IgJLeP922Wmj6-;uUPCO2 z&sUy9*?7Z3OnZe74lcIjOa^xhfG&RAlB-KqOs7^w_diQS3M)JtqVh*!i zSXhXm3Y#oaC+y->C9|VAFHRi8<#uFlsXdQIIVa}k&TN=W$U7A~EOig730+_%_a5$; zoo$Rx*-^;zOvL z5COxa6XN#q3NA#Z(f3gkAOz+Mb{#6@D^;cv?$O44dTR;Y87JWsc=oI}B+PT?0vpnW z$$3YKukdbw$9SVUg*gDypQmvfnPjJW$53l-$(jt>wJ$NpMjI{==k#euu-g$hLECgA za8^#CwHUNG6$#Qd`#cuxqHqL9fYPEhNdvpro0Icg4?aV8JGF3_R|=Rnphv|EAfTTU zDFBvL((o;zG&u7GA=ubX4xyq2@G=eeSftOh?Rb zYx}fwN6#*4C(d)wH$2eI(meMbSE$fU@EP0$+oj#?f}N*rE%`9V{f$$&O-OT#bK@sD zmOq9uh%pdxZoaeRDXY{Lxxb&cmj^QSo-3}l2%oMrjv%`7T;*x?a6jjUkhl{1r1PRY zIq!U7ra>4jv~a}bHh?JM4Jpg@0Po1pWGCDhHOJ`-0O;$%2vv(LG*xF3O7n|nT?KF& zPYKA#=Z-K9@I@|s)GNHB5QN@uo#ZSPUu32^RSZ#bzA|_2@Wgx=#m*hJj<{)2CXWXE zwcV$U9G&yi=&zlp;dPtf9?LZI$|+1~0zaRH8)Q4&${F=}*Xxcwt}O8`Kc}77BkG1) z(IDbA1=X16mp4i{%LCAK*+F`yd!jf9<>u3IDYcZ>9%q- zlsdtmCt`s)={5-ec{&!D)1C$)KbK>H2`9+Xu!Gur+MEuh&GN9cIT=N!qqb`+&HFib zq=Y;R`PP=TO5TYWwRlRbRIDR-P*$IIt@5e$z5cY%_&!gwf}C!iinbG~l;(>Ta(k&1 zX>_#6UgxF_J|hi%s#7p2*oho#U8Gk+i>GX8jZ;pZ`x--}Xx|#aH(#$KJv9}aS0>uq z$@=ge9h-Z`?I;B2kn3-wJpi#XU4}( zN!#v_b*0s4cB8m6p^XX<64ch+!(aHeT&0YHi&8kU3`#gT{hl5ZTg=?K1`;rxf`-F(_8k zBwODDID3K0#Pn2gAe@%6rD*1ORg%v)485b(PDq;6AjXj7=(JT`s*Rte{~T3JK!+lc ztxwhV0??iyQ!CX=BLi9{mZfM7b3u_*y}<@os_h}Xy+lo_Rr4dmJFKW=$s#Sr(NnoS zfwVX16!TembV#~^P$mn~;APse6x9LHG1Pew8S$2er>WVL@}-I0tSB4r-4DE4tJX#m zF3X)pgP4}0YfDlWKsi}m3oqT6)D4r|4UsbQL)(HjkwEJ((AwoMfaqc`78 z$5ok(tvO0%Mb|8%S)f}gt+sAh!bL&Tjh3V;7f3~wOjD3dVcq*l6l8-)7FkqDi)hw! z&*(Kms|7!cg5Dx*nHDGs3Sa0fzX_4A` zPACg2t7A=r)K|wuVRg)sj0Uk*$JT;%^H^6>Ev#x9GS(wobolj-CWG)245HPDkzALp zEm2sPCAmpN;mNk4w@p!a(j-==EecQ8Buf&7C-pY8F;l|DRZS2KVs#9S8*DNqh7Bya zIwk=Yw2>eH{xc4&jH);EqXwyqSc+qsVJKwqPgW+wtjzeQiQ-Pd2x$R-E86)KG}#e_ zm5|v=u8t|K28U7vU=NP;6ERZ^7fE%IlvEo-(~x~bJ8P&66Ro4FqL9mq+$^Qmd|z^@ z*;Q?4Omx|_CAE(b%OZwpGe}~iL$(s`T-Hck>ZleDMw41(Mo7R}B|(v*D9+d;9Um8< z=)uqa)_d!B-H*TM{^Ig?cdm4Ae188of4uk3&EAzSAH073-nX~z|Nh7KK6>xFJ6HKR zV=x54+HR8>Vc9Yits&YU85%P}qG?%eb7p+Jp;*mMH6!b-@e`7>s|d>_s-?sdtY_$-0(6-TtwEZs-&GyI3?rb0)7&Ob(5%d zQCM$F2GJ~0Shw`HU2VhOB4*%chY00^!iob-NYJ+Q2ezg^Exnys%P5+xc51{-(uS$P z$hsf>?cUWlB-QG@_eSsI|KxZn?wFRT929`Jf`q&O#vi)3KD_(YRVc>3&OUn_XZXS8 ztImAN9n;cV%fPL1`weymjCA)~;FjL6zjWrPt(yw4e|*SwWsB52lSIFWf;CrB?iXxOrgDMA9}tQW&xp*H1gjrQ zL_q~c?mrmX0+6<$2?^RN2KK!VKJUK$`|jJH!;1dVe|BH}xclbKd+&UM6^JHPRdQ6{ zAVy$F^SZ7QNehn2GCCxxpVwc#f9v+$Z~uPpotwM}x%c5~xQ@TObLH+guiw4>=G{BL ze(=eEKlsIO5H*JzJ0_{f{sOM4xCITSW68e0*HEd*_4h>sRi5{pojiK6F-$a8Te!DI63YeDlHmTffECX18X0 zqt#T*jNA0mCH&%|aLC>ypv)kzbQFUm6Pe67Y&MoT4yBp4)=0p;umVH>Y1lDT88cO4OszJZdhFf0F zKxcU_UDbAG$HcMm{X$1;tDT0Tr8hcoNU(KTp{AG=q_BV7Q3Fs zje+u<-bmX6TOC_lOTjRF>KoVhm^k)?t)V9^k)$rJj_K8NM7CDP%4MLNUT4EM_w5TQ z!+{^de=@9QnIuy)t7A4`u6m8s6^-oMhyP}zR_ze}Os=en1R6#4eu({>p(ovnbI_%I zSz%vysB96F&iGOn*-CatoVvIn83HL^+?jO_Dq7M=T~z8xvSO^ISPS@Vk8T#4=wY|p>>2zJXbdu65gH$|a=xt(H+qBw6qIFutfCWDDL{uA`#wmSBNP4?yOR#jK`?ZbaFmX1ou8L6>vUsRvLy5dEuIn1n%ouC}DI<}J% zqnfXdt*;Z)u4p%XB8x~{WiO*D^<-`z*|#rgm0=huacUp2r^}jE>d7LMhA@=1Zy)?O z<96mYgQ+#j3_(24CE+-g0)Se^NE%V-8?gRxfdTGb+T%#9os^hIq)bX6j@(wNt{X|p zS%RVoR!Ym%l7^^@&Y+3IzSas^+sRZFtwwPZ^;F7cIRhxAm4giK8}XswqM#!J^mk@L z3LT~fyoiVgZITiRbg28LhE-*RY8$$x!!R>V$vnBK*(AfI0Sy2~ySzHKIwopKEn}9m zsh#AChvzlQrzR1Aaxk4ZRqm?QVXWBk3Y@y71{rSyiADRbb8W)^*-+}MV`~{xZ;>P^ zA0*{+*-Gue9Fvr2k5ZPj4av0h1<8`mK6`w1EKHn8JE>p`xX=%;F7wrE2)JK;GqnB^ z3?jUN>S>^FYW4#|c=Z}zy{@Qaz;Nq)eM(D9uh3D4*KhFkJBDiM^QvAAue%wj+h?3D z58d@v+aP8H4(+h2bF$nqB#Wrq;f<<%qeY6yneBE2G6q!U*PWF)^~{m7mldtd)29~Q zkBlR&%#o$TWe;EOB#ld#l1BOBPAWw?UGZ)K8f*ggiX@v!?b4;BRz79uEyX0MRMJII z7nRgSXO&14Gh_Q=Cuw9fvSoqf+>s?qZbFHYv{E}ePHma5Z8Z&jvv2i|BW`A`OikCw zAw6kj@aQ;`BxUwnB!Z%umZZrb__RZ0MkAYo#^DUTCP`{1l}cr-Cef0TD5rKh$)r&> zGE%#((hcs?rIoc*3P+KG%G@3f+dVD6C*?%ZCJDys}t<7R9r7T%`HL0!S z*06GW($UXj+yN=9xLhHlVLS`z9m!rw{%9+OPX2<(fXn1Z6Jq#>!RV<`Y)8gkj%;c%2e2d!!w?{alEHb&1&=zUfxu+n!cGi`|NR64HXAiW)>B|Yzr%sOP3ZTi)1u?GnsPK z%w%CAB|05d_1ZRY57BCsrlQu8T58rNh##8`#N~wEG4T%*ure}=rdW2NtSa*P)iLpj zocKhJVxyRC;1aB0_`5bpOWz=N*Dhh|5tBxo3Df9=!9M*gffMAc#%7IZwXy~CX0ca_ zj6uwfN@-&dsWxZYQprl~pde{}FGz+FBn>LOFYY)*YQ~l&Ov#l@Q)y_)i#wnc8_|3( zGes#S>SZI-AQpWv+=8Nf%@#(AC{f9QeOPcH&{DCqX-%|1l4vUcx`?QPOC}` z`a8wWFQzQ1&gvv(_TgZ5-#+&9sa*CD`#F=FmC9CTQ>j_a{X|sCR;EdmM$_6)c8F>c zK`Luldg+p87qR-|cHK*t*cVYLYtA>;Zoge?+_C}LUuMls1-NFVBuXC0#5dc2Dl4VDy|&f27z{pXN1v*{59)kiV)?zPLKU;_G}&Nu*myVDPU1?HZ9^jst7viahE z!jsJ{CK-tiM&`K6{*n@tPq=?wy5#Vx3ro@_8 z%PaIc8~$gF>c3FMD(7acr^=JF)`0`5i`x#jx5T#Cw0kDy%w%c*wtXH~>d8rZoqI8< zJw+~Ek`GeEx63QrVkVQRu4U?qY7v8OaH))`8&;B@TgwOOW-L|BBmlG+z_gM|dkTnK z0JLLU@eb(NPmxr0CAU`I7Tf7EZPeB`lbMoe9mu6-L2Hsoiz~Wv%Fy!z7{U4xJo*$~c8DkxO4NuZ6Qhl7a(82!8h&ikF~+usmb$EW$HZj4u4~r1 zv`OIjz7A&fLOCcDlB;7-FU{(up&o4Wp%96>UhP;`BqXAyvAiDyn62pcP};9`TW^Ea zO*8;jp&tx5tn~wdS2f#!H$5H=K3fk$%Wrwpt69DZeWR>yShY`Z2|WQJ8=9h+f{ zxsqE0gSMpmS6O(H+W&%aV;E4Uf^Cx5RwbFz09Hp;w=BH{tI&XVe5^r_(KA9JZ)0s4 zN}~Z*jqd%hjcQwOw~3La%MH*B%1oO#oF-;d-%Lw}p>IM1&H`+8tf|yUTB=)6-zA#e z#Qt7#@sc##D3)^31zm5Y6)g=m$79SqoK1s4>ck+LOlF)7GMP+KlhANWcC#&MoGCje zQrM8vj4bI*11{j*Aqs-7Re(;;tYtm3mW5gKY90)gi(ps}<`RJaTFS9N6;?Pk2JP~n zG*#U)skZ{6L2=y?1;@HYq_j<~r5tNa$HFr}0q+KyOpda4^00O&2U0N|xo8G}DY(7` zI2HZGD>psxCuM^zS(RG!x-%^+hD_}M0&|Ev2})i@vCFh&dM)iG+e9L8dfxT2R?9?xNieJ%!Ud?VI?qfsUU14OQ~ zl8GAMMaCeOv7JcKF*}SV2wsUS(XQBaYZ6J3MVx~-Bt zOI>)J(MpzNi&`j!cO$2e`ER(Tr|6Dv7cKv+D&KJ4U-h3EfB^q7|ltB0)VZ1RJ35SG4T?cpLH1K^wn6dv(h=JjPib$*SB8qc&!X<@;Yw;yl zDMWHn@_>62u3=Hg4_L@_HmUa;B_;k0GN(v28JC4%Lt6tuv9c1>?3jj~VSlc1yVm-Q zP+)sG_U~v#{lti8mvPR3Uac(G-T}O*jsvysLxTePBu|kAyRX78*s{N!9$5cnDXiY z8_-=D+u%lDwOp0e-X$lpKk#dsvZ|XTplO28N;j$DL7?nHnwrhS_d+)7D4U7}ihIO1 zXcCpkt~5!cL_gDb)nfa+<5f~0u7WnPHwxP10-Zw#Fgzd1(zaTzY$t=X<6B&1qP(IUN>U58$nJlF5j z@Ac`uMf6KTkDBH$v}O2=u(IZSWL)B}OZQ`-k*D=359KNK!NSxa+KiB}fAUL^Uhsp5 zxYQyEcjei?(B$@cyw_y*w~D3_gMMO^neF52>|6zhILcD*RIUf%U|E=)n4S#~d=s9W z9gtoEgGtbHlFC5`Z{fg40ecH-63LY7{wq*>MXn9_FW>p<-XGrYzW(P2?|;^P`>pOb zf4%?rU-jPnpnK!jy{ngdA78!y=8x|E=&SGUTzl~9-@C70zkB;9z5o1#MT&U;uiZDk zzW3G_SfBTKr~FK;GfIo-9m~GO%(X6*oT{i?~O?sYegFPv&l>tF#o{-vsUIbr-mGfkK&D{mc$h5v*cKAQJKXybR zpUtNH?$|ardX~<^p7!3G-**3Wb>OrQKbhWhTIgJ&o;UQ2Vzb9{UJHHZ)xSRkXA#E= zMrdag`FxPRPJ93lJ%G3&3?YOr24YnZjbp??fE(V#vp&Zh-mR4)hLj(D@T z$>ti|!ua?%p;O4Pb@23YpHH4ScLZT#%hpOEfSXfsZNQKNE!RSYnn3NGg(NWyPuD;( z9RfvAo6y8z$E=%jz2H!aD!nra5!B(7Z*>vF$k^jQ)SpXt!J(0Z9{`T}T8DshNmExe zNmaK4%8V((dt-u|(00>YTHvU~5`y!-WA_rCen-P@P37~`F}Z9aUh z`{u9jfBS9sr`PU(d#m@;&mLU<=KkOQ4cm{yKk)wpgFo681J^}{=f=eF-I+KMsj7aG;k~+ig58)L5*$3Sp-NXTQZ+!>{^Pk^z z+d4J6SANm`^e5eG?{#ndsQ2y{-`%-}6uf);n+L!7pnK(w-u2(~-v8@^H?H^I`@*Rl zj)Y>Jk_@S3GBoT;JNRRVec*3QjDhjtL?Pj!lnGxtCJi%tLaz}TK#qZ_p0^3XlRhdM z+M$eFA08Xw0nb61gL$$o$%?fd7bL3=5OYCraL~T-_T9gI%G7H`re1H z^=^LB`^Dd#u3gfC50`m{$R7drTOGq|XZXv3n5J%FP$sEX zd39{wDG^v)k@1635c7Q?=3_#9IVNfDefU~sd6@;bjG)Uh2uX7=RWgC$^DVrAGie;l zS#PPOw`YW`@1siUR`4sci_B%SKk${H!(nIKX7ErAga7&B&#IkGI>(~KSHpO)H{|apj(KL%@nXe#CCPvXbDB9w%)PA zphK-00o^VNfa ze$u^j19xM)3bzTeYcx^N)f&5sGlCIGKfc+$eCOWBzv_MV@4a`v>fZR^?(KKFU;fv< zZ*DmI`u)GZfzlTvm3F`SbMKpf!){R_aN)YQ&%zVsGV9s7-VIX=Qr^`PamQ%{&Xs0M z*RAH6CTWo~4zDG>6@}<-Gcw(qkCAP0s5a=YvP{onx-mpsm>ARs-92!K=2FMfEBt$} z>1~_xuow5&P9Of_FHT(+>%Mujclp)cpKo?w|J|Tnmm;iaAYt5L*;{Y0!{E&-$JyV! zcK4gVK6vMH@AFr?SFiVOzy9FozYQp<&V6A}&-HMUtP;s^6u+nzKH4B2fBZ@J`k%3T ze)!+rxpwz93)6f5?{D;Of6{yRO7E8+dq_dMo%g9CNop|1ck$^rFgA|PpymY$i&xEY z2+Q3p+ug8(5&UO=zb#MR^ zKu`Q63N&>6ant3Wo)`?l%}o?r?0RmPckq^CLhh(#KfNO+%R9H8*1mc4lrip34ofSf zQuoS7-EY1Qo|m|aKWu~O6fPb;bK*F|dq;3YxR4g^|Nhn9jh_akT=&*j-Jjp|!*j^b ztk@iS+5$Q0!1fHAGJJTEd%?RY8Co*Y`}hxd*y(+IwfF87A1Yqf#**Zi7VEkaZ`cdf<(w<}icW-}o@59#|2>9{AJGZ)TU+)ji zs}2fj0crN&^3~o?{-gWzo6gPI{ab$nke6@tK6nfJ2?1Qij0!tKn6fCOSzZTJK`^;N zzd<|Dg1Vyv3-Xe@dDA0Iqr@IW`BSJhri)Y3)uKbFQ5F)ATtLwhV)%&IBZL@+Au9`< zT7Lhd-Y-AyzJ9a&r_0@cfA!wiw}Cld|1+AX0J%T<3#6#I{rbJPf6PYo)nD)b{hjVd zzx0Z^z%AXTq^fPWO_TxHkS>N5c*1hs`tm7A}?vBn0*H=2k z*tSQK42&)1BU{@bkTJ*|Tg7g{ZR*}p01E{N?c)@vfgFo zVENqt{L6cv+`9YsU*KEM-P@mauf5)V`;Yhk{`0$Ef5i5>EAO$KEWx=PO5b7>;2Ef{ zH0%QfFJ@Mp^|uz}s2~8ahk>__M3@kw!6oL|O9+)+xCwi=(-5xbUZiR8-Hc*l5MDn5 zDd1ZFM;6XUI4I;Iv8p&PRTQs^WI)(hmBY^u^-*993hV;{ZaSt^~i)H`TR6nU0}`43~L7@|^|{2wpV7{R6R_ z>!?1rnlz4UIPtym+aAvOz-1PH|2LQ=oXm7_xMJ|4c9bYH7OzCkl?!Ku%hlzZq&V}_ zM?s1^H{8sG%Lebj`H6_0rNJ}Pz5Z_Z&aZv*6E!n^M3;lv*-(xiWl|y_#UC3>&DM8F zaV4SegwXr-SH0`Ey5If`E|Ix+l6!CdwRibdJedWLO>6^KOn5!vwr%?{#b1$Gc3`;G zvfYm7nnP~dxF6bC<6Q2`oNL3D&NrCp+aOKd2C-QrcSp_~kM5{5hXykI?NP|gg<+ty z8ce4WG4SlNA%`wqOwsm|uD7C&f2hzoryqD5_|uQ>ef??gvwy$$$t_Noa=OgmE$;;? zF@&;^&h@Efzf_im?4T3E37tMT@ndt*Pdz4w6m|>T)HiKL4H0j^b;PvhGzFci4;xa8 zgzr&9RP9S$CKQ=fOrRlLBfGQ=LJooLz8jZ?1bY+CWQ(O#!ryqu`(da5%bA~+ZG!-d z3uVEH*UaBwvtky&Ih@`+?uHD)gRKeA+k`!5q4(o_N4A0O!|o{@f>&S+w@N}6IXw)z z^}{tioC}E7wE(ek6&l@+Mgwh0TS?!RD;yAV`D|7cir`k&XZ5=_3qqMg(<{_p9?hEJ z$%{O;J1y6=;bre0kQfcV^D!}KfKdG;wTXbG;<1W|)s|ae?&5N9XCql5Oj`AOCyAbS z+g8wipklr;G&=-W5_d)D|64^vQ0p)3=n7V4OjRgKd60tUVde_LG6~k1tekT?GypDFBvsJSBMvgg$31#{+ z@CJF>AQye02%H^37Dp8wfZK;32+{Ni zLkzMImxn*S25w#d=knXAEj{?`o!+0{{h!PK_T8Ni@89~5-us`zecCVo*!}w5@9tcK z>*bHAlK#nGdCOyCz7bHSI6@)``>9)f6)9}a9p4_p&TFGccQQuVsFOS>n>Vj_|8@&~ zUWHP&Wx}02RX}_HedGS8SGqsH*?aR%Bv!dtZ1q-JqMSM=S9VGfHowryZOu`smU9_~wI8Kq0<+=Yt0yz25uslkV%k>jO8g z&gA_I2=m!h>=!qw?yYOx*Kgkc{g3Z`^j`Pvx8Sn=D-@SYLCl9{);K4T^0F@|@ z;rmzj>)&_3{po{`{tC?Y`5$}l|N8!?KfeFz)!uubb^r7uZ*M_D34Vo+=S)t47ebAz zqS%iD3Ax;%XZV~~aiHHy**NNwkI4p0-5AIH_!kjDgOJBun1XGAIo8M2hXXfcn29GI%4!D5oCIZprsz9qJVm*S>OC3(Ni&u;3Xq+kMd>E8Z5Z=m_zovZzGZ7r3NxcNWj7IsrZeiKwcf*KbZ0x;hexfHu;5^*7z$UXMa> zu$1Bk5ry^Moyo&Qf$vTVvB`&!G#{U&`N1U3KYWtrQ;}FdLXtYZ>0VY3GB#+;Z+tx* zdq)y@ShfqDi_o29IA+;3g7zeif?zz0Ug}W7+c|xA=L#A>b$@of`}I3m#N1tOe9*o2 zUbsyEhne~Pv)S^6JI_2?W4@6sX2NW5sXf`<+t+&^e9jXSXBe%=@Qmy;pZo6473ai- zO~B^t#`}yJzx`A9XV-aN!&}PG@n5DR^4;5i@R=052X{Dn)3bQ^Q9sr(zE4x`K<`2O{###mZ@kxg?+dn&KL4uw^*g-m z9r@v1Bb!ui{o`KVJp+C48x}aC_udzggJTE0rB-9W$$Y8R=zBN^%2N9Y-^7EBKAwTT ze!I_Mo}*m9YtPTFcK`M|^AEwG7`LwVuDsoS`z@3Pc(I7el3yk`efAp$>X@`Wa<-p+ zxp;VC=k!6>lia;6AdTqS^W$9N@|qtCxMB695$-ooQ3WjFLRmm0!C3Xye;`2^KCfQ^ zyY^3iGDxrDhwovcKF`9g0k+M&-QWJ{{$G9v`{YNzd~o@4_sSOoC8gIY7nixKSq%b= zYF;As50kxv2-s)I^iySh1ak=DQ)p2y2~lM^AHT=I-y+n}!MQdXP>*wna8FzO^+KG7 zv~0W!;%t;&NSD{$+n2jv-00ondp-qIewP5ArgvV<}>J| zZ_Y4FZ!}Z_7}CqMq4R}}lmiK;YJ+u(X0D)OBp@FWYymV8lGRMBlF{Jvt%PPe8Y1af zRQez`kDk0qdolm?%xg33W5EG-p1B&tvNQU!21TBYLzqyPoBWoCp$P^wVEFi%we>S~o9fuEMYXv1*lM=b;A$gHzmhT56 zn9bg~3aIH8hYC_IolC{n6edD61(yoWPTy~L895>8Ua$t@s#v6DiUR!O$ktkP zx79IKy1?g01v#;ZS>70z<~%%`8zd&^XefjbQQ;PP#f689i&;LOB28_|QR_LSM)VP= zwE^wI=#`5>uNDSNhkYwded4aK;^w#xIcDU<-EQ}FZ>H9;n-Z@g5L=Va<>Mch3gU2@ zRfKNk=IUjex~D8U!!NIVx#_AMHB4`BA6K;VNqd%g{^L;EV};C}BS65N1fM>}Yh>X% z*>HJ~Mr3{VE%t7jmefp3{6tgs-m6us=tpT!6Q!*{mEP-DzV6t zMOu{5kDACKXN#eUyT&x1xtonBO!N4Z;-em> zZMmt&;dYBYg(e-X!@g@-b5iiZhx}BkZ?^A2d(8g|^1D#K@_VIzdGxFJ!Y!YFyo6i6FbMTXe83wz3LPjLgbip6K4gl+P_h*N!hU42 z92=R*z1D`=6X*B3@LsECLBf8o2|rSD|KHYwL)1L>(fK6uJGyxSa&nJ&374l@5WU)C z+Q_b;O^>v9+7vX~G|{p%;qbS++wTm#(j4wtm5n!HOY)I5hC()er|piap3#r%QVrhI`i) z%|GqonTG;rf4Cg9CJK32synWoC~R&9NuM*v?R1~S%t$npZo6YPX@1XHE)i)+ZN(x6 z*ve$61%}Z9>(-&#p=;-GO>`qoBzZXeT2kAtAIQY12?8jWGeY7lPsjwFHENpS~?YrMYc5nawESK1n+!8#6+d(P!2rkdx%hA$gJo8{nM2yk8t&0h3sB zS`CC4mwbFDFb8~cQI-^%?p1txdp>t(h~#^UrSf*hGV4t>EQ1-$&^Mfd}}><)KS^+h5X$<$8z z$%{;|*o7x_&1xo7G^9$VE!CDG*L5;4LeR0W`V@myNY$5p8OWc&!LKls)_hsVeWj6E z(gQWA+(He@oqYJoG4e89{E|gXp+-!ZXuzeuIX_7=BxcT&Z4Tl#q7+l2R#awIRTe=}N=#){FG{IQTHVSeQuftq9t+`2}eCocp zx;=zo?dBn4@{V7kK9C&idncW_dN_gxJUnItfo|s<8JSE4OL2YsR;j-khmf%yTy6|O zp)5STeDax0TQW?N45z7QQ^q_FiIp`^PJ5dhtJ?xBS;~(-iROxZp=|f=XT>UA@IqRU z0xRDqqHI?*7b=rxTw;0|q_2=9DgWrfw~P9aB@>4w1=68dI;EeDS3(qmoqGo0S;j%! zvH^+B&5~a{J8^0F!vS~!BPXFePdV9E{M=x-C{s<*D8lV6@)>f;_1NKz*m4&iwg-p_&wu?;sMuZf0P>Y(|70d+O930!A} zOt7gcGD%V}5Nfp+m?7Vy%VaYC&mv^rwz~*SAvdN22WCS;@4KX?YQQXa$}DC53({k+ zLjt=dA2yj}EU*@|W_`hpY1=b8nErARFzv6QwU5$lxgia(z}H4r6{1-oZTJE&OWptS z7x#YuP50|}AN=c0@Z)N42@sYE)v1sE(*5m+JYRc|N^>Jhd;5Nhx`YMPpn$XsEGVxL zXtIxJ_x&AixJkdvx|$y+56!4OM)ZRA^8s&*7{KpI>Ro5FPyj?&VOFrt31XU%-YmsB z>|gr~8Z?W(bqq!G^!n%w*|KKhKstFo!C$Y)k|q;%NEj8`$O8wD90_o;g&P7_WALWW z=)1(%_C`n#*p_{afXN+0_eMX&CtEmY8M7nHkS#faROsDiR)AupmPqkRUxw~uHa&Ly z?B&0Z8gq}#J}ZqX4Ego4?Z|AMC+dI^wJ0I-6}48%zZJ2Iqi!HODA{=v@RNYLpmaNU3ipeTbxZv`1Pe3zTO)%Oq0Y>!a~?aOe>_ z-%jimXg_PibKEoZnbx<})4=kJTNcqwxK0Milz@;MqL4V(CiLI7M*nFjb@->+YQsO9 zq)PuaH)x@y)M=?A>+p}Xft8y?ktwJ;{@r$9o@*!8X8j3p85W?!FnonW&d-e5R>9so zlSpOSdOMlQSo(2&6Vl+scU!99mi z7KXY0nDyhd9Rv_{AL47<)H{Y5Y<(0y$7tSCv<}>61o6j$7$8g{>sl=Y#4;B21;Hl! z9x-+jy8%hIjnpLG; z)g_~r*)$Z3z)nZ&_S1jj3QBl^tmti}zcLX897Sc+rmMHNQHXj$`-bnl#(Ia(5*k2h zlBOX`tXEY@JD&(YK5#3+b3RHojlzXl=FAP_*<$ z2i$GhONc4d6cZDq?jLtzP@pB28y+Du?zvshY;?$>jSkrd>PFcjtu|yM*r(LW^~o%m zoSe+=GiAL^YGpW|!!rqkY|4hxwqilWs{2$)Yn0DX?-+LXzkkH$++#!kmJt7Ep8~N+ z%GszfAz<0`LPiYTNE_#I;GKtaa)JVNfk21hqcBH;?xsf`{ zkJedXG`7qYN8`&}X(YzXO^nEyxycd7H#Oq;rbilIK0D(0@*^=zel%vu7e?x=I9g|= zxGP;SRRv-#^}}H_VG|N+h4s}x?ofUzs-2>>JJz7q)BOUI3_0?`XhNuv8*Su;{BA~G zDD<22SPQo>qF^eFCYTDN3Z}y3C~K)O+V)kLj*^0shn5dB!cCwfO_fXd~) zAwm35okAOhO{Hcvx!!R&&%;*-12BV2(|{t-F>g=j7pJB}%;DmWJc1BYqlAKTrVamO zk~Xo6I8U)+VT>G~A_{#O5kIrt4g|~!b5`I)J@-_&Iz|~Vy$d&#(n zdHnQt_4i8q}9@HQ{HhybR>^AKu)d@9j?XeiLg3$ z<_P?irY8PTZXhvOG<*`|x{-g3CLn-LJmO=saKd}TqArp`2 z&?ubbB`?WK@kzd1c!(sgDJDFxKSp#9!zdo{otEJN7)?Y7Lh990nuXW#8Yln=Y1?WtduCWo&hMPsq{)pkh8tbUBcg~c4; zE{zu@F%BObC1W2wLL#>HJ$mqb5pwXL^VQVV8Zn}09MWrG3XTMSWFe9P#tS|t@Zi-Z zUi%Ee2YV7+GHOwa0$ee9tWk!&HNoo!pU|YY*K(7F+wcfXCf~z~Ht_a@6?rlo^Wl5h zH7`g&M{v#Z`wjCck1h8A5;yb6(=ptF)iX_lm~egd(B+e_zwc$# zE`uYZDP}BjhNPdDjM!_*``$hgLzp>zgk3naAZDo>%)BLS%?SA{hYh-4yLP%Wc(o6` zz5L`w`g=z>G5>PB%UVCQA&5TJpXj`G>q8>F_i=slA(P&;NSiNbFC=ML3-CY%h~+}= z&^iAEZnYq*8@g(y+q$Ws#WX#p*eSgS%T@QCd)oU{H$C{B`(hNL9Zli8UmZI!@4ke` ze!SUhaX-W}Pa(T2aZk3|M7Br`Vt74dNzZrny^tRuZwk3R7V@V%lB!topAEdWBvY}a z4eKXT;$$-=ugvKq5m5$ZGr5PhA+)5e-R=y1BQlS^GYmUlUYR)kn9Nt(AhH5sRR(P( zd^Zn&GjXP#+g0*j+w*+(AH1u04iX+acZ_*w+hLEKQnC>L39c~26I@}KCpeQB8{9$b z;ar+|JBhRPaI9uXo38UApH1ig>XlkyB0k#;VWd}>8iH+z2KG@8<(9$AEb*Wi0fqRt~=Cmc5KI2;)>JHk547Xu%n%)ar5?wdF7fAYKT>o>bsuXjJcBaHik=0nc4 zCpIKCLn8v4&ns3lnHYz|2qzMuURg+tCxip=+aE>N4ty12?||qfL}(Tg!`z!qfp@(e zC8q)_^=#JxNGz040Fb+-`vQ=;mZtGx`C$aiH3OjLAkRh+5?e!SVIw@u?C(ZI$}u&H zPiz``D+CkUswF-y?3bTT{N?+uc)))du$wV*%60(EGkCHHKq-ZTVETS+FhwsI@2)k{ znB27otJRzlR_q1qu099}8R6m?ZhsxI=EIEIBF&+q9$@;s3xwabMW3-EHvhHo6d-Iz zJU(Vg(rtiTXD}NIVp9X;0$ch@f~Yt7A=r)K|yW`b59u!U)lDl8#(* zbXn*%m)&qvJ+6*bbpvihz#OS#vKsmJmK_QL{uhKZjGps%;d0lamZnPECSJjEUsYXi z+eh+<0DLQ}W2Pa8j;qwac)~O6{GJZGe=xqt2^?YjH9;_WFT2)Q38XdWyBaOKIUjr{>b_9#7}RUsNx}zN&m%_3uBIsb@m9O& zARkPAUUVM-Lf+Q{7e}jO!i##x5UPg0X%a)I>BJN?-4e`Bn=W;$NifK~U`dUP;NJTC zGQwk~fssk4v>F^OJSpM5dsM$&YT!P_9s8oGt!p%__wXTn7-ywvkn)7cgU3ryXTpkE zJ{Z#I$x|nGl{*y^)%zC=HHzo+rebDOp2zaBZ(-w`F%K|D0ZHu)pualc49PM&nk+eb z*Knb_`rNHLTyJ-9SWyY|9Atm*Evs{x%D;rs%BCe*9TVTdYPv>7egm71Z#SNe@ysiR z-6Qgd*A-1t&pvxRZWyBIaP&uwAVb%x$0Eu z7%Et9c-f+DkT%h3LAJV7!(`ap z9zAp7v08wgYBl~$^|i4NLVYYJD(smwY@+7pD|(IW;SyXMU8BkkFn+SnYc3^-ArsA_ znYsCS!HVvSJMQo^A-lde{wN+vxd#~EySdvR8#RT&;&SYXySg1|HmGg^`3)^iHAK7@ zfR}3_{Bzp>knVp*kL|?(d3_?(>AnJ#>byw1m`Yy&3>>ke^tXpgy_%#o;7Tikc(Kja zF(>3dh$F>$ANa1u_?J#qJG&2#vdyAzLb4M1}7hgED z_{{Rs$!C@yWg0tCNEp&4{39EA_(vnOQVshfZThGtDfEvPE!u3=6Yllwb4v@0C;iCx zPboLhFapjakN`2#B!bczf3nM*2=f8pmcW}RrfwJA7c!dTsy66Nlr3YIBYg+vh&MyF z|HOKed&+*3Gh33X(pNeAReW&T^nuwD@hUN9wmyIEHb0YkGW89ehj3S@_*t$mDuFX@ zo&6BOdiFSmy(RBe(ujWuTC6a=c{W z0T#g5B9X~t0y!#!?VL`WHo^f`jiyph7ootNKG#@-Q&*Fy@WxGGNNd~K`KaAttbB&a zka(8~mg6wtiB!NE1abl&){Pd;O}NZjrTFj#!=^wC#fRNE4uy@KDKP?>hiJ)QZ%=(} z7$)*rDK}XhDnDU3*!Y$VaodMvD2!<8Pf-{)tp6=33hl8CnWFF!XCKtSD@Ii=kP2w! zwA}kCB0=E*yNunY2NZ`%)i}U}WC%-8GvNjm3OV#c79r_GtmsTXB zc0`SQCoiBW1XT_39%!vkKEpnS0d_c?SZNL0l4%jd8&7g(?Bs_0OGZsHn{@Z`J-!b# zuV6<>c8X-_iDFt-u(mZrZ`brqEslA{^Z*37({0GX_7UWil3K)&4l63`OA$$>xGE3n zDV?b6IJwd7vHW2gBJ4i95C#Ao1P6mO#f7#9S+N+b@OkeBWuusIH}2BSl(x%l{QbqD7V!`t0b zF7J2DJwflrm^}i!L5nm=2n&3UV7vxBS+A*yPxDT$_>?Zr5iX&aY?Fl8wlk;zWSlR~ z!8gJ4OtoWfJ9Xjyf=krE4!6$5bj^?&o~N=_2Sk=HWc}(`)3VxWxbP&V<%#ayah9FK z6zsSk2m#K%a}R-d0U8o5oEjpzCb*=o8^qBTxY}5P%)!HTtqTL7PuUMyc6Isyp(<=# z9-?_)s5}+!ziU!Bh&$(|fDd{GRthp2oH-MI=iVG|*;eTDl*#{{+|7ouf zF}MswKdXygW{ww|Kokmng&;lJjck=w?ElmT;>y4Og-p16ynIB$aSztDFQ7_fvSgGih)X}^pN*uz;v4Nt+~rX>tO1w-2i!V8ClqA(-m ziqRhPQTZ6)13(@o&`W7Z5Bacr4n{)f)qAivz0bUa!lDWdU2XFe5Ipz=-S0znp;K%g z%!lbd&t{wcp0~8V-t+c!p*f1jN@Z=7e54Ue<}4?o_9no71n_XC4v1`7#Ly)5Q4MO5^|vR%u{mkRTW<}}8HSA% zvWqR3SE7O&Z(J2ijJZ{hxbcpxL3&1~YnG&FxR>meO5Hc$n|-&yb*F2~^lR|UL_c#T zC-f-*K~!AKhnFG)Xcw1y&Xv8dwIC#DIbup`4)NgYGW*EAz^WAiez>mzafySG+XTlBf|FqE6ARPEM?8y&^G3}x=2SJo zk2NZs=&);fkh!W)n#6h019W{^JN)LVA?EDix1nt4o~uvx&3n%|SW3oEJ_6|TY`WHm z&1_x7o@mrwxWIEm2K(D1mN6g}jBV2M5ZEScF!qB*xCCK^BSEB(E~g~bjS@nTvmOf^IuWwxikbhY9H)nnHV=NcE`SRO4NQAI0l7R3RKw}5k904rvk($#bfzw zgv)UXj_%zaQSN>YljggV=dMIINKN<2gW!Dmb(4QOkxxSngYx{nz<)>rKOh)`SCMoQ z4zrW6Z|RS)R}66*LwlxLVo))Tltwly$Gwsqks$0e@{gej?jWEC?T#>yP;iI2@9#qX zS%zdbF_+$>6N2>rL;+sW_9QF2_l^nu0#X@+Y!CyST14uSu$%PkUQ3y<9PLgV2M^8A zC#vo~^*c*JZ*K>568Pw=_bjtp@zuo7zPhK-MamnIBqXp)9Vk%;XI-Iedt@aOKOC1# zlUU|>FEX#U&)X#oe>y?XuLoy&G*TpFfu z@uFbI)|e4YW>`+cIJkc@?|=6LI+@#l3p+a;iToD4)sCXlRRxc7Njg%I`C~B*!Cu#J zqSKm|z_^y-e*np2S7B?~X@X189sv#8!|q=p~E7de|7&)pL}=c zTKC%P-M9bfP-~nLXPgav95IhzCQKg!AQ6KS-V!wsyI1wZjI04sE2 zXn3cUm2zaV=aOT~megKBbk}T0M+cRtX}|i_gEwyUKKe`Vy)W2=U3vfhCpYij{)|mD zNULvu29d^ZeR%h)tNe2A-uR$k80b7vc`>&BuaH5j~fBW`>H*UZ;B*ZbHENEm?IICz@Ay1hmxnd6@ zyH(6jN%{Kplqh7kCUb?!VsSbLzpEuVTd&G>_)Vs(rCL=g!SBL!X+qAIs_?rsUC-rm zby|NqU#L&zr6T;6syVqtY9-O_rZ$zGlqBpXm!B$>s#)4BUo7ONN>xI^m9p|=O)gMW z@>No*O;T`E*&3a@;uwI*jLq)GTK=ccRm++>mKh7_l(6VoyUP3l!roSd3~-`TpH zo36NGDBbfUSIy@N6m+qcmnQ&YK%Bp7b&6f7P?*ZrauoDLDJxADN=3wa zLdr^2I!{wMIWJG=k%0Nhd|sa7=SIp`>tssG;b?Nw#6*!clk>&uRCO{-e@{-xrJRH# z$W7xgt^bc0U<|=auXp%d0I3DCEkLUWO2*{ilWF8v(LDG-Y9K<{V%wKLCRwPlVih?W(HBkUnNEARJ2gpYU&2K;AEjuG6qA=l%kcdJq$N!Zt zg^-DQ<|K)*PpDHe{QvN?5mFI+xS^vYL?T$u2?wC*0pS>sh7w}UH+~L5XLcnxD%vPX zqL3@_f93Nb{kEiY(5ocu6RH$L_$AX{Rr)I&Rd78`F2fwPq;ni*9z9Vg3yoQ!0cY%4 zIA#lkFNWX^$(nEghaNIIc*>Ax1sQaYS)nSF1&J?~pgoceVdVR9$Wi9jLjOG=NWQv9 znV$*$_W+Q>SDa_Xc_@|x#RXPefZ|%9xX6l&P)q{FC01O5;(DNXf)&$+(Fhd(Kla}J zyNM%f6#Z8^d<>F^R8qI3mSo4_fC&@sfg~S~nR5^3BW6k&i$RlQ!vx1~B&FSi;7;l(D+QnRHt{FVoEBB`0|PfeLNGtoMClknAo zKrbcsn`^m7hyRo$wv&CpyC7lX+0LFHQ;3@saV-;S!qC>#lw-Q$sH`Z#O`Jx1v7;tI zLJqp7*}`u!^@>v9)*Ro)wLnj%j48VfcLvS2yIImpo}GJ6)}Hi_AcYC8>hvcK4Es`^ z_L|FclSt?#gcxZls~G?*tRkxxff|TjdL;&MBn}|Uui&P@u*6l5!zE4?FBZS$FK{>$Gih$ZJnTtdd4=gS7q=L{4uB`sd;zqy(F-Z28H*sKk6d0U4MzzM z9!h~uS~}fOC(PYlm?mZ=b0h~~vh4;#v8Q*lQkTJ?SX5p!TG-K5_(G{B?dIe=1vUgq>9-rM@td|eN0)`jpGZ4s0r*F5uxwS&6EZi|u`D|q?tBpocl3W? zmBFbFhxDeynu9LzRnN8*TPN&>1W4l~+m+&4%8Yqbc6ZF+NMf0c_)W%C*JV6)z#N)K zfd;&MpnVXz7Bxz$dJgrB7LIR~t>=|YDU(Y)bj)=rOn82n3Yln?hz1Chha59R>nuI` zaryn5gj-sZGAU3Ng1#)!F|T~_Ce>w;zI;PVgztLIwr1Oo`2yjkUYr*=wG)e=<~;kR zckHgn&6AWd$4Ch$4$uM6eOd#dHa8OH8N_Ox!V81y=jl~*L zas1`|ul&zLdw2ftmy|K3qHI>wk{0|a7M05GZAx>d-#zTGypNm#;qRpvh(Z{=j-*l< z?v;jrqb5%O77BQZ;5rJYnP<9{h&BOZXMn#m83f_$V;laG<=PN1AdVDfZzA&~}dL z79i|ZVbX9+z4Am|%$P^l)84h7U~tz;HSC-@iCWfd!93bDv0nm&r*0k=+8IaNmJ_7$ z?Yr%cQ^aMNu+C-(8rFtbs^ltm+Ck=DTv})b#Z0T?U`zY8>AI%v1hIdQ^v$DO9nOA} zm)N25f=Mw9BTQ#Yj7!D7-Ps0xnKsuycdx{?CC8mC?)B!B-ON_o*j{O*zJTv%apa`!(gIP1p64B$`b(!jmRxP6?uQC2wBK z3f7NG)Lq-VcHYjbvXy<_*wHtaLl5FP(4hCHYFCN9QW{so!!*6;}9$fN~uGojEVsHM~ zL~aiQIt8Q$p6Rj0VHge$#*r8U5KrzVhC^xq9mC%AJeL zAKv#){==`xJ{l2_eAYNh9)plssU^1e!L<|KXE#WXgRifHLtz-S+CH|gJqzfA{Ue!H z>^!{NR|l8xfx&@oxZT8gUsbJC;>M$G9^PB|@sq*jd#jhfeZ06ZxbwH=8-D_Emzfy$ z4qCeZ?$Y9?-uL&s^M4$iyWuU|<01W@eG{JMF#A?4D$BP{dq12cO+)|3E1!4^mjiG$ z-S!a*E{EMI0QjRnd#BG1ZvEA}c2nqt0ne;)blmDT`?hU%-Jl~q3R^OH(h<`h20DLf zaBqQr;TC61;vmFb7vrDpj9`t`ZljmY;fA-acz?J#xO0B#{#T*SV=Lc?o~P09K+Qo| zZ7!t&!TR7#5&v78PecwPDUO{j25EUw;fi+!dR#UxHx9ZDtoXim^KdkzH%(v;XlC_Y z`FCat8*OvSLBezQob2INv8cqi06B!5?R{1+p=Si)_V$=lwEShWJw4;%9T+^k>b-l@ zTe#~zxVZY(&FJ`P2QTGDx&BtK-;?w=AMw%$*?g3DY9D2VbUtW0zek{@mTagbw|vVq zdt5q;WX?f~KN1%?ZuC5vjPGkEnMHec)@-%0zcoriWo7p80*E;AsBOudyC(mp_ z%5|^=JbT3GFcTrT%(9E6n@L#ADMQCWR>W##r~QV_}yzp{mV7HEn> zlShPozww6h`o`mQQ5~ykU_DXKwp^=eb>@r3=*Jn$ap#MGDaF@?Wyc1C$_lw;WK=sR zdG|v%EFs;>TJ{`>R)026A1D3 z53*Aa+|I=h9LtIAYVj$UU}*o9%hLT@tCznWEPOS%bPLe`$B&jTen6ez|8!<>`b+Pd zi|`ocr^-?k#iB^kp7~!g7bRydDi#&8kHPkNe>$`J)=h8W9q;s6@4`8Fb&xL05s{T> zFHo{{|0`laTzmc_=&KyGU%vRk^1}}hLP=?n;;~^(8ItCoS*oNkAaP(FWhAgK{xJCX zntx=M?%!Ive-?zRYd2T!P?7ub;+d5@-wv*v^S=B0%3uEGEquEA!Do*b&n$oV?cm(! zD?h&PefTkVl0=T6+v53wew&0+rB7twWlg)4lR%OM4m)Q?7=FBXl`MhCtbvdTbN%6m zrTg!$esBTaKfU{@ck**00Tbaka;xyv=|xI&WkPN)l9GvKNWh3k06i+2V<~S#W45mk zOrty}&vcn%`wy5dB|}RyqiMmrc*48!9)To)?k^vE?|!;+o7Id&0rvd!LbkDh(R(_p zg|%{B=J*kq^@c2_Fr}$5Uj7r#hFxOtI4S6Vi|}mejW<{YIOF zy8poY?9%F=e+W(*_1?gRq-GR2@h_!h2)no4o$i<+Wk`!5FZZXX+ui9MM$=TtY#%RP zC2tt%rHwsER!^KBy!Rzt)TQse#q;cneGikziwiG+U%=zV(~lRguAaEM^5ZFGe24N| z%RUSSz@>+OUB2)RzhJBsyb-j2aV+cr_=3OPS^n@_(3&mW<>tD#48VMNQ5a$MgA0u2 zDF&D`q@O9HDTv4f7hc|RX#37RFOBazwD09TFYSH#)m_^$m%+O);QIyU${*qo%dp?U zi(|6xWO^ks&wUoN$n9<0Y`T&CjNaO5F=0L>QfzNKP0MbD2tmNAsCaA6tlT>ZU~lZ+ zrg(S10YqMS$NT8APi7W?rMrFFJ9%^I(Fd!i&NHgem@noB^edpfsSNCi`L_9^< z4QWXBqcLnd;`)o<5p06(j$==upJ6M!llPV$Uh+5M%;2vl2A_P+o=hO?@B9Pw)>rO$ z7rvmBh1n3E&_&@m6tSgnOoCrJ=tW_d26FQ}Lxicv+W}D_TmgA=yLA7(rTZrWrLv#m z96KHE4=?$wjEVC5d9eKDgTcZj!hr<3Z^DNFcZG+Jupd#K21fHzaC@wiKS@NCrHAK& z)x%5kQx60Hc;DZXAq1$ici^BKQU1r7X-~OX{^kzqZ`zdl>h;^iaEJoF1Vbd@O0ZRQ zaRNX4@W%4PTRvt`FbD(6P$2=$sPX3Z861=199U7XJnen=`O>3nVE0+L;Jy0^U<u0A-gM}eh^(Ju}r{2>MM{^`HXcAyj55YX`EjmsxTRO+UR3&XQui(_sO4hVRv#;M7 zPLPw$(AbM@x%W$(Au3I&13- z4EW#*%BHBs0a`ND{Sj1GnJqlQ8pHamD201o$!y|q0$1d*eHm|=bT!i*cxET|QbKU^UshG7rH2`O;~Y(+No+N|#u)3Y3x zP3%oxu=@DMd;ss}t$lX}Vps`|Fc9{1x@&YsL~4Xcd7k&%|L!5^%?PRd@w#{ZJI3{& z@+GeYzV*JB{Y!o<*W=L>)idp;*>!zprseZ1#08)00g=#sN|Emv;n!uq5Z;`ZuoQ$cQBZz$>VL)5mrrSL@mcqK}xKHbnm8Z3q6Dk>yxA+I|{(TzShm&JX+eSn;4>WY#=r+xcNsPzX_zd3x8OisT_Ut({ zzV(&ymv+6hJ(EkIs+6hy?(bwqBivm9(A0Qou1WouzbM&_O*JzMN~?v zOyK7H*W}9AU?)hpS<|+q`w&PBm_uWyA&d*e^3flcA6{F1|AUn~cYrj0@dpLq_wv4d zuW5%~+wJa`pIr=AL%m20b zU5U1ksGf*g5O1hV6?n$4&8ZYwU&(#cbKUPx)!7dB{aV>(x$qnWDJqIRo&;16U|@7x zisjCLYCF5{*TJ$o?b)_Ff)|_<(Ga!`{4Ep~$w6x;F`-adEvyGV&w!yBqu1-SiML15 zYPzOda9rCoW<|LV-{ItJ`W!&hY}SXD&!Z#UKHKz&d>WHN1Vj^*QY7!bjeX_q;Qg zcw@*J68MvVZD&g~Z?wB@cgIk5fx^`bUZ2#No1mQ5mD^zFOeql?^?>HXI#0B)W&3q!<(CbK560>tf$eXGK_x^Mv+eC2}ACF95l%#w06jtdJT?8;{z zCFjid04xa=W(V&sp_w%D}LF6|&Y{JBF_pixj$Ms92#bhCP>?GEN8W0;5BIqeamJrJ4IK;pZ zF*LBV%FF8}7#pPQa?EQ;X)Q(#Ni7h<6Uul2c!=pi=J@?=><+X~j>CbYHYyLqDd)S> z8Y*JU6)_MGF9^o zo5tZ`c+4YIj_1Rfj|4yzkCD;oWMShYx&uPM1K}^0bmMd@vG5sASwUm@-9J`-Jmpt{xb^w!SD$6pW(M}5KSbvfY=CbO6ZAjK1L=$iy{H=YG|?Qe+5*;P6WpZF|8e!i zn`B)pcfK2Z^9R9dxshT4&km3$+t{u$qLheZ z=~)ti#5?(q)yubHv};t@G3{wHjlP(xm{!)4H(INVDeq-XLgVl*66D4>vkSO~pZHT? za|r{h^2i&tH1Jp~pIhJ>mTagH_tXAG6aH)k#!Yy;)}s*T_IYg@ah`DFQ$09;VfnKM zG4uvCJCIRaL7A)9I=XIdHkvL^1!@BwCgfYDoB~z?e~agVUOupeYGRJTvP z;H3N}7nIlg?(g&wLaG>Oo)H&0V~|rC z^GGUEf7*A}g8Jk$#|I7vB?rZM{y~}esP4u?{Jd&`KGVN;(+^H}i}A0L1Qm(A29kvq z@@IojRCH=&Mq+ABJR@#oCS=L*a7OXN#R>#5;y|J>K;R8*H+NV`G+^978tQ~xax8O^ z1iWpReWN8v_Q{Ou>y%O5LI)&Vm_N+e#^b>iu!$LQjMp~3 zE@#!IO@UJzqPTa78fZkRmP(}rxhlBNq97y&ez?PAR~O4w3F5BoreZth*beqik`f*{ zkN4F4V4s2uY}7f*yYsy?2*UE!w+VB(^yBTp``?p*SaGK8Cwk&0bCP>5{_&JgV{Fzh zN>RSPU_S#MF!rMVKmBBwQLQS7pUb=saFtS3Zc{$F;-qU24DgG;C%Kx?Z z)mOlM#WAx$F**=&6W}{-y3mmiSvo)_huy#r9Lz+ukX>_bkBOc5$7DbcfQRWwghL2E zhsoWAJ9`AuS(&J7&1HGbDLHvu|H$ceAcQE&R6U`o0B2AlsSlaCBq*3vjf&(2wNaXV*gb9z!RV0 zwVh!0{0=+45y1_@WL>zk^xz#f6gbFkw@(kw{fRA%N^ndJ$0!kVnlmOOV%h5JHnX{( ziFy!(fjp7&CsYBb){H0=${fBhx)B;6che??EevAg#?pQ1oeSJF7*x{VxiHOFEE-M) zoQPv?%xG*C9}ADPr%8gQPP;d08FmZJ*=^U{XC8I4d{!C^S;{yGnOSn_B})lkk!)$Q zddGa8B3?kGK}AVKW&s2IFoldgom!j&1G;Sj%O|oD_VB4V~^5EeUp##!h(GU$1|II`1 zg>))W_R-PVUL?kLare3UvA#4|*betJ6tY7{Tcz+KIHj=Nkq>!=#Jz&**)Sqi zk>r#^uC=3m)NEzd-2DICMmpgakx>2hWT%iMCo5ju50^&7e2{lZT&{DU5bTvkZXh~L zz8wwaz_*U`RS}IBxBoI&_-^@ccgS&LPL=!!Y4o%S?Xa}|J{xn)`|Jk1Ou%1PuPk^c z7Nabp*&;!ynU{SWvLqZVCTulh&fK&~=z!Ts|Idp)f(Hqoq7RUqUGA>-Y-Bo;-d-3Z zf2CRma*qXRmLlT-Z;36{mahe+*8^|7jg!u%h+wXaDf{>ALL}KGk-PWr*(Euy{I!i4 zTLDG;?bb+eYv*O6XDIv&Eq%6qzuk$1SRgz+mkEYmS}l3`j5{0CqCYt)|A4gyvU1E( zjIeP+^N}R8M3=y(Me${1K6MxWJ0Hp98swZQ#hQ0FnF?Cq9j`Vkv(+=3Cb1*Mit^_uOX|-uqPGR!mYUo%*h6rfUsBBuZ$M%QWr+5=m z=&2i7IKI9H*UozHUYA{a((eIBN$xY6zU5~qxuq$4I#QbGwygl(LU@e`n&PJC$F7!tD114zS-C!N2T z;}kHS;>j!{KbSUUQOS)WKd$iY!WZPiApt>1jp)+ik809^3r=P9JZDpJwp&tgoN)Sy zB{QmLPjkG*Qzq~L!_J!gfDb?3PdIF<1D@u1&!-5@oZ>uBB{BqQ&aZfS*UbdX$7*zF zk{AC8lL@c0o`wb(cN7yEN%}xsYPci4i0{4T#mt+%W7zFcoHjL4KK)EwvqmrIKv3Sb zu?YsT;D%xQDc{nhV2UK73359U*LrCx z$zcvhQ;*)-ek9UIR ztm{!sMnbXevoIq2V~xW?V-?yl!PTGU3kQE9FU|JcV{y}vAS1=uSbU7;=!>A_+8w>5 z28qa*fKEK)J)|w*SUNxZKC+Wp!(K8u#v*qQ$veCJ_bV&ke!KMO?DC`AgDZCimrf0? zeLcAT4h}dA4nTv`H&(8nf#gKk<($O?a(%dPAHtvMR{|&Vov*yMe;;u!kFB%srT?{W z>z~9##$ANCB#vUT?-FdBdXLl}0!#W19H&tRmmDGEA&v$^ z-JE>_9KaNOAu+hY;T5}C#b2ml{$}5J&fjZ6Ao=AlAFNzI1IfI;xa8gaVfo7kB$pP% ze#Tx~tJfbcfBl7bVPXHCT`M=f%d^sx!#=+5{#krfE0c25}BafB6|AQ zpF2PdSkQd_V0Pp2zTKJ6y)J2jRp6x23+>ry&~J}TY#^g+_ufg=3-bum7;clR9(jipB*T2sd6os-^e2s_2(YJ333 z2L-siYbU%5=a%lDAZh*NVB=JX2lG<+MT9AOXSwE4x7h0#?QSMPyFL{v4?_vD5RbiAi(FTvrd#A&hmlM#jjtkawl zGj{G>rE#qL@c;WED1BYA8s%xkyXOj*ci17i_+l7)R|$f7o+tggQUU zyJ8+m(+Vj9m`l?|ay&?Q0AE`R2MT-k8}u zyvKC1$NVtmWXyS@{GG73{2`(*?_Hdh_eHr2 z5Ty7vT%f?pSUTQWSO5?Qh9Szxj85Sogz<(MLs`jS|Aj>|&*5X{*}*on!GHJM2j=__i%4Q%1`Wxmv!75G@WX4j>Gqk~5uGp5lp zZRbFSelGx%lQ}pl4`(7iC>?{8e5IJcCLm>;zX19;pG%7mrPXRXJ
*K6YJn0nGl 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\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):n&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(n);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const n=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${n}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,r=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const r=this.userConfig?.[e];if(!a||void 0!==r)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,g=this.useDarkMode,u=n(g?10732:7835),d=new Image;d.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},d.src=u},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},54047:function(e,t,n){n.d(t,{A:function(){return g}});var a=n(56768);const s=["title"];function r(e,t,n,r,o,i){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>i.toggleLocale&&i.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),i={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,o.xS)(e)}}},l=n(71241);const c=(0,l.A)(i,[["render",r],["__scopeId","data-v-08567d0a"]]);var g=c}}]); -//# sourceMappingURL=21.f318bc2e.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[21],{7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,n){e.exports=n.p+"img/background.de27f549.jpg"},48903:function(e,t,n){var a=n(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):n&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(n);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const n=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${n}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,r=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.removeAttribute("src"),setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.removeAttribute("src"),setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&t.removeAttribute("src")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&n.removeAttribute("src")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const r=this.userConfig?.[e];if(!a||void 0!==r)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,u=this.useDarkMode,g=n(u?10732:7835),d=new Image;d.onload=()=>{c.src=g,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},d.src=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)}}}},54047:function(e,t,n){n.d(t,{A:function(){return u}});var a=n(56768);const s=["title"];function r(e,t,n,r,o,i){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>i.toggleLocale&&i.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),i={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,o.xS)(e)}}},l=n(71241);const c=(0,l.A)(i,[["render",r],["__scopeId","data-v-08567d0a"]]);var u=c}}]); +//# sourceMappingURL=21.618c6fee.js.map \ No newline at end of file diff --git a/frontend-dist/js/21.618c6fee.js.gz b/frontend-dist/js/21.618c6fee.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..298f0ac5508563c41744bf7a8ef2b674364021ef GIT binary patch literal 2732 zcmV;d3RCqTiwFP!000023hf%(j@!odyrJoh;_E{YUbN=xQz)U*|Z-4;58&XD^1d;N&-E6R@|c!dpm{iuW5-l-VlajT7; zVWj$YtJSEt$!L3Lebenm+}BKS8;B+xkHCQ&Lm{>DxHEhju|e;Ahx+?HDIy+JL)PnS zr(56Ns;zf?=e1!E#iU-_UT>U@kP|>-ySusZOh#g3=b74ify4oo7WKHjRomWa;HGvi zdZU19YU7av9Z5dwFy8wq4Z|1d5aeYZzzw%X{77jrC>&3@U*;O*0S#Rqh2h*e(=Sp< z2P%QYG4aJ<7-faajZo*x4z^n;QXuyP@3I~uXif-)h=Kly%KfV%0My2$vp->& z3vTH?Q_hsit}{g%kJn*6CY}8khSX>JXyrp0&UjppXB8RH9;oXu7=~0sPT;AZb1VD% zAsh587I>)Bt0T(~sZt)AaWpd&>d2y@_RyvL+)5~;^A}1fHI`CpoKESfq5{|SQ3xs* zA5ED$1yQZh6lz&Rp_qvz*Xptx5Hx3DS`1yQHg^<4S1+C&vOxD;t6r-;Id|R%a|cQQ zqVpQ~y4q#hwR~{^at?a4%91#=s`ci)q|Ere3J1WoaxE@6%#%$$yeOWQluvZbP^`Ms zP!>=HRmQ6#(!}brP=mB;&Uy+U>2qBn2i8W8Eh1f{ZE##m`7{K(j?3XyAz6=c*Yd$A zk$o(fF$}AIpYk5$g3d@Whnq_4S_f3x)#{>)t0|aR9cetkK`FbAXC;eQ1W4oi0Qo*Z z@&G|`Ob)5``|fBaS)00pN3iC3x>8A!ZCP!|K<7Bz(ASy2Z`;_rFiOtUKnUHx-iHBP z&&_WyrR4ZY9{({Mk(D@_G7j<@gy3r-SKu05pi84rPZRA5bQ)=~CxL2sHiUr*FC61I zCIb<14S|hQtr$0PJEb^D%Q5LdS4en?Cl5@}i*>eA@k5|8uYya^a4KqodugE**lV>6 zEMXuHpiG(p=)MS)J6b02$QN8`3+C$6fO6UcSyc%VYO=1q76?Bw_HcTjGt*o;x*XVm zCp5H|U?A@E?Y&%(gg#wpA6 zeiWt1jJO4rnkLvYvl=s|`b-&3V#5YJGR6U%wIc_D1(xA1LU0bLIO`fL%DC=~HcFH@Hj1xbF6L%&(5aFvhCGc`i1RTZ{NPQ`}R<EPvee~rQcO`UjWd_1sY_muKpst~**cSCC}BwDj5YQqjBSMp ztyJtawKCr72v;hr<8eGrZL;jrD2y|4rMH?B5#DN6Notbg@tRn110TG3`{e!4kMDew zUODTDPOomA+h^=r|8f80&+dKu;lq#r{_w-Q_x}0UNC&o<#S!~^d6NWQV=FoSUDXN;S*Xjl&&$} z3t@qtEeUJY+J+F%YJ7s6h2<=s#xW^TCmUPS_CRSN!3mfenm)ruUC@62()_519o+|> zHW0P7>@v=elbP_9N?J8TL4$>>XV?~>YZcFuLAbr^L^33t*40aVk`OJA zprp@CFAvQx&!h__%HuZOO}8p$N0Viv`2WnVe)Dw^t+O zDf6nxHZl~SmUj80q}@CjCT@}NdIU;e=TrHj_^=6 zsW`QbO^i&0;+P1J!(m!}o5B&?*wLHtkiMshG%b+b^6eH|&Mzd%E7J)yPJpR>RFXU6PT))4Q)e-b{CH#N)wqs(aN%k4GmzM5JKq7m}IJ zLvu4<3103Jj7qFG4H_u5o%RkH55%FVm3!HmF6oI)ON*4In)#;sXlF9(&xFO~$U_oB zs@VY`OpvK@=_BbqnRy_)IH-njt_V{iq$!p3E1;MxOOi%~nzt&&FNQ{K&07d`LOs3< zt~MEBSG&+$lH)yl3E=5EesZ}0`PDpgIcd^`{L&z*ka1S#7iH3UCcyGbsgk=UO;)|m z1|TABPtI2*1a(R>DA1#4OO8n`iix?hI3}C5JS)gaJS-_6lM+zkYUR0ZeDe+2$pF+v>tfgDbxkZBMDv6p2L0LWnnz~KL<77@X1CA_i6C^C#TM$arv?iPq z;_Oj|XE7eHvBwo5G-+DQ+jv*FjQC{$<_Z!Od;6Zp?P#{QC&5gX4Cb<=pX8n%@#jv% zQ@!l3%%W*xi%Brw)6Q=Z?)~#W5AXgy-z7Y}`_}O*T;YQ+k-DZ`R=RR$9Mkt z@QpW)Z+&t9&X*^@{^a=9FHU}S7v(G3mG(5e6V1$0^Gr*t()ClGi63cwT+%INRiU)F zmfXg4CB8&IGt-(k;>N^rOg1-a8{38V+T00jO-2`|fczD26vwzZdGEcswY{}79lKgc zGaUkIHz&_oStmh~70Bc+hFI$x_^bnL7K$ZD|Biu|`B{NPkx{b0bWuooFETGy(k8|<@q+J#%-?r)tJWTmZS&#Tj^hCKE-*)nUN3|z!W3n* z#F_n_Vqqdh2rlYGS__UyqLB;EIc?|cvN`>_Fj=XU2-kTI+aVbl1zgk%MF$X>5i->* z#%;1=;>*}ic--FD+FIW+sbR$F09V{k23XZn7hsh9iHH_bQu)xGD@q+LJ9>O0&C z6E)(Q_Y8CDO&9TLgs7MMy9hXPGh$7lMnu^rE%eGO$`?bp93Xos mxJrjZ#(OXQ\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.removeAttribute('src')\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.removeAttribute('src')\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.removeAttribute('src')\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.removeAttribute('src')\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08567d0a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","removeAttribute","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/21.618c6fee.js.map.gz b/frontend-dist/js/21.618c6fee.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..4f82d523e1cc7294cbf54bed94f57fecca8c658a GIT binary patch literal 8103 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 B=ZpXV literal 0 HcmV?d00001 diff --git a/frontend-dist/js/21.f318bc2e.js.gz b/frontend-dist/js/21.f318bc2e.js.gz deleted file mode 100644 index 84d1c9ff8ead1a33d82f172d9e91ec1ce97b0ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2719 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 Zy|w0c*KdLSnzRRG_+L60>%k@>003$;Jk\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08567d0a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/21.f318bc2e.js.map.gz b/frontend-dist/js/21.f318bc2e.js.map.gz deleted file mode 100644 index 560efb5e5d4ee0d19407b3612c2436269ce9fa07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8071 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 VONL>KeWG~&e*s?ib#q^F004$9oa+Dp diff --git a/frontend-dist/js/227.44709224.js.gz b/frontend-dist/js/227.44709224.js.gz deleted file mode 100644 index 5b1a9a3355a999b27047359d5eeb7d66c5d22271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 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 YMo|84a8F8&I~bq;7voju_kb1v0C5(?L;wH) diff --git a/frontend-dist/js/267.6c191923.js b/frontend-dist/js/267.6c191923.js new file mode 100644 index 00000000..3b6e9a7f --- /dev/null +++ b/frontend-dist/js/267.6c191923.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[267],{808:function(e,t,i){"use strict";i.d(t,{A:function(){return m}});var s=i(56768),n=i(45130),a=i(24232);const r={id:"themeMask"},o=["cx","cy","r"],l=["r"],c=["opacity"];function h(e,t,i,h,d,u){const p=(0,s.g2)("font-awesome-icon");return(0,s.uX)(),(0,s.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>u.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(71241);const p=(0,u.A)(d,[["render",h],["__scopeId","data-v-c93807da"]]);var m=p},3975:function(e,t,i){i(44114),i(18111),i(22489),i(7588),i(61701),function(t,i){e.exports=i()}(0,function(){"use strict";function e(e,t){for(var i=0;it){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:50w.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(18111),i(7588),i(79577),i(41549),i(49797),i(49631),i(35623);var v=i(91114),w=(i(22489),i(61701),i(81148),i(20116),i(44114),i(13579),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,M=e=>k(e)===Boolean,E=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)&&E(e.then);function O(e){return null!==e&&"object"===typeof e&&1===e.nodeType&&"object"===typeof e.style&&"object"===typeof e.ownerDocument}function B(e){return C(e)||(x(e)||L(e)||I(e))&&!e.length||A(e)&&!Object.keys(e).length}function H(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!B(new URL(t).hostname)}catch{return!1}}var V={nullOrUndefined:C,object:A,number:S,string:x,boolean:M,function:E,array:L,weakMap:P,nodeList:I,element:O,textNode:$,event:N,keyboardEvent:D,cue:F,track:_,promise:R,url:H,empty:B};const j=(()=>{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!!V.string(i)&&t[i]})();function q(e,t){setTimeout(()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch{}},t)}i(18237);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 V.object(i)?(Object.keys(i).forEach(t=>{V.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){V.element(e)&&!V.empty(t)&&Object.entries(t).filter(([,e])=>!V.nullOrUndefined(e)).forEach(([t,i])=>e.setAttribute(t,i))}function Y(e,t,i){const s=document.createElement(e);return V.object(t)&&K(s,t),V.string(i)&&(s.textContent=i),s}function Q(e,t){V.element(e)&&V.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)}function J(e,t,i,s){V.element(t)&&t.appendChild(Y(e,i,s))}function G(e){V.nodeList(e)||V.array(e)?Array.from(e).forEach(G):V.element(e)&&V.element(e.parentNode)&&e.parentNode.removeChild(e)}function Z(e){if(!V.element(e))return;let{length:t}=e.childNodes;while(t>0)e.removeChild(e.lastChild),t-=1}function ee(e,t){return V.element(t)&&V.element(t.parentNode)&&V.element(e)?(t.parentNode.replaceChild(e,t),e):null}function te(e,t){if(!V.string(e)||V.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".":V.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(!V.element(e))return;let i=t;V.boolean(i)||(i=!e.hidden),e.hidden=i}function se(e,t,i){if(V.nodeList(e))return Array.from(e).map(e=>se(e,t,i));if(V.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 V.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){V.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:V.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime(e){if(V.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!==j,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)||V.empty(t)||!V.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(!V.element(e)||V.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){V.promise(e)&&e.then(null,()=>{})}function Te(e){return V.array(e)?e.filter((t,i)=>e.indexOf(t)===i):e}function Ce(e,t){return V.array(e)&&e.length?e.reduce((e,i)=>Math.abs(i-t)({...e,[t/i]:[t,i]}),{});function xe(e){if(!V.array(e)&&(!V.string(e)||!e.includes(":")))return!1;const t=V.array(e)?e:e.split(":");return t.map(Number).every(V.number)}function Me(e){if(!V.array(e)||!e.every(V.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 Ee(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&&!V.empty(this.embed)&&V.array(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return Me(i)}function Le(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=Ee.call(this,e);if(!V.array(i))return{};const[s,n]=Me(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!!V.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,V.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&&V.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,Be=/iPad|iPhone|iPod/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1;var He={isIE:De,isEdge:Fe,isWebKit:_e,isIPhone:Re,isIPadOS:Oe,isIos:Be};function Ve(e){return`${e}-${Math.floor(1e4*Math.random())}`}function je(e,...t){return V.empty(e)?e:e.toString().replace(/\{(\d+)\}/g,(e,i)=>t[i].toString())}function qe(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(V.empty(e)||V.empty(t))return"";let i=X(t.i18n,e);if(V.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(V.empty(t))return null;const i=JSON.parse(t);return V.string(e)&&e.length?i[e]:i}),(0,v.A)(this,"set",e=>{if(!Ze.supported||!this.enabled)return;if(!V.object(e))return;let t=this.get();V.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(!V.string(e))return;const i="cache",s=V.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(!V.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(!V.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||He.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)},V.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(V.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:V.empty(n.label)&&(n.label=s),V.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?(V.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,V.element(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,V.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,V.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(!V.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",V.keyboardEvent(t))}},i,!1),ot.bindMenuItemShortcuts.call(this,o,i),t.appendChild(o)},formatTime(e=0,t=!1){if(!V.number(e))return e;const i=st(this.duration)>0;return rt(e,i,t)},updateTimeDisplay(e=null,t=0,i=!1){V.element(e)&&V.number(t)&&(e.textContent=ot.formatTime(t,i))},updateVolume(){this.supported.ui&&(V.element(this.elements.inputs.volume)&&ot.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),V.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){V.element(e)&&(e.value=t,ot.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!V.event(e))return;let t=0;const i=(e,t)=>{const i=V.number(t)?t:0,s=V.element(e)?e:this.elements.display.buffer;if(V.element(s)){s.value=i;const e=s.getElementsByTagName("span")[0];V.element(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":t=qe(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=V.event(e)?e.target:e;if(V.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);(He.isWebKit||He.isIPadOS)&&t.style.setProperty("--value",t.value/t.max*100+"%")}},updateSeekTooltip(e){if(!this.config.tooltips.seek||!V.element(this.elements.inputs.seek)||!V.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(V.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}%`,V.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&s("mouseenter"===e.type)},timeUpdate(e){const t=!V.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);V.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);const e=V.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=V.empty(i)?this[e]:i,V.empty(n)&&(n=this.config[e].default),!V.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(V.element(a)||(a=s&&s.querySelector('[role="menu"]')),!V.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}"]`);V.element(o)&&(o.checked=!0)},getLabel(e,t){switch(e){case"speed":return 1===t?Ge.get("normal",this.config):`${t}×`;case"quality":if(V.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(!V.element(this.elements.settings.panels.quality))return;const t="quality",i=this.elements.settings.panels.quality.querySelector('[role="menu"]');V.array(e)&&(this.options.quality=Te(e).filter(e=>this.config.quality.options.includes(e)));const s=!V.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(!V.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(!V.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=!V.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=!V.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;V.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(!V.element(t)||!V.element(i))return;const{hidden:s}=t;let n=s;if(V.boolean(e))n=e;else if(V.keyboardEvent(e)&&"Escape"===e.key)n=!1;else if(V.event(e)){const s=V.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&&V.keyboardEvent(e)?ot.focusFirstMenuItem.call(this,null,!0):n||s||ce.call(this,i,V.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(!V.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,j,t))};ge.call(this,s,j,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;V.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,V.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(V.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(V.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&&!He.isIos&&!He.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&&!V.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;!V.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;V.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),V.element(this.config.controls)||V.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&&V.string(this.config.controls)&&(e=s(e)),V.string(this.config.selectors.controls.container)&&(n=document.querySelector(this.config.selectors.controls.container)),V.element(n)||(n=this.elements.container);const a=V.element(e)?"insertAdjacentElement":"insertAdjacentHTML";if(n[a]("afterbegin",e),V.element(this.elements.controls)||ot.findElements.call(this),!V.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=>{V.array(t)||V.nodeList(t)?Array.from(t).filter(Boolean).forEach(e):e(t)})}if(He.isEdge&&q(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 V.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(V.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&<.setCaptionsMenu.call(this));if(V.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)),He.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(V.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,!V.empty(e)),V.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=V.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(V.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(!V.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!V.track(t)&&ue.textTracks&&this.captions.toggled&&(t=dt.getCurrentTrack.call(this)),V.track(t)?V.empty(t.label)?V.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(!V.element(this.elements.captions))return void this.debug.warn("No captions element to render to");if(!V.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;V.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),He.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=V.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(He.isIos||He.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&&(He.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?V.empty(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:"hide"}))}),(0,v.A)(this,"exit",()=>{if(this.supported)if(He.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(!V.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=>{V.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(V.function(document.exitFullscreen))return"";let e="";const t=["webkit","moz","ms"];return t.some(t=>!(!V.function(document[`${t}ExitFullscreen`])&&!V.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||!He.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 He.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);V.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(V.string(this.config.title)&&!V.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(!V.element(e))return;const t=V.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))}),V.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=>!V.empty(e)&&V.string(e)&&e.startsWith("--plyr")).forEach(e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)}),V.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]=Ee.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&&V.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(!V.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=V.function(n);let r=!0;a&&(r=n.call(s,e)),!1!==r&&V.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=V.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=He.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(V.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())}),He.isIos){const t=oe.call(e,'input[type="range"]');Array.from(t).forEach(e=>this.bind(e,i,e=>q(e.target)))}this.bind(t.inputs.seek,i,t=>{const i=t.currentTarget;let s=i.getAttribute("seek-value");V.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)}),He.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&&!V.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(V.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 Mt=xt,Et=i(51583);function Lt(e){return new Promise((t,i)=>{Et(e,{success:t,error:i})})}function Pt(e){if(V.empty(e))return null;if(V.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),V.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="";V.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=je(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("; ")),V.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(je(e.config.urls.vimeo.api,d)).then(t=>{!V.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=!!V.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=V.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")}),V.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(V.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),V.object(window.YT)&&V.function(window.YT.Player))Ot.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{V.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=je(this.config.urls.youtube.api,e);tt(t).then(e=>{if(V.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(!V.empty(i)&&i.startsWith("youtube-"))return;let s=e.media.getAttribute("src");V.empty(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=Ft(s),a=Ve(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(V.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=V.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 Bt=Ot;const Ht={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?Bt.setup.call(this):this.isVimeo&&Dt.setup.call(this)):this.debug.warn("No media element found!")}};var Vt=Ht;function jt(e){e.manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()}class qt{constructor(e){(0,v.A)(this,"load",()=>{this.enabled&&(V.object(window.google)&&V.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||jt(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",()=>{V.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;V.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];V.array(i)&&i.forEach(e=>{V.function(e)&&e.apply(this,t)})}),(0,v.A)(this,"on",(e,t)=>(V.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=>{V.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&&(!V.empty(e.publisherId)||V.url(e.tagUrl))}get tagUrl(){const{config:e}=this;if(V.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=qt;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(V.number(i.startTime)){if(!V.empty(e.trim())&&V.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(V.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(V.function(t))t(e=>{this.thumbnails=e,i()});else{const e=V.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&&V.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=>{(V.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),V.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){V.string(t)?J(e,this.media,{src:t}):V.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,V.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),V.boolean(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute("crossorigin",""),this.config.autoplay&&this.media.setAttribute("autoplay",""),V.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,Vt.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(),V.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",()=>V.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&&V.function(this.media.pause)?this.media.pause():null),(0,v.A)(this,"togglePlay",e=>{const t=V.boolean(e)?e:!this.playing;return t?this.play():this.pause()}),(0,v.A)(this,"stop",()=>{this.isHTML5?(this.pause(),this.restart()):V.function(this.media.stop)&&this.media.stop()}),(0,v.A)(this,"restart",()=>{this.currentTime=0}),(0,v.A)(this,"rewind",e=>{this.currentTime-=V.number(e)?e:this.config.seekTime}),(0,v.A)(this,"forward",e=>{this.currentTime+=V.number(e)?e:this.config.seekTime}),(0,v.A)(this,"increaseVolume",e=>{const t=this.media.muted?0:this.volume;this.volume=t+(V.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&&V.array(this.config.controls)&&this.config.controls.includes("settings")&&!V.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),V.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),V.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&&V.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,V.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||V.nodeList(this.media)||V.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),V.nullOrUndefined(this.media)||!V.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"),V.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(V.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 Mt(this),this.storage=new et(this),this.media.plyr=this,V.element(this.elements.container)||(this.elements.container=Y("div"),W(this.media,this.elements.container)),St.migrateStyles.call(this),St.addStyleHook.call(this),Vt.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=V.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 V.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=V.number(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;const i=1,s=0;V.string(t)&&(t=Number(t)),V.number(t)||(t=this.storage.get("volume")),V.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;V.boolean(t)||(t=this.storage.get("muted")),V.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;V.number(e)&&(t=e),V.number(t)||(t=this.storage.get("speed")),V.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=[!V.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(V.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=V.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 V.url(e)?e:this.source}set download(e){V.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=Me(Ee.call(this));return V.array(e)?e.join(":"):e}set ratio(e){this.isVideo?V.string(e)&&xe(e)?(this.config.ratio=Me(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=V.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=V.boolean(e)?e:!this.pip;V.function(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?gt.active:gt.inactive),V.function(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return ue.pip?V.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 V.string(e)?i=Array.from(document.querySelectorAll(e)):V.nodeList(e)?i=Array.from(e):V.array(e)&&(i=e.filter(V.element)),V.empty(i)?null:i.map(e=>new Gt(e,t))}}Gt.defaults=U(mt);var Zt=Gt;i(17642),i(58004),i(33853),i(45876),i(32475),i(15024),i(31698);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 ${this.$t("transformMedia.playMode")}\n \n \n \n
\n
\n
${this.$t("transformMedia.stopAfterPlay")}
\n
${this.$t("transformMedia.sequentialPlay")}
\n
${this.$t("transformMedia.loopSingle")}
\n
\n `:"",s=document.createElement("div");s.className="plyr-custom-menu",s.innerHTML=`\n \n
\n
\n \n \n \n ${this.$t("transformMedia.download")}\n
\n
\n \n \n \n \n ${this.$t("transformMedia.playbackSpeed")}\n \n \n \n
\n
\n
0.5x
\n
0.75x
\n
${this.$t("transformMedia.normalSpeed")}
\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(71241);const ui=(0,di.A)(hi,[["render",b],["__scopeId","data-v-53b527ba"]]);var pi=ui,mi=i(808);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=["placeholder"],Ai={class:"file-count"},Si={key:0,class:"loading-container"},xi={key:1,class:"error-container"},Mi={class:"error-credit"},Ei={key:2,class:"gallery-container",ref:"galleryContainer"},Li={key:0,class:"folders-section"},Pi={class:"folders-grid"},Ii=["onClick"],$i={class:"folder-name"},Ni={class:"waterfall",ref:"waterfall"},Di=["onClick"],Fi=["src","alt","onLoad"],_i=["src","onLoadedmetadata"],Ri={key:2,class:"audio-placeholder"},Oi={class:"audio-name"},Bi={key:3,class:"file-placeholder"},Hi={class:"file-name"},Vi={class:"overlay"},ji={class:"overlay-actions"},qi=["onClick","title"],Ui=["onClick","title"],Xi={key:1,class:"floating-page-indicator"},zi={ref:"loadTrigger",class:"load-trigger"},Wi={key:0,class:"loading-more"},Ki={key:1,class:"no-more"},Yi={key:2,class:"credit-link",href:"https://github.com/axibayuit-a11y",target:"_blank",rel:"noopener"},Qi=["src"],Ji=["src"],Gi=["src"],Zi={class:"swipe-hint"},es={key:2,class:"other-file-preview"},ts={class:"file-name"},is=["title"],ss={class:"page-indicator"};function ns(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",{ref:"searchBoxRef",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:e.$t("publicBrowse.searchPlaceholder"),class:"search-input",ref:"searchInputRef"},null,40,Ci),[[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",Ai,(0,a.v_)(e.$t("publicBrowse.fileCount",{count:o.totalCount})),1)])]),o.loading&&0===o.files.length?((0,s.uX)(),(0,s.CE)("div",Si,[t[35]||(t[35]=(0,s.Lk)("div",{class:"loading-spinner"},null,-1)),(0,s.Lk)("p",null,(0,a.v_)(e.$t("publicBrowse.loading")),1)])):o.error?((0,s.uX)(),(0,s.CE)("div",xi,[(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,a.v_)(e.$t("publicBrowse.retry")),1)):(0,s.Q3)("",!0),(0,s.Lk)("div",Mi,[(0,s.Lk)("p",null,(0,a.v_)(e.$t("publicBrowse.creditText")),1),t[36]||(t[36]=(0,s.Fv)('',1))])])):((0,s.uX)(),(0,s.CE)("div",Ei,[l.folders.length>0?((0,s.uX)(),(0,s.CE)("div",Li,[(0,s.Lk)("div",Pi,[((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",$i,(0,a.v_)(l.getFolderName(e.name)),1)],8,Ii))),128))])])):(0,s.Q3)("",!0),(0,s.Lk)("div",Ni,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.columns,(i,r)=>((0,s.uX)(),(0,s.CE)("div",{key:r,class:"waterfall-column"},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(i,i=>((0,s.uX)(),(0,s.CE)("div",{key:i.name,class:"waterfall-item",onClick:e=>l.openPreview(i)},[(0,s.Lk)("div",{class:(0,a.C4)(["image-wrapper",{loaded:i.loaded}])},[l.isImage(i)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:l.getFileUrl(i.name),alt:i.name,loading:"lazy",onLoad:e=>l.onImageLoad(e,i),onError:t[6]||(t[6]=(...e)=>l.handleImageError&&l.handleImageError(...e))},null,40,Fi)):l.isVideo(i)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:l.getFileUrl(i.name),muted:"",loop:"",preload:"metadata",onLoadedmetadata:e=>l.onVideoLoad(e,i),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,_i)):l.isAudio(i)?((0,s.uX)(),(0,s.CE)("div",Ri,[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",Oi,(0,a.v_)(l.getFileName(i.name)),1)])):((0,s.uX)(),(0,s.CE)("div",Bi,[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",Hi,(0,a.v_)(l.getFileName(i.name)),1)])),(0,s.Lk)("div",Vi,[(0,s.Lk)("div",ji,[(0,s.Lk)("button",{class:"action-btn",onClick:(0,n.D$)(e=>l.copyLink(i.name),["stop"]),title:e.$t("publicBrowse.copyLink")},[...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,qi),(0,s.Lk)("button",{class:"action-btn",onClick:(0,n.D$)(e=>l.downloadFile(i.name),["stop"]),title:e.$t("publicBrowse.downloadBtn")},[...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,Ui)])])],2)],8,Di))),128))]))),128))],512),l.mediaFiles.length>o.pageSize?((0,s.uX)(),(0,s.CE)("div",Xi,[(0,s.Lk)("span",null,(0,a.v_)(l.displayCurrentPage)+" / "+(0,a.v_)(l.totalPages),1)])):(0,s.Q3)("",!0),(0,s.Lk)("div",zi,[o.loading&&o.files.length>0?((0,s.uX)(),(0,s.CE)("div",Wi,[t[42]||(t[42]=(0,s.Lk)("div",{class:"loading-spinner-small"},null,-1)),(0,s.Lk)("span",null,(0,a.v_)(e.$t("publicBrowse.loadingMore")),1)])):!o.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("div",Ki,(0,a.v_)(e.$t("publicBrowse.allLoaded")),1)):(0,s.Q3)("",!0),!o.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("a",Yi,(0,a.v_)(e.$t("publicBrowse.creditLink")),1)):(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,Qi)):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,Ji)):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,Gi)):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"])),(0,s.Lk)("div",Zi,(0,a.v_)(e.$t("publicBrowse.swipeHint")),1)],32)):l.currentPreviewFile&&!l.isImage(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("div",es,[t[44]||(t[44]=(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",ts,(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[45]||(t[45]=[(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[46]||(t[46]=[(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:e.$t("publicBrowse.rotate90")},[...t[47]||(t[47]=[(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)])],8,is)),(0,s.Lk)("div",ss,(0,a.v_)(o.previewIndex+1)+" / "+(0,a.v_)(l.mediaFiles.length),1)])):(0,s.Q3)("",!0)])}var as=i(94373),rs=i(60782),os={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,rs.L8)(["userConfig"]),siteName(){return this.userConfig?.siteTitle||"Sanyue ImgHub"},rootDirName(){return this.rootDir.split("/").filter(Boolean).pop()||this.$t("publicBrowse.rootDirectory")},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),document.addEventListener("pointerdown",this.handleSearchOutside)},beforeUnmount(){this.observer&&this.observer.disconnect(),window.removeEventListener("resize",this.updateColumnCount),window.removeEventListener("resize",this.checkMobile),window.removeEventListener("scroll",this.handleScroll),document.removeEventListener("pointerdown",this.handleSearchOutside)},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()})},handleSearchOutside(e){if(!this.searchExpanded)return;const t=this.$refs.searchBoxRef;t&&!t.contains(e.target)&&(this.searchExpanded=!1)},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 as.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(this.$t("publicBrowse.copied"))}).catch(()=>{const e=document.createElement("input");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.showToast(this.$t("publicBrowse.copied"))})},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 ls=(0,di.A)(os,[["render",ns],["__scopeId","data-v-4d67c66a"]]);var cs=ls},51583:function(e,t,i){var s,n,a;i(44114),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,nQS>Cv8fz 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 Qd@>1n>bz1{Kk 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 $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=c93807da&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=c93807da&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-c93807da\"]])\n\nexport default __exports__","// ==========================================================================\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 { 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