From 062a71213dccec03412553ef8820a827236bb803 Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Tue, 28 Apr 2026 16:38:12 +0800 Subject: [PATCH] feat: add webdav upload channel --- README.md | 19 --------------- README_zh.md | 19 --------------- deploy/worker/wrangler.toml | 7 ------ .../{577.953080b6.css => 365.953080b6.css} | 0 ...77.953080b6.css.gz => 365.953080b6.css.gz} | Bin .../css/{82.91351de4.css => 572.f54f1cfc.css} | 2 +- ...82.91351de4.css.gz => 572.f54f1cfc.css.gz} | Bin 13153 -> 13154 bytes .../{916.129684a5.css => 989.5d4e3710.css} | 2 +- ...16.129684a5.css.gz => 989.5d4e3710.css.gz} | Bin 9241 -> 9266 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 518 -> 520 bytes frontend-dist/js/226.bccf2eed.js.gz | Bin 3448 -> 0 bytes frontend-dist/js/226.bccf2eed.js.map.gz | Bin 9255 -> 0 bytes .../js/{226.bccf2eed.js => 226.ec43855c.js} | 2 +- frontend-dist/js/226.ec43855c.js.gz | Bin 0 -> 3448 bytes ...26.bccf2eed.js.map => 226.ec43855c.js.map} | 2 +- frontend-dist/js/226.ec43855c.js.map.gz | Bin 0 -> 9256 bytes .../js/{309.c1beedec.js => 309.b7dca603.js} | 2 +- frontend-dist/js/309.b7dca603.js.gz | Bin 0 -> 4310 bytes ...09.c1beedec.js.map => 309.b7dca603.js.map} | 2 +- frontend-dist/js/309.b7dca603.js.map.gz | Bin 0 -> 11806 bytes frontend-dist/js/309.c1beedec.js.gz | Bin 4309 -> 0 bytes frontend-dist/js/309.c1beedec.js.map.gz | Bin 11804 -> 0 bytes frontend-dist/js/365.ae007b9b.js | 2 ++ frontend-dist/js/365.ae007b9b.js.gz | Bin 0 -> 24810 bytes frontend-dist/js/365.ae007b9b.js.map | 1 + frontend-dist/js/365.ae007b9b.js.map.gz | Bin 0 -> 67783 bytes frontend-dist/js/51.16dca88f.js.map.gz | Bin 9268 -> 0 bytes .../js/{51.16dca88f.js => 51.6e7bf298.js} | 2 +- .../{51.16dca88f.js.gz => 51.6e7bf298.js.gz} | Bin 3363 -> 3364 bytes ...{51.16dca88f.js.map => 51.6e7bf298.js.map} | 2 +- frontend-dist/js/51.6e7bf298.js.map.gz | Bin 0 -> 9268 bytes frontend-dist/js/572.7b80da62.js | 2 ++ frontend-dist/js/572.7b80da62.js.gz | Bin 0 -> 57528 bytes frontend-dist/js/572.7b80da62.js.map | 1 + frontend-dist/js/572.7b80da62.js.map.gz | Bin 0 -> 142827 bytes frontend-dist/js/577.2c9dad30.js | 2 -- frontend-dist/js/577.2c9dad30.js.gz | Bin 24655 -> 0 bytes frontend-dist/js/577.2c9dad30.js.map | 1 - frontend-dist/js/577.2c9dad30.js.map.gz | Bin 67954 -> 0 bytes .../js/{600.dad53c5e.js => 600.08192622.js} | 2 +- ...{600.dad53c5e.js.gz => 600.08192622.js.gz} | Bin 3864 -> 3864 bytes ...00.dad53c5e.js.map => 600.08192622.js.map} | 2 +- frontend-dist/js/600.08192622.js.map.gz | Bin 0 -> 10858 bytes frontend-dist/js/600.dad53c5e.js.map.gz | Bin 10857 -> 0 bytes frontend-dist/js/718.266849e4.js.map.gz | Bin 163616 -> 0 bytes .../js/{718.266849e4.js => 718.27080555.js} | 2 +- ...{718.266849e4.js.gz => 718.27080555.js.gz} | Bin 47862 -> 47862 bytes ...18.266849e4.js.map => 718.27080555.js.map} | 2 +- frontend-dist/js/718.27080555.js.map.gz | Bin 0 -> 163616 bytes frontend-dist/js/82.4547b0b3.js | 2 -- frontend-dist/js/82.4547b0b3.js.gz | Bin 57110 -> 0 bytes frontend-dist/js/82.4547b0b3.js.map | 1 - frontend-dist/js/82.4547b0b3.js.map.gz | Bin 143230 -> 0 bytes .../js/{862.e7c17be2.js => 862.d9125cf7.js} | 2 +- ...{862.e7c17be2.js.gz => 862.d9125cf7.js.gz} | Bin 2588 -> 2588 bytes ...62.e7c17be2.js.map => 862.d9125cf7.js.map} | 2 +- frontend-dist/js/862.d9125cf7.js.map.gz | Bin 0 -> 6541 bytes frontend-dist/js/862.e7c17be2.js.map.gz | Bin 6540 -> 0 bytes frontend-dist/js/916.0a2d6e57.js | 23 ------------------ frontend-dist/js/916.0a2d6e57.js.gz | Bin 93290 -> 0 bytes frontend-dist/js/916.0a2d6e57.js.map | 1 - frontend-dist/js/916.0a2d6e57.js.map.gz | Bin 334845 -> 0 bytes .../js/{917.cb224342.js => 917.b77a6783.js} | 2 +- frontend-dist/js/917.b77a6783.js.gz | Bin 0 -> 3588 bytes ...17.cb224342.js.map => 917.b77a6783.js.map} | 2 +- frontend-dist/js/917.b77a6783.js.map.gz | Bin 0 -> 9553 bytes frontend-dist/js/917.cb224342.js.gz | Bin 3588 -> 0 bytes frontend-dist/js/917.cb224342.js.map.gz | Bin 9553 -> 0 bytes frontend-dist/js/989.57d7e150.js | 23 ++++++++++++++++++ frontend-dist/js/989.57d7e150.js.gz | Bin 0 -> 94514 bytes frontend-dist/js/989.57d7e150.js.map | 1 + frontend-dist/js/989.57d7e150.js.map.gz | Bin 0 -> 337714 bytes frontend-dist/js/app.30c4ad3d.js | 2 -- frontend-dist/js/app.30c4ad3d.js.gz | Bin 22387 -> 0 bytes frontend-dist/js/app.30c4ad3d.js.map.gz | Bin 16635 -> 0 bytes frontend-dist/js/app.5863a19f.js | 2 ++ frontend-dist/js/app.5863a19f.js.gz | Bin 0 -> 22735 bytes ...pp.30c4ad3d.js.map => app.5863a19f.js.map} | 2 +- frontend-dist/js/app.5863a19f.js.map.gz | Bin 0 -> 16628 bytes ....faaf8b59.js => chunk-vendors.82c104b1.js} | 2 +- ...b59.js.gz => chunk-vendors.82c104b1.js.gz} | Bin 793502 -> 793502 bytes ...9.js.map => chunk-vendors.82c104b1.js.map} | 2 +- .../js/chunk-vendors.82c104b1.js.map.gz | Bin 0 -> 2090469 bytes .../js/chunk-vendors.faaf8b59.js.map.gz | Bin 2090470 -> 0 bytes 85 files changed, 52 insertions(+), 97 deletions(-) rename frontend-dist/css/{577.953080b6.css => 365.953080b6.css} (100%) rename frontend-dist/css/{577.953080b6.css.gz => 365.953080b6.css.gz} (100%) rename frontend-dist/css/{82.91351de4.css => 572.f54f1cfc.css} (88%) rename frontend-dist/css/{82.91351de4.css.gz => 572.f54f1cfc.css.gz} (75%) rename frontend-dist/css/{916.129684a5.css => 989.5d4e3710.css} (68%) rename frontend-dist/css/{916.129684a5.css.gz => 989.5d4e3710.css.gz} (69%) delete mode 100644 frontend-dist/js/226.bccf2eed.js.gz delete mode 100644 frontend-dist/js/226.bccf2eed.js.map.gz rename frontend-dist/js/{226.bccf2eed.js => 226.ec43855c.js} (99%) create mode 100644 frontend-dist/js/226.ec43855c.js.gz rename frontend-dist/js/{226.bccf2eed.js.map => 226.ec43855c.js.map} (99%) create mode 100644 frontend-dist/js/226.ec43855c.js.map.gz rename frontend-dist/js/{309.c1beedec.js => 309.b7dca603.js} (99%) create mode 100644 frontend-dist/js/309.b7dca603.js.gz rename frontend-dist/js/{309.c1beedec.js.map => 309.b7dca603.js.map} (99%) create mode 100644 frontend-dist/js/309.b7dca603.js.map.gz delete mode 100644 frontend-dist/js/309.c1beedec.js.gz delete mode 100644 frontend-dist/js/309.c1beedec.js.map.gz create mode 100644 frontend-dist/js/365.ae007b9b.js create mode 100644 frontend-dist/js/365.ae007b9b.js.gz create mode 100644 frontend-dist/js/365.ae007b9b.js.map create mode 100644 frontend-dist/js/365.ae007b9b.js.map.gz delete mode 100644 frontend-dist/js/51.16dca88f.js.map.gz rename frontend-dist/js/{51.16dca88f.js => 51.6e7bf298.js} (99%) rename frontend-dist/js/{51.16dca88f.js.gz => 51.6e7bf298.js.gz} (98%) rename frontend-dist/js/{51.16dca88f.js.map => 51.6e7bf298.js.map} (99%) create mode 100644 frontend-dist/js/51.6e7bf298.js.map.gz create mode 100644 frontend-dist/js/572.7b80da62.js create mode 100644 frontend-dist/js/572.7b80da62.js.gz create mode 100644 frontend-dist/js/572.7b80da62.js.map create mode 100644 frontend-dist/js/572.7b80da62.js.map.gz delete mode 100644 frontend-dist/js/577.2c9dad30.js delete mode 100644 frontend-dist/js/577.2c9dad30.js.gz delete mode 100644 frontend-dist/js/577.2c9dad30.js.map delete mode 100644 frontend-dist/js/577.2c9dad30.js.map.gz rename frontend-dist/js/{600.dad53c5e.js => 600.08192622.js} (99%) rename frontend-dist/js/{600.dad53c5e.js.gz => 600.08192622.js.gz} (99%) rename frontend-dist/js/{600.dad53c5e.js.map => 600.08192622.js.map} (99%) create mode 100644 frontend-dist/js/600.08192622.js.map.gz delete mode 100644 frontend-dist/js/600.dad53c5e.js.map.gz delete mode 100644 frontend-dist/js/718.266849e4.js.map.gz rename frontend-dist/js/{718.266849e4.js => 718.27080555.js} (99%) rename frontend-dist/js/{718.266849e4.js.gz => 718.27080555.js.gz} (68%) rename frontend-dist/js/{718.266849e4.js.map => 718.27080555.js.map} (99%) create mode 100644 frontend-dist/js/718.27080555.js.map.gz delete mode 100644 frontend-dist/js/82.4547b0b3.js delete mode 100644 frontend-dist/js/82.4547b0b3.js.gz delete mode 100644 frontend-dist/js/82.4547b0b3.js.map delete mode 100644 frontend-dist/js/82.4547b0b3.js.map.gz rename frontend-dist/js/{862.e7c17be2.js => 862.d9125cf7.js} (99%) rename frontend-dist/js/{862.e7c17be2.js.gz => 862.d9125cf7.js.gz} (96%) rename frontend-dist/js/{862.e7c17be2.js.map => 862.d9125cf7.js.map} (99%) create mode 100644 frontend-dist/js/862.d9125cf7.js.map.gz delete mode 100644 frontend-dist/js/862.e7c17be2.js.map.gz delete mode 100644 frontend-dist/js/916.0a2d6e57.js delete mode 100644 frontend-dist/js/916.0a2d6e57.js.gz delete mode 100644 frontend-dist/js/916.0a2d6e57.js.map delete mode 100644 frontend-dist/js/916.0a2d6e57.js.map.gz rename frontend-dist/js/{917.cb224342.js => 917.b77a6783.js} (99%) create mode 100644 frontend-dist/js/917.b77a6783.js.gz rename frontend-dist/js/{917.cb224342.js.map => 917.b77a6783.js.map} (99%) create mode 100644 frontend-dist/js/917.b77a6783.js.map.gz delete mode 100644 frontend-dist/js/917.cb224342.js.gz delete mode 100644 frontend-dist/js/917.cb224342.js.map.gz create mode 100644 frontend-dist/js/989.57d7e150.js create mode 100644 frontend-dist/js/989.57d7e150.js.gz create mode 100644 frontend-dist/js/989.57d7e150.js.map create mode 100644 frontend-dist/js/989.57d7e150.js.map.gz delete mode 100644 frontend-dist/js/app.30c4ad3d.js delete mode 100644 frontend-dist/js/app.30c4ad3d.js.gz delete mode 100644 frontend-dist/js/app.30c4ad3d.js.map.gz create mode 100644 frontend-dist/js/app.5863a19f.js create mode 100644 frontend-dist/js/app.5863a19f.js.gz rename frontend-dist/js/{app.30c4ad3d.js.map => app.5863a19f.js.map} (72%) create mode 100644 frontend-dist/js/app.5863a19f.js.map.gz rename frontend-dist/js/{chunk-vendors.faaf8b59.js => chunk-vendors.82c104b1.js} (99%) rename frontend-dist/js/{chunk-vendors.faaf8b59.js.gz => chunk-vendors.82c104b1.js.gz} (97%) rename frontend-dist/js/{chunk-vendors.faaf8b59.js.map => chunk-vendors.82c104b1.js.map} (99%) create mode 100644 frontend-dist/js/chunk-vendors.82c104b1.js.map.gz delete mode 100644 frontend-dist/js/chunk-vendors.faaf8b59.js.map.gz diff --git a/README.md b/README.md index 34e126fd..747d8583 100644 --- a/README.md +++ b/README.md @@ -188,25 +188,6 @@ Provides detailed deployment documentation, feature docs, development plans, upd # 4. Tips -- **WebDAV storage channel**: Besides the built-in `/dav` WebDAV server, this project can also use a third-party WebDAV server as an upload storage channel. Configure a fixed channel with `WEBDAV_BASE_URL`; optional variables are `WEBDAV_USERNAME`, `WEBDAV_PASSWORD`, `WEBDAV_PUBLIC_URL`, `WEBDAV_HEADERS` (JSON object string), and `WEBDAV_CREATE_DIRECTORY=false`. Runtime channel config uses: - ```json - { - "webdav": { - "loadBalance": { "enabled": false }, - "channels": [{ - "name": "dav-main", - "type": "webdav", - "baseUrl": "https://dav.example.com/remote.php/dav/files/user/imgbed/", - "username": "user", - "password": "pass", - "publicUrl": "https://cdn.example.com/imgbed/", - "enabled": true - }] - } - } - ``` - The implementation uses Fetch/Web APIs only, so it is compatible with Cloudflare Pages Functions and Workers deployments. Basic authentication and no-auth WebDAV endpoints are supported; Digest-only providers are not supported. WebDAV chunked uploads are intentionally disabled, so large uploads must stay within your Cloudflare request body limits. - - Frontend is open source, see [MarSeventh/Sanyue-ImgHub](https://github.com/MarSeventh/Sanyue-ImgHub). - Desktop software is open source, see [MarSeventh/satellite](https://github.com/MarSeventh/satellite). diff --git a/README_zh.md b/README_zh.md index bff56a5c..ea2b4d4f 100644 --- a/README_zh.md +++ b/README_zh.md @@ -200,25 +200,6 @@ # 4. Tips -- **WebDAV 存储渠道**:除了内置 `/dav` WebDAV 服务外,本项目也可以把第三方 WebDAV 服务作为上传存储渠道使用。固定环境变量渠道可配置 `WEBDAV_BASE_URL`;可选变量包括 `WEBDAV_USERNAME`、`WEBDAV_PASSWORD`、`WEBDAV_PUBLIC_URL`、`WEBDAV_HEADERS`(JSON 对象字符串)和 `WEBDAV_CREATE_DIRECTORY=false`。运行时渠道配置结构如下: - ```json - { - "webdav": { - "loadBalance": { "enabled": false }, - "channels": [{ - "name": "dav-main", - "type": "webdav", - "baseUrl": "https://dav.example.com/remote.php/dav/files/user/imgbed/", - "username": "user", - "password": "pass", - "publicUrl": "https://cdn.example.com/imgbed/", - "enabled": true - }] - } - } - ``` - 实现仅使用 Fetch/Web API,因此可用于 Cloudflare Pages Functions 和 Workers 部署。支持 Basic 认证或无认证 WebDAV 端点;暂不支持仅 Digest 认证的服务。WebDAV 分片上传已明确禁用,大文件需在 Cloudflare 请求体限制范围内直接上传。 - - **前端开源**:参见[MarSeventh/Sanyue-ImgHub](https://github.com/MarSeventh/Sanyue-ImgHub)项目。 - **桌面端开源**:参见[MarSeventh/satellite](https://github.com/MarSeventh/satellite)项目。 diff --git a/deploy/worker/wrangler.toml b/deploy/worker/wrangler.toml index d229bd12..61020138 100644 --- a/deploy/worker/wrangler.toml +++ b/deploy/worker/wrangler.toml @@ -23,13 +23,6 @@ not_found_handling = "single-page-application" [vars] # TG_BOT_TOKEN = "" # TG_CHAT_ID = "" -# Optional third-party WebDAV storage channel: -# WEBDAV_BASE_URL = "https://dav.example.com/remote.php/dav/files/user/imgbed/" -# WEBDAV_USERNAME = "" -# WEBDAV_PASSWORD = "" -# WEBDAV_PUBLIC_URL = "" -# WEBDAV_HEADERS = "{\"X-Example\":\"value\"}" -# WEBDAV_CREATE_DIRECTORY = "true" # [[d1_databases]] # binding = "img_d1" diff --git a/frontend-dist/css/577.953080b6.css b/frontend-dist/css/365.953080b6.css similarity index 100% rename from frontend-dist/css/577.953080b6.css rename to frontend-dist/css/365.953080b6.css diff --git a/frontend-dist/css/577.953080b6.css.gz b/frontend-dist/css/365.953080b6.css.gz similarity index 100% rename from frontend-dist/css/577.953080b6.css.gz rename to frontend-dist/css/365.953080b6.css.gz diff --git a/frontend-dist/css/82.91351de4.css b/frontend-dist/css/572.f54f1cfc.css similarity index 88% rename from frontend-dist/css/82.91351de4.css rename to frontend-dist/css/572.f54f1cfc.css index b01a6feb..9a477654 100644 --- a/frontend-dist/css/82.91351de4.css +++ b/frontend-dist/css/572.f54f1cfc.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-768efd1f]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000;backdrop-filter:blur(4px)}.mobile-drawer[data-v-768efd1f]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-768efd1f]{background:rgba(40,40,45,.98);box-shadow:0 8px 32px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3)}.mobile-drawer-header[data-v-768efd1f]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,rgba(56,189,248,.12),rgba(14,165,233,.08));border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-768efd1f]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-768efd1f]:before{content:"";display:inline-block;width:4px;height:16px;background:linear-gradient(180deg,#38bdf8,rgba(14,165,233,.5));border-radius:2px}.mobile-drawer-close[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-768efd1f]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-768efd1f]{background:linear-gradient(135deg,rgba(56,189,248,.2),rgba(14,165,233,.12));color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-768efd1f]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-768efd1f]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-768efd1f]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-768efd1f]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-768efd1f]{animation:slideInLeft-768efd1f .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-768efd1f]{animation:slideOutLeft-768efd1f .2s ease-in}.drawer-slide-enter-from[data-v-768efd1f],.drawer-slide-leave-to[data-v-768efd1f]{opacity:0}@keyframes slideInLeft-768efd1f{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-768efd1f{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-62bb601c]{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-62bb601c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:0 -4px 30px rgba(0,0,0,.15);border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-62bb601c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:0 -4px 30px rgba(0,0,0,.4)}.bottom-sheet-header[data-v-62bb601c]{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-62bb601c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-62bb601c]{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-62bb601c]{color:#f0f0f0}.bottom-sheet-content[data-v-62bb601c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-62bb601c]{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-62bb601c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-62bb601c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-62bb601c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-62bb601c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-62bb601c],.bottom-sheet-danger[data-v-62bb601c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-62bb601c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-62bb601c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-62bb601c]{animation:slideUp-62bb601c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-62bb601c]{animation:slideDown-62bb601c .2s ease-in}.bottom-sheet-enter-from[data-v-62bb601c],.bottom-sheet-leave-to[data-v-62bb601c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-62bb601c],.bottom-sheet-leave-to .bottom-sheet[data-v-62bb601c]{transform:translateY(100%)}@keyframes slideUp-62bb601c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-62bb601c{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-ec3adcfc]{padding:0}.tab-content[data-v-ec3adcfc]{padding:20px}.tab-description[data-v-ec3adcfc]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-ec3adcfc]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-ec3adcfc]{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-ec3adcfc]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-ec3adcfc]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-ec3adcfc],.tags-to-add-section[data-v-ec3adcfc]{margin-bottom:20px}.common-tags-section h4[data-v-ec3adcfc],.tags-to-add-section h4[data-v-ec3adcfc]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-ec3adcfc]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-ec3adcfc]{cursor:default}.empty-message[data-v-ec3adcfc]{color:#909399;font-size:13px;padding:10px 0}.action-buttons[data-v-ec3adcfc]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-689f94e2]{padding:10px 0}.input-section[data-v-689f94e2]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-689f94e2]{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-689f94e2]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-689f94e2]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-689f94e2],.popular-tags-section[data-v-689f94e2]{margin-bottom:20px}.current-tags-section h4[data-v-689f94e2],.popular-tags-section h4[data-v-689f94e2]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-689f94e2]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-689f94e2]{cursor:default}.tag-item.clickable[data-v-689f94e2]{cursor:pointer;transition:transform .2s}.tag-item.clickable[data-v-689f94e2]:hover{transform:translateY(-2px)}.empty-message[data-v-689f94e2]{color:#909399;font-size:13px;padding:10px 0}.dialog-footer[data-v-689f94e2]{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-1f787098]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-1f787098]{margin-left:0!important}.video-preview[data-v-1f787098]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-1f787098],.video-preview[data-v-1f787098]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-1f787098]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-1f787098] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-1f787098]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-1f787098]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border-radius:8px;min-height:60px}.preview-content[data-v-1f787098]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-1f787098] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-1f787098] .el-descriptions__content .el-tag,[data-v-1f787098] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-1f787098] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-1f787098] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-1f787098]{justify-content:center}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.list-item[data-v-3ef86404]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-3ef86404]:last-child{border-bottom:none}.list-item[data-v-3ef86404]:hover{background:var(--el-fill-color-light)}.list-col[data-v-3ef86404]{display:flex;align-items:center}.list-col-checkbox[data-v-3ef86404]{justify-content:center;min-width:40px}.list-col-preview[data-v-3ef86404]{justify-content:center;cursor:pointer}.list-col-name[data-v-3ef86404]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-3ef86404]:hover{color:#38bdf8}.filename-ellipsis[data-v-3ef86404]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-3ef86404]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-3ef86404]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-3ef86404],.list-col-channel[data-v-3ef86404],.list-col-date[data-v-3ef86404],.list-col-size[data-v-3ef86404]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-3ef86404]{font-size:13px}.address-box[data-v-3ef86404],.channel-name-box[data-v-3ef86404]{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-3ef86404]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-3ef86404]{width:70px}.address-box[data-v-3ef86404]::-webkit-scrollbar,.channel-name-box[data-v-3ef86404]::-webkit-scrollbar{display:none}.list-col-tags[data-v-3ef86404]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.custom-checkbox[data-v-3ef86404]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-3ef86404]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-3ef86404]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-3ef86404]{font-size:10px;color:#fff}.color-tag[data-v-3ef86404]{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-3ef86404]{min-width:30px;text-align:center}.list-empty[data-v-3ef86404]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-3ef86404]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-3ef86404]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-3ef86404]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-3ef86404]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-3ef86404]{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-3ef86404]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-3ef86404]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-3ef86404]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-3ef86404],.list-col-channel-name[data-v-3ef86404],.list-col-channel[data-v-3ef86404],.list-col-date[data-v-3ef86404],.list-col-size[data-v-3ef86404],.list-col-tags[data-v-3ef86404]{display:none}.list-col-actions[data-v-3ef86404]{gap:4px}.list-action-btn[data-v-3ef86404]{width:28px;height:28px}.list-col-checkbox[data-v-3ef86404]{width:24px;min-width:24px}}.img-card[data-v-efb50eda]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-efb50eda] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-efb50eda] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-efb50eda]:hover{transform:scale(1.05)}.image-preview[data-v-efb50eda],.video-preview[data-v-efb50eda]{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-efb50eda]{cursor:pointer}.img-card:hover .file-icon[data-v-efb50eda],.img-card:hover .image-preview[data-v-efb50eda],.img-card:hover .video-preview[data-v-efb50eda]{transform:scale(1.08)}.image-preview[data-v-efb50eda]:hover{opacity:.8}.file-short-info[data-v-efb50eda]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-efb50eda]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-efb50eda],.success-tag[data-v-efb50eda]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3);backdrop-filter:blur(4px)}.fail-tag[data-v-efb50eda]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-efb50eda]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3);backdrop-filter:blur(4px)}.file-preview[data-v-efb50eda]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-efb50eda]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-efb50eda]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-efb50eda]{cursor:pointer}.card-bottom-overlay[data-v-efb50eda]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-efb50eda]{display:flex;align-items:center;justify-content:center}.file-name[data-v-efb50eda]{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-efb50eda]{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-efb50eda]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-efb50eda],.action-bar-right[data-v-efb50eda]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-efb50eda]{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-efb50eda]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-efb50eda]:active{transform:scale(.95)}.action-btn-danger[data-v-efb50eda]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-efb50eda]{display:none!important}}@keyframes skeleton-shimmer-efb50eda{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-efb50eda]{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-efb50eda 1.5s ease-in-out infinite}.error-wrapper[data-v-efb50eda]{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-efb50eda]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-efb50eda]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-41b1a7c0]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-41b1a7c0] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-41b1a7c0] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-41b1a7c0]:hover{transform:scale(1.05)}.folder-card[data-v-41b1a7c0]{cursor:pointer}.folder-icon[data-v-41b1a7c0]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-41b1a7c0]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-41b1a7c0]{transform:scale(1.08)}.card-bottom-overlay[data-v-41b1a7c0]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-41b1a7c0]{display:flex;align-items:center;justify-content:center}.file-name[data-v-41b1a7c0]{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-41b1a7c0]{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-41b1a7c0]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-41b1a7c0],.action-bar-right[data-v-41b1a7c0]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-41b1a7c0]{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-41b1a7c0]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-41b1a7c0]:active{transform:scale(.95)}.action-btn-danger[data-v-41b1a7c0]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-41b1a7c0]{display:none!important}}@keyframes skeleton-shimmer-5060702c{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-5060702c{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-5060702c]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-info[data-v-5060702c]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:linear-gradient(transparent,rgba(0,0,0,.5))}.skeleton-text[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-list-item[data-v-5060702c]{animation:skeleton-pulse-5060702c 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-5060702c]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-text-long[data-v-5060702c]{width:80%}.skeleton-text-long[data-v-5060702c],.skeleton-text-short[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-text-short[data-v-5060702c]{width:60px}.skeleton-text-tiny[data-v-5060702c]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-5060702c],.skeleton-text-tiny[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-tag[data-v-5060702c]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-5060702c]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-5060702c]{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-5060702c]{display:flex;align-items:center}.list-col-checkbox[data-v-5060702c],.list-col-preview[data-v-5060702c]{justify-content:center}@media (max-width:768px){.list-item[data-v-5060702c]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-5060702c],.list-col-channel-name[data-v-5060702c],.list-col-channel[data-v-5060702c],.list-col-date[data-v-5060702c],.list-col-size[data-v-5060702c],.list-col-tags[data-v-5060702c]{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-5c8d17c7]{flex-shrink:0}.filter-trigger[data-v-5c8d17c7]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-5c8d17c7]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-5c8d17c7]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-5c8d17c7] .el-badge__content{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-5c8d17c7]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-5c8d17c7]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-5c8d17c7]:last-of-type{border-bottom:none}.filter-title[data-v-5c8d17c7]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-5c8d17c7],.filter-options[data-v-5c8d17c7] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-5c8d17c7] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-5c8d17c7] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-5c8d17c7] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-5c8d17c7] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-5c8d17c7]{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-5c8d17c7]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-5c8d17c7] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-5c8d17c7]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-5c8d17c7]{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-5c8d17c7]:hover:not(:disabled){background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-5c8d17c7]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-5c8d17c7]{min-width:160px;max-height:320px}.filter-section[data-v-5c8d17c7]{padding:6px 10px}.filter-title[data-v-5c8d17c7]{font-size:11px;margin-bottom:4px}.filter-options[data-v-5c8d17c7] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-5c8d17c7] .el-checkbox__label{font-size:12px}.header-icon[data-v-5c8d17c7]{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-4e00471a]{display:flex;align-items:center;justify-content:center;gap:8px}.title[data-v-4e00471a]{display:flex;align-items:center;gap:8px;font-size:1.1em;font-weight:700;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);padding:5px 12px;border-radius:10px;background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(139,92,246,.05));border:1px solid rgba(99,102,241,.15)}.title[data-v-4e00471a]:hover{background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(139,92,246,.1));border-color:rgba(99,102,241,.25);transform:translateY(-1px)}.title .fa-images[data-v-4e00471a]{font-size:1em;color:var(--el-color-primary);background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tabs-dropdown[data-v-4e00471a]{display:flex;align-items:center}.tabs-dropdown-link[data-v-4e00471a]{cursor:pointer;font-size:1.3em;transition:all .3s ease;color:var(--admin-container-color);padding:5px 8px;border-radius:8px;background:transparent}.tabs-dropdown-link.rotate-up[data-v-4e00471a],.tabs-dropdown-link[data-v-4e00471a]:hover{background:rgba(99,102,241,.1);color:var(--el-color-primary)}@media (max-width:768px){.tabs[data-v-4e00471a]{gap:6px}.title[data-v-4e00471a]{font-size:1em;padding:3px 8px;gap:5px}.tabs-dropdown-link[data-v-4e00471a]{font-size:1.1em;padding:3px 6px}.tabs-language-switcher[data-v-4e00471a]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-4e00471a]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.el-dropdown__popper.el-popper.tabs-dropdown-popper{border-radius:12px;border:none;background-color:var(--tabs-dropdown-popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--tabs-dropdown-popper-shadow)}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu{border:none;background:none}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item{border:none;background:none;font-size:16px;font-weight:700;transition:font-size .3s ease}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item:hover{font-size:18px}.container[data-v-0120e471]{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-0120e471] .el-container,[data-v-0120e471] .el-main{overflow:visible}[data-v-0120e471] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-0120e471]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-0120e471]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-0120e471]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-0120e471]{font-size:.95em}.header-content .actions[data-v-0120e471]{gap:10px}.search-card[data-v-0120e471] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-0120e471] .el-input__wrapper{padding:0 10px}.search-card[data-v-0120e471] .el-input__inner:focus{width:65vw}}.header-content[data-v-0120e471]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-0120e471]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-0120e471]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-0120e471]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-0120e471]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 10px;margin-bottom:4px}@media (max-width:768px){.breadcrumb-container[data-v-0120e471]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-bottom:2px}}.stats-badge[data-v-0120e471]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--el-fill-color-light);padding:4px 10px;border-radius:12px;border:1px solid var(--el-border-color-lighter);transition:all .2s ease;white-space:nowrap;flex-shrink:0}.stats-badge[data-v-0120e471]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-0120e471]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-0120e471]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-0120e471]{font-size:9px}}.header-content .actions[data-v-0120e471]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-0120e471]{margin-top:10px}}.header-content .actions i[data-v-0120e471]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-0120e471]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-0120e471]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-0120e471]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-0120e471]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-0120e471]{color:var(--admin-purple)}.batch-action-item-icon[data-v-0120e471]{width:20px;margin-right:5px}.search-area[data-v-0120e471]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-0120e471]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-0120e471]{display:flex;align-items:center}.search-card[data-v-0120e471] .el-input__wrapper{border-radius:20px;background:var(--admin-dashboard-search-card-bg-color);box-shadow:var(--admin-dashboard-search-card-box-shadow);transition:background-color .3s}.search-card[data-v-0120e471] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-0120e471] .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-0120e471] .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-0120e471] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-0120e471] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-0120e471] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-0120e471] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-0120e471] .el-input__inner:focus{width:55vw}}.search-icon[data-v-0120e471]{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-0120e471]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-0120e471]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-0120e471] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-0120e471]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px)}@media (max-width:768px){.main-container[data-v-0120e471]{margin-top:12vh}}.content[data-v-0120e471]{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}.empty-state[data-v-0120e471]{grid-column: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-0120e471]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-0120e471]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-0120e471]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-0120e471]{padding:80px 20px}@media (max-width:768px){.content[data-v-0120e471]{grid-template-columns:1fr;grid-template-rows:none}}.list-view[data-v-0120e471]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-0120e471]{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-0120e471]{display:flex;align-items:center}.list-col-checkbox[data-v-0120e471]{justify-content:center;min-width:40px}.custom-checkbox[data-v-0120e471]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-0120e471]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-0120e471],.custom-checkbox.indeterminate[data-v-0120e471]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-0120e471]{font-size:10px;color:#fff}@media (max-width:768px){.list-header[data-v-0120e471]{display:none}}.pagination-container[data-v-0120e471]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-0120e471]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-0120e471] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-0120e471] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-0120e471] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-0120e471] .el-pager li.is-active{background:linear-gradient(135deg,#0ea5e9,#38bdf8)!important;color:#fff!important;border-radius:10px;box-shadow:var(--admin-dashboard-btn-shadow),0 4px 12px rgba(56,189,248,.3),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-0120e471] .el-pager li.is-active:hover{transform:translateY(-2px)!important;box-shadow:var(--admin-dashboard-btn-hover-shadow),0 6px 16px rgba(56,189,248,.4),inset 0 1px 0 hsla(0,0%,100%,.2)!important}.pagination-container[data-v-0120e471] .btn-next,.pagination-container[data-v-0120e471] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-0120e471] .btn-next:hover,.pagination-container[data-v-0120e471] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-0120e471]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-0120e471]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-0120e471]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-0120e471]{width:50px}.page-jump .jump-input[data-v-0120e471] .el-input__wrapper{background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);border-radius:8px;padding:0 8px;height:28px}.page-jump .jump-input[data-v-0120e471] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-0120e471]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:0 2px 8px rgba(56,189,248,.3);transition:all .3s ease}.page-jump .jump-btn[data-v-0120e471]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-0120e471]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-0120e471]{order:0}.pagination-right[data-v-0120e471]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-0120e471]{width:45px}}.refresh-btn[data-v-0120e471]{cursor:pointer;background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:#38bdf8;border:none;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1)}.refresh-btn[data-v-0120e471]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-0120e471]{cursor:pointer;background:linear-gradient(135deg,#0ea5e9,#38bdf8);box-shadow:0 4px 15px rgba(56,189,248,.3);color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-0120e471]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-0120e471] .btn-prev{left:8px}[data-v-0120e471] .btn-next,[data-v-0120e471] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-0120e471] .btn-next{right:8px}@media (min-width:768px){[data-v-0120e471] .el-pagination.is-background .btn-next,[data-v-0120e471] .el-pagination.is-background .btn-prev{background-color:var(--admin-dashboard-btn-bg-color);backdrop-filter:blur(10px);box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s ease}[data-v-0120e471] .el-pagination.is-background .btn-next:hover,[data-v-0120e471] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-0120e471]{margin:0 3px}.breadcrumb[data-v-0120e471]{padding:8px 12px;background-color:var(--el-bg-color);border-radius:6px;font-size:.95em;box-shadow:var(--admin-dashboard-stats-shadow);transition:all .3s ease}.breadcrumb[data-v-0120e471]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-0120e471]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-0120e471]:hover{color:var(--admin-purple)}[data-v-0120e471] .el-breadcrumb__item{cursor:pointer}[data-v-0120e471] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-0120e471]{display:none;align-items:center;gap:6px;padding:6px 10px;background:var(--el-fill-color-light);border-radius:8px;border:1px solid var(--el-border-color-lighter);cursor:pointer;transition:all .2s ease}.mobile-directory-trigger[data-v-0120e471]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-0120e471]{font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-0120e471]{font-size:12px;font-weight:500;color:var(--el-text-color-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-0120e471]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-0120e471]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-0120e471]{display:flex}.desktop-only[data-v-0120e471]{display:none!important}.breadcrumb-container[data-v-0120e471]{padding:0;margin-left:0}}.drag-select-overlay[data-v-0120e471]{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-768efd1f]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000;backdrop-filter:blur(4px)}.mobile-drawer[data-v-768efd1f]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-768efd1f]{background:rgba(40,40,45,.98);box-shadow:0 8px 32px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3)}.mobile-drawer-header[data-v-768efd1f]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,rgba(56,189,248,.12),rgba(14,165,233,.08));border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-768efd1f]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-768efd1f]:before{content:"";display:inline-block;width:4px;height:16px;background:linear-gradient(180deg,#38bdf8,rgba(14,165,233,.5));border-radius:2px}.mobile-drawer-close[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-768efd1f]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-768efd1f]{background:linear-gradient(135deg,rgba(56,189,248,.2),rgba(14,165,233,.12));color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-768efd1f]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-768efd1f]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-768efd1f]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-768efd1f]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-768efd1f]{animation:slideInLeft-768efd1f .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-768efd1f]{animation:slideOutLeft-768efd1f .2s ease-in}.drawer-slide-enter-from[data-v-768efd1f],.drawer-slide-leave-to[data-v-768efd1f]{opacity:0}@keyframes slideInLeft-768efd1f{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-768efd1f{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-62bb601c]{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-62bb601c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:0 -4px 30px rgba(0,0,0,.15);border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-62bb601c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:0 -4px 30px rgba(0,0,0,.4)}.bottom-sheet-header[data-v-62bb601c]{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-62bb601c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-62bb601c]{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-62bb601c]{color:#f0f0f0}.bottom-sheet-content[data-v-62bb601c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-62bb601c]{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-62bb601c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-62bb601c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-62bb601c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-62bb601c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-62bb601c],.bottom-sheet-danger[data-v-62bb601c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-62bb601c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-62bb601c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-62bb601c]{animation:slideUp-62bb601c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-62bb601c]{animation:slideDown-62bb601c .2s ease-in}.bottom-sheet-enter-from[data-v-62bb601c],.bottom-sheet-leave-to[data-v-62bb601c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-62bb601c],.bottom-sheet-leave-to .bottom-sheet[data-v-62bb601c]{transform:translateY(100%)}@keyframes slideUp-62bb601c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-62bb601c{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-ec3adcfc]{padding:0}.tab-content[data-v-ec3adcfc]{padding:20px}.tab-description[data-v-ec3adcfc]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-ec3adcfc]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-ec3adcfc]{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-ec3adcfc]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-ec3adcfc]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-ec3adcfc],.tags-to-add-section[data-v-ec3adcfc]{margin-bottom:20px}.common-tags-section h4[data-v-ec3adcfc],.tags-to-add-section h4[data-v-ec3adcfc]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-ec3adcfc]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-ec3adcfc]{cursor:default}.empty-message[data-v-ec3adcfc]{color:#909399;font-size:13px;padding:10px 0}.action-buttons[data-v-ec3adcfc]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-689f94e2]{padding:10px 0}.input-section[data-v-689f94e2]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-689f94e2]{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-689f94e2]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-689f94e2]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-689f94e2],.popular-tags-section[data-v-689f94e2]{margin-bottom:20px}.current-tags-section h4[data-v-689f94e2],.popular-tags-section h4[data-v-689f94e2]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-689f94e2]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-689f94e2]{cursor:default}.tag-item.clickable[data-v-689f94e2]{cursor:pointer;transition:transform .2s}.tag-item.clickable[data-v-689f94e2]:hover{transform:translateY(-2px)}.empty-message[data-v-689f94e2]{color:#909399;font-size:13px;padding:10px 0}.dialog-footer[data-v-689f94e2]{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-1f787098]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-1f787098]{margin-left:0!important}.video-preview[data-v-1f787098]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-1f787098],.video-preview[data-v-1f787098]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-1f787098]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-1f787098] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-1f787098]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-1f787098]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border-radius:8px;min-height:60px}.preview-content[data-v-1f787098]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-1f787098] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-1f787098] .el-descriptions__content .el-tag,[data-v-1f787098] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-1f787098] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-1f787098] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-1f787098]{justify-content:center}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.list-item[data-v-3ef86404]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-3ef86404]:last-child{border-bottom:none}.list-item[data-v-3ef86404]:hover{background:var(--el-fill-color-light)}.list-col[data-v-3ef86404]{display:flex;align-items:center}.list-col-checkbox[data-v-3ef86404]{justify-content:center;min-width:40px}.list-col-preview[data-v-3ef86404]{justify-content:center;cursor:pointer}.list-col-name[data-v-3ef86404]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-3ef86404]:hover{color:#38bdf8}.filename-ellipsis[data-v-3ef86404]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-3ef86404]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-3ef86404]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-3ef86404],.list-col-channel[data-v-3ef86404],.list-col-date[data-v-3ef86404],.list-col-size[data-v-3ef86404]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-3ef86404]{font-size:13px}.address-box[data-v-3ef86404],.channel-name-box[data-v-3ef86404]{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-3ef86404]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-3ef86404]{width:70px}.address-box[data-v-3ef86404]::-webkit-scrollbar,.channel-name-box[data-v-3ef86404]::-webkit-scrollbar{display:none}.list-col-tags[data-v-3ef86404]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.custom-checkbox[data-v-3ef86404]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-3ef86404]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-3ef86404]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-3ef86404]{font-size:10px;color:#fff}.color-tag[data-v-3ef86404]{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-3ef86404]{min-width:30px;text-align:center}.list-empty[data-v-3ef86404]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-3ef86404]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-3ef86404]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-3ef86404]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-3ef86404]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-3ef86404]{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-3ef86404]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-3ef86404]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-3ef86404]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-3ef86404],.list-col-channel-name[data-v-3ef86404],.list-col-channel[data-v-3ef86404],.list-col-date[data-v-3ef86404],.list-col-size[data-v-3ef86404],.list-col-tags[data-v-3ef86404]{display:none}.list-col-actions[data-v-3ef86404]{gap:4px}.list-action-btn[data-v-3ef86404]{width:28px;height:28px}.list-col-checkbox[data-v-3ef86404]{width:24px;min-width:24px}}.img-card[data-v-efb50eda]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-efb50eda] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-efb50eda] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-efb50eda]:hover{transform:scale(1.05)}.image-preview[data-v-efb50eda],.video-preview[data-v-efb50eda]{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-efb50eda]{cursor:pointer}.img-card:hover .file-icon[data-v-efb50eda],.img-card:hover .image-preview[data-v-efb50eda],.img-card:hover .video-preview[data-v-efb50eda]{transform:scale(1.08)}.image-preview[data-v-efb50eda]:hover{opacity:.8}.file-short-info[data-v-efb50eda]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-efb50eda]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-efb50eda],.success-tag[data-v-efb50eda]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3);backdrop-filter:blur(4px)}.fail-tag[data-v-efb50eda]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-efb50eda]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3);backdrop-filter:blur(4px)}.file-preview[data-v-efb50eda]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-efb50eda]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-efb50eda]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-efb50eda]{cursor:pointer}.card-bottom-overlay[data-v-efb50eda]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-efb50eda]{display:flex;align-items:center;justify-content:center}.file-name[data-v-efb50eda]{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-efb50eda]{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-efb50eda]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-efb50eda],.action-bar-right[data-v-efb50eda]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-efb50eda]{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-efb50eda]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-efb50eda]:active{transform:scale(.95)}.action-btn-danger[data-v-efb50eda]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-efb50eda]{display:none!important}}@keyframes skeleton-shimmer-efb50eda{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-efb50eda]{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-efb50eda 1.5s ease-in-out infinite}.error-wrapper[data-v-efb50eda]{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-efb50eda]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-efb50eda]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-41b1a7c0]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-41b1a7c0] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-41b1a7c0] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-41b1a7c0]:hover{transform:scale(1.05)}.folder-card[data-v-41b1a7c0]{cursor:pointer}.folder-icon[data-v-41b1a7c0]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-41b1a7c0]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-41b1a7c0]{transform:scale(1.08)}.card-bottom-overlay[data-v-41b1a7c0]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-41b1a7c0]{display:flex;align-items:center;justify-content:center}.file-name[data-v-41b1a7c0]{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-41b1a7c0]{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-41b1a7c0]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-41b1a7c0],.action-bar-right[data-v-41b1a7c0]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-41b1a7c0]{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-41b1a7c0]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-41b1a7c0]:active{transform:scale(.95)}.action-btn-danger[data-v-41b1a7c0]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-41b1a7c0]{display:none!important}}@keyframes skeleton-shimmer-5060702c{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-5060702c{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-5060702c]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-info[data-v-5060702c]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:linear-gradient(transparent,rgba(0,0,0,.5))}.skeleton-text[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-list-item[data-v-5060702c]{animation:skeleton-pulse-5060702c 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-5060702c]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-text-long[data-v-5060702c]{width:80%}.skeleton-text-long[data-v-5060702c],.skeleton-text-short[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-text-short[data-v-5060702c]{width:60px}.skeleton-text-tiny[data-v-5060702c]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-5060702c],.skeleton-text-tiny[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-tag[data-v-5060702c]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-5060702c]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-5060702c]{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-5060702c]{display:flex;align-items:center}.list-col-checkbox[data-v-5060702c],.list-col-preview[data-v-5060702c]{justify-content:center}@media (max-width:768px){.list-item[data-v-5060702c]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-5060702c],.list-col-channel-name[data-v-5060702c],.list-col-channel[data-v-5060702c],.list-col-date[data-v-5060702c],.list-col-size[data-v-5060702c],.list-col-tags[data-v-5060702c]{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-c3aeeea0]{flex-shrink:0}.filter-trigger[data-v-c3aeeea0]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-c3aeeea0]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-c3aeeea0]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-c3aeeea0] .el-badge__content{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-c3aeeea0]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-c3aeeea0]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-c3aeeea0]:last-of-type{border-bottom:none}.filter-title[data-v-c3aeeea0]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-c3aeeea0],.filter-options[data-v-c3aeeea0] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-c3aeeea0] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-c3aeeea0] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-c3aeeea0] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-c3aeeea0] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-c3aeeea0]{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-c3aeeea0]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-c3aeeea0] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-c3aeeea0]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-c3aeeea0]{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-c3aeeea0]:hover:not(:disabled){background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-c3aeeea0]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-c3aeeea0]{min-width:160px;max-height:320px}.filter-section[data-v-c3aeeea0]{padding:6px 10px}.filter-title[data-v-c3aeeea0]{font-size:11px;margin-bottom:4px}.filter-options[data-v-c3aeeea0] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-c3aeeea0] .el-checkbox__label{font-size:12px}.header-icon[data-v-c3aeeea0]{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-4e00471a]{display:flex;align-items:center;justify-content:center;gap:8px}.title[data-v-4e00471a]{display:flex;align-items:center;gap:8px;font-size:1.1em;font-weight:700;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);padding:5px 12px;border-radius:10px;background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(139,92,246,.05));border:1px solid rgba(99,102,241,.15)}.title[data-v-4e00471a]:hover{background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(139,92,246,.1));border-color:rgba(99,102,241,.25);transform:translateY(-1px)}.title .fa-images[data-v-4e00471a]{font-size:1em;color:var(--el-color-primary);background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tabs-dropdown[data-v-4e00471a]{display:flex;align-items:center}.tabs-dropdown-link[data-v-4e00471a]{cursor:pointer;font-size:1.3em;transition:all .3s ease;color:var(--admin-container-color);padding:5px 8px;border-radius:8px;background:transparent}.tabs-dropdown-link.rotate-up[data-v-4e00471a],.tabs-dropdown-link[data-v-4e00471a]:hover{background:rgba(99,102,241,.1);color:var(--el-color-primary)}@media (max-width:768px){.tabs[data-v-4e00471a]{gap:6px}.title[data-v-4e00471a]{font-size:1em;padding:3px 8px;gap:5px}.tabs-dropdown-link[data-v-4e00471a]{font-size:1.1em;padding:3px 6px}.tabs-language-switcher[data-v-4e00471a]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-4e00471a]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.el-dropdown__popper.el-popper.tabs-dropdown-popper{border-radius:12px;border:none;background-color:var(--tabs-dropdown-popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--tabs-dropdown-popper-shadow)}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu{border:none;background:none}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item{border:none;background:none;font-size:16px;font-weight:700;transition:font-size .3s ease}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item:hover{font-size:18px}.container[data-v-f746277c]{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-f746277c] .el-container,[data-v-f746277c] .el-main{overflow:visible}[data-v-f746277c] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-f746277c]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-f746277c]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-f746277c]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-f746277c]{font-size:.95em}.header-content .actions[data-v-f746277c]{gap:10px}.search-card[data-v-f746277c] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-f746277c] .el-input__wrapper{padding:0 10px}.search-card[data-v-f746277c] .el-input__inner:focus{width:65vw}}.header-content[data-v-f746277c]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-f746277c]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-f746277c]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-f746277c]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-f746277c]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 10px;margin-bottom:4px}@media (max-width:768px){.breadcrumb-container[data-v-f746277c]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-bottom:2px}}.stats-badge[data-v-f746277c]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--el-fill-color-light);padding:4px 10px;border-radius:12px;border:1px solid var(--el-border-color-lighter);transition:all .2s ease;white-space:nowrap;flex-shrink:0}.stats-badge[data-v-f746277c]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-f746277c]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-f746277c]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-f746277c]{font-size:9px}}.header-content .actions[data-v-f746277c]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-f746277c]{margin-top:10px}}.header-content .actions i[data-v-f746277c]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-f746277c]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-f746277c]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-f746277c]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-f746277c]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-f746277c]{color:var(--admin-purple)}.batch-action-item-icon[data-v-f746277c]{width:20px;margin-right:5px}.search-area[data-v-f746277c]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-f746277c]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-f746277c]{display:flex;align-items:center}.search-card[data-v-f746277c] .el-input__wrapper{border-radius:20px;background:var(--admin-dashboard-search-card-bg-color);box-shadow:var(--admin-dashboard-search-card-box-shadow);transition:background-color .3s}.search-card[data-v-f746277c] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-f746277c] .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-f746277c] .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-f746277c] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-f746277c] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-f746277c] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-f746277c] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-f746277c] .el-input__inner:focus{width:55vw}}.search-icon[data-v-f746277c]{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-f746277c]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-f746277c]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-f746277c] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-f746277c]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px)}@media (max-width:768px){.main-container[data-v-f746277c]{margin-top:12vh}}.content[data-v-f746277c]{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}.empty-state[data-v-f746277c]{grid-column: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-f746277c]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-f746277c]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-f746277c]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-f746277c]{padding:80px 20px}@media (max-width:768px){.content[data-v-f746277c]{grid-template-columns:1fr;grid-template-rows:none}}.list-view[data-v-f746277c]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-f746277c]{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-f746277c]{display:flex;align-items:center}.list-col-checkbox[data-v-f746277c]{justify-content:center;min-width:40px}.custom-checkbox[data-v-f746277c]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-f746277c]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-f746277c],.custom-checkbox.indeterminate[data-v-f746277c]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-f746277c]{font-size:10px;color:#fff}@media (max-width:768px){.list-header[data-v-f746277c]{display:none}}.pagination-container[data-v-f746277c]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-f746277c]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-f746277c] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-f746277c] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-f746277c] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-f746277c] .el-pager li.is-active{background:linear-gradient(135deg,#0ea5e9,#38bdf8)!important;color:#fff!important;border-radius:10px;box-shadow:var(--admin-dashboard-btn-shadow),0 4px 12px rgba(56,189,248,.3),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-f746277c] .el-pager li.is-active:hover{transform:translateY(-2px)!important;box-shadow:var(--admin-dashboard-btn-hover-shadow),0 6px 16px rgba(56,189,248,.4),inset 0 1px 0 hsla(0,0%,100%,.2)!important}.pagination-container[data-v-f746277c] .btn-next,.pagination-container[data-v-f746277c] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-f746277c] .btn-next:hover,.pagination-container[data-v-f746277c] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-f746277c]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-f746277c]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-f746277c]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-f746277c]{width:50px}.page-jump .jump-input[data-v-f746277c] .el-input__wrapper{background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);border-radius:8px;padding:0 8px;height:28px}.page-jump .jump-input[data-v-f746277c] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-f746277c]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:0 2px 8px rgba(56,189,248,.3);transition:all .3s ease}.page-jump .jump-btn[data-v-f746277c]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-f746277c]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-f746277c]{order:0}.pagination-right[data-v-f746277c]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-f746277c]{width:45px}}.refresh-btn[data-v-f746277c]{cursor:pointer;background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:#38bdf8;border:none;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1)}.refresh-btn[data-v-f746277c]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-f746277c]{cursor:pointer;background:linear-gradient(135deg,#0ea5e9,#38bdf8);box-shadow:0 4px 15px rgba(56,189,248,.3);color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-f746277c]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-f746277c] .btn-prev{left:8px}[data-v-f746277c] .btn-next,[data-v-f746277c] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-f746277c] .btn-next{right:8px}@media (min-width:768px){[data-v-f746277c] .el-pagination.is-background .btn-next,[data-v-f746277c] .el-pagination.is-background .btn-prev{background-color:var(--admin-dashboard-btn-bg-color);backdrop-filter:blur(10px);box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s ease}[data-v-f746277c] .el-pagination.is-background .btn-next:hover,[data-v-f746277c] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-f746277c]{margin:0 3px}.breadcrumb[data-v-f746277c]{padding:8px 12px;background-color:var(--el-bg-color);border-radius:6px;font-size:.95em;box-shadow:var(--admin-dashboard-stats-shadow);transition:all .3s ease}.breadcrumb[data-v-f746277c]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-f746277c]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-f746277c]:hover{color:var(--admin-purple)}[data-v-f746277c] .el-breadcrumb__item{cursor:pointer}[data-v-f746277c] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-f746277c]{display:none;align-items:center;gap:6px;padding:6px 10px;background:var(--el-fill-color-light);border-radius:8px;border:1px solid var(--el-border-color-lighter);cursor:pointer;transition:all .2s ease}.mobile-directory-trigger[data-v-f746277c]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-f746277c]{font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-f746277c]{font-size:12px;font-weight:500;color:var(--el-text-color-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-f746277c]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-f746277c]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-f746277c]{display:flex}.desktop-only[data-v-f746277c]{display:none!important}.breadcrumb-container[data-v-f746277c]{padding:0;margin-left:0}}.drag-select-overlay[data-v-f746277c]{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/82.91351de4.css.gz b/frontend-dist/css/572.f54f1cfc.css.gz similarity index 75% rename from frontend-dist/css/82.91351de4.css.gz rename to frontend-dist/css/572.f54f1cfc.css.gz index 4b37d2bd0c30923bbfb5e4e01262fe9d1b4eebfc..3aac7be6fe6a8303d9a6fe3f1d5242683e7cb4bf 100644 GIT binary patch delta 3021 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 P#KHdqvVYIox={fDUjEjV delta 3020 zcmV;-3p4cMX5nVA#U_8vx69r5b^EFXLW=fXQyhQ^OEw>7_PdQ(4rKVS1ICtIax_P$ zz5priRtwjG+G<1!Y%SiKQOt*gWo;?U^QAeL$Yv*;#DY$nd3VnI?-!=}c`4q$gBe%(Z}}STmT0od|fKqyT>{kN_eisqLJNqGkBE z!yn67m*GNH&p`A<)%&#jaYoi)biT!LflTk7)UzHgvMe;Z6jmx&fJLa!s$k8BP5K%{ zmSZ3IYBmWNUwt@Mb1({%tGc%qR^8ee8Z-ofVMzgoK<32Qe|PZ_*TAJ3;)Q2jC-S#LsQMQ~fUUymU6lbB*82*^;Oh!f$?DUstbjZ7OBFe1g z1oZq~qA4T!F(GobdYEMk@+&i1c1LtVX;&W(CE_;C+b`tT|3iM11Rs;+DD;1|OMyeN z)yKY#x_l#Upc%@t+3Wc3NF-_9R<77^usp{GyuZfiWY`0rXB^=-^ITKKVcwK}fs6P_ zyuBskY?4f7;{>};(I0XA>l^-YkziL~R}dxaJH{SVb^@BpU?@W4xdowdtciw3H`O@| zmY5wA&ohE%G}`CXxyQ1Tz*2u=tCrW68X(y&ri;aXocyxf%(weREaVJ$;g!XiS{?aE zBCt#GAEpvo+d9%yVHgU7_p#QW7?VvP&g`V)(NwwCAKKJQYhg`SUL_On5#=xG)qRy!xu!R8Pl)ir@AYEKF;oTkr zhPRX<@b*a`a1)YWnwE~4Kv1OChm7n!-EMYPRBo+-GCFsbiL;@*}#Nz5Dv%$V}szrCb$Oe7X- zk(b+-xB0gyjmAox(Im^p@a)a-WpM0HB~etMH5#!n2Gl0Uj($BOIw}EHtz-F1Riua*tVzgo}@Y`^_D| z^N_jCTvMC&o~mUWymNnbp9!5zLwzQsb4%(Gfrgr4)GL@A&x!Kd*N%ez)}C^3oB^Dx2Foq3!X=AnDsAea$(VY7k^L-LL6%;38* z#MFsHv4RB$&se|>fn0n}G^64XCMqlds%<`ipAJFjPKN3lKv74r4aY`LPMg=ocZlXu%APhU&wwb_5q3wyZ)*9`TXnge+(Z&2>s#6&G2 zzVk|d0x|IUz{fuVFyO9UO10j#cE;A+#^{$a`z^&oWn7huO){I`kRG%P#!$k4dt!Z+ zZqiI(ufdZF?l4pv;CYYrP(sa#K`{>k6i9c%hYS{sE5vgTe!7eT$;Y%VKNP z3)X)^AV7LYo0l2E!zH{r9U}%#_OD=`PnrtR+bpXmW9;o3(ww|t-8I(WVR|{zptCZY ze|##r@|6dT+arqa6i1Rh3ta{BoT}6efc^H+WRCzv&2>!l*EH|bz5V_KQ)NZhK8x;H zRFQuUzQ=lds+Ic&x>HUHT|inKv{#Ik$+LfMBW&vq)@JQiFCnw@ct&Vmml?5tjkSy-(v>SbTq~ zhYmL7gTaIqR^?}DF%F1GJ!;&_IIv?;`GHBySDBJG&@5ad`-`v;PFBzMc5YVt{v7Wc z+pc8sngl5rH9P3c;?0~rDgTV8_!xUT8=j&Dp7gm0y`|dGU5EWA1zY!v@zh#zh>b{x zJF4RS%B3hXJ z-~kJgP#=S_C_ge^B;(~gmWtW_|6@CMBzQ&EdbXY@H(4_KMZjg z83*pO9bo-LZZ7|1dpl~v{Q&F3kZ_8D@;bQ^?D!4ZSS^V{e@E~usM zK~`&=Fp}UZ&ml7?v5.el-tooltip[data-v-92faa0f8],.action-buttons>.restore-section[data-v-92faa0f8],.restore-section[data-v-92faa0f8]{flex:1;width:100%}.action-btn[data-v-92faa0f8]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-92faa0f8]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-92faa0f8]{position:relative;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);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-92faa0f8]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-92faa0f8],.card-bg-media[data-v-92faa0f8] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-92faa0f8] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-92faa0f8]{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-92faa0f8]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-92faa0f8]{position:absolute;top:0;left:0;right:0;display:flex;gap:8px;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(180deg,rgba(0,0,0,.6),transparent);z-index:2}.file-card-header .fa-icon[data-v-92faa0f8]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-92faa0f8]{color:#f59e0b}.info-card-footer[data-v-92faa0f8]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.7),transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-92faa0f8]{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-92faa0f8]{font-size:12px;color:hsla(0,0%,100%,.8);text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-92faa0f8]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-92faa0f8]{height:450px}}.file-info-card[data-v-92faa0f8]:hover{transform:translateY(-2px);box-shadow:var(--glass-shadow-hover)}.file-info-card:hover .card-bg-media[data-v-92faa0f8]{transform:scale(1.05)}@media (max-width:768px){.status-panel[data-v-92faa0f8]{padding:15px}.charts-section[data-v-92faa0f8],.file-info-section[data-v-92faa0f8],.overview-cards[data-v-92faa0f8]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-92faa0f8]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-92faa0f8]{font-size:24px}.action-buttons[data-v-92faa0f8]{flex-direction:column;gap:12px}.action-btn[data-v-92faa0f8]{width:100%;min-width:unset}}.stats-fill[data-v-92faa0f8]{animation:fillAnimation-92faa0f8 1s ease-out}@keyframes fillAnimation-92faa0f8{0%{width:0}}.progress-container[data-v-92faa0f8]{width:100%;padding:20px;text-align:center}.progress-header[data-v-92faa0f8]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.progress-phase[data-v-92faa0f8]{font-size:16px;font-weight:600;color:var(--admin-container-color)}.progress-percentage[data-v-92faa0f8]{font-size:18px;font-weight:700;color:var(--admin-purple)}.progress-bar[data-v-92faa0f8]{margin-bottom:16px}.progress-bar[data-v-92faa0f8] .el-progress-bar__outer{background-color:rgba(139,92,246,.1);border-radius:6px}.progress-bar[data-v-92faa0f8] .el-progress-bar__inner{background:linear-gradient(90deg,var(--admin-purple),#e1bee7);border-radius:6px;transition:width .3s ease}.progress-details[data-v-92faa0f8]{display:flex;justify-content:center;gap:24px;margin-bottom:12px;flex-wrap:wrap}.progress-count[data-v-92faa0f8],.progress-time[data-v-92faa0f8]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.progress-count .fa-icon[data-v-92faa0f8],.progress-time .fa-icon[data-v-92faa0f8]{color:var(--admin-purple);font-size:12px}.progress-message[data-v-92faa0f8]{font-size:13px;color:#888;margin-bottom:16px;min-height:20px}.cancel-btn[data-v-92faa0f8]{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-92faa0f8]:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);transform:translateY(-2px);box-shadow:0 4px 12px rgba(239,68,68,.25)}.cancel-btn .fa-icon[data-v-92faa0f8]{margin-right:8px}.error-container[data-v-92faa0f8]{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-92faa0f8]{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-92faa0f8]{text-align:center}.error-message[data-v-92faa0f8]{font-size:15px;font-weight:600;color:#ef4444;margin-bottom:8px}.error-suggestion[data-v-92faa0f8]{font-size:13px;color:#666}.error-actions[data-v-92faa0f8]{display:flex;gap:12px}.error-actions .el-button[data-v-92faa0f8]{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-92faa0f8]{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff}.error-actions .el-button--primary[data-v-92faa0f8]:hover{background:linear-gradient(135deg,#5a6fd6,#6a4190);transform:translateY(-2px);box-shadow:0 6px 16px rgba(102,126,234,.4)}.error-actions .el-button--default[data-v-92faa0f8]{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-92faa0f8]:hover{background:hsla(0,0%,100%,.15);border-color:hsla(0,0%,100%,.3);transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.error-actions .fa-icon[data-v-92faa0f8]{margin-right:8px}html.dark .progress-count[data-v-92faa0f8],html.dark .progress-time[data-v-92faa0f8]{color:#aaa}html.dark .progress-message[data-v-92faa0f8]{color:#999}html.dark .error-container[data-v-92faa0f8]{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}html.dark .error-suggestion[data-v-92faa0f8]{color:#aaa}@media (max-width:768px){.error-container[data-v-92faa0f8],.progress-container[data-v-92faa0f8]{padding:16px}.progress-header[data-v-92faa0f8]{flex-direction:column;gap:8px;text-align:center}.progress-details[data-v-92faa0f8]{flex-direction:column;gap:8px}.error-actions[data-v-92faa0f8]{flex-direction:column;width:100%}.error-actions .el-button[data-v-92faa0f8]{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}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon,.el-input-number{display:inline-flex}.el-input-number{line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.custom-select[data-v-55080c16]{position:relative}.custom-select-trigger[data-v-55080c16]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:var(--el-bg-color);border:1px solid var(--el-border-color);border-radius:8px;cursor:pointer;transition:all .2s ease;box-sizing:border-box}.custom-select-trigger[data-v-55080c16]:hover{border-color:var(--el-color-primary-light-5)}.custom-select.is-open .custom-select-trigger[data-v-55080c16]{border-color:var(--el-color-primary)}.custom-select-value[data-v-55080c16]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-55080c16],.custom-select-value.is-placeholder[data-v-55080c16]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-55080c16]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-55080c16]{transform:rotate(180deg)}.custom-select-dropdown[data-v-55080c16]{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);border-radius:8px;box-shadow:var(--el-box-shadow-light);z-index:2000;overflow:hidden}.custom-select-option[data-v-55080c16]{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-55080c16]:hover{background:var(--el-fill-color-light)}.custom-select-option.is-selected[data-v-55080c16]{color:var(--el-color-primary);font-weight:500}.option-icon[data-v-55080c16]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-55080c16],.dropdown-fade-leave-active[data-v-55080c16]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-55080c16],.dropdown-fade-leave-to[data-v-55080c16]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-bd042e4c]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-bd042e4c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-bd042e4c]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-bd042e4c]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.add-btn[data-v-bd042e4c]{border-radius:8px}.header-actions[data-v-bd042e4c]{display:flex;gap:12px}.header-actions[data-v-bd042e4c] .el-button{border-radius:8px}.channel-group[data-v-bd042e4c]{margin-bottom:32px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);overflow:hidden;box-shadow:var(--glass-shadow);transition:all .3s ease}.channel-group[data-v-bd042e4c]:hover{box-shadow:var(--glass-shadow-hover)}.group-header[data-v-bd042e4c]{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-bd042e4c]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-bd042e4c]{font-size:18px;color:var(--el-color-primary)}.channel-count[data-v-bd042e4c]{font-size:12px}.load-balance-switch[data-v-bd042e4c]{display:flex;align-items:center;gap:8px}.switch-label[data-v-bd042e4c]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-bd042e4c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-bd042e4c]{background:var(--glass-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:10px;border:1px solid var(--glass-border);border-left:3px solid var(--el-border-color-light);transition:all .25s ease;overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:0 4px 16px rgba(0,0,0,.08)}.card-glow[data-v-bd042e4c]{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-bd042e4c]{background:radial-gradient(circle,rgba(84,169,235,.2) 0,transparent 70%)}.channel-card.cfr2 .card-glow[data-v-bd042e4c]{background:radial-gradient(circle,rgba(246,130,31,.2) 0,transparent 70%)}.channel-card.s3 .card-glow[data-v-bd042e4c]{background:radial-gradient(circle,rgba(86,154,49,.2) 0,transparent 70%)}.channel-card.discord .card-glow[data-v-bd042e4c]{background:radial-gradient(circle,rgba(88,101,242,.2) 0,transparent 70%)}.channel-card.huggingface .card-glow[data-v-bd042e4c]{background:radial-gradient(circle,rgba(255,210,30,.2) 0,transparent 70%)}.channel-card[data-v-bd042e4c]:hover{border-color:var(--glass-border-hover);box-shadow:0 8px 24px rgba(0,0,0,.12);background:var(--glass-bg-hover)}.channel-card.disabled[data-v-bd042e4c]{opacity:.6;background:var(--el-fill-color-lighter)}.channel-card.telegram[data-v-bd042e4c]{border-left-color:#54a9eb}.channel-card.cfr2[data-v-bd042e4c]{border-left-color:#f6821f}.channel-card.s3[data-v-bd042e4c]{border-left-color:#569a31}.channel-card.discord[data-v-bd042e4c]{border-left-color:#5865f2}.channel-card.huggingface[data-v-bd042e4c]{border-left-color:#ffd21e}.channel-card.fixed[data-v-bd042e4c]{border-left-width:3px;border-left-style:dashed}.card-header[data-v-bd042e4c]{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-bd042e4c]{display:flex;align-items:center;gap:8px}.channel-name[data-v-bd042e4c]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-bd042e4c]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-bd042e4c]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-bd042e4c]{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-bd042e4c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-bd042e4c]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-bd042e4c]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-bd042e4c] .el-progress{margin-bottom:4px}.quota-text[data-v-bd042e4c]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-bd042e4c]{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-bd042e4c]{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-bd042e4c]{font-size:32px}.channel-warning[data-v-bd042e4c]{margin:0 20px 16px;padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning)}.select-option-icon[data-v-bd042e4c]{width:18px;margin-right:8px;text-align:center}.form-tip[data-v-bd042e4c]{margin-left:12px;font-size:12px;color:var(--el-text-color-secondary)}.form-warning[data-v-bd042e4c]{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-bd042e4c]{width:100%}.quota-status[data-v-bd042e4c] .el-progress{margin-bottom:8px}.quota-info[data-v-bd042e4c]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border-radius:6px}.quota-info.quota-warning[data-v-bd042e4c]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-bd042e4c]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-bd042e4c]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-bd042e4c]{animation:fa-spin-bd042e4c 1s linear infinite}@keyframes fa-spin-bd042e4c{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-bd042e4c]{padding:12px}.page-header[data-v-bd042e4c]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-bd042e4c]{grid-template-columns:1fr;padding:12px}.group-header[data-v-bd042e4c]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-bd042e4c] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-bd042e4c] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.floating-save-btn[data-v-53091626]{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-53091626]:hover{transform:translateY(-2px);box-shadow:var(--floating-btn-shadow-hover)}.floating-save-btn[data-v-53091626]:active{transform:translateY(-1px);box-shadow:var(--floating-btn-shadow)}.floating-save-btn.is-loading[data-v-53091626]{cursor:not-allowed;opacity:.8}.floating-save-btn.is-loading[data-v-53091626]:hover{transform:none}.floating-save-btn svg[data-v-53091626]{font-size:14px}.fade-up-enter-active[data-v-53091626]{transition:all .3s ease-out}.fade-up-leave-active[data-v-53091626]{transition:all .2s ease-in}.fade-up-enter-from[data-v-53091626]{opacity:0;transform:translateY(20px)}.fade-up-leave-to[data-v-53091626]{opacity:0;transform:translateY(10px)}@media (max-width:768px){.floating-save-btn[data-v-53091626]{right:16px;bottom:16px;padding:10px 16px;font-size:12px}.floating-save-btn svg[data-v-53091626]{font-size:12px}}@media (max-width:480px){.floating-save-btn[data-v-53091626]{right:12px;bottom:12px;padding:12px;border-radius:50%}.save-text[data-v-53091626]{display:none}.floating-save-btn svg[data-v-53091626]{font-size:16px}}.security-settings[data-v-2962b112]{padding:20px;min-height:500px}.first-settings[data-v-2962b112]{margin-bottom:40px}.first-title[data-v-2962b112]{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-2962b112]{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-2962b112] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-2962b112] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-2962b112] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-2962b112] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-2962b112] .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-2962b112] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-2962b112] .el-input,.first-settings[data-v-2962b112] .el-select{width:100%}.first-settings[data-v-2962b112] .el-switch{--el-switch-on-color:var(--el-color-primary)}.form-item-hint[data-v-2962b112]{display:inline-block;margin-left:8px;font-size:14px;color:var(--el-text-color-regular);line-height:32px;vertical-align:middle}.token-title[data-v-2962b112]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-2962b112]{margin-left:5px}.token-table-container[data-v-2962b112]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-2962b112]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow);background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border)}.token-table[data-v-2962b112] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-2962b112] .el-table__body-wrapper{border-radius:0 0 12px 12px}.token-table[data-v-2962b112] .el-table{border-radius:12px}.token-table[data-v-2962b112] .el-table__header{background-color:#f8f9fa}.token-table[data-v-2962b112] .el-table th{background-color:#f8f9fa!important;border-bottom:1px solid #ebeef5;text-align:center}.token-table[data-v-2962b112] .el-table td{border-bottom:1px solid #ebeef5}.token-table[data-v-2962b112] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-2962b112]{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-2962b112]{gap:8px}.action-button[data-v-2962b112]{margin-left:0}.permission-tag[data-v-2962b112]{margin:2px!important}.token-display[data-v-2962b112]{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-2962b112]{padding:15px;padding-bottom:80px}.first-settings[data-v-2962b112] .el-form{padding:12px 15px}.first-settings[data-v-2962b112] .el-form-item__content{max-width:100%}.token-table-container[data-v-2962b112]{padding:0 10px}.table-cell-content[data-v-2962b112]{padding:6px 2px;min-height:36px}.token-display[data-v-2962b112]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-2962b112]{padding:0 5px}.table-cell-content[data-v-2962b112]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-2962b112]{padding:4px 8px;font-size:12px}.permission-tag[data-v-2962b112]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-2962b112]{padding:10px 0}.token-result .el-form-item[data-v-2962b112]{margin-bottom:20px}.dialog-footer[data-v-2962b112]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-2962b112],.fade-slide-leave-active[data-v-2962b112]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-2962b112],.fade-slide-leave-to[data-v-2962b112]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-2962b112],.fade-slide-leave-from[data-v-2962b112]{opacity:1;transform:translateY(0)}[data-v-2962b112] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-e4c3a742]{padding:20px;min-height:500px}.first-settings[data-v-e4c3a742]{margin-bottom:40px}.first-title[data-v-e4c3a742]{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-e4c3a742]{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-e4c3a742] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-e4c3a742] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-e4c3a742] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-e4c3a742] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-e4c3a742] .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-e4c3a742] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-e4c3a742] .el-form-item:has(.el-textarea) .el-form-item__content{max-width:600px}.first-settings[data-v-e4c3a742] .el-input,.first-settings[data-v-e4c3a742] .el-select{width:100%}.first-settings[data-v-e4c3a742] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.page-settings[data-v-e4c3a742]{padding:15px;padding-bottom:80px}.first-settings[data-v-e4c3a742] .el-form{padding:12px 15px}.first-settings[data-v-e4c3a742] .el-form-item__content{max-width:100%}}.others-settings[data-v-6ab496a0]{padding:20px;min-height:500px}.first-settings[data-v-6ab496a0]{margin-bottom:40px}.first-title[data-v-6ab496a0]{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-6ab496a0]{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-6ab496a0] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-6ab496a0] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-6ab496a0] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-6ab496a0] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-6ab496a0] .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-6ab496a0] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-6ab496a0] .el-input{width:100%}.first-settings[data-v-6ab496a0] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.others-settings[data-v-6ab496a0]{padding:15px;padding-bottom:80px}.first-settings[data-v-6ab496a0] .el-form{padding:12px 15px}.first-settings[data-v-6ab496a0] .el-form-item__content{max-width:100%}}.container[data-v-7607b77d]{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-7607b77d]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-7607b77d]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-7607b77d]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-7607b77d]{font-size:.95em}}.header-content[data-v-7607b77d]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-7607b77d]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-7607b77d]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-7607b77d]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-7607b77d]{display:flex;gap:10px}.main-container[data-v-7607b77d]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-7607b77d]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-7607b77d],.main-container[data-v-7607b77d]{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 +.sidebar-container[data-v-2718059d]{display:flex;flex-direction:column;position:fixed;top:50%;left:8px;transform:translateY(-50%);z-index:2001;max-width:200px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-radius:16px;box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:width .3s ease,box-shadow .3s ease;overflow:hidden}.sidebar-container.is-collapsed[data-v-2718059d]{width:56px}html.dark .sidebar-container[data-v-2718059d]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}.sidebar-container[data-v-2718059d]:hover{box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5)}html.dark .sidebar-container[data-v-2718059d]:hover{box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.menu-list[data-v-2718059d]{padding:8px}.menu-item[data-v-2718059d]{display:flex;align-items:center;justify-content:flex-start;padding:12px 12px 12px 0;height:42px;box-sizing:border-box;border-radius:10px;cursor:pointer;transition:background .2s ease,color .2s ease;color:var(--admin-container-color,#333);gap:0;overflow:hidden}.menu-item[data-v-2718059d]:hover{background:rgba(0,0,0,.06)}html.dark .menu-item[data-v-2718059d]:hover{background:hsla(0,0%,100%,.1)}.menu-item.is-active[data-v-2718059d]{background:linear-gradient(135deg,rgba(64,158,255,.15),rgba(56,189,248,.25));color:#409eff}html.dark .menu-item.is-active[data-v-2718059d]{background:linear-gradient(135deg,rgba(64,158,255,.2),rgba(56,189,248,.35))}.menu-icon[data-v-2718059d]{width:40px;min-width:40px;font-size:16px;flex-shrink:0;text-align:center}.menu-text[data-v-2718059d]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .2s ease .05s,max-width .25s ease}.sidebar-container.is-collapsed .menu-text[data-v-2718059d]{opacity:0;max-width:0;transition:opacity .1s ease,max-width .2s ease}.toggle-button[data-v-2718059d]{padding:12px;text-align:center;cursor:pointer;border-top:1px solid rgba(0,0,0,.08);transition:all .2s ease;color:var(--admin-container-color,#333)}html.dark .toggle-button[data-v-2718059d]{border-top:1px solid hsla(0,0%,100%,.08)}.toggle-button[data-v-2718059d]:hover{background:rgba(0,0,0,.04)}html.dark .toggle-button[data-v-2718059d]:hover{background:hsla(0,0%,100%,.06)}@media (max-width:768px){.sidebar-container[data-v-2718059d]{left:4px;max-width:170px}.sidebar-container.is-collapsed[data-v-2718059d]{width:50px}.menu-icon[data-v-2718059d]{width:34px;min-width:34px}}.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%}}.status-panel[data-v-92faa0f8]{padding:20px;background:transparent;min-height:100vh}.overview-cards[data-v-92faa0f8]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px}.overview-card[data-v-92faa0f8]{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;padding:24px;display:flex;align-items:center;box-shadow:var(--glass-shadow);transition:all .3s ease;border:1px solid var(--glass-border);cursor:pointer}.overview-card[data-v-92faa0f8]:hover{transform:translateY(-2px);box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.card-icon[data-v-92faa0f8]{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;margin-right:20px;background:linear-gradient(135deg,#60a5fa,#93c5fd);color:#fff}.card-content[data-v-92faa0f8]{flex:1}.card-title[data-v-92faa0f8]{font-size:14px;color:#666;margin-bottom:8px;font-weight:500}.card-value[data-v-92faa0f8]{font-size:28px;font-weight:700;color:var(--admin-container-color);line-height:1}.card-subtitle[data-v-92faa0f8]{font-size:11px;color:#999;margin-top:4px;opacity:.8}.charts-section[data-v-92faa0f8]{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px;margin-bottom:30px;overflow:visible}.chart-card[data-v-92faa0f8]{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;padding:24px;box-shadow:var(--glass-shadow);transition:all .3s ease;border:1px solid var(--glass-border)}.chart-card[data-v-92faa0f8]:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.chart-card[data-v-92faa0f8],.chart-content[data-v-92faa0f8],.pie-chart-container[data-v-92faa0f8],.pie-chart-wrapper[data-v-92faa0f8]{overflow:visible}.chart-header[data-v-92faa0f8]{display:flex;gap:8px;align-items:center;margin-bottom:20px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.chart-header .fa-icon[data-v-92faa0f8]{margin-right:10px;color:var(--admin-purple)}.chart-content[data-v-92faa0f8]{min-height:160px;padding:15px;margin:-5px}.empty-state[data-v-92faa0f8]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:160px;color:#999;font-size:14px}.empty-state .fa-icon[data-v-92faa0f8]{font-size:32px;margin-bottom:10px}.stats-list[data-v-92faa0f8]{display:flex;flex-direction:column;gap:16px}.stats-item[data-v-92faa0f8]{display:flex;align-items:center;gap:12px}.stats-label[data-v-92faa0f8]{min-width:80px;font-size:13px;color:#666;font-weight:500}.stats-bar[data-v-92faa0f8]{flex:1;height:8px;background:#f0f0f0;border-radius:4px;overflow:hidden}.stats-fill[data-v-92faa0f8]{height:100%;background:linear-gradient(90deg,var(--admin-purple),#e1bee7);border-radius:4px;transition:width .6s ease}.type-fill[data-v-92faa0f8]{background:linear-gradient(90deg,#4caf50,#81c784)}.stats-value[data-v-92faa0f8]{min-width:50px;text-align:right;font-size:13px;font-weight:600;color:var(--admin-container-color)}.pie-chart-container[data-v-92faa0f8]{display:flex;align-items:center;gap:24px;flex-wrap:wrap;justify-content:center}.pie-chart-wrapper[data-v-92faa0f8]{position:relative;width:180px;height:180px;flex-shrink:0;padding:15px;box-sizing:content-box;overflow:visible;isolation:isolate}.chart-center-text[data-v-92faa0f8]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;z-index:-1}.center-value[data-v-92faa0f8]{font-size:22px;font-weight:700;color:var(--admin-container-color);line-height:1.2}.center-label[data-v-92faa0f8]{font-size:11px;color:#888;margin-top:2px}.chart-legend[data-v-92faa0f8]{display:flex;flex-direction:column;gap:10px;flex:1;min-width:180px}.legend-item[data-v-92faa0f8]{display:flex;align-items:center;gap:10px;padding:8px 12px;background:rgba(0,0,0,.03);border-radius:8px;transition:all .2s ease}.legend-item[data-v-92faa0f8]:hover{background:rgba(0,0,0,.06);transform:translateX(4px)}html.dark .legend-item[data-v-92faa0f8]{background:hsla(0,0%,100%,.05)}html.dark .legend-item[data-v-92faa0f8]:hover{background:hsla(0,0%,100%,.1)}.legend-color[data-v-92faa0f8]{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-label[data-v-92faa0f8]{flex:1;font-size:13px;color:var(--admin-container-color);font-weight:500}.legend-value[data-v-92faa0f8]{font-size:13px;font-weight:600;color:var(--admin-container-color);min-width:50px;text-align:right}.legend-percent[data-v-92faa0f8]{font-size:12px;color:#888;min-width:40px;text-align:right}.actions-section[data-v-92faa0f8]{margin-bottom:30px}.action-card[data-v-92faa0f8]{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;padding:24px;box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.action-card[data-v-92faa0f8]:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.action-header[data-v-92faa0f8]{display:flex;align-items:center;gap:8px;margin-bottom:3px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.action-header .fa-icon[data-v-92faa0f8]{margin-right:10px;color:var(--admin-purple)}.action-content[data-v-92faa0f8]{display:flex;justify-content:center;padding:20px 0}.action-buttons[data-v-92faa0f8]{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;align-items:center;width:100%}.action-btn[data-v-92faa0f8]{border:none;border-radius:14px;padding:14px 28px;margin-left:0;font-weight:600;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1);min-width:150px;width:150px;height:52px;position:relative;overflow:hidden;box-shadow:0 4px 12px rgba(0,0,0,.15)}@media (max-width:768px){.action-btn[data-v-92faa0f8]{flex:1;width:auto;min-width:0;height:auto}}.action-btn[data-v-92faa0f8]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s ease}.action-btn[data-v-92faa0f8]:hover:before{left:100%}.action-btn[data-v-92faa0f8]:hover{transform:translateY(-3px)}.action-btn[data-v-92faa0f8]:active{transform:translateY(-1px)}.action-btn .fa-icon[data-v-92faa0f8]{margin-right:10px;font-size:15px}.rebuild-btn[data-v-92faa0f8]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.rebuild-btn[data-v-92faa0f8]:hover{box-shadow:0 8px 24px rgba(102,126,234,.45);background:linear-gradient(135deg,#5a6fd6,#6a4190)}.backup-btn[data-v-92faa0f8]{background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.backup-btn[data-v-92faa0f8]:hover{box-shadow:0 8px 24px rgba(17,153,142,.45);background:linear-gradient(135deg,#0f8a80,#32d970)}.restore-btn[data-v-92faa0f8]{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.restore-btn[data-v-92faa0f8]:hover{box-shadow:0 8px 24px rgba(245,87,108,.45);background:linear-gradient(135deg,#e085eb,#e04d61)}.restore-section[data-v-92faa0f8]{display:inline-block}@media (max-width:768px){.action-buttons>.el-tooltip[data-v-92faa0f8],.action-buttons>.restore-section[data-v-92faa0f8],.restore-section[data-v-92faa0f8]{flex:1;width:100%}.action-btn[data-v-92faa0f8]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-92faa0f8]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-92faa0f8]{position:relative;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);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-92faa0f8]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-92faa0f8],.card-bg-media[data-v-92faa0f8] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-92faa0f8] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-92faa0f8]{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-92faa0f8]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-92faa0f8]{position:absolute;top:0;left:0;right:0;display:flex;gap:8px;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(180deg,rgba(0,0,0,.6),transparent);z-index:2}.file-card-header .fa-icon[data-v-92faa0f8]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-92faa0f8]{color:#f59e0b}.info-card-footer[data-v-92faa0f8]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.7),transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-92faa0f8]{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-92faa0f8]{font-size:12px;color:hsla(0,0%,100%,.8);text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-92faa0f8]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-92faa0f8]{height:450px}}.file-info-card[data-v-92faa0f8]:hover{transform:translateY(-2px);box-shadow:var(--glass-shadow-hover)}.file-info-card:hover .card-bg-media[data-v-92faa0f8]{transform:scale(1.05)}@media (max-width:768px){.status-panel[data-v-92faa0f8]{padding:15px}.charts-section[data-v-92faa0f8],.file-info-section[data-v-92faa0f8],.overview-cards[data-v-92faa0f8]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-92faa0f8]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-92faa0f8]{font-size:24px}.action-buttons[data-v-92faa0f8]{flex-direction:column;gap:12px}.action-btn[data-v-92faa0f8]{width:100%;min-width:unset}}.stats-fill[data-v-92faa0f8]{animation:fillAnimation-92faa0f8 1s ease-out}@keyframes fillAnimation-92faa0f8{0%{width:0}}.progress-container[data-v-92faa0f8]{width:100%;padding:20px;text-align:center}.progress-header[data-v-92faa0f8]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.progress-phase[data-v-92faa0f8]{font-size:16px;font-weight:600;color:var(--admin-container-color)}.progress-percentage[data-v-92faa0f8]{font-size:18px;font-weight:700;color:var(--admin-purple)}.progress-bar[data-v-92faa0f8]{margin-bottom:16px}.progress-bar[data-v-92faa0f8] .el-progress-bar__outer{background-color:rgba(139,92,246,.1);border-radius:6px}.progress-bar[data-v-92faa0f8] .el-progress-bar__inner{background:linear-gradient(90deg,var(--admin-purple),#e1bee7);border-radius:6px;transition:width .3s ease}.progress-details[data-v-92faa0f8]{display:flex;justify-content:center;gap:24px;margin-bottom:12px;flex-wrap:wrap}.progress-count[data-v-92faa0f8],.progress-time[data-v-92faa0f8]{display:flex;align-items:center;gap:6px;font-size:14px;color:#666}.progress-count .fa-icon[data-v-92faa0f8],.progress-time .fa-icon[data-v-92faa0f8]{color:var(--admin-purple);font-size:12px}.progress-message[data-v-92faa0f8]{font-size:13px;color:#888;margin-bottom:16px;min-height:20px}.cancel-btn[data-v-92faa0f8]{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-92faa0f8]:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5);transform:translateY(-2px);box-shadow:0 4px 12px rgba(239,68,68,.25)}.cancel-btn .fa-icon[data-v-92faa0f8]{margin-right:8px}.error-container[data-v-92faa0f8]{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-92faa0f8]{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-92faa0f8]{text-align:center}.error-message[data-v-92faa0f8]{font-size:15px;font-weight:600;color:#ef4444;margin-bottom:8px}.error-suggestion[data-v-92faa0f8]{font-size:13px;color:#666}.error-actions[data-v-92faa0f8]{display:flex;gap:12px}.error-actions .el-button[data-v-92faa0f8]{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-92faa0f8]{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff}.error-actions .el-button--primary[data-v-92faa0f8]:hover{background:linear-gradient(135deg,#5a6fd6,#6a4190);transform:translateY(-2px);box-shadow:0 6px 16px rgba(102,126,234,.4)}.error-actions .el-button--default[data-v-92faa0f8]{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-92faa0f8]:hover{background:hsla(0,0%,100%,.15);border-color:hsla(0,0%,100%,.3);transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.error-actions .fa-icon[data-v-92faa0f8]{margin-right:8px}html.dark .progress-count[data-v-92faa0f8],html.dark .progress-time[data-v-92faa0f8]{color:#aaa}html.dark .progress-message[data-v-92faa0f8]{color:#999}html.dark .error-container[data-v-92faa0f8]{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}html.dark .error-suggestion[data-v-92faa0f8]{color:#aaa}@media (max-width:768px){.error-container[data-v-92faa0f8],.progress-container[data-v-92faa0f8]{padding:16px}.progress-header[data-v-92faa0f8]{flex-direction:column;gap:8px;text-align:center}.progress-details[data-v-92faa0f8]{flex-direction:column;gap:8px}.error-actions[data-v-92faa0f8]{flex-direction:column;width:100%}.error-actions .el-button[data-v-92faa0f8]{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}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon,.el-input-number{display:inline-flex}.el-input-number{line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.custom-select[data-v-55080c16]{position:relative}.custom-select-trigger[data-v-55080c16]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:var(--el-bg-color);border:1px solid var(--el-border-color);border-radius:8px;cursor:pointer;transition:all .2s ease;box-sizing:border-box}.custom-select-trigger[data-v-55080c16]:hover{border-color:var(--el-color-primary-light-5)}.custom-select.is-open .custom-select-trigger[data-v-55080c16]{border-color:var(--el-color-primary)}.custom-select-value[data-v-55080c16]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-55080c16],.custom-select-value.is-placeholder[data-v-55080c16]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-55080c16]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-55080c16]{transform:rotate(180deg)}.custom-select-dropdown[data-v-55080c16]{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);border-radius:8px;box-shadow:var(--el-box-shadow-light);z-index:2000;overflow:hidden}.custom-select-option[data-v-55080c16]{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-55080c16]:hover{background:var(--el-fill-color-light)}.custom-select-option.is-selected[data-v-55080c16]{color:var(--el-color-primary);font-weight:500}.option-icon[data-v-55080c16]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-55080c16],.dropdown-fade-leave-active[data-v-55080c16]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-55080c16],.dropdown-fade-leave-to[data-v-55080c16]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-d225d330]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-d225d330]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-d225d330]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-d225d330]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.add-btn[data-v-d225d330]{border-radius:8px}.header-actions[data-v-d225d330]{display:flex;gap:12px}.header-actions[data-v-d225d330] .el-button{border-radius:8px}.channel-group[data-v-d225d330]{margin-bottom:32px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);overflow:hidden;box-shadow:var(--glass-shadow);transition:all .3s ease}.channel-group[data-v-d225d330]:hover{box-shadow:var(--glass-shadow-hover)}.group-header[data-v-d225d330]{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-d225d330]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-d225d330]{font-size:18px;color:var(--el-color-primary)}.channel-count[data-v-d225d330]{font-size:12px}.load-balance-switch[data-v-d225d330]{display:flex;align-items:center;gap:8px}.switch-label[data-v-d225d330]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-d225d330]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-d225d330]{background:var(--glass-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:10px;border:1px solid var(--glass-border);border-left:3px solid var(--el-border-color-light);transition:all .25s ease;overflow:hidden;position:relative;display:flex;flex-direction:column;box-shadow:0 4px 16px rgba(0,0,0,.08)}.card-glow[data-v-d225d330]{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-d225d330]{background:radial-gradient(circle,rgba(84,169,235,.2) 0,transparent 70%)}.channel-card.cfr2 .card-glow[data-v-d225d330]{background:radial-gradient(circle,rgba(246,130,31,.2) 0,transparent 70%)}.channel-card.s3 .card-glow[data-v-d225d330]{background:radial-gradient(circle,rgba(86,154,49,.2) 0,transparent 70%)}.channel-card.discord .card-glow[data-v-d225d330]{background:radial-gradient(circle,rgba(88,101,242,.2) 0,transparent 70%)}.channel-card.huggingface .card-glow[data-v-d225d330]{background:radial-gradient(circle,rgba(255,210,30,.2) 0,transparent 70%)}.channel-card.webdav .card-glow[data-v-d225d330]{background:radial-gradient(circle,rgba(20,184,166,.2) 0,transparent 70%)}.channel-card[data-v-d225d330]:hover{border-color:var(--glass-border-hover);box-shadow:0 8px 24px rgba(0,0,0,.12);background:var(--glass-bg-hover)}.channel-card.disabled[data-v-d225d330]{opacity:.6;background:var(--el-fill-color-lighter)}.channel-card.telegram[data-v-d225d330]{border-left-color:#54a9eb}.channel-card.cfr2[data-v-d225d330]{border-left-color:#f6821f}.channel-card.s3[data-v-d225d330]{border-left-color:#569a31}.channel-card.discord[data-v-d225d330]{border-left-color:#5865f2}.channel-card.huggingface[data-v-d225d330]{border-left-color:#ffd21e}.channel-card.webdav[data-v-d225d330]{border-left-color:#14b8a6}.channel-card.fixed[data-v-d225d330]{border-left-width:3px;border-left-style:dashed}.card-header[data-v-d225d330]{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-d225d330]{display:flex;align-items:center;gap:8px}.channel-name[data-v-d225d330]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-d225d330]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-d225d330]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-d225d330]{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-d225d330]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-d225d330]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-d225d330]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-d225d330] .el-progress{margin-bottom:4px}.quota-text[data-v-d225d330]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-d225d330]{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-d225d330]{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-d225d330]{font-size:32px}.channel-warning[data-v-d225d330]{margin:0 20px 16px;padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning)}.select-option-icon[data-v-d225d330]{width:18px;margin-right:8px;text-align:center}.form-tip[data-v-d225d330]{margin-left:12px;font-size:12px;color:var(--el-text-color-secondary)}.form-warning[data-v-d225d330]{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-d225d330]{width:100%}.quota-status[data-v-d225d330] .el-progress{margin-bottom:8px}.quota-info[data-v-d225d330]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border-radius:6px}.quota-info.quota-warning[data-v-d225d330]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-d225d330]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-d225d330]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-d225d330]{animation:fa-spin-d225d330 1s linear infinite}@keyframes fa-spin-d225d330{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-d225d330]{padding:12px}.page-header[data-v-d225d330]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-d225d330]{grid-template-columns:1fr;padding:12px}.group-header[data-v-d225d330]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-d225d330] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-d225d330] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.floating-save-btn[data-v-53091626]{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-53091626]:hover{transform:translateY(-2px);box-shadow:var(--floating-btn-shadow-hover)}.floating-save-btn[data-v-53091626]:active{transform:translateY(-1px);box-shadow:var(--floating-btn-shadow)}.floating-save-btn.is-loading[data-v-53091626]{cursor:not-allowed;opacity:.8}.floating-save-btn.is-loading[data-v-53091626]:hover{transform:none}.floating-save-btn svg[data-v-53091626]{font-size:14px}.fade-up-enter-active[data-v-53091626]{transition:all .3s ease-out}.fade-up-leave-active[data-v-53091626]{transition:all .2s ease-in}.fade-up-enter-from[data-v-53091626]{opacity:0;transform:translateY(20px)}.fade-up-leave-to[data-v-53091626]{opacity:0;transform:translateY(10px)}@media (max-width:768px){.floating-save-btn[data-v-53091626]{right:16px;bottom:16px;padding:10px 16px;font-size:12px}.floating-save-btn svg[data-v-53091626]{font-size:12px}}@media (max-width:480px){.floating-save-btn[data-v-53091626]{right:12px;bottom:12px;padding:12px;border-radius:50%}.save-text[data-v-53091626]{display:none}.floating-save-btn svg[data-v-53091626]{font-size:16px}}.security-settings[data-v-2962b112]{padding:20px;min-height:500px}.first-settings[data-v-2962b112]{margin-bottom:40px}.first-title[data-v-2962b112]{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-2962b112]{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-2962b112] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-2962b112] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-2962b112] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-2962b112] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-2962b112] .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-2962b112] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-2962b112] .el-input,.first-settings[data-v-2962b112] .el-select{width:100%}.first-settings[data-v-2962b112] .el-switch{--el-switch-on-color:var(--el-color-primary)}.form-item-hint[data-v-2962b112]{display:inline-block;margin-left:8px;font-size:14px;color:var(--el-text-color-regular);line-height:32px;vertical-align:middle}.token-title[data-v-2962b112]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-2962b112]{margin-left:5px}.token-table-container[data-v-2962b112]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-2962b112]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:var(--glass-shadow);background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border)}.token-table[data-v-2962b112] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-2962b112] .el-table__body-wrapper{border-radius:0 0 12px 12px}.token-table[data-v-2962b112] .el-table{border-radius:12px}.token-table[data-v-2962b112] .el-table__header{background-color:#f8f9fa}.token-table[data-v-2962b112] .el-table th{background-color:#f8f9fa!important;border-bottom:1px solid #ebeef5;text-align:center}.token-table[data-v-2962b112] .el-table td{border-bottom:1px solid #ebeef5}.token-table[data-v-2962b112] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-2962b112]{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-2962b112]{gap:8px}.action-button[data-v-2962b112]{margin-left:0}.permission-tag[data-v-2962b112]{margin:2px!important}.token-display[data-v-2962b112]{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-2962b112]{padding:15px;padding-bottom:80px}.first-settings[data-v-2962b112] .el-form{padding:12px 15px}.first-settings[data-v-2962b112] .el-form-item__content{max-width:100%}.token-table-container[data-v-2962b112]{padding:0 10px}.table-cell-content[data-v-2962b112]{padding:6px 2px;min-height:36px}.token-display[data-v-2962b112]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-2962b112]{padding:0 5px}.table-cell-content[data-v-2962b112]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-2962b112]{padding:4px 8px;font-size:12px}.permission-tag[data-v-2962b112]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-2962b112]{padding:10px 0}.token-result .el-form-item[data-v-2962b112]{margin-bottom:20px}.dialog-footer[data-v-2962b112]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-2962b112],.fade-slide-leave-active[data-v-2962b112]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-2962b112],.fade-slide-leave-to[data-v-2962b112]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-2962b112],.fade-slide-leave-from[data-v-2962b112]{opacity:1;transform:translateY(0)}[data-v-2962b112] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-e4c3a742]{padding:20px;min-height:500px}.first-settings[data-v-e4c3a742]{margin-bottom:40px}.first-title[data-v-e4c3a742]{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-e4c3a742]{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-e4c3a742] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-e4c3a742] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-e4c3a742] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-e4c3a742] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-e4c3a742] .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-e4c3a742] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-e4c3a742] .el-form-item:has(.el-textarea) .el-form-item__content{max-width:600px}.first-settings[data-v-e4c3a742] .el-input,.first-settings[data-v-e4c3a742] .el-select{width:100%}.first-settings[data-v-e4c3a742] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.page-settings[data-v-e4c3a742]{padding:15px;padding-bottom:80px}.first-settings[data-v-e4c3a742] .el-form{padding:12px 15px}.first-settings[data-v-e4c3a742] .el-form-item__content{max-width:100%}}.others-settings[data-v-67b1b002]{padding:20px;min-height:500px}.first-settings[data-v-67b1b002]{margin-bottom:40px}.first-title[data-v-67b1b002]{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-67b1b002]{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-67b1b002] .el-form{padding:16px 20px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--glass-border);margin-bottom:20px;box-shadow:var(--glass-shadow);transition:all .3s ease}.first-settings[data-v-67b1b002] .el-form:hover{box-shadow:var(--glass-shadow-hover);background:var(--glass-bg-hover)}.first-settings[data-v-67b1b002] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-67b1b002] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-67b1b002] .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-67b1b002] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-67b1b002] .el-input{width:100%}.first-settings[data-v-67b1b002] .el-switch{--el-switch-on-color:var(--el-color-primary)}@media (max-width:768px){.others-settings[data-v-67b1b002]{padding:15px;padding-bottom:80px}.first-settings[data-v-67b1b002] .el-form{padding:12px 15px}.first-settings[data-v-67b1b002] .el-form-item__content{max-width:100%}}.container[data-v-7607b77d]{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-7607b77d]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-7607b77d]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-7607b77d]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-7607b77d]{font-size:.95em}}.header-content[data-v-7607b77d]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-7607b77d]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-7607b77d]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-7607b77d]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-7607b77d]{display:flex;gap:10px}.main-container[data-v-7607b77d]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-7607b77d]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-7607b77d],.main-container[data-v-7607b77d]{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/916.129684a5.css.gz b/frontend-dist/css/989.5d4e3710.css.gz similarity index 69% rename from frontend-dist/css/916.129684a5.css.gz rename to frontend-dist/css/989.5d4e3710.css.gz index e2c484c7c7df146f1f16c1d7984df656263a91ca..b62de6c8fd5802e56b7002432e9b14bc9e1e6408 100644 GIT binary patch delta 2822 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 Yx3d>`Ywjo4>Q3JO7af^0$8g;M080jr&;S4c delta 2797 zcmV@~^LS4gDDsdlt44dML?s~`-dN{OaR!cQKfyj%c z6=mD?@>9+hG$!A9+J$OSUZr%}eR+n}RpLZGma-G=d$)tfrq0!ZF{FxbEKaxgVyBO(yq9HEyMED&55|AWh^8kUM&4eU@s9Hp zDP}xpc3)x;zi2OsrL{cufprll${2WIB*W57PS%{gSWV{eg?$*!e4W{L!Ji;v-lIyX z<0<8quCP=i&Ik`@ z##EK<$r$-v!BBsc9AbTXLB7qD64|7X$P6+fbd?dJ*J9@H+p#Ap@OVl z8gZ?ZMhvqBtr&l*xS}td@0yx!c&?88p%;QRJ)b+OcSx`C8gwM~jtg-Kgpr~t z*`IrL(J0CLHckH1ZZ&g438wQpG?lm{FU8bFGckYV@gldD3qFE-P4i;mS8&Al$LHJ0 z52&5eH5#e5?MEP%@4?t12nLb$s5e-D(>~PKgOJ5&E>Qdu)uFU^bp`+Tt?5Bh!=Ro_aSITn@6_&L_OcpA*B~jKD8ITSYPuZ2umNiTO5ej-8>Z5yM2iF61A{B zec*plBG8n$agbrcn$Q5^<=X!Yg!e>eZC3Y35r(3O>=97cHvolK12C#nb}zXv%S0x9 z^v=edyAb2zN#-1(e=;cz2(okpbI~WM35{HBO;6}d*kkfg_od{E9^c!U`t+8if;i3t zH}ZjWBTjMR$Id$i!?!NSABOhg4$8PlAy0q0Sr-8x0HZC(M3*p*`B;7A)RKxF+rr0O zSvEdD#c`tlw65>yy*m5qkrsUMw9p9|*5X4l-RZTQ{Rw$hyl7!}Hanl<_^ zb|-9`bQNx+bu0$Y#ez%pYC7wE=;?piHgkQcO+H&Plcljp=syv_M;iD-#YIR2aD@|LIQBEiL0a*`)O+z2MBOq| zLu2!oFqYm&9*|A4a3->`fUKAmXn2A#MQSJpD4M_=qI~~!{+!nMspbwIZ*AHC)K33+ zyN(Z06i?)0u#^XTcg3;~Eopxeyu-XS3GuOvz2U76#S<9YYz8@Faf9tPq>Q&DtyqR|Q%f#9Y_me-J?OG zr>JPp8hclPt`CmqvdZ=Pc(Wj}0#IssDFchET9QNESt5iL8_i{3rVf8{%T~(F=rm43 z;n8%mv&9PlE9&lhP~b6RUohMOlMGCAsVon zJ3;-;zLz2^wgqqnXv)9^_@PKgqrw9(+J=6U>ymQY4=6B6db~ zRcX0QGXVC*mL@M6N5STZD{H|QCk`n()5Zqmt};H@)SZ8sNbtFdV;W!?Ml@nJUP%AX zsF1!{q6`l==tjI*yz5UX8MVLA=o8joO`_o^RqVm!xB{ExQEwIR?&z)J9e&T=s`*&{ z4!u>wB>qs|s^_|xF|lx`2W!0aY~<4H7E{T~x}Q|kXDk0|Q@ecAM9*mfGAH8>>OH3%O( zP1Y?1Xi2gvI{kDds`HF~~Hh<;-aP3)@(tQO`=6>7V5q2EYGwaeveiwmFB z4PJk#SC!L+&x+JXI2xqFPxP}Sv8Vni2i#h$q0V0m&)Ca3=t8r>1@rH(-!ny5O*g5-3Wb^D65&gulWVlH ztx-I+L}5B6*ruppK1|V!)myim)l}Ue-5o0`SmZv|Yt5X!j+aJRCgXea+P2uG} zDF*bKNGd_H*l?FO3H7_Yeu(_op5X%j1j*CI2;X{YzUK_4)F($+Gxf=Tms#pEx5PHJ z)g&{a;suTi7A;eFnX0I*oW65@;0<48zVo?i~DZJrLLcdKPz zfQX>pO-NE8cT4%K1yyL6y^r@1Cx*VQVjR7ZANAT8P+1VM2^lKZ zRqW!zc{G2LMqEdg5Ll<`MK4jMLUth+>1-} diff --git a/frontend-dist/index.html b/frontend-dist/index.html index e44f816d..bfc9d59b 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 e0088d3045361991ac283df932692623b326aad6..d6e7eccbc923272e0abcf8181140c7c44b536947 100644 GIT binary patch literal 520 zcmV+j0{8tNiwFP!000023YAmAZqzUk{guHSdf6l!*s`sZM5+)Hm2WVs{;n zu_syO@6m3yrP~St7fUmm_h#NaPxVTZ;yEA~9$Zr$UU1U)wGd5ZQ0k@{kR>Q1V?wUQ z$X#|NPFceoGWFvdG+qCEU&v~z@uL$e^h$jt-Drwvt5_DN=YoXCY~K8gUI3~`p{^5xh>01Q0MU3p-gy+!7?x%{jq+;yedvztK#<{+D>5g@#`O^)plyCVwtu$-uo{+ KeR1#q0{{Re3;XW? literal 518 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 aX?9(=*TmQ}Uk%J58vP$@6?}yaDF6T~?7nFL diff --git a/frontend-dist/js/226.bccf2eed.js.map.gz b/frontend-dist/js/226.bccf2eed.js.map.gz deleted file mode 100644 index 77ee69c477c930a1168cc946d48e104f18deb21f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9255 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 J<_~Fw006tfE0_QP diff --git a/frontend-dist/js/226.bccf2eed.js b/frontend-dist/js/226.ec43855c.js similarity index 99% rename from frontend-dist/js/226.bccf2eed.js rename to frontend-dist/js/226.ec43855c.js index ac7153d8..af65b040 100644 --- a/frontend-dist/js/226.bccf2eed.js +++ b/frontend-dist/js/226.ec43855c.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[226],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\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;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a){e.style.zIndex=-1,e.style.opacity=0;const n=document.querySelector(a);this.prepareBackgroundContainer(n);const s=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity})})},i=new Image;i.onload=()=>{e.src=t,s()},i.onerror=()=>{e.src=t,s()},i.src=t},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1;const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,setTimeout(()=>{n.style.opacity=0},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1;const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,setTimeout(()=>{s.style.opacity=0},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}},68226:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(80047),s=(a(85331),a(99648),a(56768));const i={class:"not-found-container"},o=["innerHTML"],r={class:"not-found-content"},l={class:"back-button-wrapper"},c={class:"error-animation"},d={class:"error-image"},u=["src"],g={class:"error-info"},m={class:"error-actions"},p={class:"help-links"},h={class:"quick-links"};function k(e,t,a,k,b,y){const I=(0,s.g2)("font-awesome-icon"),f=n.S2;return(0,s.uX)(),(0,s.CE)("div",i,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",r,[(0,s.Lk)("div",l,[(0,s.bF)(f,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(I,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[t[3]||(t[3]=(0,s.Lk)("div",{class:"error-number"},[(0,s.Lk)("span",{class:"four"},"4"),(0,s.Lk)("span",{class:"zero"},"0"),(0,s.Lk)("span",{class:"four"},"4")],-1)),(0,s.Lk)("div",d,[(0,s.Lk)("img",{src:y.errorImage,alt:"404",class:"floating-image"},null,8,u)])]),(0,s.Lk)("div",g,[t[10]||(t[10]=(0,s.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(f,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(I,{icon:"home",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(f,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(I,{icon:"arrow-left",class:"btn-icon"}),t[5]||(t[5]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[9]||(t[9]=(0,s.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(I,{icon:"cloud-upload-alt"}),t[6]||(t[6]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.goDashboard&&y.goDashboard(...e)),class:"quick-link"},[(0,s.bF)(I,{icon:"tachometer-alt"}),t[7]||(t[7]=(0,s.eW)(" 管理面板 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(I,{icon:"redo"}),t[8]||(t[8]=(0,s.eW)(" 刷新页面 ",-1))])])])])]),t[12]||(t[12]=(0,s.Fv)('
',1))])}a(44114);var b=a(60782),y=a(48903),I={name:"NotFound",mixins:[y.A],computed:{...(0,b.L8)(["useDarkMode","userConfig"]),errorImage(){return a(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},f=a(71241);const v=(0,f.A)(I,[["render",k],["__scopeId","data-v-5437e264"]]);var B=v},96682:function(e,t,a){e.exports=a.p+"img/404.8ed11fb3.png"}}]); -//# sourceMappingURL=226.bccf2eed.js.map \ No newline at end of file +//# sourceMappingURL=226.ec43855c.js.map \ No newline at end of file diff --git a/frontend-dist/js/226.ec43855c.js.gz b/frontend-dist/js/226.ec43855c.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..17a75d89a70c1ed9c985704c018819ef2a240c06 GIT binary patch literal 3448 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 avD;YR-q>)>mjiQvhW`iWkZ|n{DF6UUywtD& literal 0 HcmV?d00001 diff --git a/frontend-dist/js/226.bccf2eed.js.map b/frontend-dist/js/226.ec43855c.js.map similarity index 99% rename from frontend-dist/js/226.bccf2eed.js.map rename to frontend-dist/js/226.ec43855c.js.map index 54ac0059..d11fbd5f 100644 --- a/frontend-dist/js/226.bccf2eed.js.map +++ b/frontend-dist/js/226.ec43855c.js.map @@ -1 +1 @@ -{"version":3,"file":"js/226.bccf2eed.js","mappings":"oRAOA,KACEA,IAAAA,GACE,MAAO,CACLC,mBAAoB,EACpBC,qBAAsB,EACtBC,mBAAoB,KAEpBC,qBAAsB,KAE1B,EACAC,SAAU,KACLC,EAAAA,EAAAA,IAAW,CAAC,aAAc,iBAAkB,gBAC/CC,UAAAA,GACE,OAAOC,KAAKC,YAAYF,YAAc,GACxC,EACAG,SAAAA,GACE,OAAOF,KAAKC,YAAYC,WAAa,CACvC,EAEAC,wBAAAA,GACE,MAAO,8JAIT,EAEAC,sBAAAA,GACE,MAAO,0yBA4BT,GAGFC,MAAO,CAELC,WAAAA,CAAYC,EAAQC,GAEdD,IAAWC,GAAUR,KAAKJ,sBAC5BI,KAAKS,UAAU,KACbT,KAAKU,sBACHV,KAAKJ,qBAAqBe,UAC1BX,KAAKJ,qBAAqBgB,kBAC1BZ,KAAKJ,qBAAqBiB,qBAC1Bb,KAAKJ,qBAAqBkB,qBAIlC,GAGFC,OAAAA,GAEEf,KAAKgB,wBACP,EAEAC,aAAAA,GAEMjB,KAAKL,oBACPuB,cAAclB,KAAKL,oBAGrBK,KAAKmB,uBAAsB,GAE3BnB,KAAKoB,wBACP,EAEAC,QAAS,CAIPL,sBAAAA,GACE,MAAMM,EAAU,4BAChB,IAAKC,SAASC,eAAeF,GAAU,CACrC,MAAMG,EAAQF,SAASG,cAAc,SACrCD,EAAME,GAAKL,EACXG,EAAMG,YAAc5B,KAAKI,uBACzBmB,SAASM,KAAKC,YAAYL,EAC5B,CACF,EAKAL,sBAAAA,GACE,MAAME,EAAU,4BACVS,EAAgBR,SAASC,eAAeF,GAC1CS,GACFA,EAAcC,QAElB,EAMAC,wBAAAA,CAAyBC,GACvB,IAAKA,EAEH,YADAC,QAAQC,KAAK,cAKf,GAAIb,SAASC,eAAe,QAAUD,SAASC,eAAe,OAC5D,OAIF,MAAMa,EAAMd,SAASG,cAAc,OACnCW,EAAIV,GAAK,MACTU,EAAIC,UAAY,oBAChBD,EAAIE,IAAM,mBAGV,MAAMC,EAAMjB,SAASG,cAAc,OACnCc,EAAIb,GAAK,MACTa,EAAIF,UAAY,oBAChBE,EAAID,IAAM,mBAGVL,EAAUO,aAAaJ,EAAKH,EAAUQ,YACtCR,EAAUO,aAAaD,EAAKN,EAAUQ,WACxC,EAQAC,oBAAAA,CAAqBhC,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAE/Gd,KAAKJ,qBAAuB,CAC1Be,YACAC,oBACAC,uBACAC,sBAIF,MAAMoB,EAAYX,SAASqB,cAAchC,GACzCZ,KAAK6C,2BAA2BX,GAE5BpB,KACEoB,GAAeX,SAASC,eAAe,QAAWD,SAASC,eAAe,QAC5ExB,KAAKiC,yBAAyBC,IAIlC,MAAMG,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEpC,IAAKa,IAAQG,EAEX,YADAL,QAAQC,KAAK,4DAIf,MAAMU,EAAmB9C,KAAKC,aAAaU,GAElB,SAArBmC,EACF9C,KAAK+C,mBAAmBV,EAAKG,EAAK5B,GACzBoC,MAAMC,QAAQH,IAAqBA,EAAiBI,OAAS,EACtElD,KAAKmD,6BAA6Bd,EAAKG,EAAKM,EAAkBlC,GACrDoC,MAAMC,QAAQH,IAAiD,IAA5BA,EAAiBI,OAC7DlD,KAAKoD,2BAA2Bf,EAAKS,EAAiB,GAAIlC,GACjDC,GACTb,KAAKqD,sBAAsBhB,EAAKzB,EAEpC,EAKAmC,kBAAAA,CAAmBV,EAAKG,EAAK5B,GAC3BZ,KAAKsD,OAAOC,SAAS,uBAAuBC,KAAK,KACZ,IAA/BxD,KAAKyD,eAAeP,SAExBlD,KAAK0D,oBAAoBrB,EAAKrC,KAAKyD,eAAezD,KAAKP,qBAAqBkE,IAAK/C,GAEjFZ,KAAKL,mBAAqBiE,YAAY,KACpC5D,KAAK6D,oBAAoBxB,EAAKG,IAC7BxC,KAAKD,cAEZ,EAKAoD,4BAAAA,CAA6Bd,EAAKG,EAAKsB,EAAYlD,GACjDZ,KAAK0D,oBAAoBrB,EAAKyB,EAAW9D,KAAKN,sBAAuBkB,GAErEZ,KAAKL,mBAAqBiE,YAAY,KACpC5D,KAAK+D,sBAAsB1B,EAAKG,EAAKsB,IACpC9D,KAAKD,WACV,EAKAqD,0BAAAA,CAA2Bf,EAAK2B,EAAcpD,GAC5CZ,KAAK0D,oBAAoBrB,EAAK2B,EAAcpD,EAC9C,EAKAyC,qBAAAA,CAAsBhB,EAAKzB,GAEzB,MAAMqD,EAASjE,KAAKM,YACd4D,EACFC,EADiBF,EACT,MACA,MAEZjE,KAAK0D,oBAAoBrB,EAAK6B,EAActD,EAC9C,EAKA8C,mBAAAA,CAAoBU,EAAYC,EAAUzD,GAExCwD,EAAW3C,MAAM6C,QAAU,EAC3BF,EAAW3C,MAAM8C,QAAU,EAC3B,MAAMrC,EAAYX,SAASqB,cAAchC,GACzCZ,KAAK6C,2BAA2BX,GAEhC,MAAMsC,EAAYA,KAChBC,sBAAsB,KACpBA,sBAAsB,KACpBL,EAAW3C,MAAM8C,QAAUvE,KAAKE,eAKhCwE,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfR,EAAWS,IAAMR,EACjBG,KAEFE,EAAQI,QAAU,KAChBV,EAAWS,IAAMR,EACjBG,KAEFE,EAAQG,IAAMR,CAChB,EAEAxB,0BAAAA,CAA2BX,GACzB,IAAKA,EAAW,OAEhB,MAAM6C,EAAgBC,OAAOC,iBAAiB/C,GACf,WAA3B6C,EAAcG,WAChBhD,EAAUT,MAAMyD,SAAW,YAGA,SAAzBH,EAAcT,SAChBpC,EAAUT,MAAM6C,OAAS,KAG3BpC,EAAUT,MAAM0D,UAAY,SAC9B,EAKAtB,mBAAAA,CAAoBxB,EAAKG,GACvB,GAAmC,IAA/BxC,KAAKyD,eAAeP,OAAc,OAEtC,MAAMkC,EAAoC,GAArB/C,EAAIZ,MAAM8C,QACzBc,EAAQD,EAAe/C,EAAMG,EAC7B8C,EAASF,EAAe5C,EAAMH,EAEpCrC,KAAKP,oBAAsBO,KAAKP,mBAAqB,GAAKO,KAAKyD,eAAeP,OAC9E,MAAMqC,EAAUvF,KAAKyD,eAAezD,KAAKP,qBAAqBkE,IAG9D0B,EAAM5D,MAAM6C,QAAU,EACtBgB,EAAO7D,MAAM6C,QAAU,EAEvB,MAAMI,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfU,EAAOT,IAAMU,EAGbC,WAAW,KACTF,EAAO7D,MAAM8C,QAAUvE,KAAKE,UAG5BsF,WAAW,KACTH,EAAM5D,MAAM8C,QAAU,GACrB,OACF,KAELG,EAAQG,IAAMU,CAChB,EAKAxB,qBAAAA,CAAsB1B,EAAKG,EAAKsB,GAC9B,MAAMsB,EAAoC,GAArB/C,EAAIZ,MAAM8C,QACzBc,EAAQD,EAAe/C,EAAMG,EAC7B8C,EAASF,EAAe5C,EAAMH,EAEpCrC,KAAKN,sBAAwBM,KAAKN,qBAAuB,GAAKoE,EAAWZ,OACzE,MAAMqC,EAAUzB,EAAW9D,KAAKN,sBAGhC2F,EAAM5D,MAAM6C,QAAU,EACtBgB,EAAO7D,MAAM6C,QAAU,EAEvB,MAAMI,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfU,EAAOT,IAAMU,EAEbC,WAAW,KACTF,EAAO7D,MAAM8C,QAAUvE,KAAKE,UAE5BsF,WAAW,KACTH,EAAM5D,MAAM8C,QAAU,GACrB,OACF,KAELG,EAAQG,IAAMU,CAChB,EAKAE,uBAAAA,GACMzF,KAAKL,qBACPuB,cAAclB,KAAKL,oBACnBK,KAAKL,mBAAqB,KAE9B,EAMAwB,qBAAAA,CAAsBuE,GAAY,GAChC,MAAMrD,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEhCkE,GAEErD,IACFA,EAAIZ,MAAMkE,WAAa,OACvBtD,EAAIZ,MAAM8C,QAAU,EACpBlC,EAAIwC,IAAM,GAEVW,WAAW,KACLnD,IAAKA,EAAIZ,MAAMkE,WAAa,6BAC/B,KAEDnD,IACFA,EAAIf,MAAMkE,WAAa,OACvBnD,EAAIf,MAAM8C,QAAU,EACpB/B,EAAIqC,IAAM,GAEVW,WAAW,KACLhD,IAAKA,EAAIf,MAAMkE,WAAa,6BAC/B,OAIDtD,IACFA,EAAIZ,MAAM8C,QAAU,EACpBiB,WAAW,KACLnD,IAAKA,EAAIwC,IAAM,KAClB,OAEDrC,IACFA,EAAIf,MAAM8C,QAAU,EACpBiB,WAAW,KACLhD,IAAKA,EAAIqC,IAAM,KAClB,OAGT,EASAnE,qBAAAA,CAAsBC,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAChH,MAAMgC,EAAmB9C,KAAKC,aAAaU,GAG3C,IAAKE,QAA6C+E,IAArB9C,EAE3B,YADA9C,KAAK6F,uBAAuBlF,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMuB,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEpC,IAAKa,IAAQG,EAGX,YADAxC,KAAK6F,uBAAuBlF,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMgF,EAAiC,GAArBzD,EAAIZ,MAAM8C,QAAelC,EAAMG,EAC3C8C,EAA8B,GAArBjD,EAAIZ,MAAM8C,QAAe/B,EAAMH,EAGxC4B,EAASjE,KAAKM,YACdyF,EACF5B,EADkBF,EACV,MACA,MAGN+B,EAAa,IAAIrB,MACvBqB,EAAWpB,OAAS,KAElBU,EAAOT,IAAMkB,EAGbT,EAAOV,OAAS,KAEdkB,EAAUrE,MAAM8C,QAAU,EAG1BiB,WAAW,KACTF,EAAO7D,MAAM8C,QAAUvE,KAAKE,WAC3B,MAIP8F,EAAWlB,QAAU,KAEnB3C,QAAQC,KAAK,sBACbpC,KAAK6F,uBAAuBlF,EAAWC,EAAmBC,EAAsBC,IAGlFkF,EAAWnB,IAAMkB,CACnB,EAKAF,sBAAAA,CAAuBlF,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GACjHd,KAAKyF,0BACLzF,KAAKmB,uBAAsB,GAC3BnB,KAAKP,mBAAqB,EAC1BO,KAAKN,qBAAuB,EAG5B8F,WAAW,KACTxF,KAAK2C,qBAAqBhC,EAAWC,EAAmBC,EAAsBC,IAC7E,IACL,G,mHCteJ,MAAMmF,EAAa,CACjBC,MAAO,uBAEHC,EAAa,CAAC,aACdC,EAAa,CACjBF,MAAO,qBAEHG,EAAa,CACjBH,MAAO,uBAEHI,EAAa,CACjBJ,MAAO,mBAEHK,EAAa,CACjBL,MAAO,eAEHM,EAAa,CAAC,OACdC,EAAa,CACjBP,MAAO,cAEHQ,EAAa,CACjBR,MAAO,iBAEHS,EAAc,CAClBT,MAAO,cAEHU,EAAc,CAClBV,MAAO,eAEF,SAASW,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KAC7B,OAAO,WAAc,QAAoB,MAAOpB,EAAY,EAAC,QAAoB,MAAO,CACtFC,MAAO,qBACPoB,UAAWR,EAAK3G,0BACf,KAAM,EAAGgG,IAAa,QAAoB,MAAOC,EAAY,EAAC,QAAoB,MAAOC,EAAY,EAAC,QAAagB,EAAsB,CAC1InB,MAAO,cACPqB,QAASJ,EAASK,OAClBC,OAAQ,GACRC,KAAM,SACL,CACDC,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,WAERC,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOvB,EAAY,CAACS,EAAO,KAAOA,EAAO,IAAK,QAAoB,MAAO,CACjHb,MAAO,gBACN,EAAC,QAAoB,OAAQ,CAC9BA,MAAO,QACN,MAAM,QAAoB,OAAQ,CACnCA,MAAO,QACN,MAAM,QAAoB,OAAQ,CACnCA,MAAO,QACN,OAAQ,KAAK,QAAoB,MAAOK,EAAY,EAAC,QAAoB,MAAO,CACjF1B,IAAKsC,EAASW,WACdvF,IAAK,MACL2D,MAAO,kBACN,KAAM,EAAGM,QAAiB,QAAoB,MAAOC,EAAY,CAACM,EAAO,MAAQA,EAAO,KAAM,QAAoB,KAAM,CACzHb,MAAO,eACN,SAAU,IAAKa,EAAO,MAAQA,EAAO,KAAM,QAAoB,IAAK,CACrEb,MAAO,qBACN,8BAA+B,KAAK,QAAoB,MAAOQ,EAAY,EAAC,QAAaW,EAAsB,CAChHU,KAAM,UACNL,KAAM,QACNxB,MAAO,yBACPqB,QAASJ,EAASK,QACjB,CACDG,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,OACN1B,MAAO,aACLa,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,MAC1Dc,EAAG,GACF,EAAG,CAAC,aAAa,QAAaR,EAAsB,CACrDK,KAAM,QACNxB,MAAO,2BACPqB,QAASJ,EAASa,QACjB,CACDL,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,aACN1B,MAAO,aACLa,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,MAC1Dc,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOlB,EAAa,CAACI,EAAO,KAAOA,EAAO,IAAK,QAAoB,IAAK,CAChHb,MAAO,aACN,UAAW,KAAK,QAAoB,MAAOU,EAAa,EAAC,QAAoB,IAAK,CACnFqB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASK,QAAUL,EAASK,UAAUU,IACtFhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,qBACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,OAAO,QAAoB,IAAK,CACxFkB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASgB,aAAehB,EAASgB,eAAeD,IAChGhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,mBACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,OAAO,QAAoB,IAAK,CACxFkB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASiB,aAAejB,EAASiB,eAAeF,IAChGhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,SACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,cAAeA,EAAO,MAAQA,EAAO,KAAM,QAAmB,0VAAuW,KACje,C,mCCrGA,GACEsB,KAAM,WACNC,OAAQ,CAACC,EAAA,GACT1I,SAAU,KACL,QAAW,CAAC,cAAe,eAC9B,UAAAiI,GAEE,OAAO,EAAQ,MACjB,GAEF,OAAA/G,GAEEf,KAAK2C,qBAAqB,cAAe,wBAAwB,GAAO,EAC1E,EACA,aAAA1B,GAEEjB,KAAKyF,yBACP,EACApE,QAAS,CACP,MAAAmG,GACExH,KAAKwI,QAAQC,KAAK,IACpB,EACA,MAAAT,GACMhD,OAAO0D,QAAQxF,OAAS,EAC1BlD,KAAKwI,QAAQG,IAAI,GAEjB3I,KAAKwI,QAAQC,KAAK,IAEtB,EACA,WAAAN,GACEnI,KAAKwI,QAAQC,KAAK,aACpB,EACA,WAAAL,GACEpD,OAAO4D,SAASC,QAClB,I,WC9BJ,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASjC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/views/NotFound.vue?1f11","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\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;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n 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)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\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 })\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 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\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 \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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\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 \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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'\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'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=5437e264&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=5437e264&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5437e264\"]])\n\nexport default __exports__"],"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","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","zIndex","opacity","showImage","requestAnimationFrame","preload","Image","onload","src","onerror","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","transition","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","onClick","goHome","circle","size","default","icon","_","errorImage","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","$router","push","history","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/226.ec43855c.js","mappings":"oRAOA,KACEA,IAAAA,GACE,MAAO,CACLC,mBAAoB,EACpBC,qBAAsB,EACtBC,mBAAoB,KAEpBC,qBAAsB,KAE1B,EACAC,SAAU,KACLC,EAAAA,EAAAA,IAAW,CAAC,aAAc,iBAAkB,gBAC/CC,UAAAA,GACE,OAAOC,KAAKC,YAAYF,YAAc,GACxC,EACAG,SAAAA,GACE,OAAOF,KAAKC,YAAYC,WAAa,CACvC,EAEAC,wBAAAA,GACE,MAAO,8JAIT,EAEAC,sBAAAA,GACE,MAAO,0yBA4BT,GAGFC,MAAO,CAELC,WAAAA,CAAYC,EAAQC,GAEdD,IAAWC,GAAUR,KAAKJ,sBAC5BI,KAAKS,UAAU,KACbT,KAAKU,sBACHV,KAAKJ,qBAAqBe,UAC1BX,KAAKJ,qBAAqBgB,kBAC1BZ,KAAKJ,qBAAqBiB,qBAC1Bb,KAAKJ,qBAAqBkB,qBAIlC,GAGFC,OAAAA,GAEEf,KAAKgB,wBACP,EAEAC,aAAAA,GAEMjB,KAAKL,oBACPuB,cAAclB,KAAKL,oBAGrBK,KAAKmB,uBAAsB,GAE3BnB,KAAKoB,wBACP,EAEAC,QAAS,CAIPL,sBAAAA,GACE,MAAMM,EAAU,4BAChB,IAAKC,SAASC,eAAeF,GAAU,CACrC,MAAMG,EAAQF,SAASG,cAAc,SACrCD,EAAME,GAAKL,EACXG,EAAMG,YAAc5B,KAAKI,uBACzBmB,SAASM,KAAKC,YAAYL,EAC5B,CACF,EAKAL,sBAAAA,GACE,MAAME,EAAU,4BACVS,EAAgBR,SAASC,eAAeF,GAC1CS,GACFA,EAAcC,QAElB,EAMAC,wBAAAA,CAAyBC,GACvB,IAAKA,EAEH,YADAC,QAAQC,KAAK,cAKf,GAAIb,SAASC,eAAe,QAAUD,SAASC,eAAe,OAC5D,OAIF,MAAMa,EAAMd,SAASG,cAAc,OACnCW,EAAIV,GAAK,MACTU,EAAIC,UAAY,oBAChBD,EAAIE,IAAM,mBAGV,MAAMC,EAAMjB,SAASG,cAAc,OACnCc,EAAIb,GAAK,MACTa,EAAIF,UAAY,oBAChBE,EAAID,IAAM,mBAGVL,EAAUO,aAAaJ,EAAKH,EAAUQ,YACtCR,EAAUO,aAAaD,EAAKN,EAAUQ,WACxC,EAQAC,oBAAAA,CAAqBhC,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAE/Gd,KAAKJ,qBAAuB,CAC1Be,YACAC,oBACAC,uBACAC,sBAIF,MAAMoB,EAAYX,SAASqB,cAAchC,GACzCZ,KAAK6C,2BAA2BX,GAE5BpB,KACEoB,GAAeX,SAASC,eAAe,QAAWD,SAASC,eAAe,QAC5ExB,KAAKiC,yBAAyBC,IAIlC,MAAMG,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEpC,IAAKa,IAAQG,EAEX,YADAL,QAAQC,KAAK,4DAIf,MAAMU,EAAmB9C,KAAKC,aAAaU,GAElB,SAArBmC,EACF9C,KAAK+C,mBAAmBV,EAAKG,EAAK5B,GACzBoC,MAAMC,QAAQH,IAAqBA,EAAiBI,OAAS,EACtElD,KAAKmD,6BAA6Bd,EAAKG,EAAKM,EAAkBlC,GACrDoC,MAAMC,QAAQH,IAAiD,IAA5BA,EAAiBI,OAC7DlD,KAAKoD,2BAA2Bf,EAAKS,EAAiB,GAAIlC,GACjDC,GACTb,KAAKqD,sBAAsBhB,EAAKzB,EAEpC,EAKAmC,kBAAAA,CAAmBV,EAAKG,EAAK5B,GAC3BZ,KAAKsD,OAAOC,SAAS,uBAAuBC,KAAK,KACZ,IAA/BxD,KAAKyD,eAAeP,SAExBlD,KAAK0D,oBAAoBrB,EAAKrC,KAAKyD,eAAezD,KAAKP,qBAAqBkE,IAAK/C,GAEjFZ,KAAKL,mBAAqBiE,YAAY,KACpC5D,KAAK6D,oBAAoBxB,EAAKG,IAC7BxC,KAAKD,cAEZ,EAKAoD,4BAAAA,CAA6Bd,EAAKG,EAAKsB,EAAYlD,GACjDZ,KAAK0D,oBAAoBrB,EAAKyB,EAAW9D,KAAKN,sBAAuBkB,GAErEZ,KAAKL,mBAAqBiE,YAAY,KACpC5D,KAAK+D,sBAAsB1B,EAAKG,EAAKsB,IACpC9D,KAAKD,WACV,EAKAqD,0BAAAA,CAA2Bf,EAAK2B,EAAcpD,GAC5CZ,KAAK0D,oBAAoBrB,EAAK2B,EAAcpD,EAC9C,EAKAyC,qBAAAA,CAAsBhB,EAAKzB,GAEzB,MAAMqD,EAASjE,KAAKM,YACd4D,EACFC,EADiBF,EACT,MACA,MAEZjE,KAAK0D,oBAAoBrB,EAAK6B,EAActD,EAC9C,EAKA8C,mBAAAA,CAAoBU,EAAYC,EAAUzD,GAExCwD,EAAW3C,MAAM6C,QAAU,EAC3BF,EAAW3C,MAAM8C,QAAU,EAC3B,MAAMrC,EAAYX,SAASqB,cAAchC,GACzCZ,KAAK6C,2BAA2BX,GAEhC,MAAMsC,EAAYA,KAChBC,sBAAsB,KACpBA,sBAAsB,KACpBL,EAAW3C,MAAM8C,QAAUvE,KAAKE,eAKhCwE,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfR,EAAWS,IAAMR,EACjBG,KAEFE,EAAQI,QAAU,KAChBV,EAAWS,IAAMR,EACjBG,KAEFE,EAAQG,IAAMR,CAChB,EAEAxB,0BAAAA,CAA2BX,GACzB,IAAKA,EAAW,OAEhB,MAAM6C,EAAgBC,OAAOC,iBAAiB/C,GACf,WAA3B6C,EAAcG,WAChBhD,EAAUT,MAAMyD,SAAW,YAGA,SAAzBH,EAAcT,SAChBpC,EAAUT,MAAM6C,OAAS,KAG3BpC,EAAUT,MAAM0D,UAAY,SAC9B,EAKAtB,mBAAAA,CAAoBxB,EAAKG,GACvB,GAAmC,IAA/BxC,KAAKyD,eAAeP,OAAc,OAEtC,MAAMkC,EAAoC,GAArB/C,EAAIZ,MAAM8C,QACzBc,EAAQD,EAAe/C,EAAMG,EAC7B8C,EAASF,EAAe5C,EAAMH,EAEpCrC,KAAKP,oBAAsBO,KAAKP,mBAAqB,GAAKO,KAAKyD,eAAeP,OAC9E,MAAMqC,EAAUvF,KAAKyD,eAAezD,KAAKP,qBAAqBkE,IAG9D0B,EAAM5D,MAAM6C,QAAU,EACtBgB,EAAO7D,MAAM6C,QAAU,EAEvB,MAAMI,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfU,EAAOT,IAAMU,EAGbC,WAAW,KACTF,EAAO7D,MAAM8C,QAAUvE,KAAKE,UAG5BsF,WAAW,KACTH,EAAM5D,MAAM8C,QAAU,GACrB,OACF,KAELG,EAAQG,IAAMU,CAChB,EAKAxB,qBAAAA,CAAsB1B,EAAKG,EAAKsB,GAC9B,MAAMsB,EAAoC,GAArB/C,EAAIZ,MAAM8C,QACzBc,EAAQD,EAAe/C,EAAMG,EAC7B8C,EAASF,EAAe5C,EAAMH,EAEpCrC,KAAKN,sBAAwBM,KAAKN,qBAAuB,GAAKoE,EAAWZ,OACzE,MAAMqC,EAAUzB,EAAW9D,KAAKN,sBAGhC2F,EAAM5D,MAAM6C,QAAU,EACtBgB,EAAO7D,MAAM6C,QAAU,EAEvB,MAAMI,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfU,EAAOT,IAAMU,EAEbC,WAAW,KACTF,EAAO7D,MAAM8C,QAAUvE,KAAKE,UAE5BsF,WAAW,KACTH,EAAM5D,MAAM8C,QAAU,GACrB,OACF,KAELG,EAAQG,IAAMU,CAChB,EAKAE,uBAAAA,GACMzF,KAAKL,qBACPuB,cAAclB,KAAKL,oBACnBK,KAAKL,mBAAqB,KAE9B,EAMAwB,qBAAAA,CAAsBuE,GAAY,GAChC,MAAMrD,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEhCkE,GAEErD,IACFA,EAAIZ,MAAMkE,WAAa,OACvBtD,EAAIZ,MAAM8C,QAAU,EACpBlC,EAAIwC,IAAM,GAEVW,WAAW,KACLnD,IAAKA,EAAIZ,MAAMkE,WAAa,6BAC/B,KAEDnD,IACFA,EAAIf,MAAMkE,WAAa,OACvBnD,EAAIf,MAAM8C,QAAU,EACpB/B,EAAIqC,IAAM,GAEVW,WAAW,KACLhD,IAAKA,EAAIf,MAAMkE,WAAa,6BAC/B,OAIDtD,IACFA,EAAIZ,MAAM8C,QAAU,EACpBiB,WAAW,KACLnD,IAAKA,EAAIwC,IAAM,KAClB,OAEDrC,IACFA,EAAIf,MAAM8C,QAAU,EACpBiB,WAAW,KACLhD,IAAKA,EAAIqC,IAAM,KAClB,OAGT,EASAnE,qBAAAA,CAAsBC,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAChH,MAAMgC,EAAmB9C,KAAKC,aAAaU,GAG3C,IAAKE,QAA6C+E,IAArB9C,EAE3B,YADA9C,KAAK6F,uBAAuBlF,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMuB,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEpC,IAAKa,IAAQG,EAGX,YADAxC,KAAK6F,uBAAuBlF,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMgF,EAAiC,GAArBzD,EAAIZ,MAAM8C,QAAelC,EAAMG,EAC3C8C,EAA8B,GAArBjD,EAAIZ,MAAM8C,QAAe/B,EAAMH,EAGxC4B,EAASjE,KAAKM,YACdyF,EACF5B,EADkBF,EACV,MACA,MAGN+B,EAAa,IAAIrB,MACvBqB,EAAWpB,OAAS,KAElBU,EAAOT,IAAMkB,EAGbT,EAAOV,OAAS,KAEdkB,EAAUrE,MAAM8C,QAAU,EAG1BiB,WAAW,KACTF,EAAO7D,MAAM8C,QAAUvE,KAAKE,WAC3B,MAIP8F,EAAWlB,QAAU,KAEnB3C,QAAQC,KAAK,sBACbpC,KAAK6F,uBAAuBlF,EAAWC,EAAmBC,EAAsBC,IAGlFkF,EAAWnB,IAAMkB,CACnB,EAKAF,sBAAAA,CAAuBlF,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GACjHd,KAAKyF,0BACLzF,KAAKmB,uBAAsB,GAC3BnB,KAAKP,mBAAqB,EAC1BO,KAAKN,qBAAuB,EAG5B8F,WAAW,KACTxF,KAAK2C,qBAAqBhC,EAAWC,EAAmBC,EAAsBC,IAC7E,IACL,G,mHCteJ,MAAMmF,EAAa,CACjBC,MAAO,uBAEHC,EAAa,CAAC,aACdC,EAAa,CACjBF,MAAO,qBAEHG,EAAa,CACjBH,MAAO,uBAEHI,EAAa,CACjBJ,MAAO,mBAEHK,EAAa,CACjBL,MAAO,eAEHM,EAAa,CAAC,OACdC,EAAa,CACjBP,MAAO,cAEHQ,EAAa,CACjBR,MAAO,iBAEHS,EAAc,CAClBT,MAAO,cAEHU,EAAc,CAClBV,MAAO,eAEF,SAASW,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KAC7B,OAAO,WAAc,QAAoB,MAAOpB,EAAY,EAAC,QAAoB,MAAO,CACtFC,MAAO,qBACPoB,UAAWR,EAAK3G,0BACf,KAAM,EAAGgG,IAAa,QAAoB,MAAOC,EAAY,EAAC,QAAoB,MAAOC,EAAY,EAAC,QAAagB,EAAsB,CAC1InB,MAAO,cACPqB,QAASJ,EAASK,OAClBC,OAAQ,GACRC,KAAM,SACL,CACDC,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,WAERC,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOvB,EAAY,CAACS,EAAO,KAAOA,EAAO,IAAK,QAAoB,MAAO,CACjHb,MAAO,gBACN,EAAC,QAAoB,OAAQ,CAC9BA,MAAO,QACN,MAAM,QAAoB,OAAQ,CACnCA,MAAO,QACN,MAAM,QAAoB,OAAQ,CACnCA,MAAO,QACN,OAAQ,KAAK,QAAoB,MAAOK,EAAY,EAAC,QAAoB,MAAO,CACjF1B,IAAKsC,EAASW,WACdvF,IAAK,MACL2D,MAAO,kBACN,KAAM,EAAGM,QAAiB,QAAoB,MAAOC,EAAY,CAACM,EAAO,MAAQA,EAAO,KAAM,QAAoB,KAAM,CACzHb,MAAO,eACN,SAAU,IAAKa,EAAO,MAAQA,EAAO,KAAM,QAAoB,IAAK,CACrEb,MAAO,qBACN,8BAA+B,KAAK,QAAoB,MAAOQ,EAAY,EAAC,QAAaW,EAAsB,CAChHU,KAAM,UACNL,KAAM,QACNxB,MAAO,yBACPqB,QAASJ,EAASK,QACjB,CACDG,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,OACN1B,MAAO,aACLa,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,MAC1Dc,EAAG,GACF,EAAG,CAAC,aAAa,QAAaR,EAAsB,CACrDK,KAAM,QACNxB,MAAO,2BACPqB,QAASJ,EAASa,QACjB,CACDL,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,aACN1B,MAAO,aACLa,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,MAC1Dc,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOlB,EAAa,CAACI,EAAO,KAAOA,EAAO,IAAK,QAAoB,IAAK,CAChHb,MAAO,aACN,UAAW,KAAK,QAAoB,MAAOU,EAAa,EAAC,QAAoB,IAAK,CACnFqB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASK,QAAUL,EAASK,UAAUU,IACtFhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,qBACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,OAAO,QAAoB,IAAK,CACxFkB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASgB,aAAehB,EAASgB,eAAeD,IAChGhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,mBACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,OAAO,QAAoB,IAAK,CACxFkB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASiB,aAAejB,EAASiB,eAAeF,IAChGhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,SACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,cAAeA,EAAO,MAAQA,EAAO,KAAM,QAAmB,0VAAuW,KACje,C,mCCrGA,GACEsB,KAAM,WACNC,OAAQ,CAACC,EAAA,GACT1I,SAAU,KACL,QAAW,CAAC,cAAe,eAC9B,UAAAiI,GAEE,OAAO,EAAQ,MACjB,GAEF,OAAA/G,GAEEf,KAAK2C,qBAAqB,cAAe,wBAAwB,GAAO,EAC1E,EACA,aAAA1B,GAEEjB,KAAKyF,yBACP,EACApE,QAAS,CACP,MAAAmG,GACExH,KAAKwI,QAAQC,KAAK,IACpB,EACA,MAAAT,GACMhD,OAAO0D,QAAQxF,OAAS,EAC1BlD,KAAKwI,QAAQG,IAAI,GAEjB3I,KAAKwI,QAAQC,KAAK,IAEtB,EACA,WAAAN,GACEnI,KAAKwI,QAAQC,KAAK,aACpB,EACA,WAAAL,GACEpD,OAAO4D,SAASC,QAClB,I,WC9BJ,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASjC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/views/NotFound.vue?1f11","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\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;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n 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)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\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 })\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 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\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 \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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\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 \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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'\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'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=5437e264&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=5437e264&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5437e264\"]])\n\nexport default __exports__"],"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","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","zIndex","opacity","showImage","requestAnimationFrame","preload","Image","onload","src","onerror","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","transition","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","onClick","goHome","circle","size","default","icon","_","errorImage","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","$router","push","history","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/226.ec43855c.js.map.gz b/frontend-dist/js/226.ec43855c.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..71ac1192d73aa14c2a7a424dd23ec531c2b954da GIT binary patch literal 9256 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 K8%O+Ug#ZASyCDPs literal 0 HcmV?d00001 diff --git a/frontend-dist/js/309.c1beedec.js b/frontend-dist/js/309.b7dca603.js similarity index 99% rename from frontend-dist/js/309.c1beedec.js rename to frontend-dist/js/309.b7dca603.js index 2af5e3b5..750891f2 100644 --- a/frontend-dist/js/309.c1beedec.js +++ b/frontend-dist/js/309.b7dca603.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[309],{213:function(e,t,n){n(85331),n(19104)},4318:function(){},7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10456:function(e,t,n){n(85331)},10732:function(e,t,n){e.exports=n.p+"img/background.ea1b7ee7.jpg"},18785:function(e,t,n){n(85331)},19104:function(e,t,n){n(85331)},23597:function(e,t,n){n(85331)},30694:function(e,t,n){n(85331)},38736:function(e,t,n){n(85331)},40670:function(e,t,n){n(85331),n(99648),n(19104),n(85970)},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;\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;\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){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 i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):n&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n){e.style.zIndex=-1,e.style.opacity=0;const a=document.querySelector(n);this.prepareBackgroundContainer(a);const s=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity})})},i=new Image;i.onload=()=>{e.src=t,s()},i.onerror=()=>{e.src=t,s()},i.src=t},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 i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1;const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,setTimeout(()=>{a.style.opacity=0},1200)},50)},o.src=i},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1;const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,setTimeout(()=>{s.style.opacity=0},1200)},50)},r.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")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out")},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 i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,u=this.useDarkMode,d=n(u?10732:7835),g=new Image;g.onload=()=>{c.src=d,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},g.src=d},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 i(e,t,n,i,o,r){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)=>r.toggleLocale&&r.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),r={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)(r,[["render",i],["__scopeId","data-v-08567d0a"]]);var u=c},67819:function(e,t,n){n(85331)},70797:function(e,t,n){n.d(t,{A:function(){return o}});n(44114);var a=n(25507),s=n(16915);let i=!1;async function o(e,t={}){t.credentials="include",t.headers={...t.headers};const n=await fetch(e,t);return 401!==n.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),s.A.push("/adminLogin").finally(()=>{i=!1})),n}},77128:function(e,t,n){n(85331),n(4318)},78450:function(e,t,n){n(85331)},85970:function(e,t,n){n(85331)},88830:function(e,t,n){n(85331)},96808:function(e,t,n){n(85331),n(18785),n(67819),n(85970),n(19104)},97247:function(e,t,n){n.d(t,{A:function(){return C}});var a=n(54047),s=n(56768),i=n(45130),o=n(24232);const r={id:"themeMaskAdmin"},l=["cx","cy","r"],c=["r"],u=["opacity"];function d(e,t,n,a,d,g){const m=(0,s.g2)("font-awesome-icon");return(0,s.uX)(),(0,s.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>g.handleToggleClick&&g.handleToggleClick(...e))},[(0,s.bF)(i.eB,{name:"icon-fade",mode:"out-in"},{default:(0,s.k6)(()=>[d.isAuto?((0,s.uX)(),(0,s.Wv)(m,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.3em",color:"var(--admin-theme-toggle-color)"}})):((0,s.uX)(),(0,s.CE)("svg",{key:"sun-moon",class:(0,o.C4)(["theme_toggle_svg",{dark:d.isDark}]),width:"1.3em",height:"1.3em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,s.Lk)("mask",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,l)]),(0,s.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:d.isDark?"9":"5",mask:"url(#themeMaskAdmin)"},null,8,c),(0,s.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:d.isDark?0:1},[...t[2]||(t[2]=[(0,s.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,s.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,s.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,u)],2))]),_:1})])}var g={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},m=n(71241);const h=(0,m.A)(g,[["render",d],["__scopeId","data-v-5c149ed5"]]);var p=h,k=n(62086);n(85331),n(40670),n(88830),n(23597);const b={class:"tabs"},y={class:"tabs-dropdown-link"};function f(e,t,n,i,r,l){const c=(0,s.g2)("font-awesome-icon"),u=k.c6,d=k.Iy,g=k.dW,m=p,h=a.A;return(0,s.uX)(),(0,s.CE)("div",b,[(0,s.Lk)("span",{class:"title",onClick:t[0]||(t[0]=(...e)=>l.refreshDashboard&&l.refreshDashboard(...e))},[(0,s.bF)(c,{icon:l.iconName,class:"fa-images"},null,8,["icon"]),(0,s.eW)(" "+(0,o.v_)(l.titleName),1)]),(0,s.bF)(g,{onCommand:l.handleTabClick,class:"tabs-dropdown",role:"navigation",onVisibleChange:l.handleDropdownVisible,"popper-class":"tabs-dropdown-popper"},{dropdown:(0,s.k6)(()=>[(0,s.bF)(d,null,{default:(0,s.k6)(()=>["dashboard"!==n.activeTab?((0,s.uX)(),(0,s.Wv)(u,{key:0,command:"dashboard"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"images",style:{"margin-right":"5px",width:"16px"}}),(0,s.eW)(" "+(0,o.v_)(e.$t("dashboardTabs.fileManagement")),1)]),_:1})):(0,s.Q3)("",!0),"customerConfig"!==n.activeTab?((0,s.uX)(),(0,s.Wv)(u,{key:1,command:"customerConfig"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"user-cog",style:{"margin-right":"5px",width:"16px"}}),(0,s.eW)(" "+(0,o.v_)(e.$t("dashboardTabs.userManagement")),1)]),_:1})):(0,s.Q3)("",!0),"systemConfig"!==n.activeTab?((0,s.uX)(),(0,s.Wv)(u,{key:2,command:"systemConfig"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"cogs",style:{"margin-right":"5px",width:"16px"}}),(0,s.eW)(" "+(0,o.v_)(e.$t("dashboardTabs.systemSettings")),1)]),_:1})):(0,s.Q3)("",!0),(0,s.bF)(u,{command:""},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"upload",style:{"margin-right":"5px",width:"16px"}}),(0,s.eW)(" "+(0,o.v_)(e.$t("dashboardTabs.fileUpload")),1)]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.Lk)("span",y,[(0,s.bF)(c,{icon:"bars",class:"tabs-arrow"})])]),_:1},8,["onCommand","onVisibleChange"]),(0,s.bF)(m),(0,s.bF)(h,{class:"tabs-language-switcher"})])}n(44114);var I={name:"DashboardTabs",props:{activeTab:{type:String,default:"dashboard"}},components:{AdminToggleDark:p,LanguageSwitcher:a.A},computed:{titleName(){return"dashboard"===this.activeTab?this.$t("dashboardTabs.fileManagement"):"customerConfig"===this.activeTab?this.$t("dashboardTabs.userManagement"):"systemConfig"===this.activeTab?this.$t("dashboardTabs.systemSettings"):this.$t("dashboardTabs.fileUpload")},iconName(){return"dashboard"===this.activeTab?"images":"customerConfig"===this.activeTab?"user-cog":"systemConfig"===this.activeTab?"cogs":"upload"}},methods:{refreshDashboard(){location.reload()},handleTabClick(e){this.$router.push(`/${e}`)},handleDropdownVisible(e){const t=document.querySelector(".tabs-dropdown-link");e?t.classList.add("rotate-up"):t.classList.remove("rotate-up")}}};const v=(0,m.A)(I,[["render",f],["__scopeId","data-v-4e00471a"]]);var C=v}}]); -//# sourceMappingURL=309.c1beedec.js.map \ No newline at end of file +//# sourceMappingURL=309.b7dca603.js.map \ No newline at end of file diff --git a/frontend-dist/js/309.b7dca603.js.gz b/frontend-dist/js/309.b7dca603.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..db2315786c086fcb28ef8d3ee00c6b3c3d26a893 GIT binary patch literal 4310 zcmV;{5Gn5;iwFP!000023hi3$k0ZBv|K7hsOWT_vOwG+mT1h+VcyYH*fJ4t|+B?@p zRN+F+P$OC+QsHp+#nJ!)lAxEuZT+DQ>N+VBqXB{zjZ+{+lQwbw8SmNtlz*WhId6L1 z+n`3jbU&=5A^E)Xd47C2AWcXkk%9&i46KC2lOeby;{^_8=hKwU63nhs@|4b_X*vcY z|JE6+)o=vuMVd^l;jrzTj?l8@w!KNp0!cZu2$G1wCA0b`?Y0XMv)ohH>A(zi+HSv^ z2bUS@_1h;~D~V067F@{0XZGS%KGqsM zUN}ANcKVe&kQzGeIcjPD)Y*361r`nLGppxd6hx+iEyt8aZ{axp z8eS0bkcH&Rb5M{blFzpuSB8DaBoP-l_E;LnYtO0t8Wwn-=#eZ#0iQ2YNkVUF+qUH( zY(MHlYY5VWh;z;+Gy({$36TJ#MqkHb_683L7(q0i6%0$k8*)k$yP|StSCdw&Hfd*Q zJp1DX4ye37xG0~qTDe(WkvWb?@`TJ6F_xqx@TI?Cjr{Kq={#!C&zE{^_@H8HZ;9GiR-=u^f+ti( zlGm8fD-sUsW0EhthO_o4CKI{&?2?9Z>NQ-)d1dYSl&I~$V}Os}CV^~DsPq~EzaV05 z^qnTvaoA|OgLO%%@_Un95GE6^!8jx9WQ~V6#ghWFLdSec!?jyUgW!ZTDQognqQ->A zl8A<5x6QyB2{Y(5F0ing%}t9o%`j?=g;JQ2B(YowYZS5r{%HNbKmPCh0kRBTVi`=m zWi1t{tO}Rp$oJ*(u}&qsGG9LQG9y>=2@PhJ1^w5S`dKpPTuz@%$(%eXwYBzAvICu^ z{)k+ogL5RNjEKi1CV}MQz+9yZncy^*RT?=k9jB6?3xXy2a!lsRn=pe}hUPqFl7tpC zT2ZFLq@q|PoeYi1gbVT}(+i5}+g0TFIEV=rWscu74H{AP+y@(p&N_1PVL|5ng6xuJ zPUMt_iMQM*@G{^mkqxqzedn0rh=^vQCxHQ-SVtibQe_W2A~HA4gX@Q(MPNZg`sJLU zZb1uZIzZK88u|oDTaqhz&Y2`k`kR{9k~k^}P6-ZeyjTzxo=<5UT2eV>pWZK`6sn24 zrP4qJdu~=`Mx#%~sE7@Vz@;({fqAjL;52L~?mQ;;B^JyA&wubQ&;RzlPd@(O`47JL z{O_NA`j6ka`Pr{--v8;%cfbAVFMb4|vhF@fbfJZ-)q(LAfI0KQZEm3RsBnTNjHInA z?^p4h?5g8P+Pmv-&WYW^iP=SkN9+(MJ-(Y0A~t0S5%PiFR+dD>o=}lU9R+Z6n5_?I zh%zcEj_Er!=c$zD13TssWdJe%$VJ#ca(8UiA}jdIGAnrmZDk)%qFq_WV`w{@csR?g zmsHmKW=h0$LCunIpe0!dvcRGy_<6zDN+80=$JSADFf?2MkB<+B&T3`y%f9$dAk4+3 z{$Wmt`-fTSEJ9bSBYt4BeD>{kpTGan%?BTw-O+ey9J!6>&%Up|v>IwFeedI&XFvbl zuiyRbqyPN$$3Oezw?F*+$N%y94?q0mm;ZM2?ssqA``6EY`~D~Y^?_Ob{Mq+!-uvj& zzx!!p+Yz8pO!!*}c}PYB4bXw_`{K;hF(T8&gB-Lk6lk|7;z&a8z7Y7@riuQv1Ux<# zc1&0#r?0uSwddslL$5x^f~N_IH5IX&j;q+`v}%+dQx?T!gPui^7&;?Gh~?#2PtL=# zK2O37?NBE_KbcCNNG^yS(qy3^fdwW+2Ga-YXBKG7DPgA8I|?D_{j)YF7ykIz6u6k< zaHEVVw%hB5+t2igY;XJvL}$QRrBt)T zc&N4@cNuU1ES*LZ9%Dnrd?g@5`?jT0!SN4ely&u(?;QCXPC(daXT*~#EYGAz276M9 zZ|xa))rGI@7oaSQcg|h|yb;+glx)U&PMz0chOfm;qCE!0=4?qcBHlVt z?1p~qHt0vrEU7R+Zj7q!;RDqwQ74TJGpQ#c@B!Ge=srUG`X|8H8X}d_*j@?PmIQ2{ z1p5fxCIR%;tWa^x^MF~GfB)Ki*7{mi(0BG>){a8z6oitR>3arN9i{334Laz zb>M@dT3(6P@=Bn66QW@4X?&|+gToL*r;`jt>*!(qaP`SA|NHX~|Dil$eg5HhZvN^= zpZ(@HH~;+apZ($|zx(yOHy`}d=imC)&9k3>`oS-r|IJTsp8e(Xzy1)EO{RnPRJ^rj zsx5Q(WB15D6X=4~$bOIRi**QugCMvpU^wyRTBilHob=z@wbO<5HdK{*5MIpH??P z?@XKLUj+rMe3`m^X2)8Mtkx-AQ?F_zng~h0K0O130WT*uupGqgtH;nHDmGB;Gppye zI&R_MK)Efp??X$V;SdPILM0*{p&@wsGzs{EJPZK>>V~p;(RBJJ-CpQmFdCVNN&O&0 z-Co~4J#dHGb9$$D3P`R3l3AUO>vpQhY@M7qJ*bayZuitZfrFT+B5>pmaB|IpMj4@8 zZ{}qNm%8;A5~emz;seTpI1P0{S1ns25?@_{mcOzRu;WWiWka_WG~~|%xY2RkBi~nb z4$CxIt>|iHQU6HA%Y8fG^Ep)wWg_o~bIKm^C?erQ2GEfUQDWaW_xs=;&POQ&(4J6+ z+scM>KsMm8_{X=)p>gHeBx8FH&4%lB`NFN&S_uGfYPrH5Rpd9)VUwzS$ zP~CyoUQ#&iweFUb&exKXN@>RRCO@g;s?|Ah+m7n&F{{;SwOduoY)L~8NChU|z{yPe z0;uR8g5U}u5L^QU1Q?;fAL`H49~SVap6SZ;ib50>du^_^O!5MmE~zqIVlrJwF951! zd!o1U;rtfaQ_R9RpR4B`AMbdWXF8L+5}muKO&*{;3n|%}6Rbji&O_n>p30^+$}%)v z6i=_4b)k;KVW>KNspMzYrY3J)Kx>YcGji?eLv~XU1jwYxfQld{%_)v2%|r@5t8%8E zt8IidRPdI@dmjJfcDxh~Y(q^WJyGs69Oe9ylpP>7y8q?kG%4 z^9OEAv(um3^pP^62T~DRFRf<{Sn&?(oTEKVqdhJ|#SMGO+VR{B4OQ_Owv69eBfsWX z6${F7t`YiLeFAjV%73;z(5|@%9bDMjSlPOLX~%Bmi_JH+{KW2d3<3S^R_=Yf-OVL8 zU$qRUcCT-!n6I~z$w}lwwDYyCTNk!AR<>SzX{CKG?z;L$ojd4nmTsu8nN&nZ8cC*b zgj!IA`BTr$;K%^Ws6dk@kS4{vI^x`} zHN{&7d4AYeFPNQ0T zycCvGU-XNS1>><_W-B~SK!&c@9yCM27a_l7sshbGRw1BCdDassE)Y;~7y+TwpV>hd zh5pQbc#R@|W`}Q~xxYYDAKUkD1xVw1d0RgmnzQIZz!ckpOaw`$uj6Do=2(Qs$J@_# zz@;ER>czJDP_F_M$Yp}fivUSg42Bv}fub6bx1a?Y;8hJUE}lXwwza5=3Pf&MwG^KS zEjc^q^Eqar7Z*qlkF`o@msdc3er5QAM*5OMnc&Z8LdP*VpJEn~lF;k{#6!vcLe!hyPmd4k8g;bUs>nWK)v+6=YzdlBiD zqd@MI5>C#sh$w67SIJaeUtCpSr@OdPpmC48OfR4m;t3un_Jqdd4gFG%>goZQ`%$N5 zXk`17Hnf1r3&3=8$~S25UK%*g`cyn*oo$C~GMCcd$lsok%jjyDeIkE!Iff z!4d(FzOa}uGCd|zQWhn*S)r6IMaxpHJ2`csTCiVafWK)ttSM6aJRoQ-J74d}qF{{G zYvc8FhK1mls$o`e(0R1Xg#dw#qz39~b6)#CMQhb-yJe_>(^>=RVS%7tuiF5ih2V?C zTb9x3E#>usc#ox^EGqS{=O^<5J!krLsii(8RH)2bpv{J#hwc0Im+s5LP<8$)>P7dj z+ARif+?t)Xa>ol(+T7V2JMV?*Z0-&3faFEkWvHmNFJ_D)<-dToRYts3A(Jx7?N-OW zTetx(RZCXYU|SG1UA_3QUc=Qp4n}vuQ%Qtr`hDZx%S)1dqny1_sMVsa>&*4nMS#5n ztEtP&{5{D>G?6wALkkElu_VoOp}bHV%-BBlWo$LXp9pX5ho?Eqo z&;5%m8^OUJ+`IQuBjKqC$QyXEpe%axPapYh=hPne!T@)jw*7Wu&++1a0Lp!F07EqZ E0EdowtN;K2 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/309.c1beedec.js.map b/frontend-dist/js/309.b7dca603.js.map similarity index 99% rename from frontend-dist/js/309.c1beedec.js.map rename to frontend-dist/js/309.b7dca603.js.map index 60cfbb69..2608c77a 100644 --- a/frontend-dist/js/309.c1beedec.js.map +++ b/frontend-dist/js/309.b7dca603.js.map @@ -1 +1 @@ -{"version":3,"file":"js/309.c1beedec.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?0caa","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?90ec","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue?bba2","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue?7379","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?4056","webpack://sanyue_imghub/./src/components/DashboardTabs.vue","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?1414"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\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;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n 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)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\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 })\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 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\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 \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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\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 \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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'\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'\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__","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","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMaskAdmin\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.3em\",\n height: \"1.3em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMaskAdmin)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.3em\",\n \"color\": \"var(--admin-theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminToggleDark.vue?vue&type=template&id=5c149ed5&scoped=true\"\nimport script from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./AdminToggleDark.vue?vue&type=style&index=0&id=5c149ed5&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-5c149ed5\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tabs\"\n};\nconst _hoisted_2 = {\n class: \"tabs-dropdown-link\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_AdminToggleDark = _resolveComponent(\"AdminToggleDark\");\n const _component_LanguageSwitcher = _resolveComponent(\"LanguageSwitcher\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"span\", {\n class: \"title\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.refreshDashboard && $options.refreshDashboard(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.iconName,\n class: \"fa-images\"\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.titleName), 1)]), _createVNode(_component_el_dropdown, {\n onCommand: $options.handleTabClick,\n class: \"tabs-dropdown\",\n role: \"navigation\",\n onVisibleChange: $options.handleDropdownVisible,\n \"popper-class\": \"tabs-dropdown-popper\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [$props.activeTab !== 'dashboard' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 0,\n command: \"dashboard\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"images\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.fileManagement')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.activeTab !== 'customerConfig' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 1,\n command: \"customerConfig\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"user-cog\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.userManagement')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.activeTab !== 'systemConfig' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 2,\n command: \"systemConfig\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cogs\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.systemSettings')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), _createVNode(_component_el_dropdown_item, {\n command: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"upload\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.fileUpload')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_2, [_createVNode(_component_font_awesome_icon, {\n icon: \"bars\",\n class: \"tabs-arrow\"\n })])]),\n _: 1\n }, 8, [\"onCommand\", \"onVisibleChange\"]), _createVNode(_component_AdminToggleDark), _createVNode(_component_LanguageSwitcher, {\n class: \"tabs-language-switcher\"\n })]);\n}","import \"core-js/modules/es.array.push.js\";\nimport AdminToggleDark from './dashboard/AdminToggleDark.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nexport default {\n name: 'DashboardTabs',\n props: {\n activeTab: {\n type: String,\n default: 'dashboard'\n }\n },\n components: {\n AdminToggleDark,\n LanguageSwitcher\n },\n computed: {\n titleName() {\n if (this.activeTab === 'dashboard') {\n return this.$t('dashboardTabs.fileManagement');\n } else if (this.activeTab === 'customerConfig') {\n return this.$t('dashboardTabs.userManagement');\n } else if (this.activeTab === 'systemConfig') {\n return this.$t('dashboardTabs.systemSettings');\n } else {\n return this.$t('dashboardTabs.fileUpload');\n }\n },\n iconName() {\n if (this.activeTab === 'dashboard') {\n return 'images';\n } else if (this.activeTab === 'customerConfig') {\n return 'user-cog';\n } else if (this.activeTab === 'systemConfig') {\n return 'cogs';\n } else {\n return 'upload';\n }\n }\n },\n methods: {\n refreshDashboard() {\n location.reload();\n },\n handleTabClick(tab) {\n this.$router.push(`/${tab}`);\n },\n handleDropdownVisible(isVisible) {\n const arrow = document.querySelector('.tabs-dropdown-link');\n if (isVisible) {\n arrow.classList.add('rotate-up'); // 添加旋转类\n } else {\n arrow.classList.remove('rotate-up'); // 移除旋转类\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardTabs.vue?vue&type=template&id=4e00471a&scoped=true\"\nimport script from \"./DashboardTabs.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardTabs.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardTabs.vue?vue&type=style&index=0&id=4e00471a&scoped=true&lang=css\"\nimport \"./DashboardTabs.vue?vue&type=style&index=1&id=4e00471a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4e00471a\"]])\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","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","zIndex","opacity","showImage","requestAnimationFrame","preload","Image","onload","src","onerror","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","transition","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__","isRedirecting","async","fetchWithAuth","options","credentials","headers","response","fetch","status","store","commit","router","push","finally","_hoisted_2","_hoisted_3","_hoisted_4","handleToggleClick","mode","default","isAuto","key","width","height","viewBox","fill","stroke","x","y","cx","cy","r","mask","x1","y1","x2","y2","_","getters","cusDarkMode","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_AdminToggleDark","_component_LanguageSwitcher","refreshDashboard","iconName","titleName","onCommand","handleTabClick","onVisibleChange","handleDropdownVisible","dropdown","activeTab","command","props","type","String","components","AdminToggleDark","LanguageSwitcher","location","reload","tab","$router","isVisible","arrow","classList","add"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/309.b7dca603.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?0caa","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?90ec","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue?bba2","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue?7379","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?4056","webpack://sanyue_imghub/./src/components/DashboardTabs.vue","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?1414"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\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;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n 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)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\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 })\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 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\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 \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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\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 \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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'\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'\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__","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","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMaskAdmin\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.3em\",\n height: \"1.3em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMaskAdmin)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.3em\",\n \"color\": \"var(--admin-theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminToggleDark.vue?vue&type=template&id=5c149ed5&scoped=true\"\nimport script from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./AdminToggleDark.vue?vue&type=style&index=0&id=5c149ed5&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-5c149ed5\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tabs\"\n};\nconst _hoisted_2 = {\n class: \"tabs-dropdown-link\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_AdminToggleDark = _resolveComponent(\"AdminToggleDark\");\n const _component_LanguageSwitcher = _resolveComponent(\"LanguageSwitcher\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"span\", {\n class: \"title\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.refreshDashboard && $options.refreshDashboard(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.iconName,\n class: \"fa-images\"\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.titleName), 1)]), _createVNode(_component_el_dropdown, {\n onCommand: $options.handleTabClick,\n class: \"tabs-dropdown\",\n role: \"navigation\",\n onVisibleChange: $options.handleDropdownVisible,\n \"popper-class\": \"tabs-dropdown-popper\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [$props.activeTab !== 'dashboard' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 0,\n command: \"dashboard\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"images\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.fileManagement')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.activeTab !== 'customerConfig' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 1,\n command: \"customerConfig\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"user-cog\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.userManagement')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.activeTab !== 'systemConfig' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 2,\n command: \"systemConfig\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cogs\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.systemSettings')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), _createVNode(_component_el_dropdown_item, {\n command: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"upload\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.fileUpload')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_2, [_createVNode(_component_font_awesome_icon, {\n icon: \"bars\",\n class: \"tabs-arrow\"\n })])]),\n _: 1\n }, 8, [\"onCommand\", \"onVisibleChange\"]), _createVNode(_component_AdminToggleDark), _createVNode(_component_LanguageSwitcher, {\n class: \"tabs-language-switcher\"\n })]);\n}","import \"core-js/modules/es.array.push.js\";\nimport AdminToggleDark from './dashboard/AdminToggleDark.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nexport default {\n name: 'DashboardTabs',\n props: {\n activeTab: {\n type: String,\n default: 'dashboard'\n }\n },\n components: {\n AdminToggleDark,\n LanguageSwitcher\n },\n computed: {\n titleName() {\n if (this.activeTab === 'dashboard') {\n return this.$t('dashboardTabs.fileManagement');\n } else if (this.activeTab === 'customerConfig') {\n return this.$t('dashboardTabs.userManagement');\n } else if (this.activeTab === 'systemConfig') {\n return this.$t('dashboardTabs.systemSettings');\n } else {\n return this.$t('dashboardTabs.fileUpload');\n }\n },\n iconName() {\n if (this.activeTab === 'dashboard') {\n return 'images';\n } else if (this.activeTab === 'customerConfig') {\n return 'user-cog';\n } else if (this.activeTab === 'systemConfig') {\n return 'cogs';\n } else {\n return 'upload';\n }\n }\n },\n methods: {\n refreshDashboard() {\n location.reload();\n },\n handleTabClick(tab) {\n this.$router.push(`/${tab}`);\n },\n handleDropdownVisible(isVisible) {\n const arrow = document.querySelector('.tabs-dropdown-link');\n if (isVisible) {\n arrow.classList.add('rotate-up'); // 添加旋转类\n } else {\n arrow.classList.remove('rotate-up'); // 移除旋转类\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardTabs.vue?vue&type=template&id=4e00471a&scoped=true\"\nimport script from \"./DashboardTabs.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardTabs.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardTabs.vue?vue&type=style&index=0&id=4e00471a&scoped=true&lang=css\"\nimport \"./DashboardTabs.vue?vue&type=style&index=1&id=4e00471a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4e00471a\"]])\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","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","zIndex","opacity","showImage","requestAnimationFrame","preload","Image","onload","src","onerror","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","transition","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__","isRedirecting","async","fetchWithAuth","options","credentials","headers","response","fetch","status","store","commit","router","push","finally","_hoisted_2","_hoisted_3","_hoisted_4","handleToggleClick","mode","default","isAuto","key","width","height","viewBox","fill","stroke","x","y","cx","cy","r","mask","x1","y1","x2","y2","_","getters","cusDarkMode","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_AdminToggleDark","_component_LanguageSwitcher","refreshDashboard","iconName","titleName","onCommand","handleTabClick","onVisibleChange","handleDropdownVisible","dropdown","activeTab","command","props","type","String","components","AdminToggleDark","LanguageSwitcher","location","reload","tab","$router","isVisible","arrow","classList","add"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/309.b7dca603.js.map.gz b/frontend-dist/js/309.b7dca603.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..1b25cec6c2d9cec853cb6b06da102b52ee6675a8 GIT binary patch literal 11806 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 M02}~Fd6=;P0GALy0ssI2 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/309.c1beedec.js.gz b/frontend-dist/js/309.c1beedec.js.gz deleted file mode 100644 index 8006e25d839f3193c4a9772f009ff5b680a01ffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4309 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 DRh?K+ diff --git a/frontend-dist/js/309.c1beedec.js.map.gz b/frontend-dist/js/309.c1beedec.js.map.gz deleted file mode 100644 index fa5707d1ecad2ca3efabf9a83432de4063515ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11804 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 KFC6`tu>b&WvkKP$ diff --git a/frontend-dist/js/365.ae007b9b.js b/frontend-dist/js/365.ae007b9b.js new file mode 100644 index 00000000..b36dacb5 --- /dev/null +++ b/frontend-dist/js/365.ae007b9b.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[365],{213:function(e,t,o){"use strict";o(85331),o(19104)},2893:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},10456:function(e,t,o){"use strict";o(85331)},11393:function(e,t,o){o(16573),o(78100),o(77936),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),o(14603),o(47566),o(98721),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(s){if(t[s])return t[s].exports;var l=t[s]={i:s,l:!1,exports:{}};return e[s].call(l.exports,l,l.exports,o),l.l=!0,l.exports}return o.m=e,o.c=t,o.d=function(e,t,s){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(o.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)o.d(s,l,function(t){return e[t]}.bind(null,l));return s},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var s;function l(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return a}),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 v}),o.d(t,"EImageType",function(){return s}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(s||(s={}));var i=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function a(e,t=.92,o=s.JPEG){return i(this,void 0,void 0,function*(){return l(o)||(o=s.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=s.JPEG){return new Promise(s=>e.toBlob(e=>s(e),o,t))}var r=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let s=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let a=i.length;const n=new Uint8Array(a);for(;a--;)n[a]=i.charCodeAt(a);return l(t)&&(s=t),new Blob([n],{type:s})})}function c(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),s.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const s=document.createEvent("MouseEvents");s.initEvent("click",!1,!1),o.dispatchEvent(s),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),s=document.createElement("canvas"),l=s.getContext("2d");let i,a;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;a=e.width*t,i=e.height*t}else a=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)?(s.height=a,s.width=i):(s.height=i,s.width=a),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;case 2:l.translate(s.width,0),l.scale(-1,1),l.drawImage(e,0,0,s.width,s.height);break;case 4:l.translate(s.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 5:l.translate(s.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 7:l.translate(s.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;default:l.drawImage(e,0,0,s.width,s.height)}return s})}function g(e){return fetch(e).then(e=>e.blob())}function f(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),s.src=e})}var y=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.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=s.JPEG;l(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield a(u,t.quality,n),g=yield d(h,i);return g.size>e.size?e:g})}function v(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=s.JPEG;l(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 v=[null,null];for(let e=1;e<=7;e++){y=yield a(f,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...v].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;v[0]=y,b+=Math.pow(.5,e+1)}}const C=yield d(y,u);return C.size>e.size?e:C})}}])})},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)},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var s=o(99114),l=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),a=(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"},v={class:"node-label"};function C(e,t,o,C,k,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=a.qk,$=i.Vc,S=l.pw,T=s.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:k.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>k.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,[k.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_)(k.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:k.treeData,props:k.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,k.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:k.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>k.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,[k.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_)(k.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:k.treeData,props:k.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",v,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,k.loading]])]),_:1},8,["modelValue","title"])],64))])}var k=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 k.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",C],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},50333:function(e,t,o){"use strict";o(85331),o(29092)},58149:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return $o}});var s=o(78507),l=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),a=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"},v={class:"grid-actions"},C={class:"grid-info"},k=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},_=["title"],x=["title"],M={class:"list-meta"},R={class:"upload-time"},A={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},I={key:1,class:"load-more-hint"},N={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function V(e,t,o,V,W,z){const B=(0,i.g2)("font-awesome-icon"),H=l.S2,X=s.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,a.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,a.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,a.v_)(e.$t("uploadHistory.totalRecords",{count:W.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(X,{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)(B,{icon:"grid"===W.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(X,{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)(B,{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)(B,{icon:"times"})]),_:1})])]),W.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,a.v_)(e.date),1)]),"grid"===W.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)(B,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",v,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{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)(B,{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)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",C,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,a.v_)(e.name),9,k),(0,i.Lk)("div",w,(0,a.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)(B,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,a.v_)(e.name),9,_),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,a.v_)(e.url),9,x)]),(0,i.Lk)("div",M,[(0,i.Lk)("div",R,(0,a.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)(B,{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)(B,{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)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[W.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(B,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",I,(0,a.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):W.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",N,(0,a.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(B,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,a.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701),o(33110),o(58335);var W={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),s=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[s]||(e[s]=[]),e[s].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{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,s=t.scrollHeight,l=t.clientHeight;s-o-l<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),s=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${s}-${l} ${i}:${a}:${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 B=(0,z.A)(W,[["render",V],["__scopeId","data-v-550797ce"]]);var H=B,X=o(86975),O=o(9267),Q=(o(15616),o(81418)),j=(o(50333),o(74757)),q=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810));o(34396),o(4885);const Y={class:"dialog-section"},Z={class:"section-header"},ee={class:"section-title"},te={class:"section-content"},oe={class:"setting-item"},se={class:"setting-label"},le={key:0,class:"setting-item"},ie={class:"setting-label"},ae={class:"setting-item"},ne={class:"setting-label"},re={class:"setting-item"},de={class:"setting-label"},ce={class:"dialog-section"},ue={class:"section-header"},pe={class:"section-title"},he={class:"section-content"},me={class:"dialog-section"},ge={class:"section-header"},fe={class:"section-title"},ye={class:"section-content"},be={class:"setting-item"},ve={class:"setting-label"},Ce={class:"setting-item"},ke={class:"setting-label"},we={key:0,class:"setting-item slider-item"},Fe={class:"setting-label"},Le={class:"slider-wrapper"},Ue={class:"slider-input-wrapper"},$e={key:1,class:"setting-item slider-item"},Se={class:"setting-label"},Te={class:"slider-wrapper"},_e={class:"slider-input-wrapper"},xe={key:0,class:"dialog-section"},Me={class:"section-header"},Re={class:"section-title"},Ae={class:"section-content"},Ee={class:"setting-item"},De={class:"setting-label"},Ie={class:"dialog-action"};function Ne(e,t,o,n,r,d){const c=(0,i.g2)("font-awesome-icon"),u=J.ll,p=J.MQ,h=s.R7,m=K.P9,g=K.AV,f=G.WK,y=q.qi,b=j.B8,v=Q.lq,C=l.S2,k=O.kZ;return(0,i.uX)(),(0,i.Wv)(k,{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",Y,[(0,i.Lk)("div",Z,[(0,i.Lk)("span",ee,(0,a.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",te,[(0,i.Lk)("div",oe,[(0,i.Lk)("span",se,(0,a.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,{icon:"paper-plane",class:"channel-icon"}),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,{icon:"cloud",class:"channel-icon"}),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,{icon:"database",class:"channel-icon"}),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,{icon:"comments",class:"channel-icon"}),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,{icon:"robot",class:"channel-icon"}),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,{icon:"folder",class:"channel-icon"}),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",le,[(0,i.Lk)("span",ie,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(g,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(m,{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",ae,[(0,i.Lk)("span",ne,(0,a.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(f,{"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",re,[(0,i.Lk)("span",de,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(y,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ce,[(0,i.Lk)("div",ue,[(0,i.Lk)("span",pe,(0,a.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",he,[(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)(c,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(u,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(u,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(u,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",me,[(0,i.Lk)("div",ge,[(0,i.Lk)("span",fe,(0,a.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(h,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ye,[(0,i.Lk)("div",be,[(0,i.Lk)("span",ve,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(y,{"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",ke,(0,a.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(y,{"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",we,[(0,i.Lk)("span",Fe,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Le,[(0,i.bF)(b,{"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",Ue,[(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",$e,[(0,i.Lk)("span",Se,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Te,[(0,i.bF)(b,{"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",xe,[(0,i.Lk)("div",Me,[(0,i.Lk)("span",Re,(0,a.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(h,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ae,[(0,i.Lk)("div",Ee,[(0,i.Lk)("span",De,(0,a.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(y,{"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",Ie,[(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,a.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var Pe={name:"UploadSettingsDialog",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 Ve=(0,z.A)(Pe,[["render",Ne]]);var We=Ve,ze=o(88559),Be=(o(85970),o(813)),He=(o(34896),o(69655)),Xe=(o(2893),o(74253));o(79899);const Oe={class:"upload-list-item"},Qe=["href"],je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},qe=["src"],Ge=["src"],Ke={key:2,style:{width:"10vw","border-radius":"12px"}},Je={class:"upload-list-item-content"},Ye={class:"upload-list-item-name-wrapper"},Ze={key:0,class:"upload-list-item-url"},et={class:"upload-list-item-url-row"},tt={class:"upload-list-item-url-row"},ot={key:1,class:"upload-list-item-progress"},st={class:"upload-list-item-action"};function lt(e,t,o,s,l,n){const r=(0,i.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=He.ve,p=(0,i.g2)("Link"),h=Be.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",Oe,[(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,qe),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,Ge)):((0,i.uX)(),(0,i.CE)("div",Ke,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Qe),(0,i.Lk)("div",Je,[(0,i.Lk)("div",Ye,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",Ze,[(0,i.Lk)("div",et,[(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",tt,[(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",ot,[(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 it=o(57477);const at=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],nt=["mp4","webm","ogg","mkv"];var rt={name:"UploadFileItem",components:{Link:it.Link,Delete:it.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return at.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return nt.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const i=l.length+4,a=t-i-3;return a<=0?e.substring(0,t-3)+"...":s.substring(0,a)+"..."+s.slice(-4)+l},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const dt=(0,z.A)(rt,[["render",lt],["__scopeId","data-v-4848c2b0"]]);var ct=dt,ut=o(62086),pt=(o(40670),o(88830),o(23597),o(70683)),ht=(o(95385),o(47358));const mt={class:"upload-form"},gt={class:"upload-card-glow",ref:"uploadCardGlow"},ft=["innerHTML"],yt={key:0,class:"upload-card"},bt={class:"paste-card-actions"},vt={class:"upload-list-dashboard-action"},Ct={class:"modern-action-group"},kt={class:"modern-dropdown-item-content"},wt={class:"modern-action-btn modern-action-btn-danger"};function Ft(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=Be.tk,h=ht.j5,m=G.WK,g=l.S2,f=J.Zh,y=J.MQ,b=pt.Ik,v=(0,i.g2)("List"),C=(0,i.g2)("Checked"),k=(0,i.g2)("Failed"),w=Xe.$g,F=(0,i.g2)("font-awesome-icon"),L=s.R7,U=q.qi,$=ut.c6,S=ut.Iy,T=ut.dW,_=ct,x=ze.kA;return(0,i.uX)(),(0,i.CE)("div",mt,[(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",gt,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,a.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,a.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,a.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,ft)]),_: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",yt,[(0,i.bF)(b,{class:(0,a.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",bt,[(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,a.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,a.v_)(e.$t("upload.pasteSave")),1)]),_:1}),(0,i.bF)(f,{label:"external"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("upload.pasteExternal")),1)]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,a.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,a.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(x,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,a.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)(v)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,a.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",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",kt,[(0,i.Lk)("span",null,(0,a.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",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,a.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)($,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",wt,[(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)(_,{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(16573),o(78100),o(77936),o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),o(14603),o(47566),o(98721);var Lt=o(457),Ut=o(76334),$t=o(60782);function St(e,t,o){const s=o+e;return{finalURL:s,mdURL:`![${t}](${s})`,htmlURL:`${t}`,ubbURL:`[img]${s}[/img]`}}function Tt(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=St(e.srcID,e.name,t);Object.assign(e,o)})}const xt=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 Rt(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[s,l,i,a,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+xt[u]+o[u]>>>0,h=Mt(s,2)^Mt(s,13)^Mt(s,22),m=s&l^s&i^l&i,g=h+m>>>0;c=d,d=r,r=n,n=a+p>>>0,a=i,i=l,l=s,s=p+g>>>0}t[0]=t[0]+s>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+a>>>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 At(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,s=0;return{update(l){s+=l.length;let i=0;if(o>0){const s=64-o,a=Math.min(s,l.length);t.set(l.subarray(0,a),o),o+=a,i=a,64===o&&(Rt(t,e),o=0)}while(i+64<=l.length)Rt(l.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),Rt(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(l/4294967296),!1),i.setUint32(60,l>>>0,!1),Rt(t,e);let a="";for(let t=0;t<8;t++)a+=e[t].toString(16).padStart(8,"0");return a}}}async function Et(e){const t=At(),o=4194304;let s=0;while(sthis.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,$t.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const i=l.length+4,a=t-i-3;return a<=0?e.substring(0,t-3)+"...":s.substring(0,a)+"..."+s.slice(-4)+l},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),s=o?.uploadChannel||this.uploadChannel;if("external"===s)return void this.uploadSingleFile(e);if("huggingface"===s){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===s){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const l=20971520;e.file.size>l?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,s=t.uploadChannel||this.uploadChannel,l=this.autoRetry&&"external"!==s,i="external"===s?"default":this.uploadNameType,a=new AbortController;this.abortControllers.set(e.file.uid,a);const n=new FormData;if(n.append("file",e.file),"external"===s&&n.append("url",e.file.url),"huggingface"===s)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Et(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Lt.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+s+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+l+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:a.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,s=new AbortController;this.abortControllers.set(e.file.uid,s);const l="discord"===o?9437184:16777216,i=e.file.size,a=Math.ceil(i/l),n=t.serverCompress,r=this.autoRetry&&"external"!==o,d="external"===o?"default":this.uploadNameType;let c=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),c=await Et(e.file),console.log("SHA256 computed:",c)}catch(u){console.error("Failed to compute SHA256:",u)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",e.file.type),t.append("totalChunks",a.toString());const p=await(0,Lt.A)({url:"/upload?serverCompress="+n+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+d+"&autoRetry="+r+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!p.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+p.data.message);const h=p.data.uploadId;console.log("分块上传初始化成功,uploadId:",h);const m=this.fileList.find(t=>t.uid===e.file.uid);m&&(m.totalChunks=a,m.uploadId=h);const g=3,f=new Array(a).fill(0);let y=0,b=!1,v="",C=!1;const k=async t=>{if(b||C)return;const c=t*l,p=Math.min(c+l,i),m=e.file.slice(c,p),g=new FormData;g.append("file",m,`${e.file.name}.part${t.toString().padStart(3,"0")}`),g.append("chunkIndex",t.toString()),g.append("totalChunks",a.toString()),g.append("uploadId",h),g.append("originalFileName",e.file.name),g.append("originalFileType",e.file.type);let y=0;const k=3;while(y{if(b||C)return;const s=Math.round(o.loaded/o.total*100);f[t]=s;const l=Math.round(f.reduce((e,t)=>e+t,0)/a);e.onProgress({percent:l,file:e.file})}})}catch(u){if("CanceledError"===u.name||"ERR_CANCELED"===u.code)return C=!0,void console.log("分块上传已取消:",e.file.name);if(y++,console.warn(`分块 ${t+1}/${a} 上传失败 (重试 ${y}/${k}):`,u),y>=k)throw b=!0,v=`分块 ${t+1}/${a} 上传失败: ${u.message}`,new Error(v);await new Promise(e=>setTimeout(e,2e3*y))}}},w=[];for(let e=0;e{while(yt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),u.response&&401!==u.response.status?(this.exceptionList.push(e),e.onError(u,e.file)):u.response||(this.exceptionList.push(e),e.onError(u,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Lt.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const s=o.uploadChannel||this.uploadChannel;if("external"!==s){const s=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+s;const l=St(s,t.name,this.rootUrl);Object.assign(o,l),o.srcID=s}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(s){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(Tt(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 s=e;const l=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(l)try{const t=await this.convertImageToWebp(e);t&&(s=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=s.type.includes("image")&&this.customerCompress&&s.size/1024/1024>this.compressBar,a=s.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const s=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:s,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)Ut.compressAccurately(s,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:s.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const l=new File([t],s.name,{type:t.type});l.uid=e.uid;const i=this.uploadCount++,a=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(l,a):setTimeout(()=>{n(l,a),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:s.name})),o(e)});else if(a){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!s.type.includes("image")||s.size/1024/1024<10);0===e?n(s,t):setTimeout(()=>{n(s,t),this.uploadCount--},300*e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:s.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=>Tt(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`,a=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:l,htmlURL:i,ubbURL:a,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let s="";o.test(e)&&Lt.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]){s=o[1].replace(/['"]/g,"");try{s=decodeURIComponent(s)}catch(l){s=""}}""===s&&(o=t.exec(i),null!=o&&o[1]&&(s=decodeURIComponent(o[1])))}if(""===s){const t=new URL(e);s=t.pathname.split("/").pop()}if(""===s){const o=new URL(e);let l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),s="PastedFile"+Date.now()+t+"."+l}const a=o.data,n=new File([a],s,{type:a.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 Et(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const s=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),l=btoa(String.fromCharCode(...s));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,Lt.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:l,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const a=i.data;if(console.log("Upload info:",a),a.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(a.needsLfs&&a.uploadAction){const{href:t,header:s}=a.uploadAction;if(s?.chunk_size)await this.uploadToHuggingFaceMultipart(e,a,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:s||{},body:e.file,signal:o.signal});if(!l.ok){const e=await l.text();throw new Error(`S3 upload failed: ${l.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,Lt.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:a.fullId,filePath:a.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:a.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(s){if("CanceledError"===s.name||"ERR_CANCELED"===s.code||"AbortError"===s.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",s),this.exceptionList.push(e),e.onError(s,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:s}=t,{href:l,header:i}=s,a=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${a}`);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,s=t*a,l=Math.min(s+a,e.file.size),n=e.file.slice(s,l);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(l,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const s=new Image,l=document.createElement("canvas"),i=l.getContext("2d");s.onload=()=>{l.width=s.width,l.height=s.height,i.drawImage(s,0,0),l.toBlob(l=>{if(l){const o=e.name,s=o.lastIndexOf("."),i=s>0?o.substring(0,s)+".webp":o+".webp",a=new File([l],i,{type:"image/webp"});a.uid=e.uid,t(a)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(s.src)},"image/webp",.92)},s.onerror=()=>{URL.revokeObjectURL(s.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},s.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),s=e.clientX-o.left,l=e.clientY-o.top;t.style.opacity="1",t.style.left=s+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const It=(0,z.A)(Dt,[["render",Ft],["__scopeId","data-v-37f80c81"]]);var Nt=It,Pt=o(732),Vt=o(33892),Wt=o(45130);const zt={class:"directory-suggestion-input",ref:"wrapperRef"},Bt={class:"suggestion-dropdown"},Ht={class:"suggestion-list"},Xt=["title","onMousedown"];function Ot(e,t,o,s,l,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",zt,[(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",Bt,[(0,i.Lk)("ul",Ht,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,Wt.D$)(t=>n.selectItem(e),["prevent"])},(0,a.v_)(e.value),41,Xt))),128))])],512),[[Wt.aG,l.dropdownVisible&&l.suggestions.length>0]])],512)}var Qt={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),s=this.directoryChildrenMap[o];s&&s.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 s=this.normalizeDirectoryPath(e.path),l=Array.isArray(e.children)?e.children:[];t[s]=l.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),l.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Lt.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),s=o.split("/"),l=s[s.length-1]||"",i=s.slice(0,-1).filter(Boolean),a=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:l,parentPath:a}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),s=this.directoryChildrenMap[o]||[];if(!t)return s.slice(0,10).map(e=>({value:e.path}));const l=t.toLowerCase();return s.filter(e=>e.name.toLowerCase().startsWith(l)).slice(0,10).map(e=>({value:e.path}))}}};const jt=(0,z.A)(Qt,[["render",Ot],["__scopeId","data-v-0ff63416"]]);var qt=jt,Gt=o(6834);const Kt={class:"container"},Jt={class:"upload-home"},Yt={class:"toolbar-manage"},Zt={class:"toolbar"},eo={class:"header"},to={class:"title"},oo={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},so={class:"dialog-section"},lo={class:"section-header"},io={class:"section-title"},ao={class:"section-content"},no={class:"dialog-section"},ro={class:"section-header"},co={class:"section-title"},uo={class:"section-content"},po={class:"setting-item"},ho={class:"setting-label"},mo={key:0,class:"setting-item"},go={class:"setting-label"},fo={class:"dialog-action"},yo=["innerHTML"],bo={class:"dialog-footer"};function vo(e,t,o,n,r,d){const c=Gt.A,u=(0,i.g2)("font-awesome-icon"),p=l.S2,h=ut.c6,m=ut.Iy,g=ut.dW,f=qt,y=G.WK,b=Vt.A,v=s.R7,C=Pt.A,k=Nt,w=J.ll,F=J.MQ,L=q.qi,U=O.kZ,$=We,S=X.A,T=H;return(0,i.uX)(),(0,i.CE)("div",Kt,[(0,i.Lk)("div",Jt,[(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,a.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,a.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,a.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,a.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,a.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,a.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)(v,{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,a.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,a.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,a.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,a.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,a.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,a.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",Yt,[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-manage-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleOpenToolbar,circle:""},{default:(0,i.k6)(()=>[r.isToolBarOpen?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"times",class:"manage-icon",size:"lg"})):((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"bars",class:"manage-icon",size:"lg"}))]),_:1},8,["class","onClick"])]),(0,i.Lk)("div",Zt,[(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-button compress-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.openCompressDialog,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"compress-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.linkFormat"),placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-button link-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.openUrlDialog,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"link-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.manage"),placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-button config-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleManage,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"config-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.logout"),placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-button sign-out-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleLogout,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"sign-out-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled","content"])]),(0,i.bF)(C,{useConfigLink:!0}),(0,i.Lk)("div",eo,[(0,i.Lk)("h1",to,[(0,i.Lk)("a",oo,(0,a.v_)(d.ownerName),1),t[21]||(t[21]=(0,i.eW)(" ImgHub",-1))])]),(0,i.bF)(k,{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[6]||(t[6]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",so,[(0,i.Lk)("div",lo,[(0,i.Lk)("span",io,(0,a.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",ao,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[2]||(t[2]=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,a.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[22]||(t[22]=(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[23]||(t[23]=(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[24]||(t[24]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",no,[(0,i.Lk)("div",ro,[(0,i.Lk)("span",co,(0,a.v_)(e.$t("settings.customLink")),1),(0,i.bF)(v,{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",uo,[(0,i.Lk)("div",po,[(0,i.Lk)("span",ho,(0,a.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[3]||(t[3]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",mo,[(0,i.Lk)("span",go,(0,a.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[4]||(t[4]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",fo,[(0,i.bF)(p,{type:"primary",onClick:t[5]||(t[5]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[7]||(t[7]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[8]||(t[8]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[9]||(t[9]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[10]||(t[10]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[11]||(t[11]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[12]||(t[12]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[13]||(t[13]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[14]||(t[14]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[15]||(t[15]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[16]||(t[16]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[17]||(t[17]=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[19]||(t[19]=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",bo,[(0,i.bF)(p,{type:"primary",onClick:t[18]||(t[18]=e=>r.showAnnouncementDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("upload.announcementAck")),1)]),_:1})])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,yo)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[20]||(t[20]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var Co=o(46638),ko=o(48903),wo=o(90144),Fo=o(62388),Lo={name:"UploadHome",mixins:[ko.A],data(){return{selectedUrlForm:(0,wo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,isToolBarOpen:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,showAnnouncementDialog:!1,announcementContent:"",showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Fo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,$t.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",!1,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto";const o=localStorage.getItem("visitedUploadHome"),s=this.userConfig?.announcement;!o&&s&&(this.announcementContent=s,this.showAnnouncementDialog=!0,localStorage.setItem("visitedUploadHome","true"))},components:{UploadForm:Nt,Footer:X.A,ToggleDark:Gt.A,Logo:Pt.A,UploadHistory:H,UploadSettingsDialog:We,DirectoryTreePicker:Vt.A,DirectorySuggestionInput:qt},methods:{async fetchAvailableChannels(){try{const e=await Lt.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,s=this.availableChannels[this.uploadChannel]||[];t&&s.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&s.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,Fo.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(){Lt.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)},handleOpenToolbar(){this.isToolBarOpen=!this.isToolBarOpen,setTimeout(()=>{const e=document.querySelectorAll(".toolbar-button");e.forEach(e=>{e.style.pointerEvents=this.isToolBarOpen?"auto":"none"})},300)},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){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,Co.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,Co.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.announcementContent=e,this.showAnnouncementDialog=!0):this.$message.info(this.$t("upload.noAnnouncement"))},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const Uo=(0,z.A)(Lo,[["render",vo],["__scopeId","data-v-f50dcc42"]]);var $o=Uo},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return l}});var s=o(46638);function l(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:s.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:s.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:s.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:s.Ay.global.t("validation.consecutiveSlashNotAllowed")};const l=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return l.test(e)?{valid:!1,error:s.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 a}});o(44114);var s=o(25507),l=o(16915);let i=!1;async function a(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,s.A.commit("setAdminLoggedIn",!1),l.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)},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=365.ae007b9b.js.map \ No newline at end of file diff --git a/frontend-dist/js/365.ae007b9b.js.gz b/frontend-dist/js/365.ae007b9b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a8e65016b1c286473e099e187a25ad2af7c828c4 GIT binary patch literal 24810 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

6dVhuRuAU@dHSQY}AuyY#8R!UBTS+4Kt^rh_Ocl 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/365.ae007b9b.js.map b/frontend-dist/js/365.ae007b9b.js.map new file mode 100644 index 00000000..59678043 --- /dev/null +++ b/frontend-dist/js/365.ae007b9b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/365.ae007b9b.js","mappings":"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","sources":["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/components/upload/UploadHistory.vue?61df","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?f394","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?d2e4","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?f120","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?be1c","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?728c","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\"\n }, {\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\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/esnext.json.parse.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n 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=550797ce&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=550797ce&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-550797ce\"]])\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_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\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_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"channel-icon\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"channel-icon\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"channel-icon\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"comments\",\n class: \"channel-icon\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\",\n class: \"channel-icon\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"webdav\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"channel-icon\"\n }), _cache[18] || (_cache[18] = _createElementVNode(\"span\", null, \"WD\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createElementVNode(\"span\", _hoisted_30, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"span\", _hoisted_38, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","export default {\n name: 'UploadSettingsDialog',\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=23f532c8\"\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=4848c2b0&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=4848c2b0&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-4848c2b0\"]])\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\",\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\",\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.array-buffer.detached.js\";\nimport \"core-js/modules/es.array-buffer.transfer.js\";\nimport \"core-js/modules/es.array-buffer.transfer-to-fixed-length.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.json.parse.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport \"core-js/modules/web.url-search-params.delete.js\";\nimport \"core-js/modules/web.url-search-params.has.js\";\nimport \"core-js/modules/web.url-search-params.size.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\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 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', file.file.type);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + 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', file.file.type);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + 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', file.file.type);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + 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=37f80c81&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=37f80c81&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-37f80c81\"]])\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=0ff63416&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=0ff63416&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-0ff63416\"]])\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: \"toolbar-manage\"\n};\nconst _hoisted_4 = {\n class: \"toolbar\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_8 = {\n class: \"dialog-section\"\n};\nconst _hoisted_9 = {\n class: \"section-header\"\n};\nconst _hoisted_10 = {\n class: \"section-title\"\n};\nconst _hoisted_11 = {\n class: \"section-content\"\n};\nconst _hoisted_12 = {\n class: \"dialog-section\"\n};\nconst _hoisted_13 = {\n class: \"section-header\"\n};\nconst _hoisted_14 = {\n class: \"section-title\"\n};\nconst _hoisted_15 = {\n class: \"section-content\"\n};\nconst _hoisted_16 = {\n class: \"setting-item\"\n};\nconst _hoisted_17 = {\n class: \"setting-label\"\n};\nconst _hoisted_18 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_19 = {\n class: \"setting-label\"\n};\nconst _hoisted_20 = {\n class: \"dialog-action\"\n};\nconst _hoisted_21 = [\"innerHTML\"];\nconst _hoisted_22 = {\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\", _hoisted_3, [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-manage-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleOpenToolbar,\n circle: \"\"\n }, {\n default: _withCtx(() => [!$data.isToolBarOpen ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"bars\",\n class: \"manage-icon\",\n size: \"lg\"\n })) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"times\",\n class: \"manage-icon\",\n size: \"lg\"\n }))]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button compress-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openCompressDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"compress-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button link-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openUrlDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"link-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.manage'),\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button config-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleManage,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"config-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.logout'),\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button sign-out-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleLogout,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"sign-out-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"a\", _hoisted_7, _toDisplayString($options.ownerName), 1), _cache[21] || (_cache[21] = _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[6] || (_cache[6] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $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[22] || (_cache[22] = _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[23] || (_cache[23] = _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[24] || (_cache[24] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _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_15, [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = $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[7] || (_cache[7] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[8] || (_cache[8] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[9] || (_cache[9] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[10] || (_cache[10] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[11] || (_cache[11] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[12] || (_cache[12] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[13] || (_cache[13] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[14] || (_cache[14] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[15] || (_cache[15] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[16] || (_cache[16] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[17] || (_cache[17] = $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[19] || (_cache[19] = $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_22, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[18] || (_cache[18] = $event => $data.showAnnouncementDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_21)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[20] || (_cache[20] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/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 isToolBarOpen: false,\n //是否打开工具栏\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是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', false, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n\n // 首次访问公告\n const visited = localStorage.getItem('visitedUploadHome');\n const announcement = this.userConfig?.announcement;\n if (!visited && announcement) {\n this.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n localStorage.setItem('visitedUploadHome', 'true');\n }\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n 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 handleOpenToolbar() {\n this.isToolBarOpen = !this.isToolBarOpen;\n // 等过渡动画结束,向active类添加pointer-events属性,使其可以点击\n setTimeout(() => {\n const buttons = document.querySelectorAll('.toolbar-button');\n buttons.forEach(button => {\n button.style.pointerEvents = this.isToolBarOpen ? 'auto' : 'none';\n });\n }, 300);\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === '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.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\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=f50dcc42&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=f50dcc42&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-f50dcc42\"]])\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"],"names":["t","e","module","exports","this","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","type","Image","onload","onerror","Error","src","document","createElement","href","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","target","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","size","accuracy","filter","sort","abs","pow","v","_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","onClick","$slots","undefined","error","icon","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","includes","children","label","windowWidth","innerWidth","computed","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","__exports__","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_el_tooltip","show","count","totalCount","content","circle","toggleViewMode","viewMode","clearHistory","historyList","onScroll","handleScroll","groupedHistory","group","date","items","item","time","isImage","url","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","formatTime","hasMore","loadingMore","spin","Boolean","allHistory","pageSize","currentPage","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","dialogWidth","uploadChannel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","Array","emits","set","style","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","components","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","immediate","$store","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","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","fileType","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","opacity","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","isArray","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","isToolBarOpen","handleOpenToolbar","openCompressDialog","openUrlDialog","handleManage","handleLogout","useConfigLink","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","announcementContent","showHistory","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","strict","valid","storeUploadFolder","userConfig","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","getters","useDarkMode","visited","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","$router","defaultValue","num","parseFloat","authType","withCredentials","buttons","querySelectorAll","button","pointerEvents","handleShowAnnouncement","info","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/365.ae007b9b.js.map.gz b/frontend-dist/js/365.ae007b9b.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..a1e3ccaf015de7fd66e7f206d346fba0d695089f GIT binary patch literal 67783 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 z

-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 WDaQ=MP7Eg!=l%y0wth?Eg#Z9`(H|ZF diff --git a/frontend-dist/js/51.16dca88f.js b/frontend-dist/js/51.6e7bf298.js similarity index 99% rename from frontend-dist/js/51.16dca88f.js rename to frontend-dist/js/51.6e7bf298.js index 46acfb35..977b9791 100644 --- a/frontend-dist/js/51.16dca88f.js +++ b/frontend-dist/js/51.6e7bf298.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[51],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},31051:function(e,t,a){a.r(t),a.d(t,{default:function(){return P}});var n=a(80047),i=(a(85331),a(99648),a(56768)),s=a(24232);const o={class:"whitelist-container"},r=["innerHTML"],l={class:"whitelist-content"},c={class:"back-button-wrapper"},d={class:"status-animation"},u={class:"status-icon"},g={class:"status-badge"},h={class:"status-info"},m={class:"status-title"},p={class:"status-description"},k={class:"status-actions"},b={class:"help-info"},y={class:"help-text"},v={class:"quick-links"};function I(e,t,a,I,f,B){const w=(0,i.g2)("font-awesome-icon"),C=n.S2;return(0,i.uX)(),(0,i.CE)("div",o,[(0,i.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,r),(0,i.Lk)("div",l,[(0,i.Lk)("div",c,[(0,i.bF)(C,{class:"back-button",onClick:B.goHome,circle:"",size:"large"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{icon:"home"})]),_:1},8,["onClick"])]),(0,i.Lk)("div",d,[(0,i.Lk)("div",u,[(0,i.bF)(w,{icon:"shield-alt",class:"shield-icon"}),(0,i.Lk)("div",g,[(0,i.bF)(w,{icon:"clock",class:"clock-icon"})])])]),(0,i.Lk)("div",h,[(0,i.Lk)("h1",m,(0,s.v_)(e.$t("whitelist.title")),1),(0,i.Lk)("p",p,(0,s.v_)(e.$t("whitelist.description")),1),(0,i.Lk)("div",k,[(0,i.bF)(C,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:B.goHome},{default:(0,i.k6)(()=>[(0,i.bF)(w,{icon:"home",class:"btn-icon"}),(0,i.eW)(" "+(0,s.v_)(e.$t("whitelist.goHome")),1)]),_:1},8,["onClick"]),(0,i.bF)(C,{size:"large",class:"action-btn secondary-btn",onClick:B.goBack},{default:(0,i.k6)(()=>[(0,i.bF)(w,{icon:"arrow-left",class:"btn-icon"}),(0,i.eW)(" "+(0,s.v_)(e.$t("whitelist.goBack")),1)]),_:1},8,["onClick"])]),(0,i.Lk)("div",b,[(0,i.Lk)("p",y,(0,s.v_)(e.$t("whitelist.helpText")),1),(0,i.Lk)("div",v,[(0,i.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>B.goHome&&B.goHome(...e)),class:"quick-link"},[(0,i.bF)(w,{icon:"cloud-upload-alt"}),(0,i.eW)(" "+(0,s.v_)(e.$t("whitelist.uploadImage")),1)]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>B.refreshPage&&B.refreshPage(...e)),class:"quick-link"},[(0,i.bF)(w,{icon:"redo"}),(0,i.eW)(" "+(0,s.v_)(e.$t("whitelist.refreshPage")),1)])])]),t[2]||(t[2]=(0,i.Lk)("div",{class:"powered-by"},[(0,i.Lk)("p",null,[(0,i.eW)("Powered By: "),(0,i.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[3]||(t[3]=(0,i.Fv)('
',1))])}a(44114);var f=a(74354),B=a(60782),w=a(48903),C={name:"WhiteListOn",mixins:[w.A],computed:{...(0,B.L8)(["useDarkMode","userConfig"])},setup(){(0,f.u)({title:"White List On",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".whitelist-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()}}},W=a(71241);const x=(0,W.A)(C,[["render",I],["__scopeId","data-v-46822ec2"]]);var P=x},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\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;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const i=document.querySelector(t);this.prepareBackgroundContainer(i),n&&(!i||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(i));const s=document.getElementById("bg1"),o=document.getElementById("bg2");if(!s||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(s,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(s,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(s,r[0],t):a&&this.setupDefaultWallpaper(s,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,i=a(n?10732:7835);this.loadBackgroundImage(e,i,t)},loadBackgroundImage(e,t,a){e.style.zIndex=-1,e.style.opacity=0;const n=document.querySelector(a);this.prepareBackgroundContainer(n);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity})})},s=new Image;s.onload=()=>{e.src=t,i()},s.onerror=()=>{e.src=t,i()},s.src=t},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,i=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const s=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,i.style.zIndex=-1;const o=new Image;o.onload=()=>{i.src=s,setTimeout(()=>{i.style.opacity=this.bkOpacity,setTimeout(()=>{n.style.opacity=0},1200)},50)},o.src=s},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,i=n?e:t,s=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];i.style.zIndex=-2,s.style.zIndex=-1;const r=new Image;r.onload=()=>{s.src=o,setTimeout(()=>{s.style.opacity=this.bkOpacity,setTimeout(()=>{i.style.opacity=0},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,i=!1){const s=this.userConfig?.[e];if(!n||void 0!==s)return void this.reinitializeBackground(e,t,n,i);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,i);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,i)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); -//# sourceMappingURL=51.16dca88f.js.map \ No newline at end of file +//# sourceMappingURL=51.6e7bf298.js.map \ No newline at end of file diff --git a/frontend-dist/js/51.16dca88f.js.gz b/frontend-dist/js/51.6e7bf298.js.gz similarity index 98% rename from frontend-dist/js/51.16dca88f.js.gz rename to frontend-dist/js/51.6e7bf298.js.gz index df4b67c4380e5bed8d86af2e1ff0345e75efa1ac..afc8823ea7abe4eca9a8ca564a6a84d7d31b4615 100644 GIT binary patch delta 32 ocmZ21wM1$I53j^?Hp@5sxANsJ-+QL_JpRuVl0 diff --git a/frontend-dist/js/51.16dca88f.js.map b/frontend-dist/js/51.6e7bf298.js.map similarity index 99% rename from frontend-dist/js/51.16dca88f.js.map rename to frontend-dist/js/51.6e7bf298.js.map index 651000b3..0c6c3b30 100644 --- a/frontend-dist/js/51.16dca88f.js.map +++ b/frontend-dist/js/51.6e7bf298.js.map @@ -1 +1 @@ -{"version":3,"file":"js/51.16dca88f.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/WhiteListOn.vue?649a","webpack://sanyue_imghub/./src/views/WhiteListOn.vue","webpack://sanyue_imghub/./src/views/WhiteListOn.vue?05e5","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"whitelist-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"whitelist-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-title\"\n};\nconst _hoisted_10 = {\n class: \"status-description\"\n};\nconst _hoisted_11 = {\n class: \"status-actions\"\n};\nconst _hoisted_12 = {\n class: \"help-info\"\n};\nconst _hoisted_13 = {\n class: \"help-text\"\n};\nconst _hoisted_14 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n class: \"shield-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\",\n class: \"clock-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h1\", _hoisted_9, _toDisplayString(_ctx.$t('whitelist.title')), 1), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('whitelist.description')), 1), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goHome')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goBack')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", _hoisted_13, _toDisplayString(_ctx.$t('whitelist.helpText')), 1), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.uploadImage')), 1)]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.refreshPage')), 1)])])]), _cache[2] || (_cache[2] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[3] || (_cache[3] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'WhiteListOn',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'White List On',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.whitelist-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./WhiteListOn.vue?vue&type=template&id=46822ec2&scoped=true\"\nimport script from \"./WhiteListOn.vue?vue&type=script&lang=js\"\nexport * from \"./WhiteListOn.vue?vue&type=script&lang=js\"\n\nimport \"./WhiteListOn.vue?vue&type=style&index=0&id=46822ec2&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-46822ec2\"]])\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;\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;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n 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)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\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 })\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 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\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 \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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\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 \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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'\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'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","$t","type","goBack","href","args","refreshPage","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","zIndex","opacity","showImage","requestAnimationFrame","preload","Image","onload","src","onerror","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","transition","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/51.6e7bf298.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/WhiteListOn.vue?649a","webpack://sanyue_imghub/./src/views/WhiteListOn.vue","webpack://sanyue_imghub/./src/views/WhiteListOn.vue?05e5","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"whitelist-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"whitelist-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-title\"\n};\nconst _hoisted_10 = {\n class: \"status-description\"\n};\nconst _hoisted_11 = {\n class: \"status-actions\"\n};\nconst _hoisted_12 = {\n class: \"help-info\"\n};\nconst _hoisted_13 = {\n class: \"help-text\"\n};\nconst _hoisted_14 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n class: \"shield-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\",\n class: \"clock-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h1\", _hoisted_9, _toDisplayString(_ctx.$t('whitelist.title')), 1), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('whitelist.description')), 1), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goHome')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goBack')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", _hoisted_13, _toDisplayString(_ctx.$t('whitelist.helpText')), 1), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.uploadImage')), 1)]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.refreshPage')), 1)])])]), _cache[2] || (_cache[2] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[3] || (_cache[3] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'WhiteListOn',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'White List On',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.whitelist-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./WhiteListOn.vue?vue&type=template&id=46822ec2&scoped=true\"\nimport script from \"./WhiteListOn.vue?vue&type=script&lang=js\"\nexport * from \"./WhiteListOn.vue?vue&type=script&lang=js\"\n\nimport \"./WhiteListOn.vue?vue&type=style&index=0&id=46822ec2&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-46822ec2\"]])\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;\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;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n 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)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\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 })\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 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\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 \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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\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 \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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'\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'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","$t","type","goBack","href","args","refreshPage","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","zIndex","opacity","showImage","requestAnimationFrame","preload","Image","onload","src","onerror","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","transition","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/51.6e7bf298.js.map.gz b/frontend-dist/js/51.6e7bf298.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..be04bf15398a00d45f3374e251b3e83be50f2d9b GIT binary patch literal 9268 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 Wq#QF0J29L{ockYYO#|2Bg#ZA>hAgB2 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/572.7b80da62.js b/frontend-dist/js/572.7b80da62.js new file mode 100644 index 00000000..2414f0b7 --- /dev/null +++ b/frontend-dist/js/572.7b80da62.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[572],{4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},15616:function(e,t,a){"use strict";a(85331),a(97197)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return $}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(30650)),r=(a(19104),a(31802)),o=(a(13378),a(80047)),l=(a(99648),a(56768)),d=a(45130),c=a(24232);const h={class:"directory-tree-picker"},u={class:"tree-container"},f={key:0,class:"error-state"},m={class:"error-text"},p={class:"node-label"},g={class:"tree-container"},b={key:0,class:"error-state"},v={class:"error-text"},k={class:"node-label"};function y(e,t,a,y,_,w){const F=(0,l.g2)("font-awesome-icon"),C=o.S2,T=r.qk,$=s.Vc,S=n.pw,L=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[w.isDesktop?((0,l.uX)(),(0,l.Wv)($,{key:0,visible:_.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>_.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[_.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(_.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:_.treeData,props:_.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,_.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)(S,{modelValue:_.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>_.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[_.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(_.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:_.treeData,props:_.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,_.loading]])]),_:1},8,["modelValue","title"])],64))])}var _=a(457),w=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,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 _.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var $=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},37952:function(e,t,a){"use strict";a(85331),a(97197)},44813:function(e,t,a){a(44114),a(16573),a(78100),a(77936),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),_=b.length!==f.name.length,w=y.length!==v.length,F="",C="",T="",$=f.dir,S=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var x=0;t&&(x|=8),p||!_&&!w||(x|=2048);var D=0,E=0;$&&(D|=16),"UNIX"===r?(E=798,D|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,$)):(E=20,D|=function(e){return 63&(e||0)}(f.dosPermissions)),h=S.getUTCHours(),h<<=6,h|=S.getUTCMinutes(),h<<=5,h|=S.getUTCSeconds()/2,u=S.getUTCFullYear()-1980,u<<=4,u|=S.getUTCMonth()+1,u<<=5,u|=S.getUTCDate(),_&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),w&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var A="";return A+="\n\0",A+=i(x,2),A+=m.magic,A+=i(h,2),A+=i(u,2),A+=i(L.crc32,4),A+=i(L.compressedSize,4),A+=i(L.uncompressedSize,4),A+=i(g.length,2),A+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+A+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(E,2)+A+i(k.length,2)+"\0\0\0\0"+i(D,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,_=2*v+1,w=15,F=3,C=258,T=C+F+1,$=42,S=113,L=1,x=2,D=3,E=4;function A(e,t){return e.msg=l[t],t}function I(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function B(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,U(e.strm)}function W(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function R(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function O(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(O(e),0===e.lookahead&&t===d)return L;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,B(e,!1),0===e.strm.avail_out))return L;if(e.strstart-e.block_start>=e.w_size-T&&(B(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):(e.strstart>e.block_start&&(B(e,!1),e.strm.avail_out),L)}),new V(4,4,8,4,N),new V(4,5,16,8,N),new V(4,6,32,32,N),new V(4,4,16,16,M),new V(8,16,32,32,M),new V(8,16,128,128,M),new V(8,32,128,256,M),new V(32,128,258,1024,M),new V(32,258,258,4096,M)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=X,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),W(n,n.gzhead.time>>16&255),W(n,n.gzhead.time>>24&255),W(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),W(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(W(n,255&n.gzhead.extra.length),W(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(W(n,0),W(n,0),W(n,0),W(n,0),W(n,0),W(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),W(n,3),n.status=S);else{var f=g+(n.w_bits-8<<4)<<8;f|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(f|=32),f+=31-f%31,n.status=S,P(n,f),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending!==n.pending_buf_size));)W(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&U(e),n.pending+2<=n.pending_buf_size&&(W(n,255&e.adler),W(n,e.adler>>8&255),e.adler=0,n.status=S)):n.status=S),0!==n.pending){if(U(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&I(t)<=I(a)&&t!==c)return A(e,-5);if(666===n.status&&0!==e.avail_in)return A(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(O(e),0===e.lookahead)){if(t===d)return L;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(B(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(B(e,!1),0===e.strm.avail_out)?L:x}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(O(e),e.lookahead<=C&&t===d)return L;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(B(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(B(e,!1),0===e.strm.avail_out)?L:x}(n,t):i[n.level].func(n,t);if(m!==D&&m!==E||(n.status=666),m===L||m===D)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===x&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),U(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(W(n,255&e.adler),W(n,e.adler>>8&255),W(n,e.adler>>16&255),W(n,e.adler>>24&255),W(n,255&e.total_in),W(n,e.total_in>>8&255),W(n,e.total_in>>16&255),W(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),U(e),0=a.w_size&&(0===o&&(z(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,O(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))$[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)>3,f&=(1<<(m-=_<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,O,2,0),_=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(_-=4,U=8+(15&(y>>>=4)),0===a.wbits)a.wbits=U;else if(U>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),_=y=0,a.mode=3;case 3:for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.head&&(a.head.time=y),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),_=y=0,a.mode=4;case 4:for(;_<16;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.head&&(a.head.xflags=255&y,a.head.os=y>>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),_=y=0,a.mode=5;case 5:if(1024&a.flags){for(;_<16;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.length=y,a.head&&(a.head.extra_len=y),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),_=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<($=a.length)&&($=v),$&&(a.head&&(U=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,$,U)),512&a.flags&&(a.check=s(a.check,f,$,g)),v-=$,g+=$,a.length-=$),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for($=0;U=f[g+$++],a.head&&U&&a.length<65536&&(a.head.name+=String.fromCharCode(U)),U&&$>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}e.adler=a.check=p(y),_=y=0,a.mode=11;case 11:if(0===a.havedict)return e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=_,2;e.adler=a.check=1,a.mode=12;case 12:if(5===t||6===t)break e;case 13:if(a.last){y>>>=7&_,_-=7&_,a.mode=27;break}for(;_<3;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}switch(a.last=1&y,_-=1,3&(y>>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,_-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,_-=2;break;case 14:for(y>>>=7&_,_-=7&_;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if((65535&y)!=(y>>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,_=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if($=a.length){if(v<$&&($=v),k<$&&($=k),0===$)break e;i.arraySet(m,f,g,$,b),v-=$,g+=$,k-=$,b+=$,a.length-=$;break}a.mode=12;break;case 17:for(;_<14;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(a.nlen=257+(31&y),y>>>=5,_-=5,a.ndist=1+(31&y),y>>>=5,_-=5,a.ncode=4+(15&y),y>>>=4,_-=4,286>>=3,_-=3}for(;a.have<19;)a.lens[N[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,W={bits:a.lenbits},B=o(0,a.lens,0,19,a.lencode,0,a.work,W),a.lenbits=W.bits,B){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(E<16)y>>>=x,_-=x,a.lens[a.have++]=E;else{if(16===E){for(P=x+2;_>>=x,_-=x,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}U=a.lens[a.have-1],$=3+(3&y),y>>>=2,_-=2}else if(17===E){for(P=x+3;_>>=x)),y>>>=3,_-=3}else{for(P=x+7;_>>=x)),y>>>=7,_-=7}if(a.have+$>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;$--;)a.lens[a.have++]=U}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,W={bits:a.lenbits},B=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,W),a.lenbits=W.bits,B){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,W={bits:a.distbits},B=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,W),a.distbits=W.bits,B){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=_,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,_=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;D=(R=a.lencode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(D&&0==(240&D)){for(A=x,I=D,z=E;D=(R=a.lencode[z+((y&(1<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=A,_-=A,a.back+=A}if(y>>>=x,_-=x,a.back+=x,a.length=E,0===D){a.mode=26;break}if(32&D){a.back=-1,a.mode=12;break}if(64&D){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&D,a.mode=22;case 22:if(a.extra){for(P=a.extra;_>>=a.extra,_-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;D=(R=a.distcode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(0==(240&D)){for(A=x,I=D,z=E;D=(R=a.distcode[z+((y&(1<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=A,_-=A,a.back+=A}if(y>>>=x,_-=x,a.back+=x,64&D){e.msg="invalid distance code",a.mode=30;break}a.offset=E,a.extra=15&D,a.mode=24;case 24:if(a.extra){for(P=a.extra;_>>=a.extra,_-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if($=F-k,a.offset>$){if(($=a.offset-$)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}S=$>a.wnext?($-=a.wnext,a.wsize-$):a.wnext-$,$>a.length&&($=a.length),L=a.window}else L=m,S=b-a.offset,$=a.length;for(k<$&&($=k),k-=$,a.length-=$;m[b++]=L[S++],--$;);0===a.length&&(a.mode=21);break;case 26:if(0===k)break e;m[b++]=a.length,k--,a.mode=21;break;case 27:if(a.wrap){for(;_<32;){if(0===v)break e;v--,y|=f[g++]<<_,_+=8}if(F-=k,e.total_out+=F,a.total+=F,F&&(e.adler=a.check=a.flags?s(a.check,m,F,b-F):n(a.check,m,F,b-F)),F=k,(a.flags?y:p(y))!==a.check){e.msg="incorrect data check",a.mode=30;break}_=y=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(y!==(4294967295&a.total)){e.msg="incorrect length check",a.mode=30;break}_=y=0}a.mode=29;case 29:B=1;break e;case 30:B=-3;break e;case 31:return-4;case 32:default:return h}return e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=_,(a.wsize||F!==e.avail_out&&a.mode<30&&(a.mode<27||4!==t))&&T(e,e.output,e.next_out,F-e.avail_out)?(a.mode=31,-4):(w-=e.avail_in,F-=e.avail_out,e.total_in+=w,e.total_out+=F,a.total+=F,a.wrap&&F&&(e.adler=a.check=a.flags?s(a.check,m,F,e.next_out-F):n(a.check,m,F,e.next_out-F)),e.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0==w&&0===F||4===t)&&B===c&&(B=-5),B)},a.inflateEnd=function(e){if(!e||!e.state)return h;var t=e.state;return t.window&&(t.window=null),e.state=null,c},a.inflateGetHeader=function(e,t){var a;return e&&e.state?0==(2&(a=e.state).wrap)?h:((a.head=t).done=!1,c):h},a.inflateSetDictionary=function(e,t){var a,i=t.length;return e&&e.state?0!==(a=e.state).wrap&&11!==a.mode?h:11===a.mode&&n(1,t,i,0)!==a.check?-3:T(e,t,i,i)?(a.mode=31,-4):(a.havedict=1,c):h},a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(e,t,a){"use strict";var i=e("../utils/common"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],s=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,a,l,d,c,h,u){var f,m,p,g,b,v,k,y,_,w=u.bits,F=0,C=0,T=0,$=0,S=0,L=0,x=0,D=0,E=0,A=0,I=null,z=0,U=new i.Buf16(16),B=new i.Buf16(16),W=null,P=0;for(F=0;F<=15;F++)U[F]=0;for(C=0;Cv?(y=W[P+h[C]],I[z+h[C]]):(y=96,0),f=1<>x)+(m-=f)]=k<<24|y<<16|_,0!==m;);for(f=1<>=1;if(0!==f?(A&=f-1,A+=f):A=0,C++,0==--U[F]){if(F===$)break;F=t[a+h[C]]}if(S>>7)]}function W(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function N(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=O(s[o]++,o))}}function M(e){var t;for(t=0;t>1;1<=a;a--)X(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],X(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,X(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?Q(e,t,a,i):4===e.strategy||o===r?(P(e,2+(i?1:0),3),K(e,T,$)):(P(e,4+(i?1:0),3),function(e,t,a,i){var n;for(P(e,t-257,5),P(e,a-1,5),P(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*(L[a]+d+1)]++,e.dyn_dtree[2*B(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){P(e,2,3),R(e,b,T),function(e){16===e.bi_valid?(W(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;i\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},66885:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return sn}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(31802)),r=(a(13378),a(9267)),o=(a(15616),a(33892)),l=a(80047),d=(a(99648),a(39623)),c=(a(29092),a(56768)),h=a(24232);const u={class:"move-file-dialog-wrapper"},f={class:"move-dialog-content"},m={class:"move-path-input-container"},p={class:"move-dialog-hint"},g={class:"dialog-footer"},b={class:"move-drawer-content"},v={class:"move-path-section"},k={class:"move-path-label"},y={class:"move-path-input-row"},_={class:"move-dialog-hint"},w={key:0,class:"embedded-tree-section"},F={class:"tree-section-header"},C={class:"tree-section-title"},T={class:"tree-container"},$={key:0,class:"error-state"},S={class:"error-text"},L={class:"node-label"},x={class:"drawer-footer"};function D(e,t,a,D,E,A){const I=d.WK,z=(0,c.g2)("font-awesome-icon"),U=l.S2,B=o.A,W=r.kZ,P=s.qk,R=n.pw,O=i.A;return(0,c.uX)(),(0,c.CE)("div",u,[A.isDesktop?((0,c.uX)(),(0,c.Wv)(W,{key:0,modelValue:A.dialogVisible,"onUpdate:modelValue":t[1]||(t[1]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(U,{onClick:A.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(B,{"current-directory":a.currentDirectory,source:"admin",onSelect:A.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(U,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(R,{key:1,modelValue:A.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",x,[(0,c.bF)(U,{onClick:A.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(U,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>E.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",_,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),E.showTreePicker?((0,c.uX)(),(0,c.CE)("div",w,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(U,{text:"",onClick:t[4]||(t[4]=e=>E.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[E.treeError?((0,c.uX)(),(0,c.CE)("div",$,[(0,c.bF)(z,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",S,(0,h.v_)(E.treeError),1),(0,c.bF)(U,{type:"primary",size:"small",onClick:A.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(P,{key:1,ref:"treeRef",data:E.treeData,props:E.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:A.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(z,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",L,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,E.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var E=a(70797),A={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,E.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},I=a(71241);const z=(0,I.A)(A,[["render",D],["__scopeId","data-v-7aaa437c"]]);var U=z,B=a(45130);const W={class:"mobile-drawer-header"},P={class:"mobile-drawer-title"},R={class:"mobile-drawer-content"},O=["onClick"];function N(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(B.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,B.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",W,[(0,c.Lk)("span",P,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",R,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,O))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var M={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,I.A)(M,[["render",N],["__scopeId","data-v-768efd1f"]]);var j=V;const X={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function G(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(B.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,B.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",X,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var H={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const q=(0,I.A)(H,[["render",G],["__scopeId","data-v-62bb601c"]]);var Q=q,Y=a(4275),J=a(89559),ee=a(12687);a(18785);const te={class:"batch-tag-container"},ae={class:"tab-content"},ie={class:"tab-description"},ne={class:"input-section"},se={key:0,class:"suggestions-panel"},re=["onClick"],oe={class:"tags-to-add-section"},le={key:0,class:"tags-container"},de={key:1,class:"empty-message"},ce={class:"action-buttons"},he={class:"tab-content"},ue={class:"tab-description"},fe={key:0,class:"common-tags-section"},me={class:"tags-container"},pe={key:1,class:"empty-message"},ge={class:"tab-content"},be={class:"tab-description"},ve={class:"action-buttons"};function ke(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=Y.v$,g=J.KR,b=Y.q,v=r.kZ;return(0,c.uX)(),(0,c.Wv)(v,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",te,[(0,c.bF)(b,{modelValue:n.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>n.activeTab=e),type:"border-card"},{default:(0,c.k6)(()=>[(0,c.bF)(p,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("p",ie,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",ne,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,B.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",se,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,re))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",oe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",de,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",ce,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:0===n.tagsToAdd.length},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",he,[(0,c.Lk)("p",ue,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",fe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",pe,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ge,[(0,c.Lk)("p",be,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(g,{title:e.$t("batchTag.clearWarningTitle"),type:"warning",description:e.$t("batchTag.clearWarningDesc"),closable:!1,style:{"margin-bottom":"20px"},center:""},null,8,["title","description"]),(0,c.Lk)("div",ve,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading"])])])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1},8,["title","modelValue","width","onClose"])}a(44114),a(61701),a(33110);var ye=a(51219),_e=a(12933),we={name:"BatchTagDialog",props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"600px"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},methods:{resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add"},async loadCommonTags(){if(0!==this.selectedFilesOnly.length)try{const e=this.selectedFilesOnly.map(e=>(0,E.A)(`/api/manage/tags/${encodeURIComponent(e.name)}`,{method:"GET"})),t=await Promise.all(e),a=[];for(const i of t)if(i.ok){const e=await i.json();a.push(e.tags||[])}a.length>0?this.commonTags=a[0].filter(e=>a.every(t=>t.includes(e))):this.commonTags=[]}catch(e){console.error("Error loading common tags:",e),ye.nk.error(this.$t("batchTag.loadCommonTagsFailed"))}else this.commonTags=[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ye.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.addFailed"));ye.nk.success(this.$t("batchTag.addSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),ye.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ye.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();if(!(e.success||e.updated>0))throw new Error(this.$t("batchTag.removeFailed"));ye.nk.success(this.$t("batchTag.removeSuccess",{count:e.updated})),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}},handleClearAllTags(){_e.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{ye.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.clearFailed"));ye.nk.success(this.$t("batchTag.clearSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),ye.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const Fe=(0,I.A)(we,[["render",ke],["__scopeId","data-v-ec3adcfc"]]);var Ce=Fe,Te=a(813);a(34896);const $e={class:"tag-management-container"},Se={class:"input-section"},Le={key:0,class:"suggestions-panel"},xe=["onClick"],De={class:"current-tags-section"},Ee={key:0,class:"tags-container"},Ae={key:1,class:"empty-message"},Ie={class:"popular-tags-section"},ze={key:0,class:"tags-container"},Ue={key:1,class:"empty-message"},Be={key:2,class:"empty-message"},We={class:"dialog-footer"};function Pe(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=(0,c.g2)("Loading"),g=Te.tk,b=r.kZ;return(0,c.uX)(),(0,c.Wv)(b,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",We,[(0,c.bF)(u,{onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",$e,[(0,c.Lk)("div",Se,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,B.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,xe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",De,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ee,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ae,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",Ie,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",ze,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,onClick:t=>s.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",Ue,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.eW)(" "+(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",Be,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))])])]),_:1},8,["title","modelValue","width","onClose"])}var Re=a(57477),Oe={name:"TagManagementDialog",components:{Loading:Re.Loading},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"500px"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},methods:{async loadFileTags(){try{const e=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),ye.nk.error(this.$t("tagManagement.loadFailed"))}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,E.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ye.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[e]})});if(!t.ok){const e=await t.json();throw new Error(e.message||this.$t("tagManagement.addFailed"))}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,ye.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),ye.nk.error(t.message||this.$t("tagManagement.addFailed"))}}},async handleRemoveTag(e){try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],ye.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("tagManagement.removeFailed"))}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const Ne=(0,I.A)(Oe,[["render",Pe],["__scopeId","data-v-689f94e2"]]);var Me=Ne,Ve=a(55558),je=(a(10456),a(66810)),Xe=(a(34396),a(4885),a(82006)),Ke=(a(98642),a(63003),a(59869)),Ze=(a(70415),a(73565),a(57009));a(78450);const Ge={class:"detail-actions"},He={class:"preview-section"},qe={class:"preview-content"},Qe=["src"],Ye=["src"],Je={key:1},et={key:1},tt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},at={key:1,style:{color:"#909399"}},it={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},nt={key:1,style:{color:"#909399"}};function st(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=Ze.Zq,b=Ke.MF,v=ee.u,k=Ke.TS,y=Xe.xE,_=Xe.US,w=r.kZ;return(0,c.uX)(),(0,c.Wv)(w,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[25]||(t[25]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ge,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"user-plus",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",He,[(0,c.Lk)("div",qe,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,Qe)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Ye)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Je,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",et,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",tt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",at,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",it,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",nt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(w,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[24]||(t[24]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[22]||(t[22]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[23]||(t[23]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(_,{onSubmit:t[21]||(t[21]=(0,B.D$)(()=>{},["prevent"]))},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1})]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const rt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ot(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:rt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var lt={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{ye.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){if(this.fileLink){const e=this.fileLink.replace(/\?from=admin$/,"");window.open(e,"_blank")}},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();ye.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ye.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=ot(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(this.validateRenameInput(),this.renameValidation.valid){this.renameSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();ye.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),ye.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const dt=(0,I.A)(lt,[["render",st],["__scopeId","data-v-1f787098"]]);var ct=dt,ht=a(54880),ut=(a(4318),a(77815)),ft=(a(72907),a(78507));a(213);const mt={class:"list-col list-col-checkbox"},pt=["src"],gt=["src"],bt=["title"],vt={class:"filename-start"},kt={class:"filename-end"},yt={class:"list-col list-col-tags"},_t={key:1,class:"list-empty"},wt={class:"list-col list-col-channel"},Ft={class:"list-col list-col-channel-name"},Ct={key:0,class:"channel-name-box"},Tt={key:1,class:"list-empty"},$t={class:"list-col list-col-address"},St={key:0,class:"address-box"},Lt={key:1,class:"list-empty"},xt={class:"list-col list-col-size"},Dt={class:"list-col list-col-date"},Et={class:"list-col list-col-actions"};function At(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=ft.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[9]||(t[9]=t=>e.$emit("touchstart",t)),onTouchend:t[10]||(t[10]=t=>e.$emit("touchend",t)),onTouchmove:t[11]||(t[11]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",mt,[(0,c.Lk)("span",{class:(0,h.C4)(["custom-checkbox",{checked:n.localSelected}]),onClick:t[0]||(t[0]=(0,B.D$)((...e)=>s.toggleSelect&&s.toggleSelect(...e),["stop"]))},[n.localSelected?((0,c.uX)(),(0,c.Wv)(r,{key:0,icon:"check",class:"check-icon"})):(0,c.Q3)("",!0)],2)]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[1]||(t[1]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(r,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,pt)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,gt)):((0,c.uX)(),(0,c.Wv)(r,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[2]||(t[2]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",vt,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",kt,(0,h.v_)(s.fileNameEnd),1)],8,bt)]),(0,c.Lk)("div",yt,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",_t,"-"))]),(0,c.Lk)("div",wt,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",Ft,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",Ct,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",Tt,"-"))]),(0,c.Lk)("div",$t,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",St,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Lt,"-"))]),(0,c.Lk)("div",xt,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Dt,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Et,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(o,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,B.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(r,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(r,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(o,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(r,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,B.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(r,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(r,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(o,{content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[8]||(t[8]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(r,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var It={name:"FileListItem",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{toggleSelect(){this.localSelected=!this.localSelected,this.$emit("update:selected",this.localSelected)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const zt=(0,I.A)(It,[["render",At],["__scopeId","data-v-3ef86404"]]);var Ut=zt,Bt=a(70683),Wt=(a(95385),a(98469));a(38736);const Pt={class:"file-short-info"},Rt={key:0,class:"success-tag"},Ot={key:1,class:"fail-tag"},Nt={key:2,class:"success-tag"},Mt={key:3,class:"primary-tag"},Vt={key:0,style:{"margin-left":"2px"}},jt={key:0,class:"skeleton-wrapper"},Xt={class:"error-text"},Kt=["src"],Zt={class:"error-text"},Gt={key:3,class:"file-preview"},Ht={class:"card-bottom-overlay"},qt={class:"file-name-row"},Qt={class:"file-name"},Yt={class:"action-bar"},Jt={class:"action-bar-left"},ea={class:"action-bar-right"};function ta(e,t,a,i,n,s){const r=Wt.dI,o=(0,c.g2)("font-awesome-icon"),l=Ze.Zq,d=ft.R7,u=Bt.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",Pt,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Rt,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Ot,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",Nt,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",Mt,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",Vt," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",jt)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",Xt,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,Kt),[[B.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,B.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",Zt,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",Gt,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",Ht,[(0,c.Lk)("div",qt,[(0,c.Lk)("span",Qt,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",Yt,[(0,c.Lk)("div",Jt,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,B.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",ea,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,B.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var aa={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const ia=(0,I.A)(aa,[["render",ta],["__scopeId","data-v-efb50eda"]]);var na=ia;const sa={class:"card-bottom-overlay"},ra={class:"file-name-row"},oa={class:"file-name"},la={key:0,class:"action-bar"},da={class:"action-bar-right"};function ca(e,t,a,i,n,s){const r=Wt.dI,o=(0,c.g2)("font-awesome-icon"),l=ft.R7,d=Bt.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",sa,[(0,c.Lk)("div",ra,[(0,c.Lk)("span",oa,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",la,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",da,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var ha={name:"FolderCard",props:{name:{type:String,required:!0},selected:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","enter","copy","move","delete","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected}},computed:{folderName(){const e=this.name.split("/").filter(Boolean);return e[e.length-1]||this.name}},watch:{selected(e){this.localSelected=e}}};const ua=(0,I.A)(ha,[["render",ca],["__scopeId","data-v-41b1a7c0"]]);var fa=ua;function ma(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('
',10)])]))),128)):(0,c.Q3)("",!0)}var pa={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const ga=(0,I.A)(pa,[["render",ma],["__scopeId","data-v-5060702c"]]);var ba=ga,va=a(81095),ka=(a(77128),a(62086)),ya=(a(40670),a(88830),a(23597),a(49187),a(77788));a(72099);const _a={class:"el-dropdown-link filter-trigger"},wa={class:"filter-section"},Fa={class:"filter-title"},Ca={class:"filter-options"},Ta={class:"filter-section"},$a={class:"filter-title"},Sa={class:"filter-options"},La={class:"filter-section"},xa={class:"filter-title"},Da={class:"filter-options"},Ea={class:"filter-section"},Aa={class:"filter-title"},Ia={class:"filter-options"},za={class:"filter-section"},Ua={class:"filter-title"},Ba={class:"filter-options"},Wa={key:0,class:"filter-section"},Pa={class:"filter-title"},Ra={class:"filter-options"},Oa={key:0,class:"channel-divider"},Na={class:"channel-group-title"},Ma={class:"filter-actions"};function Va(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=ya.z_,d=Wt.dI,u=Wt.o5,f=l.S2,m=ka.Iy,p=ka.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",wa,[(0,c.Lk)("div",Fa,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",Ca,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ta,[(0,c.Lk)("div",$a,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",Sa,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",La,[(0,c.Lk)("div",xa,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",Da,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ea,[(0,c.Lk)("div",Aa,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Ia,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",za,[(0,c.Lk)("div",Ua,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Ba,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",Wa,[(0,c.Lk)("div",Pa,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Ra,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",Oa)):(0,c.Q3)("",!0),(0,c.Lk)("div",Na,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",Ma,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",_a,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588),a(18237);var ja={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const Xa=(0,I.A)(ja,[["render",Va],["__scopeId","data-v-c3aeeea0"]]);var Ka=Xa,Za=a(97247);const Ga={class:"container"},Ha={class:"header-content"},qa={class:"search-area"},Qa={class:"search-card"},Ya={class:"actions"},Ja={class:"el-dropdown-link"},ei={class:"el-dropdown-link"},ti={class:"el-dropdown-link"},ai={class:"breadcrumb-container"},ii={class:"mobile-directory-path"},ni={class:"breadcrumb desktop-only"},si=["title"],ri={key:0,class:"content",ref:"cardContainerRef"},oi={key:1,class:"empty-state"},li={class:"empty-text"},di={class:"empty-hint"},ci={key:1,class:"list-view",ref:"listContainerRef"},hi={class:"list-header"},ui={class:"list-col list-col-checkbox"},fi={class:"list-col list-col-preview"},mi={class:"list-col list-col-name"},pi={class:"list-col list-col-tags"},gi={class:"list-col list-col-channel"},bi={class:"list-col list-col-channel-name"},vi={class:"list-col list-col-address"},ki={class:"list-col list-col-size"},yi={class:"list-col list-col-date"},_i={class:"list-col list-col-actions"},wi={key:1,class:"empty-state list-empty"},Fi={class:"empty-text"},Ci={class:"empty-hint"},Ti={class:"pagination-container"},$i={class:"pagination-center"},Si={class:"pagination-right"},Li={class:"page-total"},xi={class:"page-jump"},Di={class:"dialog-section"},Ei={class:"section-header"},Ai={class:"section-title"},Ii={class:"section-content"},zi={class:"dialog-section"},Ui={class:"section-header"},Bi={class:"section-title"},Wi={class:"section-content"},Pi={class:"setting-item"},Ri={class:"setting-label"},Oi={key:0,class:"setting-item"},Ni={class:"setting-label"},Mi={class:"dialog-action"};function Vi(e,t,a,i,n,s){const o=Za.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=Ka,p=ka.c6,g=ka.Iy,b=ka.dW,v=ft.R7,k=ht.bZ,y=va.WZ,_=va.vp,w=ba,F=fa,C=na,T=Ut,$=ut.aQ,S=l.S2,L=ht.ZO,x=ht.lX,D=ct,E=je.ll,A=je.MQ,I=Ve.qi,z=r.kZ,W=Me,P=Ce,R=Q,O=j,N=U;return(0,c.uX)(),(0,c.CE)("div",Ga,[(0,c.bF)(x,null,{default:(0,c.k6)(()=>[(0,c.bF)(k,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ha,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",qa,[(0,c.Lk)("div",Qa,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,B.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",Ya,[(0,c.bF)(b,{onCommand:s.sort,"hide-on-click":!1},{dropdown:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.bF)(p,{command:"dateDesc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByDateDesc")),1)]),_:1}),(0,c.bF)(p,{command:"nameAsc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByNameAsc")),1)]),_:1})]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",Ja,[(0,c.bF)(u,{icon:s.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.selectPage"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:s.selectPageIcon,class:"header-icon",onClick:s.handleSelectPage},null,8,["icon","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(b,{onCommand:s.handleBatchAction,"hide-on-click":!1,disabled:0===n.selectedFiles.length},{dropdown:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.bF)(p,{command:"copy"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"copy",class:"batch-action-item-icon"}),(0,c.eW)(" "+(0,h.v_)(e.$t("dashboard.copy")),1)]),_:1}),(0,c.bF)(p,{command:"delete"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"trash-alt",class:"batch-action-item-icon"}),(0,c.eW)(" "+(0,h.v_)(e.$t("dashboard.delete")),1)]),_:1}),(0,c.bF)(p,{command:"download"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"download",class:"batch-action-item-icon"}),(0,c.eW)(" "+(0,h.v_)(e.$t("dashboard.download")),1)]),_:1}),(0,c.bF)(p,{command:"move"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"file-export",class:"batch-action-item-icon"}),(0,c.eW)(" "+(0,h.v_)(e.$t("dashboard.move")),1)]),_:1}),(0,c.bF)(p,{command:"tagManagement"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"tags",class:"batch-action-item-icon"}),(0,c.eW)(" "+(0,h.v_)(e.$t("dashboard.tagManagement")),1)]),_:1}),(0,c.bF)(p,{command:"ban"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"ban",class:"batch-action-item-icon"}),(0,c.eW)(" "+(0,h.v_)(e.$t("dashboard.addToBlacklist")),1)]),_:1}),(0,c.bF)(p,{command:"white"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"user-plus",class:"batch-action-item-icon"}),(0,c.eW)(" "+(0,h.v_)(e.$t("dashboard.addToWhitelist")),1)]),_:1})]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",ei,[(0,c.bF)(u,{icon:"ellipsis-h",class:(0,h.C4)(["header-icon",{disabled:0===n.selectedFiles.length}])},null,8,["class"])])]),_:1},8,["onCommand","disabled"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.Lk)("span",ti,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:"card"===n.viewMode?e.$t("dashboard.listView"):e.$t("dashboard.cardView"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"card"===n.viewMode?"list":"th-large",class:"header-icon",onClick:s.toggleViewMode},null,8,["icon","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(L,{class:"main-container"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ai,[(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[3]||(t[3]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",ii,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",ni,[(0,c.bF)(_,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(y,{onClick:t[4]||(t[4]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(y,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,si)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",ri,[n.loading?((0,c.uX)(),(0,c.Wv)(w,{key:0,type:"card",count:15})):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",oi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",li,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",di,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(F,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)(C,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],512)):((0,c.uX)(),(0,c.CE)("div",ci,[(0,c.Lk)("div",hi,[(0,c.Lk)("div",ui,[(0,c.Lk)("span",{class:(0,h.C4)(["custom-checkbox",{checked:s.isSelectAll,indeterminate:s.isIndeterminate}]),onClick:t[5]||(t[5]=e=>s.handleSelectAllPage(!s.isSelectAll))},[s.isSelectAll?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"check-icon"})):s.isIndeterminate?((0,c.uX)(),(0,c.Wv)(u,{key:1,icon:"minus",class:"check-icon"})):(0,c.Q3)("",!0)],2)]),(0,c.Lk)("div",fi,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",mi,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",pi,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",gi,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",bi,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",vi,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",ki,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",yi,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",_i,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(w,{key:0,type:"list",count:15})):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",wi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Fi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Ci,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(T,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],512)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",Ti,[(0,c.Lk)("div",$i,[(0,c.bF)($,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(S,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Si,[(0,c.Lk)("span",Li,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",xi,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[6]||(t[6]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,B.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(S,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[23]||(t[23]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1})]),_:1}),(0,c.bF)(D,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[7]||(t[7]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[8]||(t[8]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[9]||(t[9]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[10]||(t[10]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[11]||(t[11]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[12]||(t[12]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(z,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[17]||(t[17]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Di,[(0,c.Lk)("div",Ei,[(0,c.Lk)("span",Ai,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",Ii,[(0,c.bF)(A,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[13]||(t[13]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(E,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(E,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[24]||(t[24]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(E,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[25]||(t[25]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(E,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[26]||(t[26]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(E,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[27]||(t[27]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(E,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",zi,[(0,c.Lk)("div",Ui,[(0,c.Lk)("span",Bi,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(v,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",Wi,[(0,c.Lk)("div",Pi,[(0,c.Lk)("span",Ri,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(I,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[14]||(t[14]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",Oi,[(0,c.Lk)("span",Ni,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[15]||(t[15]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",Mi,[(0,c.bF)(S,{type:"primary",onClick:t[16]||(t[16]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(W,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[18]||(t[18]=e=>n.showTagDialog=e),fileId:n.currentTagFile,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,c.bF)(P,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[19]||(t[19]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(R,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[20]||(t[20]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(O,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[21]||(t[21]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(N,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}a(81148),a(20116),a(13579),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698),a(14603),a(47566),a(98721);var ji=a(60782),Xi=a(44813),Ki=a.n(Xi),Zi=a(54047);a(58335);class Gi{constructor(){this.FILE_LIST_PATH="data/fileList.json"}getLocalFileList(){try{const e=localStorage.getItem(this.FILE_LIST_PATH);return e?JSON.parse(e):{files:[],directories:[]}}catch(e){return console.error("Error reading local file list:",e),{files:[],directories:[]}}}saveFileList(e){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(e)),!0}catch(t){return console.error("Error saving file list:",t),!1}}addFile(e){try{const t=this.getLocalFileList();return t.files.push(e),this.saveFileList(t)}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getLocalFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.saveFileList(t))}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getLocalFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.saveFileList(n)}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getLocalFileList();return t.files=t.files.filter(t=>t.name!==e),this.saveFileList(t)}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getLocalFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.saveFileList(t)}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getLocalFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,E.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ye.nk.warning("索引构建中,当前搜索和排序结果可能不准确,请稍后再试。"),this.saveFileList(o)}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getLocalFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,E.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.saveFileList(r)}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const Hi=new Gi;var qi=a(62388),Qi=a(48903),Yi=a(90144);function Ji(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function en(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function tn(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,Yi.KR)(!1),r=(0,Yi.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,Yi.BA)(i);return t[e]||void 0}function v(){const e=(0,Yi.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||A():u&&(z(),I())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,Yi.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function _(e){return e.shiftKey||e.ctrlKey||e.metaKey}function w(){const e=(0,Yi.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=en(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),L())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function $(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function S(){document.body.style.userSelect=g}function L(){const e=b();if(!e)return;const t=(0,Yi.BA)(e.containerRef);if(!t)return;const a=(0,Yi.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=Ji(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function x(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=_(e),w(),!d){const e=(0,Yi.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=en(o,o),$(),document.addEventListener("mousemove",D),document.addEventListener("mouseup",E)}}function D(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=en(o,t),L();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function E(e){s.value&&(T(),S(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function A(){u||(document.addEventListener("mousedown",x),u=!0)}function I(){u&&(document.removeEventListener("mousedown",x),u=!1)}function z(){s.value&&(T(),S(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function U(){k()}return(0,c.wB)(()=>(0,Yi.BA)(i),()=>{z(),k()}),(0,c.sV)(()=>{v()&&A(),window.addEventListener("resize",U)}),(0,c.xo)(()=>{z(),S(),T(),I(),window.removeEventListener("resize",U)}),{isDragging:s,selectionRect:r}}var an={name:"AdminDashBoard",mixins:[Qi.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortOption:"dateDesc",isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1}},components:{DashboardTabs:Za.A,TagManagementDialog:Me,BatchTagDialog:Ce,SkeletonLoader:ba,FileCard:na,FolderCard:fa,FileListItem:Ut,FileDetailDialog:ct,MobileActionSheet:Q,MobileDirectoryDrawer:j,FilterDropdown:Ka,MoveFileDialog:U,LanguageSwitcher:Zi.A},setup(){const e=(0,Yi.KR)(null),t=(0,Yi.KR)(null),a=(0,Yi.KR)("card"),i=(0,Yi.KR)([]),{isDragging:n,selectionRect:s}=tn({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{...(0,ji.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortIcon(){return"dateDesc"===this.sortOption?"sort-amount-down":"sort-alpha-up"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},selectPageIcon(){return this.selectPage?"check-square":this.selectedPageFiles?"minus-square":"square"},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.userConfig?.urlPrefix||`${document.location.origin}/file/`},isSelectAll:{get(){return this.paginatedTableData.length>0&&this.paginatedTableData.every(e=>e.selected)},set(e){this.paginatedTableData.forEach(t=>t.selected=e)}},isIndeterminate(){const e=this.paginatedTableData.filter(e=>e.selected).length;return e>0&&ee.selected&&!this.selectedFiles.includes(e))),this.selectedFiles=this.selectedFiles.filter(e=>e.selected),this.selectedFiles=this.selectedFiles.filter(t=>e.includes(t))},deep:!0},sortOption(e){localStorage.setItem("sortOption",e)},defaultUrlFormat(e){localStorage.setItem("defaultUrlFormat",e)},showdetailDialog(e){e&&(this.activeUrlTab=this.defaultUrlFormat||"originUrl")},customUrlPrefix(e){this.$store.commit("setAdminUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setAdminUrlSettings",{key:"useCustomUrl",value:e})},currentPath(e){this.tableData.forEach(e=>e.selected=!1)}},methods:{toggleViewMode(){this.viewMode="card"===this.viewMode?"list":"card",localStorage.setItem("viewMode",this.viewMode)},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,E.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),Hi.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,E.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),Hi.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await Hi.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},sort(e){this.sortOption=e},sortData(e){const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),a.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),a.sort((e,t)=>e.name.localeCompare(t.name))),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,qi.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,E.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();Hi.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,E.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();Hi.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(Ki()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await Hi.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=Hi.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await Hi.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},async handleTagsUpdated(e){const t=this.tableData.findIndex(e=>e.name===this.currentTagFile);-1!==t&&(this.tableData[t].metadata||(this.tableData[t].metadata={}),this.tableData[t].metadata.Tags=e,this.showdetailDialog&&this.detailFile?.name===this.currentTagFile&&(this.detailFile.metadata||(this.detailFile.metadata={}),this.detailFile.metadata.Tags=e))},async handleBatchTagsUpdated(){await this.refreshLocalFileList()},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)}};const nn=(0,I.A)(an,[["render",Vi],["__scopeId","data-v-f746277c"]]);var sn=nn},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); +//# sourceMappingURL=572.7b80da62.js.map \ No newline at end of file diff --git a/frontend-dist/js/572.7b80da62.js.gz b/frontend-dist/js/572.7b80da62.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..024f450ccc93285d5df1ca3e760201e53a032857 GIT binary patch literal 57528 zcmV(`K-0e;iwFP!000023hccLciXtND7?Pcxqn0EnxhgGq==I2*pv{hjAOSs%_Q?B zPNyAJ;{{8Q#hM~@NGOhD>HPL@ZM+DOlpoW_>HY3qoyH>G*x1a!_ zaPkuEaKC?i(tD&A%x}t19IPUfk!l_6Fut4f@w>x-=5RM`B#yU7Kf&wb#+? zhGpIkZ%hf1K1&l$qeNsa$o&nw3%ghqU|E)C?VMB2yd7SdiZY$EuiV?=wMkCWIcvxC zipAazU+?ec>cMWl)OT}J+s#lfRO3!AD89p&_!iwuXq*$ji{s995Bc6AO?aE$vOHa} zb~H;958+dic0Tp+1<5-9d4s))t`jsz@UH@UWLJ)7v)9vh>yq54zY}MswDt3(hhx?CNa!c?jLmB#&Sn zLXXAmZ)v(}M@gHfYj20|GqzwEOJ*z-Ah|h0zK_VOiTHYVgM2Sv)5ODifz>G5YVhsb zjKZKjoF=C*jgU{e5;ol_EbzSZ<~!Ns{SHsO9J-w%w8OH8kH14c>wK5TDbKN|8ujq~ z4u46bd83ODx@d}~2+!GqZem_H%BvLl{(daj;K^l2pzHX7QVTVpt8?U^<9oot&|_a` zF0 zvCzv`G>!{c-gXv@&z5gAB3xvQ?eP5ruwXwS-*nA7-*LY{BdFcU7|-rJ1jCskd>IBi ze2gca>d^yOqp)_TT*#dg;EXLK;rPfF9-dQ9!^;kQzoDGsb(XGkmGC3{#*!%9usbjG z)|4+j?5P>F+1E8q=53gCco1MueFL~*IBlpYbC%KdGLEj7ygl1w8B4fCef7~Ux}Y7E zW}t>^i7r6-eL80v(o34mV`frn!F&(hgiOwv?;hAEVhv6Q$e&0OD<*>Py(lln&pQAO zLP&MUyQ$eBHbSzF1Q45#y+s<&S=LV1Eb&71Ww29aO7z6ZCXU4_i|=U_UDpM=@=iim zOrQtuIVb{?1|kJ(>eWCV2&DlZ?C~i=crtm1FFSEc=TUM!oyrFLvO!HwYcURXX52ad zgF-qDjT(wH&*<&L1gR$pQg2H9PN%~Vd3Dn zH*l87!Bvlvq7a-WeL29sI!&BPaF|HU6%_o6b4@Icy8o^ZgIS#BOzw!=h%ehqMgbi} z!nbym%-L5j?6W@R5sz6|M;LMzvsr4f^JvOQcnU7NNqPpdNsb_-FuCcW~#r6gQri2;UOwzwEv| zd5Q2jxrY&kp0iJWl-C@EiT7oAhH?Xb;#rhj8-~yGb~sNr*^KSU->hNe9{xh(Xij;W zg^awKm}HO6S5e|kJ5e%=H*=Qz4DEITJIn?0-sRr`uN@i;33?xelPOl9f@DESLeIly zTZQ+tWfaddmV}=EN3R2I~MK=0DIiDt=D*)a)2?5bSoi*X^R6 zy8^#@8cr*9vykNSp}EKsf76WmVn$_zhe^rq684o}M6(+?`05av&Dybda>h?(qkmw~ z9NstjJq_rom73YX4q2s}gtNJi?iGg8`TXn)OZdAe=PY5F?_~_mNKf`EY4b;sgm(Cf zEz*pAPDC?BBN-2|XawY-#Kyq10FyXjg4-DKX7fO-a>nzYBEIy!7akgO;=S-% zJmhd$fZuw%vsJ`>PcrZx<|?@)lY%3xW(Nej-436^$sP0tftFNWfavBFko6o-CSJx8 z!MNN_@x;5l%xCGEy@j(CRga@e)2Wohen&2LxIgHhJY5nDB5Du>500N& zX@`aU_Sv%L!QeRPS87pzFc5-c>IX-MFZ)8KeH?VV;>XJqDdi51gFrOa>kW=iMAqT) zv6O!wzI-Vr5*!Xrq^Mc&Lh$2ANudvqdZOXOlVcDYn=x>7FWAO3<2m6z+WA!>w~?kY zA7rT!x;H6_pWzgVLyu0fsr<#oFIbJ3$jhoADrvJBYod~||J+0w^E0@{LT;{ea+L)ys?Oqd1IB%H!*Ac#%pCQ?>8PA@@1CZHs+mKI%mZD;lrEH@6ImY zf4I0j|M2ajWar-p z;p9P7lMfKg_c|{&Jc@G<9wEeMzF9-h9y~jEufIQib9Vl_-@pBjKfL?l{f8g_-;bXz zKL7EjKmGYrK2$()E94Ip2J_{d)JU8}#~v!=snSC#@F*oa z+Dn{})!65RO_r_J6jQPsZN~B=>|*-^g;1t(l+$(PYC1f{@K>*T z@b=Pgax@wZw)EAj0gg#9T8#bRuu0Kq)Y~SnULA!;13V|a(PDhmZzk|Hlh0qdX!tev zGt@G_Q|otZ{hlMU+Oy7I(Eb03Br)`0GqFy-xypIw zckxoe6A?m|NNy8rQ@u^Z<)v{&b9OXnM9F%?aU^k9-kM6zdGP*o@^l zn}3SFF~TGRvPnwmT&B;US3{JZKKGsrG2r+=nMwGbJ7y2pAV#%Pd8%GL=G62CIOJLQw0}TRns^mlgL`k< znPrS}CSh`(r7Ke2Y-TCVs^=~SR3>0>sZ&B7TEd-by@w}&c99BW%Yw1MTd%2t9{?mz%YT|cr%a3N7+6-yu)5V96XXJiGucKM${iXYtu7_Q~ z?7_vz_e9->4F$Br23b9Vmj^~ISS`XUC62P6S1Kf;%I-<-nU@otI- zzlK4y2C6wYhBDL`1s7XmmV`S}nv#&}8HO$?`oYNC6cpFa7LmQ z9kO3YJ22x;Niqp@bB55 z&32~f(XPAdV75=(=4RuV6)!&f$UK{}zQ6SyD&Wiw?am2ztP?eWY>bkDaf< zw4#|Pk)#)2F;FYUDY@V6Xh+ah;{D|c=qm81OO{1E_hXzP92Yzj{F<>m7g~hQ1*d3` zi9h0bN=r9I=SrM>Dbe>wdXxJ0@bv{uXdf-oY;}?PDQ1GJLHGcqH}*gl@g`r|v@k1Y z7GOiaaxjxAh&0@OXECG6=k>mxRkq!CX@%V8tO3|f+I4`Tnv|Dy>fdMd79LJx_Jze^ zWsN%`eY-riqZ1x-um(@q76c3Zirx%JtmIBhNiF9SpEe&Di(eFnI=I zCa%Qgnx&};T4EH3ZjhH zWCj<$&W10JrKAR56L&A@6BW<=g?!CL_-bDnyQQM|7qZXz<&%>wi&jtMR9a+H9hCjhy${Bt~?gb|fDy0r@8+LJ-O%A&| zA^WD=t^ZD42$}qg-&L-Yr3C!0dbMQLJA>FgUr84_^1p7$F~aNZ_TaMFJhwhN--(t(Z;UXoA1 zrhUFR{e8O0av$O4Xhe?ia%(bvh>{IwI_uER`ov~wGS7YVqK7vo^?Vb@e`YlEQ9C#} z?&8g8L7!O4vJUO6HDk8s&OIL?KSLu1*q38;{7FogYb2WME+OYL-1=Q z4@sH0REd$lF~1c4;X(23qFa$s#xaw1T?|booLdR^Ksr9MS(?qmdFS1S)7S4V&)>c~ zyZrsx>o;c~Td!N!t#eTQGG$KB-d}tym5Tf`nE2~f6z!?IhC-3{9EAd4R*w#TUmOsK3ikdF2MhcU3#OPAK1Gj%;XFu<5%TM9OTc@ew(7nyk z$p>O+b!YKsGvLo=Hh<=DMOyHzc(Tr#WiyuW?Y4_4sf++e#OX^5N=pzJSEnzz1_rYH z@_Mw0WZ^WbWu?Jdiz~SfSzNLn_ZBe1GIX$-O-RQ+Zw1}%Z++U1+5ti@Xc%<6yB%m{ z+Q5O=eKwa1QDt81)~Pa`>Ke%tU7UME3G6ZwHJb;j&^*dOpl(RMWD^WVRR>VP+&a8P za)m6;jdluBp&+S&1z-`+@{I~&cU@=+716!Wa(2X1CXUT?yMOC+wd}LlY;y9nNI{sR zGE`~~#d+t=>xrt2t+w1@ zo7n;{!&A%slkVeDGe0Sw=89AB&D)P>rxzbS{`vCk{TuhdV{inTKU}Udm48y}luUPi z{p2yltbFi1ZLcP^0CCr7ov}5|*n9Ssm-nOEj_ZtliPBA8qTmV<xiuvEO0mVHW-Q;Vm|q%n#;!qMEBjFotwKZ0FxBy4krDUtLn^5{^&Lrs z&_KiW4<+0oWIo?B>GG*J=2fV}#5*jR`&Ms4^{F&8sc9s}1am2a1%Oq({~jD9c_S=jQ>L6qUH+jd*mf=ayxW{z?;7f(fFDdbh>y8r>SS6XqY=~U%D zoNk0pNmj09u>lMzosxq>EUT{Mn$p0{9JJ{`SY1HdXnZN@b@@Px)7i~Fxeer5&>ohE zpdP#;fXpU&474|)zVAG(%!KShv%BE{yS#4L>*Kw=vy^Qp&N=J{xZt{_6#3-I4+otW zmYl)TFex$8LuyvMBHEGdE2+77-sAQuk16JzwK=fM1W)M7z+$n^BF)a|Z0TD~!`oP^ zCB~c7--@?ejuR41=u}`%QhCLsEw2&f4Nx+o4XHn1O}Qb}BpU~wt(rqSsS=afQW);M z?BSHu7E=PY?UvW3-tTZs1SbNfy+Wihq@BysD_(-r>OfNd^#B1o+s!=!a!d{!YCm=0K}T_mQmFPecgwL*}{ z1>L8M8d_(Uo2TeC@5wd(79{?#2agx z(G}w?%Nt9YH?9~1#Wv6~o`Z(=e|-8mS~vQgE^e%2MswDfE!pg*!I!MDSzl*#&KlR7 zXwEvGI?Wg2s`%mRuWZKE>x>VK7BbJp#T$!A$`P|HY2us*h3Y|M=#bDI7o^G4 zC5!h6NT2X&v*`mZBI?uNJKOF2$kKZd`#%+<6{@)$ZEds^-#QGN7f)j<_7y^+D4t+pIa8H@-#dM%Xz0c-rq-$|fiTbyid`m1wu`0lK&}XjJD!B2F^*xgf>& z@--CU|k?_>v`lRbN)Bm2g8nsMwoux23zil_p6=;fJ9qj+AsnFn#cP zu2%pR8nxYFUMSM$trnv4IxzR6Nj@#^aYYZnrBPHj7~N_@n7R7oB#~oKO1rtOw5#ut zlWdA(l8S<`%AYu#-jSJ%lLO2WeEM^oI_Qq?<$FCm%k9Cht~}6F`P2bNd@5K4eZI?% z)CKYr*Z2K#IXx7IN%{OwA3Oik()nM)cJAsH><|{CgZBtEW7OFsIbE<1S#%B73PNrg z8@3>^uD@#N&8Bau8CdxOp?0+jNHzrwgTaG3NfwW6JqEf|H|+O;!uOuRHM=B!uV#{= z&bcH>i7l*tFQ%b)w$Ns6&^cXmmVr2^VLjk)*0R)@G67S`S5Y!oG=-yGR0w`^oB+dS zJtP-J_uRmSzPifDLJaBKJbvJkUC1d|ogfkIzXZDy1ot{gSZLpp_uSiy7Ao-R78miI z0|qgry32J^F67>=ZO|CFh{yl@Nq6_;k-K}%Dvyi1bm(-iPd?dyarotm<$mPKSlkkW zCu`nijLzv*%-XVT4|P7OlwtWz8xH;g$F=Ry<&wo~mJz0|asuJ%@k(wJCGy#B6J6JU zoi>{k(0wm*B^_zNq_Xy+km^OS;vn_5H+Hd=5*#6Huiqs=qpFReMp+2Eij_&!%2@QL z4AC$+f)#m8_6Mc=Hf zLZTI6sF-Y4S1j|0?!2l;{2RDt$#rh%J6U73$+@_cUx6utY~(k^Y0hp{Z;Iikah%R% ziX*5m<{?UyMk>+@$)Vk<>59YA75iO;`3^^UO&@NXx(JXatXaCc@~qh`E@K6FI%%>e zLm>E`Jc(9dTL*e|!Qr!1SPa{b6Ovo%mK?4dx#oze6i%R_r&rr`p&nT+u`YFaGr8XVdo;OMet@~6^=x-S5`Az(=2Ci6JE{2;3BQ2k>IF*JZRRp zE)*rZf_HJ49jMi;Cb~7E46e~+?K9D_!w)r^enfz~N6qH7MFb;b`L-kl1W3|s9)KNb zs?<1(Pr-o?X|ri`XSJ&5cI&4`>vM^)&utmVyxHuMI@SK|RxxS^@VG0AD3OSmU!hW3 zG~UHR1mP~ORCe}oV&);|btQE;uZTOG?bi9u#ys4Z`_QJi4{;=Ha~5K+hk5xL0~o9a zhSNP47d;C(pf6&tgS6lZr?wbo!lvZQPF(`5tN1f@GwobCiQfzIU)<6yxrfwbcu_3L z2PIs=Ga~>nNlTfe86ppXp29(ewkV&BaqZDnTB+rW>XjH;&L&h)oCHE*<`*jp2dqO=B3kBV%Wr(-^!7c zp8|xck8B0H6^vUXUeH9NtYUs0E&KooXITcU59eZZErwlef%;-Xz~2B4$U!EB3Z8}* zXPIAzvj<$B6iJ7(oJ$87Qk-GKxfp<%Jm^G-=i_l6%C~sw)Thkz957@J#fw8Ii_oe?|Gw!6}sP6&XuTmK;n zQL2Kl^lC7VGBjr~iB>3!NrHyngFkl)DHY!)pdHi!40TnaTm z$)^O>C;~qh*=+<*G=!SBQQ-VD#;)>tB|VOk&DTn5zDd&DO%f$a-}-otXzT3d-aem3l#JSIieoyte)p%OU)DOVW93cU?mQLWHEHToJv7;sGZ z^vOaY&`NvF>lEuvC-T7m#Q(6I}Q8%pzX_1@OhqT1Fe`%Y^8>2`U z1RxN5oy<=KxvYi3KVbgQDIkwOD8xbFkz&%FHk(xZ3Z~6wB!2a#&1NEg^{3UbyS7rS zu)r4wfYe`wdkWmXHS;!^+PsiJM2qPbm?E|905x!3V#|_a6^Wph{)qh1*)(AwlrWB; z|Nc?hZDt-?F((VmqAQMC)n|-BuY8k{H>%CUE6+{x;#Y{9kuyw2w>Js!&rk-42HQ zm6bB&?KYysr=!s^Y8ma^*W7v^cF~f`fvD%s8fqEUtL(bFRrpiZU+y&PC}|ZC6+%-j z@}|VCTiSjKlorv@B2pjz>3qI8^}(X4<+E3>dWX%R_Yz_8J7@-ns2zY|U~tsz%O8RI zao9ZSW4|9X85nUPc>8={3&Vzex|-jMLZbhqgYwDeUM=aX!KD92LRXo3*bBhtP4^$b zVEjG#1^dXdh!%P#>riRd7UeNi9L&!>kBuaSR1VYK|7<=pgn@z@1&Yk0@DJdxSgNZ3AOc^hUZtT-%-{nC+W`Gf#nc;Ue;FBdB1XVORY zy$wU@2JGSW!gX*9192sEpd9wP50Tpbqh3ua=BmW|@elvk{|(}R8Y@-E{6GFrJJT`V zf$ab1-yr+vw?7^YE~|y0yNeH^oqziu4;56c{hMg5WDEuw|Kl%Lo_v$-J;Pg1`9Ue! z$5rQL8seR%$rqL>HBE3+TWAT*SuXIBuw7!S0!6MW(8E4DY||qLr<^W~;|&3sj-#ZeU((#z&F3p0%WydX8`br6xa3w89Yxq7DNR^Cr;1P?Y297 zxCG%X#|(Lw>=}W3n*Sa6jRPp@-uwE+Z;&rozW$9F6Ap~eu~?CVVWSNpz1<) z$)nlLC%7MPVyTwMs!F%q?G99rwS++QW4Q$b!*edXa1U8rX#0U(jp+AvGXKcdjDkA& zUIV)aQLDyRPx1s`Jq99wFXg|38em$&GzB`NC0GJ_SD0MHnxS)HgO!&7RHLovmaHnY zRTkH={8VoPQGOmJQNDx(YXH8n6ScCRGR}I$5~hTev6C8qmwSg-7!4}>8G+K|2g;Y7 zRh0M|@2%a?5?VxsJ-J9!@{bk$>b$lJJ9$f_u5=T-3YV{)V?3bftHCiYYQ4~DzYV%wsR{h6 zNab@JH7Tr3#8I=|>cB%@`LreXJ6xx7T#z{Sm1p!*wSq=16S<*4E^BwZOJ_H>igv7m zQshK}Z!*O!nTtOn(#vGJ!>)<8AT72*);&PKD*cm6u2Ov#4kKu`c1KjVfPAqA%YN|R znBCb8f|jhdOp_F_x|zWlgn8_<>l%&Q!o*fivnn_^D7C5S+arqMesw6gZUnf_8rs-) z>l30hPemouLvGnnSf-^G`qj;<7VRwOE(Hz&w!lQI+Pu}Vp^|lU zb?~;ibR`#Tr)~9*9R`cAT1D52Ex$b4K#=OD*UIJfo~bv_RMru{krMZo_Zy)aL1U1R z+({J)z!qa{X@QzqAKIf~cFipAvxFst{exT#{2HeKLL0d1cJ{#8B%lHF@HR60W8YSA ztQjPGQX(S<&pTO5-3PuhD)5m(-9s zuPl)g<(&NbJDMY(DFl^e$%XcfCY6>gZ)k;xQ#(Yn%!lX7SMI`3WpFS7c;V|pyGyH4 z4f!CnlZ;BRcH^ zxDQZ!5H$L@wB6i8Cq>W616E<#okEQA`YG02v*cHCdgX;ib_=F5ae7rNMpeu+Xh2dV z`D?Xmx_+jdTEMfX4kK9mo+)fuc7BX&43$B_5G$9=xq6bV@oSQ|h;VD7En?ki>6?bJ zZP9T@oO^-xWGD=LtP5|N%qZ`G9^M@|x8?nQAm`z0}F1hkZpynId2YI{yw1&gv<+P9NJ!>*1woE6ft3R_(<(3j)^-m}I| z&!U3MFNsr+DmgTk5@@v3rjoVwKqRar5ZLI2V_L9WRqn^^Vq0>d8keQDzxwde(9e<*+x{CvxaNrW62fWsJQP zxYidtT>g~%*-DnssC60jd>#|<=4s{@aj75Odp)Jl8KWFix18sc2 ziNN$>yA>%vv8z8syqf+)`mHAMla+>s37lzg2a7;AycjIVn8j!-V=NERfMd7Y$tf4x zj~pC4Xd-R5V%G}9i)_6iaQ`v&gCcOpWAWi?jK?0cZYzRf^$w4K5$z6R5jP}mwNN^V zK|i)PBJubr>s2 z@1vGa+oJK&DCnY=AGJk&grQd)w+I~tz2k8Z(h>L`ANN8!5*5e&a3FR49*m3@+i}ri zKqBcICI0W6mYfrxWFp{M=&QM@gy5tH@%&yLL57^G%IWn)q`y}|FZ6ZNpevJ(v98`b zR)v~JeN;|8DkmQGo3zl0+4(AnfpPrvD7uyI8P?H>h2em_?)nenU;;R3W1zKdf14q- z&Qxf+XG75J_7lP;yw#c_fF+726eg5NOQ~q#4@Q1Y(n&H!Iu9V($Gk=IwmJ#K1)xcK zpa?zg2Vr0Q2oA%S!(ap#c<3u32?Vn{>NjP7IB&Nhdu%rwCTgMdI6^;ZOH9BjNnitn zWDL5^pxf)4bij)(q%;%rY7rN~1ZcDA$L5`69FyY1?_!EVT^1teMe@dTZU=CP!CfzL zSIO1jsR_-3gm?h^UbEaM1BlLvjv)E<>SoC%`7w8P*zlChjq0?mR$wms;lUN`T)r;>E+BH^62~o z+|hExeLXsLw43YQuI@k=r1CRg9KR7&l{?Y7y>F^+>z}H!WS{x|9vvmw`&nZ3E}gMH z+g@saK+XO$B5D@Qn&RG!Ozj5i^TNnO!+hl=~cHeAKpD6p5&A!sf|7pY04W_wqUzE$+U*D?dG0E?I;?lXPLNjcM`1&qsu6 z{eqeRLrO*`WQEGAZJ3PmAyOv;5h|w@Ez?MDmB$)X1Si2pIU;FM42+%dG5EA5G^ML+ z1t%>+3&q(YHnIaU>b@EmCUBmIOE@fEFzZ7xNkVV%7>iM!(&T&gIcM|mz98UXNsesB zR}^VB!9&X}X;oRH4oaKJBmhC?jXr9znL%6j*bNr7S__$9cSHuyxV%p;k}Xxd;_ztKV=MGe9f zmvF71*g&QW7Tz#0aAFn0q`Hc_6ARv8ek?2Oa2+-O4VqS#@`KqoiYc z@-sF0^syP02lUj*RO&r8fy%Yt8nzO+>A}~^wksX#)v7DLtQL0`9BhK#)h>GakDhnU zJOB=sJh8lnwe$Ox2+Zo1H~n=>XNgMxkwdmS`c?aG`Q&|<0?TS$3`te@he&_#mRFcz zi49|ga|hf1n~4!WiKY`a6)qB}c5A!W0zF^HplbzASt#%?(lrXVU85)lj!&ZL(CY|y zXD~$R_6%G(Ma^bpU8dRrcz@~0l4IIgr)wXD%GYm#3<;--TX^A#k(#;Gd7CObn`0*I zaA@2)3CKUqo6}f7pStI9ZhHiDEPFzibzrtHv|`!at9@kCo>Co4^gec<8@Ip) zUH%}Nlsu(OD-S~tz65D^ArkgKy#CYWA78)we0CWeegF32li(N*os51@WVAsTyUrNr zccfOD>W0a~2o+Pio#0fEr z;X$veCBXPweaG=FZcMXRbi0*$dE4z|isWrlUt3H2((n}&l#rz|^0)-Z( z1D=Y{f2@4<0Hhe{4%w*e-D=2MEo2;gnOxBAd6E{9T?2EZ9T0+0L!5H#*3q>z>cfMKCU~YZC(V>_G?nP@j%8$nG^qy4 zp+!lNDGCY`-Q0eV1HG7#Ra~DdvDs`7@t=)dO&3DQYz!W~_SzkSkH5la(yZC^=VN$M z(9$3jf+I5^^Qn-=?O`3G2i_peVHnn)&psDYFcfAFIMP2A_jCZ0xS|Ue4(URxg>)Kk z^F}0hibd@HgMOi(W?8gW{+!fZ7YjVXHW9`R#%BoJIw0ez+UblW{R$Ui!*_tonm}=7!GaktU!k2C^wdyfX58! zz2bXN@;OW99~P$&w1>tOmGpU(-@F%Imn$8DZ;PHbc8c4_!8$Wj zRt3TPkbrBuH&K4`yn0V8Eh0156&+NH+HpJg6fPnV$h+8{K@3X{K~$!2fKb~GI8#X< zebS+%WOa*mOh7wgZE4?i+!!RFL0MqI&(Zp5@E|IDE0@>{&|`!h#Jh>s25yfa)ZkYj z)ZkYl)bXiFphb^IKJIxZ0EXmAEBT^?P!BMs}C;EWlrxXW>VxGV;1@gNBc@0C}DN2Q)-JQ!Xa&1rmn^KJO}g2|^uf z;5BnERz!yyHNIBLBt)w=+6yQp8ujIsOZIXV^h6HDVm<2HZ+VSO{sKl;Wj7#ZP~$q~ zx|-9qT*iGzLiJp$b1`JCi{mUqK(6qrrp!HxYF%81n&W+N&~I&vD492y^vh<=kwMhH zJ5Syb9H#%l3XKqC973c~gwSe?8*dllK9J)^&RAo~`8p3@yvX_HrgI(f<>smrr7!-P ze~Z>H=IKn_fu+jeGQH)g;Jq)uMeELzuVN29$mVgvhK@g<$01vggbH`(SI=NjZ!Ak_ zlN=Z_sq&j}<$`%KZpbDUt>puyvAMqK3P@T`f{a6b( zPtoLlbd2TU=@n$BiZy%4{9}VHAoBk zF8cc};J&^7#PK|LZEJ`@WnF#gaGsLd4b!UGaKmD+fS|8MdR{e4@rssR*Ov)5dg``(Y`cp1c}%a-4sUY7?A8t!QKKt3Uup9W~52qIZM*nGFc1|g);4jS8SqdXRsh2$9sZ!Cn6lH}M4b{vC3 z^OGJmV)2p@Lm2iIy^dzKyF^Ge>R_O9>N_xu(&PtW{e&JnF+eNKiYji45bGOkd5ukS zlccvv!;g{#LOuc$8j7m>ec);gkkUux&dG`~stovQFag)%fI50$=VFe__*TLf_X1ei z0iucu@%#gwv+wU*+}7JdVY%8=HTYkFmMWtpp}oQpleI;(9i8&F#;Q^zXEHSf%CK>Y zm`F&L2vBot!j%3zV(~n$+u~;7T)85v6}C$DT{7g=652o%4wB+#UQmZWvk46@{yrhd2XMc1AX>J3_Rm$XI3j)!pif z>F?dE$Ebe8Kh)ggjaB!_L+w4Zt4x#S?fy`M`$@w<=xUX=)E=WX2!tSAo7K~;LVjmu zX+*G+$o&pBwQOoIN`{C($kjylj-?1!P=QOKGuJ|As)Wwb4rqtIPbFxF3n^t)Xf=QA zdBsp{#rp|r=57FZqbb=nm@~IRi1wG)L97e&StH<0tcCiVL{RTX%E1$t;(TCRR>#GQ zrpk{*ti&4(tCb&rF|r;XYsaW&>kHY9LhC#AD;lLD3%Xh2_WYhfrZxR#UK{kP)sCAcO$5nO#cQS2vvsxUW?*Hjtu|fQh8T!!ifEYaz#7^>V)c91<@$3$s8Lv$eK})wu zm^V8*lW4p3IQz;)IJKc0Ku(&T%53-z;n=JYa_R`UEG}#+gqrL)CkN#f9)ccKBy^~F z;mIYdSg?WT!o1nsQ_{AyL)9>C@grf{gkBpK20HYSIBd~l@z;`vCLYZ%U_)S! z=5n^;XAxIGd={#I;?q*I^QL%4{&{gTm!vyfj^_GpehJ#g1u2@$C(G%S%!aPhxcvuQ zl|Y8Qmw$&yd~mvz{kuo#-qD?{$a?i1;D?QTxcqRHv+N6)Niti)@*udA{-FroN_i>(&U0e=Gvu9WclHctLaCyrjFdWn?1Lo&dL42hcj`q{&KVkeRzyvOur1PIIp6 z`duVhhB*Xsc09Id{g(*r1`FFdv%lz23U)b}W2lW8X$Qkri;d_Iaj;22!=m^u0>3%+ z(OH1MoofY-?KawODLl0x$7M`atDAPN$Fy@D*5!fm@EHE7&ApA1d3rmRf5LmP1_1Ao z{U>|)x6G;SutDfv1&fAIWMtxfJo}Hc(~Gk=9ync`c;}zroxgqePJG8?;{AB`{>|I> zzw@THn;ofQ>*!vD)Okam5<6Vd@&sy1@D>3E6*c*oGM$;B>=h z>58d9?U)@1GoOWV{pLRI7&dz?HMa@F#Xya<4%ecOG&$eIizo(9@QMe96}1vYDZT^_ z%}PggtVC0v`MI@O|B0O12UMsS!)|8q$gMhh_aCK*; zl~(1HCLl^xi_=i>YJjKOM#KRzJ%qyC7*L2ttwCY6@yvWO3?>_efQ$%Uh>KZpdVzQ!I3qWq*6-H8H!0) zAuD?=xCpDYLqo;g5<)V8#NcN(@-uZkE_ztm15`1wsVqf+dlfF;pgQsL%?yOgp6%O9 z=P9?Prlv7n+xZ3Inj_mIN0iVwzAM{n)$U$9?7JmaGR_Fn%;7OzLy#iaIWOSnqq4n7 z5fXi8$JTgqZAoFEa>@0GfY#pVbfOvM)4;6sa?jqJ8DQ!G4!(3mp^R5pooeBc)L zQWg;vFtZz|5=5t!rCYm9X)Db+)UiAqv0tAyn%Xw%2cwIM#_}4g)MB@;{0+FP1*9;W zUGGR#CB0OO#A>>Wt%ti%Gz+5j=3oH8uWJ5^#Z~QYXpO zT}r z;U`FK)5;8tOr|J0EUy7qm1!K;)D-&=7PDlgd+-D^UF2HG7@IKbST#Hj*hs>S6X|=q z@umiRCXC>KmfDk0m`saU;+f@mjl#XCi(^=!xdVV!D+Z2s=CesW#j%0N+|_(Z;21T; zway-Ll1vH1tyU@pOc4auaZf~WJ64K`kF&R{nd4!XE*P~jlJ z^__$Rp?~&_0L9Hr+bz7oS{$J2Z^%0ty=^wTBiTyW}`mE_-@c8|c(( zqvV`wROPG(R!^#^hM@S|RiRe3XPYn(<4}XgKKZ z_S~K1Mv(lNa^b-sz6`iF$THPB1!UQ7vx!JFT6k2M!tWNg|3AlLp%pU$sD3g0nX?l* zW_uNiT7Z&8yqb)F(#3!M7a#NRK$z)_2Voc2I1WiWQL^4};;b8ce6biZRVyxbLY>2K z+DX_~ei?xyxKwR}C?TqV=J4hzP#_p*T5OeO(@#6{Jxj`FJKt{>$3j3W8x`9LTQ$fG zVUU&C2;rx|Gc=oWd)Q}fnw%wb;A;+idslbSP?+~S1F=)0WV;<45Rx^UJ@^CqMAo~S zvrt?;LZpd!R?fkNPVWk6tkCyMI{7k-lAG^03o}=1cHoxIuKsxO-R&}pneTT;_Gn9h zMa?Easc?cgfScmjh8jS|U?0LRyc}p@N&v8-0EJelkwxbKT6=j!utOXB<-F>mrvphX z0vNe<&Jy>I1-DX&4)xd~$n8h$9<+nL&@Pa400x{T!U>yJITgQ+0+vhj;hbQ_IZ@F4 zRelYwL*7WJl7(>3B7d)n-yi8Mse3b&?vL&vf(N|?SW8+Y+yi}!){oQ?MT$z2AFAVW zT&5!&NQHZca~d4s3L6q02Dr?Ggopjz6c4)3EIBa;r+*YLEEhm z#ukY{5FFO3-$OV!e25<#91FuzKR9&KQE5(wBRu$dWnvuUtrPr@9G$_qPQ#ecA1go6Pb~8A2YIi3Nw=87|-z%Z}7rmN>+QA z61;XZELQDWU3=?zmbA*V06@>*zJL4a_aXdz|Kald-RDoguj6ADhL17F>!Ym9%&;muDY8e)tIfk_aK! zA{>I;A_5N()_dmD#mBSPKY;b0&3Q~7Y>@@s~zJdk=&qS1x=OML5jJH6zw^lH=BucrT2+( zyC+>A&vDnVY=UoGKEOxT4HXF1W{Fa3 zLEu2Q7ies6jAwGH3bn%O61%*sDu)mJMVWzJ{t57FPd8Oa=rg`kj@4Z8K5Wq71W#1UeXq?J!0 zDr764Lf~F&AMUeXfsi*UunmOEES?I6d_;#_dJ1J=>KPXXEm@giiG)&Bef?Zi$C(Oc zk_cz@c`0mVw%g(S5n%mIQ0d z2lW&>VvpCVI_fXl$e|7Qg)frqs0fLclI}1SA<@!S3uTj3g+xnrNVHUkL`!u@v{Z*g zOWlxYaiO9t;vv0+-EZx(e7ilczZ3Mtzz~tezX%lr>jByGung(NhgqwI=)TwqneE** zlabZ3BEVX~F_XO!s{V0N(vs(e6H9(gl(b^q|Bi9c{-%Nd3&%l&;EJ~7cAwu@R(PVK z?nQLZ>1{289oPxtB^M!wM~M}rVP6~@HN?vJtT4<1ZBsk8lzPh7vDH$foK;7{U3FT- zR--1i+I$k##8%5hY&Df9W2@0;#8wl1*|F8A9b3(A*2GrRw5f}D)dxVxs~6`SSaBA5Q-e9^#)b zFFu}~eF~2-T(v~2#hp_$X{0Hl#j}qe-+u_(fmIIV8DSeT-@Lwft-ql^Bkl;>(9`=5 zm!}_o`0?Y}r%!J`ycd0afA;C(^3#uJXR)< z{txdz{PbQl^XBaQ-Rq09H{r2fufr$tHVTA>4ImBSx**p9<$7LDWp9NsW%Gi z)k11+43y$VyN4H`#<3y;ye2(-O^)#uIl*5@@AwGckbW26k>CVhlHPB>v;urffs+VlT#g5j^VKWTLpTKv zB28~72(5(F)A~m0EnzJbXp@z_;l-D=#UTL#Bn!7; zOF2?dtA+th+HF3?>NlT~)rdsnsJ#k-m!rcXy7Ed?0W8*4#P7N)d5f%e>e-9gZ>dqD zmJ9G$Wyu{S=eD#rk_9!qAvs=XtE&aX(^Ku?&1eD7X=EerNw5jV-Ow)zw8;Wn@SNef ze4xW~{eFiRc!@ALkDJTmrE{Cn^?2S9r!vWW^$X8L$*@-{2|+&H!B1)Pi^G9U1~;SM%>hta;kAnHD>Tlf0G!;trph(x7+x@uLH*D9HAi^s(o#h z7+px$)MacdcJTXB&_f&zhl;RRt%wxZ?6}l8Czih0yP-kuf;cQt6R8_G9|(P9K~unC0r0`e+X=khbu@)H+~s7P$i+B4@zTK-@}s z7)S#3N+hAEJpDD(uMi0#=P9jt7uR*?E^iy#6BB2Bv*`nq3y=SmvqHQ)>kVg~h7=*N zfH*pD2NvrVp0@+cMPw)0cDKIm@tg1r!C_Bxei=vnv7wCLgyKs_w8YS+UNKI5*xH_0J}ZckXSo6D3vBXa7a*WEii8X7d*P!ZD-g+ z8H+)|S8Q2&6*IAID(K~$2G1Zsg`+|lf3j4gFiHwOGwwe-kb$jozzt zCVZ_tdIC6w{0KyavN5Og+siA^>os4nDb1Ha1gk6SVrxd4u`gDM(%2;RP({rJ)Jd?r zH#Ebo0<=b_*wQOKW0wgs!&0Y?Q_7|gdL3&TbCS$favFF0D+{IU^y26;ErQjSH3D%2 znFTh|A)QjluXM`%F1d_BkX-1H21kDHx0k5MpV#F3z2DxzL#&47Wqp}DQRbWP_T{9^ zofOrQb|ZT^XZg%_HC#@(ifdA4B8-(inA=u>3|_5E6+W)016S!>=d!0%pkv_q#Dm7yREC}@(Ycl zxh)(2laWgqqj$*~QO?FbGx7#vNvOrS2wtczh0DP;_Kjd2*+i#IlLQ4Cb*17x5TmyI zi-hT+Abm1n{9X77WZ*(1(v!vnklYOeFlQ{N(HzTzCrTm?Zbz0Vgja@*b#4DcA^eBA zn)hu&$g+7a<(GGi5B~CYI3kGnzaj9hY7aD$#xm*G{IFN zb-6o{XPwz%VO-kA9Kyp2{3vlYF8?k0oH}+$(c+!27urlTkX>UzPp2iHv5;;>GJI7?K zPq|3^6i5<`Mmkv}ic?4Df{nd(I_0gG`n#xWvUQef!4xYRkq6j+{g>}s)qqh(FU}G4 zuFl!Q9H94GJru~7GqEU^)eGdyGuX*5D%)f$7>)AQ5!5KNB7@&LCEX(S$f|Xr6G`}j zN+Xhh_N(dQ0OU9>PQMJtns=cXw*D?66X^JleizIC)j35G3JX$Ib=r4eus7lOGFvq0Y1h9{Juyy#K93hwo{I9 zzX$)lw`&DQ@ZS$Q=@`CbF*hyf9gF{4sr{Zv=^a}2P1-RIy1jvu0g3Q`5H8>!(6liA z1k18|m1jwwuW@jQkHNvATc<~Uwk${)*scGel<)_}*5pq`qA~d2qheif5qnE0UStkM>g1nD=VQ(bX zLW|f`#;7OeP#sp97ci2OZ8qKSLdmXD+0HKw)6UX!w0Z(i3$m&o^3*S!I65Nc3wKp* zeeX6%add)0F)}r~hyFYlQhikP^T`Uiuprm4@{*NlACE=@G#VWb7hB@*ZL}Ne-$&yh zJaR_TN2Ae^ki;g1xUT6hw!&a{(IWkzz4-TjV2uX<=qK=`S*Zl+3YbE@5Q&mX=}@K% zd8q_^021$`6Kew_u`%scl)}=Cn8g^Hg&6s=;d+b^YCx)v7-pFx*lzt2Mwl|Mvge>j zI|DZppicujUIo@X+&w&Q*5mZV%y4Ry@RVU0hsRNMe|DUivq<($wV-gG{ix-mu>zrvRSdE=k6d9JPwzYnzr;GKl?u9*y%%)F z<_o%ghYu?86~#iedavphN`TfXG^$@tO|UdA7cejcUojH}Uu2zMD6~G*!J#@3SFq2; z6|C|Il9Z&{OY=ZuR{%@pw?0QB^46!Qh82V>ARIU)meFM?Ybum^PC0mUCEISHr+Kq^ zbaZrJZ6WD5i}X}y@=zYTjIw!CR(I3N9kljpilkwcdp$Kz$Q304`ZvGdWBO0I4nFfS z$WOrJv;QRc3IiBvwI!!sCk!~Pf59iG&w9eIQPObV^SjmyvygVB6ZhqYTtmoJpRx{j8l-G=^MMu81)U;8o%FikyS3zl*uS zvz3aTtV#pcp?~u}LI27dC7L8!APt*DBnq#72ZX$7HsQ~i;EDC!=I99F6(Qu^b_;*r z=%JUWv^Z=W0*&xex(g)at5Uq+V+mUtgH>&U!b6D3)ol7QIp=A{=1Su|5wbs+66|d# z^vzF{RKH6c+N%ynBT`RFBK5=o7is>Xe8%iQWc2d`oFn69C~y5E(j5n(B?cHj?ND^m z?7Ou|v~Sh2IsKrc3+nGuqeZgYZjr8J3NKwyhP~}^MH`=n$4pVi5f5a^6yC?{{~%^01NU-AGcgfkId_Ud}1Vod=gphJ_<|H zD#wM*9&^cDIX;>Roo{20S(0WIFD6Pf|m;M#6s2c*rW_T3Hh+-|8w|4cJ* zV5!oEUCa!-$b~vMIC)YE0;^YqDv>Stwow(o`BZHeYHto&+8ngl9M}>0Q}dc&dz*pY z+d2!IAK-6>0E~)SvBfS4a|*3|JtInxhl>J2f4%UoqzVv@KY)oVbQL|ibY5UEPx`!IAJQUK}he8egxq<%7UZ7axTZ)&C zAbOD!Z%uE~hDvGpB5FE>`jAz&kSDBJ>s`EPTexuG1W7!^wjG@E(jv|1!b1pw zIC%MdYgnbn1F~2B$`0a8{rl@8rq||eJ~h9DNW{`x5a0Hzz6h(R9na~wiTWFEUq)FV zO&B;}P^N{)zsjK3HR#R^l~UFzc#W^|75;*6@EyLyxA+{N;tTxU&=4izV_$E`3$q~; z61Dtd(c6c@e9>6K;qQpCq{~R&_TlNsdXq`PKG-&e>m9xXLO?t775$3mKph0Rn8B|l z{lYNd=Pk64H$?A9ynxM?#&bbW#AEB42!RyDjKkL=W@XOB#})Ad*w`^kpde}o_=`${ zGAeDz!g+eX8U^q$xM-0JVZS^Yt?;Tvj&UUg;Ty7^ESgu-ArFDrsEfkl)vH(Jj@-P0 z(-g1TkJpX7QzMv;1!@NN)f6;`|-=TJZ zro&m9@F>}^1_$1_-)r7MG?rC5XC&y!%U*-+q-CZTB|=%G5l5V5G=3p>d;`D)AzMVP ze%I8x)C0u+T@!pMHki7Bp*I(b>(O z@mTQ2{vFBN85-RRaLh*j9l34aA;DMBg#AtZoRSUp&q)_8eK$nIbCS1j@hSPP2ynL?-I+F8%Qg(XO_u1#|My!^>vVcawurB@IbwofwShQ;+65r`_7G-U!Cu z2NNi(-S2Ap`cC&HMG*Rrk_LHZj~7irC;e5MT#iP4goFx_<^m$i z0Gi}BBM^;}ang=jhv8w{kK}#7aFCae(sA0(TfM`VVejx|+t1r6aG*fWh4*8jTC>u} z-_xTgRP5@LvLSu$8qzC6`zTo~XwC~m`zTpxTl|Nv4%{wI9~@u-#eB2mO_)?$Iax1=;i4;{d=TYpNw#Wj7Ii`}61S&)@0TXy7#K z6*PA0TNP;vKT*xxUx>FUV zvOQf9HW&;*FF~WCWI;HBRee!*sVhnBS{Ku0SGu6OdI|`Al^lbTDhNde%t>oMk}i1c zO_MkyqB9P{OD(I?Y+9mL|JF~8Tu*_sSb)cs>vHWzsy1hLwYM?K(d&%GI%DDam_OHr ze04)AZ4!)|GL=lC;VIAyJ_t5dD~-)23j@I;c=E*-D=k(p7Qo<;s#eSa4IaT(GnU{{ z%8ZE;DL@HSL^CD#53hx9xxZ@ z$9yTsrK+uE-L6>ZT1x`00q~+7@7T2(gzkc!){fz(YLXVVW8xJ?%h?h+&9a`;kU7n) z)&huCL{d>1Rhmuokuq+B@Dj}cnysxlA5gWTw@}{>%)YE$t)S~<<@($LsMvEX5dR~s zK~`!D)T=qVU$YOAQRCP(2 zGci^bWc)82_OWYvl9j_N!Jvw)0OEhkRz^p>$(HF8k6-k&$O;09963H9a&{l&smjVC z@Yxkv`2+HiuMWb`7zE2JI1(rh&!(`WH)seh&tGLk3dfCG(KKX`UM`!31-JnBsg!a%0`h?!0ee@o^ zL2sQhdabU0%|fr7HfSz3kljRO)I<%mg*K602Hi*-bRR3IitH+?AiIWaWY;@sExi@A z?>N`;V%sLHPlfLZw+$%bvIlF`LS2=aFqX`OOO+Xqh6-U@zQeGa6ts(`xt{?y@1Cjuk$oLs&30zj&Y%t)poKm5;j3m8%@uF#2e^j-V zhhi@XL+}Pq9VgQW@~Iah^xb?$qB7jd*X-24^n+`EjYo(l@sfx-cV+`0i%t!_bD9Nc z2FCKjsWBA?m!5AH`|G?D?gihy;CacnEj=&RU{9yJqf93_I^PLp1P*PRmj<7ex4U+^ zWmhP~Y2|H#DV5g4P=PPeEdqc6^jXS-;Z|={YcKT*X=6(rth`PDb&(a zsL?6Z9x`xtW~g#)f&dW3D@@?&rF5WubM^+{T9a&PmRp$SWW<2ZC{HLy&P$6ZI{P z;!$(a01eSPdS@kplm^8Bt)ro3p{t^^j)nzi9q~~WopnomSYpjw`Os!?X;8Q{050G* zS1x{P!2uiAo$~fOvgYf+OX2`}2aH7Kuz>hfm1_Yaj%;VjFvE8n8|yn)lzn&q*}k&` zGdl|nh;)TxL2}|vI`Jk<9IPvzeBw-;^Y=7&E=Y zd7C&eZJV`kOQMi-M1*CE;+S6hU*0N#x?Bg9i<<0CMl;SZ-28#)zRT^(G4SSHLNd*c?Gwo#Q4Y9PZP z<0!ZIz-!tX!RQVk=n5Z784=wK<^YZ~Qh_#w8uL~ft z`_Cp9pmN>8q^@?>`K@=!eqK`YdR?@qTvlUtLv_{T=n{T)6IYO+BeOPVL(oaJd(z2- zWm~B?3TD;bxU~>jt~x9h&(%jskZQtEh%R8(gv0xww z8@v83TcouhltQxTcH9j{Q6>dVc`Y0S?AEcHbn-NRhmC7n9K_Xo5?oRHRhza|D0Dhb zW8;=itx5z=bG0vfYun1IQ{LuCMnL2;4lNQwa;JgbJCv~{(&lL23CuDr1Z*&S3rUeX zq!V`7drN8NJ$-rar?vvr;aed0L860`U1;`J5}YIK7uX7Ns2)1zTd5DwzTHTw0CX(* z1UO>b>@9j`nm5i{@))pooR8MMaP1ERyI#zZIK&g|W&rw~qYV_irLH^Gf>{-thMt{5d}=rJ!B_7$crxU7 zPMP-7V0XujWoc+E}2nhVi72-$n%G5*zXsEL6KY{`IiS{I_GTSk=(>|+7I8z zx++P|UM8aw9PdpewR4!F4jevmth^*0Y@ZKS43(^q(nw;=qNChF^TT}6a0P*qzG^Fi zzNs+kutG?i%^l}zW1~`U?l_mw=TlIHp^4G)XJv~LrmQPju}sirDOk-C%YQHD>LHEw zTB(&c4w*0HJ?93UIEUzybCev?r-EtHVeJ)8K&|G*i#;oERC|Soj*FZkdvJ>EAqt&> zvzI)VdB%;Plbj=RSRV?Oa%EHET(z=6GPtBOK}r!L*cudhfHv3MWn2oozHunXZ}zOH zROquoF{FLtu+RIQynLPohoc5wFVkQDDR(PAcTu0*wWnvNIg;r`$hefo*M_>^d32o&CW%EB! z?TtTZDvWblsdGNSrF<{JE9=v3&^Qo8Qc8KX0&TjT>qvM}L^DUU_+{8L|k<8~K_ zoYVFhRh?VkwzdUXL%SCDrKO2aHq*dljfn%`vRFj&wpA-PD85k<-E!v7UB-q!E|S|= z3Dj|nT>1$=j};{u&Xi%ys$I#i8>3^?EgoAfKb2$=fg>09?B2G3!36phoQIYcv4In| zJOLZ$p;2hC_hqFi;jocn^WBq~LD+n?%2sV_vr*XsULOI5l`&9$-K;WH_I9gmwf4EC zH7BO3<<`DatR@oe7K^dN4wq`B)yD&OI*MCdnmm6}?wiTB&)wbevxM0ioy1PHEbw@z z(zv^;5zdvhv2jjZ?=pf+A=8dE)%RV#2dXwI)~uF!T~z6^lM zdSheXp-M;l4ww||tLhL*L$Ms&s*7zc9+2<~D0O9GU7boZ1nVgsewpI~iCSQ%mB9#E zu#vLo0tGL|=XPR?3*V^%o9t`_BQt4MmeKb!CuK>tv0>ZK1lTWHwyjY3zG7*wN8HQ zHetg=_eO>xlQX5STCfi|aLVYMuz||x%qgQ&r;I=s`p_w(Bd3h^oH9D0+y9eOM(;FT zUa)!HPo=!4#ow?{uE$P!`*_E(>)XeLg7vO_++i69PI>!aXS97lk|E^rL8ntFki0YJ z8aPw+ZF>joSm7Xi*Iw@c>xjq)*LTh~Hq0}S>QcTu+x7i+j|9RhZ#C?CrHqo_bmoqY z=n&2wd;5Gxba39;J}(q#=$ z1S(e~kPqH9Pn`G81+urSmdz7<^r;9!0`%UA&>Q*_A{DpH6DLIPodAKc`LT13x=s(> zI0p_a{RAG_L&rP<4IuLroR1W367vUdY&7eYouj+E3jL~YRd$Z}I?!ouGhXwhb6mVZ zADxT#L1*V`*91Wg{I*)~|1U_&`}Ugxe09)C`xE_Twai;*YZDQhT6<>)8aa2y@bh%L z-|iO7y%#TTEQkQ*46KfG2_^z}w-6}v?jtd*9I{VT`Bz8J|?R`MhN8K*$xmEdmBTzEEtttX6E`g;Gm^j zaL&;o1K@G-#@aqD+yK%&GbsX{7H&G$j#IX_tU;P5clJqWqf?iThsFb-01vj!zCzA?^Fd7g6%!Bt|f9(T0TGJK5T#l|mg z1KBMjibL#g=7b!KPWq5ux9Sppl zhy8eMjK=|VV-)K~%jixA102fYo1{3Xin+1Z9pSYr9D>G}!K`TNmB-wZ5Qp$mvXIfWRM1E=yuuK=+s?K+w`_9hxS4b&y2ui*32 zu^SMsvWY%AZSL=t|7WxRD(t^1`>)3StF!;g9ds>g^BTNlozMV41pplYlmMj#C^=w* z8Z7(+RoD(XPLCq_AGF-)po4pB*P?SR(z4krR4i*dG|#D*<8>|f0&>=A&Y6+}n)chF zc}80LPUqF$i5G3f=m!Q!oyx~r7)|NZ6wC~E z&)T@tIs+LDHQ8!do%;m5B;hI1DnTw2kuhN_V&TXA#iZzhk9O+i{mzLYunNy)L73l@ z_a-f2iC@scq$mp``Lp1-#R>6zv8Y+Cyp@Qw38RGJy6wsrafkkaC{S87M9q^DMD@Lc zn7s%S-4NswvZB00&Il3S8u+1!fNangiSbT zckmPLd=i?}YsZ}($7{PCEtmnt2pJQacXKsY-Hl$$%J2KB3C0Uw%fepKIiZCu6zs^!ZCl$=xr<^e z5mZ3)Pyr@@>>Nj-6U#$eyW$UNA6SO{7_i9WBNBHUW)!t6 zU$~uJR-+A3uXxpt(+H(p zmQ1w@HWFYbZNU#;nFj1+G3ttXFpwaM8AFs4TjD=O#nHYafscB*2z!x(uu~mj1-*nO zSs88wE=|-7Nid-i~?d`9Wb{Vu}uv1 z$^68$&8WyTEdq1DgLr}yS;#9Et@)gwCwgT@sILrGIbOd^Q&B}5j#WT%`XpZ2yu>C;=E-pN?T$s&;qgKg@^ zeNBg$nJOI=i}Z57Qd8kR4vJM&u{a1x&C9GZRg2LBx9MElMh(l_z9)3&^Uyq@Z^<8= zXA0lo8)@DQ?VG{Qjt#*HNQ47$W1nF5`qu1Q;%=BY6ejUH;m@DAx;>3X`N)vy(1OUa zYcE!xC8oa2)w>`l?a3AEtL7Or^UE{a z7Avx)6=`fKMH;L~Lo3p3Eb8c$d5(Zv6j^Lq7i2o?yh0t3pYWQ)sBUc^l7;$Yo}-Tl z$lM+pTj+=-t`j5v3rN~yNpe}s7CJ^{G(|&eZd&LEW{Se2)8T7iLCBXHIwaE4bS`=O zp(BfKE-jmFHnf-frb6)g1X)|s^{Mj>OC(-MSz2QEu;&-0T*}+<)T5Cci2q6E09MF% z**&W!rJZvk*Qu4as+*Nst=3TSrfP2!@6Xf-1XP4KTy6!fKazzPRrw5(1?*;rdd=2q zm9r8zMN1JINVT#Z@AL@*XEd$$9SLs=bMT&lz9Vm9x;p%;&%Q<(E=r-lFKH>U{=B{* z3N0jy^jVR9vIy;~%e#)9Y0=)U?tt$PLBFu!AGBkjxVB>u5(&)*K{-^vFk`rH>VUB-|+}* z=M4v=fRzuhLRD+~tHe6RAPD*@u`+Jaw&rHWA{OlQsugTB0!Gx=DGZR&FD$5eLxP<|Ehzm_zvq=PC+WGh$Jp zFuKefE~$RPTCL`evnmgaI$Ngghz4K0fNM&$P;{DrO4cGlQ}w|HrrDT02y0Fxp(ppdwxC<%HSl66$iJPOsnxo+zxD2Y6n73!mOmzvL>F;k1 zCPe3_6yf+}JjQ(wR9*B3x?`ijna$A%RBXVPa6jlx!73K@oY!4YK`9M!{3Z#;)(v8$ z+dsO(ethahG4^q|n@%zf*0zBL;I_SmOKu#yy$e#xG(_J9#EcR{rg9f$v{4}@!<|D5 zEb-vN^?e|2OzJ~SPqs<`H#-X;m_VQ4t~J+A6rWV8XkEiHwfY+yM&O6o?cb6u(7SN` zAvQdJtzYVe7&O*Kcub}gk)<-gi;>e8D9N%>inMTY8`zFZ=`NiF3ZcwGWP^I85RZc^ zd~o57`Vdx^9s_fDNKN33;~8_Sr4CE(0dop2udF%hY1>ePq`^OoXAW$qV6a9gOR^-# zyr5weAgYy=AS<2|!XbeWcM@2%`4d}uRxcE+n7pfa*)}kPwyCUP23rvHreVW|!>AR{ z`F;r6Av~pAGqg}xD8NK|BkYE9DvE&d0;bc)BOK$kpp6xQ#FVKZj;s`HWb8H9fl9>6 z5`qgoD{sf)t$M)mD5bc>2TWM3Fyw7!W$g*GU2aotTDmp0YkKW+N7txkiO6f)dQMf% zL0-Eevbkcd3#c%<1t|z{nLq~U`9QPG02<_EozE57*Z{U>T#ABe*uzwD12h{ve`q*- z`D3!PC^<`imq=u!*8?-MHa4bafu%+xuZPV@c(ItzO=If!@xb$OU$z(F(O~x~@cJ~m z#4g-3E!=`+Yi`j47}AhZS>U2u8t%HKVJj<-Gz|ZjnM-*JyYx?MHn+%?2LFfJcDZAj zb{P(ERNJzfjn=~3-8Gx_Dg=Ra&1$nz-L&Rtvr=s~m((it%^1zTRIdo}ikVwXf5SCv zo14|9BCm(mX0(wOTorR?HWwPShCyhiIP}IQSK^uxGN$#cJO}JGo|7V(c~t*4jHCBn zd;uksP1uO&r?kA%-fd|(3cBv76q^RgbzyX+i5p+MoJR2(v;)nYjoj$Mut@vQ&E3`? z-+g#)eJFh>nIE3tty|AaF^*yrTM+!#^LwLdA4j0G^1!~&Ll+cf+|jEb-W!dAYuty< zdx0OtYpxUTKL7As^xYyKAD%y_#?x#h_wE;rI7j#}i1j|neJ`i<{2}0kapT@J_O37i zWY(;F=Xv|Xht`KLKI|I5+k<~*l<1+KCGk8 zbMaK>^W9y2ILxjE{GhnK7>AKz&07+O=5w@JEtjjSZI?OP+-x@M%XUc!cN^O*{9H?K znMm6+TU)kGUX-S~H_Mw_HTY56sy4xSX9U^R##X&Tvh8NMV!<2RbWOWjZ8RZutFqYu z`6o%NZ-VZbYgVhxEhsv2T(em&*BTaZQ=!|<8mU#?+N@M93-utivQ^$9J=8ZFo8Tw> z!g0+?tx~O6Yz3#ztT%F_sAa%~UIgv3V&8K|!LSI*-xC}fb2QKkv3&4(j{Vq}qp_Y3 zo1sWv7o?2q`J|OeW-AvSX<{fcS^6LdVp6S}s1~}{I8-{n%IG}8lyI1%%Z%KS+r=Ye zj&5^@9R}CN9DQ6g;A>}giEmqF#ERf?7x(+PUxfFmGJs>zh?-HPUT%yzI>^qCy?BI; zIXc&~Rd}u^M*ushNQgCKj?P3ynhq}5j5#_L$$rqs0u(nA{1m<%{POTWWV{uk(q+vk z`kXlZ()+K`C&w(KUTIjdOk)uEanZfTQ830uuSc~0-Z`VvSp^KROMB?O6P7N&LvNg@ z^ur~33o(7J(QC&m?XmNLv^D*;WrBGJ>Ximss6E34M{N4gsUzDysT4rKWJ+Lwy8J2}?t7D;$EqjidsBN%r zj1F5H);rKZEn^aTW1{Ff3S8ibw2n&b7fKB;@CRNve#8K21L+a69u1_775+mDIwD{t zxHv$`l(7Qm6Esus@2C{JA+QGA_#zki$`tv^1o_k&fO(UV+rwaHhQkzA(SovoVWI4E z4a{aH;Bdn4-xr9qlS2=T^+0tv1x#fw$WTVBt^Yon8NF#3Vm~hSMO!Vm#1cjOh`s|_ zhT9)|KH&cu9^qarutJoi>2oxTLvJ|D-U|%%#0A5u7AIcs5{E@r(^!mR(8wn=gA=V~ z49MKbS#Qia95i^OrwI#BM@#SwN$i;zXoB(}PwpEA?p%P=lZ7HOoFg6Jl4qTcZ|Ui1 zKjd_*Qv|Jl=F^cv%mXlY%pF9h?E>rn!uB!;B^W&j!}y8ImqojA_s9My6~-r zZ(=aJk7EGqhI%q1Wf?8d5->NkA(7r(vcaPxR!D#_nijC@0eZ$Gr;ydH~_W&!P~=S=5Mn z{^Z<*Z}?3Z;sJeKy~P6q0spW?=XmJGE}DeFBw`6~;5VW#r%QZmv<%p}1~S;-i}+^Z z`u!rz7kC;5`vz#kaEefq=3IEgi;*|Hh>MI+AlI3o8e|t4v{7oqlRbz6AFQPH;~#)4 zQZu1EgRWYb&O4rGy&u>KLzdv6W|?jJ7A2EGGsBDI9Ad%=BL?EhVb43(JOd|ji2@1t zclnVLOt5e81ICb77s;d;Do;uB-AQBYsl?cr`12(wf+`xCz@*`Dg>^MDpbs~J03Q%l z9m_)P_G?7(;gsHY9foBvf^Vu82*93|?@6t7EMnqz8qo}f-7;P>Tt8%Q zK`_hI2T?01?adk5sy7_noclpA!mclFWDwsaSBe#-Vn|WaFy=_1>=v{K z`fr{)f{QVyspnuyh{xcdt!+$GS1mF)iGd7C>vafz3ZC0cUcJzmpo5;-h;r56lNUDq zUGjV%ha?5*XEv1Q8@<);AZ1N?7CGnO8W8)xHS2+NE5v@w;J*w+7%43SR?GlqBrMW2 z#{JezBa>URA&w>MP=w{86Q839R1lebejNa0W`T!j1PC@rqB#WsFB+T8`5axtnyI(| zU4ST!O64UL!_)%A>fPM|aH)7cc}@?4r95Te#hP3LM73Ot<@Ld{X;b5yLM zN+R;Ij3hVpWfmBpsAq|4uo29qxB&q)~^$iCq)aN0Dr z(@G?F<~`U<4;5U&YvtU>J-Y+AH*#Bh!Q`1l-!%rw115Yac| zj)#$ra7-+z;VRyaVM``uYrC;yJU0q)D+Y=dep@JY802hxINeU*nzAc3n?sc_fKLD! z_E5WRgxDun_hARMjgKFrUNFHYeIS(F*ezZa8?Nits*Rq}=}^hZJLePH2Z>|du9kVD z?-l-gmk1^(Z(8uq-{chF%=5Q7`BHfB+EHl5?WE->RR`j{?r<@aJBN71N-j-*a!$@42q0oW7ig zq(4kT{n3>T5_(RGL9;n4gr@qWNb(il=D|dvnf30x7>^A!0C_-$zjJ#aUu``TgBJ4c!>jtSpV77PGtv#yDq^&};4+kH+m=4Bs#aQcPe}v5>^WXJrKw zd!^&AMZ3MyB+Oxe`FeWzuBEAYba6zp~ly@qIV zb_FE68U{V|T%bN8CGJUim^>7Q!M@wOgj0e3N*oK?jNLE{u8Si)h(8xX(lKxbK;|PX zGnsQ;=B{ZsZJS8xE0tPvi{3{s<>O21?~t8s4|rZJcn&Rl4ROpfkiq8LQ63lq850iy zrQcFC838f)+^|XmZxrLuWFsY1I46I5E0dUWBz8mMxgy8P2_Dw!95H;+%ku@)%g(um z$+v>Ac&QQ=ukr|s%_bi7?SUXHzIVQ5E&W;$1Kl8wgK;ssz&Mt~#MjyRoR;`5J6n(v z+ew4TpO|=1NA=XigEr#~+F^?x6I+j<9kk&qO*d)N&HIrKzeepCRO#sHRqi+|^jf6U zH0Lc9Z7Y2ueJzh8m(m)H@tA1;JJbd-*fBZqv*ApxM#_O)4Jz!Glc3SWar{lY$FySU zU2_mjZu4%V9^_@N@cqwY+G`1#JoS8W9HWO!Ym-iEGjm$-Qp&wv;a;J}4o^HU@;+mN z8zzWFo3$*)vc9tA2d->_dV}6Xhl66}!W{X~pg^dgA%S z?(n7SyF+55p`R}+Pi;+0>4T+)_5g3t={9l>6fjK4opIdOgxp#Hwn$#~k@8Kp7qL&8(dmIY!FI{5q+7Ss1GRTk|$j1t#YGeM2BmQ%F2 zps#-r^z~ONef?z)eZ5)fb~nqmWZZq@{D6J~jJrysZlPa+R`OQ8zGWed9oMugo6Ux` z4R5SQvo2V$SkltKO)bXmP}6L6Wr5i3D(pH>&j3?euxO&1w!X}yTD(#TH^K>B*=RZ( z;s|o1;>7id4s3{3W*`dGzJ^gT4vKESuQWPJHcE=A^XRh@wp0?H#J5Fmm^Mc}*#}*z zVs{$Hfgc%jbdd*y=^`Kul7phwqD3+`Ired4a+;p@vQZE7M%G<4va9^L%D2-c&U!or zOVo>}RK0jWm668|#-%BmIKL@ft)rpytJ2qRQP=rR=?8R0RF4-twyw~O?sa+yQFS$U zD0I`5(;_NeEzy@tPzG00Q;sSCM@)r|iYB?*TC}=auDlsyteo9lO|!`_QNGx@+g(lX zS*bv@`iM?PHwZ!c-gCqL3VMrKKkZ@^JE6 zRl7M~{8OgVRltLg8`^4Yp!VyvW?t{N8jU*p^9 zq(xr5-@gT(DLdo){S!Wlwt@YaDuV?+Nfnqwz7B}JCL%_OE=Zo?qMA|j%)DirN{z>? zE_LmmTs^2P-z^kk!S2l_eG=##Xj|r@mQ9QbOk~ap z&Vj_G+k+6N(Rr}f@2>>O(LEt4TF-jUk5ryuqyP z#_ox0H}qlQKf~@@vi~NF_TNDQwhzWcaSG~&B3@;lh)G6=B%QGv?u|y-hvLHzJ*K0@n_uPF%RlRK=$>S84j+v)BJT%HfpqSg zwHmQJcFj$@QKn|cRogDpcls?n$Ln^*-m=g~`ZV9FRxNamIg4bU&62B`-iJRzi5E=x zjS(wHd~l!;|1kAJ3^v-*3Iu@NS;7;6tBR7@{gn2nc%RTG1mdJN(bMEt94K_kgAcwG z!i{|Dq$A+3qDR`t-C*kXFgWE1Tg1JIs?~Y*F(56U%YU)+0(<~5&J}p8;U~$W+R(b79iYZZKU!LT>`tINOx3WZLMnqH zQ5>cEcL0BRK$}d*FT@d!4+#d$kyv};B8FZ5)L%$u6RLb$X^5+5GGuW;`&T%{f>)cN zD84FK0uG_5J1X%;X3tovUzzNF#@q)k1f`{_RxSo2*SY*H(YYKG#_@BQ#`E#V_WsP5%0F8Pa9b(M&T2fl@DR)0$C=fI0D@PR!Ip#L_X0 zy0p}inDZ0{xZQLUj^ZVVh{2_DwSuFtO{(QGgI*eeHC-YkWP$)Ux;X>g6h0~grH z9Eb9e60A1i&;<7V?j*zm@5aeSRBOI5^2T25*yZ15DG$dP=obqeUNTW-k}4*uC!W6R zHDt@)?#Y$~QqPwlA^|R7qI&DFqdw!UKhsYiy!h}*@n%dZ2T&6it|jpjLk_3~P+=!K z-93y#%-BD%JKP%)XJIEk=-eBYl|E02%6HDZ*c!?~(DTGv`Ba_*13$?Mm~ox&)C{TD zC~R%VFN!w1I%GbmOZBiBBU>oW>rd^(!Jd3qv*jEKb^2w>^Xi@;t*X z(3+4@h}BM@Z6r|Xxu}4W?YJpMNHOIcHuLcDIQItySb&CN~k2K(1(`}DBm z((+04#H*nv8+ta$OA$5BK~&N&L)Df6;U5-bYGPjb$coa>Z_}E6#HENooikb|R1>p_ zddXdO@~z6Tfw4Hy;_95AF=M^$69MBn7;-PJ_!<;YsVjz+>l`r84M}#FRf;dLuaIZ# z<~X4IBCTM$-=6r#Wf#jRZEkggc?lQ)vm?jPE%6M-HE-PE1?-ZTU-pZ%^$^s;P6 zlj4uLZ}eBjk_(6QcAqOppUn#USW!aZ(raP>#uPb@vCtm5#;W?rCC6?+v8> z$N_eaF**m1RMW14sz|lg+}h--BI}x-LUAkC_|iY28yt;-^)Q_h}gNF}~B?T@D;Ik=R0%SML*v@vE!w?|@W^-$>Rl^k_c6f=MR~UUu zUSsuoy=kHEF^RKNuGLALoz2arUA8RrYm!{8RkuiTt=X)@-)5y;-n18UGBaYO-Al*%NUF> z1S=t-R0;DTGFk@J=r+*MowSTi`toskYrKhGFajT{zt}2oRkyaFh_|d4_(K8^87+hS zp*_@T5B|~~r1S#fOg&zDK}<;}#D;X}e1}Wl{eZg8*SPfZ7+q1(#wC27pP^gl*SK_Z zgg(OGcW3B&nNZ_e7iz%CO5JQc(CC!8g{jn6l4-1JuJ9#BZNKD2M}05${NZkb#hUG6 zd&>O?Z86(P zSt@nJLiS<-i}7I~v-3eFMOG@vQeGrJ58SB#i>HBEELdufhgT&ZUeXF%g%^o(|M}q5 z1&QC&fT=rjdzT}oQ~4CIs^-H=x_eP!b$#Ix{~(_UR?`TFMIs1$B8ZXkJ|)CzDBIph z^&_L5U)-b0=h}tRC(9EZUu3}hvHw&Mt0!&Ba^02@&&1G$`PsmQ``(j5inR4aK-yGg zHu)aVARNM543YvW8u)yG@*t2y6ogL&tdNX)A-EQRr@_Dzaeb;>e@2megrJ{*@ zK}RtUgrz-muNGMds)bft>VT6#6v8mlWzbz2yri+*AWRv8@RdQ|%=ExWU`@3opM1k+ zsJ19G&4`kfFXm@PyZ3d0!gig#ndJlpbn?2o>IYBAHF~v~Bxu?88|wzf%Cv*f8+!h` za3pMuWyyb)J0QnRET>{N*X1=S4goJz}P;dj4Gb zGs0Hq%4+>Iv)$i6AQ6O^|Jv>&W=ksP&y_s^?20;9Qs*{*DDx09=U=Wt@wJmf4w`s)(tjvqpl&{37`<;-Rlq=%r-w`WGD-vLta=(y7V$z* z*&I}7)iqv$!zvO@JQQMb5czOpWWQZg;U+8oeL?S_?*r<*3r7p#S5e@1aQJHN-P=2Xr7c}ADH z@dX3UZIKRfWh^`Jjtl8U=FNG|{LqMHstSjI_OwW=if2qrQx#t= zqH3O&Al2Rf6;^%OCJ$ad*th{55fPkz-qnFF@>hqw1njM>)q$$_Umd9R z341<>K;=0SL!W)k71C5>(CoxKOz#t z{DDNtvWwJs<2W6LDe2rf334J?vI@r9|M`zq21dHzR~T3yy5p)VG}CZO<&h<&g`Pk1 zd|X^8nl!$jMzJ@z6#`L_HNV$V1)+!in9z48y}(yl5z7$NjZr>t!w=L&dlV*4CnSKJ zH+~Q<%G!@X!`_AK`*;L9ZqM((BK*JQm(>c3p5&HoF6XXj6HH^@0UheHgF%18-eViE z_UYAN6phD#)g?U8GZH6p&+osb4;^N{vy7$(qD}c(!s2l?`!^4O!N<2DQcn$NMDm6*bY!x3x`}XvXad7yWY& z?8H1aAxe9USc1;sAVWBTR&d`Nw=0bQR^jngqG@;R#dL%qUXj8n+7*>NNw2=oc*eKx z$m_c_P7nNif?2V6#JTdNghOAnyLl&Km7h5{!c&t#sB!@pZz0a-onx_ zz$ldrD^>ZIqVnJV$3OqO|LVW|_-Ft1kAL~U{oQ}~H$VO#fBO4>`8R*}@Bh0W|Mfrq z{lEI3*P!|@=dI@-o_{EPc>cT;V^B}D?(Uxdv6ir64?q6-U;X~S|5v~NCx5zTl#Dgn z-|znSfA`CID~xlSk~5`^{9pg1pnF)l=$mzW>=2iVrxEx_qv z&V=NYaCZCb2a~hGPa=jQj%$Y}gzGEC2=q&G#GylLiLItoY)q&GBBt_&m^v5YT1v>^ z)Q`|nCua^lM!@1T!;}#YGos(kSx`ceTPjF^c?;N3=DF^bvTP)pA?wfBOsyGbtN|c6 z8;3w$c0#;PC#Vicljmz|CJtCqH+lX`B;=SU3W+X$PG+WcFf-j^u74#%cv(doXig@f zNLoncvCMXLtGBy5!=Ofta{E)M1~->_R^HY;E=q1_R#O~uCG7WEZ2Ho8QZp=Y)1;(b zI1a8-Y3`K=uMH-|c*0py!N*h1vYMWyo1RcG9H!C+BezFqNkk@3I7`A6e8O3N zKS_`N`w31bPW*J*&>LhS!X%X#U8O5`$CE7NNVj-_yRLfd9QGAdd=A?%a$9QuM(C{oRbfP99u2pJ-G?M zdG>DB0BEnTf^h7P-bA>7}W>dRn7I32|XA;6YaLqS1I(M<->%Q_d~N@?E%>fA>y1rFGVyc5+9}1s zv3G;}X2qJXeZBwNmdwj2@N)mRtr)7u?DxV0L2(U1l_AKrPS^^n*JH3^42L-0j!P4F z8sYwKT%urUu@q^>#}yt-YsQnfhDA=3)Rfz_cqsTFEcHg-q#L+lzjPgXF$OQ1W(*J0 zDOTNL=9p9}QyqE!QX6vCa79nFrAAkjNNabbVVXFU3g2&iV9_2o+DN3cD8`> z{%Oak(fZuvSXaiLr3&hvHRL@Bl*K~73VbABmaG{b@0}lf^#qp3;r72YhJ$3)b{$)dqE1f*aIf@QpCs=Z7lUX5)lko z?iMqYQ4KavKKBjz5!$nE?l8BA?earp!myKU;RFCma#zoNaM@XO1#^nzXF8evdv< zXfvq;RsQHfT3Ha^Tt_r6Vu+Qx>ib`mu0r zFp5>z22q^j+Q1$(nvL>SQ@A$h#ZEs)7csats5P5q3r%BiLQt#PP2z)~(X{K9g$5+G zQQ0atNOH4YZV-5(~EiL;14{KPj`n zgRW##04IPzk&s!&99?GQVIOqfZx;=K7!c3V$2j2ynG_(Nj*U6GUOWY&p<&F?@e0L? z#F}l64&r2tZ6&`*A#%QOQ0t3&bE#Y&{8}eFVp*(@(}jK9Eb0RU*v1?kE-C}(GWfb) zI9BeSLdswEG9502OB^l)&LA$mZRGe#P#njqL*dS1&x2|2f*_M-zogm6iz47F#p0E~ z+pli;ld1%Ws8#_FDhUIcR2}BJ2E><1Rq=6#J{_AB5y>9ZEVFI&rcoS>hHD(I+74v{eh=D)Z5>&aA@J`~zTJ@xR(pt7=eQxJmA;AEx zd59F+3+OkY^5g)9ah_UyxIitQLXqpnQ>FOT@q?VsnT{VGgB&?~Rk^4}BX1IUk-;=w zK#7GgpWxA$(ZH3W$`c8d^)on{60v@1`OD1mM}D6uW}qhO#u;F`jZyoVL~PKhg3~fX z)k;fVMbV1rQPCYSzn`*IMpqFDv{gn`3lXt>p4V^&eCRb6#|wD<0V;s&h!QxRhn6|( zy1mOGHBOF7LkxbU4xqFd6K;~KkyRH;SZEP2s=G@ER!$9UP5dg3gAm_ioK-STqoAoz z=Z>yeCG$w1u$#3die(>T1e&QC7<8@Soj4(lqR~p>lF+1OIa~?Y9SX(QWb?;M5mZs1 zU8M1MplSc>AX1tj%5e)pah?l`^`&FwDxix7dbVJoy#Df0p5~77CV#;)4GmIG@wNI? z_yw}8tg=V(;%iesC+s=WyiG7oe5T;kccTl+H0}kHTeyD=rUwOz3oQdEk`>%kbxGi+ z#05d=(_%OFvmI;*GD#)j=skWAOm2+?NhBr_a+et}WD>wZ*RiCQ2C9+w* z{H)WKUNbVMO^DW|6DHR)z5#Q(1@m5X@+9t$pAlY2_eYrk>iuLG!L@jP3apSWj4~%J zJ)13?xG4DtvK^!&qMv9xthV&bchu9*eNFvNyRwpgUb69kk824)q;IMP;IKNVTA>jU zPBc|M5Y3;ES3OhXgKJXPuT$d|h|uRtbo>_T@TC;$c%z{2%52D(nJ%Kc8>v?WqL`xS z)2TXm3fnvD&0*38NYBF&F;X3Uz=sOPJdNv zeei_Y(KOfieVtHeA*2Y;WBg2#MwNY}X3TS{ca*6^rc}t)4#F9lUN}qB3ukD0;Y>}h zOdY6ukA-O};VexhoS~_NGc=WOmZlQU&{V=HO(oC(6i-G)I>Of^Z+aw7aZJ{Q`+8?P zz!KAJWBx_}W{F;Zp2C7GF)_&<;+UtHdLvBhLOf!Vi=j+S!k!Lk$ElQe!8U}y0*g(h zwIjcO-?j`xG)9_|L~Ity(_Gw7Xl-eEQdbKK==xg82X&4XSmM=|)&kR7Hj2hlHI|H} zN@=m=lzFHUi~SHK7MP2Ogu+iTCH}B-(m7aFYSCDenZ=)_(@=)0tvt%p<%Q~t#`qEH z73^uFHcD>;u8zd-MRGG(bEIw&MPtUK0#s$M3T4T5EcYgC!APIz|pOLR*y`CHPnH#xcaD~H>3-X*F62K+Q$1s4p-(+MNbMzaT%&9;ZX7Q`6 zbPA0*!fsY3wFp+EJh7WC<#`{M`X^|ad+ibPq1~raA2fCL6H0x#K989;12ECPg5 zf*;il&g!Bc#RbXAq94UE#v;+rGK;b>VNs@^W-G?gOq`-b8bspqY>Fwy^=ub0#olU6C&@RYj4-KZo7=dmf154@n!Jm;f4#8#1r=W{s)$x& zw%^07`DKiTyeCW`3hBf{R6VOJJZxm;^l}#feJD?y`8MG7K|0`1!T5)E7A? zA*^}UBIBFh$Q=_+mtq`xu0K>HX0#_JElY`xex0%!mwW~-LK+X0nD8-22NPJPY?#X| z69U7O&$6^|a;Y0Lh5MF}*GcVWDXmj9o~f)31^&xm8eu}DX?!i5Xz44sR80(16tza! zC1-oWJ9Snqo76g0#Mtlg<5poSCng{Z)3aGlBbg&7^B#9Ey?BuBMq%SVK{u!5 znM3q36TW`+tpe73DDaP{hLxgak-1o;SYolL#+T-Iu2x20#};b0_e<`V=$YQ*#>O*s z`*j3Yd6}EKj2)>GTWi!69ig(abP95mK^E`Q@ig*!Y5#7lFSbED%YEIAxI{kBdEIg! zcy5WMorOKPCAq)5D>#dmc)Oda_UAg;QYw{nJN9;tWIls#CW~FPDMOGd=`D;lGFx_# zs@gX>>`J;?IqXX5@|@Vbt#+J#cdz4AWqsbqcc4V!FEcOwY)66=yHc(yF4E>{T zG-5_!vM}Edi6(xNZuM8{Q2S^mJXE+P_VYXlMzJ?R`FwA-V2|f}XS4fNFTjsO8GjHI zdtTTZ;S`TsxWqsjyE_R%>^>G;PbwtI0hr<)`2G@-U=;~TCb-aJ5$VYUD2nVv{>%`a zsQ!Q-B0LF}3r{`^q@G&Jn1e@(tKWx-7=xuE#?JwsCzU$qfJO;AaDS0=uu$Zja}+7j z%c%g)byWe}0pYBCX5pLGicYMsf_q`;-fFHi+MPMl7cRfsMH0QFB=08^-l?Q55OR{T zO*)v6+=MKtg{E6&ESAT82A2-2$ku);j}8x?<6?&n518X;^XKsJIWBhRaPK+(p?h=C zMXbwUtcX4Zq^LolgO`eOR+o8+15yT1RiE5tBooO|L9H6IjKAsYIDWpy)kymmbR>%V--u&Lb* zIWk5(=+?`)?+O{C?>e5#nv2{evait1m3;+nrtE9vCQYYQ30QwMAy@B_LM|%Y>Ms>; z^;5#FHD*haDd>`X#+Aifl4rQ8kV~=x|359_61b(<_AF)SGd+Qv_i%>!kkWb)Zoqj4 z&meMBT$j*I^Kt@LGZ!HZE36!sm<8`qv%N+9(~*nX8k;v8E@=TW=k=u~&{vrrqo3)E z>@h094|tEE#{uLg-~ugC5B}^tpwS-)4`_)t@n_-yb+Tom+5`VWKJcm5s`|ty8TpU% z6`uIYd6HME{4`H@u8f=Wa(~k2y7nNKr)cu!@CYqTqJVi1?Kn<*O(pGhq0wHwJld;f zcWt-PD+}6d;5t)Rk~!l9nZrDN5!!=jRm8dyN7~Sji`Nxfzg{r)<4jNL2^pP~7a0Yd z(!C;sm?J8El61jR*%N*I%G(Gntw6QZmNrb)xvUNsXK~{}s&0QDc-aqx7g6KS0-CUi zUlX~~OrFC~5=?Ze$5)p5%bmV=wMJTT7CCxYV+d6*ZgnUjyz`phq_bofhTm-XW_LBkNrWg;k-GuArMRtW|5 zLa2yryB_*-X8xtXDV6i0%@XNJ-I1(PuwfwQFKg@7blkl z1@a=yBX=LC@~B&%IXXz?1QX^G2AwZxaXq)ivjr`lE@<&4x5dK+EgmgsaWA*UlLak) zTF~OV+!ps2wD>;B%SyHTCb!+U3)+3{=J+w{d%!COqS*AMN@o=`b}rr0$t{||-~Rgr?6nD+85dq37lAk-L0!RD z7{mOQL6Z`&<(tJoAs)00{`nRU$Rm<{E(qzK-CS{u{pl*tQ0jsq&GI>RGXep{IMf1! zQ5B>l$$OykU#3}%xnt5)q_uS~CS6toxePl+!IIWv%y}a*m3(Ne?0Q5W(QCQ`a>G3J z8KJG#0XmyHvPC@F%oX+Xe~&;rq^2GNs#;OvG|6aCnNd|bR+cW&c^XO9^N^$q&bW!f z{weXuorNZ6E2GJX`_aygdLy`_X%yj=6X+rNZ@K8fYd#ff@b*?k3ts-`ixQ`4l(@-5 z3Ho$;izBe1$V7<4)e!;)or?{cLUvZo1S({zVkc06#&&ulJb=blMgl1O^TmLpGzRSD zVStP^oVEHVE3f`wSwLYaw@M?xKnW?V;DD4{<>G)c{3k&J-rlO1z{~%9k>OJs8Q$d~ zgA%?q8z1&p#s}6^E;=NP4YKMcut7?ra|1=xa4BI(v}h0J>{r|R-YE;fL?i5z{JH=3I_Q}JaqFt zLepD3{a(ApcgJ{@%|a}QR@pgA!T3_e=|LjOGM5WN%u(!y3^!%q&a&e;@F;;`Xbk^= z|MZZson!+loungnvcV)Hb}BI(m%T=ruRvFqSdufXl`#!;;r092&zoi9soiz^L{zha zE{TvP6G0$rhB|7ORxonnS1c$V9gaF_RJSYE+%+5ZCSkeR%}TXF*>m5k`p_{B4+STH zF&%053#0z2FUMB9gZPty{3h7m?jTM$z;Cuil%FILMY{uDAk!!KA}#5Z1eJ{!1gGST z%NBzk^I1LN*fk+)#tU2wq0K_Ls;<-luYDHa2~kut*!LXel<(5eQL+M0n0MwV@y=V? z`L%o}^X90n`-1M>-lblH8nEZq@PqgaE5%<0KBj|J9wScd-! z4z;|8@g}I|r9)=Q$-E&huFWaURML5A`k6mgs@yFGNj`H+2k`|7q{~XvPneQU`=w@N zoZ}H5hVIzlRe8cIYD&q99gKo$e=u@Gy!N&t%F5KY6{YZ5Rg^fZD(Qz_)C-tE12Xxy zEb-NJIQ0DCvD?FzQ^6ey>CS!_L&PGd=ul)cSlU|iq$$|sRUA~6JFXa(BqMk zzbtr#dfZs05cj7&Y%+QX7q}iZ0%g_=%1P0{n9a9U>xc|OcMya}Ztns#ab~z36AA-p zK=Iq52PyqRf)-*4w2pRMCu{QzUXy=!#)yG@;b?>MpPU1s*uzn*AMc>W8C-P5`0!heT*ldiUGJ4wi8D#Lr@>vQQ>aV2?^?OZ*`fZ*J zwO4g9#;(+0`r37V?V|5MhPu_L)EZpk`K2PS3jEmhd?LpBN+vUEk*mw#5k__eWiaN+5}O6Y1soNjNmNH&8- z<)oj4@uFhP1YzPWk6knLR*Fv3^;VBgbLFiRTjtVR9vEBPspkI6_ zlWA0MMM{6X z3%XRb09`Rlo=fKKLe=kHqZ{};`ZYRqdNDe3zQ?7}2<^e&m*1ch=UZI*!9$;%uypwydhfi%=#6uL z(Oc&m^xF9zy>i|yjga)E%B8uXT)SngmCNPD6sIByHV~!$&)sfIYT)bcQ>f#SG(-8D z1Pe`L3&(goIV1P(swxPw1~7g#ew^yoCTT1{FZVaH1n8dlU*p^9q(yZ3zkdr{TuLjl z5w)2zdIvbf(R48IZt`F|`5BKd$$8IWv@287`BQo$WFiNQZI$JUM#Z2mng#wr zFdn-koJtggF-j}`tf0O#Ty57(z>7QW4G2|yh@+lyZx*hCh(Q?d-yZUoR6ee|H;TA%l35dSJ6<{@}b7XspuXEJOh9+2-&!sb ztUg}p+~lc-D_r+1A22b&y2oHuqrs;dFEv+OKGxVBz9b=n$CT_{9V6gf_f(_RN3p`N zyRLtq!9ww;8mrsyp9lLO02v9@!o`EV=E9U!hdYgMSe%Te(bEo^2zAnfzW42iy^Pz> z;Nby_g7Q8ATG2UKj8LMpcH39iLkmB-lHjP zQm{LH7mh@nb?csn#VbKU7(s$3Qhfa~=;PfqWTN<6U<+AkgLOCT)2v4k99g5FMl3BO zz9^2srH8SE3ZWqtzGc;)hz5BWCI!P_8b1~!kvH^yR(ndjUarAuijm7Lbuyh5h#m2gR6FFg4ny}Ehh%qTZM!UA6seB$+@X4& z)Fbk_tC%-#e6g{ieJ-$%mYQfQ*O&woGriHmAc)1JRUI^a8(rY55Q1M3b&kCGx*_o_ zlkwX0)wAm(nnifxhQzwec)kMe-V%yE&^ zS<5^^aOA-pvTl(Ds)V6OLxATv%7=x$=5cSCAdpyB(ka??h=5HMz!+B@_s`*AJ%pLl zeZQ#tz+3geqSAo$DK#P?$MbSeqJRd4m>h`~%Mlmh)705Kwz0zn@G*dY1U*=z+GFO#Q(~Gd84r;7LNH?*SjSI&d z7l`g0)9e)PL$LINDY=cpwMUD1O5vYQtoamq=9fGMLO|K1Cy^A{5%@X7)1r3(m05B;Vu4{fyx zVkzrPP)aTEG)Q&GxGpLV^E7iA?tKQVBVxRzSjU%1dctQbkd1?f+)?imBs`Q3d+&jf zx*|AH2VUrlzn7-eFVaa9FF!H^SK7!lOc^hz$m39E*PJYQxD0kez^oz5MDC7=Izps!NX{F-H!|Ea`h6g9**N_WJQfDx0Lz0v8xG=29hSGAS|_VZWAJ*PW+{ zt9A8=T}QL7+q(n<0iOn*b8mxb+#;kUS_7555Uu&3I*14drWG+hQu6vz?$sUfCyK#zFp$3}}BSlqlV@DFIgg#HWEOKHDQeL{5ziGKB-2#%_) zYy9{#u9M9o;HpgU5D!8eUC=Wv5=M9|nYewu5BvSr@1+D zZk0AtB-gkCXvcA00za^ay^)!}hR@}?)#1|hv|7$wmXG=?Y$5s3IbS^UHne^CAMn{}yoZS^@ z#-0aBrhHP}4@%LEwVL+`UOuJj$Ce55i=IE3#zww2->-P5sy<(qV{lcUPTOu;*SVOL z=uI8s!hJ_$?lCb>rOJJF5{B=WuMH7WFJl+!GOM)g>M#L+;0g5=S|xWKG?yIddaxdF z&9;0N(hUxrJi1CPv&#sKX*i0&sCYDb7mhTlME4kxqEIp#Bcz3@M3Lu2LMxQl60zk> z`yUXxSCE}omna$J`ye3Md371_riZXoAwa=T3A&s%Ub5&WbV((hl}HD&(;MNp7%KKv z%}t(`w?AlDLY2aTg`~8T-UlVGWQ*FC`h;fLViZmPAceU?5g^}bgc2P*Lw^8UjKTr- zAEdm8FUl${_C`U3i2|Ljr5+V&*_GwJhiR(jDC0ccOC8+2!xHP}KzPE>4$*j`(n@=Y ztFez9^>S%IoJ61J&9=nXypT`13S z+3tPF6HT9lHjyXB&bqt=xI_0^19RdKl>;C5A3x|`(8oE0j@uO`Fs{_pSPaS(jF)bB zNhRA5ePPjHFXHj&X@*irv9WWIc3!0B8^lm3S@-twXm#e z8TUhF98tq88ip37%)CaEEQctIV$!}(1L{o%px)*K3j6RVJ0Md}g6br32TdbZ5Qx0o z`$vhZO70)E7Ti4swLL0QM=zj{O=uC%PoxjrQG|`Wm_MK!L244+2(^!eu9h-@^J*Cu zy$SKayIJ-Y>hb<*@qG9wkyQzN5)}bNY0Ia~A?fB%Ni#k2jLM_@RJ)`6cqB>hNh*Po z&$iG*q-N=T+LmIUJn+Kt3Y?6Lr?~_QZ6$f)sJn<7N+KN!gnHCS+4mVQtaEp`j80{b z9J{H^S5)J#tCPNDN1eNb{ZF4dQIfz{(iV~KCyY}mOKWp^lQ9=!YqG+G*n`X7QYNI= zC2x3D+qsp{e$JU2Z)Mp8wYC<{^KHgFsY)f)mv|ZU-Td>a!XAc|a!MmpsSdNHZydig zRx(c*AAOg;k!8#oy_kI1K|D&Um6e+n%Tm0&m$!*HOFw6XDDY{5d`2pz@>YRw8{Rls z2wFv3gV(uhkWg#QUkCQcuGmX8W8ncKwGLaF4k8NtS4>H=YqYOWhi&dwQhO94^&%MUg=&T4W|WGg(KI2^eed7z@l{ z*swnt25fj2`(-^?z*rwM{%3YaJ^ju9!s5M%$cQ|6N!`7kUKGG0Gb3JHFRpj|9yR1U z;^(~P8-%gtiZuQZSqt6pQEfL|u_e=ON14g*6xy!x;jXFV%el>~Rcg4!!O#$VD^P3U zg9#Q+HXsE1D^EEc3Tz4F5%B+oxRSElPQ)VW=gTSNThcK`ZOY}BN)&n;u}s6toIxOk z)*b@6?Rc%$0V2BX?jIiGm&1d-9r&_;ze;4B?>>nLs;@zFS!+lJ=@9l^* zt%GBM47YdSiNuHd2blQy=y0bcvEq0@?E~-dXvZNxhVOfON3C6lJmvv)L;J_vA%6gm z_xC)&D1kcc?(REn+_4((bK$BUPoUWf_vPWECl5Y(^61&=Cm-KC{UAU)(CxmI+Pj}7 zaHt!w^oc}Q!N-s{zRiJ=MC_q1I009T#iWuU| zs6pZQGs{GV5NSd{Jopx24w+9oOQ;BEhfQLl zO|qOqlal#OBG`}wgMsk=tqszz4Nq1(U0m&iUO}zR`lb$npk%a%dxxr1A&_!)EOhu} zY^uPAViH5A(8knRt!A{>Q#C7AN-18~sMbd68Xa#2L1{Ma;=4r^U$f?7JIU*=0v8J4 z1_*k~1IrT47_zhx&TRzm+f+yI4NGn5v77JrZRWJMS{p%-f+vER0F27Jp!9Az85<_d zpd*H=&%+)VFx>!TSc*Gh5CjE!BB4o%_wCe0)vt&-%^f33oSRH81v}bY>Z%+wfHVf} zmTnL&-7vn%&b;$>SU*;&Gn<9gp-P=BGZE1WLl&wL3m1>rD7rFuEfnJwGd*H@lvbSq zL7I0jTJq<8yAcF$H7~GQ)tMn{TbLYgS>KIR#`@F4%r?>OfE4CTP@F+VgTK1AmgbT? z)+LX^wUz@y=MGC9o_VZ8J) zjp+!MHaYw{w0#jduh}gA&i#^LN!$!BnuUNSccv@^;pg+Gk4~b|I0`{$R3aeUQV6)E zTsTCd?LkTEd!>{-CdQl+@{ASgAihJ=@TE!@qbtlKido7O6_gwhRo^RgbI|@dr1Okr z>e5;fh|8}P+6n=F4r!Hb4rRFG7}VkCyb=&7d~qq5y;xG3Q80mMl&mUXKMO32Q22l? zjfBB8bEavKx@pWuw$oONQ4(Bi(=p#3q26&D#~%RCF3Ye*lc#o-0+oqP2&*uOzU_5@VBpj^A}(I^&h|f z^}qb~pZ>?c{pM${|Mkyb|CgVC@uzh&*w_2nP^ z>u>+*=db_dr@#A~zyG)2{OrqL{p0Wc`_Eth=`UXY^ygpx>M#D!AO0t+ZV`^uBAhH+ zgmJjb$HYXQ$dDzJZ3iyObqsOfk))0*RBz5(u%jTB3$|e8Hn7pKhK)4$z``8dnMPSt zu-2VvxFSyt*W{_;8ay?e%TtNssa}z%h83RbN}lSKcq%pz-LC6)#qYX7kJX^Ziw9jA z;xxeMN9;zvMdAU+A2{HJdr&4?@c|D)cHMZN<8ARXye;nR0_6A)@V0n#40p?)!1rUX zwYTSJP_yqLsF|wRhRs~mT)i6zi@n*5;s3iqDqg??;YAHe(r641(r63`#B(RhiL+1; z7qz6q!fM1ro4Ge6b#Gw1H=f;+)V*~`D4x;F#7^CtEe7cl^V#hdb8qv#AFU0kuqu?w z^-x&}CIl<()6I~G+WCAl$#f0V5O!^>ABsT|KPBK~Eu0mi*r$Qzmb|Wsa%=QC+5sni zm<5a^pcwlJcOO4>Y!Da6#&1zc4=d@(N_wi2o~)#&s_117&bcT+NyadMp$|4%l4oBA zhX+TPV4@%PgME*Tf|iFb#v6PttCbQW++wmvOrv16?kVm#-u+MEi zHjOl3Zi=EGJRzc`L;~vqTx>SDBiUE=Mi^X*J6vd9kyNhGg<(@eEbd0SAl=B&?HaJ3 zm@aKLQ}q-Me0jlYDkerbGRQk=P|`r%25Go#xMh4*5J=*e^3)N(w0E`mtwAI6-(Y*{ z7LjI2!>vVc&9CK&?%z)g0Sj}Jm%N`oX16e*yJUqQzEnBD4J*R>20I_+V=+z}ny zEV#R|q0QZ$3^?*(;Au`gv7M=2By8RHCeM6;vjf?g244H&-5}lScW5y3AHEy(n@yVr zTO)^f8$kdYiOiaG<7ha%e`|Y$IwWc~?Z~~|3Mh#MTz0@h0293NP_66=D#8oaQsznJ&pP z(5asoTp;J#29vX)U7bp-I+ZrkVscvGCc*5b3aE>`i!%XioGg(uYQrl|uE-&GY)7*n z?e!j9u`q?h5DNiwViZjhCPePmCP)JPG7I zB_vO)_3HezqGOE~+_RnOWHz&xjfgP+x^c(^Az$+Rk05`uX|GVWNup(t_}ufb&F@Cgd^1w$nfJPB2vE05>dRV4?UU z@u%-8gZ5K;nfQoMUhqATC4b0BX$(&odG-oS{G$*?pT$04j>CkdanBDaky90Z^~D=l zO+ZiTKTq+u>5A%iQ(}(xvzLse{trm~h}*k9^AACr1DMqc(8HNMIQc`yBkqNX3gz2W&zyS-z-eL_3P< zG}<8#Q_uCu!?(Fx-fY&&NYTa2U<*uJ*>pC|$7*+KSE|A4idru!RexSUD!UkYD0Mn2 zM3wJ37^SM>GhgaWa|fHv@KL31cfE{MecsFc0~;DXukUx9Od=MR-XynL&UXvF1B$=R z!V|p9^MFZYwUkgNm)CHm>0`lN*_uZXtPQR*N~)j))@6VBT!O_5_mvWvX45WX@&NiN zRwc}J`g6;0;0D{JAU#sRaI55U;9ym(S0R8KUfi@DoeV)Xo9VD`^(i{J*65TD0_*gB zs}$^QrEE`kEQ|oRQsQU3mW~LwQjYgdtYUPym2!RX(8|Nbt(4(M?^#BqxK*;`!RNH& zmx@1kN(Trvu{iZ4d=*C5Atr_a&WJ*v&nKlm3I>6mR^k-UvEcg_9l@LwIFY`5G#tOA zTaz&cEXp0k^h~cxRSyr2I@Z4Tj^$g&-aC-b*nd~ceQ4wsryn@l=$43hl&Tq~rxqCs-&C0(xJ>TLhV&N%T%P;|nNIQU@u(*&BS&8zOV!M^9P%vp zLRv&kr&><$q=z>bXxu`II^7bQnP0NDQZl^Wtny$QxSG=L6&z94~{aT!=98*xHXVj z?25&=aI7*FPPvE%XbAg=rGy|@*Bm-3085F8e%X;|a>-{C8iRSfer?pDBM|8FRF?db z5y_o;Gg5A1NT}c`CXd}kS&m93uU;K@qF&8r7k9K)XDGSN6^lxS_TJkU88OiL{ON$D z%ezZkIjuV~X&(EuCX*3KH`VF}jBs0m{43vC>WJkx3Zn|js72{Lp$Y8W#m&S!Q{{G7 z%e|d_|4@hH%`fehc)Z4CJYdBLvUNAKDgkwWujWqYXDWy;gX$x7$6>X7*KBUoWHBte z9cBKqteD!7SuZa_su`BbPL@aBH3YI~lUZleZ|OAPE|673tn+i0Q;Pg$`7Y!K6^3yS z7lK`Nx-1fz%?yz)gz7C$aUCx>NuwCFsUwV$o3Qj=MGAueL{^D{3dGF-BFS7*-hi~3 zy+GFxBj;q(%H%E#JF0(-Sjoiz5_W021i86M;c*_OLdclw$4w=+NFgsuR;nnbZ?Z^{ zTHHAmXW5iZ2MJ5zOEgJ^(gxF%Mc@G=mFFn`4bqwyQVn7v<|AR5Qw^JD}*LP3kq$K)Jaf| zjb#7~zgR=$8KQ#hNQp3=ciLd(^Qw(mFz}ejU|>AfChcpuK{JDa_E?iCkG^GQ$?=eC zG6-)zBQXL+)>cRcA}df92t&2WQ#vT5EdnYPGGuBfh0|mCys%mjh=SjY=S-Oh4ARzC zX?b9XHj=G`n@F9k!~vD4DXokQ80gGSqG1%9+;#>CGmOSt1HiU`Cbo9>du%`&-#Iuq zWQ;bvcSz$qhX;F?bf*E=9|sWK=H=;o$GiPYk*B}Ee|XSco@cL5yL~3|cwT>}&sNB@ z%Z?9aIlD*wh z0pM8{%~O?$VLRL@;K#0a+=ovpe)Rh2vQ@7vR{WS$r2pUc$J%7)YYn#N0!}4(fVRetx9=h zWoq&m)f5hwjka5d#Ij!YztKkapMhR=wLAaW*n>41~^hDE1O0M7qFA57iMP#W-M_$t2lL5~Hfu2)xv=AF@ z^h)o2!ta7fzY9WPDd530m3lE>Ysg5qAMcpzug23IizK_K+5+JdXsopAio6sWsXpzp zqI!y4v&$a6%C%2fTWWAwn1a)VojTfF^o)`89QK8>;ucKA4e^M1U6_g!O0!ADtQNLZ z;-P@`OkMbg-%+>WbF|85@|FcMU`&zucO=zHG?c4WO8ygMNNI)6m~~ z>~o1#H)b?t4~F7=XHht2xi4eZ52`9xbdi>T5+iW)m?=>QMdeU3iDx2Yk5zAGOxmW7|QzF$a~nZ-#6Y9RxxkNd)VZ+<2@v?3h!Y}Yk5!Y z%cdBlrniL1UUpRK{(5r&&ixVS_tUI*;F(Azq5G<0k-l%-~;X&$UW&>oDBZo9RMJQoDHj-0(A1?%lNLlq)Vgn%mPVw`WdUu{8znOoROel#XXOAxfd#G#3@5o15+Rc)rreGkPwS z2FoWyna}4F%d%Q+_L;m%7N$_T-dWnYGDpMbgaJfH zVdw3B6x*^vji}#99TWSiApV*Qlu`%%BiN-Gv+g8L_!UFxm_$+8YE|Y7p;9iEDm)S@ zfJZ>2WP-L}UxY!ZEIQ=d98ZszMK%{-{^B2B|MD-t_{%@}?XUmW>%aTwMm~WXuYdZV zU;q6-zy7=b`Q<N?}7zYZ6>qTfe?HXxL#}!W1S_E9F$;SqFZr;CClHBVpn}r{Dma~b0V5Dtpoz7; z2L3tvWg3kGtL0&|I^`lxl&y#9+sIL1r?kGDp4_7UW;zgf_a^G6z!JH+KE6UP&dpcm66TO`d7w`R;nZ7GK*%wWUA)1uhoKj3Z=n6GSXRHq!DqnDnelqLt#l1=%N z5_u%VXK#UnPfh;kBWT)a>}=)l zS?&9>=JjpKIew{ri?y?K^|Wv-QuhI;U=5Y)BFk`VZ2&((In%?*aF}#s#==g`Gu!b~ z_nKY4;_1_x^mE=|u2J;4@#2}vQukP-Pbzdk&0h0Zn`sC*5#vrOY!v7ueYrivcUBvx zj?MIy>*Mb~JGDqRW<3@{Sb)U0q%8x4AqH@S#GhIx0(fl;gu<3@(J=@NaHZQ8DEb7> zfqn@vehNjSt%h);M_Gs~=b9->t~bhl5)B5d_b9Xs;Xxctz{L>_3#@G_lkw0pw6V`j z*P5~y%QAcCiru!qW)80?ZqwGa;^+)Q_>N)RX~+_MWhh#kM#=4bZK_(IPMI1wzOYfP zO@+p)jt{n`+P1VlY0>=D@vTc5)~6H-M#s0Vl`pLlH5rM7CdjZszG8-{f&mDk4V?{8 z5M>r^0E6VV;6;3q0PsZ&tJFMdhqh=idSY6o>a9)H2+&bjW&{eyXWV_?u~UHyN8!fB zdke1VV)vrrzmr=6rrPlBKfc)B+$NUgY}#PG(-WxSV5SR^XJAX{Se7r4@s-h{u}OFA z+IF-m9W2HfZh@23=rb;-hJ5jihXXmBT%9>qkvZu8eMU#@ULqrM<1MgCx@x7K^9xx; ztJBfq-C9u=(5vV#nmxc#s26TI^RydWYB%^BXgB!E+6~^fQKrjPzk~tXOig2NVaxpi zcePBHgoKhZJIEEbA{6E%Uwk11{3-0A1)(}dRxV^cZx?^(GT{=1QYwZfHE(T*0qrzI z3037z4*XPrgnkq8GIpt!E0f9`DYI);_mCQBjOj|c2gRag&BNM!TGC6Th8kK~UTecX zJ0)D|B~U*-rMX_Bu5D-hyq%i+Xl_Tm8fQy=g<|i}Fks(QffW|=xR95Ee}(GPl{r2{ zonZD&a(#`;guWHme}hb4JpinzTD<=)urgY%S=86Ij$ZzgXn4i!Y4i$E%`nL00$U}8 zcu<RZ6)+FWW)KL63%TS{p`kX_r4IXLH_;7a)aA@)XM zfyio_5k8Mgq@#rzr(B#>hMq=ApO93{1sx-yOvk}I5zx6sAQ)CFW)`_H;MrMnt`B92 z5mGF1hcrnaNwhP|6_J|E6dtKb(@sE8&oleZ6liCTumPcGqRjKnO(Fev^$5SDT2od#6*D0lKmbud(FT&AlH2ZiMI!?6qfO-0|+F7zUP zilMn4QEUo)QtSiD`_P+Iq>aWCY_aH5-ot_1yTnf%uRVxbOGo%Q!4U5FG5Q+2M!_Vm z*fkuI*LBUO$ZMYpUK@w-IpEOt%h6b{F#Jod;05nS7_b-nCdE|aq=(&Q5sQrz5xpLQ zx5mIWA%i4Q44(-;>0tphhBWc@4yH#knDS;|uXgqgnn0(AC5jq~(#6}6_%uqCwZbQ& zZlaB%72_0U;P@tl`t0^}-RN~*L)rH0&-0!Ut%e@>x_GAOe3dV^7XnoXjJZ4gI2r{g ziN0v-jA9oBk+bxhRQe#(Cy`a%6oa6I2%9cOf|UZ+qV7%=|2+x)Z0z3{m-bO8Q7#lV zw9{4&+OrvZx7Ar$ddEYQV*(AK0J9v&XLse5)5ND;ohG#H!A+O3Uh*Nm0WV4_;h%~W zGteT*vNW`=6l>-M@vtAwQv&jE03DWl>zKXxJWRPlNl_})>d>hUgovwkdQ_82twuE$ z5?6s`>+yhVb%l~Q)X{5Eu8o>(G8)y0-q;>Vx9Apk+M%#C{Kgc%;mZ2n8fSYQV2hO4 z!H5XDhISbGY!&UW>PdMrs+?&zy!=q44xoh)pVrGX9a|VJIM7mCTw5&Xtaa`X4929l zBnSvP7vrO2M#!xIfJnnYUtvC5xz^Yuv0)02&%AS^Y!@+O3w6oz&``KiV$(ko5rA}< zQ0N#4AX(cAP;wVT_}13TNdpQ&e2qxMm~&}!acwWOD3jjv0n5Xn?08~iq**D|U5t#? zA4XAZ+jMK!+1|OyY!y3T zx7v+@WbvRSNrJ@%3sV*w;gd@fGhmxGE2=A%nsP2eLj`cCmTqT0WnZCR%!Pj_?J*1X zY8HIJ>q3gA7@zVPU_YACoo6$Mu^?@E#81Klfu{gRN6@=S5t@WbVEMKJCjCl`f)O<2 zb;X}5HuS6OLzW5YNSUh8h;Sp6NG)l7DMA;4l1jsMT~1ur4QsqSnAmm^L6U5EayUx? z2Le`pGMjm%K4O7RtDntg-dsQi5n@#NIuxSHvXzaw3yiSJ8K6FRu~SmJC`KZS7%M+* zm8pFV=dHqNONO>fU&hgO1K9Y1=+UR59$G=YiWS}lun_jLd6|A5f;CVS^Ur~hytYWo zpCqLzbE#?c1E73sL=9ejd{x(K8EIi?%LCRTOGdo346HNkt90hFPCz5Luc#~5?}<8q zy3*P#!z8H-Qz6Du*%qf{YBcpW>V)%hv+3mYis5}Amf*^FO+gsRKICzdR(!o+t~|#@ zu2<3KucTKfcEd{k*R$Dzmk{lmEb!eHP*?Tn6LQv-k-_V$s;a0{S1MTZN>{JurL0`7 zKb_gpjyW~vXs(t0m?WK#(GoB3`9ATqIwsWY_KL#ad<}bIT5Wly!}CHH^sX+d=A|si zfaYRP84$&$ll&6E*K0hlHl7O=m@>mFyjavLyx1%BEqleR!<%##&E_Jp%s0=dgFzA( zfU;kn$!wwPnlm_GQKO!$5W| zFVS!3B5NGZ=$re$uH*Wuw4YSDzTypEc`a^mb%_99PhN0_eKU_wp}>7G8mG4(3Fl7} z^HG)XmAIyUoxZbQg==cEhR(hljk!3Dh(1%EsiEnaYA^J=`KpVPM@H&Q(|KO5C+Odb zBiEv7vml`a&KFqo8mz=6+7ke`z?>yuBCZZu|(dO|l(x30GOhkFM*hlgG3 z{M>0nG~Of(!Z0I;-d=0pR}qNSSqD)18z6-0rdFHUNBg_GEr(G1aCiS;-^s|~&arp6 za<1cpBku^l>>PW?JCGg7td>0^hsQ_9$Ezkj-rqf1ney?`!QRe_iL-O3{U5fsztc#f pN!(>0((#ywgXd451p9|O?&0N;*P{nJ?x(n@|6hys!&`@Y0|3^1{nG#d literal 0 HcmV?d00001 diff --git a/frontend-dist/js/572.7b80da62.js.map b/frontend-dist/js/572.7b80da62.js.map new file mode 100644 index 00000000..d36c506a --- /dev/null +++ b/frontend-dist/js/572.7b80da62.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/572.7b80da62.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./node_modules/jszip/dist/jszip.min.js","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cb6d","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cba1","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?99b2","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?256e","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?5420","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?f2e3","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?ffce","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?9ca8","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?e1c6","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?e3f8","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?fb2f","webpack://sanyue_imghub/./src/utils/fileIdValidator.js","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8cda","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?446a","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?6ed7","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?29fd","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?8969","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?411c","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?a03e","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?136f","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?4854","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?bd3a","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?09c8","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?df89","webpack://sanyue_imghub/./src/utils/fileManager.js","webpack://sanyue_imghub/./src/utils/dashboard/rectIntersects.js","webpack://sanyue_imghub/./src/utils/dashboard/useDragSelect.js","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?40d2"],"sourcesContent":["import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\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 { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"move-file-dialog-wrapper\"\n};\nconst _hoisted_2 = {\n class: \"move-dialog-content\"\n};\nconst _hoisted_3 = {\n class: \"move-path-input-container\"\n};\nconst _hoisted_4 = {\n class: \"move-dialog-hint\"\n};\nconst _hoisted_5 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_6 = {\n class: \"move-drawer-content\"\n};\nconst _hoisted_7 = {\n class: \"move-path-section\"\n};\nconst _hoisted_8 = {\n class: \"move-path-label\"\n};\nconst _hoisted_9 = {\n class: \"move-path-input-row\"\n};\nconst _hoisted_10 = {\n class: \"move-dialog-hint\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"embedded-tree-section\"\n};\nconst _hoisted_12 = {\n class: \"tree-section-header\"\n};\nconst _hoisted_13 = {\n class: \"tree-section-title\"\n};\nconst _hoisted_14 = {\n class: \"tree-container\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_16 = {\n class: \"error-text\"\n};\nconst _hoisted_17 = {\n class: \"node-label\"\n};\nconst _hoisted_18 = {\n class: \"drawer-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_dialog, {\n key: 0,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=768efd1f&scoped=true\"\nimport script from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\n\nimport \"./MobileDirectoryDrawer.vue?vue&type=style&index=0&id=768efd1f&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-768efd1f\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=62bb601c&scoped=true\"\nimport script from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\nexport * from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\n\nimport \"./MobileActionSheet.vue?vue&type=style&index=0&id=62bb601c&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-62bb601c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tab-content\"\n};\nconst _hoisted_3 = {\n class: \"tab-description\"\n};\nconst _hoisted_4 = {\n class: \"input-section\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = {\n class: \"tags-to-add-section\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_9 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_10 = {\n class: \"action-buttons\"\n};\nconst _hoisted_11 = {\n class: \"tab-content\"\n};\nconst _hoisted_12 = {\n class: \"tab-description\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_14 = {\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"tab-content\"\n};\nconst _hoisted_17 = {\n class: \"tab-description\"\n};\nconst _hoisted_18 = {\n class: \"action-buttons\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.activeTab = $event),\n type: \"border-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.addTab'),\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, _toDisplayString(_ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddInputTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_6);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), $data.tagsToAdd.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1))]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: $data.tagsToAdd.length === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.removeTab'),\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('batchTag.removeDescription')), 1), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-item\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.clearTab'),\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"p\", _hoisted_17, _toDisplayString(_ctx.$t('batchTag.clearDescription', {\n count: $options.fileCount\n })), 1), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningTitle'),\n type: \"warning\",\n description: _ctx.$t('batchTag.clearWarningDesc'),\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }, null, 8, [\"title\", \"description\"]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'BatchTagDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '600px';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n methods: {\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n },\n async loadCommonTags() {\n if (this.selectedFilesOnly.length === 0) {\n this.commonTags = [];\n return;\n }\n try {\n // 获取所有文件的标签\n const tagPromises = this.selectedFilesOnly.map(file => fetchWithAuth(`/api/manage/tags/${encodeURIComponent(file.name)}`, {\n method: 'GET'\n }));\n const responses = await Promise.all(tagPromises);\n const allTags = [];\n for (const response of responses) {\n if (response.ok) {\n const data = await response.json();\n allTags.push(data.tags || []);\n }\n }\n\n // 找出共有标签\n if (allTags.length > 0) {\n this.commonTags = allTags[0].filter(tag => allTags.every(tags => tags.includes(tag)));\n } else {\n this.commonTags = [];\n }\n } catch (error) {\n console.error('Error loading common tags:', error);\n ElMessage.error(this.$t('batchTag.loadCommonTagsFailed'));\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.addSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.removeSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.clearSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=ec3adcfc&scoped=true\"\nimport script from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\n\nimport \"./BatchTagDialog.vue?vue&type=style&index=0&id=ec3adcfc&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-ec3adcfc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"input-section\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_4 = [\"onClick\"];\nconst _hoisted_5 = {\n class: \"current-tags-section\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_7 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_8 = {\n class: \"popular-tags-section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_4);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), $data.currentTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1))]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1), $data.popularTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n onClick: $event => $options.handleAddPopularTag(tag),\n class: \"tag-item clickable\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1))])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '500px';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n methods: {\n async loadFileTags() {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.inputTag = '';\n this.showSuggestions = false;\n ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n throw new Error(error.message || this.$t('tagManagement.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || this.$t('tagManagement.addFailed'));\n }\n },\n async handleRemoveTag(tag) {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n }\n },\n handleAddPopularTag(tag) {\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=689f94e2&scoped=true\"\nimport script from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\nexport * from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\n\nimport \"./TagManagementDialog.vue?vue&type=style&index=0&id=689f94e2&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-689f94e2\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"#909399\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"#909399\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"user-plus\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[22] || (_cache[22] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[23] || (_cache[23] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _cache[21] || (_cache[21] = _withModifiers(() => {}, [\"prevent\"]))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import \"core-js/modules/es.json.stringify.js\";\nimport { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n // 移除 ?from=admin 参数\n const cleanUrl = this.fileLink.replace(/\\?from=admin$/, '');\n window.open(cleanUrl, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=1f787098&scoped=true\"\nimport script from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\n\nimport \"./FileDetailDialog.vue?vue&type=style&index=0&id=1f787098&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-1f787098\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, createVNode as _createVNode, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"list-item\",\n onTouchstart: _cache[9] || (_cache[9] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[11] || (_cache[11] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $data.localSelected\n }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers((...args) => $options.toggleSelect && $options.toggleSelect(...args), [\"stop\"]))\n }, [$data.localSelected ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"check-icon\"\n })) : _createCommentVNode(\"\", true)], 2)]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [$options.isFolder ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"list-folder-icon\"\n })) : $options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $props.fileLink,\n class: \"list-preview-img\",\n muted: \"\",\n preload: \"metadata\"\n }, null, 8, _hoisted_2)) : $options.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 2,\n src: $props.fileLink,\n class: \"list-preview-img\",\n loading: \"lazy\",\n decoding: \"async\"\n }, null, 8, _hoisted_3)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"list-file-icon\"\n }))]), _createElementVNode(\"div\", {\n class: \"list-col list-col-name\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[8] || (_cache[8] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FileListItem',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n toggleSelect() {\n this.localSelected = !this.localSelected;\n this.$emit('update:selected', this.localSelected);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=3ef86404&scoped=true\"\nimport script from \"./FileListItem.vue?vue&type=script&lang=js\"\nexport * from \"./FileListItem.vue?vue&type=script&lang=js\"\n\nimport \"./FileListItem.vue?vue&type=style&index=0&id=3ef86404&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-3ef86404\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=efb50eda&scoped=true\"\nimport script from \"./FileCard.vue?vue&type=script&lang=js\"\nexport * from \"./FileCard.vue?vue&type=script&lang=js\"\n\nimport \"./FileCard.vue?vue&type=style&index=0&id=efb50eda&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-efb50eda\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=41b1a7c0&scoped=true\"\nimport script from \"./FolderCard.vue?vue&type=script&lang=js\"\nexport * from \"./FolderCard.vue?vue&type=script&lang=js\"\n\nimport \"./FolderCard.vue?vue&type=style&index=0&id=41b1a7c0&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-41b1a7c0\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return $props.type === 'card' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'skeleton-' + i,\n class: \"skeleton-card\"\n }, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"div\", {\n class: \"skeleton-image\"\n }, null, -1), _createElementVNode(\"div\", {\n class: \"skeleton-info\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-text\"\n })], -1)]))]);\n }), 128)) : $props.type === 'list' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'list-skeleton-' + i,\n class: \"list-item skeleton-list-item\"\n }, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"
\", 10)]))]);\n }), 128)) : _createCommentVNode(\"\", true);\n}","export default {\n name: 'SkeletonLoader',\n props: {\n type: {\n type: String,\n default: 'card',\n validator: value => ['card', 'list'].includes(value)\n },\n count: {\n type: Number,\n default: 15\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SkeletonLoader.vue?vue&type=template&id=5060702c&scoped=true\"\nimport script from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\n\nimport \"./SkeletonLoader.vue?vue&type=style&index=0&id=5060702c&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-5060702c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=c3aeeea0&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=c3aeeea0&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-c3aeeea0\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_9 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_10 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_11 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_12 = [\"title\"];\nconst _hoisted_13 = {\n key: 0,\n class: \"content\",\n ref: \"cardContainerRef\"\n};\nconst _hoisted_14 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_15 = {\n class: \"empty-text\"\n};\nconst _hoisted_16 = {\n class: \"empty-hint\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\",\n ref: \"listContainerRef\"\n};\nconst _hoisted_18 = {\n class: \"list-header\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_20 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_21 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_22 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_23 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_24 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_25 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_30 = {\n class: \"empty-text\"\n};\nconst _hoisted_31 = {\n class: \"empty-hint\"\n};\nconst _hoisted_32 = {\n class: \"pagination-container\"\n};\nconst _hoisted_33 = {\n class: \"pagination-center\"\n};\nconst _hoisted_34 = {\n class: \"pagination-right\"\n};\nconst _hoisted_35 = {\n class: \"page-total\"\n};\nconst _hoisted_36 = {\n class: \"page-jump\"\n};\nconst _hoisted_37 = {\n class: \"dialog-section\"\n};\nconst _hoisted_38 = {\n class: \"section-header\"\n};\nconst _hoisted_39 = {\n class: \"section-title\"\n};\nconst _hoisted_40 = {\n class: \"section-content\"\n};\nconst _hoisted_41 = {\n class: \"dialog-section\"\n};\nconst _hoisted_42 = {\n class: \"section-header\"\n};\nconst _hoisted_43 = {\n class: \"section-title\"\n};\nconst _hoisted_44 = {\n class: \"section-content\"\n};\nconst _hoisted_45 = {\n class: \"setting-item\"\n};\nconst _hoisted_46 = {\n class: \"setting-label\"\n};\nconst _hoisted_47 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_48 = {\n class: \"setting-label\"\n};\nconst _hoisted_49 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_dropdown, {\n onCommand: $options.sort,\n \"hide-on-click\": false\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"dateDesc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByDateDesc')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByNameAsc')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: $options.sortIcon,\n class: \"header-icon\"\n }, null, 8, [\"icon\"])])]),\n _: 1\n }, 8, [\"onCommand\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.selectPage'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.selectPageIcon,\n class: \"header-icon\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"icon\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_dropdown, {\n onCommand: $options.handleBatchAction,\n \"hide-on-click\": false,\n disabled: $data.selectedFiles.length === 0\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"copy\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"batch-action-item-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboard.copy')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"delete\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"batch-action-item-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboard.delete')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"download\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"batch-action-item-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboard.download')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"move\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"batch-action-item-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboard.move')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"tagManagement\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"batch-action-item-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboard.tagManagement')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"ban\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n class: \"batch-action-item-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboard.addToBlacklist')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"white\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"user-plus\",\n class: \"batch-action-item-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboard.addToWhitelist')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-h\",\n class: _normalizeClass([\"header-icon\", {\n disabled: $data.selectedFiles.length === 0\n }])\n }, null, 8, [\"class\"])])]),\n _: 1\n }, 8, [\"onCommand\", \"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_8, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: $data.viewMode === 'card' ? _ctx.$t('dashboard.listView') : _ctx.$t('dashboard.cardView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'card' ? 'list' : 'th-large',\n class: \"header-icon\",\n onClick: $options.toggleViewMode\n }, null, 8, [\"icon\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: \"main-container\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[4] || (_cache[4] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_12)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: 15\n })) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_15, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_16, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 512)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $options.isSelectAll,\n 'indeterminate': $options.isIndeterminate\n }]),\n onClick: _cache[5] || (_cache[5] = $event => $options.handleSelectAllPage(!$options.isSelectAll))\n }, [$options.isSelectAll ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"check-icon\"\n })) : $options.isIndeterminate ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"minus\",\n class: \"check-icon\"\n })) : _createCommentVNode(\"\", true)], 2)]), _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_25, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_26, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: 15\n })) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_30, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_31, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 512)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.jumpPage = $event),\n size: \"small\",\n class: \"jump-input\",\n onKeyup: _withKeys($options.handleJumpPage, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onKeyup\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $options.handleJumpPage,\n class: \"jump-btn\"\n }, {\n default: _withCtx(() => [...(_cache[23] || (_cache[23] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n })]),\n _: 1\n }), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[8] || (_cache[8] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[9] || (_cache[9] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[10] || (_cache[10] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[11] || (_cache[11] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[12] || (_cache[12] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[24] || (_cache[24] = _createElementVNode(\"span\", null, \"Markdown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"htmlUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"bbUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"tgId\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"div\", _hoisted_42, [_createElementVNode(\"span\", _hoisted_43, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_49, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[16] || (_cache[16] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.showBatchTagDialog = $event),\n selectedFiles: $data.selectedFiles,\n onTagsUpdated: $options.handleBatchTagsUpdated\n }, null, 8, [\"modelValue\", \"selectedFiles\", \"onTagsUpdated\"]), _createVNode(_component_MobileActionSheet, {\n modelValue: $data.showMobileActionModal,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.showMobileActionModal = $event),\n title: $data.mobileActionIsFolder ? $options.getFolderName($data.mobileActionFile?.name || '') : $data.mobileActionFile?.metadata?.FileName || $options.getFileName($data.mobileActionFile?.name || ''),\n isFolder: $data.mobileActionIsFolder,\n onAction: $options.handleMobileAction\n }, null, 8, [\"modelValue\", \"title\", \"isFolder\", \"onAction\"]), _createVNode(_component_MobileDirectoryDrawer, {\n modelValue: $data.showMobileDirectoryDrawer,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n return fileList ? JSON.parse(fileList) : { files: [], directories: [] };\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 保存文件列表到本地存储\r\n saveFileList(fileList) {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(fileList));\r\n return true;\r\n } catch (error) {\r\n console.error('Error saving file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getLocalFileList();\r\n fileList.files.push(newFile);\r\n return this.saveFileList(fileList);\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getLocalFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.saveFileList(fileList);\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getLocalFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.saveFileList(fileList);\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getLocalFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.saveFileList(fileList);\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getLocalFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.saveFileList(fileList);\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getLocalFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning('索引构建中,当前搜索和排序结果可能不准确,请稍后再试。');\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.saveFileList(newFileList);\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getLocalFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.saveFileList(fileList);\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport \"core-js/modules/web.url-search-params.delete.js\";\nimport \"core-js/modules/web.url-search-params.has.js\";\nimport \"core-js/modules/web.url-search-params.size.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortOption: 'dateDesc',\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false // 是否为批量移动\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n MobileActionSheet,\n MobileDirectoryDrawer,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortIcon() {\n return this.sortOption === 'dateDesc' ? 'sort-amount-down' : 'sort-alpha-up';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n selectPageIcon() {\n // 全选为 true 时,返回 check-square;部分选中为 minus-square;全不选为 square\n return this.selectPage ? 'check-square' : this.selectedPageFiles ? 'minus-square' : 'square';\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n sortOption(newOption) {\n localStorage.setItem('sortOption', newOption);\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n toggleViewMode() {\n this.viewMode = this.viewMode === 'card' ? 'list' : 'card';\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n sort(command) {\n this.sortOption = command;\n },\n sortData(data) {\n // 文件夹始终在前\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n if (this.sortOption === 'dateDesc') {\n // 按时间降序\n folders.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n files.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n } else {\n // 按文件名升序\n folders.sort((a, b) => a.name.localeCompare(b.name));\n files.sort((a, b) => a.name.localeCompare(b.name));\n }\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n async handleTagsUpdated(tags) {\n // 更新本地文件数据中的标签\n const fileIndex = this.tableData.findIndex(file => file.name === this.currentTagFile);\n if (fileIndex !== -1) {\n // 更新 tableData 中的标签\n if (!this.tableData[fileIndex].metadata) {\n this.tableData[fileIndex].metadata = {};\n }\n this.tableData[fileIndex].metadata.Tags = tags;\n\n // 如果详情对话框正在显示这个文件,也更新详情数据\n if (this.showdetailDialog && this.detailFile?.name === this.currentTagFile) {\n if (!this.detailFile.metadata) {\n this.detailFile.metadata = {};\n }\n this.detailFile.metadata.Tags = tags;\n }\n }\n },\n async handleBatchTagsUpdated() {\n // 刷新文件列表以显示更新后的标签\n await this.refreshLocalFileList();\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=f746277c&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"./AdminDashBoard.vue?vue&type=style&index=0&id=f746277c&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-f746277c\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","e","module","exports","s","a","o","h","u","r","t","l","n","Error","code","i","call","length","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","file","O","utf8encode","I","m","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","test","folder","remove","generate","generateInternalStream","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","port1","onmessage","port2","postMessage","global","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","constructor","catch","race","immediate","assign","chunkSize","windowBits","memLevel","strategy","to","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","validateFolderPath","strict","trim","valid","i18n","dotPattern","invalidChars","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_component_el_input","_component_DirectoryTreePicker","_component_el_dialog","dialogVisible","isBatchMove","onClose","handleClose","footer","handleConfirm","targetPath","placeholder","prepend","onSelect","handleDirectorySelect","showTreePicker","treeError","handleTreeNodeClick","treeLoading","components","DirectoryTreePicker","Boolean","initialPath","emits","val","close","active","currentPath","navigate","pathParts","style","paddingLeft","goBack","isFolder","handleAction","action","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","dialogWidth","activeTab","count","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","required","debounceTimer","selectedFilesOnly","fileIds","map","loadCommonTags","resetData","newTab","tagPromises","encodeURIComponent","responses","allTags","tags","every","clearTimeout","fetchSuggestions","prefix","warning","splice","headers","body","JSON","stringify","success","updated","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","round","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","editForm","FileName","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","Tags","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","fileType","endsWith","TimeStamp","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","video","paused","play","select","navigator","clipboard","writeText","cleanUrl","open","oldFileId","_component_el_tooltip","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","content","selected","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_checkbox","_component_el_card","onChange","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","disableTooltip","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","Number","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","reduce","arr","groups","handler","newFilters","isArray","deep","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_component_DashboardTabs","_component_FilterDropdown","_component_el_dropdown_item","_component_el_header","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_FileDetailDialog","_component_el_radio","_component_el_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","onCommand","sort","command","sortIcon","selectPageIcon","handleSelectPage","handleBatchAction","showUrlDialog","viewMode","toggleViewMode","handleLogout","showMobileDirectoryDrawer","separator","navigateToFolder","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","isDragging","position","left","selectionRect","top","layout","filteredTableData","pageSize","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","onAction","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","FILE_LIST_PATH","getLocalFileList","fileList","localStorage","getItem","parse","directories","saveFileList","setItem","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","newFolder","removeFile","removeFolder","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","ElMessage","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","useDragSelect","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","toValue","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","event","mainArea","closest","config","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","MobileActionSheet","MobileDirectoryDrawer","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","fullList","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","selectPage","selectedPageFiles","some","userConfig","urlPrefix","location","origin","selectedCount","newData","newOption","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","localeCompare","link","href","download","click","tab","$message","$confirm","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","clip","execCommand","fetchFileList","num","init","videoElement","fetch","credentials","authType","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","extension","baseName","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","loadMoreDataUntilPage","targetPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","fileItems","totalCount","adminLoggedIn","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/572.7b80da62.js.map.gz b/frontend-dist/js/572.7b80da62.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..797cee8f883e58ba062b5b99b17cd822d54bdb9f GIT binary patch literal 142827 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
  • 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/577.2c9dad30.js b/frontend-dist/js/577.2c9dad30.js deleted file mode 100644 index 39ac8d4c..00000000 --- a/frontend-dist/js/577.2c9dad30.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[577],{213:function(e,t,o){"use strict";o(85331),o(19104)},2893:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},10456:function(e,t,o){"use strict";o(85331)},11393:function(e,t,o){o(16573),o(78100),o(77936),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),o(14603),o(47566),o(98721),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(s){if(t[s])return t[s].exports;var l=t[s]={i:s,l:!1,exports:{}};return e[s].call(l.exports,l,l.exports,o),l.l=!0,l.exports}return o.m=e,o.c=t,o.d=function(e,t,s){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(o.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)o.d(s,l,function(t){return e[t]}.bind(null,l));return s},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var s;function l(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return a}),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 v}),o.d(t,"EImageType",function(){return s}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(s||(s={}));var i=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function a(e,t=.92,o=s.JPEG){return i(this,void 0,void 0,function*(){return l(o)||(o=s.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=s.JPEG){return new Promise(s=>e.toBlob(e=>s(e),o,t))}var r=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let s=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let a=i.length;const n=new Uint8Array(a);for(;a--;)n[a]=i.charCodeAt(a);return l(t)&&(s=t),new Blob([n],{type:s})})}function c(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),s.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const s=document.createEvent("MouseEvents");s.initEvent("click",!1,!1),o.dispatchEvent(s),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),s=document.createElement("canvas"),l=s.getContext("2d");let i,a;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;a=e.width*t,i=e.height*t}else a=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)?(s.height=a,s.width=i):(s.height=i,s.width=a),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;case 2:l.translate(s.width,0),l.scale(-1,1),l.drawImage(e,0,0,s.width,s.height);break;case 4:l.translate(s.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 5:l.translate(s.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 7:l.translate(s.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;default:l.drawImage(e,0,0,s.width,s.height)}return s})}function g(e){return fetch(e).then(e=>e.blob())}function f(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),s.src=e})}var y=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.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=s.JPEG;l(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield a(u,t.quality,n),g=yield d(h,i);return g.size>e.size?e:g})}function v(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=s.JPEG;l(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 v=[null,null];for(let e=1;e<=7;e++){y=yield a(f,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...v].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;v[0]=y,b+=Math.pow(.5,e+1)}}const C=yield d(y,u);return C.size>e.size?e:C})}}])})},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)},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var s=o(99114),l=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),a=(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"},v={class:"node-label"};function C(e,t,o,C,k,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=a.qk,$=i.Vc,S=l.pw,T=s.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:k.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>k.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,[k.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_)(k.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:k.treeData,props:k.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,k.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:k.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>k.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,[k.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_)(k.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:k.treeData,props:k.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",v,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,k.loading]])]),_:1},8,["modelValue","title"])],64))])}var k=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 k.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",C],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},50333:function(e,t,o){"use strict";o(85331),o(29092)},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return l}});var s=o(46638);function l(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:s.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:s.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:s.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:s.Ay.global.t("validation.consecutiveSlashNotAllowed")};const l=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return l.test(e)?{valid:!1,error:s.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 a}});o(44114);var s=o(25507),l=o(16915);let i=!1;async function a(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,s.A.commit("setAdminLoggedIn",!1),l.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)},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)},99761:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return $o}});var s=o(78507),l=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),a=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"},v={class:"grid-actions"},C={class:"grid-info"},k=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},_=["title"],x=["title"],M={class:"list-meta"},R={class:"upload-time"},A={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},I={key:1,class:"load-more-hint"},N={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function V(e,t,o,V,W,z){const B=(0,i.g2)("font-awesome-icon"),H=l.S2,X=s.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,a.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,a.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,a.v_)(e.$t("uploadHistory.totalRecords",{count:W.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(X,{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)(B,{icon:"grid"===W.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(X,{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)(B,{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)(B,{icon:"times"})]),_:1})])]),W.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,a.v_)(e.date),1)]),"grid"===W.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)(B,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",v,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{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)(B,{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)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",C,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,a.v_)(e.name),9,k),(0,i.Lk)("div",w,(0,a.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)(B,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,a.v_)(e.name),9,_),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,a.v_)(e.url),9,x)]),(0,i.Lk)("div",M,[(0,i.Lk)("div",R,(0,a.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)(B,{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)(B,{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)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[W.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(B,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",I,(0,a.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):W.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",N,(0,a.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(B,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,a.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701),o(33110),o(58335);var W={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),s=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[s]||(e[s]=[]),e[s].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{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,s=t.scrollHeight,l=t.clientHeight;s-o-l<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),s=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${s}-${l} ${i}:${a}:${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 B=(0,z.A)(W,[["render",V],["__scopeId","data-v-550797ce"]]);var H=B,X=o(86975),O=o(9267),Q=(o(15616),o(81418)),j=(o(50333),o(74757)),q=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810));o(34396),o(4885);const Y={class:"dialog-section"},Z={class:"section-header"},ee={class:"section-title"},te={class:"section-content"},oe={class:"setting-item"},se={class:"setting-label"},le={key:0,class:"setting-item"},ie={class:"setting-label"},ae={class:"setting-item"},ne={class:"setting-label"},re={class:"setting-item"},de={class:"setting-label"},ce={class:"dialog-section"},ue={class:"section-header"},pe={class:"section-title"},he={class:"section-content"},me={class:"dialog-section"},ge={class:"section-header"},fe={class:"section-title"},ye={class:"section-content"},be={class:"setting-item"},ve={class:"setting-label"},Ce={class:"setting-item"},ke={class:"setting-label"},we={key:0,class:"setting-item slider-item"},Fe={class:"setting-label"},Le={class:"slider-wrapper"},Ue={class:"slider-input-wrapper"},$e={key:1,class:"setting-item slider-item"},Se={class:"setting-label"},Te={class:"slider-wrapper"},_e={class:"slider-input-wrapper"},xe={key:0,class:"dialog-section"},Me={class:"section-header"},Re={class:"section-title"},Ae={class:"section-content"},Ee={class:"setting-item"},De={class:"setting-label"},Ie={class:"dialog-action"};function Ne(e,t,o,n,r,d){const c=(0,i.g2)("font-awesome-icon"),u=J.ll,p=J.MQ,h=s.R7,m=K.P9,g=K.AV,f=G.WK,y=q.qi,b=j.B8,v=Q.lq,C=l.S2,k=O.kZ;return(0,i.uX)(),(0,i.Wv)(k,{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",Y,[(0,i.Lk)("div",Z,[(0,i.Lk)("span",ee,(0,a.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",te,[(0,i.Lk)("div",oe,[(0,i.Lk)("span",se,(0,a.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,{icon:"paper-plane",class:"channel-icon"}),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,{icon:"cloud",class:"channel-icon"}),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,{icon:"database",class:"channel-icon"}),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,{icon:"comments",class:"channel-icon"}),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,{icon:"robot",class:"channel-icon"}),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,{icon:"folder",class:"channel-icon"}),(0,i.Lk)("span",null,"WD")]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",le,[(0,i.Lk)("span",ie,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(g,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(m,{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",ae,[(0,i.Lk)("span",ne,(0,a.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(f,{"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",re,[(0,i.Lk)("span",de,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(y,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ce,[(0,i.Lk)("div",ue,[(0,i.Lk)("span",pe,(0,a.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",he,[(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)(c,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(u,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(u,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(u,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,a.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",me,[(0,i.Lk)("div",ge,[(0,i.Lk)("span",fe,(0,a.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(h,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ye,[(0,i.Lk)("div",be,[(0,i.Lk)("span",ve,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(y,{"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",ke,(0,a.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(y,{"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",we,[(0,i.Lk)("span",Fe,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Le,[(0,i.bF)(b,{"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",Ue,[(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[18]||(t[18]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",$e,[(0,i.Lk)("span",Se,[(0,i.eW)((0,a.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(h,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Te,[(0,i.bF)(b,{"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[19]||(t[19]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",xe,[(0,i.Lk)("div",Me,[(0,i.Lk)("span",Re,(0,a.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(h,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ae,[(0,i.Lk)("div",Ee,[(0,i.Lk)("span",De,(0,a.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(y,{"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",Ie,[(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,a.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var Pe={name:"UploadSettingsDialog",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 Ve=(0,z.A)(Pe,[["render",Ne]]);var We=Ve,ze=o(88559),Be=(o(85970),o(813)),He=(o(34896),o(69655)),Xe=(o(2893),o(74253));o(79899);const Oe={class:"upload-list-item"},Qe=["href"],je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},qe=["src"],Ge=["src"],Ke={key:2,style:{width:"10vw","border-radius":"12px"}},Je={class:"upload-list-item-content"},Ye={class:"upload-list-item-name-wrapper"},Ze={key:0,class:"upload-list-item-url"},et={class:"upload-list-item-url-row"},tt={class:"upload-list-item-url-row"},ot={key:1,class:"upload-list-item-progress"},st={class:"upload-list-item-action"};function lt(e,t,o,s,l,n){const r=(0,i.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=He.ve,p=(0,i.g2)("Link"),h=Be.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",Oe,[(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,qe),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,Ge)):((0,i.uX)(),(0,i.CE)("div",Ke,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Qe),(0,i.Lk)("div",Je,[(0,i.Lk)("div",Ye,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",Ze,[(0,i.Lk)("div",et,[(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",tt,[(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",ot,[(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 it=o(57477);const at=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],nt=["mp4","webm","ogg","mkv"];var rt={name:"UploadFileItem",components:{Link:it.Link,Delete:it.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return at.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return nt.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const i=l.length+4,a=t-i-3;return a<=0?e.substring(0,t-3)+"...":s.substring(0,a)+"..."+s.slice(-4)+l},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const dt=(0,z.A)(rt,[["render",lt],["__scopeId","data-v-4848c2b0"]]);var ct=dt,ut=o(62086),pt=(o(40670),o(88830),o(23597),o(70683)),ht=(o(95385),o(47358));const mt={class:"upload-form"},gt={class:"upload-card-glow",ref:"uploadCardGlow"},ft=["innerHTML"],yt={key:0,class:"upload-card"},bt={class:"paste-card-actions"},vt={class:"upload-list-dashboard-action"},Ct={class:"modern-action-group"},kt={class:"modern-dropdown-item-content"},wt={class:"modern-action-btn modern-action-btn-danger"};function Ft(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=Be.tk,h=ht.j5,m=G.WK,g=l.S2,f=J.Zh,y=J.MQ,b=pt.Ik,v=(0,i.g2)("List"),C=(0,i.g2)("Checked"),k=(0,i.g2)("Failed"),w=Xe.$g,F=(0,i.g2)("font-awesome-icon"),L=s.R7,U=q.qi,$=ut.c6,S=ut.Iy,T=ut.dW,_=ct,x=ze.kA;return(0,i.uX)(),(0,i.CE)("div",mt,[(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",gt,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,a.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,a.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,a.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,ft)]),_: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",yt,[(0,i.bF)(b,{class:(0,a.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",bt,[(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,a.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,a.v_)(e.$t("upload.pasteSave")),1)]),_:1}),(0,i.bF)(f,{label:"external"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("upload.pasteExternal")),1)]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,a.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,a.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(x,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,a.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)(v)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,a.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",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",kt,[(0,i.Lk)("span",null,(0,a.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",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,a.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)($,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",wt,[(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)(_,{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(16573),o(78100),o(77936),o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),o(14603),o(47566),o(98721);var Lt=o(457),Ut=o(76334),$t=o(60782);function St(e,t,o){const s=o+e;return{finalURL:s,mdURL:`![${t}](${s})`,htmlURL:`${t}`,ubbURL:`[img]${s}[/img]`}}function Tt(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=St(e.srcID,e.name,t);Object.assign(e,o)})}const xt=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 Rt(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[s,l,i,a,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+xt[u]+o[u]>>>0,h=Mt(s,2)^Mt(s,13)^Mt(s,22),m=s&l^s&i^l&i,g=h+m>>>0;c=d,d=r,r=n,n=a+p>>>0,a=i,i=l,l=s,s=p+g>>>0}t[0]=t[0]+s>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+a>>>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 At(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,s=0;return{update(l){s+=l.length;let i=0;if(o>0){const s=64-o,a=Math.min(s,l.length);t.set(l.subarray(0,a),o),o+=a,i=a,64===o&&(Rt(t,e),o=0)}while(i+64<=l.length)Rt(l.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),Rt(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(l/4294967296),!1),i.setUint32(60,l>>>0,!1),Rt(t,e);let a="";for(let t=0;t<8;t++)a+=e[t].toString(16).padStart(8,"0");return a}}}async function Et(e){const t=At(),o=4194304;let s=0;while(sthis.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,$t.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const i=l.length+4,a=t-i-3;return a<=0?e.substring(0,t-3)+"...":s.substring(0,a)+"..."+s.slice(-4)+l},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),s=o?.uploadChannel||this.uploadChannel;if("external"===s)return void this.uploadSingleFile(e);if("webdav"===s)return void this.uploadSingleFile(e);if("huggingface"===s){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===s){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const l=20971520;e.file.size>l?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,s=t.uploadChannel||this.uploadChannel,l=this.autoRetry&&"external"!==s,i="external"===s?"default":this.uploadNameType,a=new AbortController;this.abortControllers.set(e.file.uid,a);const n=new FormData;if(n.append("file",e.file),"external"===s&&n.append("url",e.file.url),"huggingface"===s)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Et(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Lt.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+s+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+l+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:a.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,s=new AbortController;this.abortControllers.set(e.file.uid,s);const l="discord"===o?9437184:16777216,i=e.file.size,a=Math.ceil(i/l),n=t.serverCompress,r=this.autoRetry&&"external"!==o,d="external"===o?"default":this.uploadNameType;let c=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),c=await Et(e.file),console.log("SHA256 computed:",c)}catch(u){console.error("Failed to compute SHA256:",u)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",e.file.type),t.append("totalChunks",a.toString());const p=await(0,Lt.A)({url:"/upload?serverCompress="+n+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+d+"&autoRetry="+r+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!p.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+p.data.message);const h=p.data.uploadId;console.log("分块上传初始化成功,uploadId:",h);const m=this.fileList.find(t=>t.uid===e.file.uid);m&&(m.totalChunks=a,m.uploadId=h);const g=3,f=new Array(a).fill(0);let y=0,b=!1,v="",C=!1;const k=async t=>{if(b||C)return;const c=t*l,p=Math.min(c+l,i),m=e.file.slice(c,p),g=new FormData;g.append("file",m,`${e.file.name}.part${t.toString().padStart(3,"0")}`),g.append("chunkIndex",t.toString()),g.append("totalChunks",a.toString()),g.append("uploadId",h),g.append("originalFileName",e.file.name),g.append("originalFileType",e.file.type);let y=0;const k=3;while(y{if(b||C)return;const s=Math.round(o.loaded/o.total*100);f[t]=s;const l=Math.round(f.reduce((e,t)=>e+t,0)/a);e.onProgress({percent:l,file:e.file})}})}catch(u){if("CanceledError"===u.name||"ERR_CANCELED"===u.code)return C=!0,void console.log("分块上传已取消:",e.file.name);if(y++,console.warn(`分块 ${t+1}/${a} 上传失败 (重试 ${y}/${k}):`,u),y>=k)throw b=!0,v=`分块 ${t+1}/${a} 上传失败: ${u.message}`,new Error(v);await new Promise(e=>setTimeout(e,2e3*y))}}},w=[];for(let e=0;e{while(yt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),u.response&&401!==u.response.status?(this.exceptionList.push(e),e.onError(u,e.file)):u.response||(this.exceptionList.push(e),e.onError(u,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Lt.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const s=o.uploadChannel||this.uploadChannel;if("external"!==s){const s=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+s;const l=St(s,t.name,this.rootUrl);Object.assign(o,l),o.srcID=s}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(s){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(Tt(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 s=e;const l=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(l)try{const t=await this.convertImageToWebp(e);t&&(s=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=s.type.includes("image")&&this.customerCompress&&s.size/1024/1024>this.compressBar,a=s.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const s=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:s,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)Ut.compressAccurately(s,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:s.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const l=new File([t],s.name,{type:t.type});l.uid=e.uid;const i=this.uploadCount++,a=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(l,a):setTimeout(()=>{n(l,a),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:s.name})),o(e)});else if(a){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!s.type.includes("image")||s.size/1024/1024<10);0===e?n(s,t):setTimeout(()=>{n(s,t),this.uploadCount--},300*e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:s.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=>Tt(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`,a=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:l,htmlURL:i,ubbURL:a,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let s="";o.test(e)&&Lt.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]){s=o[1].replace(/['"]/g,"");try{s=decodeURIComponent(s)}catch(l){s=""}}""===s&&(o=t.exec(i),null!=o&&o[1]&&(s=decodeURIComponent(o[1])))}if(""===s){const t=new URL(e);s=t.pathname.split("/").pop()}if(""===s){const o=new URL(e);let l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),s="PastedFile"+Date.now()+t+"."+l}const a=o.data,n=new File([a],s,{type:a.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 Et(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const s=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),l=btoa(String.fromCharCode(...s));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,Lt.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:l,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const a=i.data;if(console.log("Upload info:",a),a.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(a.needsLfs&&a.uploadAction){const{href:t,header:s}=a.uploadAction;if(s?.chunk_size)await this.uploadToHuggingFaceMultipart(e,a,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:s||{},body:e.file,signal:o.signal});if(!l.ok){const e=await l.text();throw new Error(`S3 upload failed: ${l.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,Lt.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:a.fullId,filePath:a.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:a.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(s){if("CanceledError"===s.name||"ERR_CANCELED"===s.code||"AbortError"===s.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",s),this.exceptionList.push(e),e.onError(s,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:s}=t,{href:l,header:i}=s,a=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${a}`);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,s=t*a,l=Math.min(s+a,e.file.size),n=e.file.slice(s,l);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(l,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const s=new Image,l=document.createElement("canvas"),i=l.getContext("2d");s.onload=()=>{l.width=s.width,l.height=s.height,i.drawImage(s,0,0),l.toBlob(l=>{if(l){const o=e.name,s=o.lastIndexOf("."),i=s>0?o.substring(0,s)+".webp":o+".webp",a=new File([l],i,{type:"image/webp"});a.uid=e.uid,t(a)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(s.src)},"image/webp",.92)},s.onerror=()=>{URL.revokeObjectURL(s.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},s.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),s=e.clientX-o.left,l=e.clientY-o.top;t.style.opacity="1",t.style.left=s+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const It=(0,z.A)(Dt,[["render",Ft],["__scopeId","data-v-37f80c81"]]);var Nt=It,Pt=o(732),Vt=o(33892),Wt=o(45130);const zt={class:"directory-suggestion-input",ref:"wrapperRef"},Bt={class:"suggestion-dropdown"},Ht={class:"suggestion-list"},Xt=["title","onMousedown"];function Ot(e,t,o,s,l,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",zt,[(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",Bt,[(0,i.Lk)("ul",Ht,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,Wt.D$)(t=>n.selectItem(e),["prevent"])},(0,a.v_)(e.value),41,Xt))),128))])],512),[[Wt.aG,l.dropdownVisible&&l.suggestions.length>0]])],512)}var Qt={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),s=this.directoryChildrenMap[o];s&&s.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 s=this.normalizeDirectoryPath(e.path),l=Array.isArray(e.children)?e.children:[];t[s]=l.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),l.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Lt.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),s=o.split("/"),l=s[s.length-1]||"",i=s.slice(0,-1).filter(Boolean),a=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:l,parentPath:a}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),s=this.directoryChildrenMap[o]||[];if(!t)return s.slice(0,10).map(e=>({value:e.path}));const l=t.toLowerCase();return s.filter(e=>e.name.toLowerCase().startsWith(l)).slice(0,10).map(e=>({value:e.path}))}}};const jt=(0,z.A)(Qt,[["render",Ot],["__scopeId","data-v-0ff63416"]]);var qt=jt,Gt=o(6834);const Kt={class:"container"},Jt={class:"upload-home"},Yt={class:"toolbar-manage"},Zt={class:"toolbar"},eo={class:"header"},to={class:"title"},oo={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},so={class:"dialog-section"},lo={class:"section-header"},io={class:"section-title"},ao={class:"section-content"},no={class:"dialog-section"},ro={class:"section-header"},co={class:"section-title"},uo={class:"section-content"},po={class:"setting-item"},ho={class:"setting-label"},mo={key:0,class:"setting-item"},go={class:"setting-label"},fo={class:"dialog-action"},yo=["innerHTML"],bo={class:"dialog-footer"};function vo(e,t,o,n,r,d){const c=Gt.A,u=(0,i.g2)("font-awesome-icon"),p=l.S2,h=ut.c6,m=ut.Iy,g=ut.dW,f=qt,y=G.WK,b=Vt.A,v=s.R7,C=Pt.A,k=Nt,w=J.ll,F=J.MQ,L=q.qi,U=O.kZ,$=We,S=X.A,T=H;return(0,i.uX)(),(0,i.CE)("div",Kt,[(0,i.Lk)("div",Jt,[(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,a.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,a.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,a.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,a.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,a.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,a.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)(v,{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,a.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,a.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,a.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,a.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,a.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,a.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",Yt,[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-manage-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleOpenToolbar,circle:""},{default:(0,i.k6)(()=>[r.isToolBarOpen?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"times",class:"manage-icon",size:"lg"})):((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"bars",class:"manage-icon",size:"lg"}))]),_:1},8,["class","onClick"])]),(0,i.Lk)("div",Zt,[(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-button compress-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.openCompressDialog,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"compress-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.linkFormat"),placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-button link-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.openUrlDialog,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"link-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.manage"),placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-button config-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleManage,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"config-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(v,{disabled:d.disableTooltip,content:e.$t("upload.logout"),placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["toolbar-button sign-out-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleLogout,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"sign-out-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled","content"])]),(0,i.bF)(C,{useConfigLink:!0}),(0,i.Lk)("div",eo,[(0,i.Lk)("h1",to,[(0,i.Lk)("a",oo,(0,a.v_)(d.ownerName),1),t[21]||(t[21]=(0,i.eW)(" ImgHub",-1))])]),(0,i.bF)(k,{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[6]||(t[6]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",so,[(0,i.Lk)("div",lo,[(0,i.Lk)("span",io,(0,a.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",ao,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[2]||(t[2]=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,a.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[22]||(t[22]=(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[23]||(t[23]=(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[24]||(t[24]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",no,[(0,i.Lk)("div",ro,[(0,i.Lk)("span",co,(0,a.v_)(e.$t("settings.customLink")),1),(0,i.bF)(v,{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",uo,[(0,i.Lk)("div",po,[(0,i.Lk)("span",ho,(0,a.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[3]||(t[3]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",mo,[(0,i.Lk)("span",go,(0,a.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[4]||(t[4]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",fo,[(0,i.bF)(p,{type:"primary",onClick:t[5]||(t[5]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[7]||(t[7]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[8]||(t[8]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[9]||(t[9]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[10]||(t[10]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[11]||(t[11]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[12]||(t[12]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[13]||(t[13]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[14]||(t[14]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[15]||(t[15]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[16]||(t[16]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[17]||(t[17]=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[19]||(t[19]=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",bo,[(0,i.bF)(p,{type:"primary",onClick:t[18]||(t[18]=e=>r.showAnnouncementDialog=!1)},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(e.$t("upload.announcementAck")),1)]),_:1})])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,yo)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[20]||(t[20]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var Co=o(46638),ko=o(48903),wo=o(90144),Fo=o(62388),Lo={name:"UploadHome",mixins:[ko.A],data(){return{selectedUrlForm:(0,wo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,isToolBarOpen:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,showAnnouncementDialog:!1,announcementContent:"",showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Fo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,$t.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",!1,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto";const o=localStorage.getItem("visitedUploadHome"),s=this.userConfig?.announcement;!o&&s&&(this.announcementContent=s,this.showAnnouncementDialog=!0,localStorage.setItem("visitedUploadHome","true"))},components:{UploadForm:Nt,Footer:X.A,ToggleDark:Gt.A,Logo:Pt.A,UploadHistory:H,UploadSettingsDialog:We,DirectoryTreePicker:Vt.A,DirectorySuggestionInput:qt},methods:{async fetchAvailableChannels(){try{const e=await Lt.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,s=this.availableChannels[this.uploadChannel]||[];t&&s.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&s.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,Fo.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(){Lt.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)},handleOpenToolbar(){this.isToolBarOpen=!this.isToolBarOpen,setTimeout(()=>{const e=document.querySelectorAll(".toolbar-button");e.forEach(e=>{e.style.pointerEvents=this.isToolBarOpen?"auto":"none"})},300)},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){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,Co.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,Co.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.announcementContent=e,this.showAnnouncementDialog=!0):this.$message.info(this.$t("upload.noAnnouncement"))},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const Uo=(0,z.A)(Lo,[["render",vo],["__scopeId","data-v-f50dcc42"]]);var $o=Uo}}]); -//# sourceMappingURL=577.2c9dad30.js.map \ No newline at end of file diff --git a/frontend-dist/js/577.2c9dad30.js.gz b/frontend-dist/js/577.2c9dad30.js.gz deleted file mode 100644 index bc2dab123964bb9e2bdc281917cd930f14635698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24655 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 W8f>;(KVu5c$^QX89MsNrZ~*`yF4{=| diff --git a/frontend-dist/js/577.2c9dad30.js.map b/frontend-dist/js/577.2c9dad30.js.map deleted file mode 100644 index d50fb16f..00000000 --- a/frontend-dist/js/577.2c9dad30.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/577.2c9dad30.js","mappings":"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","sources":["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/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?61df","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?201d","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?d2e4","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?f120","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?be1c","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?728c","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, 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\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/esnext.json.parse.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n 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=550797ce&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=550797ce&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-550797ce\"]])\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_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\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_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"channel-icon\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"channel-icon\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"channel-icon\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"comments\",\n class: \"channel-icon\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\",\n class: \"channel-icon\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -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[18] || (_cache[18] = _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[19] || (_cache[19] = _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}","export default {\n name: 'UploadSettingsDialog',\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=46fb0fac\"\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=4848c2b0&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=4848c2b0&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-4848c2b0\"]])\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\",\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\",\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.array-buffer.detached.js\";\nimport \"core-js/modules/es.array-buffer.transfer.js\";\nimport \"core-js/modules/es.array-buffer.transfer-to-fixed-length.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.json.parse.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport \"core-js/modules/web.url-search-params.delete.js\";\nimport \"core-js/modules/web.url-search-params.has.js\";\nimport \"core-js/modules/web.url-search-params.size.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\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 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', file.file.type);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + 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', file.file.type);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + 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', file.file.type);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + 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=37f80c81&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=37f80c81&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-37f80c81\"]])\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=0ff63416&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=0ff63416&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-0ff63416\"]])\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: \"toolbar-manage\"\n};\nconst _hoisted_4 = {\n class: \"toolbar\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_8 = {\n class: \"dialog-section\"\n};\nconst _hoisted_9 = {\n class: \"section-header\"\n};\nconst _hoisted_10 = {\n class: \"section-title\"\n};\nconst _hoisted_11 = {\n class: \"section-content\"\n};\nconst _hoisted_12 = {\n class: \"dialog-section\"\n};\nconst _hoisted_13 = {\n class: \"section-header\"\n};\nconst _hoisted_14 = {\n class: \"section-title\"\n};\nconst _hoisted_15 = {\n class: \"section-content\"\n};\nconst _hoisted_16 = {\n class: \"setting-item\"\n};\nconst _hoisted_17 = {\n class: \"setting-label\"\n};\nconst _hoisted_18 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_19 = {\n class: \"setting-label\"\n};\nconst _hoisted_20 = {\n class: \"dialog-action\"\n};\nconst _hoisted_21 = [\"innerHTML\"];\nconst _hoisted_22 = {\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\", _hoisted_3, [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-manage-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleOpenToolbar,\n circle: \"\"\n }, {\n default: _withCtx(() => [!$data.isToolBarOpen ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"bars\",\n class: \"manage-icon\",\n size: \"lg\"\n })) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"times\",\n class: \"manage-icon\",\n size: \"lg\"\n }))]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button compress-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openCompressDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"compress-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button link-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openUrlDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"link-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.manage'),\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button config-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleManage,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"config-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.logout'),\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button sign-out-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleLogout,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"sign-out-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"a\", _hoisted_7, _toDisplayString($options.ownerName), 1), _cache[21] || (_cache[21] = _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[6] || (_cache[6] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $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[22] || (_cache[22] = _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[23] || (_cache[23] = _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[24] || (_cache[24] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _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_15, [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = $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[7] || (_cache[7] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[8] || (_cache[8] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[9] || (_cache[9] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[10] || (_cache[10] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[11] || (_cache[11] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[12] || (_cache[12] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[13] || (_cache[13] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[14] || (_cache[14] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[15] || (_cache[15] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[16] || (_cache[16] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[17] || (_cache[17] = $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[19] || (_cache[19] = $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_22, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[18] || (_cache[18] = $event => $data.showAnnouncementDialog = false)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_21)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[20] || (_cache[20] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/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 isToolBarOpen: false,\n //是否打开工具栏\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是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', false, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n\n // 首次访问公告\n const visited = localStorage.getItem('visitedUploadHome');\n const announcement = this.userConfig?.announcement;\n if (!visited && announcement) {\n this.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n localStorage.setItem('visitedUploadHome', 'true');\n }\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n 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 handleOpenToolbar() {\n this.isToolBarOpen = !this.isToolBarOpen;\n // 等过渡动画结束,向active类添加pointer-events属性,使其可以点击\n setTimeout(() => {\n const buttons = document.querySelectorAll('.toolbar-button');\n buttons.forEach(button => {\n button.style.pointerEvents = this.isToolBarOpen ? 'auto' : 'none';\n });\n }, 300);\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === '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.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\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=f50dcc42&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=f50dcc42&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-f50dcc42\"]])\n\nexport default __exports__"],"names":["t","e","module","exports","this","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","type","Image","onload","onerror","Error","src","document","createElement","href","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","target","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","size","accuracy","filter","sort","abs","pow","v","_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","onClick","$slots","undefined","error","icon","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","includes","children","label","windowWidth","innerWidth","computed","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","__exports__","validateFolderPath","strict","trim","valid","i18n","global","test","dotPattern","invalidChars","isRedirecting","async","url","options","credentials","headers","commit","router","push","finally","_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","Boolean","allHistory","pageSize","currentPage","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","keys","map","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","dialogWidth","uploadChannel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","Array","emits","set","style","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","components","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","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","immediate","$store","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","delete","fileSize","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","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","fileType","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","opacity","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","isArray","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","isToolBarOpen","handleOpenToolbar","openCompressDialog","openUrlDialog","handleManage","handleLogout","useConfigLink","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","announcementContent","showHistory","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","storeUploadFolder","userConfig","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","getters","useDarkMode","visited","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","$router","defaultValue","num","parseFloat","authType","withCredentials","buttons","querySelectorAll","button","pointerEvents","handleShowAnnouncement","info"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/577.2c9dad30.js.map.gz b/frontend-dist/js/577.2c9dad30.js.map.gz deleted file mode 100644 index 72f3f799d95b40f19a4d4193137b58f71358d097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67954 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%0AayXM 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

    sfZn1;jE*P|3c*;IjFNRslC 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 B0#yJ2 diff --git a/frontend-dist/js/600.dad53c5e.js b/frontend-dist/js/600.08192622.js similarity index 99% rename from frontend-dist/js/600.dad53c5e.js rename to frontend-dist/js/600.08192622.js index 65683ffd..a471ae19 100644 --- a/frontend-dist/js/600.dad53c5e.js +++ b/frontend-dist/js/600.08192622.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[600],{732:function(e,t,n){n.d(t,{A:function(){return d}});var a=n(56768),o=n(24232);const i=["href","target"],s=["alt","src"];function r(e,t,n,r,l,c){return(0,a.uX)(),(0,a.CE)("a",{href:c.logoHref,target:n.target,class:(0,o.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,o.C4)(c.logoClasses),alt:n.alt,src:c.logoUrl},null,10,s)],10,i)}var l=n(60782),c={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,l.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||n(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}}}},u=n(71241);const g=(0,u.A)(c,[["render",r],["__scopeId","data-v-17f54292"]]);var d=g},6834:function(e,t,n){n.d(t,{A:function(){return h}});var a=n(56768),o=n(45130),i=n(24232);const s={id:"themeMask"},r=["cx","cy","r"],l=["r"],c=["opacity"];function u(e,t,n,u,g,d){const m=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>d.handleToggleClick&&d.handleToggleClick(...e))},[(0,a.bF)(o.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[g.isAuto?((0,a.uX)(),(0,a.Wv)(m,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:g.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",s,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:g.isDark?"50%":"100%",cy:g.isDark?"23%":"0%",r:g.isDark?"9":"5"},null,8,r)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:g.isDark?"9":"5",mask:"url(#themeMask)"},null,8,l),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:g.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,c)],2))]),_:1})])}var g={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},d=n(71241);const m=(0,d.A)(g,[["render",u],["__scopeId","data-v-466b2b5c"]]);var h=m},7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,n){e.exports=n.p+"img/background.ea1b7ee7.jpg"},33153:function(e,t,n){e.exports=n.p+"img/logo.e8dbfa27.png"},34896:function(e,t,n){n(85331)},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;\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;\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){this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const o=document.querySelector(t);this.prepareBackgroundContainer(o),a&&(!o||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(o));const i=document.getElementById("bg1"),s=document.getElementById("bg2");if(!i||!s)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,s,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,s,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):n&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,o=n(a?10732:7835);this.loadBackgroundImage(e,o,t)},loadBackgroundImage(e,t,n){e.style.zIndex=-1,e.style.opacity=0;const a=document.querySelector(n);this.prepareBackgroundContainer(a);const o=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity})})},i=new Image;i.onload=()=>{e.src=t,o()},i.onerror=()=>{e.src=t,o()},i.src=t},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,o=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,o.style.zIndex=-1;const s=new Image;s.onload=()=>{o.src=i,setTimeout(()=>{o.style.opacity=this.bkOpacity,setTimeout(()=>{a.style.opacity=0},1200)},50)},s.src=i},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,o=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const s=n[this.customWallPaperIndex];o.style.zIndex=-2,i.style.zIndex=-1;const r=new Image;r.onload=()=>{i.src=s,setTimeout(()=>{i.style.opacity=this.bkOpacity,setTimeout(()=>{o.style.opacity=0},1200)},50)},r.src=s},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")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out")},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,o=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,o);const s=document.getElementById("bg1"),r=document.getElementById("bg2");if(!s||!r)return void this.reinitializeBackground(e,t,a,o);const l=0!=s.style.opacity?s:r,c=0!=s.style.opacity?r:s,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,o)},d.src=g},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},86975:function(e,t,n){n.d(t,{A:function(){return d}});var a=n(56768),o=n(24232);const i={key:0,class:"page-footer"},s=["href"];function r(e,t,n,r,l,c){const u=(0,a.g2)("font-awesome-icon");return c.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,o.v_)(c.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:c.footerLink,target:"_blank"},[(0,a.bF)(u,{icon:"paper-plane",class:"footer-link-icon"})],8,s)])]))}var l=n(60782),c={name:"Footer",computed:{...(0,l.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},u=n(71241);const g=(0,u.A)(c,[["render",r],["__scopeId","data-v-08acbaa9"]]);var d=g}}]); -//# sourceMappingURL=600.dad53c5e.js.map \ No newline at end of file +//# sourceMappingURL=600.08192622.js.map \ No newline at end of file diff --git a/frontend-dist/js/600.dad53c5e.js.gz b/frontend-dist/js/600.08192622.js.gz similarity index 99% rename from frontend-dist/js/600.dad53c5e.js.gz rename to frontend-dist/js/600.08192622.js.gz index 41e33ce38dd762324579c78246376da3c35a0a7d..1925029e141c56fc4c0ca22646f45b1d1cefa3a0 100644 GIT binary patch delta 31 ncmbOsH$!d%Bft1@+YfoatM|RHnP4Ss^H-m@L9F ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=17f54292&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=17f54292&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17f54292\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=466b2b5c&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=466b2b5c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-466b2b5c\"]])\n\nexport default __exports__","/**\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;\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;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n 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)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\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 })\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 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\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 \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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\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 \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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'\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'\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, 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","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","createElement","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","bg2","insertBefore","firstChild","initializeBackground","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","defaultImage","require","imgElement","imageSrc","zIndex","showImage","requestAnimationFrame","preload","Image","onload","onerror","computedStyle","window","getComputedStyle","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","transition","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","disableFooter","thisYear","footerLink","Date","getFullYear"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/600.08192622.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/Logo.vue?a6d2","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./src/components/ToggleDark.vue?6d4a","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","webpack://sanyue_imghub/./src/mixins/backgroundManager.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=466b2b5c&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=466b2b5c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-466b2b5c\"]])\n\nexport default __exports__","/**\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;\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;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n 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)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\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 })\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 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\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 \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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\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 \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \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'\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'\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, 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","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","createElement","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","bg2","insertBefore","firstChild","initializeBackground","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","defaultImage","require","imgElement","imageSrc","zIndex","showImage","requestAnimationFrame","preload","Image","onload","onerror","computedStyle","window","getComputedStyle","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","transition","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","disableFooter","thisYear","footerLink","Date","getFullYear"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/600.08192622.js.map.gz b/frontend-dist/js/600.08192622.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..72372d281e989e61ca82398152dea580c519a23d GIT binary patch literal 10858 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 diff --git a/frontend-dist/js/718.266849e4.js b/frontend-dist/js/718.27080555.js similarity index 99% rename from frontend-dist/js/718.266849e4.js rename to frontend-dist/js/718.27080555.js index db0f0999..c77f1c21 100644 --- a/frontend-dist/js/718.266849e4.js +++ b/frontend-dist/js/718.27080555.js @@ -1,2 +1,2 @@ (self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[718],{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:50u.handleToggleClick&&u.handleToggleClick(...e))},[(0,s.bF)(n.eB,{name:"icon-fade",mode:"out-in"},{default:(0,s.k6)(()=>[d.isAuto?((0,s.uX)(),(0,s.Wv)(p,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,s.uX)(),(0,s.CE)("svg",{key:"sun-moon",class:(0,a.C4)(["theme_toggle_svg",{dark:d.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,s.Lk)("mask",r,[t[1]||(t[1]=(0,s.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,s.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:d.isDark?"50%":"100%",cy:d.isDark?"23%":"0%",r:d.isDark?"9":"5"},null,8,o)]),(0,s.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:d.isDark?"9":"5",mask:"url(#themeMask)"},null,8,l),(0,s.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:d.isDark?0:1},[...t[2]||(t[2]=[(0,s.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,s.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,s.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,c)],2))]),_:1})])}var d={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},u=i(71241);const p=(0,u.A)(d,[["render",h],["__scopeId","data-v-466b2b5c"]]);var m=p},49718:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return cs}});var s=i(56768),n=i(45130),a=i(24232);const r=["src"],o=["src"],l={key:2,class:"video-placeholder"},c={class:"audio-cover"},h=["src"],d={key:1,class:"audio-icon-large",viewBox:"0 0 24 24",fill:"currentColor"},u={class:"audio-info"},p={class:"audio-title"},m={key:0,class:"audio-artist"},g=["src"],f={key:4,class:"audio-placeholder"},y={class:"audio-name"};function b(e,t,i,b,v,w){return(0,s.uX)(),(0,s.CE)("div",{class:"tm-viewport",ref:"viewport",onPointerdown:t[3]||(t[3]=(...e)=>w.onPointerDown&&w.onPointerDown(...e)),onPointermove:t[4]||(t[4]=(...e)=>w.onPointerMove&&w.onPointerMove(...e)),onPointerup:t[5]||(t[5]=(...e)=>w.onPointerUp&&w.onPointerUp(...e)),onPointercancel:t[6]||(t[6]=(...e)=>w.onPointerUp&&w.onPointerUp(...e)),onDblclick:t[7]||(t[7]=(0,n.D$)((...e)=>w.onDblClick&&w.onDblClick(...e),["prevent"]))},[i.isImage?((0,s.uX)(),(0,s.CE)("img",{key:0,class:"tm-media",src:i.src,draggable:"false",style:(0,a.Tr)(w.mediaStyle),onLoad:t[0]||(t[0]=(...e)=>w.onLoad&&w.onLoad(...e))},null,44,r)):i.isVideo&&i.isActive?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"tm-video-wrap",onPointerdown:t[1]||(t[1]=(0,n.D$)(()=>{},["stop"]))},[(0,s.Lk)("video",{ref:"videoEl",class:"plyr-video",src:i.src,playsinline:""},null,8,o)],32)):i.isVideo?((0,s.uX)(),(0,s.CE)("div",l,[...t[8]||(t[8]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M8 5v14l11-7z"})],-1)])])):i.isAudio&&i.isActive?((0,s.uX)(),(0,s.CE)("div",{key:3,class:"tm-audio-wrap",onPointerdown:t[2]||(t[2]=(0,n.D$)(()=>{},["stop"]))},[(0,s.Lk)("div",c,[v.audioCover?((0,s.uX)(),(0,s.CE)("img",{key:0,src:v.audioCover,class:"cover-img"},null,8,h)):((0,s.uX)(),(0,s.CE)("svg",d,[...t[9]||(t[9]=[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"},null,-1)])]))]),(0,s.Lk)("div",u,[(0,s.Lk)("div",p,(0,a.v_)(v.audioTitle),1),v.audioArtist?((0,s.uX)(),(0,s.CE)("div",m,(0,a.v_)(v.audioArtist),1)):(0,s.Q3)("",!0)]),(0,s.Lk)("audio",{ref:"audioEl",class:"plyr-audio",src:i.src},null,8,g)],32)):i.isAudio?((0,s.uX)(),(0,s.CE)("div",f,[t[10]||(t[10]=(0,s.Lk)("svg",{class:"audio-icon-large",viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"})],-1)),(0,s.Lk)("span",y,(0,a.v_)(v.audioTitle),1)])):(0,s.Q3)("",!0)],544)}i(16573),i(78100),i(77936),i(18111),i(7588),i(79577),i(41549),i(49797),i(49631),i(35623),i(14603),i(47566),i(98721);var v=i(91114),w=(i(22489),i(61701),i(58335),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),i(33110);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
    ${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-095ac3fe"]]);var pi=ui,mi=i(6834);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",{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)},beforeUnmount(){this.observer&&this.observer.disconnect(),window.removeEventListener("resize",this.updateColumnCount),window.removeEventListener("resize",this.checkMobile),window.removeEventListener("scroll",this.handleScroll)},methods:{handleSearch(){const e=this.searchInput.trim();if(!e)return this.searchKeyword="",this.filterType="",this.currentStartIndex=0,void this.resetAndLoad();const t=e.match(/^#(\d+)$/);if(t){const e=parseInt(t[1],10),i=Math.ceil(this.totalCount/this.pageSize),s=Math.min(Math.max(1,e),i||1);return this.currentStartIndex=(s-1)*this.pageSize,this.searchKeyword="",this.filterType="",this.searchInput="",void this.resetAndLoad()}const i={"图片":"image","图":"image",image:"image",img:"image","照片":"image","视频":"video",video:"video","影片":"video","电影":"video","音乐":"audio","音频":"audio",audio:"audio",music:"audio","歌曲":"audio"},s=e.toLowerCase();if(i[s])return this.filterType=i[s],this.searchKeyword="",this.currentStartIndex=0,void this.resetAndLoad();this.filterType="",this.searchKeyword=e,this.currentStartIndex=0,this.resetAndLoad()},resetAndLoad(){this.files=[],this.hasMore=!0,this.columnHeights=new Array(this.columnCount).fill(0),this.loadFiles().then(()=>{this.observeLoadTrigger()})},toggleSearch(){this.searchExpanded=!this.searchExpanded,this.searchExpanded&&this.$nextTick(()=>{this.$refs.searchInputRef?.focus()})},handleScroll(){const e=window.scrollY;this.searchExpanded&&e>this.lastScrollY+20&&(this.searchExpanded=!1),this.lastScrollY=e;const t=this.$refs.galleryContainer;if(t&&this.mediaFiles.length>0){t.getBoundingClientRect();const i=t.offsetTop,s=t.scrollHeight-window.innerHeight;if(s>0){const t=Math.max(0,e-i);this.scrollPage=Math.min(1,t/s)}else this.scrollPage=0}},checkMobile(){this.isMobile=window.innerWidth<=600},getSlideKey(e,t){return e?1===t?`${e.name}-${this.previewIndex}`:e.name:`empty-${t}`},updateColumnCount(){const e=window.innerWidth;let t;t=e<600?2:e<900?3:4,t!==this.columnCount&&(this.columnCount=t,this.columnHeights=new Array(this.columnCount).fill(0),this.mediaFiles.forEach(e=>{e.columnIndex=void 0,this.assignToColumn(e)}))},getShortestColumn(){let e=0,t=this.columnHeights[0];for(let i=1;i{const t=e[0];t.isIntersecting&&this.hasMore&&!this.loading&&this.loadMore()},{rootMargin:"200px"})},observeLoadTrigger(){this.$nextTick(()=>{this.$refs.loadTrigger&&this.observer&&this.observer.observe(this.$refs.loadTrigger)})},async initFromRoute(){const e=this.$route.params.dir||"",t=Array.isArray(e)?e.join("/"):e,i=t.split("/").filter(Boolean);this.rootDir=i[0]||"",this.currentPath=t,this.files=[],this.hasMore=!0,this.columnHeights=new Array(this.columnCount).fill(0),this.searchInput="",this.searchKeyword="",this.filterType="",this.currentStartIndex=0,await this.loadFiles(),this.observeLoadTrigger()},async loadFiles(){this.loading=!0,this.error=null,this.canRetry=!0;try{let e=`/api/public/list?dir=${encodeURIComponent(this.currentPath)}&start=${this.currentStartIndex}&count=${this.pageSize}`;this.searchKeyword&&(e+=`&search=${encodeURIComponent(this.searchKeyword)}`),this.filterType&&(e+=`&type=${this.filterType}`);const t=await 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-5654d512"]]);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,ntA8wZ`!Q_t(Q=vlkHcj|k4y=c-k$>IAC zkDeaBeEH-#=8L>`XKykN_9CzAw>z}m@%xj&$9(VJJRj6_anrm=&_%`RKylf9`2NF> z&mO;hI_S1NczOEd*$+?O4%&P8_UQ4m7a(Rjv%YM<^^BkYx)f*_w!rJ{g`#FLCmp>=)EBiUyEe(M*Yj9>*vW$u(C&k5q}!+zb^hI zt(9#VBgZ)~M)n=@?%LodRvmcQ^&WB^N9faX>Ddpv-j13YoY*_^rB%Ls^xP8%H^p)L z1Q0JeX027&ZLF}TR=BeUZkH2(UN>O0f(nmYs*kSjRDCe;yEyxt>!*5sRDsJs3p4VH z?jCZeVzHk1Q3uN?505p(@lvcNQeQT_E>M_~vq&T-_=Nc)5=#o=J#2ZrU3t6C?Go2N zqUcC{SmoY*e5c%+gxwh%4>LL=O#2vp)*|bhMw5>iZvxu%S7q-)RctDM^%!#^^xnkq zz$*DhuvPOFTPgzJ6)jb@Dx4U&E~>LqQTSMMvmCCwacW2pK5(3e&1^z>kbxr#)b)Wr z{l0LSYN#ghV4H_!Y8qV`MVXz`>1Qr?;q-(^ko1HS0^gZ0Ba7rC+nl23(K-q zuHYC9y{zTxZfEVUm3^>M6&6X8c!cL;j*g+djBCeB5|+0mcvW~V zh)wo_T2EBjtzFI!lLNsF@vH8@vk8JF&Wyx=QqUr`$#c3c^d!5Y zeH6^H2vx;di-6FXrn+Il=C(gJ%*vr!VAI^dyST5)u~eB^8#b%RgFu%RHSfSm5qrfI zY`9Pen!gZ&+v+mZt|xHr^W0$1Udc)>>MRfKs({7CHf7CC22>YANxGAFPEy6AV&M1; zrSY(WWlx^-lv?M1&(-V#IMzkMLQ|E^Dm`ZOx+uhUZ@dts1-4J4SLy-7hBJWWgDvn3iYadWl9F=MW)q=FNQlZR=5(WPoa287L zv0W;4$My(+`ZI`yA6^7!5Up7dzNoc$cpf(1BY;307wGM(DeEqflr(iB*6 zd)qP(-#vcziaS+hGSubLeE;n66FpIJ&z{5_pJ8QxHflytsnjduzpPlgu1s6~S~HD7 z>1iz+tdo(e)xIh_6vY-d*1tJRGmGO@19UE98%!NwAj@SETi|>(#%I{M0IMtpcOtT? zGzMG~FP9d4@Q7SN^#DefaUP$>Kq`xP>AGef(|p|Cj$%tV5?C7y34E%8ekZF#l&}?` z&*Bn)3C3}mKE}y7=DO2n4wx798kzh@b+wBNIS#3f)?Cv#yg@%A=G!bva!{Us0eH^@ z{gFjJxB*8agBvsrVn~GmT91L(w&ktR7KwdjLT&wPoTCL9&%x;lBIHag2U1?^a`=z~ zSq__XFhsmI%Zf}eLZ8sOLEo}8%TZC~MYJG)IfNh{_#{gU&hTT8l;d<@bY8))>w!m9 zv)}TS+Y)+&J8@+d;>(+|R^~hINEIA!+34h)zT!Hg0}o#x$JxLm%nFi! zWkQzCBTy|>-rs_)&Hxk+;O!8?r55lC>O_Z=39JDC{WzU3fLArR5fdesTIEWCvvAYR|52?I=_>Sub4~rFlGmu01p3+P?;D<`>tT)nKf;M`=+`TCT_y!;G zaTXP{HL-+$h^y7&iU{U=agA@DZD3pM(qXX1M2QLvR}*?}eXS@HM}CH^eoNjy9ApO4OM!=sxJ4`_O|uz&2w;Ym42cO%f5T_+^XcN72}?1 zK;>?lPV&Kx+7)T+z_zh|+u+N8??Fb-awbcAGUHo|rC}paWo--QZ)HP6N( z(#+@swiTK-_$-UT_NPz`MMkDQGPlhEJnWbv?@sA;0vu^%<1i*vc#Bw(j^{nB48v~n zGmR2h%|~^1eF*V4Aq+KtSeukVH1qM4PA-@Y3V`8S*{;ftuE*&V(Fk#QGtnt&sI0`& z(3gX-BY9Z-WLqxRaQ5YQYt0Y{wF>4yEbzRC{CP+%&t8#w?$Y;ys99`A$s1#X97&ar zQK@?0wC9^#@IdAv-QM1!Ri#Il=`LfB9Oy%-N)%~5rBcg=_Y-|nPmyXSx$uCH6`Xv5 zCO-b082rEeNqlLbQe$Xh7oc7zF6i7SUtuWobVAL8vY=t?=a=UO9MRvUSE1<{o)NT- zplyQ7yjdua$fI7VaZNu-lUdsqP!*98r9zFzP&uP2uz-hUiJqLfj z%ssaX?SNpq| zw>B|+PSGurdGBdzE7R28FioD(eZJ>*`bN)f`v79UXZXR)X~V$VZm0j;_Y8k;)^)nK zje37~5?>x{SearKI{C#Z?hw6yx?2{qEX~9}#)BJnhXa+6k;xcLCPc0=4P=%>UVfe5 zFcI+m5aL>(u`bMpK8UaDm$+2k(l?Q9Q~xjz#Pa!;9mK2d=FVZ34IP8;M={*C8ak!F ze}t<}Uh)#b&b5$ESeSa?FjqCRYq*pE^$4DJ-oAJqs@RViU!X!|XtEc7Qw7F{4+3p} z_#iceX2&$L&lYScirQB?M29>2~8pHtHI=(Ls`RyeWO2h+V5LW z`oRb=y_thA?K;>h1Viws>$dldzz7Wf;0Jjdp5P4P z{~Vs+_}-D@l)Ju+- zK26h{{`Lp^w>sJzNt)YNB(A>Z)BX1K%L=nIiem#z3Qf=LmJ*HzoYdV9aV zVuPQeTK)c}<1+!@E3R&Hl?quCpmell$s^T<;VHIO!Bhu^&Kf03<4gw-6~zF)tKLZXvzAa-PV79S{JWsv(ER39^#?6WzfRJ zQ&pFip%9od;ZWm(Xu6e}A4g5aGXIMHQi$SO2LMNsUL$Bjl6H;IDP(SFs8-?qnAq_Y1d zpK{$TG%|sIB|FXNnPl}6TB;o~Yp!@kM=l6~M}iH!YufGtlrfjf5(N|Viw@dXE26Sc zm2Lo6Zz%8Kbacn9sVN6&d|~11Ok+MsVGN3lm|dyE8N4P4Xh3RI5xLylU+|$Z%s~M` z>zL|>OvaYrx;d)if+~jqZ3AG-+nTNfsc1(K#zQxM&60_(=sOVP?Ie>&AmbLxpi$gK zDgrGX1m&#r@x#&pTA{iG+>9<}(U@AhKfA|&c29O5?1DeYVJVD4Ik3>`Rb;`^15rg} z)hJmjvgiz?{)y^E7#&w_Xh-90_cx3{-D zzMdAyD1~rzJ$u}`3@mWi#pjaZTq@tRIQ5nv^tNePS=YAr_XB@fP47Xv->#+aL3(dl zN$uNQA>Q|fpQrJRTKT?|cE{j2zi>~l3;LXY$8GWKvPVq21J$A)O{44)Xb>t@BML9y zcKphFP}`PEAJujQ+m&D{^Ojx}RwPuRRqcs? zx38c0)#7~n)XNXd!`IIqVRqp)=n5Q|7Pz^r$R_zt=zBW}XuOmKDUZd$j3f2~E*LUR zDXyhV+(-HL@a-XNviQtG+eE2%4aUCos$k|n;1eTHoxQzI-|XInR^_Rperx8kRlJP8>FIea*sVgMSm5Oq= zL!=~oMZj4)&AyA02`dx2oldDa`LK8x?^?x9{E*r!a!!l)iWXKy7fH|@EW>DB#1pLM zb(G+@d>!F(OC_4##?3ss`qRLF10}GZ1|GQtEw9Vzz+08OpG5~i1i;vEgnQL_KxZ{S zICJm^#9Zotu(@=Pzg&Vxa+$`~$8sqg^>B|VVp05?R@WQ$VV`8%+d&T>mP_k6A<;>A z9FgQi=(VO{@~~W7WEMv1>o}Ct=MgJ)3VS!O$y7_7IWeRTRe+2cK&AkHkOBY_uT~^l zEN0gT(I4Yt`UWSzvRLRrF)Fx1nX)(>Fb9OiF`)ZSF>(s0n#Cy`D)X$!IGT;$eokMr zrLIhLHDsdP3^YN75AYY9r&(cfXOn=toq~BXLqvY;BQ8Jo@hJ~u_sS{UD-5lA?G)}c zi5PUI*Ne2UAh-?5SV~lXL`h&JB)1=0{+_qXwc3ECa&tAX3ioO!cCYN+fLz1d^-kr6;F&i_9!ct(Na*@%Ii=Npr>6x&9#Z{FiLlN&%-@_Gz zgwZ|AddSVyK!l6>6SlZn9X%P}YhLLf6}~H9bSE$RbY0Qxop9Mf8!08WflwN`*=3P;{&dXwWNlg^XnEV!oJ6>;DR1L42zL^j0H_| zV-Kv`rVk|ok56Zhn0(--X>Ti-b#!}$1GQH;J(D<$t)3sWeF4~uIJ7)6iNO>0G$zN# zW(HD#%p|8LA@He;09h5tBJo-Q8=oMa}1N zc!Oe?fw{OioyBA4G)q6{)Pz+cKTT-_t*yv)HO+wo&jgvg{4h(;QVv!Ga zchBQudI9m8=esYW>F%RhdNKKa7G>0VHb4Ik)z3-~#>^A)wpIfMP&HTN5oAOr+BBWP zcu&Y-nHj_g&KPw1%@sL{!<$bOOxon2(W$s2efXIxa>X z6J9tFh0mkejAqwLae^S`>5r6JpI3W#hU3YdoT9dYf4L&Bm4We(=UF^4SLB%vt_RhO z4oFhW6?s{H_#729JBwyB-lg(=MIP(beGji-^GeKUR+tc!;yG$PkPqb-mPRLYE(tMD z$eSuSm@G`4trdAyc8PuFUHy(1ZV`1Z^|DVZGtG;>FOz`{2|Bzh@=Gm|t8wJ!iu^?# zFflRAf0ube-Zdxxsk%naK=cnQ2~1?2IGM!bs7RrQU*hlv!3%5cZ5E%O!x~W5pHuL} z75Q=9`b6E=75PK8*(4R8eyT#6ElFnG`hZs3n%jZ>)SW-AH{T^kl&Y& zKa`JuTLKwRWoH`W)}wi)e`ztLnZu@(ogwCmf1qpm`gF#5cr0O`mwBqdE)ArUoN>iS zMp7~pN6t8$$L=AShKra}7nVnI_u@~sg)s|q_t6uZsYa9Ym>gr$^G~)VP$@anQZeJT zmK2%fG={n&_ws{n&D=aLC|afy-#+23l!Y(r^?lZoK%LPfbqvYWcL`sb17NR#P0z7+ ze-eUID{6-aGxt1wo4!fYVtc!MW?$`<+Q%$Si^p*$x=Abv7W6bM0F%4l{{cf!u%yK^ zC<~g8ucNHUAv8>EhX+;@OtB~~fOtiYi{nzO4fBj^LpJ z8n2^bYQ^g4sZILiQ*57*ZX2AX`oW%Uf1fl=)!X`1@piGUM{V0WHks>g=QO=C$ql_) zL?HDaq}-+V6P~a-u~+1{nmW1#a{h{U;543C+nAssDBKBn#!HjW`l35JL&c@!;FGAx#Jcu-)f(P>PEgiH^~jxJ02){ z#{~3_2fE%dVNr=qziW!%!|=RPe^(%EJd@l^2IdRD<8}=izTvG_FZHj`)(I3$soT2HMZTL<@j!= zH*_Stm#>U1-Gv~s%D_v&b*e^0-q`87-2m-=1Eb@%dM$W>FYxApO>eukXY}1YW6uq| z9_;njUeE3H`>yZ%e{Qeea@?THA3D9>r4zV8i`f>p_S|03b=t1i0wmP-^=G%!?mAc< znm<8uuhXqOdwYGy?X^3ux7TvqUeK2hhVKR*q_+*<-D}}{t5YuJ3^*bq`SR9yIKA++G(9u)1CwjH0_82NIo*+wQVnf42E^$L*u-wC}cju)pp* zf!o^ivEi=Ma)SWmo4eMx$h}SqLq%;5hU*2c=XH$0_1ZnxZ|&jNE`AK$pzlLl9jG$sL$`yL^5}LuEyIW3 zZqN<@Fg@rMf7Idkx^A!MB1D50TAKSlf5sshVCmiUV6Xtrj@u0oAiX{uM1k+NTW+ft zxO)LK;d|^UaDyPYgdViUp5eCqzU%kFNEer^fzne^lSAvpBi9awqBT#V%~q54d4> z^NaaB%KjDZ*I#M$=lF)-bNemWo&ApEw)+k&#=VZyb0FRD9Jd>|9_)nx{=qivKkplU z=h7d;YW3YdwjNyiZolX z{AYQR!@-UByzlX|#md<1g5TpuVs9;}!z)F4TqAYwMLVx0l0BpSv^{ok6*zx^0qYA^ zTc9t$Dbl*?LV3S825js*Py&9Y&K?-k21t%Fg0xOyKG2vx=d@rj0hWq@3({d^k35St zKEtgf%FBDs@)#TrB{{KTlG(S(I{lGA61GtU=D;fB^$S8UmHzi-6R5|@(u-F52uv~wp&eVU3V~!Jg z$bK^C=|#@$WrQsG?ezkKpRm(X7}u2b%xH8;2gUIot7q@7^)NdY1!f-v%ve~8wJ^h# z_J-Zvc%!X7jbn+ZN|RnN{=%=tUV+iN^gXxJ8N>D4aa(OTN_%+v1?;yAWRwFWRw8?--Q&97_E@FiI8gPy>Gdl=l-7CG5Sya)&`h7y(3Jj*!q3_nEpjelJ{b< zYEWW<*IJ1Ik?Z>Sfo{0GV6%=aGNTcbN%FBP4l2O&>5`wn(^^B@@ zbJKGB%s-Ux_JGcB_2Fs)7XkP?ZNKk5?Twwlh0BTq*A1ZdjZO{^1~7s;)Al8hdXNq4 z@Svb0YJ&g2yx24R))WZ7r+b&dmwDgmPMtQ;kJI*;6@nJAd4o5fJK{}r2t1AWy=i;Q zdSl>5Y8xG=lRJN`U+|-{p2!~gORUcG{bx|vD8d@L&n${^-+>jpoJh{GZ2RASBJb>r zMFY>fm~&(Ue0{7EIP!^f{JWdR!Z$leT@d6Q#b4+qH2kLqxtPwZnF&v!-0S^o zP`=(Vja|dsQ8FQC55DCRt!*a2zQiD`k(@uB>$jO`{}F$&Vw=ld+QD7qR7~<)_>9Ru`^TPHdZ5VPtW?lcuc*@ zABum|eUAVAU|ntR7S+1mEh;sM%a6}DrQiCB%ET3@P5#KPKn10paonYQW9E`3$FsGe{Z;I=4@X>!k<)(jS zW8=A#2v?1=EjjG{p1v*FtfP04a#vOoYmBlVzTu`^x4igp*ro(lBn;+ldNH1&Z3PU8 z^O5{LeMs2+5vWX}DGnP_C9ymauu5@Oal+57*GlEV- zJ>^EfWsmc_N6>AkL~iefo!!j5VDJDJC7&ATF8qoS2qo3^R>p4O{oyoi&}x6^PnlWo znU>y!eQp<(Vb^}da911Emz##0&oB}eEDT&|NAUg!dX4q0$T3|@%CRdYqO=D5)qt$Z z{ms*x(Uz~FE%0X(qo{_FG5kgo_+0syoA$wH77c-<$vbpI0=b2zaL}CFM^V<~oZ?I% zN|bNwFrplf+D$-|vScHzr*MA|TV3GbwA*$g*KVt%2Z2e)DZ6LMgkG)XENMz=L6t~^ zzZxmX&+cHa@yZU_xk;JwvYxxbcXGS)8*o=p8MKECmbTHIIbDPOfW{Q6O+EKLcdu3D zlH3cb`wcui$G;1tYwR@iil;)F(=78X?LGNti0HHK?u^SFlojPmxt{0>0h*4ItljQOT>*nu%2% zK=hITGz@!&-v$s?b2rNj5v4R!OF%Sx969q^FaYZK( zQ?=U;3eMcF{~nqhW1oCbm+OHlQ{M<&)NJ%{gdpi{cfP#veNbKMz4vErPOKuj7C8piP!g5%@qH)ha=o z=c=NxiYIpb1}RJpbF2}@oUk~MQ69!tzuoG!Y?8rq*X!*CHc4|4AM&-b5={*12h>H8 z4{r3xk%L7{-lDen<0$(y0E@6{_(hcO431AoG@GTL>Ev;o;VZY3LY|WlF@fH`NlI<; zfhQG0wtRwmzbt03p6PR{T~M&(dZz^7wK1YXt$E|R!b_|6v)0Bh0=9h%OhFt zKHmeiri+|rk1+Hxh>C?dVa0h{nQ4R;hv>XA8l zi-F6;(uv}qf8O0;-d~0Dt_|Z^5v~tefdrH8^33SOInJ3jpUq=sGUJ5JrM9$UrOesV zz50!5JmaC*BnsK(ep%U0w`CAfMXX(o2YNP3)69QTAy)4CN_9KF2n$-aT|>r|GDFP~ zA^5P^sWw}piid^pYf%c?R~%pD&3@!=SgQjb=Ud{L6*{XvKCy?Dh{=^+m;NdXUK~e0 z8hOKbzgp>t9>*u{;vxqJlml=`Ctg-!)vQRJS5TSnvhiaz>NvK0vO*-jzHsGka%+W- zf5LyFxDz0D?^f@A^UON_?al4T=4vvNs{0NNdv6K=D`G|RBS4J-%g=(<;;I_?RXa>D z?yC$FTYksGWu-@irHv6`TOuIr_#(?e3sbM-fP+RG)5tu}qSI5bq#EF(31S#@w`791 z>ym>Y=b{9t%Ba-PSv9>fttY(Vl53*CU3Y&u^&>b{WbPi>F?f3vUKVi|g6`^3bY&g# zAROrdb@w>@1`N1L++6cPmR=O#GCYgs5V1Ei2RBS+ok@QyNnCuNrSmtC(?XvqWxQL6 zXwE@2rQ=WRWRy`e^^)9w4=pYh&(H-C^N;b06G|cjb3F5?-1ydp(B>HhH%8`~l6QYC zsPuh95r!&x5pGG0N$bM%3KEcenG&y{?lex5g!zHw%`u<+UpKnj%Qg+LvDBt9%6Pz< z6?N5LTuI!zMHbI1PGb!v6DN74JNJ^Jl}WWjG4vE)Qs`akFqxq0vg$)^j&6!~|NJ}a z=gE%!U>EzKc(!By(USu0hl%fjBlmy19_u78LwQU0Pd=eGiI+=X_o!L#zLh(^{ZOls z+z%wG@xN)Vg~m#ptT*Og|L*_#r~m4|G`Y`blR!fGhJTc|^D^H*{pbH)FZj>@{=fK- z|MP!m4uqT&|HwDl+KhglP8k!ZWvaGYx;Y8WKrET4Uhz8^sy5?lNNJo~7f9oOMIROA7wsc#Wa3 zpN5T%QWjiYxi0Sno^&Nv8H(_0sN@c*9*UgxwdxfL(G4GAgSw=BQ>^u{T@u9U*%<_b zP8Z4{n&aWaV&*P$gqmAGsOZ;3J(cifhQT z`Y1foX@o&_?#rGqXL`dTr2AdZ8wCTp-}k&xYtSZz@MEa#4Y352B;oV;E4P<2?@DB$ z8>(J(Lc}e68%KE_pC^BBQ#L@0LRcUM%4wPvG%xrE8$$@7tH-e3!DH_PFI|u)4*iCE z)G*%Ju^S4;C;JG7u<;wAVO(C%A&83JTT+C9=P4ID?q0Fl`JoPgm^8Mw6Bfi$gLqri z7L12drnbE;QkbR=wIPZ)<%VM{Qn+r)Rj3gXn3)keGS@;6?8bk3u!1BE_PmGrkWCgW zV08$5n^)jbfb;XB>5`b}tq3X%EiiFO_)sX}*<_0$FjzmoYzT}N_&$f;MH;|g|txaAE+xD^_H+>I9T zE@OP|&f>fnP2wzka6=Oa=<@E(vqwViU{&F4ueMPaB;J7S z8=$A1@Z&a1+|U87l)d_BSD`Ix!dTu9ZYp0_AIs|y1AUachk%bQ3b83cZsICZ5^?+~ zNnt&g;(3;ToN&%@O!MXP_{4VS(E>1p#e_SQ2wv)7%L9Krxh#pxwy_M;94ia@q_kIc z#UoLW-++JN#FY(k(Ur5d`Bb&FZR5IbOkCF$*MjoeC&piD9`jkQyLgMN0| zDf^{a7Qmd*K9(g0YDGy}7O&s~2S5liO!Wm+7H`UbZai^gM`=Z|R; zV<_0lUiTIHbyF>fPNEn`w>pcHXg0g9;1v++l(>f-Ql%h7KgRgP*HF_?4JCK4Rl$8g ze;a&7?}?g$~ecKbXHP&P`%sP&Q&N68L={pD|_rg-OiQIs8T~95cF%&&-n&3l|WXQ(lC= zvIFx)o3%Cv4Zm|}XP#cd?>7GabjeyaiP<`bzRX!)=Zo`tU&O`jtNYS|zC@R@D`$VR z2whp@?|D0d&vW=4El?wIagkShp=uJZSrym^!BkQlb~FUGBeB9dmhpzsZyl!)Ob?@( zw~!IJp980-o-K@b{8C&Fp+!Z1MjtR&XxebI0`^Zlr|Ct(Z#o#jmF|?;b{pA`V+}JuvcNdF1b?_;QN~I>O()k{9D54! zKy!>KXDKn2=@lJ6O6PM3muAB7O}kPF6Nbo2?mM0pDKjfjm2Fg`#zP;R0;D+_>Ogj9rBF{kllLKA**Z(^)Sd9}*#)@>%%hKpo@n3l^La~3(9nkl<| zBVgVPBLDw65SdIXgdOc``pGpynkL%TVoc?en$z z`MT17C1~MRy>E5MYoUM3^d2|GFRSFZ9%`_y4P>X#pPj~C@fT>Rg(8?TKT|Ia3prhtPd~{|KUF`y4Hq;6C7vi5b1F~C@+TP) ztJF`Gi1N2V+e9@``}R;n#<;eK6bPaeR9im^49i%N3NWyLGM0Z@f?c<_lLK!gBA=EKdy~o>vDm$Jav==Y3wU)uq3T+LorR{CY7o8S;Y8cnf4sq_1Pmns* z;rNwN>%;Tz84g`BJOmtsJ);}vir#Oo!177!FI_iFSowcQ9Zcgam9gqrrplbzIH;=6 z0G<6%Ia#XK3)SPLYRa(gAgS6n@UyYvZa^ggsx99SpI1u{6*PR%lJs-ETV4f5u%w&2 zwGIWCjx>d$GbU+!aZ*oA4JP#a^QAGa(QwBdSJ!- z4t(5q+>U>UQmWAZWX+H^&T7s54aIweU~VCVtIjwYvXuT2;H!xypldeSSKUP_x6mr% zL04lJhL<%e2YWeCl2so(LppMqixY4+%bvK~+7-` z!tJ;W2szHfS-v72zq8jGh;U~N*V#9aAtwomhOvLuZu@@QCNc{+gT6^XzMqE~i9%C+ z!N{}M3!0u8`H08KMU9U^PNb4Zgcl8Z1$ZV8BYS0eW!0=<8Y&4ZQiL}v62q@Nyip^w zF{Kp>-g+4*-F=?M-kArTAL2Av#-RES2W;dq#Y%2;FjCgvZ}(i#}~)FxBMA=Blu zux5YuYWR5y+@P`J*ilH2$0r0dAfgkJjS?#&nLV)5Fh7n?@E1sjz$YM7l-Tx4b~a+2 z1>O!DWD@4kUDOVxCn11|wUh`e#^l&L!BQka_7RFIe0x<^nprqm1;jz0p`z4Het}ZS zL9wz)EW^nZLKI7FD~2eiF3*Q4h0@Oysw96oNmwrdjx#cr956BsK|XbzjL9UlayPk{ zgS-=k?H(8eU4*&IG|!hyN)};JihYiM9xZ=&;yz@uA2L_J{n;Al`7)lLFX!pxVn&xq z${y@3CMk-~tRzg9OONbYe;()g*79d}oaYbhT^Dq@tc7jQ!f};BhcOGmRVYSDKsJ9$ zKBcrU$&9h>=CFRJ@q~U4x}0X57&8)~*)p90BXN7%ib79Rz#Uja=_u#*0UH=t+wqyT zYyCN%pF_{AMRLA8kI$CBEY6qt<@pk%CH5_y1y^~{SKz46Wu*-n^Klk0iZU;D=QCjEvdwlMHRxe3`q%ix&4UZDC`d}c*9YRb4cTQJeU;OEPExwNv-q^8Y< zmSg+I-`fH(u}IhaBgC`^XWkhOGT8}zlI)8sgtE@%;N1p9e2tui2H1PV5!g^0&h9!Yatj-rgR&5dBeOdC!!+Hxt;m0i_`_E-_gaMu^=| zu`<_C8p(0MIQCe@YUU}VuqhX#8OqPA$Z<%-kse7xZ0ZM_1Fyh20>|&awpG{D(`u&kPERK^C zxXvooBOm}G>PpG16wDfm?d{AeQ60C9j#uz4vJ!$cIj(@zW#fFErSmwKG#F@|@g!?( z566}?*c-bL`SDtXXsIlm)VfnZTQ(W5$k?5v3Dwp$;QV8V6)u(0wKf0kzg3zt<`;Qk@B)#skm)E&bWO1mEfeN4IY**ubcD}? zmlyL>n%UaeBY{GT5Wpac38{5CuONON6@y~OG*uFUFCX4&5k`4dVcRii#=pWb0#=I? z`Z`M&G%HYhp4?z(2Qi_^#hhm7PIU|H`oV7eLcW7&mOrn+KDIasV?tN4JFyCKb2w1; z0|!X9TG^}Bi9P(!c6WbgtQjf2kVspoZD^sL?Po%&v{8%_31a`^tk zqo;>2Up{$``692~=}pE#FY@;Mc89h*et#19nD5=2=YyIqZkiVfx~MoEC@#AX-+%b= z+2glQ2YYP~UYsP;NLC~crOC;8>PATnZZ=VWJX*xN(IkJT z*(J^Pb}ys6*fsgIz{PttdT=v^>;CE^b0YMv2>+r8)c#ahpj}sl9*M)C(~(+6j58M} zC5sN05||svvR^d!JjW+^^#;nauy%jWeoo;3<4TQhtdg zcY&Qy;fqKwMBLy2c7)ATo69v-WbuF8vh6bdP0S4|6-z~yhc{~e?&|vUG&JquG0S=q z7Nj`#Pqw$MF& zx_ii>ip6^3M;$DqJUrGA$4jxANPXGxxIL@ttyO5_V^7Jk02fFzsXXS&OW18cjZ8ya{O2UzNQJRk5jm)MLzv(0dcZ z1FPg4!B)*zY^exmr0<1ago~)08E-cGd zxq@RbJ&`Y@WQJG0$2{SGT{cq#8)BtQeNd|RauRuTgau#YM->Jjk=MOr*Hx!jDPtTZ zMw-m7jZ+GoWKf|pc*IIZ^|F?$yPdVaR`$V4RahiV;t`&YIXZ^+GOisjNm$;N;8o$d zAU4?xYCTb9w{|%{Ob!Gy#IL#o(;l!HVog+GDXAftt}9qyIx`Y~OF@g&CeP`*(39+n z_E9j)B2*P;EdoMkn(BrHo7?`_Fe`^@flYG*@8Z5H$5LfxZP=_L4+33Q)Vu>LMeG$< zu;D@>X#PS7ZmY{syPm+g&vS!4dnGHmsIxq@s{$4m+mtmo8BkpeCFxGyIY||dih<)Z zl*YpfmOXjSQ)-=mKUcF0;8+(03r$rvtMr)B>!J|bz41ca$}Xt8h!^$iSd$iAycjlX zwsD0husWkTO$xjjK(Ge8NpGs2%_>Ic1;@yPb5NCK&zjzW#-m0>h}ZGBxX9?Ugg*dU zlU?23E=IQ(k@|m7V5`{PmeOH*6*uJOI4D-m1_r^A#{E`*$6JGm(ycHo#nFpOW18{B zrV7I_ETM;Z3+?|ZY#g~K|HUWxbLGi3GXlD4N z<&6t17mFmC;CH-$H&-{<2*i%fm9ap(sj)|run$N9mSS#B(OFZ68KaF{Z3YgC}Ar= zpT#AA5{%S`AkavV|{t+}Rgc!PdK%(q#TpSmZOdDsEfV|6gxdPoI7bUIo`cg9M97&~4y3%+{ z%Y-bON1$4&yuSroodGBuz}q2&OD*6P)QJu!6IcTP`f)m60IzCrBPL2NwaS$OXW_ti zJI~$#Hk-1jf z-tB|bmF3Pw9E;b_9#VP#@Ez9=9u_NqW*~?1J*Am)zz>z$S#PAf1a0(!xqDLx@C`oV z<18v@Yhnri5Lc_k6%ow$;u_yP+rYNirNdy2i4qkUt|s){{z$Ou7?*7^GLtl+=D?Iq z8=f0?QQGbo9E!*D*Z$mmVNi;xmC$kE5<$3 zfXdx8o#cZXwJXxtfo)^`w!xQw--C>vog_FU(ix9JvN}DHYY)2%D z{uaov8=;guD2TYo4pasJ0W!aMl{`uC{6b&1wNskMGb;JHB}n!w04ZaCWr!R*I|M+K zf)@#71>$Lo6fl?O5(9Gs`%i4pviNHE!A+%&mF>FjN4v&q1_wBT37CyFzY7)qYMzZn zq?yqNY%4Tv@L3jv?N6Z?ii}KqWNw=Sc-S#T-ks9x1US;j#$imT@D{Nm9nX7M8HU~D zXBs82nvd%2`Viu8LKtd)ur?`!Xy)T7om?;*6ad4uvR#!OU60c#q7mZqW};KlP+5tk zp)UtvNAj@v$+lds;q1%r)|w#@Y8A|ZSm1dN`SXxkp1mUV+@(TA zO?>=0G5CM`llam=rN+?2E4cgGWkJK(&o9pnIHJExuR_x^JR@iu zLE8kEd9zR;kw@t)%}j%Naxwjr;E5Q2yk~S~ZKM5uZ`^WQzTp{rM&R!CjXh(}@C@Je ze8&wshVS;fj@vZ?w>R_M_MQR19{GK@(>DB$>$Qx)GyIm@>Ec5$_MEoc4xE!{nfIQiwlYoa4b$Wqd(V4rr*CxKwhtioyM`akoHh)+?RNUleb4ZFvpr|; zwo&izPU6dh4J%WuLMOjC#T}x5S9i-omZh2a$9QnV?r@+IGBO#1$%M!?rh&|I$jh(u z8zut2A3|IUG}eXL&xVv1GZ^%5j!egKHl9&qd=;90U>f7=(CnB-7Mek2 zCpPDWzjx2vZ_HfZ;|#_Jw;e!}EM0)i?yh^Bue}JFG@&WPeKnYTb0}-ruy6FIPWyf9 zY5#KXX=m0ox<=ROetFS1IBQOGkKlnl3h9@|K z_&Usjl%Q5+j!QfPW^$2{=d&Q-k&zpmOY*4zE{ z6&w5%)#~>*9iIvKUYV7Ph82U69kT6h za2k-^e=5_jS*082v2x}5%Bd{p59%6@V=MoJQ8f+UDI|Kpp3a(mMEB@Uv$vES`n3n zs&oUmdP8{+r=vS=O-(sK;|mL4XBzWC3S&@Y#Oz8P&fqmcKm$^vipb^W{(=vUVGari zTE|p3WHPn{*UeEC7gRX}Xd3`q-qv&_NJTq>Fdn*pX_icMMc;uSZzq{N0vWeh294q_ zQW0qBASh>@j~|u>&E#B4ohJa%7KMeuObVU9*8O; zt47IMkzK!`u&|4W$?8`m%CD2LQTu>%A;uDYj^e^NqX-{943NvRbn2eY(o^I#vxGth zl<`}CzSj+Grrz@%nh#k(-+-{_aa2U_WBS>O?P0eCUQ|KX?_Hb}JqzM3?Dh0C-`?Kt z_0zaRL^YI+ya{dO(A2kG5q zCADvJg?Qf^exAlNYUTS<+8u-A{K7rGF6eWA9=FA_%N{Z94pfVJG>x)Hph2iqjVQc) z+wm*!LFK(=qxrh|v&Vj5TgNsx9Ou!mwE}GbKzpgBbzty&dfJ}7zu(i7y4X~*A9~AW za-a@TYcOIaqEP6N`Hvwvz(hhQ(ZQ1=fQIJVXKw@S{;0Mi*scUqnYZ++up*%ft!hty zynX$|uNLRqr(S+w9=?9|2(t^XL090ww7|_}MK;NILf_j-K;xw>NO>#{W*o5}aKVsi zN^vb^;y%i^hi?yIlf`Ei+9pc9YcTeuR|PZw0iPIo>hyY@zT=xV@2M557{l8=M`RJ7 zS^mbFE{Ze9-@Cn*)~&VlHdn&;UvA%jtOOKRM1vw_7>1c3`Fy7o`=!mG2cg4`ixa!p z*%=l)VQ^a>I81hSNcp|oR|4XNz&+mq!a9ym2vcS<(QoD1js`7F|0aOovDn`q(qL_6r8G2oK{R`E)F5oG6}iU7NLHBBMx;< zgGMA4SMupvp8i7d1$}jiV^(PWlult3)g@7s>o18{P9v1sB;#2$U$D?sQddZtD;4E# zhe%2Gih#3pntc}~6ILd4JDpN<@?r5X-nELI_#w4dnOo*`8vYomP$0ejhlIN^{0V<2TEW+4LouQT3(mafwwAmKZ_242!OHS2=}Vfs(!#G?2&tvzqphkcT5ZwFm`ST3#OghVId zaYT|6q1T#*$-{DSky#k2uj5copGU0JDeT?ACQ~hS=ERUXQ~@$(0GR@RKnegzyjqcH zv6x*WM1PEn=^LE<%3`4h#i-y4Wy<1kz#I@3$AIoT#mFg~Y8Iz(sLZn><7hU1`#F8h zmbx<0)sTsDGtdMTKEPjao@Rx`olOGnb_(Xn3=#RUkGTBU$EQ4u-7BYXuQ0UgwNtp) zBx2B+UN6$Zg5WkJV<}O85ha0@klcP~`8{u!YqbGO<>qQ&74Fqe>|WWs0l9{^>z&xW zws(V-fb0ZR03#BizG6n00@xs3tq5ZcVgMJoiYn^Ip+#XW?6meg8y*Nf@O$2fI;}kq z0F@>jMqnJp&oWLyqIRhWG{tFX#B9tY3QK{7%0)&;E_!Ciq-Vl^7FSi83`M+4eGgX< z5=Qqd>mfH+0}(FjPvlxY|Fp76Ak6wTH9l!!29Tm0QiXt2EG<{`#WB>>B!zmYh!j)m zhzcrPQ7IK6R7c9TS47_*KjTT@7{5HrK~ZCq|>m*1T8OSavJ5@a#GaozTrw?F5YQUJZ7rQ zB6c-fJOy7ou~{Ne{6D$<{w*>%VAT^`Ztz z<2#g8ofH*UcDY2$jLH?S5T9*aqWUt>VWuHyW?dJ0LwN{N`ygz2%st70H|l!>r|*@H zPA#iqjbdvA?@+%if5#gx%Pbbk_wj6o#|K;&Ye@|~=hrP#gnf@$!3AA>7#1V-7z>)_ z#vWL=O&>}G9-q!0G5Nqv)81Av>*)3h2WqcydM0rgTU|eB`vR~RacFsD5`!n~X-tlf z%?zXfnMqDh$g%n1Lq1Ly^chG6P^f(Ac>PW^ZkE5`tUPX*pUcI*Fl$ zC%kYV3ZF-_8O^Sh;sim=(;q3dKCkxf49Al@IYn&)e{)4%D+A*n&$D=9uE;YTTo0-l z9gw7$EAq1Z@Hr}Ib{5TMyi4W#iage<`yO7w=9QSytS})c#dFkpARo#vER9a)ToPiQ zkT+FuFj<&7TPyOa>=OITyZRk3+#>2+>Sdo+W||j$UnT<^5_EW1+bljmhc%$AKd0b{ zEAr#I^@+N#EAoeGvq>sG{ZxfCTawN!hW)s9TSr&%X>@%N7f$5+*SBxvKZ@x-A-^vl ze<&aSwgfVs%FZ;#tw-}p|I%VgGlxwnJ44JBe?iys_34cB@L0k=FY{D^T^dLyIpd0v zjHF~Hj+}8gkKIEu4Hq$|E-a7a?!}*M3u6}K?xQC*Q;jC)F*(Mh=bvm#pi*+CrDDcw zEh#d|X$*Bm?&SyDnz?ygP_#@ZzJ0=5DGOiL>-(%FfjXl}>KKx#?-IT=2f$tfo1SCu zeFUq@MyLui=T4iBs*m|{^}0P%_(7ssuDb+;9qgm)NhP8a5in7bx%d|L(L9l=8d zG+sx=)QZ*7Q=9b3r`SFrdu?!*>IXgBe?DoLs<-v2;_YHxkJ`3%Y%p%RzSTYn)s1|4Zju|WcRWz^ zjtS@;4|Kg_!lDwJ{+=m<55x0He_esF@l0|v8JI8pj@vQ(_SA8^{h8wiJ;x2YkNgg5 zAP1m~?C%-A@A^JG^da+}(Q*5zpX~LG7N)h1S}c*hvhO1M*mw89k__@YP-EK-T8{5_ zx-&QExaZC?b>UTg#~&(3asv(mS_AEV0XM+k zLFyK15zUxQv(3)#6Hvb6e-s&WikxCe;Uu&ff3uU~D8^H-!`DhjJ@wS1L{fbD0xhou zhN~QV3sauMYX`+^GI{UqLCPGzZR+NgcE;6O;WZ$QkU{`5G)G=jAvX&Xo3Pw)90(nC z!$D`i2Ux;xlP`R$i4BbQ*=&k8jvVu`aoYpz&>vg2WwNMc6}Z3He>~!b+8JT}7S;F= z62)AT)qM4uh%|Z5mGLi~&R(ZI>G;9Heq^8`E zZ097MUa$HqY>@)5w0VK&TAiv9kvDes+`RzpegmW9wz@5NfG_aoflY6_)ie5T&*-^< z*M+^_>UG^tzwi3KfA4ntEyoS^_(P}Ly>tRMXffO3R?qDQdrsT+T7ZPwzW(fX+ItRG zhvrX^-0kdDp1oe*al7q~>-AcW+YS2i!SLO{gY>rHyS)~^x4M;Qk0rFhSQ?*OUK_^L z58Qsg>-rv8Qg;Cb_n={~<97GJ0Bg@{gHiNe$ALtrvmo#h7FwG7K7Ym`8DQzX=fPkBoE>*BK!9}na1aH)+itn7 zZs7I;Xu|i{Q{V#gUNZ@?RjuG?HO&iyN3|!^^KnE_xsMC>-F~d zGcGz^PX? zY46er4yM7_?Q~!hzz4&3{P*3H9iAC~?HL_rr{@{iTNf5@ADk8VfVTR#E{W%S+S#H& z)2P3JV+Sdg!G@FeNlcDsE@$F#0^-2ibT&V)-#=eN(mn3#yg4w**w7Fj*c4T-bxx!+ z#`w?jB!`0=?|I+jXN#4w*#*DLkHqd;QioTH^teXq-ivl#OC)Vl)k{DPlPk<5}6vv!o+^cgLun1-=ISpl+ynYJK$M>;q z4`#wc)cRpDr_7v{w0>Y1wgFs6fRzmVU1StJjhm9MPpX`LF<9(@I#@1$Q)lWw#WBYT zU1UF*^YkKT_A)}2{Puc*!B5y}DU55%dS*1bq=VwP$Li_bwH{{2qQLBffEf!*u@+{y z(%!JU8*jAL(>Ruhsx;{Z<1hSL>=hWTOW$)loiSX$9kB`|h-V{k}B?YxC7QL+RIo zq-_LG_v#3JuZqxv8bY6eOCqFNy6;#_SmShY{T!S?iapBxsDeT*8fi4$Qh6DFQ!=XBTtd+HzMfIF zZf;s`pZSOK-7e7itv*~$;35Ejr|tLMr`@p=xNuo<;JN|SzR}6y!2m{3XWG65QV+6W z9Uc^PL{0Gjmlr+5Z%u*Vd)m7UzRdg1-qdLW{WxupSs`cTp#xg*|0hrrW_-<`I{ ztTzU3q_)vxuNpUt)Eh?>~dWMiJJ~eP&UV`wpz&;Ok?Rz>!a+;|DgGF_X&g6~5U)>VhEeDE>k>q2WI@$i;MK%}jU-3 zZ27U@z`W!#=l9?pd$w`i={g9!9JuR>W~vyW#dl@P=Rz~s{3U5Oo~5}^mV&{n?^0-% z)7crw%vPI!&I{24tU>JoKYIJWqJ4&sN=(CL8|~I_f@${Lw*MR$3ve3;ZlMQ{kcwvl zKCm?4DH<#%OT{F=h0mDmvw!TFr3ae)fTV7mzerEPthll^2Di<=SDk&(=Aj@iP{c@_ zt?hSI_+wxj1+pYfewqBvWy3g^yAFQkG-J)98yG5lYaryE2ru181QJJ^`waFjZ6=>a>VVBAKtQm2?L^(a5 z!uKo<7ZQH|c1uZkN;b{vvf>@N%d$$7*XUyT*ylofzpVrHu`-U=70!UKVI6_R0k`T=U`=*&P`y&2nkJ}?*(vwGtT*j1?T?o#$%`RHy%BG%VTfczvY&v zx#AeiH0Q<~U_Ek->Ru2Sf@>0%dCZfh!@R{#@e-rog2DYY7~H75J9Dg0MeG6RS_Iuq zh- zHa4C+iEz~@+mgfH@9Nu<%{qD)DR*ThvBoI-;Tvwsb<2wnhiyt=MZ#d-rWfNW+E&1j zI3LOH=|jTik3eM-O>x+eDv9NZfK`gKiW7c*e_f5`S*52{>Z8d7);m8+18-e*Pm)Qs zwkOG?)Qj1O!We{93^sTEzktK4m&(6?-F%@z<=Lm8JImz;fbrI>-mR}A@~|5;#|x^^ zd29c_ooxqtsLgD<_3Ppe+)e!w$TXXU(H~b$6j)j$R`z|sK^#;ljOv!ZZMO&fo)L5! z>M1w+Eqk2bJ%YW4O62x#*xAj@3kDBxQSzyQ?!vDaflyLiZ)NNj-XBiW2CasF{*;;Z zo@wb#*ynap8FuYQ40p9reYt74`3xgr!NS0Wb_DN#px0Q>iX79mq#V0aB1&t(Uk%8r z+}}LC8EyF*+5&$zF^Xy!8N+WhfzOqHxoIDKX3-Exn!H0dB#>KZ3J1-(eH3L)&MD3W zqD1+&4kOC(sNDoaDN8oedI|@Bv9$*roOau8I85HmE(pujim$ z=e^%^y*`N9dZ4(4a<)Fo+1$RL2QDgsw_65FxMbsN*5ArouGevYy3i&|s0e%@j%t;l z&2v>zSj7`NeuEUIhB?*Zkh?qcc-z25B z_`s72AzMB{y(6O6QTm9)q^M0dIfCX`z}UBFJ!Fzulovj}i#U(?g3%?})3tbdtOSmf2}<-xR*Q^(O{u)1mJSdPe-aOvuD|`H zy}cE0JS^vy&tH>xj#iv9g$0@vg#M2Mk7#rdRy$H66W!LN~OnL>0G~p`>{MaVS|V{L>dONC}GS4kFsr+%PqBG?j7g&L=Ok16p+3W z)nec>v2>#N=bv|XnDGagKAQ&1dsinant0bEz$@SSfS1 zbgzD68qatrHi<%ZxnEYc(`^|(gJHE(r(8AQ~IN+es#xyd|v*`2`EU5rgZ#?os2SSre2c!@1e!T;u*RiV*W8+aY9LCV2)=Vl^fsM5ZXMW;Ks;YQ}V8V z1(m*UD8f)BFTyQ}F=<_RUO@tKFH_Rbmv}Dv@)r7D2ATmOA5V99VQc0T~>Xl&CyNq?w@~W z{XE&RAM9cu6wh|dKYCK2{V?%8aO8e}*JGXJWhigy{>dlQCh>CV>mD`h-M4bbw;yUX zlKX)~HU2lvwa{3Jll8{@>)-uf|MXw|mnQf5Y!XN)-|&y}c3$TDr~mxl>jnS$-~Si? z@qhmB%z=<|;ve~D{`DXJp5+$_|McJgAAkLazgH6e{cke!3d05!>GSk6xMKxfahT`$I6tu~B%S~weA@)?d#$(4 zGbE~}>uYYBHln}ZltgNHd?L0b-a@6NTbbVuCm=MjLUU=r#Zl>XXRzo6bNNWsyexo>})?G%7+_Q9ik+W{7cuB!O9Ir7H z_S3MjQObg=E7#?nz>}`TDnk)|4VBy>)kBf9zE-_LA-drsY*3f9Z;G`Zwo8IIJv)P7 z(CGr4JMvMnNp|>1S&&amf);bAS@ceEQ%#+iFV>RSFL9Vpirw5^fulTsqngQs3$A*u z3lD7UJyiRFuDbWbJxP)kki|Huy;Ai{cvc ztUd~lbQ)n$o%^yU%$eS>2^L)iF@&@e8q=MY3i?=309!1I&~9e1x-?fg&&Kuj82+X)L|sX@Fg zY753gDO20t7AZ_qhuRQDoN~i47Aage1OQO&H@bp#Je*$sUAmYvu@eCs4DuJgu>RL0z5Ug3uY%!te> zJ>E)<@hy4UlpitHRGOiq$s1q^y@;~&I05%5-r~vxB;Rxf-Q03!D8AY%Glg#E`bQ(ERr~9h=ST9>i&|(39_>W6ynow;BO68K3N!}hp-BL z0&F#bo_-VBph9H+dZL|&NvhBtWIeUP!LMY#QP+_iAad#z=eUAhA8vU=5pIQsA9tfg zyvrD$yR$eiMw2)TAKcIc0=m3=^X!q3J6KgX+pBHV1qu0oNmU!&Y8!pei0^`|Uws_b z!3OAQC;Yh05;t@}D`l@f+Er+anlP64gPY3N)yMKW#6TbA?jhh~i$ZKlkej%QltdhV zN>W(QrFfp@A19o19MgQcJU+4Ad9(lwVKLzjC4!ea*z&+1PcBR1vTZEGG{?$0 zUGYd1wo<}{qsNk z!$1Ci-GBJ&zxyBl`tSb!pZ~-Eg5J^BF4Ps#{CMctK?Eq<)gmi0k|kpU`?$-t{4U$vOU055t$_|0c+DGtrD{dyrM8IMd zop5FFOPy=Qr09lsQpLugUapV0@*6`D5OtbqL!&uMy5@S6?>aHTtCww=dOLEQv| zSS!-;yoV5P(-zzu7j=4tb#=(4KScU}C8+LIZ5Ira=rTSB2h9+5WO15C*<|E?&Ol26 zfuWXlLKqY|l`dGuvk1Q|_F2NseSd_7nPt(b@7RR1K zJkT6t%2`TGWqL)&kJ9-Z!ljuoeABK}!h|8RlKYNlMas+yRAn30sPWJTr-1B#fZn#Z zWlZMsY+MHpP};JGJPtIh>(EqcBe4svgdZ`psE}@eRcw>W0*kAGt$Fxp5Rg>Y;)X!f zwOYm4NXrA3jNidOnsbFFpf$vtE|i$l+G-_58GX9GyD?<92r;cVC=xN=q{au26cxo5 zMorOqy(&j9P9}KbLx}PM(Hhc!>!<=gEDl1+Q&t(9;>xb;j>)U6CN&S$#3MDL1((EY z8Qxx3BELw5@5%yT7$FrQR?KNUnb3q^+?yCHQeLg{yLFq1wc#RJAg1NA#+*gYre?}+ z-w2pDgUJ7X4n!u?3Sme4ntpPPkfup@oNv-~o9U3;-ix*RBTb!y=&|2_rgN(1vE85r zvJ>__amX@rc-o*}R;p4|xxH($$>46~Q9YrvBKqmT8#%5&aQz|UgjYtiQw-x$M&fqL z=sj%`iz|QvfSAPlp#E^j ze!i~sUkO^cRqtCJ@>=MBGQG!5@yjYXu7?_IYXjLSbZFOxvJ>mwf49(9VhK|p@+k&e zO5iXJH;566kGhggef$MlYM}_G%+J(I!$MA1<d&^qyh}=pNyq{72EqgrE6+>8Fez( zgGFkP^;QjW`&hij2MC8*lVsBEJBNn^2PA-JudR(6D!)cR*^>DzA zwd)HfkuwPPK_vqr-pIu>=5TJ`2?v` z9gbfawLU!Wp5f3H!$ZJ9*fY9uuIT;d3M`+r{?c``gq4qf)WI~)QW>j`Wva}Xjf1NC z4A9vRm6N4vy-+<~s-_I<4w9;U13w!p?gms6pxW~N@OicLP(i~7ElEGuyX9421WUTP zTkB9z4P>4cb#)pg=XCP+9(|XJfSZt5bs`{Wa=e?9DC~K|_#j#?lLNOilFO45&;u*p zci`i`<90-Ulv0KMCu@eZaaL>YZz$d)1ak`^Ty@6LkfrpG0AEcs0bR4nzUnSgxrJ64 z54sw=Fubf$IoQjAlC1jR8Pbu-=l~uEbX{aQuND0y@7?We~1WSz};DOrR?DfT)3d9?i9iTjYre#l(?_GfFH=gWA0zMQ9%iy2)e zDSNQDn4~B^vyw1bEI3&&Lk9mXsKSD_ds0of>j z`IOSaBs0dgo5T8@#uNHI=yIBIV$4W{X3KO2jKuA2D+)bP0e4^xrK6nJ2W((qZO3QU zuJz}5ehxje7RmYYJU(0gvN&Jnm*-26me{v+7F^{)UxA}Omz6eT%*R>0D9XIpo$F*A z%1t(1E~g{|_WBEiA{*H5pBYTI%5LC)aV40HMr;+toSF7;=Axw3WckgN9O0kEyp(lp zZ#R`s8RHWknDiT-*uuaM?bB-s~N2xXni!O7_jL!9sJZ9c>B9_6BcWPLFW zVcZ!3J`Y~PUb8D1o!Bd~ikvBR!IY-Z0tEhRM#3om%ubIUzYXBawX_ zi>4U9O%ai8Z^vk1f!9EA+a6kf$tWMh_Huc%0+a$1VZ@11*u^wUKbxRn_4^}pSR5xO zaGh1EM?e5X)RmH1DVQ}B+uNB{qB?FH9k1Y9WF-V?a$Eta%f|USOXqPeX)w?_<4M-o z9*!+(us3!g^5eA%(NbABsdcA-wrnz9k+C~T6RNFi!1>1zD`3o2>eXX^O+VBiOPoKZ zXK_OHy&*0f2(=X%gJ7rc`+mE2WP^FHkr!D!F3j?f%#})V?WpD__0jeGG{v=!57iHD zT+j?eZli`?@tkxuXzKFz_J-y_R+Z#Mb^+q2Fbrk-mUwm-Sz4q}Y$W!;Lwd~XFVfdpJdc4KMV!O1=N9e}c0$K^utMF-r8L#U zvq)_wvE{NF;M6MOid?e6~0$kU5#OkYHcMVy?!d-FW(`aK9j)ob@@+x;a6HJtwhXVC~d H!+in(jcZVY diff --git a/frontend-dist/js/718.266849e4.js.map b/frontend-dist/js/718.27080555.js.map similarity index 99% rename from frontend-dist/js/718.266849e4.js.map rename to frontend-dist/js/718.27080555.js.map index 1ad6471b..97527d9d 100644 --- a/frontend-dist/js/718.266849e4.js.map +++ b/frontend-dist/js/718.27080555.js.map @@ -1 +1 @@ -{"version":3,"file":"js/718.266849e4.js","mappings":"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","sources":["webpack://sanyue_imghub/src/js/rangetouch.js","webpack://sanyue_imghub/src/js/config.js","webpack://sanyue_imghub/src/js/utils/css.js","webpack://sanyue_imghub/src/js/utils/is.js","webpack://sanyue_imghub/src/js/utils/numbers.js","webpack://sanyue_imghub/src/js/utils/events.js","webpack://sanyue_imghub/./src/components/ToggleDark.vue?6d4a","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","webpack://sanyue_imghub/./src/components/browse/TransformMedia.vue?7643","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/is.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/animation.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/objects.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/elements.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/support.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/events.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/promise.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/arrays.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/style.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/html5.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/browser.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/strings.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/i18n.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/storage.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/fetch.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-sprite.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/time.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/controls.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/urls.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/captions.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/defaults.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/states.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/types.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/console.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/fullscreen.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-image.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/ui.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/listeners.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-script.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/vimeo.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/youtube.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/media.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/ads.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/numbers.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/preview-thumbnails.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/source.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plyr.js","webpack://sanyue_imghub/./src/utils/mediaManager.js","webpack://sanyue_imghub/./src/components/browse/TransformMedia.vue","webpack://sanyue_imghub/./src/components/browse/TransformMedia.vue?1938","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?5477","webpack://sanyue_imghub/./src/views/PublicBrowse.vue","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?bab5","webpack://sanyue_imghub/./node_modules/loadjs/dist/loadjs.umd.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/defineProperty.js"],"sourcesContent":["// ==========================================================================\n// rangetouch.js v2.0.0\n// Making work on touch devices\n// https://github.com/sampotts/rangetouch\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport defaults from './config';\nimport { matches } from './utils/css';\nimport { trigger } from './utils/events';\nimport is from './utils/is';\nimport { round } from './utils/numbers';\n\nclass RangeTouch {\n /**\n * Setup a new instance\n * @param {String|Element} target\n * @param {Object} options\n */\n constructor(target, options) {\n if (is.element(target)) {\n // An Element is passed, use it directly\n this.element = target;\n } else if (is.string(target)) {\n // A CSS Selector is passed, fetch it from the DOM\n this.element = document.querySelector(target);\n }\n\n if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) {\n return;\n }\n\n this.config = { ...defaults, ...options };\n\n this.init();\n }\n\n static get enabled() {\n return 'ontouchstart' in document.documentElement;\n }\n\n /**\n * Setup multiple instances\n * @param {String|Element|NodeList|Array} target\n * @param {Object} options\n */\n static setup(target, options = {}) {\n let targets = null;\n\n if (is.empty(target) || is.string(target)) {\n targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type=\"range\"]'));\n } else if (is.element(target)) {\n targets = [target];\n } else if (is.nodeList(target)) {\n targets = Array.from(target);\n } else if (is.array(target)) {\n targets = target.filter(is.element);\n }\n\n if (is.empty(targets)) {\n return null;\n }\n\n const config = { ...defaults, ...options };\n\n if (is.string(target) && config.watch) {\n // Create an observer instance\n const observer = new MutationObserver(mutations => {\n Array.from(mutations).forEach(mutation => {\n Array.from(mutation.addedNodes).forEach(node => {\n if (!is.element(node) || !matches(node, target)) {\n return;\n }\n\n // eslint-disable-next-line no-unused-vars\n const range = new RangeTouch(node, config);\n });\n });\n });\n\n // Pass in the target node, as well as the observer options\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n }\n\n return targets.map(t => new RangeTouch(t, options));\n }\n\n init() {\n // Bail if not a touch enabled device\n if (!RangeTouch.enabled) {\n return;\n }\n\n // Add useful CSS\n if (this.config.addCSS) {\n this.element.style.userSelect = 'none';\n this.element.style.webKitUserSelect = 'none';\n this.element.style.touchAction = 'manipulation';\n }\n\n this.listeners(true);\n\n this.element.rangeTouch = this;\n }\n\n destroy() {\n // Bail if not a touch enabled device\n if (!RangeTouch.enabled) {\n return;\n }\n\n // Remove useful CSS\n if (this.config.addCSS) {\n this.element.style.userSelect = '';\n this.element.style.webKitUserSelect = '';\n this.element.style.touchAction = '';\n }\n\n this.listeners(false);\n\n this.element.rangeTouch = null;\n }\n\n listeners(toggle) {\n const method = toggle ? 'addEventListener' : 'removeEventListener';\n\n // Listen for events\n ['touchstart', 'touchmove', 'touchend'].forEach(type => {\n this.element[method](type, event => this.set(event), false);\n });\n }\n\n /**\n * Get the value based on touch position\n * @param {Event} event\n */\n get(event) {\n if (!RangeTouch.enabled || !is.event(event)) {\n return null;\n }\n\n const input = event.target;\n const touch = event.changedTouches[0];\n const min = parseFloat(input.getAttribute('min')) || 0;\n const max = parseFloat(input.getAttribute('max')) || 100;\n const step = parseFloat(input.getAttribute('step')) || 1;\n const delta = max - min;\n\n // Calculate percentage\n let percent;\n const clientRect = input.getBoundingClientRect();\n const thumbWidth = ((100 / clientRect.width) * (this.config.thumbWidth / 2)) / 100;\n\n // Determine left percentage\n percent = (100 / clientRect.width) * (touch.clientX - clientRect.left);\n\n // Don't allow outside bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Factor in the thumb offset\n if (percent < 50) {\n percent -= (100 - percent * 2) * thumbWidth;\n } else if (percent > 50) {\n percent += (percent - 50) * 2 * thumbWidth;\n }\n\n // Find the closest step to the mouse position\n return min + round(delta * (percent / 100), step);\n }\n\n /**\n * Update range value based on position\n * @param {Event} event\n */\n set(event) {\n if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) {\n return;\n }\n\n // Prevent text highlight on iOS\n event.preventDefault();\n\n // Set value\n // eslint-disable-next-line no-param-reassign\n event.target.value = this.get(event);\n\n // Trigger event\n trigger(event.target, event.type === 'touchend' ? 'change' : 'input');\n }\n}\n\nexport default RangeTouch;\n","const defaults = {\n addCSS: true, // Add CSS to the element to improve usability (required here or in your CSS!)\n thumbWidth: 15, // The width of the thumb handle\n watch: true, // Watch for new elements that match a string target\n};\n\nexport default defaults;","// Element matches a selector\nexport function matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return method.call(element, selector);\n}\n\nexport default { matches };\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\n\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => getConstructor(input) === Function;\nconst isArray = input => Array.isArray(input);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isElement = input => instanceOf(input, Element);\nconst isEvent = input => instanceOf(input, Event);\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n nodeList: isNodeList,\n element: isElement,\n event: isEvent,\n empty: isEmpty,\n};\n","// Get the number of decimal places\nexport function getDecimalPlaces(value) {\n const match = `${value}`.match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\n if (!match) {\n return 0;\n }\n\n return Math.max(\n 0,\n // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0) -\n // Adjust for scientific notation.\n (match[2] ? +match[2] : 0),\n );\n}\n\n// Round to the nearest step\nexport function round(number, step) {\n if (step < 1) {\n const places = getDecimalPlaces(step);\n return parseFloat(number.toFixed(places));\n }\n return Math.round(number / step) * step;\n}\n\nexport default { getDecimalPlaces, round };\n","// Trigger event\nexport function trigger(element, type) {\n if (!element || !type) {\n return;\n }\n\n // Create and dispatch the event\n const event = new Event(type, { bubbles: true });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\nexport default { trigger };\n","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=466b2b5c&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=466b2b5c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-466b2b5c\"]])\n\nexport default __exports__","import { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, toDisplayString as _toDisplayString } from \"vue\";\nconst _hoisted_1 = [\"src\"];\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = {\n key: 2,\n class: \"video-placeholder\"\n};\nconst _hoisted_4 = {\n class: \"audio-cover\"\n};\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1,\n class: \"audio-icon-large\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n};\nconst _hoisted_7 = {\n class: \"audio-info\"\n};\nconst _hoisted_8 = {\n class: \"audio-title\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"audio-artist\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 4,\n class: \"audio-placeholder\"\n};\nconst _hoisted_12 = {\n class: \"audio-name\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"tm-viewport\",\n ref: \"viewport\",\n onPointerdown: _cache[3] || (_cache[3] = (...args) => $options.onPointerDown && $options.onPointerDown(...args)),\n onPointermove: _cache[4] || (_cache[4] = (...args) => $options.onPointerMove && $options.onPointerMove(...args)),\n onPointerup: _cache[5] || (_cache[5] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onPointercancel: _cache[6] || (_cache[6] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onDblclick: _cache[7] || (_cache[7] = _withModifiers((...args) => $options.onDblClick && $options.onDblClick(...args), [\"prevent\"]))\n }, [$props.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"tm-media\",\n src: $props.src,\n draggable: \"false\",\n style: _normalizeStyle($options.mediaStyle),\n onLoad: _cache[0] || (_cache[0] = (...args) => $options.onLoad && $options.onLoad(...args))\n }, null, 44, _hoisted_1)) : $props.isVideo && $props.isActive ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"tm-video-wrap\",\n onPointerdown: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"video\", {\n ref: \"videoEl\",\n class: \"plyr-video\",\n src: $props.src,\n playsinline: \"\"\n }, null, 8, _hoisted_2)], 32)) : $props.isVideo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [...(_cache[8] || (_cache[8] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M8 5v14l11-7z\"\n })], -1)]))])) : $props.isAudio && $props.isActive ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: \"tm-audio-wrap\",\n onPointerdown: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_4, [$data.audioCover ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: $data.audioCover,\n class: \"cover-img\"\n }, null, 8, _hoisted_5)) : (_openBlock(), _createElementBlock(\"svg\", _hoisted_6, [...(_cache[9] || (_cache[9] = [_createElementVNode(\"path\", {\n d: \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"\n }, null, -1)]))]))]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString($data.audioTitle), 1), $data.audioArtist ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString($data.audioArtist), 1)) : _createCommentVNode(\"\", true)]), _createElementVNode(\"audio\", {\n ref: \"audioEl\",\n class: \"plyr-audio\",\n src: $props.src\n }, null, 8, _hoisted_10)], 32)) : $props.isAudio ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_cache[10] || (_cache[10] = _createElementVNode(\"svg\", {\n class: \"audio-icon-large\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"\n })], -1)), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($data.audioTitle), 1)])) : _createCommentVNode(\"\", true)], 544);\n}","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => typeof input === 'function';\nconst isArray = input => Array.isArray(input);\nconst isWeakMap = input => instanceOf(input, WeakMap);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isTextNode = input => getConstructor(input) === Text;\nconst isEvent = input => instanceOf(input, Event);\nconst isKeyboardEvent = input => instanceOf(input, KeyboardEvent);\nconst isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nconst isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));\nconst isPromise = input => instanceOf(input, Promise) && isFunction(input.then);\n\nfunction isElement(input) {\n return input !== null\n && typeof input === 'object'\n && input.nodeType === 1\n && typeof input.style === 'object'\n && typeof input.ownerDocument === 'object';\n}\n\nfunction isEmpty(input) {\n return isNullOrUndefined(input)\n || ((isString(input) || isArray(input) || isNodeList(input)) && !input.length)\n || (isObject(input) && !Object.keys(input).length);\n}\n\nfunction isUrl(input) {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n }\n catch {\n return false;\n }\n}\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n promise: isPromise,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element, delay) {\n setTimeout(() => {\n try {\n element.hidden = true;\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n element.hidden = false;\n }\n catch {}\n }, delay);\n}\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach((key) => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n }\n else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport is from './is';\nimport { extend } from './objects';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n }\n else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) return;\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.textContent = text;\n }\n\n // Return built element\n return element;\n}\n\n// Insert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) return;\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) return;\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) return;\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) return null;\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) return {};\n\n const attributes = {};\n const existing = extend({}, existingAttributes);\n\n sel.split(',').forEach((s) => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n // Get the parts and value\n const parts = stripped.split('=');\n const [key] = parts;\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.string(existing.class)) {\n attributes.class = `${existing.class} ${className}`;\n }\n else {\n attributes.class = className;\n }\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return extend(existing, attributes);\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) return;\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n element.hidden = hide;\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const { prototype } = Element;\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method\n = prototype.matches\n || prototype.webkitMatchesSelector\n || prototype.mozMatchesSelector\n || prototype.msMatchesSelector\n || match;\n\n return method.call(element, selector);\n}\n\n// Closest ancestor element matching selector (also tests element itself)\nexport function closest(element, selector) {\n const { prototype } = Element;\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n function closestElement() {\n let el = this;\n\n do {\n if (matches.matches(el, selector)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n }\n\n const method = prototype.closest || closestElement;\n\n return method.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, focusVisible = false) {\n if (!is.element(element)) return;\n\n // Set regular focus\n element.focus({ preventScroll: true, focusVisible });\n}\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider) {\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput;\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n pip: (() => {\n return (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture);\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n }\n catch {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n catch {}\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach((type) => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: { ...detail, plyr: this },\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach((item) => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","import is from './is';\n/**\n * Silence a Promise-like object.\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n * @param {object} value An object that may or may not be `Promise`-like.\n */\nexport function silencePromise(value) {\n if (is.promise(value)) {\n value.then(null, () => {});\n }\n}\n\nexport default { silencePromise };\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Style utils\n// ==========================================================================\n\nimport { closest } from './arrays';\nimport is from './is';\n\n// Check support for a CSS declaration\nexport function supportsCSS(declaration) {\n if (!window || !window.CSS) {\n return false;\n }\n\n return window.CSS.supports(declaration);\n}\n\n// Standard/common aspect ratios\nconst standardRatios = [\n [1, 1],\n [4, 3],\n [3, 4],\n [5, 4],\n [4, 5],\n [3, 2],\n [2, 3],\n [16, 10],\n [10, 16],\n [16, 9],\n [9, 16],\n [21, 9],\n [9, 21],\n [32, 9],\n [9, 32],\n].reduce((out, [x, y]) => ({ ...out, [x / y]: [x, y] }), {});\n\n// Validate an aspect ratio\nexport function validateAspectRatio(input) {\n if (!is.array(input) && (!is.string(input) || !input.includes(':'))) {\n return false;\n }\n\n const ratio = is.array(input) ? input : input.split(':');\n\n return ratio.map(Number).every(is.number);\n}\n\n// Reduce an aspect ratio to it's lowest form\nexport function reduceAspectRatio(ratio) {\n if (!is.array(ratio) || !ratio.every(is.number)) {\n return null;\n }\n\n const [width, height] = ratio;\n const getDivider = (w, h) => (h === 0 ? w : getDivider(h, w % h));\n const divider = getDivider(width, height);\n\n return [width / divider, height / divider];\n}\n\n// Calculate an aspect ratio\nexport function getAspectRatio(input) {\n const parse = ratio => (validateAspectRatio(ratio) ? ratio.split(':').map(Number) : null);\n // Try provided ratio\n let ratio = parse(input);\n\n // Get from config\n if (ratio === null) {\n ratio = parse(this.config.ratio);\n }\n\n // Get from embed\n if (ratio === null && !is.empty(this.embed) && is.array(this.embed.ratio)) {\n ({ ratio } = this.embed);\n }\n\n // Get from HTML5 video\n if (ratio === null && this.isHTML5) {\n const { videoWidth, videoHeight } = this.media;\n ratio = [videoWidth, videoHeight];\n }\n\n return reduceAspectRatio(ratio);\n}\n\n// Set aspect ratio for responsive container\nexport function setAspectRatio(input) {\n if (!this.isVideo) {\n return {};\n }\n\n const { wrapper } = this.elements;\n const ratio = getAspectRatio.call(this, input);\n\n if (!is.array(ratio)) {\n return {};\n }\n\n const [x, y] = reduceAspectRatio(ratio);\n const useNative = supportsCSS(`aspect-ratio: ${x}/${y}`);\n const padding = (100 / x) * y;\n\n if (useNative) {\n wrapper.style.aspectRatio = `${x}/${y}`;\n }\n else {\n wrapper.style.paddingBottom = `${padding}%`;\n }\n\n // For Vimeo we have an extra
    to hide the standard controls and UI\n if (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) {\n const height = (100 / this.media.offsetWidth) * Number.parseInt(window.getComputedStyle(this.media).paddingBottom, 10);\n const offset = (height - padding) / (height / 50);\n\n if (this.fullscreen.active) {\n wrapper.style.paddingBottom = null;\n }\n else {\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n }\n else if (this.isHTML5) {\n wrapper.classList.add(this.config.classNames.videoFixedRatio);\n }\n\n return { padding, ratio };\n}\n\n// Round an aspect ratio to closest standard ratio\nexport function roundAspectRatio(x, y, tolerance = 0.05) {\n const ratio = x / y;\n const closestRatio = closest(Object.keys(standardRatios), ratio);\n\n // Check match is within tolerance\n if (Math.abs(closestRatio - ratio) <= tolerance) {\n return standardRatios[closestRatio];\n }\n\n // No match\n return [x, y];\n}\n\n// Get the size of the viewport\n// https://stackoverflow.com/questions/1248081/how-to-get-the-browser-viewport-dimensions\nexport function getViewportSize() {\n const width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n const height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n return [width, height];\n}\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { setAspectRatio } from './utils/style';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter((source) => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Whether we're forcing all options (e.g. for streaming)\n if (this.config.quality.forced) {\n return this.config.quality.options;\n }\n\n // Get sizes from elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n setup() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set aspect ratio if fixed\n if (!is.empty(this.config.ratio)) {\n setAspectRatio.call(player);\n }\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(s => s.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n if (player.quality === input) {\n return;\n }\n\n // If we're using an external handler...\n if (player.config.quality.forced && is.function(player.config.quality.onChange)) {\n player.config.quality.onChange(input);\n }\n else {\n // Get sources\n const sources = html5.getSources.call(player);\n // Get first match for requested size\n const source = sources.find(s => Number(s.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState, playbackRate } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.speed = playbackRate;\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n silencePromise(player.play());\n }\n });\n\n // Load new source\n player.media.load();\n }\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst isIE = Boolean(window.document.documentMode);\nconst isEdge = /Edge/.test(navigator.userAgent);\nconst isWebKit = 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent);\nconst isIPhone = /iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;\n// navigator.platform may be deprecated but this check is still required\nconst isIPadOS = navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\nconst isIos = /iPad|iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;\n\nexport default {\n isIE,\n isEdge,\n isWebKit,\n isIPhone,\n isIPadOS,\n isIos,\n};\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) return input;\n\n return input.toString().replace(/\\{(\\d+)\\}/g, (_, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurrences of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.textContent;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([k, v]) => {\n string = replaceAll(string, k, v);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) return false;\n const test = '___test';\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n return true;\n }\n catch {\n return false;\n }\n }\n\n get = (key) => {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n const store = window.localStorage.getItem(this.key);\n if (is.empty(store)) return null;\n const json = JSON.parse(store);\n return is.string(key) && key.length ? json[key] : json;\n };\n\n set = (object) => {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objects\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n try {\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n catch { }\n };\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text', withCredentials = false) {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) return;\n\n // Set to true if needed for CORS\n if (withCredentials) {\n request.withCredentials = true;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n }\n catch {\n resolve(request.responseText);\n }\n }\n else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n request.responseType = responseType;\n request.send();\n }\n catch (error) {\n reject(error);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then((result) => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n try {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n catch {}\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(undefined, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n }\n else {\n hours = '';\n }\n\n // Render\n return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport RangeTouch from 'rangetouch';\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/load-sprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const host = window.location.host ? window.location.host : window.top.location.host;\n const cors = url.host !== host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`);\n }\n\n return true;\n }\n catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n 'aria-hidden': 'true',\n 'focusable': 'false',\n }),\n );\n\n // Create the to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n }\n\n // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(key, attr = {}) {\n const text = i18n.get(key, this.config);\n const attributes = { ...attr, class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ') };\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a
    `);\n }\n\n // Set position\n tipElement.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(\n this,\n this.elements.display.currentTime,\n invert ? this.duration - this.currentTime : this.currentTime,\n invert,\n );\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar.\n // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415\n // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062\n // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338\n if (this.duration >= 2 ** 32) {\n toggleHidden(this.elements.display.currentTime, true);\n toggleHidden(this.elements.progress, true);\n return;\n }\n\n // Update ARIA values\n if (is.element(this.elements.inputs.seek)) {\n this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n if (this.config.markers.enabled) {\n controls.setMarkers.call(this);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleMenuButton(setting, toggle) {\n toggleHidden(this.elements.settings.buttons[setting], !toggle);\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panels[setting];\n let value = null;\n let list = container;\n\n if (setting === 'captions') {\n value = this.currentTrack;\n }\n else {\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('[role=\"menu\"]');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.buttons[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}×`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panels.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = (quality) => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach((quality) => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panels.loop.querySelector('[role=\"menu\"]');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.buttons.loop, false);\n toggleHidden(this.elements.settings.panels.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleMenuButton.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.captions)) {\n return;\n }\n\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panels.captions.querySelector('[role=\"menu\"]');\n const tracks = captions.getTracks.call(this);\n const toggle = Boolean(tracks.length);\n\n // Toggle the pane and tab\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!toggle) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.toggled && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.toggled,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.speed)) {\n return;\n }\n\n const type = 'speed';\n const list = this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');\n\n // Filter out invalid speeds\n this.options.speed = this.options.speed.filter(o => o >= this.minimumSpeed && o <= this.maximumSpeed);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Create items\n this.options.speed.forEach((speed) => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { buttons } = this.elements.settings;\n const visible = !is.empty(buttons) && Object.values(buttons).some(button => !button.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Focus the first menu item in a given (or visible) menu\n focusFirstMenuItem(pane, focusVisible = false) {\n if (this.elements.settings.popup.hidden) {\n return;\n }\n\n let target = pane;\n\n if (!is.element(target)) {\n target = Object.values(this.elements.settings.panels).find(p => !p.hidden);\n }\n\n const firstItem = target.querySelector('[role^=\"menuitem\"]');\n\n setFocus.call(this, firstItem, focusVisible);\n },\n\n // Show/hide menu\n toggleMenu(input) {\n const { popup } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(popup) || !is.element(button)) {\n return;\n }\n\n // True toggle by default\n const { hidden } = popup;\n let show = hidden;\n\n if (is.boolean(input)) {\n show = input;\n }\n else if (is.keyboardEvent(input) && input.key === 'Escape') {\n show = false;\n }\n else if (is.event(input)) {\n // If Plyr is in a shadowDOM, the event target is set to the component, instead of the\n // Element in the shadowDOM. The path, if available, is complete.\n const target = is.function(input.composedPath) ? input.composedPath()[0] : input.target;\n const isMenuItem = popup.contains(target);\n\n // If the click was inside the menu or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && input.target !== button && show)) {\n return;\n }\n }\n\n // Set button attributes\n button.setAttribute('aria-expanded', show);\n\n // Show the actual popup\n toggleHidden(popup, !show);\n\n // Add class hook\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n // Focus the first item if key interaction\n if (show && is.keyboardEvent(input)) {\n controls.focusFirstMenuItem.call(this, null, true);\n }\n else if (!show && !hidden) {\n // If closing, re-focus the button\n setFocus.call(this, button, is.keyboardEvent(input));\n }\n },\n\n // Get the natural size of a menu panel\n getMenuSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Show a panel in the menu\n showMenuPanel(type = '', focusVisible = false) {\n const target = this.elements.container.querySelector(`#plyr-settings-${this.id}-${type}`);\n\n // Nothing to show, bail\n if (!is.element(target)) {\n return;\n }\n\n // Hide all other panels\n const container = target.parentNode;\n const current = Array.from(container.children).find(node => !node.hidden);\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getMenuSize.call(this, target);\n\n // Restore auto height/width\n const restore = (event) => {\n // We're only bothered about height and width on the container\n if (event.target !== container || !['width', 'height'].includes(event.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n // Only listen once\n off.call(this, container, transitionEndEvent, restore);\n };\n\n // Listen for the transition finishing and restore auto height/width\n on.call(this, container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n\n // Set attributes on target\n toggleHidden(target, false);\n\n // Focus the first item\n controls.focusFirstMenuItem.call(this, target, focusVisible);\n },\n\n // Set the download URL\n setDownloadUrl() {\n const button = this.elements.buttons.download;\n\n // Bail if no button\n if (!is.element(button)) {\n return;\n }\n\n // Set attribute\n button.setAttribute('href', this.download);\n },\n\n // Build the default HTML\n create(data) {\n const {\n bindMenuItemShortcuts,\n createButton,\n createProgress,\n createRange,\n createTime,\n setQualityMenu,\n setSpeedMenu,\n showMenuPanel,\n } = controls;\n this.elements.controls = null;\n\n // Larger overlaid play button\n if (is.array(this.config.controls) && this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(createButton.call(this, 'play-large'));\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n this.elements.controls = container;\n\n // Default item attributes\n const defaultAttributes = { class: 'plyr__controls__item' };\n\n // Loop through controls in order\n dedupe(is.array(this.config.controls) ? this.config.controls : []).forEach((control) => {\n // Restart button\n if (control === 'restart') {\n container.appendChild(createButton.call(this, 'restart', defaultAttributes));\n }\n\n // Rewind button\n if (control === 'rewind') {\n container.appendChild(createButton.call(this, 'rewind', defaultAttributes));\n }\n\n // Play/Pause button\n if (control === 'play') {\n container.appendChild(createButton.call(this, 'play', defaultAttributes));\n }\n\n // Fast forward button\n if (control === 'fast-forward') {\n container.appendChild(createButton.call(this, 'fast-forward', defaultAttributes));\n }\n\n // Progress\n if (control === 'progress') {\n const progressContainer = createElement('div', {\n class: `${defaultAttributes.class} plyr__progress__container`,\n });\n\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n progress.appendChild(\n createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n }),\n );\n\n // Buffer progress\n progress.appendChild(createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n progressContainer.appendChild(this.elements.progress);\n container.appendChild(progressContainer);\n }\n\n // Media current time display\n if (control === 'current-time') {\n container.appendChild(createTime.call(this, 'currentTime', defaultAttributes));\n }\n\n // Media duration display\n if (control === 'duration') {\n container.appendChild(createTime.call(this, 'duration', defaultAttributes));\n }\n\n // Volume controls\n if (control === 'mute' || control === 'volume') {\n let { volume } = this.elements;\n\n // Create the volume container if needed\n if (!is.element(volume) || !container.contains(volume)) {\n volume = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__volume`.trim(),\n }),\n );\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle mute button\n if (control === 'mute') {\n volume.appendChild(createButton.call(this, 'mute'));\n }\n\n // Volume range control\n // Ignored on iOS as it's handled globally\n // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html\n if (control === 'volume' && !browser.isIos && !browser.isIPadOS) {\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n volume.appendChild(\n createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n ),\n );\n }\n }\n\n // Toggle captions button\n if (control === 'captions') {\n container.appendChild(createButton.call(this, 'captions', defaultAttributes));\n }\n\n // Settings button / menu\n if (control === 'settings' && !is.empty(this.config.settings)) {\n const wrapper = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__menu`.trim(),\n hidden: '',\n }),\n );\n\n wrapper.appendChild(\n createButton.call(this, 'settings', {\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const popup = createElement('div', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n });\n\n // Create the menu\n const menu = createElement('div', {\n role: 'menu',\n });\n\n home.appendChild(menu);\n inner.appendChild(home);\n this.elements.settings.panels.home = home;\n\n // Build the menu items\n this.config.settings.forEach((type) => {\n // TODO: bundle this with the createMenuItem helper and bindings\n const menuItem = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n 'type': 'button',\n 'class': `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n 'role': 'menuitem',\n 'aria-haspopup': true,\n 'hidden': '',\n }),\n );\n\n // Bind menu shortcuts for keyboard users\n bindMenuItemShortcuts.call(this, menuItem, type);\n\n // Show menu on click\n on.call(this, menuItem, 'click', () => {\n showMenuPanel.call(this, type, false);\n });\n\n const flex = createElement('span', null, i18n.get(type, this.config));\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n flex.appendChild(value);\n menuItem.appendChild(flex);\n menu.appendChild(menuItem);\n\n // Build the panes\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n });\n\n // Back button\n const backButton = createElement('button', {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n });\n\n // Visible label\n backButton.appendChild(\n createElement(\n 'span',\n {\n 'aria-hidden': true,\n },\n i18n.get(type, this.config),\n ),\n );\n\n // Screen reader label\n backButton.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.hidden,\n },\n i18n.get('menuBack', this.config),\n ),\n );\n\n // Go back via keyboard\n on.call(\n this,\n pane,\n 'keydown',\n (event) => {\n if (event.key !== 'ArrowLeft') return;\n\n // Prevent seek\n event.preventDefault();\n event.stopPropagation();\n\n // Show the respective menu\n showMenuPanel.call(this, 'home', true);\n },\n false,\n );\n\n // Go back via button click\n on.call(this, backButton, 'click', () => {\n showMenuPanel.call(this, 'home', false);\n });\n\n // Add to pane\n pane.appendChild(backButton);\n\n // Menu\n pane.appendChild(\n createElement('div', {\n role: 'menu',\n }),\n );\n\n inner.appendChild(pane);\n\n this.elements.settings.buttons[type] = menuItem;\n this.elements.settings.panels[type] = pane;\n });\n\n popup.appendChild(inner);\n wrapper.appendChild(popup);\n container.appendChild(wrapper);\n\n this.elements.settings.popup = popup;\n this.elements.settings.menu = wrapper;\n }\n\n // Picture in picture button\n if (control === 'pip' && support.pip) {\n container.appendChild(createButton.call(this, 'pip', defaultAttributes));\n }\n\n // Airplay button\n if (control === 'airplay' && support.airplay) {\n container.appendChild(createButton.call(this, 'airplay', defaultAttributes));\n }\n\n // Download button\n if (control === 'download') {\n const attributes = extend({}, defaultAttributes, {\n element: 'a',\n href: this.download,\n target: '_blank',\n });\n\n // Set download attribute for HTML5 only\n if (this.isHTML5) {\n attributes.download = '';\n }\n\n const { download } = this.config.urls;\n\n if (!is.url(download) && this.isEmbed) {\n extend(attributes, {\n icon: `logo-${this.provider}`,\n label: this.provider,\n });\n }\n\n container.appendChild(createButton.call(this, 'download', attributes));\n }\n\n // Toggle fullscreen button\n if (control === 'fullscreen') {\n container.appendChild(createButton.call(this, 'fullscreen', defaultAttributes));\n }\n });\n\n // Set available quality levels\n if (this.isHTML5) {\n setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n // If function, run it and use output\n if (is.function(this.config.controls)) {\n this.config.controls = this.config.controls.call(this, props);\n }\n\n // Convert falsy controls to empty array (primarily for empty strings)\n if (!this.config.controls) {\n this.config.controls = [];\n }\n\n if (is.element(this.config.controls) || is.string(this.config.controls)) {\n // HTMLElement or Non-empty string passed as the option\n container = this.config.controls;\n }\n else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = (input) => {\n let result = input;\n\n Object.entries(props).forEach(([key, value]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML (needs to be before captions, hence \"afterbegin\")\n const insertMethod = is.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML';\n target[insertMethod]('afterbegin', container);\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Add pressed property to buttons\n if (!is.empty(this.elements.buttons)) {\n const addProperty = (button) => {\n const className = this.config.classNames.controlPressed;\n button.setAttribute('aria-pressed', 'false');\n\n Object.defineProperty(button, 'pressed', {\n configurable: true,\n enumerable: true,\n get() {\n return hasClass(button, className);\n },\n set(pressed = false) {\n toggleClass(button, className, pressed);\n button.setAttribute('aria-pressed', pressed ? 'true' : 'false');\n },\n });\n };\n\n // Toggle classname when pressed property is set\n Object.values(this.elements.buttons)\n .filter(Boolean)\n .forEach((button) => {\n if (is.array(button) || is.nodeList(button)) {\n Array.from(button).filter(Boolean).forEach(addProperty);\n }\n else {\n addProperty(button);\n }\n });\n }\n\n // Edge sometimes doesn't finish the paint so force a repaint\n if (browser.isEdge) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const { classNames, selectors } = this.config;\n const selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`;\n const labels = getElements.call(this, selector);\n\n Array.from(labels).forEach((label) => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n });\n }\n },\n\n // Set media metadata\n setMediaMetadata() {\n try {\n if ('mediaSession' in navigator) {\n navigator.mediaSession.metadata = new window.MediaMetadata({\n title: this.config.mediaMetadata.title,\n artist: this.config.mediaMetadata.artist,\n album: this.config.mediaMetadata.album,\n artwork: this.config.mediaMetadata.artwork,\n });\n }\n }\n catch {\n // Do nothing\n }\n },\n\n // Add markers\n setMarkers() {\n if (!this.duration || this.elements.markers) return;\n\n // Get valid points\n const points = this.config.markers?.points?.filter(({ time }) => time > 0 && time < this.duration);\n if (!points?.length) return;\n\n const containerFragment = document.createDocumentFragment();\n const pointsFragment = document.createDocumentFragment();\n let tipElement = null;\n const tipVisible = `${this.config.classNames.tooltip}--visible`;\n const toggleTip = show => toggleClass(tipElement, tipVisible, show);\n\n // Inject markers to progress container\n points.forEach((point) => {\n const markerElement = createElement(\n 'span',\n {\n class: this.config.classNames.marker,\n },\n '',\n );\n\n const left = `${(point.time / this.duration) * 100}%`;\n\n if (tipElement) {\n // Show on hover\n markerElement.addEventListener('mouseenter', () => {\n if (point.label) return;\n tipElement.style.left = left;\n tipElement.innerHTML = point.label;\n toggleTip(true);\n });\n\n // Hide on leave\n markerElement.addEventListener('mouseleave', () => {\n toggleTip(false);\n });\n }\n\n markerElement.addEventListener('click', () => {\n this.currentTime = point.time;\n });\n\n markerElement.style.left = left;\n pointsFragment.appendChild(markerElement);\n });\n\n containerFragment.appendChild(pointsFragment);\n\n // Inject a tooltip if needed\n if (!this.config.tooltips.seek) {\n tipElement = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '',\n );\n\n containerFragment.appendChild(tipElement);\n }\n\n this.elements.markers = {\n points: pointsFragment,\n tip: tipElement,\n };\n\n this.elements.progress.appendChild(containerFragment);\n },\n};\n\nexport default controls;\n","// ==========================================================================\n// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {string} input - the URL to be parsed\n * @param {boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n }\n catch {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n const params = new URLSearchParams();\n\n if (is.object(input)) {\n Object.entries(input).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport support from './support';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n insertAfter,\n removeElement,\n toggleClass,\n} from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (\n is.array(this.config.controls)\n && this.config.controls.includes('settings')\n && this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n this.elements.captions.setAttribute('dir', 'auto');\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach((track) => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (\n url !== null\n && url.hostname !== window.location.href.hostname\n && ['http:', 'https:'].includes(url.protocol)\n ) {\n fetch(src, 'blob')\n .then((blob) => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Get and set initial data\n // The \"preferred\" options are not realized unless / until the wanted language has a match\n // * languages: Array of user's browser languages.\n // * language: The language preferred by user settings or config\n // * active: The state preferred by user settings or config\n // * toggled: The real captions state\n\n const browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en'];\n const languages = dedupe(browserLanguages.map(language => language.split('-')[0]));\n let language = (this.storage.get('language') || this.captions.language || this.config.captions.language || 'auto').toLowerCase();\n\n // Use first browser language when language is 'auto'\n if (language === 'auto') {\n [language] = languages;\n }\n\n let active = this.storage.get('captions') || this.captions.active;\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n Object.assign(this.captions, {\n toggled: false,\n active,\n language,\n languages,\n });\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n // Update available language options in settings based on tracks\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { active, language, meta, currentTrackNode } = this.captions;\n const languageExists = Boolean(tracks.find(track => track.language === language));\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks\n .filter(track => !meta.get(track))\n .forEach((track) => {\n this.debug.log('Track added', track);\n\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n // Note: mode='hidden' forces a track to download. To ensure every track\n // isn't downloaded at once, only 'showing' tracks should be reassigned\n\n if (track.mode === 'showing') {\n track.mode = 'hidden';\n }\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n // Update language first time it matches, or if the previous matching track was removed\n if ((languageExists && this.language !== language) || !tracks.includes(currentTrackNode)) {\n captions.setLanguage.call(this, language);\n captions.toggle.call(this, active && languageExists);\n }\n\n // Enable or disable captions based on track length\n if (this.elements) {\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n }\n\n // Update available languages in list\n if (\n is.array(this.config.controls)\n && this.config.controls.includes('settings')\n && this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n // Toggle captions display\n // Used internally for the toggleCaptions method, with the passive option forced to false\n toggle(input, passive = true) {\n // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n const { toggled } = this.captions; // Current state\n const activeClass = this.config.classNames.captions.active;\n // Get the next state\n // If the method is called without parameter, toggle based on current value\n const active = is.nullOrUndefined(input) ? !toggled : input;\n\n // Update state and trigger event\n if (active !== toggled) {\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.active = active;\n this.storage.set({ captions: active });\n }\n\n // Force language if the call isn't passive and there is no matching language to toggle to\n if (!this.language && active && !passive) {\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true);\n\n // Override user preferences to avoid switching languages if a matching track is added\n this.captions.language = track.language;\n\n // Set caption, but don't store in localStorage as user preference\n captions.set.call(this, tracks.indexOf(track));\n return;\n }\n\n // Toggle button if it's enabled\n if (this.elements.buttons.captions) {\n this.elements.buttons.captions.pressed = active;\n }\n\n // Add class hook\n toggleClass(this.elements.container, activeClass, active);\n\n this.captions.toggled = active;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // Trigger event (not used internally)\n triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n }\n\n // Wait for the call stack to clear before setting mode='hidden'\n // on the active track - forcing the browser to download it\n setTimeout(() => {\n if (active && this.captions.toggled) {\n this.captions.currentTrackNode.mode = 'hidden';\n }\n });\n },\n\n // Set captions by track index\n // Used internally for the currentTrack setter with the passive option forced to false\n set(index, passive = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n captions.toggle.call(this, false, passive);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = tracks[index];\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.language = language;\n this.storage.set({ language });\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n // Show captions\n captions.toggle.call(this, true, passive);\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n },\n\n // Set captions by language\n // Used internally for the language setter with the passive option forced to false\n setLanguage(input, passive = true) {\n if (!is.string(input)) {\n this.debug.warn('Invalid language argument', input);\n return;\n }\n // Normalize\n const language = input.toLowerCase();\n this.captions.language = language;\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [language]);\n captions.set.call(this, tracks.indexOf(track), passive);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks\n .filter(track => !this.isHTML5 || update || this.captions.meta.has(track))\n .filter(track => ['captions', 'subtitles'].includes(track.kind));\n },\n\n // Match tracks based on languages and get the first\n findTrack(languages, force = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n let track;\n\n languages.every((language) => {\n track = sorted.find(t => t.language === language);\n return !track; // Break iteration if there is a match\n });\n\n // If no match is found but is required, get first\n return track || (force ? sorted[0] : undefined);\n },\n\n // Get the current track\n getCurrentTrack() {\n return captions.getTracks.call(this)[this.currentTrack];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.toggled) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Allow inline playback on iOS\n playsinline: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Force an aspect ratio\n // The format must be `'w:h'` (e.g. `'16:9'`)\n ratio: null,\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.8.3/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n // The options to display in the UI, if available for the source media\n options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240],\n forced: false,\n onChange: null,\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x)\n options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback using full viewport/window\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n // Selector for the fullscreen container so contextual / non-player content can remain visible in fullscreen mode\n // Non-ancestors of the player element will be ignored\n // container: null, // defaults to the player element\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n // 'duration',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n // 'download',\n 'fullscreen',\n ],\n settings: ['captions', 'quality', 'speed'],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n seekLabel: '{currentTime} of {duration}',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n download: 'Download',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n pip: 'PIP',\n menuBack: 'Go back to previous menu',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n download: null,\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/oembed.json?url={0}',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n download: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'download',\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n\n // Quality\n 'qualitychange',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n download: '[data-plyr=\"download\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n controlPressed: 'plyr__control--pressed',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n marker: 'plyr__progress__marker',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n display: {\n time: 'plyr__time',\n },\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n previewThumbnails: {\n // Tooltip thumbs\n thumbContainer: 'plyr__preview-thumb',\n thumbContainerShown: 'plyr__preview-thumb--is-shown',\n imageContainer: 'plyr__preview-thumb__image-container',\n timeContainer: 'plyr__preview-thumb__time-container',\n // Scrubbing\n scrubbingContainer: 'plyr__preview-scrubbing',\n scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown',\n },\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n hash: 'data-plyr-embed-hash',\n },\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n tagUrl: '',\n },\n\n // Preview Thumbnails plugin\n previewThumbnails: {\n enabled: false,\n src: '',\n withCredentials: false,\n },\n\n // Vimeo plugin\n vimeo: {\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: false,\n // Custom settings from Plyr\n customControls: true,\n referrerPolicy: null, // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n // Whether the owner of the video has a Pro or Business account\n // (which allows us to properly hide controls without CSS hacks, etc)\n premium: false,\n },\n\n // YouTube plugin\n youtube: {\n rel: 0, // No related vids\n showinfo: 0, // Hide info\n iv_load_policy: 3, // Hide annotations\n modestbranding: 1, // Hide logos as much as possible (they still show one in the corner when paused)\n // Custom settings from Plyr\n customControls: true,\n noCookie: false, // Whether to use an alternative version of YouTube without cookies\n },\n\n // Media Metadata\n mediaMetadata: {\n title: '',\n artist: '',\n album: '',\n artwork: [],\n },\n\n // Markers\n markers: {\n enabled: false,\n points: [],\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr states\n// ==========================================================================\n\nexport const pip = {\n active: 'picture-in-picture',\n inactive: 'inline',\n};\n\nexport default { pip };\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {string} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(?:https?:\\/\\/)?(?:www\\.)?(?:youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nfunction noop() {}\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n\n get warn() {\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n\n get error() {\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// https://webkit.org/blog/7929/designing-websites-for-iphone-x/\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { closest, getElements, hasClass, toggleClass } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Force the use of 'full window/browser' rather than fullscreen\n this.forceFallback = player.config.fullscreen.fallback === 'force';\n\n // Get the fullscreen element\n // Checks container is an ancestor, defaults to null\n this.player.elements.fullscreen\n = player.config.fullscreen.container && closest(this.player.elements.container, player.config.fullscreen.container);\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(\n this.player,\n document,\n this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`,\n () => {\n // TODO: Filter for target??\n this.onChange();\n },\n );\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', (event) => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.player.listeners.proxy(event, this.toggle, 'fullscreen');\n });\n\n // Tap focus when in fullscreen\n on.call(this, this.player.elements.container, 'keydown', event => this.trapFocus(event));\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get nativeSupported() {\n return !!(\n document.fullscreenEnabled\n || document.webkitFullscreenEnabled\n || document.mozFullScreenEnabled\n || document.msFullscreenEnabled\n );\n }\n\n // If we're actually using native\n get useNative() {\n return Fullscreen.nativeSupported && !this.forceFallback;\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) return '';\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = ['webkit', 'moz', 'ms'];\n\n prefixes.some((pre) => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is supported\n get supported() {\n return [\n // Fullscreen is enabled in config\n this.player.config.fullscreen.enabled,\n // Must be a video\n this.player.isVideo,\n // Either native is supported or fallback enabled\n Fullscreen.nativeSupported || this.player.config.fullscreen.fallback,\n // YouTube has no way to trigger fullscreen, so on devices with no native support, playsinline\n // must be enabled and iosNative fullscreen must be disabled to offer the fullscreen fallback\n !this.player.isYouTube\n || Fullscreen.nativeSupported\n || !browser.isIos\n || (this.player.config.playsinline && !this.player.config.fullscreen.iosNative),\n ].every(Boolean);\n }\n\n // Get active state\n get active() {\n if (!this.supported) return false;\n\n // Fallback using classname\n if (!Fullscreen.nativeSupported || this.forceFallback) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix\n ? this.target.getRootNode().fullscreenElement\n : this.target.getRootNode()[`${this.prefix}${this.property}Element`];\n\n return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative\n ? this.player.media\n : this.player.elements.fullscreen ?? this.player.elements.container;\n }\n\n onChange = () => {\n if (!this.supported) return;\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n button.pressed = this.active;\n }\n\n // Always trigger events on the plyr / media element (not a fullscreen container) and let them bubble up\n const target = this.target === this.player.media ? this.target : this.player.elements.container;\n // Trigger an event\n triggerEvent.call(this.player, target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n };\n\n toggleFallback = (toggle = false) => {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX ?? 0,\n y: window.scrollY ?? 0,\n };\n }\n else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Force full viewport on iPhone X+\n if (browser.isIos) {\n let viewport = document.head.querySelector('meta[name=\"viewport\"]');\n const property = 'viewport-fit=cover';\n\n // Inject the viewport meta if required\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n }\n\n // Check if the property already exists\n const hasProperty = is.string(viewport.content) && viewport.content.includes(property);\n\n if (toggle) {\n this.cleanupViewport = !hasProperty;\n if (!hasProperty) viewport.content += `,${property}`;\n }\n else if (this.cleanupViewport) {\n viewport.content = viewport.content\n .split(',')\n .filter(part => part.trim() !== property)\n .join(',');\n }\n }\n\n // Toggle button and fire events\n this.onChange();\n };\n\n // Trap focus inside container\n trapFocus = (event) => {\n // Bail if iOS/iPadOS, not active, not the tab key\n if (browser.isIos || browser.isIPadOS || !this.active || event.key !== 'Tab') return;\n\n // Get the current focused element\n const focused = document.activeElement;\n const focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]');\n const [first] = focusable;\n const last = focusable[focusable.length - 1];\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n }\n else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n // Update UI\n update = () => {\n if (this.supported) {\n let mode;\n\n if (this.forceFallback) mode = 'Fallback (forced)';\n else if (Fullscreen.nativeSupported) mode = 'Native';\n else mode = 'Fallback';\n\n this.player.debug.log(`${mode} fullscreen enabled`);\n }\n else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.supported);\n };\n\n // Make an element fullscreen\n enter = () => {\n if (!this.supported) return;\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.isVimeo) {\n this.player.embed.requestFullscreen();\n }\n else {\n this.target.webkitEnterFullscreen();\n }\n }\n else if (!Fullscreen.nativeSupported || this.forceFallback) {\n this.toggleFallback(true);\n }\n else if (!this.prefix) {\n this.target.requestFullscreen({ navigationUI: 'hide' });\n }\n else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n };\n\n // Bail from fullscreen\n exit = () => {\n if (!this.supported) return;\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.isVimeo) {\n this.player.embed.exitFullscreen();\n }\n else {\n this.target.webkitEnterFullscreen();\n }\n silencePromise(this.player.play());\n }\n else if (!Fullscreen.nativeSupported || this.forceFallback) {\n this.toggleFallback(false);\n }\n else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n }\n else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n };\n\n // Toggle state\n toggle = () => {\n if (!this.active) this.enter();\n else this.exit();\n };\n}\n\nexport default Fullscreen;\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport support from './support';\nimport { getElement, toggleClass } from './utils/elements';\nimport { ready, triggerEvent } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadImage from './utils/load-image';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n }\n else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Reset duration display\n controls.durationUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(\n this.elements.container,\n this.config.classNames.pip.supported,\n support.pip && this.isHTML5 && this.isVideo,\n );\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster) {\n ui.setPoster.call(this, this.poster, false).catch(() => {});\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n\n // Media metadata\n if (this.config.mediaMetadata) {\n controls.setMediaMetadata.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n }\n\n // If there's a play button, set label\n Array.from(this.elements.buttons.play || []).forEach((button) => {\n button.setAttribute('aria-label', label);\n });\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n // Used internally for the poster setter, with the passive option forced to false\n setPoster(poster, passive = true) {\n // Don't override if call is passive\n if (passive && this.poster) {\n return Promise.reject(new Error('Poster already set'));\n }\n\n // Set property synchronously to respect the call order\n this.media.setAttribute('data-poster', poster);\n\n // Show the poster\n this.elements.poster.removeAttribute('hidden');\n\n // Wait until ui is ready\n return (\n ready\n .call(this)\n // Load image\n .then(() => loadImage(poster))\n .catch((error) => {\n // Hide poster on error unless it's been set by another call\n if (poster === this.poster) {\n ui.togglePoster.call(this, false);\n }\n // Rethrow\n throw error;\n })\n .then(() => {\n // Prevent race conditions\n if (poster !== this.poster) {\n throw new Error('setPoster cancelled by later call to setPoster');\n }\n })\n .then(() => {\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n\n ui.togglePoster.call(this, true);\n\n return poster;\n })\n );\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set state\n Array.from(this.elements.buttons.play || []).forEach((target) => {\n Object.assign(target, { pressed: this.playing });\n target.setAttribute('aria-label', i18n.get(this.playing ? 'pause' : 'play', this.config));\n });\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = ['stalled', 'waiting'].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(\n () => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n },\n this.loading ? 250 : 0,\n );\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls: controlsElement } = this.elements;\n\n if (controlsElement && this.config.hideControls) {\n // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)\n const recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now();\n\n // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide\n this.toggleControls(\n Boolean(\n force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek,\n ),\n );\n }\n },\n\n // Migrate any custom properties from the media to the parent\n migrateStyles() {\n // Loop through values (as they are the keys when the object is spread 🤔)\n Object.values({ ...this.media.style })\n // We're only fussed about Plyr specific properties\n .filter(key => !is.empty(key) && is.string(key) && key.startsWith('--plyr'))\n .forEach((key) => {\n // Set on the container\n this.elements.container.style.setProperty(key, this.media.style.getPropertyValue(key));\n\n // Clean up from media element\n this.media.style.removeProperty(key);\n });\n\n // Remove attribute if empty\n if (is.empty(this.media.style)) {\n this.media.removeAttribute('style');\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport { repaint } from './utils/animation';\nimport browser from './utils/browser';\nimport { getElement, getElements, matches, toggleClass } from './utils/elements';\nimport { off, on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { getAspectRatio, getViewportSize, supportsCSS } from './utils/style';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n this.focusTimer = null;\n this.lastKeyDown = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const { player } = this;\n const { elements } = player;\n const { key, type, altKey, ctrlKey, metaKey, shiftKey } = event;\n const pressed = type === 'keydown';\n const repeat = pressed && key === this.lastKey;\n\n // Bail if a modifier key is set\n if (altKey || ctrlKey || metaKey || shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the key for whatever reason\n if (!key) {\n return;\n }\n\n // Seek by increment\n const seekByIncrement = (increment) => {\n // Divide the max duration into 10th's and times by the number value\n player.currentTime = (player.duration / 10) * increment;\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = document.activeElement;\n if (is.element(focused)) {\n const { editable } = player.config.selectors;\n const { seek } = elements.inputs;\n\n if (focused !== seek && matches(focused, editable)) {\n return;\n }\n\n if (event.key === ' ' && matches(focused, 'button, [role^=\"menuitem\"]')) {\n return;\n }\n }\n\n // Which keys should we prevent default\n const preventDefault = [\n ' ',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n\n 'c',\n 'f',\n 'k',\n 'l',\n 'm',\n ];\n\n // If the key is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(key)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (key) {\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n if (!repeat) {\n seekByIncrement(Number.parseInt(key, 10));\n }\n break;\n\n case ' ':\n case 'k':\n if (!repeat) {\n silencePromise(player.togglePlay());\n }\n break;\n\n case 'ArrowUp':\n player.increaseVolume(0.1);\n break;\n\n case 'ArrowDown':\n player.decreaseVolume(0.1);\n break;\n\n case 'm':\n if (!repeat) {\n player.muted = !player.muted;\n }\n break;\n\n case 'ArrowRight':\n player.forward();\n break;\n\n case 'ArrowLeft':\n player.rewind();\n break;\n\n case 'f':\n player.fullscreen.toggle();\n break;\n\n case 'c':\n if (!repeat) {\n player.toggleCaptions();\n }\n break;\n\n case 'l':\n player.loop = !player.loop;\n break;\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (key === 'Escape' && !player.fullscreen.usingNative && player.fullscreen.active) {\n player.fullscreen.toggle();\n }\n\n // Store last key for next cycle\n this.lastKey = key;\n }\n else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch = () => {\n const { player } = this;\n const { elements } = player;\n\n player.touch = true;\n\n // Add touch class\n toggleClass(elements.container, player.config.classNames.isTouch, true);\n };\n\n // Global window & document listeners\n global = (toggle = true) => {\n const { player } = this;\n\n // Keyboard shortcuts\n if (player.config.keyboard.global) {\n toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(player, document.body, 'touchstart', this.firstTouch);\n };\n\n // Container listeners\n container = () => {\n const { player } = this;\n const { config, elements, timers } = player;\n\n // Keyboard shortcuts\n if (!config.keyboard.global && config.keyboard.focused) {\n on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n player,\n elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n (event) => {\n const { controls: controlsElement } = elements;\n\n // Remove button states for fullscreen\n if (controlsElement && event.type === 'enterfullscreen') {\n controlsElement.pressed = false;\n controlsElement.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(player, true);\n // Use longer timeout for touch devices\n delay = player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Set new timer to prevent flicker when seeking\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n },\n );\n\n // Set a gutter for Vimeo\n const setGutter = () => {\n if (!player.isVimeo || player.config.vimeo.premium) {\n return;\n }\n\n const target = elements.wrapper;\n const { active } = player.fullscreen;\n const [videoWidth, videoHeight] = getAspectRatio.call(player);\n const useNativeAspectRatio = supportsCSS(`aspect-ratio: ${videoWidth} / ${videoHeight}`);\n\n // If not active, remove styles\n if (!active) {\n if (useNativeAspectRatio) {\n target.style.width = null;\n target.style.height = null;\n }\n else {\n target.style.maxWidth = null;\n target.style.margin = null;\n }\n return;\n }\n\n // Determine which dimension will overflow and constrain view\n const [viewportWidth, viewportHeight] = getViewportSize();\n const overflow = viewportWidth / viewportHeight > videoWidth / videoHeight;\n\n if (useNativeAspectRatio) {\n target.style.width = overflow ? 'auto' : '100%';\n target.style.height = overflow ? '100%' : 'auto';\n }\n else {\n target.style.maxWidth = overflow ? `${(viewportHeight / videoHeight) * videoWidth}px` : null;\n target.style.margin = overflow ? '0 auto' : null;\n }\n };\n\n // Handle resizing\n const resized = () => {\n clearTimeout(timers.resized);\n timers.resized = setTimeout(setGutter, 50);\n };\n\n on.call(player, elements.container, 'enterfullscreen exitfullscreen', (event) => {\n const { target } = player.fullscreen;\n\n // Ignore events not from target\n if (target !== elements.container) {\n return;\n }\n\n // If it's not an embed and no ratio specified\n if (!player.isEmbed && is.empty(player.config.ratio)) {\n return;\n }\n\n // Set Vimeo gutter\n setGutter();\n\n // Watch for resizes\n const method = event.type === 'enterfullscreen' ? on : off;\n method.call(player, window, 'resize', resized);\n });\n };\n\n // Listen for media events\n media = () => {\n const { player } = this;\n const { elements } = player;\n\n // Time change on media\n on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event));\n\n // Display duration\n on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(player, event));\n\n // Handle the media finishing\n on.call(player, player.media, 'ended', () => {\n // Show poster on end\n if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n // Restart\n player.restart();\n\n // Call pause otherwise IE11 will start playing the video again\n player.pause();\n }\n });\n\n // Check for buffer progress\n on.call(player, player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(player, event));\n\n // Handle volume changes\n on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event));\n\n // Handle play/pause\n on.call(player, player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(player, event));\n\n // Loading state\n on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event));\n\n // Click video\n if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause or restart\n on.call(player, elements.container, 'click', (event) => {\n const targets = [elements.container, wrapper];\n\n // Ignore if click if not container or in video wrapper\n if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n return;\n }\n\n // Touch devices will just show controls (if hidden)\n if (player.touch && player.config.hideControls) {\n return;\n }\n\n if (player.ended) {\n this.proxy(event, player.restart, 'restart');\n this.proxy(\n event,\n () => {\n silencePromise(player.play());\n },\n 'play',\n );\n }\n else {\n this.proxy(\n event,\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n }\n });\n }\n\n // Disable right click\n if (player.supported.ui && player.config.disableContextMenu) {\n on.call(\n player,\n elements.wrapper,\n 'contextmenu',\n (event) => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(player, player.media, 'volumechange', () => {\n // Save to storage\n player.storage.set({\n volume: player.volume,\n muted: player.muted,\n });\n });\n\n // Speed change\n on.call(player, player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(player, 'speed');\n\n // Save to storage\n player.storage.set({ speed: player.speed });\n });\n\n // Quality change\n on.call(player, player.media, 'qualitychange', (event) => {\n // Update UI\n controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n });\n\n // Update download link when ready and if quality changes\n on.call(player, player.media, 'ready qualitychange', () => {\n controls.setDownloadUrl.call(player);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\n on.call(player, player.media, proxyEvents, (event) => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = player.media.error;\n }\n\n triggerEvent.call(player, elements.container, event.type, true, detail);\n });\n };\n\n // Run default and custom handlers\n proxy = (event, defaultHandler, customHandlerKey) => {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned !== false && is.function(defaultHandler)) {\n defaultHandler.call(player, event);\n }\n };\n\n // Trigger custom and default handlers\n bind = (element, type, defaultHandler, customHandlerKey, passive = true) => {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n player,\n element,\n type,\n event => this.proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n };\n\n // Listen for control events\n controls = () => {\n const { player } = this;\n const { elements } = player;\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Play/pause toggle\n if (elements.buttons.play) {\n Array.from(elements.buttons.play).forEach((button) => {\n this.bind(\n button,\n 'click',\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n });\n }\n\n // Pause\n this.bind(elements.buttons.restart, 'click', player.restart, 'restart');\n\n // Rewind\n this.bind(\n elements.buttons.rewind,\n 'click',\n () => {\n // Record seek time so we can prevent hiding controls for a few seconds after rewind\n player.lastSeekTime = Date.now();\n player.rewind();\n },\n 'rewind',\n );\n\n // Rewind\n this.bind(\n elements.buttons.fastForward,\n 'click',\n () => {\n // Record seek time so we can prevent hiding controls for a few seconds after fast forward\n player.lastSeekTime = Date.now();\n player.forward();\n },\n 'fastForward',\n );\n\n // Mute toggle\n this.bind(\n elements.buttons.mute,\n 'click',\n () => {\n player.muted = !player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions());\n\n // Download\n this.bind(\n elements.buttons.download,\n 'click',\n () => {\n triggerEvent.call(player, player.media, 'download');\n },\n 'download',\n );\n\n // Fullscreen toggle\n this.bind(\n elements.buttons.fullscreen,\n 'click',\n () => {\n player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n this.bind(\n elements.buttons.pip,\n 'click',\n () => {\n player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay');\n\n // Settings menu - click toggle\n this.bind(\n elements.buttons.settings,\n 'click',\n (event) => {\n // Prevent the document click listener closing the menu\n event.stopPropagation();\n event.preventDefault();\n\n controls.toggleMenu.call(player, event);\n },\n null,\n false,\n ); // Can't be passive as we're preventing default\n\n // Settings menu - keyboard toggle\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n this.bind(\n elements.buttons.settings,\n 'keyup',\n (event) => {\n if (![' ', 'Enter'].includes(event.key)) {\n return;\n }\n\n // Because return triggers a click anyway, all we need to do is set focus\n if (event.key === 'Enter') {\n controls.focusFirstMenuItem.call(player, null, true);\n return;\n }\n\n // Prevent scroll\n event.preventDefault();\n\n // Prevent playing video (Firefox)\n event.stopPropagation();\n\n // Toggle menu\n controls.toggleMenu.call(player, event);\n },\n null,\n false, // Can't be passive as we're preventing default\n );\n\n // Escape closes menu\n this.bind(elements.settings.menu, 'keydown', (event) => {\n if (event.key === 'Escape') {\n controls.toggleMenu.call(player, event);\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n this.bind(elements.inputs.seek, 'mousedown mousemove', (event) => {\n const rect = elements.progress.getBoundingClientRect();\n const scrollLeft = event.pageX - event.clientX;\n const percent = (100 / rect.width) * (event.pageX - rect.left - scrollLeft);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', (event) => {\n const seek = event.currentTarget;\n const attribute = 'play-on-seeked';\n\n if (is.keyboardEvent(event) && !['ArrowLeft', 'ArrowRight'].includes(event.key)) {\n return;\n }\n\n // Record seek time so we can prevent hiding controls for a few seconds after seek\n player.lastSeekTime = Date.now();\n\n // Was playing before?\n const play = seek.hasAttribute(attribute);\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute(attribute);\n silencePromise(player.play());\n }\n else if (!done && player.playing) {\n seek.setAttribute(attribute, '');\n player.pause();\n }\n });\n\n // Fix range inputs on iOS\n // Super weird iOS bug where after you interact with an ,\n // it takes over further interactions on the page. This is a hack\n if (browser.isIos) {\n const inputs = getElements.call(player, 'input[type=\"range\"]');\n Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target)));\n }\n\n // Seek\n this.bind(\n elements.inputs.seek,\n inputEvent,\n (event) => {\n const seek = event.currentTarget;\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n player.currentTime = (seekTo / seek.max) * player.duration;\n },\n 'seek',\n );\n\n // Seek tooltip\n this.bind(elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(player, event));\n\n // Preview thumbnails plugin\n // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n this.bind(elements.progress, 'mousemove touchmove', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startMove(event);\n }\n });\n\n // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n this.bind(elements.progress, 'mouseleave touchend click', () => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endMove(false, true);\n }\n });\n\n // Show scrubbing preview\n this.bind(elements.progress, 'mousedown touchstart', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startScrubbing(event);\n }\n });\n\n this.bind(elements.progress, 'mouseup touchend', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endScrubbing(event);\n }\n });\n\n // Polyfill for lower fill in for webkit\n if (browser.isWebKit) {\n Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach((element) => {\n this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target));\n });\n }\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (player.config.toggleInvert && !is.element(elements.display.duration)) {\n this.bind(elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (player.currentTime === 0) {\n return;\n }\n\n player.config.invertTime = !player.config.invertTime;\n\n controls.timeUpdate.call(player);\n });\n }\n\n // Volume\n this.bind(\n elements.inputs.volume,\n inputEvent,\n (event) => {\n player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mouseenter mouseleave', (event) => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n\n // Also update controls.hover state for any non-player children of fullscreen element (as above)\n if (elements.fullscreen) {\n Array.from(elements.fullscreen.children)\n .filter(c => !c.contains(elements.container))\n .forEach((child) => {\n this.bind(child, 'mouseenter mouseleave', (event) => {\n if (elements.controls) {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n }\n });\n });\n }\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', (event) => {\n elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Show controls when they receive focus (e.g., when using keyboard tab key)\n this.bind(elements.controls, 'focusin', () => {\n const { config, timers } = player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, true);\n\n // Toggle\n ui.toggleControls.call(player, true);\n\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for mouse users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Hide again after delay\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n });\n\n // Mouse wheel for volume\n this.bind(\n elements.inputs.volume,\n 'wheel',\n (event) => {\n // Detect \"natural\" scroll - supported on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n // Get delta from event. Invert if `inverted` is true\n const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value));\n // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\n // Change the volume by 2%\n player.increaseVolume(direction / 50);\n\n // Don't break page scrolling at max and min\n const { volume } = player.media;\n if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n };\n}\n\nexport default Listeners;\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from '../captions';\nimport controls from '../controls';\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadScript from '../utils/load-script';\nimport { format, stripHTML } from '../utils/strings';\nimport { roundAspectRatio, setAspectRatio } from '../utils/style';\nimport { buildUrlParams } from '../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n // eslint-disable-next-line regexp/optimal-quantifier-concatenation\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n const match = url.match(regex);\n return match ? match[2] : url;\n}\n\n// Try to extract a hash for private videos from the URL\nfunction parseHash(url) {\n /* This regex matches a hexadecimal hash if given in any of these forms:\n * - [https://player.]vimeo.com/video/{id}/{hash}[?params]\n * - [https://player.]vimeo.com/video/{id}?h={hash}[¶ms]\n * - [https://player.]vimeo.com/video/{id}?[params]&h={hash}\n * - video/{id}/{hash}\n * If matched, the hash is available in capture group 4\n */\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*h=|\\/)+([\\d,a-f]+)/;\n const found = url.match(regex);\n\n return found && found.length === 5 ? found[4] : null;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n const player = this;\n\n // Add embed class for responsive\n toggleClass(player.elements.wrapper, player.config.classNames.embed, true);\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set initial ratio\n setAspectRatio.call(player);\n\n // Load the SDK if not already\n if (!is.object(window.Vimeo)) {\n loadScript(player.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(player);\n })\n .catch((error) => {\n player.debug.warn('Vimeo SDK (player.js) failed to load', error);\n });\n }\n else {\n vimeo.ready.call(player);\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n const config = player.config.vimeo;\n const { premium, referrerPolicy, ...frameParams } = config;\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n let hash = '';\n // Get from
    if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n // hash can also be set as attribute on the
    \n hash = player.media.getAttribute(player.config.attributes.embed.hash);\n }\n else {\n hash = parseHash(source);\n }\n const hashParam = hash ? { h: hash } : {};\n\n // If the owner has a pro or premium account then we can hide controls etc\n if (premium) {\n Object.assign(frameParams, {\n controls: false,\n sidedock: false,\n });\n }\n\n // Get Vimeo params for the iframe\n const params = buildUrlParams({\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n muted: player.muted,\n gesture: 'media',\n playsinline: player.config.playsinline,\n // hash has to be added to iframe-URL\n ...hashParam,\n ...frameParams,\n });\n\n const id = parseId(source);\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute(\n 'allow',\n ['autoplay', 'fullscreen', 'picture-in-picture', 'encrypted-media', 'accelerometer', 'gyroscope'].join('; '),\n );\n\n // Set the referrer policy if required\n if (!is.empty(referrerPolicy)) {\n iframe.setAttribute('referrerPolicy', referrerPolicy);\n }\n\n // Inject the package\n if (premium || !config.customControls) {\n iframe.setAttribute('data-poster', player.poster);\n player.media = replaceElement(iframe, player.media);\n }\n else {\n const wrapper = createElement('div', {\n 'class': player.config.classNames.embedContainer,\n 'data-poster': player.poster,\n });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n }\n\n // Get poster image\n if (!config.customControls) {\n fetch(format(player.config.urls.vimeo.api, src)).then((response) => {\n if (is.empty(response) || !response.thumbnail_url) {\n return;\n }\n\n // Set and show poster\n ui.setPoster.call(player, response.thumbnail_url).catch(() => {});\n });\n }\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(() => {\n // Cannot set Playback Rate, Video is probably not on Pro account\n player.options.speed = [1];\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setMuted(toggle ? true : player.config.muted).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then((value) => {\n currentSrc = value;\n controls.setDownloadUrl.call(player);\n })\n .catch((error) => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then((dimensions) => {\n const [width, height] = dimensions;\n player.embed.ratio = roundAspectRatio(width, height);\n setAspectRatio.call(this);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then((state) => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then((title) => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then((value) => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then((value) => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then((tracks) => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then((paused) => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('bufferstart', () => {\n triggerEvent.call(player, player.media, 'waiting');\n });\n\n player.embed.on('bufferend', () => {\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', (data) => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', (data) => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (Number.parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then((value) => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', (detail) => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n if (config.customControls) {\n setTimeout(() => ui.build.call(player), 0);\n }\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadImage from '../utils/load-image';\nimport loadScript from '../utils/load-script';\nimport { extend } from '../utils/objects';\nimport { format, generateId } from '../utils/strings';\nimport { roundAspectRatio, setAspectRatio } from '../utils/style';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = url.match(regex);\n return match && match[2] ? match[2] : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nfunction getHost(config) {\n if (config.noCookie) {\n return 'https://www.youtube-nocookie.com';\n }\n\n if (window.location.protocol === 'http:') {\n return 'http://www.youtube.com';\n }\n\n // Use YouTube's default\n return undefined;\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n }\n else {\n // Reference current global callback\n const callback = window.onYouTubeIframeAPIReady;\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n // Call global callback if set\n if (is.function(callback)) {\n callback();\n }\n\n youtube.ready.call(this);\n };\n\n // Load the SDK\n loadScript(this.config.urls.youtube.sdk).catch((error) => {\n this.debug.warn('YouTube API failed to load', error);\n });\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n const url = format(this.config.urls.youtube.api, videoId);\n\n fetch(url)\n .then((data) => {\n if (is.object(data)) {\n const { title, height, width } = data;\n\n // Set title\n this.config.title = title;\n ui.setTitle.call(this);\n\n // Set aspect ratio\n this.embed.ratio = roundAspectRatio(width, height);\n }\n\n setAspectRatio.call(this);\n })\n .catch(() => {\n // Set aspect ratio\n setAspectRatio.call(this);\n });\n },\n\n // API ready\n ready() {\n const player = this;\n const config = player.config.youtube;\n // Ignore already setup (race condition)\n const currentId = player.media && player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
    if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the