From 89cb98233f53f444e1cb5b65fe0985099381e8d2 Mon Sep 17 00:00:00 2001 From: 237899745 <237899745@workyai.cn> Date: Wed, 27 May 2026 21:24:48 +0800 Subject: [PATCH] feat: add admin social login bindings --- admin-frontend/package-lock.json | 20 +- admin-frontend/package.json | 1 + admin-frontend/src/api/admin.js | 25 ++ .../src/pages/AdminSocialBindCallbackPage.vue | 73 ++++ admin-frontend/src/pages/SettingsPage.vue | 325 +++++++++++++++++- admin-frontend/src/router/index.js | 2 + database.py | 8 +- db/admin.py | 101 ++++++ db/migrations.py | 31 ++ db/schema.py | 24 ++ routes/api_auth.py | 3 +- routes/api_social.py | 153 ++++++++- routes/pages.py | 13 +- static/admin/.vite/manifest.json | 154 +++++---- .../AdminSocialBindCallbackPage-BsLZg3f-.js | 1 + .../AdminSocialBindCallbackPage-CXV1zZmY.css | 1 + ...m5PzE.js => AnnouncementsPage-BcIVG51R.js} | 2 +- ...Page-DiZA9Kx_.js => EmailPage-B1uMhyWi.js} | 2 +- ...-DrMVqBKf.js => FeedbacksPage-CG9FZytm.js} | 2 +- ...sPage-Cy6Q0ave.js => LogsPage-Ct-BSxV6.js} | 2 +- ...rid-C3Xjc9mZ.js => MetricGrid-kv-nSROj.js} | 2 +- ...age-BMEJM5Hr.js => ReportPage-2jS10KoG.js} | 2 +- ...e-yzYEGeTN.js => SecurityPage-93lfkhLF.js} | 2 +- static/admin/assets/SettingsPage-BbHyIZsy.js | 1 + static/admin/assets/SettingsPage-CjIQQfeg.css | 1 + static/admin/assets/SettingsPage-D-iYz1zh.css | 1 - static/admin/assets/SettingsPage-DF5fL8gq.js | 1 - ...age-DrM9-RI5.js => SystemPage-D9T-fhw-.js} | 2 +- ...Page-RI5S3snx.js => UsersPage-2-Mno2hz.js} | 2 +- static/admin/assets/admin-VsbfHbbH.js | 1 + .../{email-Mh1SHQbX.js => email-CgUCpCe3.js} | 2 +- .../{index-DOvMEmc8.js => index-6ynv0Z9Y.js} | 4 +- ...{system-CYbWdReq.js => system-CeiBEEoE.js} | 2 +- .../{tasks-B7oNpIBD.js => tasks-C6JkguA6.js} | 2 +- .../{users-DzDcz9C_.js => users-D9XvGIoE.js} | 2 +- ...B5S5pUKo.js => vendor-element-CIudPaVX.js} | 2 +- static/admin/assets/vendor-misc-BeoNyvBp.js | 12 - static/admin/assets/vendor-misc-DszMq72k.js | 12 + static/admin/index.html | 31 +- 39 files changed, 904 insertions(+), 123 deletions(-) create mode 100644 admin-frontend/src/pages/AdminSocialBindCallbackPage.vue create mode 100644 static/admin/assets/AdminSocialBindCallbackPage-BsLZg3f-.js create mode 100644 static/admin/assets/AdminSocialBindCallbackPage-CXV1zZmY.css rename static/admin/assets/{AnnouncementsPage-Dagm5PzE.js => AnnouncementsPage-BcIVG51R.js} (97%) rename static/admin/assets/{EmailPage-DiZA9Kx_.js => EmailPage-B1uMhyWi.js} (98%) rename static/admin/assets/{FeedbacksPage-DrMVqBKf.js => FeedbacksPage-CG9FZytm.js} (95%) rename static/admin/assets/{LogsPage-Cy6Q0ave.js => LogsPage-Ct-BSxV6.js} (96%) rename static/admin/assets/{MetricGrid-C3Xjc9mZ.js => MetricGrid-kv-nSROj.js} (94%) rename static/admin/assets/{ReportPage-BMEJM5Hr.js => ReportPage-2jS10KoG.js} (97%) rename static/admin/assets/{SecurityPage-yzYEGeTN.js => SecurityPage-93lfkhLF.js} (98%) create mode 100644 static/admin/assets/SettingsPage-BbHyIZsy.js create mode 100644 static/admin/assets/SettingsPage-CjIQQfeg.css delete mode 100644 static/admin/assets/SettingsPage-D-iYz1zh.css delete mode 100644 static/admin/assets/SettingsPage-DF5fL8gq.js rename static/admin/assets/{SystemPage-DrM9-RI5.js => SystemPage-D9T-fhw-.js} (98%) rename static/admin/assets/{UsersPage-RI5S3snx.js => UsersPage-2-Mno2hz.js} (96%) create mode 100644 static/admin/assets/admin-VsbfHbbH.js rename static/admin/assets/{email-Mh1SHQbX.js => email-CgUCpCe3.js} (88%) rename static/admin/assets/{index-DOvMEmc8.js => index-6ynv0Z9Y.js} (63%) rename static/admin/assets/{system-CYbWdReq.js => system-CeiBEEoE.js} (88%) rename static/admin/assets/{tasks-B7oNpIBD.js => tasks-C6JkguA6.js} (93%) rename static/admin/assets/{users-DzDcz9C_.js => users-D9XvGIoE.js} (90%) rename static/admin/assets/{vendor-element-B5S5pUKo.js => vendor-element-CIudPaVX.js} (99%) delete mode 100644 static/admin/assets/vendor-misc-BeoNyvBp.js create mode 100644 static/admin/assets/vendor-misc-DszMq72k.js diff --git a/admin-frontend/package-lock.json b/admin-frontend/package-lock.json index 01784f7..ca591c8 100644 --- a/admin-frontend/package-lock.json +++ b/admin-frontend/package-lock.json @@ -11,6 +11,7 @@ "@element-plus/icons-vue": "^2.3.2", "axios": "^1.12.2", "element-plus": "^2.11.3", + "qrcode.vue": "^3.6.0", "vue": "^3.5.24", "vue-router": "^4.6.3" }, @@ -900,7 +901,6 @@ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/lodash": "*" } @@ -1512,15 +1512,13 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash-unified": { "version": "1.0.3", @@ -1614,7 +1612,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -1656,6 +1653,15 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, + "node_modules/qrcode.vue": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.9.1.tgz", + "integrity": "sha512-CpHVRz5iveqwRFh+nzzSYV9hPWU6q+YSOKyq5ZievjQIBv4bIIDzajGgtNz/yYSlczjAkYM3GNAQJHwwCukMEQ==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/rollup": { "version": "4.53.3", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", @@ -1730,7 +1736,6 @@ "integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -1805,7 +1810,6 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.25.tgz", "integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/compiler-sfc": "3.5.25", diff --git a/admin-frontend/package.json b/admin-frontend/package.json index 65a8146..d35ee90 100644 --- a/admin-frontend/package.json +++ b/admin-frontend/package.json @@ -12,6 +12,7 @@ "@element-plus/icons-vue": "^2.3.2", "axios": "^1.12.2", "element-plus": "^2.11.3", + "qrcode.vue": "^3.6.0", "vue": "^3.5.24", "vue-router": "^4.6.3" }, diff --git a/admin-frontend/src/api/admin.js b/admin-frontend/src/api/admin.js index fdb0154..97d7ff7 100644 --- a/admin-frontend/src/api/admin.js +++ b/admin-frontend/src/api/admin.js @@ -44,3 +44,28 @@ export async function reportAdminPasskeyClientError(payload = {}) { const { data } = await api.post('/admin/passkeys/client-error', payload) return data } + +export async function fetchAdminSocialBindings() { + const { data } = await api.get('/admin/social-bindings') + return data +} + +export async function createAdminSocialLoginUrl(payload = {}) { + const { data } = await api.post('/admin/social-login-url', payload) + return data +} + +export async function pollAdminSocialLogin(payload = {}) { + const { data } = await api.post('/admin/social-poll', payload) + return data +} + +export async function bindAdminSocialCallback(provider, payload = {}) { + const { data } = await api.post(`/admin/social-bindings/${encodeURIComponent(provider)}/callback`, payload) + return data +} + +export async function unbindAdminSocial(provider) { + const { data } = await api.delete(`/admin/social-bindings/${encodeURIComponent(provider)}`) + return data +} diff --git a/admin-frontend/src/pages/AdminSocialBindCallbackPage.vue b/admin-frontend/src/pages/AdminSocialBindCallbackPage.vue new file mode 100644 index 0000000..49b32ee --- /dev/null +++ b/admin-frontend/src/pages/AdminSocialBindCallbackPage.vue @@ -0,0 +1,73 @@ + + + + + + + {{ statusText }} + + + + + diff --git a/admin-frontend/src/pages/SettingsPage.vue b/admin-frontend/src/pages/SettingsPage.vue index f6d4791..c2f4cec 100644 --- a/admin-frontend/src/pages/SettingsPage.vue +++ b/admin-frontend/src/pages/SettingsPage.vue @@ -1,14 +1,19 @@ @@ -331,6 +482,66 @@ onMounted(() => { + + + + 快捷登录绑定 + 已启用 + 未启用 + + + + + + + + + + {{ socialProviderIcon(item.provider) }} + + {{ item.provider_label }} + {{ item.nickname || '已绑定' }} + 未绑定 + + + + + 解绑 + + + 绑定 + + + + + + + + + + {{ socialQrPrompt(qrProvider) }} + + + @@ -356,6 +567,18 @@ onMounted(() => { letter-spacing: 0.2px; } +.section-head { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + margin-bottom: 12px; +} + +.section-head .section-title { + margin-bottom: 0; +} + .help { margin-top: 10px; font-size: 12px; @@ -365,4 +588,104 @@ onMounted(() => { .help-alert { margin-bottom: 12px; } + +.social-list { + display: flex; + flex-direction: column; + gap: 10px; +} + +.social-row { + min-height: 58px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 10px 12px; + border: 1px solid var(--app-border); + border-radius: 10px; + background: rgba(248, 250, 252, 0.72); +} + +.social-provider { + display: flex; + align-items: center; + gap: 10px; + min-width: 0; +} + +.social-icon { + width: 30px; + height: 30px; + border-radius: 50%; + display: inline-flex; + align-items: center; + justify-content: center; + flex: 0 0 auto; + color: #fff; + font-size: 13px; + font-weight: 800; +} + +.provider-wx { + background: #16a34a; +} + +.provider-qq { + background: #2563eb; +} + +.provider-alipay { + background: #1677ff; +} + +.social-info { + min-width: 0; + display: flex; + flex-direction: column; + gap: 2px; +} + +.social-info strong { + font-size: 14px; +} + +.social-info span { + max-width: min(52vw, 360px); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 12px; + color: var(--app-muted); +} + +.social-actions { + flex: 0 0 auto; +} + +.social-qr-box { + display: flex; + flex-direction: column; + align-items: center; + gap: 12px; +} + +.social-qr-prompt { + font-size: 13px; + color: #374151; + text-align: center; +} + +@media (max-width: 640px) { + .social-row { + align-items: flex-start; + flex-direction: column; + } + + .social-actions { + width: 100%; + display: flex; + justify-content: flex-end; + } +} diff --git a/admin-frontend/src/router/index.js b/admin-frontend/src/router/index.js index 93f6799..feaf245 100644 --- a/admin-frontend/src/router/index.js +++ b/admin-frontend/src/router/index.js @@ -11,8 +11,10 @@ const EmailPage = () => import('../pages/EmailPage.vue') const SecurityPage = () => import('../pages/SecurityPage.vue') const SystemPage = () => import('../pages/SystemPage.vue') const SettingsPage = () => import('../pages/SettingsPage.vue') +const AdminSocialBindCallbackPage = () => import('../pages/AdminSocialBindCallbackPage.vue') const routes = [ + { path: '/social-bind-callback', name: 'admin_social_bind_callback', component: AdminSocialBindCallbackPage }, { path: '/', component: AdminLayout, diff --git a/database.py b/database.py index 96f5d84..286fb89 100644 --- a/database.py +++ b/database.py @@ -26,15 +26,21 @@ from db.migrations import migrate_database as _migrate_database from db.admin import ( admin_reset_user_password, clean_old_operation_logs, + delete_admin_social_login_binding, + find_admin_social_login_binding, + find_admin_social_login_binding_by_identity, get_admin_by_id, ensure_default_admin, get_admin_by_username, get_hourly_registration_count, get_system_config_raw as _get_system_config_raw, get_system_stats, + list_admin_social_login_bindings, update_admin_password, update_admin_username, update_system_config as _update_system_config, + update_admin_social_login_binding_profile, + upsert_admin_social_login_binding, verify_admin, ) from db.accounts import ( @@ -144,7 +150,7 @@ logger = get_logger(__name__) DB_FILE = config.DB_FILE # 数据库版本 (用于迁移管理) -DB_VERSION = 22 +DB_VERSION = 23 # ==================== 系统配置缓存(P1 / O-03) ==================== diff --git a/db/admin.py b/db/admin.py index a178af0..7ca1e06 100644 --- a/db/admin.py +++ b/db/admin.py @@ -245,6 +245,107 @@ def update_admin_username(old_username: str, new_username: str) -> bool: return False +# ==================== 管理员聚合登录绑定 ==================== + + +def find_admin_social_login_binding_by_identity(provider: str, social_uid: str): + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + "SELECT * FROM admin_social_login_bindings WHERE provider = ? AND social_uid = ?", + (provider, social_uid), + ) + row = cursor.fetchone() + return dict(row) if row else None + + +def find_admin_social_login_binding(admin_id: int, provider: str): + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + "SELECT * FROM admin_social_login_bindings WHERE admin_id = ? AND provider = ?", + (int(admin_id), provider), + ) + row = cursor.fetchone() + return dict(row) if row else None + + +def upsert_admin_social_login_binding(*, admin_id: int, provider: str, social_uid: str, nickname: str = "", avatar_url: str = ""): + with db_pool.get_db() as conn: + cursor = conn.cursor() + now = get_cst_now_str() + try: + cursor.execute( + """ + INSERT INTO admin_social_login_bindings ( + admin_id, provider, social_uid, nickname, avatar_url, created_at, updated_at, last_login_at + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + ON CONFLICT(admin_id, provider) DO UPDATE SET + social_uid = excluded.social_uid, + nickname = excluded.nickname, + avatar_url = excluded.avatar_url, + updated_at = excluded.updated_at, + last_login_at = excluded.last_login_at + """, + ( + int(admin_id), + provider, + social_uid, + str(nickname or "")[:128], + str(avatar_url or "")[:512], + now, + now, + now, + ), + ) + conn.commit() + except sqlite3.IntegrityError: + conn.rollback() + return None + return find_admin_social_login_binding(admin_id, provider) + + +def update_admin_social_login_binding_profile(binding_id: int, *, nickname: str = "", avatar_url: str = "") -> bool: + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + """ + UPDATE admin_social_login_bindings + SET nickname = ?, avatar_url = ?, updated_at = ?, last_login_at = ? + WHERE id = ? + """, + (str(nickname or "")[:128], str(avatar_url or "")[:512], get_cst_now_str(), get_cst_now_str(), int(binding_id)), + ) + conn.commit() + return cursor.rowcount > 0 + + +def list_admin_social_login_bindings(admin_id: int) -> list[dict]: + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + """ + SELECT * FROM admin_social_login_bindings + WHERE admin_id = ? + ORDER BY created_at ASC + """, + (int(admin_id),), + ) + return [dict(row) for row in cursor.fetchall()] + + +def delete_admin_social_login_binding(admin_id: int, provider: str) -> bool: + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + "DELETE FROM admin_social_login_bindings WHERE admin_id = ? AND provider = ?", + (int(admin_id), provider), + ) + conn.commit() + return cursor.rowcount > 0 + + def get_system_stats() -> dict: """获取系统统计信息""" with db_pool.get_db() as conn: diff --git a/db/migrations.py b/db/migrations.py index 052d13a..a140583 100644 --- a/db/migrations.py +++ b/db/migrations.py @@ -77,6 +77,7 @@ def _get_migration_steps(): (20, _migrate_to_v20), (21, _migrate_to_v21), (22, _migrate_to_v22), + (23, _migrate_to_v23), ] @@ -1002,3 +1003,33 @@ def _migrate_to_v22(conn): cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_expires ON social_pending_binds(expires_at)") conn.commit() + + +def _migrate_to_v23(conn): + """迁移到版本23 - 管理员聚合登录绑定。""" + cursor = conn.cursor() + + cursor.execute( + """ + CREATE TABLE IF NOT EXISTS admin_social_login_bindings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + admin_id INTEGER NOT NULL, + provider TEXT NOT NULL, + social_uid TEXT NOT NULL, + nickname TEXT DEFAULT '', + avatar_url TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + last_login_at TIMESTAMP, + UNIQUE (provider, social_uid), + UNIQUE (admin_id, provider), + FOREIGN KEY (admin_id) REFERENCES admins (id) ON DELETE CASCADE + ) + """ + ) + cursor.execute("CREATE INDEX IF NOT EXISTS idx_admin_social_login_bindings_admin ON admin_social_login_bindings(admin_id)") + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_admin_social_login_bindings_provider_uid ON admin_social_login_bindings(provider, social_uid)" + ) + + conn.commit() diff --git a/db/schema.py b/db/schema.py index 5f21b20..d18f1e3 100644 --- a/db/schema.py +++ b/db/schema.py @@ -276,6 +276,26 @@ def ensure_schema(conn) -> None: """ ) + # 管理员聚合登录绑定表 + cursor.execute( + """ + CREATE TABLE IF NOT EXISTS admin_social_login_bindings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + admin_id INTEGER NOT NULL, + provider TEXT NOT NULL, + social_uid TEXT NOT NULL, + nickname TEXT DEFAULT '', + avatar_url TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + last_login_at TIMESTAMP, + UNIQUE (provider, social_uid), + UNIQUE (admin_id, provider), + FOREIGN KEY (admin_id) REFERENCES admins (id) ON DELETE CASCADE + ) + """ + ) + # 聚合登录短期待绑定凭证表 cursor.execute( """ @@ -432,6 +452,10 @@ def ensure_schema(conn) -> None: cursor.execute("CREATE INDEX IF NOT EXISTS idx_passkeys_owner_last_used ON passkeys(owner_type, owner_id, last_used_at)") cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_login_bindings_user ON social_login_bindings(user_id)") cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_login_bindings_provider_uid ON social_login_bindings(provider, social_uid)") + cursor.execute("CREATE INDEX IF NOT EXISTS idx_admin_social_login_bindings_admin ON admin_social_login_bindings(admin_id)") + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_admin_social_login_bindings_provider_uid ON admin_social_login_bindings(provider, social_uid)" + ) cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_token ON social_pending_binds(token)") cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_provider_uid ON social_pending_binds(provider, social_uid)") cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_expires ON social_pending_binds(expires_at)") diff --git a/routes/api_auth.py b/routes/api_auth.py index b852304..981789c 100644 --- a/routes/api_auth.py +++ b/routes/api_auth.py @@ -283,7 +283,8 @@ def register(): social_uid = str(pending.get("social_uid") or "").strip() enabled_providers = parse_providers((database.get_system_config() or {}).get("social_login_providers")) existing_identity = database.find_social_login_binding(provider, social_uid) - if provider in enabled_providers and social_uid and not existing_identity: + existing_admin_identity = database.find_admin_social_login_binding_by_identity(provider, social_uid) + if provider in enabled_providers and social_uid and not existing_identity and not existing_admin_identity: binding = database.upsert_social_login_binding( user_id=user_id, provider=provider, diff --git a/routes/api_social.py b/routes/api_social.py index 08d9d67..c96b688 100644 --- a/routes/api_social.py +++ b/routes/api_social.py @@ -6,7 +6,7 @@ from datetime import timedelta import database from app_logger import get_logger from db.utils import get_cst_now, get_cst_now_str -from flask import Blueprint, jsonify, request +from flask import Blueprint, jsonify, request, session from flask_login import current_user, login_required, login_user from services.accounts_service import load_user_accounts from services.models import User @@ -82,6 +82,18 @@ def _binding_row(provider: str, binding: dict | None) -> dict: } +def _admin_binding_row(provider: str, binding: dict | None) -> dict: + return { + "provider": provider, + "provider_label": provider_label(provider), + "bound": bool(binding), + "nickname": (binding or {}).get("nickname") or "", + "avatar_url": (binding or {}).get("avatar_url") or "", + "last_login_at": (binding or {}).get("last_login_at"), + "created_at": (binding or {}).get("created_at"), + } + + @api_social_bp.route("/api/auth/social/config", methods=["GET"]) def social_public_config(): return jsonify(public_social_config(database.get_system_config())) @@ -135,6 +147,10 @@ def social_callback(): return _social_error(error) binding = database.find_social_login_binding(profile.provider, profile.social_uid) + admin_binding = database.find_admin_social_login_binding_by_identity(profile.provider, profile.social_uid) + if admin_binding: + return jsonify({"error": "该第三方账号已绑定管理员账号"}), 409 + if binding: if mode == "bind": current_id = int(getattr(current_user, "id", 0) or 0) @@ -204,6 +220,9 @@ def bind_social_account(): existing_identity = database.find_social_login_binding(provider, social_uid) if existing_identity and int(existing_identity.get("user_id") or 0) != int(current_user.id): return jsonify({"error": "该第三方账号已绑定其他用户"}), 409 + existing_admin_identity = database.find_admin_social_login_binding_by_identity(provider, social_uid) + if existing_admin_identity: + return jsonify({"error": "该第三方账号已绑定管理员账号"}), 409 existing_provider = database.find_user_social_login_binding(int(current_user.id), provider) if existing_provider and str(existing_provider.get("social_uid") or "") != social_uid: @@ -242,6 +261,138 @@ def admin_social_config(): return protected() +@api_social_bp.route("/yuyx/api/admin/social-bindings", methods=["GET"]) +def list_admin_social_bindings(): + from routes.decorators import admin_required + + @admin_required + def _inner(): + cfg = database.get_system_config() + providers = parse_providers(cfg.get("social_login_providers")) or list(PROVIDER_LABELS.keys()) + admin_id = int(session.get("admin_id") or 0) + existing = { + item["provider"]: item + for item in database.list_admin_social_login_bindings(admin_id) + } + public_cfg = public_social_config(cfg) + return jsonify( + { + "enabled": bool(public_cfg.get("enabled")), + "providers": providers, + "items": [_admin_binding_row(provider, existing.get(provider)) for provider in providers], + } + ) + + return _inner() + + +@api_social_bp.route("/yuyx/api/admin/social-login-url", methods=["POST"]) +def admin_social_login_url(): + from routes.decorators import admin_required + + @admin_required + def _inner(): + data = _get_json_payload() + provider = str(data.get("provider") or "").strip().lower() + redirect_uri = str(data.get("redirect_uri") or "").strip() + try: + result = fetch_social_login_url( + database.get_system_config(), + provider=provider, + mode="bind", + redirect_uri=redirect_uri, + allowed_hosts=_allowed_redirect_hosts(), + ) + except SocialLoginError as error: + logger.warning(f"[admin/social/login-url] provider={provider or '-'} failed: {error.message}") + return _social_error(error) + return jsonify(result) + + return _inner() + + +@api_social_bp.route("/yuyx/api/admin/social-poll", methods=["POST"]) +def admin_social_poll(): + from routes.decorators import admin_required + + @admin_required + def _inner(): + data = _get_json_payload() + provider = str(data.get("provider") or "").strip().lower() + state = str(data.get("state") or "").strip() + try: + result = poll_social_scan(database.get_system_config(), provider=provider, state=state) + except SocialLoginError as error: + logger.warning(f"[admin/social/poll] provider={provider or '-'} failed: {error.message}") + return _social_error(error) + return jsonify(result) + + return _inner() + + +@api_social_bp.route("/yuyx/api/admin/social-bindings//callback", methods=["POST"]) +def bind_admin_social_callback(provider): + from routes.decorators import admin_required + + @admin_required + def _inner(): + data = _get_json_payload() + provider_value = str(data.get("provider") or provider or data.get("type") or "").strip().lower() + code = str(data.get("code") or "").strip() + admin_id = int(session.get("admin_id") or 0) + + try: + profile = fetch_space_profile(database.get_system_config(), provider=provider_value, code=code) + except SocialLoginError as error: + logger.warning(f"[admin/social/callback] provider={provider_value or '-'} failed: {error.message}") + return _social_error(error) + + user_identity = database.find_social_login_binding(profile.provider, profile.social_uid) + if user_identity: + return jsonify({"error": "该第三方账号已绑定普通用户"}), 409 + + existing_identity = database.find_admin_social_login_binding_by_identity(profile.provider, profile.social_uid) + if existing_identity and int(existing_identity.get("admin_id") or 0) != admin_id: + return jsonify({"error": "该第三方账号已绑定其他管理员"}), 409 + + existing_provider = database.find_admin_social_login_binding(admin_id, profile.provider) + if existing_provider and str(existing_provider.get("social_uid") or "") != profile.social_uid: + return jsonify({"error": f"当前管理员已绑定{provider_label(profile.provider)}"}), 409 + + binding = database.upsert_admin_social_login_binding( + admin_id=admin_id, + provider=profile.provider, + social_uid=profile.social_uid, + nickname=profile.nickname, + avatar_url=profile.avatar_url, + ) + if not binding: + return jsonify({"error": "该第三方账号已绑定其他管理员"}), 409 + + logger.info(f"[admin/social/bind] admin_id={admin_id} provider={profile.provider}") + return jsonify({"success": True, "item": _admin_binding_row(profile.provider, binding)}) + + return _inner() + + +@api_social_bp.route("/yuyx/api/admin/social-bindings/", methods=["DELETE"]) +def unbind_admin_social_account(provider): + from routes.decorators import admin_required + + @admin_required + def _inner(): + provider_value = str(provider or "").strip().lower() + if provider_value not in PROVIDER_LABELS: + return jsonify({"error": "不支持的登录方式"}), 400 + admin_id = int(session.get("admin_id") or 0) + if not database.delete_admin_social_login_binding(admin_id, provider_value): + return jsonify({"error": "绑定记录不存在"}), 404 + logger.info(f"[admin/social/unbind] admin_id={admin_id} provider={provider_value}") + return jsonify({"success": True}) + + return _inner() + + @api_social_bp.route("/yuyx/api/social-login/test", methods=["POST"]) def test_admin_social_config(): from routes.decorators import admin_required diff --git a/routes/pages.py b/routes/pages.py index 8aacfae..aee1926 100644 --- a/routes/pages.py +++ b/routes/pages.py @@ -6,7 +6,7 @@ import json import os from typing import Optional -from flask import Blueprint, current_app, redirect, render_template, session, url_for +from flask import Blueprint, current_app, redirect, render_template, request, session, url_for from flask_login import current_user, login_required from routes.decorators import admin_required @@ -192,3 +192,14 @@ def admin_page(): except Exception as e: logger.error(f"[admin_spa] 加载manifest失败: {e}") return "后台页面加载失败,请稍后重试", 500 + + +@pages_bp.route("/yuyx/admin-social-bind-callback") +@admin_required +def admin_social_bind_callback_page(): + """管理员快捷登录绑定回调页面(由后台 SPA 继续处理授权参数)。""" + query = request.query_string.decode("utf-8", "ignore") + target = "/yuyx/admin#/social-bind-callback" + if query: + target = f"{target}?{query}" + return redirect(target) diff --git a/static/admin/.vite/manifest.json b/static/admin/.vite/manifest.json index 4c357fb..bccfa22 100644 --- a/static/admin/.vite/manifest.json +++ b/static/admin/.vite/manifest.json @@ -3,8 +3,8 @@ "file": "assets/MetricGrid-BR486o_b.css", "src": "_MetricGrid-BR486o_b.css" }, - "_MetricGrid-C3Xjc9mZ.js": { - "file": "assets/MetricGrid-C3Xjc9mZ.js", + "_MetricGrid-kv-nSROj.js": { + "file": "assets/MetricGrid-kv-nSROj.js", "name": "MetricGrid", "imports": [ "index.html", @@ -14,29 +14,36 @@ "assets/MetricGrid-BR486o_b.css" ] }, - "_email-Mh1SHQbX.js": { - "file": "assets/email-Mh1SHQbX.js", + "_admin-VsbfHbbH.js": { + "file": "assets/admin-VsbfHbbH.js", + "name": "admin", + "imports": [ + "index.html" + ] + }, + "_email-CgUCpCe3.js": { + "file": "assets/email-CgUCpCe3.js", "name": "email", "imports": [ "index.html" ] }, - "_system-CYbWdReq.js": { - "file": "assets/system-CYbWdReq.js", + "_system-CeiBEEoE.js": { + "file": "assets/system-CeiBEEoE.js", "name": "system", "imports": [ "index.html" ] }, - "_tasks-B7oNpIBD.js": { - "file": "assets/tasks-B7oNpIBD.js", + "_tasks-C6JkguA6.js": { + "file": "assets/tasks-C6JkguA6.js", "name": "tasks", "imports": [ "index.html" ] }, - "_users-DzDcz9C_.js": { - "file": "assets/users-DzDcz9C_.js", + "_users-D9XvGIoE.js": { + "file": "assets/users-D9XvGIoE.js", "name": "users", "imports": [ "index.html" @@ -46,23 +53,23 @@ "file": "assets/vendor-axios-B9ygI19o.js", "name": "vendor-axios" }, - "_vendor-element-B5S5pUKo.js": { - "file": "assets/vendor-element-B5S5pUKo.js", + "_vendor-element-C68yOrAy.css": { + "file": "assets/vendor-element-C68yOrAy.css", + "src": "_vendor-element-C68yOrAy.css" + }, + "_vendor-element-CIudPaVX.js": { + "file": "assets/vendor-element-CIudPaVX.js", "name": "vendor-element", "imports": [ "_vendor-vue-CVxSw_oJ.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-misc-DszMq72k.js" ], "css": [ "assets/vendor-element-C68yOrAy.css" ] }, - "_vendor-element-C68yOrAy.css": { - "file": "assets/vendor-element-C68yOrAy.css", - "src": "_vendor-element-C68yOrAy.css" - }, - "_vendor-misc-BeoNyvBp.js": { - "file": "assets/vendor-misc-BeoNyvBp.js", + "_vendor-misc-DszMq72k.js": { + "file": "assets/vendor-misc-DszMq72k.js", "name": "vendor-misc", "imports": [ "_vendor-vue-CVxSw_oJ.js" @@ -73,15 +80,15 @@ "name": "vendor-vue" }, "index.html": { - "file": "assets/index-DOvMEmc8.js", + "file": "assets/index-6ynv0Z9Y.js", "name": "index", "src": "index.html", "isEntry": true, "imports": [ "_vendor-vue-CVxSw_oJ.js", - "_vendor-element-B5S5pUKo.js", + "_vendor-element-CIudPaVX.js", "_vendor-axios-B9ygI19o.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-misc-DszMq72k.js" ], "dynamicImports": [ "src/pages/ReportPage.vue", @@ -92,22 +99,40 @@ "src/pages/EmailPage.vue", "src/pages/SecurityPage.vue", "src/pages/SystemPage.vue", - "src/pages/SettingsPage.vue" + "src/pages/SettingsPage.vue", + "src/pages/AdminSocialBindCallbackPage.vue" ], "css": [ "assets/index-CPs_XZ2s.css" ] }, + "src/pages/AdminSocialBindCallbackPage.vue": { + "file": "assets/AdminSocialBindCallbackPage-BsLZg3f-.js", + "name": "AdminSocialBindCallbackPage", + "src": "src/pages/AdminSocialBindCallbackPage.vue", + "isDynamicEntry": true, + "imports": [ + "_vendor-vue-CVxSw_oJ.js", + "_admin-VsbfHbbH.js", + "index.html", + "_vendor-element-CIudPaVX.js", + "_vendor-axios-B9ygI19o.js", + "_vendor-misc-DszMq72k.js" + ], + "css": [ + "assets/AdminSocialBindCallbackPage-CXV1zZmY.css" + ] + }, "src/pages/AnnouncementsPage.vue": { - "file": "assets/AnnouncementsPage-Dagm5PzE.js", + "file": "assets/AnnouncementsPage-BcIVG51R.js", "name": "AnnouncementsPage", "src": "src/pages/AnnouncementsPage.vue", "isDynamicEntry": true, "imports": [ - "_vendor-element-B5S5pUKo.js", + "_vendor-element-CIudPaVX.js", "index.html", "_vendor-vue-CVxSw_oJ.js", - "_vendor-misc-BeoNyvBp.js", + "_vendor-misc-DszMq72k.js", "_vendor-axios-B9ygI19o.js" ], "css": [ @@ -115,72 +140,72 @@ ] }, "src/pages/EmailPage.vue": { - "file": "assets/EmailPage-DiZA9Kx_.js", + "file": "assets/EmailPage-B1uMhyWi.js", "name": "EmailPage", "src": "src/pages/EmailPage.vue", "isDynamicEntry": true, "imports": [ - "_email-Mh1SHQbX.js", + "_email-CgUCpCe3.js", "index.html", - "_MetricGrid-C3Xjc9mZ.js", - "_vendor-element-B5S5pUKo.js", + "_MetricGrid-kv-nSROj.js", + "_vendor-element-CIudPaVX.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-misc-DszMq72k.js" ], "css": [ "assets/EmailPage-CTHxGzDv.css" ] }, "src/pages/FeedbacksPage.vue": { - "file": "assets/FeedbacksPage-DrMVqBKf.js", + "file": "assets/FeedbacksPage-CG9FZytm.js", "name": "FeedbacksPage", "src": "src/pages/FeedbacksPage.vue", "isDynamicEntry": true, "imports": [ "index.html", - "_MetricGrid-C3Xjc9mZ.js", - "_vendor-element-B5S5pUKo.js", + "_MetricGrid-kv-nSROj.js", + "_vendor-element-CIudPaVX.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-misc-DszMq72k.js" ], "css": [ "assets/FeedbacksPage-CPmSqIaj.css" ] }, "src/pages/LogsPage.vue": { - "file": "assets/LogsPage-Cy6Q0ave.js", + "file": "assets/LogsPage-Ct-BSxV6.js", "name": "LogsPage", "src": "src/pages/LogsPage.vue", "isDynamicEntry": true, "imports": [ - "_users-DzDcz9C_.js", - "_tasks-B7oNpIBD.js", + "_users-D9XvGIoE.js", + "_tasks-C6JkguA6.js", "index.html", - "_vendor-element-B5S5pUKo.js", + "_vendor-element-CIudPaVX.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-misc-DszMq72k.js" ], "css": [ "assets/LogsPage-BUgx3sZr.css" ] }, "src/pages/ReportPage.vue": { - "file": "assets/ReportPage-BMEJM5Hr.js", + "file": "assets/ReportPage-2jS10KoG.js", "name": "ReportPage", "src": "src/pages/ReportPage.vue", "isDynamicEntry": true, "imports": [ - "_vendor-element-B5S5pUKo.js", + "_vendor-element-CIudPaVX.js", "index.html", - "_email-Mh1SHQbX.js", - "_tasks-B7oNpIBD.js", - "_system-CYbWdReq.js", - "_MetricGrid-C3Xjc9mZ.js", + "_email-CgUCpCe3.js", + "_tasks-C6JkguA6.js", + "_system-CeiBEEoE.js", + "_MetricGrid-kv-nSROj.js", "_vendor-vue-CVxSw_oJ.js", - "_vendor-misc-BeoNyvBp.js", + "_vendor-misc-DszMq72k.js", "_vendor-axios-B9ygI19o.js" ], "css": [ @@ -188,67 +213,68 @@ ] }, "src/pages/SecurityPage.vue": { - "file": "assets/SecurityPage-yzYEGeTN.js", + "file": "assets/SecurityPage-93lfkhLF.js", "name": "SecurityPage", "src": "src/pages/SecurityPage.vue", "isDynamicEntry": true, "imports": [ "index.html", - "_MetricGrid-C3Xjc9mZ.js", - "_vendor-element-B5S5pUKo.js", + "_MetricGrid-kv-nSROj.js", + "_vendor-element-CIudPaVX.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-misc-DszMq72k.js" ], "css": [ "assets/SecurityPage-C2-mJ7eD.css" ] }, "src/pages/SettingsPage.vue": { - "file": "assets/SettingsPage-DF5fL8gq.js", + "file": "assets/SettingsPage-BbHyIZsy.js", "name": "SettingsPage", "src": "src/pages/SettingsPage.vue", "isDynamicEntry": true, "imports": [ + "_vendor-misc-DszMq72k.js", + "_admin-VsbfHbbH.js", "index.html", - "_vendor-element-B5S5pUKo.js", + "_vendor-element-CIudPaVX.js", "_vendor-vue-CVxSw_oJ.js", - "_vendor-axios-B9ygI19o.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/SettingsPage-D-iYz1zh.css" + "assets/SettingsPage-CjIQQfeg.css" ] }, "src/pages/SystemPage.vue": { - "file": "assets/SystemPage-DrM9-RI5.js", + "file": "assets/SystemPage-D9T-fhw-.js", "name": "SystemPage", "src": "src/pages/SystemPage.vue", "isDynamicEntry": true, "imports": [ - "_system-CYbWdReq.js", + "_system-CeiBEEoE.js", "index.html", - "_vendor-element-B5S5pUKo.js", + "_vendor-element-CIudPaVX.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-misc-DszMq72k.js" ], "css": [ "assets/SystemPage-CTs6qr36.css" ] }, "src/pages/UsersPage.vue": { - "file": "assets/UsersPage-RI5S3snx.js", + "file": "assets/UsersPage-2-Mno2hz.js", "name": "UsersPage", "src": "src/pages/UsersPage.vue", "isDynamicEntry": true, "imports": [ - "_users-DzDcz9C_.js", + "_users-D9XvGIoE.js", "index.html", - "_vendor-element-B5S5pUKo.js", + "_vendor-element-CIudPaVX.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", - "_vendor-misc-BeoNyvBp.js" + "_vendor-misc-DszMq72k.js" ], "css": [ "assets/UsersPage-CgYh6JHW.css" diff --git a/static/admin/assets/AdminSocialBindCallbackPage-BsLZg3f-.js b/static/admin/assets/AdminSocialBindCallbackPage-BsLZg3f-.js new file mode 100644 index 0000000..60a8517 --- /dev/null +++ b/static/admin/assets/AdminSocialBindCallbackPage-BsLZg3f-.js @@ -0,0 +1 @@ +import{ax as w,r as y,o as g,aj as l,n as v,q as f,L as d,E as h,t as k,J as x}from"./vendor-vue-CVxSw_oJ.js";import{i as S}from"./admin-VsbfHbbH.js";import{_ as C}from"./index-6ynv0Z9Y.js";import{a as n}from"./vendor-element-CIudPaVX.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-DszMq72k.js";const b={class:"callback-wrap"},B={class:"callback-text"},P={__name:"AdminSocialBindCallbackPage",setup(q){const o=w(),t=y("正在完成绑定");return g(async()=>{const c=String(window.location.hash||"").split("?")[1]||"",e=new URLSearchParams(window.location.search||c),a=String(e.get("provider")||e.get("type")||"").trim().toLowerCase(),r=String(e.get("code")||"").trim(),p=String(o.query?.provider||o.query?.type||"").trim().toLowerCase(),m=String(o.query?.code||"").trim(),s=a||p,i=r||m;if(!s||!i){n.error("快捷登录回调参数不完整"),window.location.replace("/yuyx/admin#/settings");return}try{await S(s,{provider:s,code:i}),n.success("管理员快捷登录已绑定"),window.location.replace("/yuyx/admin#/settings")}catch(u){const _=u?.response?.data;t.value=_?.error||"快捷登录绑定失败",n.error(t.value),window.setTimeout(()=>{window.location.replace("/yuyx/admin#/settings")},1200)}}),(c,e)=>{const a=l("el-skeleton"),r=l("el-card");return f(),v("div",b,[d(r,{shadow:"never",class:"callback-card"},{default:h(()=>[d(a,{rows:3,animated:""}),k("div",B,x(t.value),1)]),_:1})])}}},T=C(P,[["__scopeId","data-v-647766e7"]]);export{T as default}; diff --git a/static/admin/assets/AdminSocialBindCallbackPage-CXV1zZmY.css b/static/admin/assets/AdminSocialBindCallbackPage-CXV1zZmY.css new file mode 100644 index 0000000..281375f --- /dev/null +++ b/static/admin/assets/AdminSocialBindCallbackPage-CXV1zZmY.css @@ -0,0 +1 @@ +.callback-wrap[data-v-647766e7]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:#f6f7fb}.callback-card[data-v-647766e7]{width:min(420px,94vw);border-radius:12px;border:1px solid var(--app-border)}.callback-text[data-v-647766e7]{margin-top:12px;color:var(--app-muted);font-size:13px;text-align:center} diff --git a/static/admin/assets/AnnouncementsPage-Dagm5PzE.js b/static/admin/assets/AnnouncementsPage-BcIVG51R.js similarity index 97% rename from static/admin/assets/AnnouncementsPage-Dagm5PzE.js rename to static/admin/assets/AnnouncementsPage-BcIVG51R.js index 21a383e..8acaba4 100644 --- a/static/admin/assets/AnnouncementsPage-Dagm5PzE.js +++ b/static/admin/assets/AnnouncementsPage-BcIVG51R.js @@ -1 +1 @@ -import{p as J,a as r,E as C}from"./vendor-element-B5S5pUKo.js";import{a as w,_ as W}from"./index-DOvMEmc8.js";import{r as v,o as K,aj as p,ap as O,n as h,q as f,t as u,L as a,E as t,G as A,D as x,u as Q,I as c,J as D,F as X,a8 as $}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-misc-BeoNyvBp.js";import"./vendor-axios-B9ygI19o.js";async function Y(){const{data:o}=await w.get("/announcements");return o}async function Z(o){const{data:s}=await w.post("/announcements",o);return s}async function ee(o){const s=new FormData;s.append("file",o);const{data:_}=await w.post("/announcements/upload_image",s);return _}async function te(o){const{data:s}=await w.post(`/announcements/${o}/activate`);return s}async function ae(o){const{data:s}=await w.post(`/announcements/${o}/deactivate`);return s}async function ne(o){const{data:s}=await w.delete(`/announcements/${o}`);return s}const le={class:"page-stack"},se={class:"image-upload-row"},oe={key:1,class:"image-url"},ie={key:0,class:"image-preview"},re=["src"],ue={class:"actions"},ce={class:"table-wrap"},de=["title"],me={key:1,class:"app-muted"},fe={class:"actions"},pe={__name:"AnnouncementsPage",setup(o){const s=v(""),_=v(""),m=v(""),g=v(null),B=v(!1),I=v(!1),T=v([]);async function k(){I.value=!0;try{T.value=await Y()}catch{T.value=[]}finally{I.value=!1}}function E(){s.value="",_.value="",m.value="",g.value&&(g.value.value="")}function N(){g.value?.click()}function U(){m.value="",g.value&&(g.value.value="")}async function P(l){const e=l.target?.files?.[0];if(e){if(e.type&&!e.type.startsWith("image/")){r.error("请选择图片文件"),l.target.value="";return}B.value=!0;try{const d=await ee(e);if(!d?.success||!d?.url){r.error(d?.error||"上传失败");return}m.value=d.url,r.success("上传成功")}catch{}finally{B.value=!1,l.target.value=""}}}async function z(l){const e=s.value.trim(),d=_.value.trim(),b=m.value.trim();if(!e||!d){r.error("标题和内容不能为空");return}try{const i=await Z({title:e,content:d,image_url:b,is_active:!!l});if(!i?.success){r.error(i?.error||"保存失败");return}r.success("保存成功"),E(),await k()}catch{}}async function L(l){const e=$("div",{class:"announcement-view"},[l.content?$("div",{class:"announcement-view-text"},l.content):null,l.image_url?$("img",{class:"announcement-view-image",src:l.image_url,alt:"公告图片"}):null]);await C.alert(e,l.title||"公告",{confirmButtonText:"关闭",dangerouslyUseHTMLString:!1})}async function R(l){try{await C.confirm("确定启用该公告吗?启用后将自动停用其他公告。","启用公告",{confirmButtonText:"启用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await te(l.id);if(!e?.success){r.error(e?.error||"启用失败");return}r.success("已启用"),await k()}catch{}}async function S(l){try{await C.confirm("确定停用该公告吗?","停用公告",{confirmButtonText:"停用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await ae(l.id);if(!e?.success){r.error(e?.error||"停用失败");return}r.success("已停用"),await k()}catch{}}async function j(l){try{await C.confirm("确定删除该公告吗?删除后无法恢复。","删除公告",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const e=await ne(l.id);if(!e?.success){r.error(e?.error||"删除失败");return}r.success("已删除"),await k()}catch{}}return K(k),(l,e)=>{const d=p("el-input"),b=p("el-form-item"),i=p("el-button"),q=p("el-form"),F=p("el-card"),y=p("el-table-column"),M=p("el-tag"),G=p("el-table"),H=O("loading");return f(),h("div",le,[e[17]||(e[17]=u("div",{class:"app-page-title"},[u("h2",null,"公告管理")],-1)),a(F,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[9]||(e[9]=u("h3",{class:"section-title"},"创建公告",-1)),a(q,{"label-width":"90px"},{default:t(()=>[a(b,{label:"公告标题"},{default:t(()=>[a(d,{modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=n=>s.value=n),placeholder:"请输入公告标题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(b,{label:"公告内容"},{default:t(()=>[a(d,{modelValue:_.value,"onUpdate:modelValue":e[1]||(e[1]=n=>_.value=n),type:"textarea",rows:5,placeholder:"请输入公告内容(将以弹窗形式展示)",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(b,{label:"公告图片"},{default:t(()=>[u("div",se,[a(i,{icon:Q(J),loading:B.value,onClick:N},{default:t(()=>[...e[4]||(e[4]=[c("上传图片",-1)])]),_:1},8,["icon","loading"]),m.value?(f(),x(i,{key:0,onClick:U},{default:t(()=>[...e[5]||(e[5]=[c("移除",-1)])]),_:1})):A("",!0),m.value?(f(),h("span",oe,D(m.value),1)):A("",!0),u("input",{ref_key:"imageInputRef",ref:g,class:"image-input",type:"file",accept:"image/*",onChange:P},null,544)])]),_:1})]),_:1}),m.value?(f(),h("div",ie,[u("img",{src:m.value,alt:"公告图片预览"},null,8,re)])):A("",!0),u("div",ue,[a(i,{type:"primary",onClick:e[2]||(e[2]=n=>z(!0))},{default:t(()=>[...e[6]||(e[6]=[c("发布并启用",-1)])]),_:1}),a(i,{onClick:e[3]||(e[3]=n=>z(!1))},{default:t(()=>[...e[7]||(e[7]=[c("保存但不启用",-1)])]),_:1}),a(i,{onClick:E},{default:t(()=>[...e[8]||(e[8]=[c("清空",-1)])]),_:1})]),e[10]||(e[10]=u("div",{class:"help"}," 说明:启用公告后,用户登录进入系统将弹窗提示;用户可选择“当次关闭”或“永久关闭本次公告”。 ",-1))]),_:1}),a(F,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[16]||(e[16]=u("h3",{class:"section-title"},"公告列表",-1)),u("div",ce,[X((f(),x(G,{data:T.value,style:{width:"100%"}},{default:t(()=>[a(y,{prop:"id",label:"ID",width:"80"}),a(y,{label:"标题","min-width":"240"},{default:t(({row:n})=>[u("span",{class:"ellipsis",title:n.title},D(n.title),9,de)]),_:1}),a(y,{label:"状态",width:"120"},{default:t(({row:n})=>[a(M,{type:n.is_active?"success":"info",effect:"light"},{default:t(()=>[c(D(n.is_active?"启用":"停用"),1)]),_:2},1032,["type"])]),_:1}),a(y,{label:"图片",width:"100"},{default:t(({row:n})=>[n.image_url?(f(),x(M,{key:0,type:"success",effect:"light"},{default:t(()=>[...e[11]||(e[11]=[c("有图",-1)])]),_:1})):(f(),h("span",me,"-"))]),_:1}),a(y,{prop:"created_at",label:"创建时间",width:"180"}),a(y,{label:"操作",width:"260",fixed:"right"},{default:t(({row:n})=>[u("div",fe,[a(i,{size:"small",onClick:V=>L(n)},{default:t(()=>[...e[12]||(e[12]=[c("查看",-1)])]),_:1},8,["onClick"]),n.is_active?(f(),x(i,{key:0,size:"small",onClick:V=>S(n)},{default:t(()=>[...e[13]||(e[13]=[c("停用",-1)])]),_:1},8,["onClick"])):(f(),x(i,{key:1,type:"success",size:"small",onClick:V=>R(n)},{default:t(()=>[...e[14]||(e[14]=[c("启用",-1)])]),_:1},8,["onClick"])),a(i,{type:"danger",size:"small",onClick:V=>j(n)},{default:t(()=>[...e[15]||(e[15]=[c("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[H,I.value]])])]),_:1})])}}},ke=W(pe,[["__scopeId","data-v-faabe575"]]);export{ke as default}; +import{p as J,a as r,E as C}from"./vendor-element-CIudPaVX.js";import{a as w,_ as W}from"./index-6ynv0Z9Y.js";import{r as v,o as K,aj as p,ap as O,n as h,q as f,t as u,L as a,E as t,G as A,D as x,u as Q,I as c,J as D,F as X,a8 as $}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-misc-DszMq72k.js";import"./vendor-axios-B9ygI19o.js";async function Y(){const{data:o}=await w.get("/announcements");return o}async function Z(o){const{data:s}=await w.post("/announcements",o);return s}async function ee(o){const s=new FormData;s.append("file",o);const{data:_}=await w.post("/announcements/upload_image",s);return _}async function te(o){const{data:s}=await w.post(`/announcements/${o}/activate`);return s}async function ae(o){const{data:s}=await w.post(`/announcements/${o}/deactivate`);return s}async function ne(o){const{data:s}=await w.delete(`/announcements/${o}`);return s}const le={class:"page-stack"},se={class:"image-upload-row"},oe={key:1,class:"image-url"},ie={key:0,class:"image-preview"},re=["src"],ue={class:"actions"},ce={class:"table-wrap"},de=["title"],me={key:1,class:"app-muted"},fe={class:"actions"},pe={__name:"AnnouncementsPage",setup(o){const s=v(""),_=v(""),m=v(""),g=v(null),B=v(!1),I=v(!1),T=v([]);async function k(){I.value=!0;try{T.value=await Y()}catch{T.value=[]}finally{I.value=!1}}function E(){s.value="",_.value="",m.value="",g.value&&(g.value.value="")}function N(){g.value?.click()}function U(){m.value="",g.value&&(g.value.value="")}async function P(l){const e=l.target?.files?.[0];if(e){if(e.type&&!e.type.startsWith("image/")){r.error("请选择图片文件"),l.target.value="";return}B.value=!0;try{const d=await ee(e);if(!d?.success||!d?.url){r.error(d?.error||"上传失败");return}m.value=d.url,r.success("上传成功")}catch{}finally{B.value=!1,l.target.value=""}}}async function z(l){const e=s.value.trim(),d=_.value.trim(),b=m.value.trim();if(!e||!d){r.error("标题和内容不能为空");return}try{const i=await Z({title:e,content:d,image_url:b,is_active:!!l});if(!i?.success){r.error(i?.error||"保存失败");return}r.success("保存成功"),E(),await k()}catch{}}async function L(l){const e=$("div",{class:"announcement-view"},[l.content?$("div",{class:"announcement-view-text"},l.content):null,l.image_url?$("img",{class:"announcement-view-image",src:l.image_url,alt:"公告图片"}):null]);await C.alert(e,l.title||"公告",{confirmButtonText:"关闭",dangerouslyUseHTMLString:!1})}async function R(l){try{await C.confirm("确定启用该公告吗?启用后将自动停用其他公告。","启用公告",{confirmButtonText:"启用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await te(l.id);if(!e?.success){r.error(e?.error||"启用失败");return}r.success("已启用"),await k()}catch{}}async function S(l){try{await C.confirm("确定停用该公告吗?","停用公告",{confirmButtonText:"停用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await ae(l.id);if(!e?.success){r.error(e?.error||"停用失败");return}r.success("已停用"),await k()}catch{}}async function j(l){try{await C.confirm("确定删除该公告吗?删除后无法恢复。","删除公告",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const e=await ne(l.id);if(!e?.success){r.error(e?.error||"删除失败");return}r.success("已删除"),await k()}catch{}}return K(k),(l,e)=>{const d=p("el-input"),b=p("el-form-item"),i=p("el-button"),q=p("el-form"),F=p("el-card"),y=p("el-table-column"),M=p("el-tag"),G=p("el-table"),H=O("loading");return f(),h("div",le,[e[17]||(e[17]=u("div",{class:"app-page-title"},[u("h2",null,"公告管理")],-1)),a(F,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[9]||(e[9]=u("h3",{class:"section-title"},"创建公告",-1)),a(q,{"label-width":"90px"},{default:t(()=>[a(b,{label:"公告标题"},{default:t(()=>[a(d,{modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=n=>s.value=n),placeholder:"请输入公告标题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(b,{label:"公告内容"},{default:t(()=>[a(d,{modelValue:_.value,"onUpdate:modelValue":e[1]||(e[1]=n=>_.value=n),type:"textarea",rows:5,placeholder:"请输入公告内容(将以弹窗形式展示)",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(b,{label:"公告图片"},{default:t(()=>[u("div",se,[a(i,{icon:Q(J),loading:B.value,onClick:N},{default:t(()=>[...e[4]||(e[4]=[c("上传图片",-1)])]),_:1},8,["icon","loading"]),m.value?(f(),x(i,{key:0,onClick:U},{default:t(()=>[...e[5]||(e[5]=[c("移除",-1)])]),_:1})):A("",!0),m.value?(f(),h("span",oe,D(m.value),1)):A("",!0),u("input",{ref_key:"imageInputRef",ref:g,class:"image-input",type:"file",accept:"image/*",onChange:P},null,544)])]),_:1})]),_:1}),m.value?(f(),h("div",ie,[u("img",{src:m.value,alt:"公告图片预览"},null,8,re)])):A("",!0),u("div",ue,[a(i,{type:"primary",onClick:e[2]||(e[2]=n=>z(!0))},{default:t(()=>[...e[6]||(e[6]=[c("发布并启用",-1)])]),_:1}),a(i,{onClick:e[3]||(e[3]=n=>z(!1))},{default:t(()=>[...e[7]||(e[7]=[c("保存但不启用",-1)])]),_:1}),a(i,{onClick:E},{default:t(()=>[...e[8]||(e[8]=[c("清空",-1)])]),_:1})]),e[10]||(e[10]=u("div",{class:"help"}," 说明:启用公告后,用户登录进入系统将弹窗提示;用户可选择“当次关闭”或“永久关闭本次公告”。 ",-1))]),_:1}),a(F,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[16]||(e[16]=u("h3",{class:"section-title"},"公告列表",-1)),u("div",ce,[X((f(),x(G,{data:T.value,style:{width:"100%"}},{default:t(()=>[a(y,{prop:"id",label:"ID",width:"80"}),a(y,{label:"标题","min-width":"240"},{default:t(({row:n})=>[u("span",{class:"ellipsis",title:n.title},D(n.title),9,de)]),_:1}),a(y,{label:"状态",width:"120"},{default:t(({row:n})=>[a(M,{type:n.is_active?"success":"info",effect:"light"},{default:t(()=>[c(D(n.is_active?"启用":"停用"),1)]),_:2},1032,["type"])]),_:1}),a(y,{label:"图片",width:"100"},{default:t(({row:n})=>[n.image_url?(f(),x(M,{key:0,type:"success",effect:"light"},{default:t(()=>[...e[11]||(e[11]=[c("有图",-1)])]),_:1})):(f(),h("span",me,"-"))]),_:1}),a(y,{prop:"created_at",label:"创建时间",width:"180"}),a(y,{label:"操作",width:"260",fixed:"right"},{default:t(({row:n})=>[u("div",fe,[a(i,{size:"small",onClick:V=>L(n)},{default:t(()=>[...e[12]||(e[12]=[c("查看",-1)])]),_:1},8,["onClick"]),n.is_active?(f(),x(i,{key:0,size:"small",onClick:V=>S(n)},{default:t(()=>[...e[13]||(e[13]=[c("停用",-1)])]),_:1},8,["onClick"])):(f(),x(i,{key:1,type:"success",size:"small",onClick:V=>R(n)},{default:t(()=>[...e[14]||(e[14]=[c("启用",-1)])]),_:1},8,["onClick"])),a(i,{type:"danger",size:"small",onClick:V=>j(n)},{default:t(()=>[...e[15]||(e[15]=[c("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[H,I.value]])])]),_:1})])}}},ke=W(pe,[["__scopeId","data-v-faabe575"]]);export{ke as default}; diff --git a/static/admin/assets/EmailPage-DiZA9Kx_.js b/static/admin/assets/EmailPage-B1uMhyWi.js similarity index 98% rename from static/admin/assets/EmailPage-DiZA9Kx_.js rename to static/admin/assets/EmailPage-B1uMhyWi.js index 213dcf9..e6c2c48 100644 --- a/static/admin/assets/EmailPage-DiZA9Kx_.js +++ b/static/admin/assets/EmailPage-B1uMhyWi.js @@ -1 +1 @@ -import{a as De,c as He,b as Ne,f as Fe,u as Ie}from"./email-Mh1SHQbX.js";import{a as U,_ as ze}from"./index-DOvMEmc8.js";import{M as me}from"./MetricGrid-C3Xjc9mZ.js";import{E as B,a as d}from"./vendor-element-B5S5pUKo.js";import{r as m,S as pe,R as Qe,c as G,o as je,aj as c,ap as Ge,n as x,q as f,t as u,F as K,L as t,D as M,E as n,I as p,J as _,G as P,K as te,a3 as ce}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function Ke(){const{data:b}=await U.get("/smtp/configs");return b}async function Oe(b){const{data:v}=await U.post("/smtp/configs",b);return v}async function Re(b,v){const{data:g}=await U.put(`/smtp/configs/${b}`,v);return g}async function Je(b){const{data:v}=await U.delete(`/smtp/configs/${b}`);return v}async function We(b,v){const{data:g}=await U.post(`/smtp/configs/${b}/test`,{email:v});return g}async function Xe(b){const{data:v}=await U.post(`/smtp/configs/${b}/primary`);return v}async function Ye(){const{data:b}=await U.post("/smtp/configs/primary/clear");return b}const Ze={class:"page-stack"},el={class:"help app-muted"},ll={class:"section-head"},tl={class:"table-wrap"},al={class:"sub-stats"},sl={class:"help app-muted"},nl={class:"section-head"},ol={class:"toolbar"},il={class:"table-wrap"},ul=["title"],rl=["title"],dl=["title"],ml={class:"pagination"},pl={class:"page-hint app-muted"},cl={style:{width:"100%"}},fl={key:0,class:"help"},_l={key:0},bl={key:0},vl={key:0},yl={class:"dialog-actions"},fe=15,gl={__name:"EmailPage",setup(b){const v=m(!1),g=m(!1),o=pe({enabled:!1,failover_enabled:!0,register_verify_enabled:!1,login_alert_enabled:!0,task_notify_enabled:!1,base_url:"",updated_at:null});let L=null;async function ae(){v.value=!0;try{const s=await Ne();o.enabled=!!s.enabled,o.failover_enabled=!!s.failover_enabled,o.register_verify_enabled=!!s.register_verify_enabled,o.login_alert_enabled=s.login_alert_enabled===void 0?!0:!!s.login_alert_enabled,o.task_notify_enabled=!!s.task_notify_enabled,o.base_url=s.base_url||"",o.updated_at=s.updated_at||null}catch{}finally{v.value=!1}}async function _e(){if(!v.value){g.value=!0;try{const s=await Ie({enabled:o.enabled,failover_enabled:o.failover_enabled,register_verify_enabled:o.register_verify_enabled,login_alert_enabled:o.login_alert_enabled,task_notify_enabled:o.task_notify_enabled,base_url:(o.base_url||"").trim()});if(!s?.success){d.error(s?.error||"更新失败");return}d.success("邮件设置已更新"),await ae()}catch{}finally{g.value=!1}}}function E(){L&&window.clearTimeout(L),L=window.setTimeout(_e,300)}Qe(()=>{L&&window.clearTimeout(L),L=null});const O=m(!1),R=m([]),S=m(!1),k=m(!1),J=m(!1),H=m(!1),a=pe({id:null,name:"默认配置",enabled:!0,host:"",port:465,username:"",password:"",use_ssl:!0,use_tls:!1,sender_name:"自动化学习",sender_email:"",daily_limit:0,priority:0}),N=[{key:"custom",label:"自定义(手动填写)",defaults:null,note:"适用于其他邮箱/自建SMTP",links:[]},{key:"gmail",label:"Gmail",defaults:{host:"smtp.gmail.com",port:465,use_ssl:!0,use_tls:!1},note:"通常需要开启两步验证并创建应用专用密码(App Password)",links:[{label:"SMTP 设置说明",url:"https://support.google.com/mail/answer/7126229?hl=zh-Hans"},{label:"App Password",url:"https://myaccount.google.com/apppasswords"}]},{key:"qq",label:"QQ 邮箱",defaults:{host:"smtp.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并获取授权码(不是QQ登录密码)",links:[{label:"QQ邮箱 SMTP 帮助",url:"https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256"}]},{key:"163",label:"163 邮箱",defaults:{host:"smtp.163.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱 SMTP 帮助",url:"https://help.mail.163.com/faqDetail.do?code=d7a5dc8471a22b76"}]},{key:"126",label:"126 邮箱",defaults:{host:"smtp.126.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱帮助",url:"https://help.mail.163.com/"}]},{key:"outlook",label:"Outlook/Hotmail",defaults:{host:"smtp-mail.outlook.com",port:587,use_ssl:!1,use_tls:!0},note:"建议使用 TLS 587(部分账号需开启 SMTP AUTH)",links:[{label:"微软 SMTP 设置",url:"https://support.microsoft.com/office/pop-imap-and-smtp-settings-for-outlook-com-d088b0b7-0d38-4f9a-bc5d-509f9e4c6d3d"}]},{key:"office365",label:"Microsoft 365/Exchange",defaults:{host:"smtp.office365.com",port:587,use_ssl:!1,use_tls:!0},note:"企业邮箱常用配置(需启用 SMTP AUTH)",links:[{label:"微软官方说明",url:"https://learn.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission"}]},{key:"icloud",label:"iCloud",defaults:{host:"smtp.mail.me.com",port:587,use_ssl:!1,use_tls:!0},note:"需要在 Apple ID 中生成“App 专用密码”",links:[{label:"Apple 邮件服务器设置",url:"https://support.apple.com/zh-cn/HT202304"}]},{key:"tencent_exmail",label:"腾讯企业邮箱",defaults:{host:"smtp.exmail.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"腾讯企业邮箱帮助",url:"https://service.exmail.qq.com/cgi-bin/help?subtype=1&id=23&no=1001068"}]},{key:"aliyun_exmail",label:"阿里企业邮箱",defaults:{host:"smtp.mxhichina.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"阿里云文档",url:"https://help.aliyun.com/document_detail/50652.html"}]}],q=m("custom"),V=G(()=>N.find(s=>s.key===q.value)||N[0]),be=G(()=>k.value&&J.value?"留空保持不变":"SMTP密码或授权码");function ve(s){const e=String(s?.host||"").trim().toLowerCase();return e&&{"smtp.gmail.com":"gmail","smtp.qq.com":"qq","smtp.163.com":"163","smtp.126.com":"126","smtp-mail.outlook.com":"outlook","smtp.office365.com":"office365","smtp.mail.me.com":"icloud","smtp.exmail.qq.com":"tencent_exmail","smtp.mxhichina.com":"aliyun_exmail"}[e]||"custom"}function ye(s){const e=N.find(i=>i.key===s);!e||!e.defaults||(a.host=e.defaults.host,a.port=e.defaults.port,a.use_ssl=e.defaults.use_ssl,a.use_tls=e.defaults.use_tls)}function se(){a.id=null,a.name="默认配置",a.enabled=!0,a.host="",a.port=465,a.username="",a.password="",a.use_ssl=!0,a.use_tls=!1,a.sender_name="自动化学习",a.sender_email="",a.daily_limit=0,a.priority=0,J.value=!1,H.value=!1,q.value="custom"}async function $(){O.value=!0;try{R.value=await Ke()}catch{R.value=[]}finally{O.value=!1}}function ge(){k.value=!1,se(),q.value="custom",S.value=!0}function ke(s){k.value=!0,se(),a.id=s.id,a.name=s.name||"默认配置",a.enabled=!!s.enabled,a.host=s.host||"",a.port=s.port||465,a.username=s.username||"",a.password="",a.use_ssl=!!s.use_ssl,a.use_tls=!!s.use_tls,a.sender_name=s.sender_name||"自动化学习",a.sender_email=s.sender_email||"",a.daily_limit=s.daily_limit??0,a.priority=s.priority??0,J.value=!!s.has_password,H.value=!!s.is_primary,q.value=ve(s),S.value=!0}function ne(s){return s.is_primary?{label:"主",type:"warning"}:s.enabled?{label:"备用",type:"success"}:{label:"禁用",type:"info"}}function he(s){return s.daily_limit&&s.daily_limit>0?`${s.daily_sent}/${s.daily_limit}`:`${s.daily_sent}/∞`}async function Ve(){if(!a.host.trim()){d.error("SMTP服务器地址不能为空");return}if(!a.username.trim()){d.error("SMTP用户名不能为空");return}const s={name:a.name.trim()||"默认配置",enabled:!!a.enabled,priority:Number(a.priority)||0,host:a.host.trim(),port:Number(a.port)||465,username:a.username.trim(),use_ssl:!!a.use_ssl,use_tls:!!a.use_tls,sender_name:(a.sender_name||"").trim(),sender_email:(a.sender_email||"").trim(),daily_limit:Number(a.daily_limit)||0};try{if(k.value){const e={...s};a.password&&(e.password=a.password);const i=await Re(a.id,e);if(!i?.success){d.error(i?.error||"更新失败");return}d.success("保存成功")}else{const e={...s};a.password&&(e.password=a.password);const i=await Oe(e);if(!i?.success){d.error(i?.error||"创建失败");return}d.success("创建成功")}S.value=!1,await $()}catch{}}async function we(){if(!k.value||!a.id){d.error("请先保存配置后再测试");return}let s;try{const e=await B.prompt("请输入测试收件邮箱","测试连接",{inputPlaceholder:"name@example.com",confirmButtonText:"发送测试邮件",cancelButtonText:"取消",inputValidator:i=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(i||"").trim()),inputErrorMessage:"邮箱格式不正确"});s=String(e.value||"").trim()}catch{return}try{const e=await We(a.id,s);e?.success?(d.success("测试成功,邮件已发送"),await $()):await B.alert(e?.error||"测试失败","测试失败",{confirmButtonText:"知道了"})}catch{}}async function Se(){if(!(!k.value||!a.id)){try{await B.confirm("确定将该配置设为主配置吗?","设为主配置",{confirmButtonText:"设为主配置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const s=await Xe(a.id);if(!s?.success){d.error(s?.error||"设置失败");return}d.success("已设为主配置"),S.value=!1,await $()}catch{}}}async function Te(){if(k.value){try{await B.confirm("确定取消主配置吗?取消后将按优先级选择可用SMTP。","取消主配置",{confirmButtonText:"取消主配置",cancelButtonText:"保留",type:"warning"})}catch{return}try{const s=await Ye();if(!s?.success){d.error(s?.error||"操作失败");return}d.success("已取消主配置"),S.value=!1,await $()}catch{}}}async function xe(){if(!(!k.value||!a.id)){try{await B.confirm("确定删除该SMTP配置吗?此操作不可恢复。","删除配置",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const s=await Je(a.id);if(!s?.success){d.error(s?.error||"删除失败");return}d.success("已删除"),S.value=!1,await $()}catch{}}}const A=m(!1),h=m({}),W=m(!1),F=m(""),I=m(""),z=m(1),X=m([]),Y=m(0),Z=m(1);function Pe(s){return{register:"注册验证",reset:"密码重置",bind:"邮箱绑定",task_complete:"任务完成",security_alert:"安全告警"}[s]||s}function oe(s){return s?.username&&s?.user_id?`${s.username} (#${s.user_id})`:s?.user_id?`用户#${s.user_id}`:"系统"}const Ce=G(()=>[{key:"total_sent",label:"总发送",value:h.value?.total_sent||0,tone:"blue"},{key:"total_success",label:"成功",value:h.value?.total_success||0,tone:"green"},{key:"total_failed",label:"失败",value:h.value?.total_failed||0,tone:"red"},{key:"success_rate",label:"成功率",value:`${h.value?.success_rate||0}%`,tone:"purple"}]),Be=G(()=>[{key:"register_sent",label:"注册验证",value:h.value?.register_sent||0,tone:"cyan"},{key:"reset_sent",label:"密码重置",value:h.value?.reset_sent||0,tone:"orange"},{key:"bind_sent",label:"邮箱绑定",value:h.value?.bind_sent||0,tone:"purple"},{key:"task_complete_sent",label:"任务完成",value:h.value?.task_complete_sent||0,tone:"green"}]);async function Me(){A.value=!0;try{h.value=await Fe()}catch{h.value={}}finally{A.value=!1}}async function D(s=1){W.value=!0;try{const e={page:s,page_size:fe};F.value&&(e.type=F.value),I.value&&(e.status=I.value);const i=await De(e);X.value=i?.logs||[],Y.value=i?.total||0,z.value=i?.page||s,Z.value=i?.total_pages||1}catch{X.value=[],Y.value=0,Z.value=1}finally{W.value=!1}}async function Ue(){let s;try{const e=await B.prompt("请输入保留天数(将删除该天数之前的日志)","清理日志",{inputValue:"30",confirmButtonText:"清理",cancelButtonText:"取消",inputValidator:i=>{const r=parseInt(String(i),10);return Number.isFinite(r)&&r>=7},inputErrorMessage:"天数必须大于等于7"});s=parseInt(String(e.value),10)}catch{return}try{await B.confirm(`确定删除 ${s} 天之前的邮件日志吗?`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await He(s);if(!e?.success){d.error(e?.error||"清理失败");return}d.success(`已清理 ${e.deleted} 条日志`),await D(1)}catch{}}async function Le(){await Promise.all([ae(),$(),Me(),D(1)])}return je(Le),(s,e)=>{const i=c("el-switch"),r=c("el-form-item"),Ee=c("el-divider"),C=c("el-input"),ie=c("el-form"),Q=c("el-card"),T=c("el-button"),ue=c("el-tag"),y=c("el-table-column"),re=c("el-table"),w=c("el-option"),ee=c("el-select"),qe=c("el-pagination"),$e=c("el-link"),le=c("el-input-number"),Ae=c("el-dialog"),j=Ge("loading");return f(),x("div",Ze,[e[43]||(e[43]=u("div",{class:"app-page-title"},[u("h2",null,"邮件配置")],-1)),K((f(),M(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[29]||(e[29]=u("h3",{class:"section-title"},"全局设置",-1)),t(ie,{"label-width":"140px"},{default:n(()=>[t(r,{label:"启用邮件功能"},{default:n(()=>[t(i,{modelValue:o.enabled,"onUpdate:modelValue":e[0]||(e[0]=l=>o.enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"启用故障转移"},{default:n(()=>[t(i,{modelValue:o.failover_enabled,"onUpdate:modelValue":e[1]||(e[1]=l=>o.failover_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"启用注册邮箱验证"},{default:n(()=>[t(i,{modelValue:o.register_verify_enabled,"onUpdate:modelValue":e[2]||(e[2]=l=>o.register_verify_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(Ee,{"content-position":"left"},{default:n(()=>[...e[26]||(e[26]=[p("通知设置",-1)])]),_:1}),t(r,{label:"启用任务完成通知"},{default:n(()=>[t(i,{modelValue:o.task_notify_enabled,"onUpdate:modelValue":e[3]||(e[3]=l=>o.task_notify_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"新设备登录提醒"},{default:n(()=>[t(i,{modelValue:o.login_alert_enabled,"onUpdate:modelValue":e[4]||(e[4]=l=>o.login_alert_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"]),e[27]||(e[27]=u("div",{class:"help"},"当检测到新设备或新IP登录时,发送邮件提醒用户",-1))]),_:1}),t(r,{label:"网站基础URL"},{default:n(()=>[t(C,{modelValue:o.base_url,"onUpdate:modelValue":e[5]||(e[5]=l=>o.base_url=l),placeholder:"例如: https://example.com",disabled:g.value,onBlur:E},null,8,["modelValue","disabled"]),e[28]||(e[28]=u("div",{class:"help"},"用于生成邮件中的验证链接,留空则使用默认配置。",-1))]),_:1})]),_:1}),u("div",el,"最近更新时间:"+_(o.updated_at||"-"),1)]),_:1})),[[j,v.value]]),t(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[u("div",ll,[e[31]||(e[31]=u("h3",{class:"section-title"},"SMTP配置列表",-1)),t(T,{type:"primary",onClick:ge},{default:n(()=>[...e[30]||(e[30]=[p("+ 添加配置",-1)])]),_:1})]),u("div",tl,[K((f(),M(re,{data:R.value,style:{width:"100%"}},{default:n(()=>[t(y,{label:"状态",width:"90"},{default:n(({row:l})=>[t(ue,{type:ne(l).type,effect:"light"},{default:n(()=>[p(_(ne(l).label),1)]),_:2},1032,["type"])]),_:1}),t(y,{prop:"name",label:"名称","min-width":"160"}),t(y,{label:"服务器","min-width":"200"},{default:n(({row:l})=>[p(_(l.host)+":"+_(l.port),1)]),_:1}),t(y,{label:"今日/限额",width:"110"},{default:n(({row:l})=>[p(_(he(l)),1)]),_:1}),t(y,{label:"成功率",width:"100"},{default:n(({row:l})=>[p(_(l.success_rate)+"%",1)]),_:1}),t(y,{label:"操作",width:"120",fixed:"right"},{default:n(({row:l})=>[t(T,{size:"small",onClick:de=>ke(l)},{default:n(()=>[...e[32]||(e[32]=[p("编辑",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[j,O.value]])])]),_:1}),K((f(),M(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[33]||(e[33]=u("h3",{class:"section-title"},"邮件发送统计",-1)),t(me,{items:Ce.value,loading:A.value,"min-width":160},null,8,["items","loading"]),u("div",al,[t(me,{items:Be.value,loading:A.value,"min-width":150},null,8,["items","loading"])]),u("div",sl,"最后更新:"+_(h.value.last_updated||"-"),1)]),_:1})),[[j,A.value]]),t(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[u("div",nl,[e[35]||(e[35]=u("h3",{class:"section-title"},"邮件发送日志",-1)),u("div",ol,[t(ee,{modelValue:F.value,"onUpdate:modelValue":e[6]||(e[6]=l=>F.value=l),style:{width:"140px"},onChange:e[7]||(e[7]=l=>D(1))},{default:n(()=>[t(w,{label:"全部类型",value:""}),t(w,{label:"注册验证",value:"register"}),t(w,{label:"密码重置",value:"reset"}),t(w,{label:"邮箱绑定",value:"bind"}),t(w,{label:"任务完成",value:"task_complete"}),t(w,{label:"安全告警",value:"security_alert"})]),_:1},8,["modelValue"]),t(ee,{modelValue:I.value,"onUpdate:modelValue":e[8]||(e[8]=l=>I.value=l),style:{width:"120px"},onChange:e[9]||(e[9]=l=>D(1))},{default:n(()=>[t(w,{label:"全部状态",value:""}),t(w,{label:"成功",value:"success"}),t(w,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),t(T,{type:"danger",plain:"",onClick:Ue},{default:n(()=>[...e[34]||(e[34]=[p("清理日志",-1)])]),_:1})])]),u("div",il,[K((f(),M(re,{data:X.value,style:{width:"100%"}},{default:n(()=>[t(y,{prop:"created_at",label:"时间",width:"180"}),t(y,{prop:"email_to",label:"收件人","min-width":"180"}),t(y,{label:"来源用户","min-width":"160"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:oe(l)},_(oe(l)),9,ul)]),_:1}),t(y,{label:"类型",width:"120"},{default:n(({row:l})=>[p(_(Pe(l.email_type)),1)]),_:1}),t(y,{label:"主题","min-width":"220"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:l.subject},_(l.subject),9,rl)]),_:1}),t(y,{label:"状态",width:"90"},{default:n(({row:l})=>[t(ue,{type:l.status==="success"?"success":"danger",effect:"light"},{default:n(()=>[p(_(l.status==="success"?"成功":"失败"),1)]),_:2},1032,["type"])]),_:1}),t(y,{label:"错误","min-width":"200"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:l.error_message||""},_(l.error_message||"-"),9,dl)]),_:1})]),_:1},8,["data"])),[[j,W.value]])]),u("div",ml,[t(qe,{"current-page":z.value,"onUpdate:currentPage":e[10]||(e[10]=l=>z.value=l),"page-size":fe,total:Y.value,layout:"prev, pager, next, ->, total",onCurrentChange:D},null,8,["current-page","total"]),u("div",pl,"第 "+_(z.value)+" / "+_(Z.value)+" 页",1)])]),_:1}),t(Ae,{modelValue:S.value,"onUpdate:modelValue":e[25]||(e[25]=l=>S.value=l),title:k.value?"编辑SMTP配置":"添加SMTP配置",width:"min(560px, 92vw)"},{footer:n(()=>[u("div",yl,[t(T,{onClick:we},{default:n(()=>[...e[36]||(e[36]=[p("测试连接",-1)])]),_:1}),k.value&&H.value?(f(),M(T,{key:0,type:"warning",plain:"",onClick:Te},{default:n(()=>[...e[37]||(e[37]=[p("取消主配置",-1)])]),_:1})):P("",!0),k.value&&!H.value?(f(),M(T,{key:1,onClick:Se},{default:n(()=>[...e[38]||(e[38]=[p("设为主配置",-1)])]),_:1})):P("",!0),k.value?(f(),M(T,{key:2,type:"danger",plain:"",onClick:xe},{default:n(()=>[...e[39]||(e[39]=[p("删除配置",-1)])]),_:1})):P("",!0),e[42]||(e[42]=u("div",{class:"spacer"},null,-1)),t(T,{onClick:e[24]||(e[24]=l=>S.value=!1)},{default:n(()=>[...e[40]||(e[40]=[p("取消",-1)])]),_:1}),t(T,{type:"primary",onClick:Ve},{default:n(()=>[...e[41]||(e[41]=[p("保存",-1)])]),_:1})])]),default:n(()=>[t(ie,{"label-width":"120px"},{default:n(()=>[t(r,{label:"名称"},{default:n(()=>[t(C,{modelValue:a.name,"onUpdate:modelValue":e[11]||(e[11]=l=>a.name=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"启用"},{default:n(()=>[t(i,{modelValue:a.enabled,"onUpdate:modelValue":e[12]||(e[12]=l=>a.enabled=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"邮箱模板"},{default:n(()=>[u("div",cl,[t(ee,{modelValue:q.value,"onUpdate:modelValue":e[13]||(e[13]=l=>q.value=l),placeholder:"选择常用邮箱模板",style:{width:"100%"},onChange:ye},{default:n(()=>[(f(),x(te,null,ce(N,l=>t(w,{key:l.key,label:l.label,value:l.key},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),V.value.note||V.value.links&&V.value.links.length?(f(),x("div",fl,[V.value.note?(f(),x("span",_l,_(V.value.note),1)):P("",!0),V.value.links&&V.value.links.length?(f(),x(te,{key:1},[V.value.note?(f(),x("span",bl," · ")):P("",!0),(f(!0),x(te,null,ce(V.value.links,(l,de)=>(f(),x("span",{key:l.url},[t($e,{href:l.url,target:"_blank",type:"primary",underline:!1},{default:n(()=>[p(_(l.label),1)]),_:2},1032,["href"]),de[t(C,{modelValue:a.host,"onUpdate:modelValue":e[14]||(e[14]=l=>a.host=l),placeholder:"smtp.example.com"},null,8,["modelValue"])]),_:1}),t(r,{label:"端口"},{default:n(()=>[t(le,{modelValue:a.port,"onUpdate:modelValue":e[15]||(e[15]=l=>a.port=l),min:1,max:65535},null,8,["modelValue"])]),_:1}),t(r,{label:"用户名"},{default:n(()=>[t(C,{modelValue:a.username,"onUpdate:modelValue":e[16]||(e[16]=l=>a.username=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"密码"},{default:n(()=>[t(C,{modelValue:a.password,"onUpdate:modelValue":e[17]||(e[17]=l=>a.password=l),type:"password","show-password":"",placeholder:be.value},null,8,["modelValue","placeholder"])]),_:1}),t(r,{label:"SSL"},{default:n(()=>[t(i,{modelValue:a.use_ssl,"onUpdate:modelValue":e[18]||(e[18]=l=>a.use_ssl=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"TLS"},{default:n(()=>[t(i,{modelValue:a.use_tls,"onUpdate:modelValue":e[19]||(e[19]=l=>a.use_tls=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"发件人名称"},{default:n(()=>[t(C,{modelValue:a.sender_name,"onUpdate:modelValue":e[20]||(e[20]=l=>a.sender_name=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"发件人邮箱"},{default:n(()=>[t(C,{modelValue:a.sender_email,"onUpdate:modelValue":e[21]||(e[21]=l=>a.sender_email=l),placeholder:"可选"},null,8,["modelValue"])]),_:1}),t(r,{label:"每日限额"},{default:n(()=>[t(le,{modelValue:a.daily_limit,"onUpdate:modelValue":e[22]||(e[22]=l=>a.daily_limit=l),min:0,max:1e6},null,8,["modelValue"])]),_:1}),t(r,{label:"优先级"},{default:n(()=>[t(le,{modelValue:a.priority,"onUpdate:modelValue":e[23]||(e[23]=l=>a.priority=l),min:0,max:1e3},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},Pl=ze(gl,[["__scopeId","data-v-b1cb7390"]]);export{Pl as default}; +import{a as De,c as He,b as Ne,f as Fe,u as Ie}from"./email-CgUCpCe3.js";import{a as U,_ as ze}from"./index-6ynv0Z9Y.js";import{M as me}from"./MetricGrid-kv-nSROj.js";import{E as B,a as d}from"./vendor-element-CIudPaVX.js";import{r as m,S as pe,R as Qe,c as G,o as je,aj as c,ap as Ge,n as x,q as f,t as u,F as K,L as t,D as M,E as n,I as p,J as _,G as P,K as te,a3 as ce}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-DszMq72k.js";async function Ke(){const{data:b}=await U.get("/smtp/configs");return b}async function Oe(b){const{data:v}=await U.post("/smtp/configs",b);return v}async function Re(b,v){const{data:g}=await U.put(`/smtp/configs/${b}`,v);return g}async function Je(b){const{data:v}=await U.delete(`/smtp/configs/${b}`);return v}async function We(b,v){const{data:g}=await U.post(`/smtp/configs/${b}/test`,{email:v});return g}async function Xe(b){const{data:v}=await U.post(`/smtp/configs/${b}/primary`);return v}async function Ye(){const{data:b}=await U.post("/smtp/configs/primary/clear");return b}const Ze={class:"page-stack"},el={class:"help app-muted"},ll={class:"section-head"},tl={class:"table-wrap"},al={class:"sub-stats"},sl={class:"help app-muted"},nl={class:"section-head"},ol={class:"toolbar"},il={class:"table-wrap"},ul=["title"],rl=["title"],dl=["title"],ml={class:"pagination"},pl={class:"page-hint app-muted"},cl={style:{width:"100%"}},fl={key:0,class:"help"},_l={key:0},bl={key:0},vl={key:0},yl={class:"dialog-actions"},fe=15,gl={__name:"EmailPage",setup(b){const v=m(!1),g=m(!1),o=pe({enabled:!1,failover_enabled:!0,register_verify_enabled:!1,login_alert_enabled:!0,task_notify_enabled:!1,base_url:"",updated_at:null});let L=null;async function ae(){v.value=!0;try{const s=await Ne();o.enabled=!!s.enabled,o.failover_enabled=!!s.failover_enabled,o.register_verify_enabled=!!s.register_verify_enabled,o.login_alert_enabled=s.login_alert_enabled===void 0?!0:!!s.login_alert_enabled,o.task_notify_enabled=!!s.task_notify_enabled,o.base_url=s.base_url||"",o.updated_at=s.updated_at||null}catch{}finally{v.value=!1}}async function _e(){if(!v.value){g.value=!0;try{const s=await Ie({enabled:o.enabled,failover_enabled:o.failover_enabled,register_verify_enabled:o.register_verify_enabled,login_alert_enabled:o.login_alert_enabled,task_notify_enabled:o.task_notify_enabled,base_url:(o.base_url||"").trim()});if(!s?.success){d.error(s?.error||"更新失败");return}d.success("邮件设置已更新"),await ae()}catch{}finally{g.value=!1}}}function E(){L&&window.clearTimeout(L),L=window.setTimeout(_e,300)}Qe(()=>{L&&window.clearTimeout(L),L=null});const O=m(!1),R=m([]),S=m(!1),k=m(!1),J=m(!1),H=m(!1),a=pe({id:null,name:"默认配置",enabled:!0,host:"",port:465,username:"",password:"",use_ssl:!0,use_tls:!1,sender_name:"自动化学习",sender_email:"",daily_limit:0,priority:0}),N=[{key:"custom",label:"自定义(手动填写)",defaults:null,note:"适用于其他邮箱/自建SMTP",links:[]},{key:"gmail",label:"Gmail",defaults:{host:"smtp.gmail.com",port:465,use_ssl:!0,use_tls:!1},note:"通常需要开启两步验证并创建应用专用密码(App Password)",links:[{label:"SMTP 设置说明",url:"https://support.google.com/mail/answer/7126229?hl=zh-Hans"},{label:"App Password",url:"https://myaccount.google.com/apppasswords"}]},{key:"qq",label:"QQ 邮箱",defaults:{host:"smtp.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并获取授权码(不是QQ登录密码)",links:[{label:"QQ邮箱 SMTP 帮助",url:"https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256"}]},{key:"163",label:"163 邮箱",defaults:{host:"smtp.163.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱 SMTP 帮助",url:"https://help.mail.163.com/faqDetail.do?code=d7a5dc8471a22b76"}]},{key:"126",label:"126 邮箱",defaults:{host:"smtp.126.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱帮助",url:"https://help.mail.163.com/"}]},{key:"outlook",label:"Outlook/Hotmail",defaults:{host:"smtp-mail.outlook.com",port:587,use_ssl:!1,use_tls:!0},note:"建议使用 TLS 587(部分账号需开启 SMTP AUTH)",links:[{label:"微软 SMTP 设置",url:"https://support.microsoft.com/office/pop-imap-and-smtp-settings-for-outlook-com-d088b0b7-0d38-4f9a-bc5d-509f9e4c6d3d"}]},{key:"office365",label:"Microsoft 365/Exchange",defaults:{host:"smtp.office365.com",port:587,use_ssl:!1,use_tls:!0},note:"企业邮箱常用配置(需启用 SMTP AUTH)",links:[{label:"微软官方说明",url:"https://learn.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission"}]},{key:"icloud",label:"iCloud",defaults:{host:"smtp.mail.me.com",port:587,use_ssl:!1,use_tls:!0},note:"需要在 Apple ID 中生成“App 专用密码”",links:[{label:"Apple 邮件服务器设置",url:"https://support.apple.com/zh-cn/HT202304"}]},{key:"tencent_exmail",label:"腾讯企业邮箱",defaults:{host:"smtp.exmail.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"腾讯企业邮箱帮助",url:"https://service.exmail.qq.com/cgi-bin/help?subtype=1&id=23&no=1001068"}]},{key:"aliyun_exmail",label:"阿里企业邮箱",defaults:{host:"smtp.mxhichina.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"阿里云文档",url:"https://help.aliyun.com/document_detail/50652.html"}]}],q=m("custom"),V=G(()=>N.find(s=>s.key===q.value)||N[0]),be=G(()=>k.value&&J.value?"留空保持不变":"SMTP密码或授权码");function ve(s){const e=String(s?.host||"").trim().toLowerCase();return e&&{"smtp.gmail.com":"gmail","smtp.qq.com":"qq","smtp.163.com":"163","smtp.126.com":"126","smtp-mail.outlook.com":"outlook","smtp.office365.com":"office365","smtp.mail.me.com":"icloud","smtp.exmail.qq.com":"tencent_exmail","smtp.mxhichina.com":"aliyun_exmail"}[e]||"custom"}function ye(s){const e=N.find(i=>i.key===s);!e||!e.defaults||(a.host=e.defaults.host,a.port=e.defaults.port,a.use_ssl=e.defaults.use_ssl,a.use_tls=e.defaults.use_tls)}function se(){a.id=null,a.name="默认配置",a.enabled=!0,a.host="",a.port=465,a.username="",a.password="",a.use_ssl=!0,a.use_tls=!1,a.sender_name="自动化学习",a.sender_email="",a.daily_limit=0,a.priority=0,J.value=!1,H.value=!1,q.value="custom"}async function $(){O.value=!0;try{R.value=await Ke()}catch{R.value=[]}finally{O.value=!1}}function ge(){k.value=!1,se(),q.value="custom",S.value=!0}function ke(s){k.value=!0,se(),a.id=s.id,a.name=s.name||"默认配置",a.enabled=!!s.enabled,a.host=s.host||"",a.port=s.port||465,a.username=s.username||"",a.password="",a.use_ssl=!!s.use_ssl,a.use_tls=!!s.use_tls,a.sender_name=s.sender_name||"自动化学习",a.sender_email=s.sender_email||"",a.daily_limit=s.daily_limit??0,a.priority=s.priority??0,J.value=!!s.has_password,H.value=!!s.is_primary,q.value=ve(s),S.value=!0}function ne(s){return s.is_primary?{label:"主",type:"warning"}:s.enabled?{label:"备用",type:"success"}:{label:"禁用",type:"info"}}function he(s){return s.daily_limit&&s.daily_limit>0?`${s.daily_sent}/${s.daily_limit}`:`${s.daily_sent}/∞`}async function Ve(){if(!a.host.trim()){d.error("SMTP服务器地址不能为空");return}if(!a.username.trim()){d.error("SMTP用户名不能为空");return}const s={name:a.name.trim()||"默认配置",enabled:!!a.enabled,priority:Number(a.priority)||0,host:a.host.trim(),port:Number(a.port)||465,username:a.username.trim(),use_ssl:!!a.use_ssl,use_tls:!!a.use_tls,sender_name:(a.sender_name||"").trim(),sender_email:(a.sender_email||"").trim(),daily_limit:Number(a.daily_limit)||0};try{if(k.value){const e={...s};a.password&&(e.password=a.password);const i=await Re(a.id,e);if(!i?.success){d.error(i?.error||"更新失败");return}d.success("保存成功")}else{const e={...s};a.password&&(e.password=a.password);const i=await Oe(e);if(!i?.success){d.error(i?.error||"创建失败");return}d.success("创建成功")}S.value=!1,await $()}catch{}}async function we(){if(!k.value||!a.id){d.error("请先保存配置后再测试");return}let s;try{const e=await B.prompt("请输入测试收件邮箱","测试连接",{inputPlaceholder:"name@example.com",confirmButtonText:"发送测试邮件",cancelButtonText:"取消",inputValidator:i=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(i||"").trim()),inputErrorMessage:"邮箱格式不正确"});s=String(e.value||"").trim()}catch{return}try{const e=await We(a.id,s);e?.success?(d.success("测试成功,邮件已发送"),await $()):await B.alert(e?.error||"测试失败","测试失败",{confirmButtonText:"知道了"})}catch{}}async function Se(){if(!(!k.value||!a.id)){try{await B.confirm("确定将该配置设为主配置吗?","设为主配置",{confirmButtonText:"设为主配置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const s=await Xe(a.id);if(!s?.success){d.error(s?.error||"设置失败");return}d.success("已设为主配置"),S.value=!1,await $()}catch{}}}async function Te(){if(k.value){try{await B.confirm("确定取消主配置吗?取消后将按优先级选择可用SMTP。","取消主配置",{confirmButtonText:"取消主配置",cancelButtonText:"保留",type:"warning"})}catch{return}try{const s=await Ye();if(!s?.success){d.error(s?.error||"操作失败");return}d.success("已取消主配置"),S.value=!1,await $()}catch{}}}async function xe(){if(!(!k.value||!a.id)){try{await B.confirm("确定删除该SMTP配置吗?此操作不可恢复。","删除配置",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const s=await Je(a.id);if(!s?.success){d.error(s?.error||"删除失败");return}d.success("已删除"),S.value=!1,await $()}catch{}}}const A=m(!1),h=m({}),W=m(!1),F=m(""),I=m(""),z=m(1),X=m([]),Y=m(0),Z=m(1);function Pe(s){return{register:"注册验证",reset:"密码重置",bind:"邮箱绑定",task_complete:"任务完成",security_alert:"安全告警"}[s]||s}function oe(s){return s?.username&&s?.user_id?`${s.username} (#${s.user_id})`:s?.user_id?`用户#${s.user_id}`:"系统"}const Ce=G(()=>[{key:"total_sent",label:"总发送",value:h.value?.total_sent||0,tone:"blue"},{key:"total_success",label:"成功",value:h.value?.total_success||0,tone:"green"},{key:"total_failed",label:"失败",value:h.value?.total_failed||0,tone:"red"},{key:"success_rate",label:"成功率",value:`${h.value?.success_rate||0}%`,tone:"purple"}]),Be=G(()=>[{key:"register_sent",label:"注册验证",value:h.value?.register_sent||0,tone:"cyan"},{key:"reset_sent",label:"密码重置",value:h.value?.reset_sent||0,tone:"orange"},{key:"bind_sent",label:"邮箱绑定",value:h.value?.bind_sent||0,tone:"purple"},{key:"task_complete_sent",label:"任务完成",value:h.value?.task_complete_sent||0,tone:"green"}]);async function Me(){A.value=!0;try{h.value=await Fe()}catch{h.value={}}finally{A.value=!1}}async function D(s=1){W.value=!0;try{const e={page:s,page_size:fe};F.value&&(e.type=F.value),I.value&&(e.status=I.value);const i=await De(e);X.value=i?.logs||[],Y.value=i?.total||0,z.value=i?.page||s,Z.value=i?.total_pages||1}catch{X.value=[],Y.value=0,Z.value=1}finally{W.value=!1}}async function Ue(){let s;try{const e=await B.prompt("请输入保留天数(将删除该天数之前的日志)","清理日志",{inputValue:"30",confirmButtonText:"清理",cancelButtonText:"取消",inputValidator:i=>{const r=parseInt(String(i),10);return Number.isFinite(r)&&r>=7},inputErrorMessage:"天数必须大于等于7"});s=parseInt(String(e.value),10)}catch{return}try{await B.confirm(`确定删除 ${s} 天之前的邮件日志吗?`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await He(s);if(!e?.success){d.error(e?.error||"清理失败");return}d.success(`已清理 ${e.deleted} 条日志`),await D(1)}catch{}}async function Le(){await Promise.all([ae(),$(),Me(),D(1)])}return je(Le),(s,e)=>{const i=c("el-switch"),r=c("el-form-item"),Ee=c("el-divider"),C=c("el-input"),ie=c("el-form"),Q=c("el-card"),T=c("el-button"),ue=c("el-tag"),y=c("el-table-column"),re=c("el-table"),w=c("el-option"),ee=c("el-select"),qe=c("el-pagination"),$e=c("el-link"),le=c("el-input-number"),Ae=c("el-dialog"),j=Ge("loading");return f(),x("div",Ze,[e[43]||(e[43]=u("div",{class:"app-page-title"},[u("h2",null,"邮件配置")],-1)),K((f(),M(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[29]||(e[29]=u("h3",{class:"section-title"},"全局设置",-1)),t(ie,{"label-width":"140px"},{default:n(()=>[t(r,{label:"启用邮件功能"},{default:n(()=>[t(i,{modelValue:o.enabled,"onUpdate:modelValue":e[0]||(e[0]=l=>o.enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"启用故障转移"},{default:n(()=>[t(i,{modelValue:o.failover_enabled,"onUpdate:modelValue":e[1]||(e[1]=l=>o.failover_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"启用注册邮箱验证"},{default:n(()=>[t(i,{modelValue:o.register_verify_enabled,"onUpdate:modelValue":e[2]||(e[2]=l=>o.register_verify_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(Ee,{"content-position":"left"},{default:n(()=>[...e[26]||(e[26]=[p("通知设置",-1)])]),_:1}),t(r,{label:"启用任务完成通知"},{default:n(()=>[t(i,{modelValue:o.task_notify_enabled,"onUpdate:modelValue":e[3]||(e[3]=l=>o.task_notify_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"新设备登录提醒"},{default:n(()=>[t(i,{modelValue:o.login_alert_enabled,"onUpdate:modelValue":e[4]||(e[4]=l=>o.login_alert_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"]),e[27]||(e[27]=u("div",{class:"help"},"当检测到新设备或新IP登录时,发送邮件提醒用户",-1))]),_:1}),t(r,{label:"网站基础URL"},{default:n(()=>[t(C,{modelValue:o.base_url,"onUpdate:modelValue":e[5]||(e[5]=l=>o.base_url=l),placeholder:"例如: https://example.com",disabled:g.value,onBlur:E},null,8,["modelValue","disabled"]),e[28]||(e[28]=u("div",{class:"help"},"用于生成邮件中的验证链接,留空则使用默认配置。",-1))]),_:1})]),_:1}),u("div",el,"最近更新时间:"+_(o.updated_at||"-"),1)]),_:1})),[[j,v.value]]),t(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[u("div",ll,[e[31]||(e[31]=u("h3",{class:"section-title"},"SMTP配置列表",-1)),t(T,{type:"primary",onClick:ge},{default:n(()=>[...e[30]||(e[30]=[p("+ 添加配置",-1)])]),_:1})]),u("div",tl,[K((f(),M(re,{data:R.value,style:{width:"100%"}},{default:n(()=>[t(y,{label:"状态",width:"90"},{default:n(({row:l})=>[t(ue,{type:ne(l).type,effect:"light"},{default:n(()=>[p(_(ne(l).label),1)]),_:2},1032,["type"])]),_:1}),t(y,{prop:"name",label:"名称","min-width":"160"}),t(y,{label:"服务器","min-width":"200"},{default:n(({row:l})=>[p(_(l.host)+":"+_(l.port),1)]),_:1}),t(y,{label:"今日/限额",width:"110"},{default:n(({row:l})=>[p(_(he(l)),1)]),_:1}),t(y,{label:"成功率",width:"100"},{default:n(({row:l})=>[p(_(l.success_rate)+"%",1)]),_:1}),t(y,{label:"操作",width:"120",fixed:"right"},{default:n(({row:l})=>[t(T,{size:"small",onClick:de=>ke(l)},{default:n(()=>[...e[32]||(e[32]=[p("编辑",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[j,O.value]])])]),_:1}),K((f(),M(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[33]||(e[33]=u("h3",{class:"section-title"},"邮件发送统计",-1)),t(me,{items:Ce.value,loading:A.value,"min-width":160},null,8,["items","loading"]),u("div",al,[t(me,{items:Be.value,loading:A.value,"min-width":150},null,8,["items","loading"])]),u("div",sl,"最后更新:"+_(h.value.last_updated||"-"),1)]),_:1})),[[j,A.value]]),t(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[u("div",nl,[e[35]||(e[35]=u("h3",{class:"section-title"},"邮件发送日志",-1)),u("div",ol,[t(ee,{modelValue:F.value,"onUpdate:modelValue":e[6]||(e[6]=l=>F.value=l),style:{width:"140px"},onChange:e[7]||(e[7]=l=>D(1))},{default:n(()=>[t(w,{label:"全部类型",value:""}),t(w,{label:"注册验证",value:"register"}),t(w,{label:"密码重置",value:"reset"}),t(w,{label:"邮箱绑定",value:"bind"}),t(w,{label:"任务完成",value:"task_complete"}),t(w,{label:"安全告警",value:"security_alert"})]),_:1},8,["modelValue"]),t(ee,{modelValue:I.value,"onUpdate:modelValue":e[8]||(e[8]=l=>I.value=l),style:{width:"120px"},onChange:e[9]||(e[9]=l=>D(1))},{default:n(()=>[t(w,{label:"全部状态",value:""}),t(w,{label:"成功",value:"success"}),t(w,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),t(T,{type:"danger",plain:"",onClick:Ue},{default:n(()=>[...e[34]||(e[34]=[p("清理日志",-1)])]),_:1})])]),u("div",il,[K((f(),M(re,{data:X.value,style:{width:"100%"}},{default:n(()=>[t(y,{prop:"created_at",label:"时间",width:"180"}),t(y,{prop:"email_to",label:"收件人","min-width":"180"}),t(y,{label:"来源用户","min-width":"160"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:oe(l)},_(oe(l)),9,ul)]),_:1}),t(y,{label:"类型",width:"120"},{default:n(({row:l})=>[p(_(Pe(l.email_type)),1)]),_:1}),t(y,{label:"主题","min-width":"220"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:l.subject},_(l.subject),9,rl)]),_:1}),t(y,{label:"状态",width:"90"},{default:n(({row:l})=>[t(ue,{type:l.status==="success"?"success":"danger",effect:"light"},{default:n(()=>[p(_(l.status==="success"?"成功":"失败"),1)]),_:2},1032,["type"])]),_:1}),t(y,{label:"错误","min-width":"200"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:l.error_message||""},_(l.error_message||"-"),9,dl)]),_:1})]),_:1},8,["data"])),[[j,W.value]])]),u("div",ml,[t(qe,{"current-page":z.value,"onUpdate:currentPage":e[10]||(e[10]=l=>z.value=l),"page-size":fe,total:Y.value,layout:"prev, pager, next, ->, total",onCurrentChange:D},null,8,["current-page","total"]),u("div",pl,"第 "+_(z.value)+" / "+_(Z.value)+" 页",1)])]),_:1}),t(Ae,{modelValue:S.value,"onUpdate:modelValue":e[25]||(e[25]=l=>S.value=l),title:k.value?"编辑SMTP配置":"添加SMTP配置",width:"min(560px, 92vw)"},{footer:n(()=>[u("div",yl,[t(T,{onClick:we},{default:n(()=>[...e[36]||(e[36]=[p("测试连接",-1)])]),_:1}),k.value&&H.value?(f(),M(T,{key:0,type:"warning",plain:"",onClick:Te},{default:n(()=>[...e[37]||(e[37]=[p("取消主配置",-1)])]),_:1})):P("",!0),k.value&&!H.value?(f(),M(T,{key:1,onClick:Se},{default:n(()=>[...e[38]||(e[38]=[p("设为主配置",-1)])]),_:1})):P("",!0),k.value?(f(),M(T,{key:2,type:"danger",plain:"",onClick:xe},{default:n(()=>[...e[39]||(e[39]=[p("删除配置",-1)])]),_:1})):P("",!0),e[42]||(e[42]=u("div",{class:"spacer"},null,-1)),t(T,{onClick:e[24]||(e[24]=l=>S.value=!1)},{default:n(()=>[...e[40]||(e[40]=[p("取消",-1)])]),_:1}),t(T,{type:"primary",onClick:Ve},{default:n(()=>[...e[41]||(e[41]=[p("保存",-1)])]),_:1})])]),default:n(()=>[t(ie,{"label-width":"120px"},{default:n(()=>[t(r,{label:"名称"},{default:n(()=>[t(C,{modelValue:a.name,"onUpdate:modelValue":e[11]||(e[11]=l=>a.name=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"启用"},{default:n(()=>[t(i,{modelValue:a.enabled,"onUpdate:modelValue":e[12]||(e[12]=l=>a.enabled=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"邮箱模板"},{default:n(()=>[u("div",cl,[t(ee,{modelValue:q.value,"onUpdate:modelValue":e[13]||(e[13]=l=>q.value=l),placeholder:"选择常用邮箱模板",style:{width:"100%"},onChange:ye},{default:n(()=>[(f(),x(te,null,ce(N,l=>t(w,{key:l.key,label:l.label,value:l.key},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),V.value.note||V.value.links&&V.value.links.length?(f(),x("div",fl,[V.value.note?(f(),x("span",_l,_(V.value.note),1)):P("",!0),V.value.links&&V.value.links.length?(f(),x(te,{key:1},[V.value.note?(f(),x("span",bl," · ")):P("",!0),(f(!0),x(te,null,ce(V.value.links,(l,de)=>(f(),x("span",{key:l.url},[t($e,{href:l.url,target:"_blank",type:"primary",underline:!1},{default:n(()=>[p(_(l.label),1)]),_:2},1032,["href"]),de[t(C,{modelValue:a.host,"onUpdate:modelValue":e[14]||(e[14]=l=>a.host=l),placeholder:"smtp.example.com"},null,8,["modelValue"])]),_:1}),t(r,{label:"端口"},{default:n(()=>[t(le,{modelValue:a.port,"onUpdate:modelValue":e[15]||(e[15]=l=>a.port=l),min:1,max:65535},null,8,["modelValue"])]),_:1}),t(r,{label:"用户名"},{default:n(()=>[t(C,{modelValue:a.username,"onUpdate:modelValue":e[16]||(e[16]=l=>a.username=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"密码"},{default:n(()=>[t(C,{modelValue:a.password,"onUpdate:modelValue":e[17]||(e[17]=l=>a.password=l),type:"password","show-password":"",placeholder:be.value},null,8,["modelValue","placeholder"])]),_:1}),t(r,{label:"SSL"},{default:n(()=>[t(i,{modelValue:a.use_ssl,"onUpdate:modelValue":e[18]||(e[18]=l=>a.use_ssl=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"TLS"},{default:n(()=>[t(i,{modelValue:a.use_tls,"onUpdate:modelValue":e[19]||(e[19]=l=>a.use_tls=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"发件人名称"},{default:n(()=>[t(C,{modelValue:a.sender_name,"onUpdate:modelValue":e[20]||(e[20]=l=>a.sender_name=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"发件人邮箱"},{default:n(()=>[t(C,{modelValue:a.sender_email,"onUpdate:modelValue":e[21]||(e[21]=l=>a.sender_email=l),placeholder:"可选"},null,8,["modelValue"])]),_:1}),t(r,{label:"每日限额"},{default:n(()=>[t(le,{modelValue:a.daily_limit,"onUpdate:modelValue":e[22]||(e[22]=l=>a.daily_limit=l),min:0,max:1e6},null,8,["modelValue"])]),_:1}),t(r,{label:"优先级"},{default:n(()=>[t(le,{modelValue:a.priority,"onUpdate:modelValue":e[23]||(e[23]=l=>a.priority=l),min:0,max:1e3},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},Pl=ze(gl,[["__scopeId","data-v-b1cb7390"]]);export{Pl as default}; diff --git a/static/admin/assets/FeedbacksPage-DrMVqBKf.js b/static/admin/assets/FeedbacksPage-CG9FZytm.js similarity index 95% rename from static/admin/assets/FeedbacksPage-DrMVqBKf.js rename to static/admin/assets/FeedbacksPage-CG9FZytm.js index e7e2607..bb67710 100644 --- a/static/admin/assets/FeedbacksPage-DrMVqBKf.js +++ b/static/admin/assets/FeedbacksPage-CG9FZytm.js @@ -1 +1 @@ -import{_ as $,b as j,r as G,d as L,e as q}from"./index-DOvMEmc8.js";import{M as J}from"./MetricGrid-C3Xjc9mZ.js";import{E as w,a as k}from"./vendor-element-B5S5pUKo.js";import{i as K,r as f,c as O,o as R,aj as i,ap as U,n as x,q as v,t as s,L as t,E as l,K as F,a3 as A,J as d,F as H,D as Q,I as p,G as W}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";const X={class:"page-stack"},Y={class:"app-page-title"},Z={class:"toolbar"},ee={class:"section-head"},te={class:"app-muted"},ae={class:"table-wrap"},le={class:"ellipsis"},ne={class:"ellipsis"},se={class:"ellipsis"},oe={class:"actions"},ie={__name:"FeedbacksPage",setup(ce){const T=K("refreshNavBadges",null),u=f(!1),b=f(""),c=f({total:0,pending:0,replied:0,closed:0}),_=f([]),V=[{label:"全部状态",value:""},{label:"待处理",value:"pending"},{label:"已回复",value:"replied"},{label:"已关闭",value:"closed"}],M=O(()=>[{key:"total",label:"总反馈",value:c.value.total||0,tone:"blue"},{key:"pending",label:"待处理",value:c.value.pending||0,tone:"orange"},{key:"replied",label:"已回复",value:c.value.replied||0,tone:"green"},{key:"closed",label:"已关闭",value:c.value.closed||0,tone:"purple"}]);function B(n){return n==="pending"?{label:"待处理",type:"warning"}:n==="replied"?{label:"已回复",type:"success"}:n==="closed"?{label:"已关闭",type:"info"}:{label:n||"-",type:"info"}}async function r(){u.value=!0;try{const n=await j(b.value);_.value=n?.feedbacks||[],c.value=n?.stats||{total:0,pending:0,replied:0,closed:0}}catch{_.value=[],c.value={total:0,pending:0,replied:0,closed:0}}finally{u.value=!1}await T?.({pendingFeedbacks:c.value.pending||0})}async function D(n){let a;try{a=(await w.prompt("请输入回复内容","回复反馈",{inputType:"textarea",inputPlaceholder:"回复内容",confirmButtonText:"提交",cancelButtonText:"取消",inputValidator:g=>!!String(g||"").trim(),inputErrorMessage:"回复内容不能为空"})).value}catch{return}try{const m=await G(n.id,String(a||"").trim());k.success(m?.message||"回复成功"),await r()}catch{}}async function E(n){try{await w.confirm("确定要关闭这个反馈吗?","关闭反馈",{confirmButtonText:"关闭",cancelButtonText:"取消",type:"warning"})}catch{return}try{const a=await L(n.id);k.success(a?.message||"反馈已关闭"),await r()}catch{}}async function N(n){try{await w.confirm("确定要删除这个反馈吗?此操作不可恢复!","删除反馈",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const a=await q(n.id);k.success(a?.message||"反馈已删除"),await r()}catch{}}return R(r),(n,a)=>{const m=i("el-option"),g=i("el-select"),o=i("el-table-column"),y=i("el-tooltip"),I=i("el-tag"),h=i("el-button"),z=i("el-table"),P=i("el-card"),S=U("loading");return v(),x("div",X,[s("div",Y,[a[1]||(a[1]=s("h2",null,"反馈管理",-1)),s("div",Z,[t(g,{modelValue:b.value,"onUpdate:modelValue":a[0]||(a[0]=e=>b.value=e),style:{width:"160px"},onChange:r},{default:l(()=>[(v(),x(F,null,A(V,e=>t(m,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"])])]),t(J,{items:M.value,loading:u.value,"min-width":165},null,8,["items","loading"]),t(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[s("div",ee,[a[2]||(a[2]=s("h3",{class:"section-title"},"反馈列表",-1)),s("div",te,"共 "+d(_.value.length)+" 条(当前筛选)",1)]),s("div",ae,[H((v(),Q(z,{data:_.value,style:{width:"100%"}},{default:l(()=>[t(o,{prop:"id",label:"ID",width:"80"}),t(o,{prop:"username",label:"用户",width:"140"}),t(o,{label:"标题","min-width":"180"},{default:l(({row:e})=>[t(y,{content:e.title,placement:"top","show-after":300},{default:l(()=>[s("span",le,d(e.title),1)]),_:2},1032,["content"])]),_:1}),t(o,{label:"描述","min-width":"220"},{default:l(({row:e})=>[t(y,{content:e.description,placement:"top","show-after":300},{default:l(()=>[s("span",ne,d(e.description),1)]),_:2},1032,["content"])]),_:1}),t(o,{prop:"contact",label:"联系方式","min-width":"160"},{default:l(({row:e})=>[p(d(e.contact||"-"),1)]),_:1}),t(o,{label:"状态",width:"110"},{default:l(({row:e})=>[t(I,{type:B(e.status).type,effect:"light"},{default:l(()=>[p(d(B(e.status).label),1)]),_:2},1032,["type"])]),_:1}),t(o,{prop:"created_at",label:"提交时间",width:"180"}),t(o,{label:"回复","min-width":"180"},{default:l(({row:e})=>[t(y,{content:e.admin_reply||"",placement:"top","show-after":300},{default:l(()=>[s("span",se,d(e.admin_reply||"-"),1)]),_:2},1032,["content"])]),_:1}),t(o,{label:"操作",width:"220",fixed:"right"},{default:l(({row:e})=>[s("div",oe,[e.status!=="closed"?(v(),x(F,{key:0},[t(h,{type:"primary",size:"small",onClick:C=>D(e)},{default:l(()=>[...a[3]||(a[3]=[p("回复",-1)])]),_:1},8,["onClick"]),t(h,{size:"small",onClick:C=>E(e)},{default:l(()=>[...a[4]||(a[4]=[p("关闭",-1)])]),_:1},8,["onClick"])],64)):W("",!0),t(h,{type:"danger",size:"small",onClick:C=>N(e)},{default:l(()=>[...a[5]||(a[5]=[p("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[S,u.value]])])]),_:1})])}}},fe=$(ie,[["__scopeId","data-v-2e7ce230"]]);export{fe as default}; +import{_ as $,b as j,r as G,d as L,e as q}from"./index-6ynv0Z9Y.js";import{M as J}from"./MetricGrid-kv-nSROj.js";import{E as w,a as k}from"./vendor-element-CIudPaVX.js";import{i as K,r as f,c as O,o as R,aj as i,ap as U,n as x,q as v,t as s,L as t,E as l,K as F,a3 as A,J as d,F as H,D as Q,I as p,G as W}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-DszMq72k.js";const X={class:"page-stack"},Y={class:"app-page-title"},Z={class:"toolbar"},ee={class:"section-head"},te={class:"app-muted"},ae={class:"table-wrap"},le={class:"ellipsis"},ne={class:"ellipsis"},se={class:"ellipsis"},oe={class:"actions"},ie={__name:"FeedbacksPage",setup(ce){const T=K("refreshNavBadges",null),u=f(!1),b=f(""),c=f({total:0,pending:0,replied:0,closed:0}),_=f([]),V=[{label:"全部状态",value:""},{label:"待处理",value:"pending"},{label:"已回复",value:"replied"},{label:"已关闭",value:"closed"}],M=O(()=>[{key:"total",label:"总反馈",value:c.value.total||0,tone:"blue"},{key:"pending",label:"待处理",value:c.value.pending||0,tone:"orange"},{key:"replied",label:"已回复",value:c.value.replied||0,tone:"green"},{key:"closed",label:"已关闭",value:c.value.closed||0,tone:"purple"}]);function B(n){return n==="pending"?{label:"待处理",type:"warning"}:n==="replied"?{label:"已回复",type:"success"}:n==="closed"?{label:"已关闭",type:"info"}:{label:n||"-",type:"info"}}async function r(){u.value=!0;try{const n=await j(b.value);_.value=n?.feedbacks||[],c.value=n?.stats||{total:0,pending:0,replied:0,closed:0}}catch{_.value=[],c.value={total:0,pending:0,replied:0,closed:0}}finally{u.value=!1}await T?.({pendingFeedbacks:c.value.pending||0})}async function D(n){let a;try{a=(await w.prompt("请输入回复内容","回复反馈",{inputType:"textarea",inputPlaceholder:"回复内容",confirmButtonText:"提交",cancelButtonText:"取消",inputValidator:g=>!!String(g||"").trim(),inputErrorMessage:"回复内容不能为空"})).value}catch{return}try{const m=await G(n.id,String(a||"").trim());k.success(m?.message||"回复成功"),await r()}catch{}}async function E(n){try{await w.confirm("确定要关闭这个反馈吗?","关闭反馈",{confirmButtonText:"关闭",cancelButtonText:"取消",type:"warning"})}catch{return}try{const a=await L(n.id);k.success(a?.message||"反馈已关闭"),await r()}catch{}}async function N(n){try{await w.confirm("确定要删除这个反馈吗?此操作不可恢复!","删除反馈",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const a=await q(n.id);k.success(a?.message||"反馈已删除"),await r()}catch{}}return R(r),(n,a)=>{const m=i("el-option"),g=i("el-select"),o=i("el-table-column"),y=i("el-tooltip"),I=i("el-tag"),h=i("el-button"),z=i("el-table"),P=i("el-card"),S=U("loading");return v(),x("div",X,[s("div",Y,[a[1]||(a[1]=s("h2",null,"反馈管理",-1)),s("div",Z,[t(g,{modelValue:b.value,"onUpdate:modelValue":a[0]||(a[0]=e=>b.value=e),style:{width:"160px"},onChange:r},{default:l(()=>[(v(),x(F,null,A(V,e=>t(m,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"])])]),t(J,{items:M.value,loading:u.value,"min-width":165},null,8,["items","loading"]),t(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[s("div",ee,[a[2]||(a[2]=s("h3",{class:"section-title"},"反馈列表",-1)),s("div",te,"共 "+d(_.value.length)+" 条(当前筛选)",1)]),s("div",ae,[H((v(),Q(z,{data:_.value,style:{width:"100%"}},{default:l(()=>[t(o,{prop:"id",label:"ID",width:"80"}),t(o,{prop:"username",label:"用户",width:"140"}),t(o,{label:"标题","min-width":"180"},{default:l(({row:e})=>[t(y,{content:e.title,placement:"top","show-after":300},{default:l(()=>[s("span",le,d(e.title),1)]),_:2},1032,["content"])]),_:1}),t(o,{label:"描述","min-width":"220"},{default:l(({row:e})=>[t(y,{content:e.description,placement:"top","show-after":300},{default:l(()=>[s("span",ne,d(e.description),1)]),_:2},1032,["content"])]),_:1}),t(o,{prop:"contact",label:"联系方式","min-width":"160"},{default:l(({row:e})=>[p(d(e.contact||"-"),1)]),_:1}),t(o,{label:"状态",width:"110"},{default:l(({row:e})=>[t(I,{type:B(e.status).type,effect:"light"},{default:l(()=>[p(d(B(e.status).label),1)]),_:2},1032,["type"])]),_:1}),t(o,{prop:"created_at",label:"提交时间",width:"180"}),t(o,{label:"回复","min-width":"180"},{default:l(({row:e})=>[t(y,{content:e.admin_reply||"",placement:"top","show-after":300},{default:l(()=>[s("span",se,d(e.admin_reply||"-"),1)]),_:2},1032,["content"])]),_:1}),t(o,{label:"操作",width:"220",fixed:"right"},{default:l(({row:e})=>[s("div",oe,[e.status!=="closed"?(v(),x(F,{key:0},[t(h,{type:"primary",size:"small",onClick:C=>D(e)},{default:l(()=>[...a[3]||(a[3]=[p("回复",-1)])]),_:1},8,["onClick"]),t(h,{size:"small",onClick:C=>E(e)},{default:l(()=>[...a[4]||(a[4]=[p("关闭",-1)])]),_:1},8,["onClick"])],64)):W("",!0),t(h,{type:"danger",size:"small",onClick:C=>N(e)},{default:l(()=>[...a[5]||(a[5]=[p("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[S,u.value]])])]),_:1})])}}},fe=$(ie,[["__scopeId","data-v-2e7ce230"]]);export{fe as default}; diff --git a/static/admin/assets/LogsPage-Cy6Q0ave.js b/static/admin/assets/LogsPage-Ct-BSxV6.js similarity index 96% rename from static/admin/assets/LogsPage-Cy6Q0ave.js rename to static/admin/assets/LogsPage-Ct-BSxV6.js index 46e87ec..d6e4336 100644 --- a/static/admin/assets/LogsPage-Cy6Q0ave.js +++ b/static/admin/assets/LogsPage-Ct-BSxV6.js @@ -1 +1 @@ -import{f as K}from"./users-DzDcz9C_.js";import{g as G,h as H}from"./tasks-B7oNpIBD.js";import{_ as Q}from"./index-DOvMEmc8.js";import{E as N,a as X}from"./vendor-element-B5S5pUKo.js";import{r as u,c as Z,o as ee,aj as r,ap as te,n as P,q as b,t as f,L as t,E as l,K as ae,a3 as le,D as F,I as m,F as oe,J as d}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";function ne(p){return String(p||"").trim()}function se(p){return!p.startsWith("user_scheduled")||!p.includes(":")?"":p.split(":",2)[1]||""}function ue(p){const s=ne(p);if(!s||s==="manual")return{group:"manual",label:"手动",type:"success",tooltip:""};if(s==="scheduled")return{group:"scheduled",label:"定时任务",type:"primary",tooltip:"系统定时"};if(s.startsWith("user_scheduled")){const i=se(s),v=String(i||"").replace(/^batch_/,"");return{group:"scheduled",label:"定时任务",type:"primary",tooltip:v?`用户定时批次:${v}`:"用户定时"}}return{group:"manual",label:"手动",type:"success",tooltip:{batch:"手动批量",manual_screenshot:"手动截图",immediate:"立即执行",resumed:"断点恢复"}[s]||s}}const re={class:"page-stack"},ie={class:"filters"},ce={class:"table-wrap"},de={class:"ellipsis"},pe={class:"pagination"},me={class:"page-hint app-muted"},B=20,fe={__name:"LogsPage",setup(p){const s=u(!1),S=u([]),y=u(0),i=u(1),v=u(!1),T=u([]),h=u(""),w=u(""),V=u(""),x=u(""),k=u(""),$=Z(()=>Math.max(1,Math.ceil((y.value||0)/B)));function Y(o){if(o==null)return"-";const e=Number(o);return Number.isFinite(e)?e<60?`${e}秒`:`${Math.floor(e/60)}分${e%60}秒`:"-"}function _(o){const e=ue(o);return{key:e.group,label:e.label,type:e.type,tooltip:e.tooltip}}function I(o){return o==="success"?{label:"成功",type:"success"}:o==="failed"?{label:"失败",type:"danger"}:{label:o||"-",type:"info"}}async function z(){v.value=!0;try{const o=await K();T.value=(o||[]).map(e=>({id:e.id,username:e.username}))}catch{T.value=[]}finally{v.value=!1}}async function M(){s.value=!0;try{const o=(i.value-1)*B,e={limit:B,offset:o};h.value&&(e.date=h.value),w.value&&(e.status=w.value),V.value&&(e.source=V.value),x.value&&(e.user_id=x.value),k.value&&(e.account=k.value);const g=await G(e);S.value=g?.logs||[],y.value=g?.total||0}catch{S.value=[],y.value=0}finally{s.value=!1}}function O(){i.value=1,M()}function j(){h.value="",w.value="",V.value="",x.value="",k.value="",i.value=1,M()}async function R(){let o;try{const e=await N.prompt("请输入要清理多少天前的日志(默认30天)","清理旧日志",{inputValue:"30",confirmButtonText:"下一步",cancelButtonText:"取消",inputValidator:g=>{const n=parseInt(String(g),10);return Number.isFinite(n)&&n>=1},inputErrorMessage:"请输入有效的天数(大于0的整数)"});o=parseInt(String(e.value),10)}catch{return}try{await N.confirm(`确定要删除 ${o} 天前的所有日志吗?此操作不可恢复!`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await H(o);X.success(e?.message||"清理成功"),i.value=1,await M()}catch{}}return ee(async()=>{await z(),await M()}),(o,e)=>{const g=r("el-date-picker"),n=r("el-option"),U=r("el-select"),W=r("el-input"),C=r("el-button"),L=r("el-card"),c=r("el-table-column"),D=r("el-tag"),E=r("el-tooltip"),q=r("el-table"),A=r("el-pagination"),J=te("loading");return b(),P("div",re,[e[9]||(e[9]=f("div",{class:"app-page-title"},[f("h2",null,"任务日志")],-1)),t(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[f("div",ie,[t(g,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),type:"date","value-format":"YYYY-MM-DD",placeholder:"日期",style:{width:"150px"}},null,8,["modelValue"]),t(U,{modelValue:w.value,"onUpdate:modelValue":e[1]||(e[1]=a=>w.value=a),placeholder:"状态",style:{width:"120px"}},{default:l(()=>[t(n,{label:"全部",value:""}),t(n,{label:"成功",value:"success"}),t(n,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),t(U,{modelValue:V.value,"onUpdate:modelValue":e[2]||(e[2]=a=>V.value=a),placeholder:"来源",style:{width:"120px"}},{default:l(()=>[t(n,{label:"全部",value:""}),t(n,{label:"手动",value:"manual"}),t(n,{label:"定时任务(系统)",value:"scheduled"}),t(n,{label:"定时任务(用户)",value:"user_scheduled"}),t(n,{label:"手动(批量)",value:"batch"}),t(n,{label:"手动(截图)",value:"manual_screenshot"}),t(n,{label:"手动(立即)",value:"immediate"}),t(n,{label:"手动(恢复)",value:"resumed"})]),_:1},8,["modelValue"]),t(U,{modelValue:x.value,"onUpdate:modelValue":e[3]||(e[3]=a=>x.value=a),placeholder:"用户",style:{width:"140px"},loading:v.value,filterable:"",clearable:""},{default:l(()=>[t(n,{label:"全部",value:""}),(b(!0),P(ae,null,le(T.value,a=>(b(),F(n,{key:a.id,label:a.username,value:String(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"]),t(W,{modelValue:k.value,"onUpdate:modelValue":e[4]||(e[4]=a=>k.value=a),placeholder:"账号关键字",style:{width:"170px"},clearable:""},null,8,["modelValue"]),t(C,{type:"primary",onClick:O},{default:l(()=>[...e[6]||(e[6]=[m("筛选",-1)])]),_:1}),t(C,{onClick:j},{default:l(()=>[...e[7]||(e[7]=[m("重置",-1)])]),_:1}),t(C,{type:"danger",plain:"",onClick:R},{default:l(()=>[...e[8]||(e[8]=[m("清理旧日志",-1)])]),_:1})])]),_:1}),t(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[f("div",ce,[oe((b(),F(q,{data:S.value,style:{width:"100%"}},{default:l(()=>[t(c,{prop:"created_at",label:"时间",width:"180"}),t(c,{label:"来源",width:"110"},{default:l(({row:a})=>[_(a.source).tooltip?(b(),F(E,{key:0,content:_(a.source).tooltip,placement:"top","show-after":300},{default:l(()=>[t(D,{type:_(a.source).type,effect:"light"},{default:l(()=>[m(d(_(a.source).label),1)]),_:2},1032,["type"])]),_:2},1032,["content"])):(b(),F(D,{key:1,type:_(a.source).type,effect:"light"},{default:l(()=>[m(d(_(a.source).label),1)]),_:2},1032,["type"]))]),_:1}),t(c,{prop:"user_username",label:"用户",width:"140"}),t(c,{prop:"username",label:"账号",width:"160"}),t(c,{prop:"browse_type",label:"浏览类型",width:"120"}),t(c,{label:"状态",width:"90"},{default:l(({row:a})=>[t(D,{type:I(a.status).type,effect:"light"},{default:l(()=>[m(d(I(a.status).label),1)]),_:2},1032,["type"])]),_:1}),t(c,{label:"内容/附件",width:"110"},{default:l(({row:a})=>[m(d(a.total_items)+" / "+d(a.total_attachments),1)]),_:1}),t(c,{label:"用时",width:"90"},{default:l(({row:a})=>[m(d(Y(a.duration)),1)]),_:1}),t(c,{label:"失败原因","min-width":"220"},{default:l(({row:a})=>[t(E,{content:a.error_message||"",placement:"top","show-after":300},{default:l(()=>[f("span",de,d(a.error_message||"-"),1)]),_:2},1032,["content"])]),_:1})]),_:1},8,["data"])),[[J,s.value]])]),f("div",pe,[t(A,{"current-page":i.value,"onUpdate:currentPage":e[5]||(e[5]=a=>i.value=a),"page-size":B,total:y.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:M},null,8,["current-page","total"]),f("div",me,"第 "+d(i.value)+" / "+d($.value)+" 页",1)])]),_:1})])}}},Ve=Q(fe,[["__scopeId","data-v-2627b2c9"]]);export{Ve as default}; +import{f as K}from"./users-D9XvGIoE.js";import{g as G,h as H}from"./tasks-C6JkguA6.js";import{_ as Q}from"./index-6ynv0Z9Y.js";import{E as N,a as X}from"./vendor-element-CIudPaVX.js";import{r as u,c as Z,o as ee,aj as r,ap as te,n as P,q as b,t as f,L as t,E as l,K as ae,a3 as le,D as F,I as m,F as oe,J as d}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-DszMq72k.js";function ne(p){return String(p||"").trim()}function se(p){return!p.startsWith("user_scheduled")||!p.includes(":")?"":p.split(":",2)[1]||""}function ue(p){const s=ne(p);if(!s||s==="manual")return{group:"manual",label:"手动",type:"success",tooltip:""};if(s==="scheduled")return{group:"scheduled",label:"定时任务",type:"primary",tooltip:"系统定时"};if(s.startsWith("user_scheduled")){const i=se(s),v=String(i||"").replace(/^batch_/,"");return{group:"scheduled",label:"定时任务",type:"primary",tooltip:v?`用户定时批次:${v}`:"用户定时"}}return{group:"manual",label:"手动",type:"success",tooltip:{batch:"手动批量",manual_screenshot:"手动截图",immediate:"立即执行",resumed:"断点恢复"}[s]||s}}const re={class:"page-stack"},ie={class:"filters"},ce={class:"table-wrap"},de={class:"ellipsis"},pe={class:"pagination"},me={class:"page-hint app-muted"},B=20,fe={__name:"LogsPage",setup(p){const s=u(!1),S=u([]),y=u(0),i=u(1),v=u(!1),T=u([]),h=u(""),w=u(""),V=u(""),x=u(""),k=u(""),$=Z(()=>Math.max(1,Math.ceil((y.value||0)/B)));function Y(o){if(o==null)return"-";const e=Number(o);return Number.isFinite(e)?e<60?`${e}秒`:`${Math.floor(e/60)}分${e%60}秒`:"-"}function _(o){const e=ue(o);return{key:e.group,label:e.label,type:e.type,tooltip:e.tooltip}}function I(o){return o==="success"?{label:"成功",type:"success"}:o==="failed"?{label:"失败",type:"danger"}:{label:o||"-",type:"info"}}async function z(){v.value=!0;try{const o=await K();T.value=(o||[]).map(e=>({id:e.id,username:e.username}))}catch{T.value=[]}finally{v.value=!1}}async function M(){s.value=!0;try{const o=(i.value-1)*B,e={limit:B,offset:o};h.value&&(e.date=h.value),w.value&&(e.status=w.value),V.value&&(e.source=V.value),x.value&&(e.user_id=x.value),k.value&&(e.account=k.value);const g=await G(e);S.value=g?.logs||[],y.value=g?.total||0}catch{S.value=[],y.value=0}finally{s.value=!1}}function O(){i.value=1,M()}function j(){h.value="",w.value="",V.value="",x.value="",k.value="",i.value=1,M()}async function R(){let o;try{const e=await N.prompt("请输入要清理多少天前的日志(默认30天)","清理旧日志",{inputValue:"30",confirmButtonText:"下一步",cancelButtonText:"取消",inputValidator:g=>{const n=parseInt(String(g),10);return Number.isFinite(n)&&n>=1},inputErrorMessage:"请输入有效的天数(大于0的整数)"});o=parseInt(String(e.value),10)}catch{return}try{await N.confirm(`确定要删除 ${o} 天前的所有日志吗?此操作不可恢复!`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await H(o);X.success(e?.message||"清理成功"),i.value=1,await M()}catch{}}return ee(async()=>{await z(),await M()}),(o,e)=>{const g=r("el-date-picker"),n=r("el-option"),U=r("el-select"),W=r("el-input"),C=r("el-button"),L=r("el-card"),c=r("el-table-column"),D=r("el-tag"),E=r("el-tooltip"),q=r("el-table"),A=r("el-pagination"),J=te("loading");return b(),P("div",re,[e[9]||(e[9]=f("div",{class:"app-page-title"},[f("h2",null,"任务日志")],-1)),t(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[f("div",ie,[t(g,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),type:"date","value-format":"YYYY-MM-DD",placeholder:"日期",style:{width:"150px"}},null,8,["modelValue"]),t(U,{modelValue:w.value,"onUpdate:modelValue":e[1]||(e[1]=a=>w.value=a),placeholder:"状态",style:{width:"120px"}},{default:l(()=>[t(n,{label:"全部",value:""}),t(n,{label:"成功",value:"success"}),t(n,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),t(U,{modelValue:V.value,"onUpdate:modelValue":e[2]||(e[2]=a=>V.value=a),placeholder:"来源",style:{width:"120px"}},{default:l(()=>[t(n,{label:"全部",value:""}),t(n,{label:"手动",value:"manual"}),t(n,{label:"定时任务(系统)",value:"scheduled"}),t(n,{label:"定时任务(用户)",value:"user_scheduled"}),t(n,{label:"手动(批量)",value:"batch"}),t(n,{label:"手动(截图)",value:"manual_screenshot"}),t(n,{label:"手动(立即)",value:"immediate"}),t(n,{label:"手动(恢复)",value:"resumed"})]),_:1},8,["modelValue"]),t(U,{modelValue:x.value,"onUpdate:modelValue":e[3]||(e[3]=a=>x.value=a),placeholder:"用户",style:{width:"140px"},loading:v.value,filterable:"",clearable:""},{default:l(()=>[t(n,{label:"全部",value:""}),(b(!0),P(ae,null,le(T.value,a=>(b(),F(n,{key:a.id,label:a.username,value:String(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"]),t(W,{modelValue:k.value,"onUpdate:modelValue":e[4]||(e[4]=a=>k.value=a),placeholder:"账号关键字",style:{width:"170px"},clearable:""},null,8,["modelValue"]),t(C,{type:"primary",onClick:O},{default:l(()=>[...e[6]||(e[6]=[m("筛选",-1)])]),_:1}),t(C,{onClick:j},{default:l(()=>[...e[7]||(e[7]=[m("重置",-1)])]),_:1}),t(C,{type:"danger",plain:"",onClick:R},{default:l(()=>[...e[8]||(e[8]=[m("清理旧日志",-1)])]),_:1})])]),_:1}),t(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[f("div",ce,[oe((b(),F(q,{data:S.value,style:{width:"100%"}},{default:l(()=>[t(c,{prop:"created_at",label:"时间",width:"180"}),t(c,{label:"来源",width:"110"},{default:l(({row:a})=>[_(a.source).tooltip?(b(),F(E,{key:0,content:_(a.source).tooltip,placement:"top","show-after":300},{default:l(()=>[t(D,{type:_(a.source).type,effect:"light"},{default:l(()=>[m(d(_(a.source).label),1)]),_:2},1032,["type"])]),_:2},1032,["content"])):(b(),F(D,{key:1,type:_(a.source).type,effect:"light"},{default:l(()=>[m(d(_(a.source).label),1)]),_:2},1032,["type"]))]),_:1}),t(c,{prop:"user_username",label:"用户",width:"140"}),t(c,{prop:"username",label:"账号",width:"160"}),t(c,{prop:"browse_type",label:"浏览类型",width:"120"}),t(c,{label:"状态",width:"90"},{default:l(({row:a})=>[t(D,{type:I(a.status).type,effect:"light"},{default:l(()=>[m(d(I(a.status).label),1)]),_:2},1032,["type"])]),_:1}),t(c,{label:"内容/附件",width:"110"},{default:l(({row:a})=>[m(d(a.total_items)+" / "+d(a.total_attachments),1)]),_:1}),t(c,{label:"用时",width:"90"},{default:l(({row:a})=>[m(d(Y(a.duration)),1)]),_:1}),t(c,{label:"失败原因","min-width":"220"},{default:l(({row:a})=>[t(E,{content:a.error_message||"",placement:"top","show-after":300},{default:l(()=>[f("span",de,d(a.error_message||"-"),1)]),_:2},1032,["content"])]),_:1})]),_:1},8,["data"])),[[J,s.value]])]),f("div",pe,[t(A,{"current-page":i.value,"onUpdate:currentPage":e[5]||(e[5]=a=>i.value=a),"page-size":B,total:y.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:M},null,8,["current-page","total"]),f("div",me,"第 "+d(i.value)+" / "+d($.value)+" 页",1)])]),_:1})])}}},Ve=Q(fe,[["__scopeId","data-v-2627b2c9"]]);export{Ve as default}; diff --git a/static/admin/assets/MetricGrid-C3Xjc9mZ.js b/static/admin/assets/MetricGrid-kv-nSROj.js similarity index 94% rename from static/admin/assets/MetricGrid-C3Xjc9mZ.js rename to static/admin/assets/MetricGrid-kv-nSROj.js index dff9f12..63731a6 100644 --- a/static/admin/assets/MetricGrid-C3Xjc9mZ.js +++ b/static/admin/assets/MetricGrid-kv-nSROj.js @@ -1 +1 @@ -import{_}from"./index-DOvMEmc8.js";import{aj as c,n as s,q as t,K as r,a3 as u,y as p,t as o,G as l,L as y,E as h,D as i,H as v,J as n,I as k,x as f}from"./vendor-vue-CVxSw_oJ.js";const b={class:"metric-top"},x={key:0,class:"metric-icon"},g={class:"metric-label"},B={class:"metric-value"},C={key:0,class:"metric-hint app-muted"},N={__name:"MetricGrid",props:{items:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},minWidth:{type:Number,default:180}},setup(a){return(V,D)=>{const d=c("el-icon"),m=c("el-skeleton");return t(),s("div",{class:"metric-grid",style:f({"--metric-min":`${a.minWidth}px`})},[(t(!0),s(r,null,u(a.items,e=>(t(),s("div",{key:e?.key||e?.label,class:p(["metric-card",`metric-tone--${e?.tone||"blue"}`])},[o("div",b,[e?.icon?(t(),s("div",x,[y(d,null,{default:h(()=>[(t(),i(v(e.icon)))]),_:2},1024)])):l("",!0),o("div",g,n(e?.label||"-"),1)]),o("div",B,[a.loading?(t(),i(m,{key:0,rows:1,animated:""})):(t(),s(r,{key:1},[k(n(e?.value??0),1)],64))]),e?.hint||e?.sub?(t(),s("div",C,n(e?.hint||e?.sub),1)):l("",!0)],2))),128))],4)}}},w=_(N,[["__scopeId","data-v-28727c73"]]);export{w as M}; +import{_}from"./index-6ynv0Z9Y.js";import{aj as c,n as s,q as t,K as r,a3 as u,y as p,t as o,G as l,L as y,E as h,D as i,H as v,J as n,I as k,x as f}from"./vendor-vue-CVxSw_oJ.js";const b={class:"metric-top"},x={key:0,class:"metric-icon"},g={class:"metric-label"},B={class:"metric-value"},C={key:0,class:"metric-hint app-muted"},N={__name:"MetricGrid",props:{items:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},minWidth:{type:Number,default:180}},setup(a){return(V,D)=>{const d=c("el-icon"),m=c("el-skeleton");return t(),s("div",{class:"metric-grid",style:f({"--metric-min":`${a.minWidth}px`})},[(t(!0),s(r,null,u(a.items,e=>(t(),s("div",{key:e?.key||e?.label,class:p(["metric-card",`metric-tone--${e?.tone||"blue"}`])},[o("div",b,[e?.icon?(t(),s("div",x,[y(d,null,{default:h(()=>[(t(),i(v(e.icon)))]),_:2},1024)])):l("",!0),o("div",g,n(e?.label||"-"),1)]),o("div",B,[a.loading?(t(),i(m,{key:0,rows:1,animated:""})):(t(),s(r,{key:1},[k(n(e?.value??0),1)],64))]),e?.hint||e?.sub?(t(),s("div",C,n(e?.hint||e?.sub),1)):l("",!0)],2))),128))],4)}}},w=_(N,[["__scopeId","data-v-28727c73"]]);export{w as M}; diff --git a/static/admin/assets/ReportPage-BMEJM5Hr.js b/static/admin/assets/ReportPage-2jS10KoG.js similarity index 97% rename from static/admin/assets/ReportPage-BMEJM5Hr.js rename to static/admin/assets/ReportPage-2jS10KoG.js index 978accc..25b9c3a 100644 --- a/static/admin/assets/ReportPage-BMEJM5Hr.js +++ b/static/admin/assets/ReportPage-2jS10KoG.js @@ -1 +1 @@ -import{f as tl,g as al,h as sl,k as ul,j as ol,n as nl,o as rl}from"./vendor-element-B5S5pUKo.js";import{c as il,a as cl,_ as vl,f as dl}from"./index-DOvMEmc8.js";import{f as _l}from"./email-Mh1SHQbX.js";import{f as ml,a as pl,b as bl,c as fl,d as hl,e as wl}from"./tasks-B7oNpIBD.js";import{f as gl}from"./system-CYbWdReq.js";import{M as kl}from"./MetricGrid-C3Xjc9mZ.js";import{i as de,r as m,c as a,o as yl,O as Sl,aj as R,n as S,q as k,t as s,L as u,G as D,J as d,K as _e,a3 as me,E as w,I as pe,D as ql,y as xl}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-misc-BeoNyvBp.js";import"./vendor-axios-B9ygI19o.js";const $l=il(async()=>{const{data:P}=await cl.get("/browser_pool/stats");return P},4e3);async function Tl(P={}){return $l.run(P)}const Ll={class:"page-stack"},Rl={class:"report-hero"},Ml={class:"hero-head"},Al={class:"hero-main"},Pl={class:"hero-meta app-muted"},Cl={key:0},Nl={key:1,class:"hero-dot"},Il={key:2},Dl={class:"mobile-report"},El={class:"mobile-module-head"},Wl={class:"mobile-module-title"},Ql={class:"mobile-module-desc app-muted"},Vl={class:"mobile-metrics"},zl={class:"mobile-metric-label app-muted"},Bl={class:"mobile-metric-value"},Ol={key:0,class:"module-extra-actions"},Ul={class:"request-dialog-summary app-muted"},Fl={class:"request-dialog-block"},Gl={class:"table-wrap"},jl={class:"request-dialog-block"},Hl={class:"table-wrap"},Zl={class:"request-dialog-summary app-muted"},Yl={class:"request-dialog-block"},Jl={class:"table-wrap"},Kl={class:"request-dialog-block"},Xl={class:"table-wrap"},et=3,lt=5e3,tt=2e4,at={__name:"ReportPage",setup(P){const be=de("refreshStats",null),fe=de("adminStats",null),E=m(!1),W=m(!1),T=m(""),Q=m(null),b=m(null),p=m(null),y=m(null),g=m(null),C=m(null),L=m(null),f=m(null),v=m(null),r=m(null),V=m(!1),z=m(!1);m("running");function he(){try{T.value=new Date().toLocaleString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{T.value=""}}function l(t){const e=Number(t);return Number.isFinite(e)?e:0}function we(t){const e=String(t??"").trim();if(!e)return 0;const o=e.endsWith("%")?e.slice(0,-1):e,_=Number(o);return!Number.isFinite(_)||_<0?0:_>1e3?1e3:_}function B(t){return`${Math.round(we(t))}%`}function c(t){const e=Number(t);return!Number.isFinite(e)||e<0?"-":e>=100?`${Math.round(e)}ms`:`${e.toFixed(1)}ms`}function Z(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return"-";try{return new Date(e*1e3).toLocaleTimeString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{return"-"}}function O(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return"-";try{return new Date(e*1e3).toLocaleString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{return"-"}}function ge(t){const e=String(t??"").trim();return!e||e==="manual"?"手动":e==="scheduled"?"系统定时":e==="batch"?"批量执行":e==="resumed"?"断点续跑":e.startsWith("user_scheduled:")?"用户定时":e}const Y=a(()=>{const t=fe?.value||{},e=l(b.value?.max_concurrent);return[{label:"总用户数",value:l(t.total_users),icon:tl,tone:"blue"},{label:"今日注册",value:l(t.new_users_today),icon:al,tone:"green"},{label:"近7天注册",value:l(t.new_users_7d),icon:sl,tone:"purple"},{label:"总账号数",value:l(t.total_accounts),icon:ul,tone:"cyan"},{label:"VIP用户",value:l(t.vip_users),icon:ol,tone:"orange"},{label:"运行中任务",value:l(b.value?.running_count),icon:nl,tone:"green",sub:e?`并发上限 ${e}`:""},{label:"排队任务",value:l(b.value?.queuing_count),icon:rl,tone:"purple"}]}),h=a(()=>Q.value?.today||{}),q=a(()=>Q.value?.total||{});a(()=>b.value?.running||[]);const N=a(()=>b.value?.queuing||[]),ke=a(()=>l(b.value?.running_count)),ye=a(()=>l(b.value?.queuing_count)),Se=a(()=>{const t=L.value?.workers;return Array.isArray(t)?[...t].sort((e,o)=>l(e?.worker_id)-l(o?.worker_id)):[]}),J=a(()=>l(L.value?.total_workers)),U=a(()=>Se.value.filter(t=>!!t?.has_browser).length),K=a(()=>l(L.value?.idle_workers)),X=a(()=>l(L.value?.queue_size)),F=a(()=>l(L.value?.active_workers)),ee=a(()=>{const t=l(h.value.success_tasks),e=l(h.value.failed_tasks),o=t+e;return o>0?Math.round(t/o*1e3)/10:0}),G=a(()=>l(p.value?.success_rate));a(()=>[{label:"总任务",value:l(h.value.total_tasks),tone:"blue"},{label:"成功",value:l(h.value.success_tasks),tone:"green"},{label:"失败",value:l(h.value.failed_tasks),tone:"red"},{label:"浏览内容",value:l(h.value.total_items),tone:"purple"},{label:"查看附件",value:l(h.value.total_attachments),tone:"cyan"}]),a(()=>[{label:"总任务",value:l(q.value.total_tasks),tone:"blue"},{label:"成功",value:l(q.value.success_tasks),tone:"green"},{label:"失败",value:l(q.value.failed_tasks),tone:"red"},{label:"浏览内容",value:l(q.value.total_items),tone:"purple"},{label:"查看附件",value:l(q.value.total_attachments),tone:"cyan"}]),a(()=>[{label:"总发送",value:l(p.value?.total_sent),tone:"blue"},{label:"成功",value:l(p.value?.total_success),tone:"green"},{label:"失败",value:l(p.value?.total_failed),tone:"red"},{label:"成功率",value:`${G.value}%`,tone:"purple"}]),a(()=>[{label:"注册验证",value:l(p.value?.register_sent),tone:"cyan"},{label:"密码重置",value:l(p.value?.reset_sent),tone:"orange"},{label:"邮箱绑定",value:l(p.value?.bind_sent),tone:"purple"},{label:"任务完成",value:l(p.value?.task_complete_sent),tone:"green"}]),a(()=>[{label:"总反馈",value:l(y.value?.total),tone:"blue"},{label:"待处理",value:l(y.value?.pending),tone:"orange"},{label:"已回复",value:l(y.value?.replied),tone:"green"}]),a(()=>[{label:"总 Worker",value:J.value,tone:"blue"},{label:"活跃 Worker",value:U.value,tone:"green"},{label:"空闲 Worker",value:K.value,tone:"cyan"},{label:"忙碌 Worker",value:F.value,tone:"orange"},{label:"队列",value:X.value,tone:"purple"}]);const qe=a(()=>(f.value?.schedule_enabled??0)===1),xe=a(()=>f.value?.schedule_time||"-"),$e=a(()=>f.value?.schedule_browse_type||"-"),Te=a(()=>String(f.value?.schedule_weekdays||"").trim());a(()=>{const t=Te.value;if(!t)return"";const e={1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六",7:"周日"},o=t.split(",").map(_=>_.trim()).filter(Boolean);return o.length?o.map(_=>e[Number(_)]||_).join("、"):t});const Le=a(()=>(f.value?.proxy_enabled??0)===1);a(()=>f.value?.proxy_api_url||"");const le=a(()=>l(f.value?.proxy_expire_minutes)),j=a(()=>l(f.value?.max_concurrent_global)),Re=a(()=>l(f.value?.max_concurrent_per_account)),Me=a(()=>l(f.value?.max_screenshot_concurrent)),Ae=a(()=>{const t=l(b.value?.running_count),e=l(b.value?.queuing_count),o=l(b.value?.max_concurrent);return`运行中 ${t} / 排队 ${e} / 并发上限 ${o||j.value||"-"}`}),Pe=a(()=>Y.value.map(t=>({label:t.label,value:t.sub?`${t.value}(${t.sub})`:t.value}))),Ce=a(()=>[{label:"今日总任务",value:l(h.value.total_tasks)},{label:"今日成功",value:l(h.value.success_tasks)},{label:"今日失败",value:l(h.value.failed_tasks)},{label:"今日成功率",value:`${ee.value}%`},{label:"累计任务",value:l(q.value.total_tasks)},{label:"累计成功",value:l(q.value.success_tasks)}]),Ne=a(()=>[{label:"运行中",value:ke.value},{label:"排队中",value:ye.value},{label:"并发上限",value:l(b.value?.max_concurrent)||j.value||"-"},{label:"排队首条来源",value:ge(N.value[0]?.source)},{label:"排队首条状态",value:N.value[0]?.detail_status||N.value[0]?.status||"-"},{label:"最长等待",value:N.value[0]?.elapsed_display||"-"}]),Ie=a(()=>[{label:"总发送",value:l(p.value?.total_sent)},{label:"成功",value:l(p.value?.total_success)},{label:"失败",value:l(p.value?.total_failed)},{label:"成功率",value:`${G.value}%`},{label:"注册验证",value:l(p.value?.register_sent)},{label:"重置密码",value:l(p.value?.reset_sent)}]),De=a(()=>[{label:"总反馈",value:l(y.value?.total)},{label:"待处理",value:l(y.value?.pending)},{label:"已回复",value:l(y.value?.replied)}]),Ee=a(()=>[{label:"CPU",value:B(g.value?.cpu_percent)},{label:"内存",value:B(g.value?.memory_percent)},{label:"磁盘",value:B(g.value?.disk_percent)},{label:"容器状态",value:C.value?.status||"-"},{label:"容器名",value:C.value?.container_name||"-"},{label:"容器运行",value:C.value?.uptime||"-"}]),We=a(()=>[{label:"总 Worker",value:J.value},{label:"活跃 Worker",value:U.value},{label:"忙碌 Worker",value:F.value},{label:"空闲 Worker",value:K.value},{label:"任务队列",value:X.value}]),Qe=a(()=>{const t=v.value?.top_paths;return Array.isArray(t)?t.slice(0,3):[]}),Ve=a(()=>{const t=[{label:"总请求",value:l(v.value?.total_requests)},{label:"API请求",value:l(v.value?.api_requests)},{label:"慢请求",value:l(v.value?.slow_requests)},{label:"错误请求",value:l(v.value?.error_requests)}];return Qe.value.forEach((e,o)=>{const _=String(e?.path||"-");t.push({label:`慢接口${o+1}`,value:`${_} · 峰值 ${c(e?.max_ms)}`})}),t}),ze=a(()=>{const t=c(v.value?.avg_duration_ms),e=c(v.value?.max_duration_ms),o=Z(v.value?.last_request_ts),_=c(v.value?.slow_threshold_ms);return`均值 ${t} · 峰值 ${e} · 慢阈 ${_} · 最近 ${o}`}),Be=a(()=>(Array.isArray(r.value?.top_sql)?r.value.top_sql:[]).slice(0,3)),te=a(()=>{const t=l(r.value?.window_seconds);return t<=0?24:Math.max(1,Math.round(t/3600))}),Oe=a(()=>{const t=[{label:`慢SQL(${te.value}h)`,value:l(r.value?.total_slow_queries)},{label:"去重SQL",value:l(r.value?.unique_sql)},{label:"平均耗时",value:c(r.value?.avg_duration_ms)},{label:"峰值耗时",value:c(r.value?.max_duration_ms)}];return Be.value.forEach((e,o)=>{t.push({label:`慢SQL${o+1}`,value:`${c(e?.max_ms)} · ${String(e?.sql||"-")}`})}),t}),Ue=a(()=>{const t=c(r.value?.slow_threshold_ms),e=Z(r.value?.last_slow_ts);return`窗口 ${te.value}h · 慢阈 ${t} · 最近 ${e}`}),Fe=a(()=>(Array.isArray(r.value?.top_sql)?r.value.top_sql:[]).map((e,o)=>({rank:o+1,sql:String(e?.sql||"-"),count:l(e?.count),avg_ms:c(e?.avg_ms),max_ms:c(e?.max_ms),last_seen:O(e?.last_ts),sample_params:String(e?.sample_params||"-")}))),Ge=a(()=>[...Array.isArray(r.value?.recent_slow_sql)?r.value.recent_slow_sql:[]].sort((e,o)=>Number(o?.time||0)-Number(e?.time||0)).map(e=>({time_text:O(e?.time),sql:String(e?.sql||"-"),duration_ms:c(e?.duration_ms),params:String(e?.params||"-")}))),je=a(()=>(Array.isArray(v.value?.top_paths)?v.value.top_paths:[]).map((e,o)=>({rank:o+1,path:String(e?.path||"-"),count:l(e?.count),avg_ms:c(e?.avg_ms),max_ms:c(e?.max_ms),status_5xx:l(e?.status_5xx)}))),He=a(()=>[...Array.isArray(v.value?.recent_slow)?v.value.recent_slow:[]].sort((e,o)=>Number(o?.time||0)-Number(e?.time||0)).map(e=>({time_text:O(e?.time),method:String(e?.method||"-").toUpperCase(),path:String(e?.path||"-"),status:l(e?.status),duration_ms:c(e?.duration_ms)})));function Ze(t){const e=l(t);return e>=500?"danger":e>=400?"warning":e>=300?"info":"success"}function Ye(){V.value=!0}function Je(){z.value=!0}const ae=a(()=>{const t=r.value?.slow_threshold_ms;if(t!=null)return c(t);const e=f.value?.db_slow_query_ms;return e!=null?c(e):"-"}),Ke=a(()=>[{label:"定时任务",value:qe.value?"启用":"关闭"},{label:"执行时间",value:xe.value||"-"},{label:"浏览类型",value:$e.value||"-"},{label:"代理",value:Le.value?"启用":"关闭"},{label:"代理有效期",value:le.value?`${le.value} 分钟`:"-"},{label:"全局并发",value:j.value||"-"},{label:"单账号并发",value:Re.value||"-"},{label:"截图并发",value:Me.value||"-"},{label:"慢SQL阈值",value:ae.value}]),Xe=a(()=>[{key:"overview",title:"平台概览",desc:T.value?`更新 ${T.value}`:"核心指标",tone:"blue",items:Pe.value},{key:"task",title:"任务概览",desc:l(h.value.total_tasks)>0?`今日成功率 ${ee.value}%`:"今日暂无任务",tone:"purple",items:Ce.value},{key:"queue",title:"队列监控",desc:Ae.value,tone:"blue",items:Ne.value},{key:"email",title:"邮件报表",desc:`成功率 ${G.value}%`,tone:"cyan",items:Ie.value},{key:"feedback",title:"反馈概览",desc:`待处理 ${l(y.value?.pending)} 条`,tone:"orange",items:De.value},{key:"resource",title:"系统资源",desc:g.value?.uptime?`运行 ${g.value.uptime}`:"运行状态获取中",tone:"green",items:Ee.value},{key:"request",title:"接口性能",desc:ze.value,tone:"purple",items:Ve.value},{key:"slow_sql",title:"慢SQL监控",desc:Ue.value,tone:"red",items:Oe.value},{key:"worker",title:"截图线程池",desc:`活跃 ${U.value} · 忙碌 ${F.value}`,tone:"cyan",items:We.value},{key:"config",title:"配置概览",desc:"并发 / 代理 / 定时任务",tone:"red",items:Ke.value}]);let se=1;async function ue(t={}){const e=t.showLoading??!0;if(W.value)return;const o=!!t.forceStatsSync,_=o||se%et===0;se+=1,W.value=!0,e&&(E.value=!0);try{const[n,x,I,A,i,$,re,ie,ce,ve]=await Promise.allSettled([ml(),pl(),_l(),dl(),bl(),fl(),Tl(),hl(),wl(),gl()]);n.status==="fulfilled"&&(Q.value=n.value),x.status==="fulfilled"&&(b.value=x.value),I.status==="fulfilled"&&(p.value=I.value),A.status==="fulfilled"&&(y.value=A.value),i.status==="fulfilled"&&(g.value=i.value),$.status==="fulfilled"&&(C.value=$.value),re.status==="fulfilled"&&(L.value=re.value),ie.status==="fulfilled"&&(v.value=ie.value),ce.status==="fulfilled"&&(r.value=ce.value),ve.status==="fulfilled"&&(f.value=ve.value),_&&await be?.({force:o}),he()}finally{W.value=!1,e&&(E.value=!1)}}let M=null;function el(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function ll(){return el()?tt:lt}function oe(){M&&(clearTimeout(M),M=null)}function H(){oe(),M=window.setTimeout(async()=>{M=null,await ue({showLoading:!1}).catch(()=>{}),H()},ll())}function ne(){H()}return yl(()=>{ue({showLoading:!1}).catch(()=>{}).finally(()=>{H()}),window.addEventListener("visibilitychange",ne)}),Sl(()=>{oe(),window.removeEventListener("visibilitychange",ne)}),(t,e)=>{const o=R("el-button"),_=R("el-card"),n=R("el-table-column"),x=R("el-table"),I=R("el-tag"),A=R("el-dialog");return k(),S("div",Ll,[s("section",Rl,[s("div",Ml,[s("div",Al,[e[3]||(e[3]=s("h2",null,"报表中心",-1)),s("div",Pl,[T.value?(k(),S("span",Cl,"更新时间:"+d(T.value),1)):D("",!0),e[2]||(e[2]=s("span",{class:"hero-dot"},"·",-1)),s("span",null,"慢SQL阈值 "+d(ae.value),1),g.value?.uptime?(k(),S("span",Nl,"·")):D("",!0),g.value?.uptime?(k(),S("span",Il,"运行 "+d(g.value.uptime),1)):D("",!0)])])]),u(kl,{class:"hero-overview-grid",items:Y.value,loading:E.value,"min-width":165},null,8,["items","loading"])]),s("section",Dl,[(k(!0),S(_e,null,me(Xe.value,i=>(k(),ql(_,{key:i.key,shadow:"never",class:xl(["mobile-module-card",`mobile-tone-${i.tone}`]),"body-style":{padding:"12px"}},{default:w(()=>[s("div",El,[s("div",Wl,d(i.title),1),s("div",Ql,d(i.desc),1)]),s("div",Vl,[(k(!0),S(_e,null,me(i.items,$=>(k(),S("div",{key:`${i.key}-${$.label}`,class:"mobile-metric-item"},[s("div",zl,d($.label),1),s("div",Bl,d($.value),1)]))),128))]),i.key==="request"||i.key==="slow_sql"?(k(),S("div",Ol,[u(o,{size:"small",type:"primary",plain:"",onClick:$=>i.key==="request"?Ye():Je()},{default:w(()=>[pe(d(i.key==="request"?"查看慢接口详情":"查看慢SQL详情"),1)]),_:2},1032,["onClick"])])):D("",!0)]),_:2},1032,["class"]))),128))]),u(A,{modelValue:V.value,"onUpdate:modelValue":e[0]||(e[0]=i=>V.value=i),title:"慢接口详情",width:"min(1080px, 96vw)"},{default:w(()=>[s("div",Ul,[s("span",null,"总请求:"+d(l(v.value?.total_requests)),1),s("span",null,"API请求:"+d(l(v.value?.api_requests)),1),s("span",null,"慢请求:"+d(l(v.value?.slow_requests)),1),s("span",null,"错误请求:"+d(l(v.value?.error_requests)),1)]),s("div",Fl,[e[4]||(e[4]=s("div",{class:"request-dialog-title"},"慢接口排行榜",-1)),s("div",Gl,[u(x,{data:je.value,size:"small","max-height":"280"},{default:w(()=>[u(n,{prop:"rank",label:"#",width:"60"}),u(n,{prop:"path",label:"接口路径","min-width":"340","show-overflow-tooltip":""}),u(n,{prop:"count",label:"请求数",width:"100"}),u(n,{prop:"avg_ms",label:"平均耗时",width:"120"}),u(n,{prop:"max_ms",label:"峰值耗时",width:"120"}),u(n,{prop:"status_5xx",label:"5xx",width:"90"})]),_:1},8,["data"])])]),s("div",jl,[e[5]||(e[5]=s("div",{class:"request-dialog-title"},"最近慢请求",-1)),s("div",Hl,[u(x,{data:He.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"time_text",label:"时间",width:"180"}),u(n,{prop:"method",label:"方法",width:"90"}),u(n,{prop:"path",label:"接口路径","min-width":"320","show-overflow-tooltip":""}),u(n,{label:"状态",width:"100"},{default:w(i=>[u(I,{size:"small",type:Ze(i.row.status)},{default:w(()=>[pe(d(i.row.status||"-"),1)]),_:2},1032,["type"])]),_:1}),u(n,{prop:"duration_ms",label:"耗时",width:"110"})]),_:1},8,["data"])])])]),_:1},8,["modelValue"]),u(A,{modelValue:z.value,"onUpdate:modelValue":e[1]||(e[1]=i=>z.value=i),title:"慢SQL详情(近24小时)",width:"min(1080px, 96vw)"},{default:w(()=>[s("div",Zl,[s("span",null,"慢SQL总数:"+d(l(r.value?.total_slow_queries)),1),s("span",null,"去重SQL:"+d(l(r.value?.unique_sql)),1),s("span",null,"平均耗时:"+d(c(r.value?.avg_duration_ms)),1),s("span",null,"峰值耗时:"+d(c(r.value?.max_duration_ms)),1),s("span",null,"慢阈值:"+d(c(r.value?.slow_threshold_ms)),1)]),s("div",Yl,[e[6]||(e[6]=s("div",{class:"request-dialog-title"},"TOP 慢SQL(按出现次数)",-1)),s("div",Jl,[u(x,{data:Fe.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"rank",label:"#",width:"60"}),u(n,{prop:"sql",label:"SQL","min-width":"400","show-overflow-tooltip":""}),u(n,{prop:"count",label:"次数",width:"90"}),u(n,{prop:"avg_ms",label:"平均耗时",width:"120"}),u(n,{prop:"max_ms",label:"峰值耗时",width:"120"}),u(n,{prop:"last_seen",label:"最近出现",width:"180"}),u(n,{prop:"sample_params",label:"参数样本","min-width":"140","show-overflow-tooltip":""})]),_:1},8,["data"])])]),s("div",Kl,[e[7]||(e[7]=s("div",{class:"request-dialog-title"},"最近慢SQL",-1)),s("div",Xl,[u(x,{data:Ge.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"time_text",label:"时间",width:"180"}),u(n,{prop:"sql",label:"SQL","min-width":"420","show-overflow-tooltip":""}),u(n,{prop:"duration_ms",label:"耗时",width:"110"}),u(n,{prop:"params",label:"参数","min-width":"130","show-overflow-tooltip":""})]),_:1},8,["data"])])])]),_:1},8,["modelValue"])])}}},_t=vl(at,[["__scopeId","data-v-6101337a"]]);export{_t as default}; +import{f as tl,g as al,h as sl,k as ul,j as ol,n as nl,o as rl}from"./vendor-element-CIudPaVX.js";import{c as il,a as cl,_ as vl,f as dl}from"./index-6ynv0Z9Y.js";import{f as _l}from"./email-CgUCpCe3.js";import{f as ml,a as pl,b as bl,c as fl,d as hl,e as wl}from"./tasks-C6JkguA6.js";import{f as gl}from"./system-CeiBEEoE.js";import{M as kl}from"./MetricGrid-kv-nSROj.js";import{i as de,r as m,c as a,o as yl,O as Sl,aj as R,n as S,q as k,t as s,L as u,G as D,J as d,K as _e,a3 as me,E as w,I as pe,D as ql,y as xl}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-misc-DszMq72k.js";import"./vendor-axios-B9ygI19o.js";const $l=il(async()=>{const{data:P}=await cl.get("/browser_pool/stats");return P},4e3);async function Tl(P={}){return $l.run(P)}const Ll={class:"page-stack"},Rl={class:"report-hero"},Ml={class:"hero-head"},Al={class:"hero-main"},Pl={class:"hero-meta app-muted"},Cl={key:0},Nl={key:1,class:"hero-dot"},Il={key:2},Dl={class:"mobile-report"},El={class:"mobile-module-head"},Wl={class:"mobile-module-title"},Ql={class:"mobile-module-desc app-muted"},Vl={class:"mobile-metrics"},zl={class:"mobile-metric-label app-muted"},Bl={class:"mobile-metric-value"},Ol={key:0,class:"module-extra-actions"},Ul={class:"request-dialog-summary app-muted"},Fl={class:"request-dialog-block"},Gl={class:"table-wrap"},jl={class:"request-dialog-block"},Hl={class:"table-wrap"},Zl={class:"request-dialog-summary app-muted"},Yl={class:"request-dialog-block"},Jl={class:"table-wrap"},Kl={class:"request-dialog-block"},Xl={class:"table-wrap"},et=3,lt=5e3,tt=2e4,at={__name:"ReportPage",setup(P){const be=de("refreshStats",null),fe=de("adminStats",null),E=m(!1),W=m(!1),T=m(""),Q=m(null),b=m(null),p=m(null),y=m(null),g=m(null),C=m(null),L=m(null),f=m(null),v=m(null),r=m(null),V=m(!1),z=m(!1);m("running");function he(){try{T.value=new Date().toLocaleString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{T.value=""}}function l(t){const e=Number(t);return Number.isFinite(e)?e:0}function we(t){const e=String(t??"").trim();if(!e)return 0;const o=e.endsWith("%")?e.slice(0,-1):e,_=Number(o);return!Number.isFinite(_)||_<0?0:_>1e3?1e3:_}function B(t){return`${Math.round(we(t))}%`}function c(t){const e=Number(t);return!Number.isFinite(e)||e<0?"-":e>=100?`${Math.round(e)}ms`:`${e.toFixed(1)}ms`}function Z(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return"-";try{return new Date(e*1e3).toLocaleTimeString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{return"-"}}function O(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return"-";try{return new Date(e*1e3).toLocaleString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{return"-"}}function ge(t){const e=String(t??"").trim();return!e||e==="manual"?"手动":e==="scheduled"?"系统定时":e==="batch"?"批量执行":e==="resumed"?"断点续跑":e.startsWith("user_scheduled:")?"用户定时":e}const Y=a(()=>{const t=fe?.value||{},e=l(b.value?.max_concurrent);return[{label:"总用户数",value:l(t.total_users),icon:tl,tone:"blue"},{label:"今日注册",value:l(t.new_users_today),icon:al,tone:"green"},{label:"近7天注册",value:l(t.new_users_7d),icon:sl,tone:"purple"},{label:"总账号数",value:l(t.total_accounts),icon:ul,tone:"cyan"},{label:"VIP用户",value:l(t.vip_users),icon:ol,tone:"orange"},{label:"运行中任务",value:l(b.value?.running_count),icon:nl,tone:"green",sub:e?`并发上限 ${e}`:""},{label:"排队任务",value:l(b.value?.queuing_count),icon:rl,tone:"purple"}]}),h=a(()=>Q.value?.today||{}),q=a(()=>Q.value?.total||{});a(()=>b.value?.running||[]);const N=a(()=>b.value?.queuing||[]),ke=a(()=>l(b.value?.running_count)),ye=a(()=>l(b.value?.queuing_count)),Se=a(()=>{const t=L.value?.workers;return Array.isArray(t)?[...t].sort((e,o)=>l(e?.worker_id)-l(o?.worker_id)):[]}),J=a(()=>l(L.value?.total_workers)),U=a(()=>Se.value.filter(t=>!!t?.has_browser).length),K=a(()=>l(L.value?.idle_workers)),X=a(()=>l(L.value?.queue_size)),F=a(()=>l(L.value?.active_workers)),ee=a(()=>{const t=l(h.value.success_tasks),e=l(h.value.failed_tasks),o=t+e;return o>0?Math.round(t/o*1e3)/10:0}),G=a(()=>l(p.value?.success_rate));a(()=>[{label:"总任务",value:l(h.value.total_tasks),tone:"blue"},{label:"成功",value:l(h.value.success_tasks),tone:"green"},{label:"失败",value:l(h.value.failed_tasks),tone:"red"},{label:"浏览内容",value:l(h.value.total_items),tone:"purple"},{label:"查看附件",value:l(h.value.total_attachments),tone:"cyan"}]),a(()=>[{label:"总任务",value:l(q.value.total_tasks),tone:"blue"},{label:"成功",value:l(q.value.success_tasks),tone:"green"},{label:"失败",value:l(q.value.failed_tasks),tone:"red"},{label:"浏览内容",value:l(q.value.total_items),tone:"purple"},{label:"查看附件",value:l(q.value.total_attachments),tone:"cyan"}]),a(()=>[{label:"总发送",value:l(p.value?.total_sent),tone:"blue"},{label:"成功",value:l(p.value?.total_success),tone:"green"},{label:"失败",value:l(p.value?.total_failed),tone:"red"},{label:"成功率",value:`${G.value}%`,tone:"purple"}]),a(()=>[{label:"注册验证",value:l(p.value?.register_sent),tone:"cyan"},{label:"密码重置",value:l(p.value?.reset_sent),tone:"orange"},{label:"邮箱绑定",value:l(p.value?.bind_sent),tone:"purple"},{label:"任务完成",value:l(p.value?.task_complete_sent),tone:"green"}]),a(()=>[{label:"总反馈",value:l(y.value?.total),tone:"blue"},{label:"待处理",value:l(y.value?.pending),tone:"orange"},{label:"已回复",value:l(y.value?.replied),tone:"green"}]),a(()=>[{label:"总 Worker",value:J.value,tone:"blue"},{label:"活跃 Worker",value:U.value,tone:"green"},{label:"空闲 Worker",value:K.value,tone:"cyan"},{label:"忙碌 Worker",value:F.value,tone:"orange"},{label:"队列",value:X.value,tone:"purple"}]);const qe=a(()=>(f.value?.schedule_enabled??0)===1),xe=a(()=>f.value?.schedule_time||"-"),$e=a(()=>f.value?.schedule_browse_type||"-"),Te=a(()=>String(f.value?.schedule_weekdays||"").trim());a(()=>{const t=Te.value;if(!t)return"";const e={1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六",7:"周日"},o=t.split(",").map(_=>_.trim()).filter(Boolean);return o.length?o.map(_=>e[Number(_)]||_).join("、"):t});const Le=a(()=>(f.value?.proxy_enabled??0)===1);a(()=>f.value?.proxy_api_url||"");const le=a(()=>l(f.value?.proxy_expire_minutes)),j=a(()=>l(f.value?.max_concurrent_global)),Re=a(()=>l(f.value?.max_concurrent_per_account)),Me=a(()=>l(f.value?.max_screenshot_concurrent)),Ae=a(()=>{const t=l(b.value?.running_count),e=l(b.value?.queuing_count),o=l(b.value?.max_concurrent);return`运行中 ${t} / 排队 ${e} / 并发上限 ${o||j.value||"-"}`}),Pe=a(()=>Y.value.map(t=>({label:t.label,value:t.sub?`${t.value}(${t.sub})`:t.value}))),Ce=a(()=>[{label:"今日总任务",value:l(h.value.total_tasks)},{label:"今日成功",value:l(h.value.success_tasks)},{label:"今日失败",value:l(h.value.failed_tasks)},{label:"今日成功率",value:`${ee.value}%`},{label:"累计任务",value:l(q.value.total_tasks)},{label:"累计成功",value:l(q.value.success_tasks)}]),Ne=a(()=>[{label:"运行中",value:ke.value},{label:"排队中",value:ye.value},{label:"并发上限",value:l(b.value?.max_concurrent)||j.value||"-"},{label:"排队首条来源",value:ge(N.value[0]?.source)},{label:"排队首条状态",value:N.value[0]?.detail_status||N.value[0]?.status||"-"},{label:"最长等待",value:N.value[0]?.elapsed_display||"-"}]),Ie=a(()=>[{label:"总发送",value:l(p.value?.total_sent)},{label:"成功",value:l(p.value?.total_success)},{label:"失败",value:l(p.value?.total_failed)},{label:"成功率",value:`${G.value}%`},{label:"注册验证",value:l(p.value?.register_sent)},{label:"重置密码",value:l(p.value?.reset_sent)}]),De=a(()=>[{label:"总反馈",value:l(y.value?.total)},{label:"待处理",value:l(y.value?.pending)},{label:"已回复",value:l(y.value?.replied)}]),Ee=a(()=>[{label:"CPU",value:B(g.value?.cpu_percent)},{label:"内存",value:B(g.value?.memory_percent)},{label:"磁盘",value:B(g.value?.disk_percent)},{label:"容器状态",value:C.value?.status||"-"},{label:"容器名",value:C.value?.container_name||"-"},{label:"容器运行",value:C.value?.uptime||"-"}]),We=a(()=>[{label:"总 Worker",value:J.value},{label:"活跃 Worker",value:U.value},{label:"忙碌 Worker",value:F.value},{label:"空闲 Worker",value:K.value},{label:"任务队列",value:X.value}]),Qe=a(()=>{const t=v.value?.top_paths;return Array.isArray(t)?t.slice(0,3):[]}),Ve=a(()=>{const t=[{label:"总请求",value:l(v.value?.total_requests)},{label:"API请求",value:l(v.value?.api_requests)},{label:"慢请求",value:l(v.value?.slow_requests)},{label:"错误请求",value:l(v.value?.error_requests)}];return Qe.value.forEach((e,o)=>{const _=String(e?.path||"-");t.push({label:`慢接口${o+1}`,value:`${_} · 峰值 ${c(e?.max_ms)}`})}),t}),ze=a(()=>{const t=c(v.value?.avg_duration_ms),e=c(v.value?.max_duration_ms),o=Z(v.value?.last_request_ts),_=c(v.value?.slow_threshold_ms);return`均值 ${t} · 峰值 ${e} · 慢阈 ${_} · 最近 ${o}`}),Be=a(()=>(Array.isArray(r.value?.top_sql)?r.value.top_sql:[]).slice(0,3)),te=a(()=>{const t=l(r.value?.window_seconds);return t<=0?24:Math.max(1,Math.round(t/3600))}),Oe=a(()=>{const t=[{label:`慢SQL(${te.value}h)`,value:l(r.value?.total_slow_queries)},{label:"去重SQL",value:l(r.value?.unique_sql)},{label:"平均耗时",value:c(r.value?.avg_duration_ms)},{label:"峰值耗时",value:c(r.value?.max_duration_ms)}];return Be.value.forEach((e,o)=>{t.push({label:`慢SQL${o+1}`,value:`${c(e?.max_ms)} · ${String(e?.sql||"-")}`})}),t}),Ue=a(()=>{const t=c(r.value?.slow_threshold_ms),e=Z(r.value?.last_slow_ts);return`窗口 ${te.value}h · 慢阈 ${t} · 最近 ${e}`}),Fe=a(()=>(Array.isArray(r.value?.top_sql)?r.value.top_sql:[]).map((e,o)=>({rank:o+1,sql:String(e?.sql||"-"),count:l(e?.count),avg_ms:c(e?.avg_ms),max_ms:c(e?.max_ms),last_seen:O(e?.last_ts),sample_params:String(e?.sample_params||"-")}))),Ge=a(()=>[...Array.isArray(r.value?.recent_slow_sql)?r.value.recent_slow_sql:[]].sort((e,o)=>Number(o?.time||0)-Number(e?.time||0)).map(e=>({time_text:O(e?.time),sql:String(e?.sql||"-"),duration_ms:c(e?.duration_ms),params:String(e?.params||"-")}))),je=a(()=>(Array.isArray(v.value?.top_paths)?v.value.top_paths:[]).map((e,o)=>({rank:o+1,path:String(e?.path||"-"),count:l(e?.count),avg_ms:c(e?.avg_ms),max_ms:c(e?.max_ms),status_5xx:l(e?.status_5xx)}))),He=a(()=>[...Array.isArray(v.value?.recent_slow)?v.value.recent_slow:[]].sort((e,o)=>Number(o?.time||0)-Number(e?.time||0)).map(e=>({time_text:O(e?.time),method:String(e?.method||"-").toUpperCase(),path:String(e?.path||"-"),status:l(e?.status),duration_ms:c(e?.duration_ms)})));function Ze(t){const e=l(t);return e>=500?"danger":e>=400?"warning":e>=300?"info":"success"}function Ye(){V.value=!0}function Je(){z.value=!0}const ae=a(()=>{const t=r.value?.slow_threshold_ms;if(t!=null)return c(t);const e=f.value?.db_slow_query_ms;return e!=null?c(e):"-"}),Ke=a(()=>[{label:"定时任务",value:qe.value?"启用":"关闭"},{label:"执行时间",value:xe.value||"-"},{label:"浏览类型",value:$e.value||"-"},{label:"代理",value:Le.value?"启用":"关闭"},{label:"代理有效期",value:le.value?`${le.value} 分钟`:"-"},{label:"全局并发",value:j.value||"-"},{label:"单账号并发",value:Re.value||"-"},{label:"截图并发",value:Me.value||"-"},{label:"慢SQL阈值",value:ae.value}]),Xe=a(()=>[{key:"overview",title:"平台概览",desc:T.value?`更新 ${T.value}`:"核心指标",tone:"blue",items:Pe.value},{key:"task",title:"任务概览",desc:l(h.value.total_tasks)>0?`今日成功率 ${ee.value}%`:"今日暂无任务",tone:"purple",items:Ce.value},{key:"queue",title:"队列监控",desc:Ae.value,tone:"blue",items:Ne.value},{key:"email",title:"邮件报表",desc:`成功率 ${G.value}%`,tone:"cyan",items:Ie.value},{key:"feedback",title:"反馈概览",desc:`待处理 ${l(y.value?.pending)} 条`,tone:"orange",items:De.value},{key:"resource",title:"系统资源",desc:g.value?.uptime?`运行 ${g.value.uptime}`:"运行状态获取中",tone:"green",items:Ee.value},{key:"request",title:"接口性能",desc:ze.value,tone:"purple",items:Ve.value},{key:"slow_sql",title:"慢SQL监控",desc:Ue.value,tone:"red",items:Oe.value},{key:"worker",title:"截图线程池",desc:`活跃 ${U.value} · 忙碌 ${F.value}`,tone:"cyan",items:We.value},{key:"config",title:"配置概览",desc:"并发 / 代理 / 定时任务",tone:"red",items:Ke.value}]);let se=1;async function ue(t={}){const e=t.showLoading??!0;if(W.value)return;const o=!!t.forceStatsSync,_=o||se%et===0;se+=1,W.value=!0,e&&(E.value=!0);try{const[n,x,I,A,i,$,re,ie,ce,ve]=await Promise.allSettled([ml(),pl(),_l(),dl(),bl(),fl(),Tl(),hl(),wl(),gl()]);n.status==="fulfilled"&&(Q.value=n.value),x.status==="fulfilled"&&(b.value=x.value),I.status==="fulfilled"&&(p.value=I.value),A.status==="fulfilled"&&(y.value=A.value),i.status==="fulfilled"&&(g.value=i.value),$.status==="fulfilled"&&(C.value=$.value),re.status==="fulfilled"&&(L.value=re.value),ie.status==="fulfilled"&&(v.value=ie.value),ce.status==="fulfilled"&&(r.value=ce.value),ve.status==="fulfilled"&&(f.value=ve.value),_&&await be?.({force:o}),he()}finally{W.value=!1,e&&(E.value=!1)}}let M=null;function el(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function ll(){return el()?tt:lt}function oe(){M&&(clearTimeout(M),M=null)}function H(){oe(),M=window.setTimeout(async()=>{M=null,await ue({showLoading:!1}).catch(()=>{}),H()},ll())}function ne(){H()}return yl(()=>{ue({showLoading:!1}).catch(()=>{}).finally(()=>{H()}),window.addEventListener("visibilitychange",ne)}),Sl(()=>{oe(),window.removeEventListener("visibilitychange",ne)}),(t,e)=>{const o=R("el-button"),_=R("el-card"),n=R("el-table-column"),x=R("el-table"),I=R("el-tag"),A=R("el-dialog");return k(),S("div",Ll,[s("section",Rl,[s("div",Ml,[s("div",Al,[e[3]||(e[3]=s("h2",null,"报表中心",-1)),s("div",Pl,[T.value?(k(),S("span",Cl,"更新时间:"+d(T.value),1)):D("",!0),e[2]||(e[2]=s("span",{class:"hero-dot"},"·",-1)),s("span",null,"慢SQL阈值 "+d(ae.value),1),g.value?.uptime?(k(),S("span",Nl,"·")):D("",!0),g.value?.uptime?(k(),S("span",Il,"运行 "+d(g.value.uptime),1)):D("",!0)])])]),u(kl,{class:"hero-overview-grid",items:Y.value,loading:E.value,"min-width":165},null,8,["items","loading"])]),s("section",Dl,[(k(!0),S(_e,null,me(Xe.value,i=>(k(),ql(_,{key:i.key,shadow:"never",class:xl(["mobile-module-card",`mobile-tone-${i.tone}`]),"body-style":{padding:"12px"}},{default:w(()=>[s("div",El,[s("div",Wl,d(i.title),1),s("div",Ql,d(i.desc),1)]),s("div",Vl,[(k(!0),S(_e,null,me(i.items,$=>(k(),S("div",{key:`${i.key}-${$.label}`,class:"mobile-metric-item"},[s("div",zl,d($.label),1),s("div",Bl,d($.value),1)]))),128))]),i.key==="request"||i.key==="slow_sql"?(k(),S("div",Ol,[u(o,{size:"small",type:"primary",plain:"",onClick:$=>i.key==="request"?Ye():Je()},{default:w(()=>[pe(d(i.key==="request"?"查看慢接口详情":"查看慢SQL详情"),1)]),_:2},1032,["onClick"])])):D("",!0)]),_:2},1032,["class"]))),128))]),u(A,{modelValue:V.value,"onUpdate:modelValue":e[0]||(e[0]=i=>V.value=i),title:"慢接口详情",width:"min(1080px, 96vw)"},{default:w(()=>[s("div",Ul,[s("span",null,"总请求:"+d(l(v.value?.total_requests)),1),s("span",null,"API请求:"+d(l(v.value?.api_requests)),1),s("span",null,"慢请求:"+d(l(v.value?.slow_requests)),1),s("span",null,"错误请求:"+d(l(v.value?.error_requests)),1)]),s("div",Fl,[e[4]||(e[4]=s("div",{class:"request-dialog-title"},"慢接口排行榜",-1)),s("div",Gl,[u(x,{data:je.value,size:"small","max-height":"280"},{default:w(()=>[u(n,{prop:"rank",label:"#",width:"60"}),u(n,{prop:"path",label:"接口路径","min-width":"340","show-overflow-tooltip":""}),u(n,{prop:"count",label:"请求数",width:"100"}),u(n,{prop:"avg_ms",label:"平均耗时",width:"120"}),u(n,{prop:"max_ms",label:"峰值耗时",width:"120"}),u(n,{prop:"status_5xx",label:"5xx",width:"90"})]),_:1},8,["data"])])]),s("div",jl,[e[5]||(e[5]=s("div",{class:"request-dialog-title"},"最近慢请求",-1)),s("div",Hl,[u(x,{data:He.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"time_text",label:"时间",width:"180"}),u(n,{prop:"method",label:"方法",width:"90"}),u(n,{prop:"path",label:"接口路径","min-width":"320","show-overflow-tooltip":""}),u(n,{label:"状态",width:"100"},{default:w(i=>[u(I,{size:"small",type:Ze(i.row.status)},{default:w(()=>[pe(d(i.row.status||"-"),1)]),_:2},1032,["type"])]),_:1}),u(n,{prop:"duration_ms",label:"耗时",width:"110"})]),_:1},8,["data"])])])]),_:1},8,["modelValue"]),u(A,{modelValue:z.value,"onUpdate:modelValue":e[1]||(e[1]=i=>z.value=i),title:"慢SQL详情(近24小时)",width:"min(1080px, 96vw)"},{default:w(()=>[s("div",Zl,[s("span",null,"慢SQL总数:"+d(l(r.value?.total_slow_queries)),1),s("span",null,"去重SQL:"+d(l(r.value?.unique_sql)),1),s("span",null,"平均耗时:"+d(c(r.value?.avg_duration_ms)),1),s("span",null,"峰值耗时:"+d(c(r.value?.max_duration_ms)),1),s("span",null,"慢阈值:"+d(c(r.value?.slow_threshold_ms)),1)]),s("div",Yl,[e[6]||(e[6]=s("div",{class:"request-dialog-title"},"TOP 慢SQL(按出现次数)",-1)),s("div",Jl,[u(x,{data:Fe.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"rank",label:"#",width:"60"}),u(n,{prop:"sql",label:"SQL","min-width":"400","show-overflow-tooltip":""}),u(n,{prop:"count",label:"次数",width:"90"}),u(n,{prop:"avg_ms",label:"平均耗时",width:"120"}),u(n,{prop:"max_ms",label:"峰值耗时",width:"120"}),u(n,{prop:"last_seen",label:"最近出现",width:"180"}),u(n,{prop:"sample_params",label:"参数样本","min-width":"140","show-overflow-tooltip":""})]),_:1},8,["data"])])]),s("div",Kl,[e[7]||(e[7]=s("div",{class:"request-dialog-title"},"最近慢SQL",-1)),s("div",Xl,[u(x,{data:Ge.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"time_text",label:"时间",width:"180"}),u(n,{prop:"sql",label:"SQL","min-width":"420","show-overflow-tooltip":""}),u(n,{prop:"duration_ms",label:"耗时",width:"110"}),u(n,{prop:"params",label:"参数","min-width":"130","show-overflow-tooltip":""})]),_:1},8,["data"])])])]),_:1},8,["modelValue"])])}}},_t=vl(at,[["__scopeId","data-v-6101337a"]]);export{_t as default}; diff --git a/static/admin/assets/SecurityPage-yzYEGeTN.js b/static/admin/assets/SecurityPage-93lfkhLF.js similarity index 98% rename from static/admin/assets/SecurityPage-yzYEGeTN.js rename to static/admin/assets/SecurityPage-93lfkhLF.js index 45ee885..eeef0bc 100644 --- a/static/admin/assets/SecurityPage-yzYEGeTN.js +++ b/static/admin/assets/SecurityPage-93lfkhLF.js @@ -1,4 +1,4 @@ -import{a as g,_ as qe}from"./index-DOvMEmc8.js";import{M as Ee}from"./MetricGrid-C3Xjc9mZ.js";import{E as ee,a as w}from"./vendor-element-B5S5pUKo.js";import{r as d,c as oe,o as ze,aj as v,ap as Ae,n as P,q as c,t as p,L as a,E as l,I as i,K as Ge,a3 as Ke,D as b,F as te,J as f,G as ue}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function Oe(){const{data:u}=await g.get("/admin/security/dashboard");return u}async function He(u){const{data:m}=await g.get("/admin/security/threats",{params:u});return m}async function Je(){const{data:u}=await g.get("/admin/security/banned-ips");return u}async function Qe(){const{data:u}=await g.get("/admin/security/banned-users");return u}async function We(u){const{data:m}=await g.post("/admin/security/ban-ip",u);return m}async function Xe(u){const{data:m}=await g.post("/admin/security/unban-ip",{ip:u});return m}async function Ye(u){const{data:m}=await g.post("/admin/security/ban-user",u);return m}async function Ze(u){const{data:m}=await g.post("/admin/security/unban-user",{user_id:u});return m}async function et(u){const m=encodeURIComponent(String(u||"").trim()),{data:V}=await g.get(`/admin/security/ip-risk/${m}`);return V}async function tt(u){const{data:m}=await g.post("/admin/security/ip-risk/clear",{ip:u});return m}async function at(u){const m=encodeURIComponent(String(u||"").trim()),{data:V}=await g.get(`/admin/security/user-risk/${m}`);return V}async function lt(){const{data:u}=await g.post("/admin/security/cleanup",{});return u}const nt={class:"page-stack"},it={class:"app-page-title"},st={class:"toolbar"},ot={class:"filters"},ut={class:"table-wrap"},rt={key:1},dt={key:1},pt={class:"mono ellipsis"},ct={class:"ellipsis"},ft={class:"pagination"},mt={class:"page-hint app-muted"},vt={class:"toolbar"},_t={class:"table-wrap"},yt={class:"table-wrap"},bt={class:"filters"},gt={class:"filters"},kt={class:"risk-head"},ht={class:"risk-title"},wt={key:0},It={key:1},Vt={class:"toolbar"},xt={class:"table-wrap"},Ct={class:"mono ellipsis"},St={class:"ellipsis"},Tt={class:"dialog-actions"},re=20,Pt={__name:"SecurityPage",setup(u){const m=d("threats"),V=d(!1),L=d(null),ae=d(!1),q=d([]),E=d(0),C=d(1),U=d(""),B=d(""),$=d(!1),de=d([]),pe=d([]),ce=d("ips"),S=d(!1),R=d(!1),o=d({kind:"ip",ip:"",user_id:"",reason:"",duration_hours:24,permanent:!1}),z=d("ip"),k=d(!1),A=d(""),G=d(""),_=d(null),h=d(""),Ie=["sql_injection","xss","path_traversal","command_injection","ssrf","scanner","bruteforce","csrf","xxe","file_upload"];function le(n){const e=Number(n);return Number.isFinite(e)?e:0}function D(n){const e=Number(n||0);return e>=80?{label:"高",type:"danger"}:e>=50?{label:"中",type:"warning"}:{label:"低",type:"success"}}function fe(n){const e=String(n||"").trim();return e||"永久"}function me(n){const e=[];return n?.field_name&&e.push(`字段: ${n.field_name}`),n?.rule&&e.push(`规则: ${n.rule}`),n?.matched&&e.push(`匹配: ${n.matched}`),n?.value_preview&&e.push(`值: ${n.value_preview}`),e.length?e.join(" · "):"-"}function K(n){const e=String(n?.request_method||"").trim(),s=String(n?.request_path||"").trim();return`${e} ${s}`.trim()||"-"}const Ve=oe(()=>{const n=new Set(Ie),e=L.value?.recent_threat_events||[];for(const s of e){const y=String(s?.threat_type||"").trim();y&&n.add(y)}for(const s of q.value||[]){const y=String(s?.threat_type||"").trim();y&&n.add(y)}return Array.from(n).sort((s,y)=>s.localeCompare(y)).map(s=>({label:s,value:s}))}),xe=oe(()=>{const n=L.value||{};return[{key:"threat_events_24h",label:"最近24小时威胁事件",value:le(n.threat_events_24h),tone:"red",hint:"用于衡量当前攻击面活跃度"},{key:"banned_ip_count",label:"当前封禁 IP 数",value:le(n.banned_ip_count),tone:"orange",hint:"自动与人工封禁总量"},{key:"banned_user_count",label:"当前封禁用户数",value:le(n.banned_user_count),tone:"purple",hint:"高风险账户拦截情况"}]}),Ce=oe(()=>Math.max(1,Math.ceil((E.value||0)/re)));async function N(){V.value=!0;try{L.value=await Oe()}catch{L.value=null}finally{V.value=!1}}async function O(){ae.value=!0;try{const n={page:C.value,per_page:re};U.value&&(n.event_type=U.value),B.value&&(n.severity=B.value);const e=await He(n);q.value=e?.items||[],E.value=e?.total||0}catch{q.value=[],E.value=0}finally{ae.value=!1}}async function F(){if(!$.value){$.value=!0;try{const[n,e]=await Promise.allSettled([Je(),Qe()]);de.value=n.status==="fulfilled"?n.value?.items||[]:[],pe.value=e.status==="fulfilled"?e.value?.items||[]:[]}finally{$.value=!1}}}async function ve(){await Promise.allSettled([N(),O(),F()])}function Se(){C.value=1,O()}function Te(){U.value="",B.value="",C.value=1,O()}function _e(){o.value={kind:"ip",ip:"",user_id:"",reason:"",duration_hours:24,permanent:!1}}function H(n="ip",e={}){_e(),o.value.kind=n==="user"?"user":"ip",o.value.kind==="ip"?o.value.ip=String(e.ip||"").trim():o.value.user_id=String(e.user_id||"").trim(),e.reason&&(o.value.reason=String(e.reason||"").trim()),S.value=!0}async function Pe(){const n=o.value.kind,e=String(o.value.reason||"").trim(),s=!!o.value.permanent,y=Number(o.value.duration_hours||24);if(!e){w.error("原因不能为空");return}if(n==="ip"){const I=String(o.value.ip||"").trim();if(!I){w.error("IP不能为空");return}R.value=!0;try{await We({ip:I,reason:e,duration_hours:y,permanent:s}),w.success("IP已封禁"),S.value=!1,await Promise.allSettled([N(),F()])}catch{}finally{R.value=!1}return}const Q=String(o.value.user_id||"").trim(),r=Number.parseInt(Q,10);if(!Number.isFinite(r)){w.error("用户ID无效");return}R.value=!0;try{await Ye({user_id:r,reason:e,duration_hours:y,permanent:s}),w.success("用户已封禁"),S.value=!1,await Promise.allSettled([N(),F()])}catch{}finally{R.value=!1}}async function ye(n){const e=String(n||"").trim();if(e){try{await ee.confirm(`确定解除对 IP ${e} 的封禁吗?`,"解除封禁",{confirmButtonText:"解除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Xe(e),w.success("已解除IP封禁"),await Promise.allSettled([N(),F()])}catch{}}}async function be(n){const e=Number.parseInt(String(n||"").trim(),10);if(Number.isFinite(e)){try{await ee.confirm(`确定解除对 用户ID ${e} 的封禁吗?`,"解除封禁",{confirmButtonText:"解除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Ze(e),w.success("已解除用户封禁"),await Promise.allSettled([N(),F()])}catch{}}}function ge(n){const e=String(n||"").trim();e&&(m.value="risk",z.value="ip",A.value=e,J())}function ke(n){const e=String(n||"").trim();e&&(m.value="risk",z.value="user",G.value=e,ne())}async function J(){const n=String(A.value||"").trim();if(!n){w.error("请输入IP");return}k.value=!0;try{_.value=await et(n),h.value="ip"}catch{_.value=null,h.value=""}finally{k.value=!1}}async function ne(){const n=String(G.value||"").trim(),e=Number.parseInt(n,10);if(!Number.isFinite(e)){w.error("请输入有效的用户ID");return}k.value=!0;try{_.value=await at(e),h.value="user"}catch{_.value=null,h.value=""}finally{k.value=!1}}function Ue(){!_.value||!h.value||(h.value==="ip"?H("ip",{ip:_.value?.ip,reason:"风险查询手动封禁"}):H("user",{user_id:_.value?.user_id,reason:"风险查询手动封禁"}))}async function Be(){!_.value||!h.value||(h.value==="ip"?(await ye(_.value?.ip),await J()):(await be(_.value?.user_id),await ne()))}async function $e(){if(h.value!=="ip")return;const n=String(_.value?.ip||"").trim();if(n){try{await ee.confirm(`确定清除 IP ${n} 的风险分吗? +import{a as g,_ as qe}from"./index-6ynv0Z9Y.js";import{M as Ee}from"./MetricGrid-kv-nSROj.js";import{E as ee,a as w}from"./vendor-element-CIudPaVX.js";import{r as d,c as oe,o as ze,aj as v,ap as Ae,n as P,q as c,t as p,L as a,E as l,I as i,K as Ge,a3 as Ke,D as b,F as te,J as f,G as ue}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-DszMq72k.js";async function Oe(){const{data:u}=await g.get("/admin/security/dashboard");return u}async function He(u){const{data:m}=await g.get("/admin/security/threats",{params:u});return m}async function Je(){const{data:u}=await g.get("/admin/security/banned-ips");return u}async function Qe(){const{data:u}=await g.get("/admin/security/banned-users");return u}async function We(u){const{data:m}=await g.post("/admin/security/ban-ip",u);return m}async function Xe(u){const{data:m}=await g.post("/admin/security/unban-ip",{ip:u});return m}async function Ye(u){const{data:m}=await g.post("/admin/security/ban-user",u);return m}async function Ze(u){const{data:m}=await g.post("/admin/security/unban-user",{user_id:u});return m}async function et(u){const m=encodeURIComponent(String(u||"").trim()),{data:V}=await g.get(`/admin/security/ip-risk/${m}`);return V}async function tt(u){const{data:m}=await g.post("/admin/security/ip-risk/clear",{ip:u});return m}async function at(u){const m=encodeURIComponent(String(u||"").trim()),{data:V}=await g.get(`/admin/security/user-risk/${m}`);return V}async function lt(){const{data:u}=await g.post("/admin/security/cleanup",{});return u}const nt={class:"page-stack"},it={class:"app-page-title"},st={class:"toolbar"},ot={class:"filters"},ut={class:"table-wrap"},rt={key:1},dt={key:1},pt={class:"mono ellipsis"},ct={class:"ellipsis"},ft={class:"pagination"},mt={class:"page-hint app-muted"},vt={class:"toolbar"},_t={class:"table-wrap"},yt={class:"table-wrap"},bt={class:"filters"},gt={class:"filters"},kt={class:"risk-head"},ht={class:"risk-title"},wt={key:0},It={key:1},Vt={class:"toolbar"},xt={class:"table-wrap"},Ct={class:"mono ellipsis"},St={class:"ellipsis"},Tt={class:"dialog-actions"},re=20,Pt={__name:"SecurityPage",setup(u){const m=d("threats"),V=d(!1),L=d(null),ae=d(!1),q=d([]),E=d(0),C=d(1),U=d(""),B=d(""),$=d(!1),de=d([]),pe=d([]),ce=d("ips"),S=d(!1),R=d(!1),o=d({kind:"ip",ip:"",user_id:"",reason:"",duration_hours:24,permanent:!1}),z=d("ip"),k=d(!1),A=d(""),G=d(""),_=d(null),h=d(""),Ie=["sql_injection","xss","path_traversal","command_injection","ssrf","scanner","bruteforce","csrf","xxe","file_upload"];function le(n){const e=Number(n);return Number.isFinite(e)?e:0}function D(n){const e=Number(n||0);return e>=80?{label:"高",type:"danger"}:e>=50?{label:"中",type:"warning"}:{label:"低",type:"success"}}function fe(n){const e=String(n||"").trim();return e||"永久"}function me(n){const e=[];return n?.field_name&&e.push(`字段: ${n.field_name}`),n?.rule&&e.push(`规则: ${n.rule}`),n?.matched&&e.push(`匹配: ${n.matched}`),n?.value_preview&&e.push(`值: ${n.value_preview}`),e.length?e.join(" · "):"-"}function K(n){const e=String(n?.request_method||"").trim(),s=String(n?.request_path||"").trim();return`${e} ${s}`.trim()||"-"}const Ve=oe(()=>{const n=new Set(Ie),e=L.value?.recent_threat_events||[];for(const s of e){const y=String(s?.threat_type||"").trim();y&&n.add(y)}for(const s of q.value||[]){const y=String(s?.threat_type||"").trim();y&&n.add(y)}return Array.from(n).sort((s,y)=>s.localeCompare(y)).map(s=>({label:s,value:s}))}),xe=oe(()=>{const n=L.value||{};return[{key:"threat_events_24h",label:"最近24小时威胁事件",value:le(n.threat_events_24h),tone:"red",hint:"用于衡量当前攻击面活跃度"},{key:"banned_ip_count",label:"当前封禁 IP 数",value:le(n.banned_ip_count),tone:"orange",hint:"自动与人工封禁总量"},{key:"banned_user_count",label:"当前封禁用户数",value:le(n.banned_user_count),tone:"purple",hint:"高风险账户拦截情况"}]}),Ce=oe(()=>Math.max(1,Math.ceil((E.value||0)/re)));async function N(){V.value=!0;try{L.value=await Oe()}catch{L.value=null}finally{V.value=!1}}async function O(){ae.value=!0;try{const n={page:C.value,per_page:re};U.value&&(n.event_type=U.value),B.value&&(n.severity=B.value);const e=await He(n);q.value=e?.items||[],E.value=e?.total||0}catch{q.value=[],E.value=0}finally{ae.value=!1}}async function F(){if(!$.value){$.value=!0;try{const[n,e]=await Promise.allSettled([Je(),Qe()]);de.value=n.status==="fulfilled"?n.value?.items||[]:[],pe.value=e.status==="fulfilled"?e.value?.items||[]:[]}finally{$.value=!1}}}async function ve(){await Promise.allSettled([N(),O(),F()])}function Se(){C.value=1,O()}function Te(){U.value="",B.value="",C.value=1,O()}function _e(){o.value={kind:"ip",ip:"",user_id:"",reason:"",duration_hours:24,permanent:!1}}function H(n="ip",e={}){_e(),o.value.kind=n==="user"?"user":"ip",o.value.kind==="ip"?o.value.ip=String(e.ip||"").trim():o.value.user_id=String(e.user_id||"").trim(),e.reason&&(o.value.reason=String(e.reason||"").trim()),S.value=!0}async function Pe(){const n=o.value.kind,e=String(o.value.reason||"").trim(),s=!!o.value.permanent,y=Number(o.value.duration_hours||24);if(!e){w.error("原因不能为空");return}if(n==="ip"){const I=String(o.value.ip||"").trim();if(!I){w.error("IP不能为空");return}R.value=!0;try{await We({ip:I,reason:e,duration_hours:y,permanent:s}),w.success("IP已封禁"),S.value=!1,await Promise.allSettled([N(),F()])}catch{}finally{R.value=!1}return}const Q=String(o.value.user_id||"").trim(),r=Number.parseInt(Q,10);if(!Number.isFinite(r)){w.error("用户ID无效");return}R.value=!0;try{await Ye({user_id:r,reason:e,duration_hours:y,permanent:s}),w.success("用户已封禁"),S.value=!1,await Promise.allSettled([N(),F()])}catch{}finally{R.value=!1}}async function ye(n){const e=String(n||"").trim();if(e){try{await ee.confirm(`确定解除对 IP ${e} 的封禁吗?`,"解除封禁",{confirmButtonText:"解除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Xe(e),w.success("已解除IP封禁"),await Promise.allSettled([N(),F()])}catch{}}}async function be(n){const e=Number.parseInt(String(n||"").trim(),10);if(Number.isFinite(e)){try{await ee.confirm(`确定解除对 用户ID ${e} 的封禁吗?`,"解除封禁",{confirmButtonText:"解除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Ze(e),w.success("已解除用户封禁"),await Promise.allSettled([N(),F()])}catch{}}}function ge(n){const e=String(n||"").trim();e&&(m.value="risk",z.value="ip",A.value=e,J())}function ke(n){const e=String(n||"").trim();e&&(m.value="risk",z.value="user",G.value=e,ne())}async function J(){const n=String(A.value||"").trim();if(!n){w.error("请输入IP");return}k.value=!0;try{_.value=await et(n),h.value="ip"}catch{_.value=null,h.value=""}finally{k.value=!1}}async function ne(){const n=String(G.value||"").trim(),e=Number.parseInt(n,10);if(!Number.isFinite(e)){w.error("请输入有效的用户ID");return}k.value=!0;try{_.value=await at(e),h.value="user"}catch{_.value=null,h.value=""}finally{k.value=!1}}function Ue(){!_.value||!h.value||(h.value==="ip"?H("ip",{ip:_.value?.ip,reason:"风险查询手动封禁"}):H("user",{user_id:_.value?.user_id,reason:"风险查询手动封禁"}))}async function Be(){!_.value||!h.value||(h.value==="ip"?(await ye(_.value?.ip),await J()):(await be(_.value?.user_id),await ne()))}async function $e(){if(h.value!=="ip")return;const n=String(_.value?.ip||"").trim();if(n){try{await ee.confirm(`确定清除 IP ${n} 的风险分吗? 清除风险分不会删除威胁历史,也不会解除封禁。`,"清除风险分",{confirmButtonText:"清除",cancelButtonText:"取消",type:"warning"})}catch{return}if(!k.value){k.value=!0;try{await tt(n),w.success("IP风险分已清零")}catch{}finally{k.value=!1}await J()}}}const ie=d(!1);async function Re(){try{await ee.confirm(`确定清理过期封禁记录,并衰减风险分吗? diff --git a/static/admin/assets/SettingsPage-BbHyIZsy.js b/static/admin/assets/SettingsPage-BbHyIZsy.js new file mode 100644 index 0000000..2c6467e --- /dev/null +++ b/static/admin/assets/SettingsPage-BbHyIZsy.js @@ -0,0 +1 @@ +import{ad as be}from"./vendor-misc-DszMq72k.js";import{f as he,a as ke,u as Pe,b as xe,c as ne,d as Ae,r as Se,e as Ce,g as Be,h as Ve,l as Te,p as Ee}from"./admin-VsbfHbbH.js";import{_ as Ue}from"./index-6ynv0Z9Y.js";import{a as u,E as q}from"./vendor-element-CIudPaVX.js";import{r as c,c as De,o as Oe,R as Me,aj as m,ap as Ne,n as P,q as f,t as v,L as s,E as i,I as x,F as se,D as w,G as le,K as qe,a3 as $e,y as Re,J as $}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";function ze(n){if(!n||typeof n!="object")throw new Error("Passkey参数无效");return n.publicKey&&typeof n.publicKey=="object"?n.publicKey:n}function H(n){const t=String(n||""),l="=".repeat((4-t.length%4)%4),d=(t+l).replace(/-/g,"+").replace(/_/g,"/"),_=window.atob(d),y=new Uint8Array(_.length);for(let b=0;b<_.length;b+=1)y[b]=_.charCodeAt(b);return y}function C(n){const t=n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n||[]);let l="";for(let d=0;d({...d,id:H(d.id)}))),l}function Ie(n){if(!n)return null;const t=n.response||{},l={id:n.id,rawId:C(n.rawId),type:n.type,authenticatorAttachment:n.authenticatorAttachment||void 0,response:{}};return t.clientDataJSON&&(l.response.clientDataJSON=C(t.clientDataJSON)),t.attestationObject&&(l.response.attestationObject=C(t.attestationObject)),t.authenticatorData&&(l.response.authenticatorData=C(t.authenticatorData)),t.signature&&(l.response.signature=C(t.signature)),t.userHandle?l.response.userHandle=C(t.userHandle):l.response.userHandle=null,typeof t.getTransports=="function"&&(l.response.transports=t.getTransports()||[]),l}function Le(){return typeof window<"u"&&window.isSecureContext&&!!window.PublicKeyCredential&&!!navigator.credentials}function Qe(){const n=String(window?.navigator?.userAgent||"");return/MiuiBrowser|XiaoMi\/MiuiBrowser/i.test(n)}function He(n,t="Passkey操作"){const l=String(n?.name||"").trim(),d=String(n?.message||"").trim();return l==="NotAllowedError"?`${t}未完成(可能已取消、超时或设备未响应)`:l==="NotReadableError"?/credential manager/i.test(d)&&Qe()?"当前小米浏览器与系统凭据管理器兼容性较差,请改用系统 Chrome 或 Edge 后重试。":/credential manager/i.test(d)?"系统凭据管理器返回异常,请确认已设置系统锁屏并改用系统 Chrome/Edge 后重试。":d||`${t}失败(设备读取异常)`:l==="SecurityError"?"当前环境安全策略不满足 Passkey 要求,请确认使用 HTTPS 且证书有效。":d||`${t}失败`}async function je(n){const t=Ke(n),l=await navigator.credentials.create({publicKey:t});return Ie(l)}const Je={class:"page-stack"},Fe={class:"section-head"},Ge={key:1,class:"social-list"},Xe={class:"social-provider"},Ye={class:"social-info"},Ze={key:0},We={key:1},ea={class:"social-actions"},aa={class:"social-qr-box"},ta={class:"social-qr-prompt"},na=24e4,sa={__name:"SettingsPage",setup(n){const t=c(""),l=c(""),d=c(""),_=c(""),y=c(!1),b=c(!1),R=c(!1),E=c(""),S=c([]),h=c(null),A=c(0),z=c(!1),U=c(""),K=c([]),B=c(!1),D=c(!1),O=c(""),I=c("wx");let V=null,j=0;const J={qq:"QQ",wx:"微信",alipay:"支付宝"},F=De(()=>K.value.filter(a=>J[a.provider]));function re(a){const e=String(a||"");return e.length<8?{ok:!1,message:"密码长度至少8位"}:e.length>128?{ok:!1,message:"密码长度不能超过128个字符"}:!/[a-zA-Z]/.test(e)||!/\d/.test(e)?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}async function G(){try{await Te()}catch{}finally{window.location.href="/yuyx"}}async function oe(){const a=t.value.trim();if(!a){u.error("请输入新用户名");return}try{await q.confirm(`确定将管理员用户名修改为「${a}」吗?修改后需要重新登录。`,"修改用户名",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}y.value=!0;try{await Pe(a),u.success("用户名修改成功,请重新登录"),t.value="",setTimeout(G,1200)}catch{}finally{y.value=!1}}async function ie(){const a=l.value,e=d.value,r=_.value;if(!a){u.error("请输入当前密码");return}if(!e){u.error("请输入新密码");return}const p=re(e);if(!p.ok){u.error(p.message);return}if(e!==r){u.error("两次输入的新密码不一致");return}try{await q.confirm("确定修改管理员密码吗?修改后需要重新登录。","修改密码",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}y.value=!0;try{await xe({currentPassword:a,newPassword:e}),u.success("密码修改成功,请重新登录"),l.value="",d.value="",_.value="",setTimeout(G,1200)}catch{}finally{y.value=!1}}async function L(){b.value=!0;try{const a=await he();S.value=Array.isArray(a?.items)?a.items:[],S.value.length<3?await X():(h.value=null,A.value=0)}catch{S.value=[],h.value=null,A.value=0}finally{b.value=!1}}function ue(){return!h.value||Date.now()-Number(A.value||0)>na?null:h.value}async function X(){try{const a=await ne({});h.value=a,A.value=Date.now()}catch{h.value=null,A.value=0}}async function de(){if(!Le()){u.error("当前浏览器或环境不支持Passkey(需 HTTPS)");return}if(S.value.length>=3){u.error("最多可绑定3台设备");return}R.value=!0;try{let a=ue();a||(a=await ne({}));const e=await je(a?.publicKey||{});await Ae({credential:e,device_name:E.value.trim()}),h.value=null,A.value=0,E.value="",u.success("Passkey设备添加成功"),await L()}catch(a){try{await Se({stage:"register",source:"admin-settings",name:a?.name||"",message:a?.message||"",code:a?.code||"",user_agent:navigator.userAgent||""})}catch{}h.value=null,A.value=0,await X();const r=a?.response?.data?.error||He(a,"Passkey注册");u.error(r)}finally{R.value=!1}}async function ce(a){try{await q.confirm(`确定删除设备「${a?.device_name||"未命名设备"}」吗?`,"删除Passkey设备",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Ce(a.id),u.success("设备已删除"),await L()}catch(e){const r=e?.response?.data;u.error(r?.error||"删除失败")}}function pe(){const a=new URL(window.location.href);return a.pathname="/yuyx/admin-social-bind-callback",a.search="",a.hash="",a.toString()}function fe(a){return a==="wx"?"微":a==="qq"?"Q":"支"}function ve(a){return a==="wx"?"请使用微信扫描二维码完成绑定":a==="qq"?"请使用 QQ 扫描二维码完成绑定":"请使用支付宝扫描二维码完成绑定"}function Q(){V&&(window.clearTimeout(V),V=null)}function M(){Q(),D.value=!1,O.value=""}function ye(a,e,r){Q(),j=Date.now();const p=async()=>{if(Date.now()-j>300*1e3){M(),u.warning("二维码已过期,请重新获取");return}try{const g=await Ee({provider:a,state:e});if(g?.status==="authorized"&&g?.url){M(),window.location.assign(g.url);return}V=window.setTimeout(p,Math.max(Number(r||2),2)*1e3)}catch(g){M();const k=g?.response?.data;u.error(k?.error||"扫码状态获取失败,请重新尝试")}};V=window.setTimeout(p,Math.max(Number(r),2)*1e3)}async function Y(){z.value=!0;try{const a=await ke();B.value=!!a?.enabled,K.value=Array.isArray(a?.items)?a.items:[]}catch{B.value=!1,K.value=[]}finally{z.value=!1}}async function me(a){const e=String(a?.provider||"").trim();if(!(!e||U.value)){U.value=e;try{const r=await Ve({provider:e,redirect_uri:pe()});if(e!=="wx"){window.location.assign(r.url);return}const p=r.scan_url||r.qrcode||r.url;if(!p||!r.scan_state){u.error("微信二维码获取失败");return}I.value=e,O.value=p,D.value=!0,ye(e,r.scan_state,r.scan_poll_interval||2)}catch(r){const p=r?.response?.data;u.error(p?.error||"获取聚合登录地址失败")}finally{U.value=""}}}async function ge(a){try{await q.confirm(`确定解绑${a?.provider_label||"快捷登录"}吗?`,"解绑快捷登录",{confirmButtonText:"解绑",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Be(a.provider),u.success("已解绑"),await Y()}catch(e){const r=e?.response?.data;u.error(r?.error||"解绑失败")}}return Oe(()=>{L(),Y()}),Me(()=>{Q()}),(a,e)=>{const r=m("el-input"),p=m("el-form-item"),g=m("el-form"),k=m("el-button"),N=m("el-card"),Z=m("el-alert"),W=m("el-empty"),T=m("el-table-column"),we=m("el-table"),ee=m("el-tag"),_e=m("el-dialog"),ae=Ne("loading");return f(),P("div",Je,[e[19]||(e[19]=v("div",{class:"app-page-title"},[v("h2",null,"设置"),v("span",{class:"app-muted"},"管理员账号设置")],-1)),s(N,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:i(()=>[e[7]||(e[7]=v("h3",{class:"section-title"},"修改管理员用户名",-1)),s(g,{"label-width":"120px"},{default:i(()=>[s(p,{label:"新用户名"},{default:i(()=>[s(r,{modelValue:t.value,"onUpdate:modelValue":e[0]||(e[0]=o=>t.value=o),placeholder:"输入新用户名",disabled:y.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),s(k,{type:"primary",loading:y.value,onClick:oe},{default:i(()=>[...e[6]||(e[6]=[x("保存用户名",-1)])]),_:1},8,["loading"])]),_:1}),s(N,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:i(()=>[e[9]||(e[9]=v("h3",{class:"section-title"},"修改管理员密码",-1)),s(g,{"label-width":"120px"},{default:i(()=>[s(p,{label:"当前密码"},{default:i(()=>[s(r,{modelValue:l.value,"onUpdate:modelValue":e[1]||(e[1]=o=>l.value=o),type:"password","show-password":"",placeholder:"输入当前密码",disabled:y.value},null,8,["modelValue","disabled"])]),_:1}),s(p,{label:"新密码"},{default:i(()=>[s(r,{modelValue:d.value,"onUpdate:modelValue":e[2]||(e[2]=o=>d.value=o),type:"password","show-password":"",placeholder:"输入新密码",disabled:y.value},null,8,["modelValue","disabled"])]),_:1}),s(p,{label:"确认新密码"},{default:i(()=>[s(r,{modelValue:_.value,"onUpdate:modelValue":e[3]||(e[3]=o=>_.value=o),type:"password","show-password":"",placeholder:"再次输入新密码",disabled:y.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),s(k,{type:"primary",loading:y.value,onClick:ie},{default:i(()=>[...e[8]||(e[8]=[x("保存密码",-1)])]),_:1},8,["loading"]),e[10]||(e[10]=v("div",{class:"help"},"建议使用更强密码(至少8位且包含字母与数字)。",-1))]),_:1}),s(N,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:i(()=>[e[13]||(e[13]=v("h3",{class:"section-title"},"Passkey设备",-1)),s(Z,{type:"info",closable:!1,title:"最多可绑定3台设备,可用于管理员无密码登录。","show-icon":"",class:"help-alert"}),s(g,{inline:""},{default:i(()=>[s(p,{label:"设备备注"},{default:i(()=>[s(r,{modelValue:E.value,"onUpdate:modelValue":e[4]||(e[4]=o=>E.value=o),placeholder:"例如:值班iPhone / 办公Mac",maxlength:"40","show-word-limit":""},null,8,["modelValue"])]),_:1}),s(p,null,{default:i(()=>[s(k,{type:"primary",loading:R.value,onClick:de},{default:i(()=>[...e[11]||(e[11]=[x("添加Passkey设备",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),se((f(),P("div",null,[S.value.length===0?(f(),w(W,{key:0,description:"暂无Passkey设备"})):(f(),w(we,{key:1,data:S.value,size:"small",style:{width:"100%"}},{default:i(()=>[s(T,{prop:"device_name",label:"设备备注","min-width":"160"}),s(T,{prop:"credential_id_preview",label:"凭据ID","min-width":"180"}),s(T,{prop:"last_used_at",label:"最近使用","min-width":"140"}),s(T,{prop:"created_at",label:"创建时间","min-width":"140"}),s(T,{label:"操作",width:"100",fixed:"right"},{default:i(({row:o})=>[s(k,{type:"danger",text:"",onClick:te=>ce(o)},{default:i(()=>[...e[12]||(e[12]=[x("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])),[[ae,b.value]])]),_:1}),s(N,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:i(()=>[v("div",Fe,[e[16]||(e[16]=v("h3",{class:"section-title"},"快捷登录绑定",-1)),B.value?(f(),w(ee,{key:0,size:"small",type:"success"},{default:i(()=>[...e[14]||(e[14]=[x("已启用",-1)])]),_:1})):(f(),w(ee,{key:1,size:"small",type:"info"},{default:i(()=>[...e[15]||(e[15]=[x("未启用",-1)])]),_:1}))]),B.value?le("",!0):(f(),w(Z,{key:0,type:"warning",closable:!1,title:"聚合登录未启用,请先在系统配置中填写并启用 Space 聚合登录。","show-icon":"",class:"help-alert"})),se((f(),P("div",null,[F.value.length===0?(f(),w(W,{key:0,description:"暂无可绑定的快捷登录方式"})):(f(),P("div",Ge,[(f(!0),P(qe,null,$e(F.value,o=>(f(),P("div",{key:o.provider,class:"social-row"},[v("div",Xe,[v("span",{class:Re(["social-icon",`provider-${o.provider}`])},$(fe(o.provider)),3),v("div",Ye,[v("strong",null,$(o.provider_label),1),o.bound?(f(),P("span",Ze,$(o.nickname||"已绑定"),1)):(f(),P("span",We,"未绑定"))])]),v("div",ea,[o.bound?(f(),w(k,{key:0,type:"danger",text:"",onClick:te=>ge(o)},{default:i(()=>[...e[17]||(e[17]=[x(" 解绑 ",-1)])]),_:1},8,["onClick"])):(f(),w(k,{key:1,type:"primary",plain:"",disabled:!B.value,loading:U.value===o.provider,onClick:te=>me(o)},{default:i(()=>[...e[18]||(e[18]=[x(" 绑定 ",-1)])]),_:1},8,["disabled","loading","onClick"]))])]))),128))]))])),[[ae,z.value]]),s(_e,{modelValue:D.value,"onUpdate:modelValue":e[5]||(e[5]=o=>D.value=o),title:`${J[I.value]}绑定`,width:"min(340px, 92vw)",onClose:M},{default:i(()=>[v("div",aa,[O.value?(f(),w(be,{key:0,value:O.value,size:220,level:"M"},null,8,["value"])):le("",!0),v("div",ta,$(ve(I.value)),1)])]),_:1},8,["modelValue","title"])]),_:1})])}}},ca=Ue(sa,[["__scopeId","data-v-e6d9cfda"]]);export{ca as default}; diff --git a/static/admin/assets/SettingsPage-CjIQQfeg.css b/static/admin/assets/SettingsPage-CjIQQfeg.css new file mode 100644 index 0000000..5d4767a --- /dev/null +++ b/static/admin/assets/SettingsPage-CjIQQfeg.css @@ -0,0 +1 @@ +.page-stack[data-v-e6d9cfda]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-e6d9cfda]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-e6d9cfda]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.section-head[data-v-e6d9cfda]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.section-head .section-title[data-v-e6d9cfda]{margin-bottom:0}.help[data-v-e6d9cfda]{margin-top:10px;font-size:12px;color:var(--app-muted)}.help-alert[data-v-e6d9cfda]{margin-bottom:12px}.social-list[data-v-e6d9cfda]{display:flex;flex-direction:column;gap:10px}.social-row[data-v-e6d9cfda]{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--app-border);border-radius:10px;background:#f8fafcb8}.social-provider[data-v-e6d9cfda]{display:flex;align-items:center;gap:10px;min-width:0}.social-icon[data-v-e6d9cfda]{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:#fff;font-size:13px;font-weight:800}.provider-wx[data-v-e6d9cfda]{background:#16a34a}.provider-qq[data-v-e6d9cfda]{background:#2563eb}.provider-alipay[data-v-e6d9cfda]{background:#1677ff}.social-info[data-v-e6d9cfda]{min-width:0;display:flex;flex-direction:column;gap:2px}.social-info strong[data-v-e6d9cfda]{font-size:14px}.social-info span[data-v-e6d9cfda]{max-width:min(52vw,360px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--app-muted)}.social-actions[data-v-e6d9cfda]{flex:0 0 auto}.social-qr-box[data-v-e6d9cfda]{display:flex;flex-direction:column;align-items:center;gap:12px}.social-qr-prompt[data-v-e6d9cfda]{font-size:13px;color:#374151;text-align:center}@media(max-width:640px){.social-row[data-v-e6d9cfda]{align-items:flex-start;flex-direction:column}.social-actions[data-v-e6d9cfda]{width:100%;display:flex;justify-content:flex-end}} diff --git a/static/admin/assets/SettingsPage-D-iYz1zh.css b/static/admin/assets/SettingsPage-D-iYz1zh.css deleted file mode 100644 index fa64dc3..0000000 --- a/static/admin/assets/SettingsPage-D-iYz1zh.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-1418d488]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-1418d488]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-1418d488]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-1418d488]{margin-top:10px;font-size:12px;color:var(--app-muted)}.help-alert[data-v-1418d488]{margin-bottom:12px} diff --git a/static/admin/assets/SettingsPage-DF5fL8gq.js b/static/admin/assets/SettingsPage-DF5fL8gq.js deleted file mode 100644 index 2f2ad25..0000000 --- a/static/admin/assets/SettingsPage-DF5fL8gq.js +++ /dev/null @@ -1 +0,0 @@ -import{a as v,_ as L}from"./index-DOvMEmc8.js";import{a as u,E as O}from"./vendor-element-B5S5pUKo.js";import{r as p,o as Y,aj as m,ap as Z,n as N,q as C,t as b,L as r,E as o,I as S,F as Q,D as K}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function W(t){const{data:e}=await v.put("/admin/username",{new_username:t});return e}async function ee(t={}){const e=String(t.currentPassword||""),n=String(t.newPassword||""),{data:l}=await v.put("/admin/password",{current_password:e,new_password:n});return l}async function te(){const{data:t}=await v.post("/logout");return t}async function ae(){const{data:t}=await v.get("/admin/passkeys");return t}async function $(t={}){const{data:e}=await v.post("/admin/passkeys/register/options",t);return e}async function ne(t={}){const{data:e}=await v.post("/admin/passkeys/register/verify",t);return e}async function se(t){const{data:e}=await v.delete(`/admin/passkeys/${t}`);return e}async function re(t={}){const{data:e}=await v.post("/admin/passkeys/client-error",t);return e}function le(t){if(!t||typeof t!="object")throw new Error("Passkey参数无效");return t.publicKey&&typeof t.publicKey=="object"?t.publicKey:t}function D(t){const e=String(t||""),n="=".repeat((4-e.length%4)%4),l=(e+n).replace(/-/g,"+").replace(/_/g,"/"),y=window.atob(l),i=new Uint8Array(y.length);for(let w=0;w({...l,id:D(l.id)}))),n}function ie(t){if(!t)return null;const e=t.response||{},n={id:t.id,rawId:h(t.rawId),type:t.type,authenticatorAttachment:t.authenticatorAttachment||void 0,response:{}};return e.clientDataJSON&&(n.response.clientDataJSON=h(e.clientDataJSON)),e.attestationObject&&(n.response.attestationObject=h(e.attestationObject)),e.authenticatorData&&(n.response.authenticatorData=h(e.authenticatorData)),e.signature&&(n.response.signature=h(e.signature)),e.userHandle?n.response.userHandle=h(e.userHandle):n.response.userHandle=null,typeof e.getTransports=="function"&&(n.response.transports=e.getTransports()||[]),n}function ue(){return typeof window<"u"&&window.isSecureContext&&!!window.PublicKeyCredential&&!!navigator.credentials}function de(){const t=String(window?.navigator?.userAgent||"");return/MiuiBrowser|XiaoMi\/MiuiBrowser/i.test(t)}function ce(t,e="Passkey操作"){const n=String(t?.name||"").trim(),l=String(t?.message||"").trim();return n==="NotAllowedError"?`${e}未完成(可能已取消、超时或设备未响应)`:n==="NotReadableError"?/credential manager/i.test(l)&&de()?"当前小米浏览器与系统凭据管理器兼容性较差,请改用系统 Chrome 或 Edge 后重试。":/credential manager/i.test(l)?"系统凭据管理器返回异常,请确认已设置系统锁屏并改用系统 Chrome/Edge 后重试。":l||`${e}失败(设备读取异常)`:n==="SecurityError"?"当前环境安全策略不满足 Passkey 要求,请确认使用 HTTPS 且证书有效。":l||`${e}失败`}async function pe(t){const e=oe(t),n=await navigator.credentials.create({publicKey:e});return ie(n)}const fe={class:"page-stack"},me=24e4,ye={__name:"SettingsPage",setup(t){const e=p(""),n=p(""),l=p(""),y=p(""),i=p(!1),w=p(!1),V=p(!1),A=p(""),k=p([]),g=p(null),_=p(0);function H(s){const a=String(s||"");return a.length<8?{ok:!1,message:"密码长度至少8位"}:a.length>128?{ok:!1,message:"密码长度不能超过128个字符"}:!/[a-zA-Z]/.test(a)||!/\d/.test(a)?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}async function U(){try{await te()}catch{}finally{window.location.href="/yuyx"}}async function I(){const s=e.value.trim();if(!s){u.error("请输入新用户名");return}try{await O.confirm(`确定将管理员用户名修改为「${s}」吗?修改后需要重新登录。`,"修改用户名",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}i.value=!0;try{await W(s),u.success("用户名修改成功,请重新登录"),e.value="",setTimeout(U,1200)}catch{}finally{i.value=!1}}async function R(){const s=n.value,a=l.value,d=y.value;if(!s){u.error("请输入当前密码");return}if(!a){u.error("请输入新密码");return}const f=H(a);if(!f.ok){u.error(f.message);return}if(a!==d){u.error("两次输入的新密码不一致");return}try{await O.confirm("确定修改管理员密码吗?修改后需要重新登录。","修改密码",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}i.value=!0;try{await ee({currentPassword:s,newPassword:a}),u.success("密码修改成功,请重新登录"),n.value="",l.value="",y.value="",setTimeout(U,1200)}catch{}finally{i.value=!1}}async function T(){w.value=!0;try{const s=await ae();k.value=Array.isArray(s?.items)?s.items:[],k.value.length<3?await M():(g.value=null,_.value=0)}catch{k.value=[],g.value=null,_.value=0}finally{w.value=!1}}function j(){return!g.value||Date.now()-Number(_.value||0)>me?null:g.value}async function M(){try{const s=await $({});g.value=s,_.value=Date.now()}catch{g.value=null,_.value=0}}async function z(){if(!ue()){u.error("当前浏览器或环境不支持Passkey(需 HTTPS)");return}if(k.value.length>=3){u.error("最多可绑定3台设备");return}V.value=!0;try{let s=j();s||(s=await $({}));const a=await pe(s?.publicKey||{});await ne({credential:a,device_name:A.value.trim()}),g.value=null,_.value=0,A.value="",u.success("Passkey设备添加成功"),await T()}catch(s){try{await re({stage:"register",source:"admin-settings",name:s?.name||"",message:s?.message||"",code:s?.code||"",user_agent:navigator.userAgent||""})}catch{}g.value=null,_.value=0,await M();const d=s?.response?.data?.error||ce(s,"Passkey注册");u.error(d)}finally{V.value=!1}}async function J(s){try{await O.confirm(`确定删除设备「${s?.device_name||"未命名设备"}」吗?`,"删除Passkey设备",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await se(s.id),u.success("设备已删除"),await T()}catch(a){const d=a?.response?.data;u.error(d?.error||"删除失败")}}return Y(()=>{T()}),(s,a)=>{const d=m("el-input"),f=m("el-form-item"),E=m("el-form"),x=m("el-button"),B=m("el-card"),F=m("el-alert"),X=m("el-empty"),P=m("el-table-column"),q=m("el-table"),G=Z("loading");return C(),N("div",fe,[a[13]||(a[13]=b("div",{class:"app-page-title"},[b("h2",null,"设置"),b("span",{class:"app-muted"},"管理员账号设置")],-1)),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[6]||(a[6]=b("h3",{class:"section-title"},"修改管理员用户名",-1)),r(E,{"label-width":"120px"},{default:o(()=>[r(f,{label:"新用户名"},{default:o(()=>[r(d,{modelValue:e.value,"onUpdate:modelValue":a[0]||(a[0]=c=>e.value=c),placeholder:"输入新用户名",disabled:i.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),r(x,{type:"primary",loading:i.value,onClick:I},{default:o(()=>[...a[5]||(a[5]=[S("保存用户名",-1)])]),_:1},8,["loading"])]),_:1}),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[8]||(a[8]=b("h3",{class:"section-title"},"修改管理员密码",-1)),r(E,{"label-width":"120px"},{default:o(()=>[r(f,{label:"当前密码"},{default:o(()=>[r(d,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=c=>n.value=c),type:"password","show-password":"",placeholder:"输入当前密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1}),r(f,{label:"新密码"},{default:o(()=>[r(d,{modelValue:l.value,"onUpdate:modelValue":a[2]||(a[2]=c=>l.value=c),type:"password","show-password":"",placeholder:"输入新密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1}),r(f,{label:"确认新密码"},{default:o(()=>[r(d,{modelValue:y.value,"onUpdate:modelValue":a[3]||(a[3]=c=>y.value=c),type:"password","show-password":"",placeholder:"再次输入新密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),r(x,{type:"primary",loading:i.value,onClick:R},{default:o(()=>[...a[7]||(a[7]=[S("保存密码",-1)])]),_:1},8,["loading"]),a[9]||(a[9]=b("div",{class:"help"},"建议使用更强密码(至少8位且包含字母与数字)。",-1))]),_:1}),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[12]||(a[12]=b("h3",{class:"section-title"},"Passkey设备",-1)),r(F,{type:"info",closable:!1,title:"最多可绑定3台设备,可用于管理员无密码登录。","show-icon":"",class:"help-alert"}),r(E,{inline:""},{default:o(()=>[r(f,{label:"设备备注"},{default:o(()=>[r(d,{modelValue:A.value,"onUpdate:modelValue":a[4]||(a[4]=c=>A.value=c),placeholder:"例如:值班iPhone / 办公Mac",maxlength:"40","show-word-limit":""},null,8,["modelValue"])]),_:1}),r(f,null,{default:o(()=>[r(x,{type:"primary",loading:V.value,onClick:z},{default:o(()=>[...a[10]||(a[10]=[S("添加Passkey设备",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),Q((C(),N("div",null,[k.value.length===0?(C(),K(X,{key:0,description:"暂无Passkey设备"})):(C(),K(q,{key:1,data:k.value,size:"small",style:{width:"100%"}},{default:o(()=>[r(P,{prop:"device_name",label:"设备备注","min-width":"160"}),r(P,{prop:"credential_id_preview",label:"凭据ID","min-width":"180"}),r(P,{prop:"last_used_at",label:"最近使用","min-width":"140"}),r(P,{prop:"created_at",label:"创建时间","min-width":"140"}),r(P,{label:"操作",width:"100",fixed:"right"},{default:o(({row:c})=>[r(x,{type:"danger",text:"",onClick:we=>J(c)},{default:o(()=>[...a[11]||(a[11]=[S("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])),[[G,w.value]])]),_:1})])}}},he=L(ye,[["__scopeId","data-v-1418d488"]]);export{he as default}; diff --git a/static/admin/assets/SystemPage-DrM9-RI5.js b/static/admin/assets/SystemPage-D9T-fhw-.js similarity index 98% rename from static/admin/assets/SystemPage-DrM9-RI5.js rename to static/admin/assets/SystemPage-D9T-fhw-.js index ded5a8d..f33e8c8 100644 --- a/static/admin/assets/SystemPage-DrM9-RI5.js +++ b/static/admin/assets/SystemPage-D9T-fhw-.js @@ -1,4 +1,4 @@ -import{f as Fe,a as He,u as me,b as Oe,t as je}from"./system-CYbWdReq.js";import{a as ge,_ as Ge,g as Se,h as Ye,i as Je,u as fe,j as Pe,p as We}from"./index-DOvMEmc8.js";import{E as _e,a as d}from"./vendor-element-B5S5pUKo.js";import{r as s,c as de,l as Xe,R as Ze,o as el,aj as m,ap as ll,F as al,q as y,n as b,t as n,L as l,E as t,I as v,K as ol,a3 as tl,J as A,G as T,y as sl}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function nl(){const{data:k}=await ge.get("/proxy/config");return k}async function ul(k){const{data:_}=await ge.post("/proxy/config",k);return _}async function il(k){const{data:_}=await ge.post("/proxy/test",k);return _}const dl={class:"page-stack"},rl={class:"config-grid"},cl={class:"row-actions"},vl={class:"row-actions"},pl={class:"row-actions"},ml={key:0,class:"help"},fl={class:"row-actions"},_l={class:"section-head"},gl={class:"status-inline app-muted"},yl={key:0,class:"status-dots","aria-hidden":"true"},bl={class:"kdocs-inline"},kl={class:"kdocs-range"},Vl={class:"row-actions"},xl={key:0,class:"help"},wl={key:1,class:"help"},Sl={class:"kdocs-qr"},Pl=["src"],Cl={__name:"SystemPage",setup(k){const _=s(!1),B=s(2),q=s(1),M=s(3),z=s(120),L=s(!1),g=s(""),R=s(3),$=s(!1),F=s(10),H=s(7),I=s(!1),h=s("https://www.spacezs.cn/connect.php"),K=s(""),V=s(""),O=s(""),j=s(!1),x=s(["wx"]),re=s(!1),ce=s(!1),Ce=[{label:"QQ",value:"qq"},{label:"微信",value:"wx"},{label:"支付宝",value:"alipay"}],G=s(!1),Y=s(""),J=s(""),W=s(""),X=s(0),Z=s("A"),ee=s("D"),le=s(0),ae=s(0),oe=s(!1),te=s(""),ye=Se({maxAgeMs:600*1e3}),c=s(ye||{}),w=s(!1),S=s(""),ve=s(!1),P=s(!1),C=s(!1),U=s(!1),N=s(!ye),se=s("");let ne=null;const be=de(()=>P.value||C.value||U.value),pe=de(()=>N.value||P.value||ve.value),ue=de(()=>{if(pe.value)return"检测中";const o=c.value||{};return o?.logged_in===!0||o?.last_login_ok===!0?"已登录":o?.logged_in===!1||o?.last_login_ok===!1||o?.login_required===!0?"未登录":o?.last_error?"异常":"未知"}),Ue=de(()=>pe.value?"is-checking":ue.value==="已登录"?"is-online":ue.value==="未登录"?"is-offline":ue.value==="异常"?"is-error":"is-unknown");function r(o){if(!o){se.value="";return}const e=new Date().toLocaleTimeString("zh-CN",{hour12:!1});se.value=`${o} (${e})`}async function Ae(){_.value=!0;try{const[e,i,u]=await Promise.all([Fe(),nl(),He()]);B.value=e.max_concurrent_global??2,q.value=e.max_concurrent_per_account??1,M.value=e.max_screenshot_concurrent??3,z.value=e.db_slow_query_ms??120,$.value=(e.auto_approve_enabled??0)===1,F.value=e.auto_approve_hourly_limit??10,H.value=e.auto_approve_vip_days??7,L.value=(i.proxy_enabled??0)===1,g.value=i.proxy_api_url||"",R.value=i.proxy_expire_minutes??3,G.value=(e.kdocs_enabled??0)===1,Y.value=e.kdocs_doc_url||"",J.value=e.kdocs_default_unit||"",W.value=e.kdocs_sheet_name||"",X.value=e.kdocs_sheet_index??0,Z.value=(e.kdocs_unit_column||"A").toUpperCase(),ee.value=(e.kdocs_image_column||"D").toUpperCase(),le.value=e.kdocs_row_start??0,ae.value=e.kdocs_row_end??0,oe.value=(e.kdocs_admin_notify_enabled??0)===1,te.value=e.kdocs_admin_notify_email||"",I.value=(u.social_login_enabled??0)===1,h.value=u.social_login_endpoint||"https://www.spacezs.cn/connect.php",K.value=u.social_login_appid||"",V.value="",O.value=u.social_login_appkey_masked||"",j.value=!!u.social_login_appkey_configured,x.value=Array.isArray(u.social_login_providers)&&u.social_login_providers.length?u.social_login_providers:["wx"]}catch{}finally{_.value=!1}const o=Se({maxAgeMs:600*1e3});o&&(c.value=o,N.value=!1),Le()}async function Le(){if(!(N.value||P.value)){N.value=!0;try{const o=await We({force:!1,maxAgeMs:6e4,silent:!0,live:0});c.value=o||{}}catch{}finally{N.value=!1}}}async function Ie(){const o={max_concurrent_global:Number(B.value),max_concurrent_per_account:Number(q.value),max_screenshot_concurrent:Number(M.value),db_slow_query_ms:Number(z.value)};try{await _e.confirm(`确定更新并发配置吗? +import{f as Fe,a as He,u as me,b as Oe,t as je}from"./system-CeiBEEoE.js";import{a as ge,_ as Ge,g as Se,h as Ye,i as Je,u as fe,j as Pe,p as We}from"./index-6ynv0Z9Y.js";import{E as _e,a as d}from"./vendor-element-CIudPaVX.js";import{r as s,c as de,l as Xe,R as Ze,o as el,aj as m,ap as ll,F as al,q as y,n as b,t as n,L as l,E as t,I as v,K as ol,a3 as tl,J as A,G as T,y as sl}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-DszMq72k.js";async function nl(){const{data:k}=await ge.get("/proxy/config");return k}async function ul(k){const{data:_}=await ge.post("/proxy/config",k);return _}async function il(k){const{data:_}=await ge.post("/proxy/test",k);return _}const dl={class:"page-stack"},rl={class:"config-grid"},cl={class:"row-actions"},vl={class:"row-actions"},pl={class:"row-actions"},ml={key:0,class:"help"},fl={class:"row-actions"},_l={class:"section-head"},gl={class:"status-inline app-muted"},yl={key:0,class:"status-dots","aria-hidden":"true"},bl={class:"kdocs-inline"},kl={class:"kdocs-range"},Vl={class:"row-actions"},xl={key:0,class:"help"},wl={key:1,class:"help"},Sl={class:"kdocs-qr"},Pl=["src"],Cl={__name:"SystemPage",setup(k){const _=s(!1),B=s(2),q=s(1),M=s(3),z=s(120),L=s(!1),g=s(""),R=s(3),$=s(!1),F=s(10),H=s(7),I=s(!1),h=s("https://www.spacezs.cn/connect.php"),K=s(""),V=s(""),O=s(""),j=s(!1),x=s(["wx"]),re=s(!1),ce=s(!1),Ce=[{label:"QQ",value:"qq"},{label:"微信",value:"wx"},{label:"支付宝",value:"alipay"}],G=s(!1),Y=s(""),J=s(""),W=s(""),X=s(0),Z=s("A"),ee=s("D"),le=s(0),ae=s(0),oe=s(!1),te=s(""),ye=Se({maxAgeMs:600*1e3}),c=s(ye||{}),w=s(!1),S=s(""),ve=s(!1),P=s(!1),C=s(!1),U=s(!1),N=s(!ye),se=s("");let ne=null;const be=de(()=>P.value||C.value||U.value),pe=de(()=>N.value||P.value||ve.value),ue=de(()=>{if(pe.value)return"检测中";const o=c.value||{};return o?.logged_in===!0||o?.last_login_ok===!0?"已登录":o?.logged_in===!1||o?.last_login_ok===!1||o?.login_required===!0?"未登录":o?.last_error?"异常":"未知"}),Ue=de(()=>pe.value?"is-checking":ue.value==="已登录"?"is-online":ue.value==="未登录"?"is-offline":ue.value==="异常"?"is-error":"is-unknown");function r(o){if(!o){se.value="";return}const e=new Date().toLocaleTimeString("zh-CN",{hour12:!1});se.value=`${o} (${e})`}async function Ae(){_.value=!0;try{const[e,i,u]=await Promise.all([Fe(),nl(),He()]);B.value=e.max_concurrent_global??2,q.value=e.max_concurrent_per_account??1,M.value=e.max_screenshot_concurrent??3,z.value=e.db_slow_query_ms??120,$.value=(e.auto_approve_enabled??0)===1,F.value=e.auto_approve_hourly_limit??10,H.value=e.auto_approve_vip_days??7,L.value=(i.proxy_enabled??0)===1,g.value=i.proxy_api_url||"",R.value=i.proxy_expire_minutes??3,G.value=(e.kdocs_enabled??0)===1,Y.value=e.kdocs_doc_url||"",J.value=e.kdocs_default_unit||"",W.value=e.kdocs_sheet_name||"",X.value=e.kdocs_sheet_index??0,Z.value=(e.kdocs_unit_column||"A").toUpperCase(),ee.value=(e.kdocs_image_column||"D").toUpperCase(),le.value=e.kdocs_row_start??0,ae.value=e.kdocs_row_end??0,oe.value=(e.kdocs_admin_notify_enabled??0)===1,te.value=e.kdocs_admin_notify_email||"",I.value=(u.social_login_enabled??0)===1,h.value=u.social_login_endpoint||"https://www.spacezs.cn/connect.php",K.value=u.social_login_appid||"",V.value="",O.value=u.social_login_appkey_masked||"",j.value=!!u.social_login_appkey_configured,x.value=Array.isArray(u.social_login_providers)&&u.social_login_providers.length?u.social_login_providers:["wx"]}catch{}finally{_.value=!1}const o=Se({maxAgeMs:600*1e3});o&&(c.value=o,N.value=!1),Le()}async function Le(){if(!(N.value||P.value)){N.value=!0;try{const o=await We({force:!1,maxAgeMs:6e4,silent:!0,live:0});c.value=o||{}}catch{}finally{N.value=!1}}}async function Ie(){const o={max_concurrent_global:Number(B.value),max_concurrent_per_account:Number(q.value),max_screenshot_concurrent:Number(M.value),db_slow_query_ms:Number(z.value)};try{await _e.confirm(`确定更新并发配置吗? 全局并发数: ${o.max_concurrent_global} 单账号并发数: ${o.max_concurrent_per_account} diff --git a/static/admin/assets/UsersPage-RI5S3snx.js b/static/admin/assets/UsersPage-2-Mno2hz.js similarity index 96% rename from static/admin/assets/UsersPage-RI5S3snx.js rename to static/admin/assets/UsersPage-2-Mno2hz.js index 4f95a33..d51ed7b 100644 --- a/static/admin/assets/UsersPage-RI5S3snx.js +++ b/static/admin/assets/UsersPage-2-Mno2hz.js @@ -1 +1 @@ -import{a as W,r as Z,s as F,b as G,c as J,d as H,f as K}from"./users-DzDcz9C_.js";import{_ as O}from"./index-DOvMEmc8.js";import{E as v,a as h}from"./vendor-element-B5S5pUKo.js";import{i as Q,r as P,o as X,aj as _,ap as Y,n as V,q as r,t as y,L as l,E as s,F as ee,D as f,G as p,J as b,I as c}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";function I(g){if(!g)return null;if(g instanceof Date)return g;let a=String(g).trim();if(!a)return null;/^\d{4}-\d{2}-\d{2}$/.test(a)&&(a=`${a}T00:00:00`);let o=a.includes("T")?a:a.replace(" ","T");o=o.replace(/\.(\d{3})\d+/,".$1"),/([zZ]|[+-]\d{2}:\d{2})$/.test(o)||(o=`${o}+08:00`);const u=new Date(o);return Number.isNaN(u.getTime())?null:u}function D(g){const a=String(g||"");if(!a)return{ok:!1,message:"密码不能为空"};if(a.length<8)return{ok:!1,message:"密码长度不能少于8个字符"};if(a.length>128)return{ok:!1,message:"密码长度不能超过128个字符"};const o=/[a-zA-Z]/.test(a),x=/\d/.test(a);return!o||!x?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}const te={class:"page-stack"},ne={class:"table-wrap"},se={class:"user-block"},ae={class:"user-main"},ie={key:0,class:"app-muted user-sub"},re={key:1,class:"vip-sub"},oe={key:0,class:"app-muted"},le={class:"actions"},ce={__name:"UsersPage",setup(g){const a=Q("refreshStats",null),o=P(!1),x=P([]);function u(n){const e=n?.vip_expire_time;if(!e)return!1;if(String(e).startsWith("2099-12-31"))return!0;const i=I(e);return i?i.getTime()>Date.now():!1}function C(n){const e=n?.vip_expire_time;if(!e||!u(n))return"";if(String(e).startsWith("2099-12-31"))return"永久VIP";const i=I(e);if(!i)return`到期: ${e}`;const d=Math.ceil((i.getTime()-Date.now())/(1e3*60*60*24));return`到期: ${e}(剩${d}天)`}function B(n){return n==="rejected"?{label:"禁用",type:"danger"}:{label:"正常",type:"success"}}async function w(){o.value=!0;try{x.value=await K()}catch{x.value=[]}finally{o.value=!1}}async function U(){await w()}async function z(n){try{await v.confirm(`确定启用用户「${n.username}」吗?启用后用户可正常登录。`,"启用用户",{confirmButtonText:"启用",cancelButtonText:"取消",type:"success"})}catch{return}try{await W(n.id),h.success("用户已启用"),await w(),await a?.({force:!0})}catch{}}async function S(n){try{await v.confirm(`确定禁用用户「${n.username}」吗?禁用后用户将无法登录。`,"禁用用户",{confirmButtonText:"禁用",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Z(n.id),h.success("用户已禁用"),await w(),await a?.({force:!0})}catch{}}async function E(n){try{await v.confirm(`确定删除用户「${n.username}」吗?此操作将删除该用户的所有数据,不可恢复!`,"删除用户",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{await H(n.id),h.success("用户已删除"),await w(),await a?.({force:!0})}catch{}}async function $(n,e){const i={7:"一周",30:"一个月",365:"一年",999999:"永久"}[e]||`${e}天`;try{await v.confirm(`确定为用户「${n.username}」开通 ${i} VIP 吗?`,"设置VIP",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"})}catch{return}try{const d=await F(n.id,e);h.success(d?.message||"VIP设置成功"),await w(),await a?.({force:!0})}catch{}}async function N(n){try{await v.confirm(`确定移除用户「${n.username}」的 VIP 吗?`,"移除VIP",{confirmButtonText:"移除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await G(n.id);h.success(e?.message||"VIP已移除"),await w(),await a?.({force:!0})}catch{}}async function M(n){let e;try{e=(await v.prompt("请输入新密码(至少8位且包含字母和数字)","重置密码",{confirmButtonText:"提交",cancelButtonText:"取消",inputType:"password",inputPlaceholder:"新密码",inputValidator:k=>D(k).ok,inputErrorMessage:"密码至少8位且包含字母和数字"})).value}catch{return}const i=D(e);if(!i.ok){h.error(i.message);return}try{await v.confirm(`确定将用户「${n.username}」的密码重置为该新密码吗?`,"二次确认",{confirmButtonText:"确认重置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const d=await J(n.id,e);h.success(d?.message||"密码重置成功")}catch{}}return X(U),(n,e)=>{const i=_("el-table-column"),d=_("el-tag"),k=_("el-button"),T=_("el-dropdown-item"),j=_("el-dropdown-menu"),L=_("el-dropdown"),A=_("el-table"),R=_("el-card"),q=Y("loading");return r(),V("div",te,[e[11]||(e[11]=y("div",{class:"app-page-title"},[y("h2",null,"用户")],-1)),l(R,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[y("div",ne,[ee((r(),f(A,{data:x.value,style:{width:"100%"}},{default:s(()=>[l(i,{prop:"id",label:"ID",width:"80"}),l(i,{label:"用户","min-width":"240"},{default:s(({row:t})=>[y("div",se,[y("div",ae,[y("strong",null,b(t.username),1),u(t)?(r(),f(d,{key:0,type:"warning",effect:"light",size:"small"},{default:s(()=>[...e[0]||(e[0]=[c("VIP",-1)])]),_:1})):p("",!0)]),t.email?(r(),V("div",ie,b(t.email),1)):p("",!0),C(t)?(r(),V("div",re,b(C(t)),1)):p("",!0)])]),_:1}),l(i,{label:"状态",width:"120"},{default:s(({row:t})=>[l(d,{type:B(t.status).type,effect:"light"},{default:s(()=>[c(b(B(t.status).label),1)]),_:2},1032,["type"])]),_:1}),l(i,{label:"时间","min-width":"220"},{default:s(({row:t})=>[y("div",null,b(t.created_at),1),t.vip_expire_time?(r(),V("div",oe,"VIP到期: "+b(t.vip_expire_time),1)):p("",!0)]),_:1}),l(i,{label:"操作",width:"280",fixed:"right"},{default:s(({row:t})=>[y("div",le,[t.status==="rejected"?(r(),f(k,{key:0,type:"success",size:"small",onClick:m=>z(t)},{default:s(()=>[...e[1]||(e[1]=[c("启用",-1)])]),_:1},8,["onClick"])):(r(),f(k,{key:1,type:"warning",size:"small",onClick:m=>S(t)},{default:s(()=>[...e[2]||(e[2]=[c("禁用",-1)])]),_:1},8,["onClick"])),l(L,{trigger:"click"},{dropdown:s(()=>[l(j,null,{default:s(()=>[u(t)?p("",!0):(r(),f(T,{key:0,onClick:m=>$(t,7)},{default:s(()=>[...e[4]||(e[4]=[c("开通一周",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:1,onClick:m=>$(t,30)},{default:s(()=>[...e[5]||(e[5]=[c("开通一月",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:2,onClick:m=>$(t,365)},{default:s(()=>[...e[6]||(e[6]=[c("开通一年",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:3,onClick:m=>$(t,999999)},{default:s(()=>[...e[7]||(e[7]=[c("永久VIP",-1)])]),_:1},8,["onClick"])),u(t)?(r(),f(T,{key:4,onClick:m=>N(t)},{default:s(()=>[...e[8]||(e[8]=[c("移除VIP",-1)])]),_:1},8,["onClick"])):p("",!0)]),_:2},1024)]),default:s(()=>[l(k,{size:"small"},{default:s(()=>[...e[3]||(e[3]=[c("VIP",-1)])]),_:1})]),_:2},1024),l(k,{size:"small",onClick:m=>M(t)},{default:s(()=>[...e[9]||(e[9]=[c("重置密码",-1)])]),_:1},8,["onClick"]),l(k,{type:"danger",size:"small",onClick:m=>E(t)},{default:s(()=>[...e[10]||(e[10]=[c("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[q,o.value]])])]),_:1})])}}},ye=O(ce,[["__scopeId","data-v-3e2dc1eb"]]);export{ye as default}; +import{a as W,r as Z,s as F,b as G,c as J,d as H,f as K}from"./users-D9XvGIoE.js";import{_ as O}from"./index-6ynv0Z9Y.js";import{E as v,a as h}from"./vendor-element-CIudPaVX.js";import{i as Q,r as P,o as X,aj as _,ap as Y,n as V,q as r,t as y,L as l,E as s,F as ee,D as f,G as p,J as b,I as c}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-DszMq72k.js";function I(g){if(!g)return null;if(g instanceof Date)return g;let a=String(g).trim();if(!a)return null;/^\d{4}-\d{2}-\d{2}$/.test(a)&&(a=`${a}T00:00:00`);let o=a.includes("T")?a:a.replace(" ","T");o=o.replace(/\.(\d{3})\d+/,".$1"),/([zZ]|[+-]\d{2}:\d{2})$/.test(o)||(o=`${o}+08:00`);const u=new Date(o);return Number.isNaN(u.getTime())?null:u}function D(g){const a=String(g||"");if(!a)return{ok:!1,message:"密码不能为空"};if(a.length<8)return{ok:!1,message:"密码长度不能少于8个字符"};if(a.length>128)return{ok:!1,message:"密码长度不能超过128个字符"};const o=/[a-zA-Z]/.test(a),x=/\d/.test(a);return!o||!x?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}const te={class:"page-stack"},ne={class:"table-wrap"},se={class:"user-block"},ae={class:"user-main"},ie={key:0,class:"app-muted user-sub"},re={key:1,class:"vip-sub"},oe={key:0,class:"app-muted"},le={class:"actions"},ce={__name:"UsersPage",setup(g){const a=Q("refreshStats",null),o=P(!1),x=P([]);function u(n){const e=n?.vip_expire_time;if(!e)return!1;if(String(e).startsWith("2099-12-31"))return!0;const i=I(e);return i?i.getTime()>Date.now():!1}function C(n){const e=n?.vip_expire_time;if(!e||!u(n))return"";if(String(e).startsWith("2099-12-31"))return"永久VIP";const i=I(e);if(!i)return`到期: ${e}`;const d=Math.ceil((i.getTime()-Date.now())/(1e3*60*60*24));return`到期: ${e}(剩${d}天)`}function B(n){return n==="rejected"?{label:"禁用",type:"danger"}:{label:"正常",type:"success"}}async function w(){o.value=!0;try{x.value=await K()}catch{x.value=[]}finally{o.value=!1}}async function U(){await w()}async function z(n){try{await v.confirm(`确定启用用户「${n.username}」吗?启用后用户可正常登录。`,"启用用户",{confirmButtonText:"启用",cancelButtonText:"取消",type:"success"})}catch{return}try{await W(n.id),h.success("用户已启用"),await w(),await a?.({force:!0})}catch{}}async function S(n){try{await v.confirm(`确定禁用用户「${n.username}」吗?禁用后用户将无法登录。`,"禁用用户",{confirmButtonText:"禁用",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Z(n.id),h.success("用户已禁用"),await w(),await a?.({force:!0})}catch{}}async function E(n){try{await v.confirm(`确定删除用户「${n.username}」吗?此操作将删除该用户的所有数据,不可恢复!`,"删除用户",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{await H(n.id),h.success("用户已删除"),await w(),await a?.({force:!0})}catch{}}async function $(n,e){const i={7:"一周",30:"一个月",365:"一年",999999:"永久"}[e]||`${e}天`;try{await v.confirm(`确定为用户「${n.username}」开通 ${i} VIP 吗?`,"设置VIP",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"})}catch{return}try{const d=await F(n.id,e);h.success(d?.message||"VIP设置成功"),await w(),await a?.({force:!0})}catch{}}async function N(n){try{await v.confirm(`确定移除用户「${n.username}」的 VIP 吗?`,"移除VIP",{confirmButtonText:"移除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await G(n.id);h.success(e?.message||"VIP已移除"),await w(),await a?.({force:!0})}catch{}}async function M(n){let e;try{e=(await v.prompt("请输入新密码(至少8位且包含字母和数字)","重置密码",{confirmButtonText:"提交",cancelButtonText:"取消",inputType:"password",inputPlaceholder:"新密码",inputValidator:k=>D(k).ok,inputErrorMessage:"密码至少8位且包含字母和数字"})).value}catch{return}const i=D(e);if(!i.ok){h.error(i.message);return}try{await v.confirm(`确定将用户「${n.username}」的密码重置为该新密码吗?`,"二次确认",{confirmButtonText:"确认重置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const d=await J(n.id,e);h.success(d?.message||"密码重置成功")}catch{}}return X(U),(n,e)=>{const i=_("el-table-column"),d=_("el-tag"),k=_("el-button"),T=_("el-dropdown-item"),j=_("el-dropdown-menu"),L=_("el-dropdown"),A=_("el-table"),R=_("el-card"),q=Y("loading");return r(),V("div",te,[e[11]||(e[11]=y("div",{class:"app-page-title"},[y("h2",null,"用户")],-1)),l(R,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[y("div",ne,[ee((r(),f(A,{data:x.value,style:{width:"100%"}},{default:s(()=>[l(i,{prop:"id",label:"ID",width:"80"}),l(i,{label:"用户","min-width":"240"},{default:s(({row:t})=>[y("div",se,[y("div",ae,[y("strong",null,b(t.username),1),u(t)?(r(),f(d,{key:0,type:"warning",effect:"light",size:"small"},{default:s(()=>[...e[0]||(e[0]=[c("VIP",-1)])]),_:1})):p("",!0)]),t.email?(r(),V("div",ie,b(t.email),1)):p("",!0),C(t)?(r(),V("div",re,b(C(t)),1)):p("",!0)])]),_:1}),l(i,{label:"状态",width:"120"},{default:s(({row:t})=>[l(d,{type:B(t.status).type,effect:"light"},{default:s(()=>[c(b(B(t.status).label),1)]),_:2},1032,["type"])]),_:1}),l(i,{label:"时间","min-width":"220"},{default:s(({row:t})=>[y("div",null,b(t.created_at),1),t.vip_expire_time?(r(),V("div",oe,"VIP到期: "+b(t.vip_expire_time),1)):p("",!0)]),_:1}),l(i,{label:"操作",width:"280",fixed:"right"},{default:s(({row:t})=>[y("div",le,[t.status==="rejected"?(r(),f(k,{key:0,type:"success",size:"small",onClick:m=>z(t)},{default:s(()=>[...e[1]||(e[1]=[c("启用",-1)])]),_:1},8,["onClick"])):(r(),f(k,{key:1,type:"warning",size:"small",onClick:m=>S(t)},{default:s(()=>[...e[2]||(e[2]=[c("禁用",-1)])]),_:1},8,["onClick"])),l(L,{trigger:"click"},{dropdown:s(()=>[l(j,null,{default:s(()=>[u(t)?p("",!0):(r(),f(T,{key:0,onClick:m=>$(t,7)},{default:s(()=>[...e[4]||(e[4]=[c("开通一周",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:1,onClick:m=>$(t,30)},{default:s(()=>[...e[5]||(e[5]=[c("开通一月",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:2,onClick:m=>$(t,365)},{default:s(()=>[...e[6]||(e[6]=[c("开通一年",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:3,onClick:m=>$(t,999999)},{default:s(()=>[...e[7]||(e[7]=[c("永久VIP",-1)])]),_:1},8,["onClick"])),u(t)?(r(),f(T,{key:4,onClick:m=>N(t)},{default:s(()=>[...e[8]||(e[8]=[c("移除VIP",-1)])]),_:1},8,["onClick"])):p("",!0)]),_:2},1024)]),default:s(()=>[l(k,{size:"small"},{default:s(()=>[...e[3]||(e[3]=[c("VIP",-1)])]),_:1})]),_:2},1024),l(k,{size:"small",onClick:m=>M(t)},{default:s(()=>[...e[9]||(e[9]=[c("重置密码",-1)])]),_:1},8,["onClick"]),l(k,{type:"danger",size:"small",onClick:m=>E(t)},{default:s(()=>[...e[10]||(e[10]=[c("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[q,o.value]])])]),_:1})])}}},ye=O(ce,[["__scopeId","data-v-3e2dc1eb"]]);export{ye as default}; diff --git a/static/admin/assets/admin-VsbfHbbH.js b/static/admin/assets/admin-VsbfHbbH.js new file mode 100644 index 0000000..5220ed4 --- /dev/null +++ b/static/admin/assets/admin-VsbfHbbH.js @@ -0,0 +1 @@ +import{a as s}from"./index-6ynv0Z9Y.js";async function e(a){const{data:n}=await s.put("/admin/username",{new_username:a});return n}async function r(a={}){const n=String(a.currentPassword||""),t=String(a.newPassword||""),{data:i}=await s.put("/admin/password",{current_password:n,new_password:t});return i}async function c(){const{data:a}=await s.post("/logout");return a}async function d(){const{data:a}=await s.get("/admin/passkeys");return a}async function u(a={}){const{data:n}=await s.post("/admin/passkeys/register/options",a);return n}async function m(a={}){const{data:n}=await s.post("/admin/passkeys/register/verify",a);return n}async function p(a){const{data:n}=await s.delete(`/admin/passkeys/${a}`);return n}async function l(a={}){const{data:n}=await s.post("/admin/passkeys/client-error",a);return n}async function w(){const{data:a}=await s.get("/admin/social-bindings");return a}async function y(a={}){const{data:n}=await s.post("/admin/social-login-url",a);return n}async function f(a={}){const{data:n}=await s.post("/admin/social-poll",a);return n}async function g(a,n={}){const{data:t}=await s.post(`/admin/social-bindings/${encodeURIComponent(a)}/callback`,n);return t}async function k(a){const{data:n}=await s.delete(`/admin/social-bindings/${encodeURIComponent(a)}`);return n}export{w as a,r as b,u as c,m as d,p as e,d as f,k as g,y as h,g as i,c as l,f as p,l as r,e as u}; diff --git a/static/admin/assets/email-Mh1SHQbX.js b/static/admin/assets/email-CgUCpCe3.js similarity index 88% rename from static/admin/assets/email-Mh1SHQbX.js rename to static/admin/assets/email-CgUCpCe3.js index 6db2f8e..174af50 100644 --- a/static/admin/assets/email-Mh1SHQbX.js +++ b/static/admin/assets/email-CgUCpCe3.js @@ -1 +1 @@ -import{c as s,a as e}from"./index-DOvMEmc8.js";const n=s(async()=>{const{data:a}=await e.get("/email/stats");return a},1e4);async function i(){const{data:a}=await e.get("/email/settings");return a}async function r(a){const{data:t}=await e.post("/email/settings",a);return n.clear(),t}async function o(a={}){return n.run(a)}async function l(a){const{data:t}=await e.get("/email/logs",{params:a});return t}async function u(a){const{data:t}=await e.post("/email/logs/cleanup",{days:a});return n.clear(),t}export{l as a,i as b,u as c,o as f,r as u}; +import{c as s,a as e}from"./index-6ynv0Z9Y.js";const n=s(async()=>{const{data:a}=await e.get("/email/stats");return a},1e4);async function i(){const{data:a}=await e.get("/email/settings");return a}async function r(a){const{data:t}=await e.post("/email/settings",a);return n.clear(),t}async function o(a={}){return n.run(a)}async function l(a){const{data:t}=await e.get("/email/logs",{params:a});return t}async function u(a){const{data:t}=await e.post("/email/logs/cleanup",{days:a});return n.clear(),t}export{l as a,i as b,u as c,o as f,r as u}; diff --git a/static/admin/assets/index-DOvMEmc8.js b/static/admin/assets/index-6ynv0Z9Y.js similarity index 63% rename from static/admin/assets/index-DOvMEmc8.js rename to static/admin/assets/index-6ynv0Z9Y.js index 5251037..5b64934 100644 --- a/static/admin/assets/index-DOvMEmc8.js +++ b/static/admin/assets/index-6ynv0Z9Y.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ReportPage-BMEJM5Hr.js","./vendor-element-B5S5pUKo.js","./vendor-vue-CVxSw_oJ.js","./vendor-misc-BeoNyvBp.js","./vendor-element-C68yOrAy.css","./email-Mh1SHQbX.js","./tasks-B7oNpIBD.js","./system-CYbWdReq.js","./MetricGrid-C3Xjc9mZ.js","./MetricGrid-BR486o_b.css","./vendor-axios-B9ygI19o.js","./ReportPage-IaDpUFfl.css","./UsersPage-RI5S3snx.js","./users-DzDcz9C_.js","./UsersPage-CgYh6JHW.css","./FeedbacksPage-DrMVqBKf.js","./FeedbacksPage-CPmSqIaj.css","./LogsPage-Cy6Q0ave.js","./LogsPage-BUgx3sZr.css","./AnnouncementsPage-Dagm5PzE.js","./AnnouncementsPage-tpO97PUg.css","./EmailPage-DiZA9Kx_.js","./EmailPage-CTHxGzDv.css","./SecurityPage-yzYEGeTN.js","./SecurityPage-C2-mJ7eD.css","./SystemPage-DrM9-RI5.js","./SystemPage-CTs6qr36.css","./SettingsPage-DF5fL8gq.js","./SettingsPage-D-iYz1zh.css"])))=>i.map(i=>d[i]); -import{aj as h,D as S,q as y,ax as Se,ay as ke,r as O,c as Z,o as Te,R as Ae,E as i,G as ee,L as _,t as m,n as I,K as te,a3 as ne,H as ae,J as C,I as se,az as Pe,p as $,aA as Re,aB as Le,as as xe}from"./vendor-vue-CVxSw_oJ.js";import{E as ie,a as le,d as Ne,u as Oe,c as Ce,l as Be,b as De,m as Me,e as Ve,t as Ie,s as Fe,i as Ke,z as $e}from"./vendor-element-B5S5pUKo.js";import{a as qe}from"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();const ue=(e,t)=>{const n=e.__vccOpts||e;for(const[s,a]of t)n[s]=a;return n},Ue={};function Ge(e,t){const n=h("RouterView");return y(),S(n)}const je=ue(Ue,[["render",Ge]]),He="modulepreload",Ye=function(e,t){return new URL(e,t).href},oe={},k=function(t,n,s){let a=Promise.resolve();if(n&&n.length>0){let T=function(f){return Promise.all(f.map(g=>Promise.resolve(g).then(w=>({status:"fulfilled",value:w}),w=>({status:"rejected",reason:w}))))};const l=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),v=r?.nonce||r?.getAttribute("nonce");a=T(n.map(f=>{if(f=Ye(f,s),f in oe)return;oe[f]=!0;const g=f.endsWith(".css"),w=g?'[rel="stylesheet"]':"";if(s)for(let A=l.length-1;A>=0;A--){const E=l[A];if(E.href===f&&(!g||E.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${w}`))return;const b=document.createElement("link");if(b.rel=g?"stylesheet":He,g||(b.as="script"),b.crossOrigin="",b.href=f,v&&b.setAttribute("nonce",v),document.head.appendChild(b),g)return new Promise((A,E)=>{b.addEventListener("load",A),b.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${f}`)))})}))}function o(l){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=l,window.dispatchEvent(r),!r.defaultPrevented)throw l}return a.then(l=>{for(const r of l||[])r.status==="rejected"&&o(r.reason);return t().catch(o)})};let re="",ce=0;const ze=new Set([408,425,429,500,502,503,504]),We=1,Je=300;function B(e,t,n=1500){const s=Date.now();e===re&&s-ce=We)return!1;const s=String(e?.code||"");if(s==="ECONNABORTED"||s==="ERR_NETWORK")return!0;const a=Number(e?.response?.status||0);return ze.has(a)}function et(e){return new Promise(t=>{window.setTimeout(t,Math.max(0,Number(e||0)))})}async function tt(e,t){const n=e?.config||{},s=Number(n.__retry_count||0);n.__retry_count=s+1;const a=Je*(s+1);return await et(a),t.request(n)}const p=qe.create({baseURL:"/yuyx/api",timeout:3e4,withCredentials:!0});let D=null;async function nt(){return D||(D=ie.prompt("请输入管理员密码进行二次确认","安全确认",{inputType:"password",inputPlaceholder:"管理员密码",confirmButtonText:"确认",cancelButtonText:"取消",inputValidator:e=>!!String(e||"").trim(),inputErrorMessage:"密码不能为空"}).then(async e=>{const t=String(e.value||"").trim();await p.post("/admin/reauth",{password:t}),le.success("已通过安全确认")}).finally(()=>{D=null}),D)}p.interceptors.request.use(e=>{const t=String(e?.method||"GET").toUpperCase();if(!["GET","HEAD","OPTIONS"].includes(t)){const n=Xe("csrf_token");n&&(e.headers=e.headers||{},e.headers["X-CSRF-Token"]=n)}return e});p.interceptors.response.use(e=>e,async e=>{const t=e?.response?.status,n=e?.response?.data,s=n?.error||n?.message||e?.message||"请求失败",a=!!e?.config?.__silent;if(n?.code==="reauth_required"&&e?.config&&!e.config.__reauth_retry)try{return e.config.__reauth_retry=!0,await nt(),p.request(e.config)}catch{return Promise.reject(e)}return Ze(e)?tt(e,p):(t===401?(a||B("401",s,3e3),(window.location?.pathname||"").startsWith("/yuyx")||(window.location.href="/yuyx")):t===403?a||B("403",s,5e3):t?a||B(`http:${t}:${s}`,s):e?.code==="ECONNABORTED"?a||B("timeout","请求超时",3e3):a||B(`net:${s}`,s,3e3),Promise.reject(e))});function de(e,t=0){let n=!1,s=null,a=0,o=null;async function l(v={}){const T=!!v?.force,f=Date.now();return!T&&n&&fe()).then(g=>{s=g,n=!0;const w=Math.max(0,Number(t)||0);return a=Date.now()+w,g}).finally(()=>{o=null})),o)}function r(){n=!1,s=null,a=0,o=null}return{run:l,clear:r}}const at=1e4,fe=de(async()=>{const{data:e}=await p.get("/feedbacks",{params:{limit:1,offset:0}});return e?.stats},at);async function Ut(e=""){const{data:t}=await p.get("/feedbacks",{params:e?{status:e}:{}});return t}async function st(e={}){return fe.run(e)}function q(){fe.clear()}async function Gt(e,t){const{data:n}=await p.post(`/feedbacks/${e}/reply`,{reply:t});return q(),n}async function jt(e){const{data:t}=await p.post(`/feedbacks/${e}/close`);return q(),t}async function Ht(e){const{data:t}=await p.delete(`/feedbacks/${e}`);return q(),t}const ot=15e3,rt=de(async()=>{const{data:e}=await p.get("/stats");return e},ot);async function ct(e={}){return rt.run(e)}async function it(e={},t={}){const{data:n}=await p.get("/kdocs/status",{params:e,...t});return n}async function Yt(e={}){const t={force:!0,...e},{data:n}=await p.post("/kdocs/qr",t);return n}async function zt(){const{data:e}=await p.post("/kdocs/clear-login",{});return e}const U="admin:kdocs:status:v1",me=300*1e3;let P=null,L=0,R=null;function G(){return Date.now()}function F(e){return!e||typeof e!="object"?{}:e}function lt(){try{const e=window.sessionStorage.getItem(U);if(!e)return null;const t=JSON.parse(e);if(!t||typeof t!="object")return null;const n=Number(t.updated_at||0),s=F(t.status);return n?{status:s,updatedAt:n}:null}catch{return null}}function ut(e,t){try{window.sessionStorage.setItem(U,JSON.stringify({status:F(e),updated_at:Number(t||G())}))}catch{}}function dt(){if(P!==null)return;const e=lt();e&&(P=e.status,L=e.updatedAt)}function pe(e){return P=F(e),L=G(),ut(P,L),P}function ft(e){if(P===null||!L)return!1;const t=Number(e);return!Number.isFinite(t)||t<0?!0:G()-L<=t}function mt(e={}){dt();const t=e.maxAgeMs??me;return ft(t)?F(P):null}function Wt(e){return pe(e)}function pt(){P=null,L=0,R=null;try{window.sessionStorage.removeItem(U)}catch{}}async function _t(e={}){const{force:t=!1,maxAgeMs:n=me,silent:s=!0,live:a=0}=e;if(!t){const r=mt({maxAgeMs:n});if(r)return r}return R||(R=it(a?{live:1}:{},{__silent:!!s,__no_retry:!0,timeout:8e3}).then(r=>pe(r||{})).finally(()=>{R=null}),R)}const ht={class:"menu-label"},yt={key:1,class:"menu-label"},gt={class:"header-left"},bt={class:"header-right"},vt={class:"admin-name"},wt={class:"main-shell"},Et={class:"menu-label"},St={key:1,class:"menu-label"},kt=6e4,Tt=18e4,At={__name:"AdminLayout",setup(e){const t=Se(),n=ke(),s=O({}),a=Z(()=>s.value?.admin_username||"");async function o(d={}){s.value=await ct(d)}const l=O(!1),r=O(0);let v=null;async function T(d=null){if(d&&typeof d=="object"){Object.prototype.hasOwnProperty.call(d,"pendingFeedbacks")&&(r.value=Number(d.pendingFeedbacks||0));return}if(!l.value){l.value=!0;try{const c=await st();r.value=Number(c?.pending||0)}finally{l.value=!1}}}function f(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function g(){return f()?Tt:kt}function w(){v&&(window.clearTimeout(v),v=null)}function b(){w(),v=window.setTimeout(async()=>{v=null,await T().catch(()=>{}),b()},g())}function A(){b()}$("refreshStats",o),$("adminStats",s),$("refreshNavBadges",T);const E=O(!1),x=O(!1);let M;function K(){E.value=!!M?.matches,E.value||(x.value=!1)}Te(async()=>{M=window.matchMedia("(max-width: 768px)"),M.addEventListener?.("change",K),K(),_t({maxAgeMs:6e4,silent:!0}).catch(()=>{}),await o(),await T(),b(),window.addEventListener("visibilitychange",A)}),Ae(()=>{M?.removeEventListener?.("change",K),w(),window.removeEventListener("visibilitychange",A)});const j=[{path:"/reports",label:"报表",icon:Ne},{path:"/users",label:"用户",icon:Oe},{path:"/feedbacks",label:"反馈",icon:Ce,badgeKey:"feedbacks"},{path:"/logs",label:"任务日志",icon:Be},{path:"/announcements",label:"公告",icon:De},{path:"/email",label:"邮件",icon:Me},{path:"/security",label:"安全防护",icon:Ve},{path:"/system",label:"系统配置",icon:Ie},{path:"/settings",label:"设置",icon:Fe}],H=Z(()=>t.path);function V(d){return d?.badgeKey&&d.badgeKey==="feedbacks"?Number(r.value||0):0}async function _e(){let d=!1;try{await ie.confirm("确定退出管理员登录吗?","退出登录",{confirmButtonText:"退出",cancelButtonText:"取消",type:"warning"}),d=!0}catch(c){const N=String(c||"").toLowerCase();if(N==="cancel"||N==="close")return;try{d=window.confirm("确定退出管理员登录吗?")}catch{d=!1}}if(d)try{await p.post("/logout")}finally{pt(),window.location.href="/yuyx"}}async function Y(d){await n.push(d),x.value=!1}return(d,c)=>{const N=h("el-icon"),z=h("el-badge"),W=h("el-menu-item"),J=h("el-menu"),he=h("el-aside"),X=h("el-button"),ye=h("el-header"),ge=h("RouterView"),be=h("el-skeleton"),ve=h("el-card"),we=h("el-main"),Q=h("el-container"),Ee=h("el-drawer");return y(),S(Q,{class:"layout-root"},{default:i(()=>[E.value?ee("",!0):(y(),S(he,{key:0,width:"220px",class:"layout-aside"},{default:i(()=>[c[2]||(c[2]=m("div",{class:"brand"},[m("div",{class:"brand-title"},"后台管理"),m("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),_(J,{"default-active":H.value,class:"aside-menu",router:"",onSelect:Y},{default:i(()=>[(y(),I(te,null,ne(j,u=>_(W,{key:u.path,index:u.path},{default:i(()=>[_(N,null,{default:i(()=>[(y(),S(ae(u.icon)))]),_:2},1024),V(u)>0?(y(),S(z,{key:0,value:V(u),max:99,class:"menu-badge"},{default:i(()=>[m("span",ht,C(u.label),1)]),_:2},1032,["value"])):(y(),I("span",yt,C(u.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1})),_(Q,null,{default:i(()=>[_(ye,{class:"layout-header"},{default:i(()=>[m("div",gt,[E.value?(y(),S(X,{key:0,text:"",class:"header-menu-btn",onClick:c[0]||(c[0]=u=>x.value=!0)},{default:i(()=>[...c[3]||(c[3]=[se(" 菜单 ",-1)])]),_:1})):ee("",!0),c[4]||(c[4]=m("div",{class:"header-title"},"后台管理系统",-1))]),m("div",bt,[m("div",vt,[c[5]||(c[5]=m("span",{class:"app-muted"},"管理员",-1)),m("strong",null,C(a.value||"-"),1)]),_(X,{type:"primary",plain:"",class:"logout-btn",onClick:_e},{default:i(()=>[...c[6]||(c[6]=[se("退出",-1)])]),_:1})])]),_:1}),_(we,{class:"layout-main"},{default:i(()=>[m("div",wt,[(y(),S(Pe,null,{default:i(()=>[_(ge)]),fallback:i(()=>[_(ve,{shadow:"never","body-style":{padding:"16px"},class:"fallback-card"},{default:i(()=>[_(be,{rows:5,animated:""})]),_:1})]),_:1}))])]),_:1})]),_:1}),_(Ee,{modelValue:x.value,"onUpdate:modelValue":c[1]||(c[1]=u=>x.value=u),size:"min(82vw, 280px)",direction:"ltr","with-header":!1},{default:i(()=>[c[7]||(c[7]=m("div",{class:"drawer-brand"},[m("div",{class:"brand-title"},"后台管理"),m("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),_(J,{"default-active":H.value,class:"aside-menu",router:"",onSelect:Y},{default:i(()=>[(y(),I(te,null,ne(j,u=>_(W,{key:u.path,index:u.path},{default:i(()=>[_(N,null,{default:i(()=>[(y(),S(ae(u.icon)))]),_:2},1024),V(u)>0?(y(),S(z,{key:0,value:V(u),max:99,class:"menu-badge"},{default:i(()=>[m("span",Et,C(u.label),1)]),_:2},1032,["value"])):(y(),I("span",St,C(u.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1},8,["modelValue"])]),_:1})}}},Pt=ue(At,[["__scopeId","data-v-520fd502"]]),Rt=()=>k(()=>import("./ReportPage-BMEJM5Hr.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]),import.meta.url),Lt=()=>k(()=>import("./UsersPage-RI5S3snx.js"),__vite__mapDeps([12,13,1,2,3,4,10,14]),import.meta.url),xt=()=>k(()=>import("./FeedbacksPage-DrMVqBKf.js"),__vite__mapDeps([15,8,2,9,1,3,4,10,16]),import.meta.url),Nt=()=>k(()=>import("./LogsPage-Cy6Q0ave.js"),__vite__mapDeps([17,13,6,1,2,3,4,10,18]),import.meta.url),Ot=()=>k(()=>import("./AnnouncementsPage-Dagm5PzE.js"),__vite__mapDeps([19,1,2,3,4,10,20]),import.meta.url),Ct=()=>k(()=>import("./EmailPage-DiZA9Kx_.js"),__vite__mapDeps([21,5,8,2,9,1,3,4,10,22]),import.meta.url),Bt=()=>k(()=>import("./SecurityPage-yzYEGeTN.js"),__vite__mapDeps([23,8,2,9,1,3,4,10,24]),import.meta.url),Dt=()=>k(()=>import("./SystemPage-DrM9-RI5.js"),__vite__mapDeps([25,7,1,2,3,4,10,26]),import.meta.url),Mt=()=>k(()=>import("./SettingsPage-DF5fL8gq.js"),__vite__mapDeps([27,1,2,3,4,10,28]),import.meta.url),Vt=[{path:"/",component:Pt,children:[{path:"",redirect:"/reports"},{path:"/pending",redirect:"/reports"},{path:"/stats",redirect:"/reports"},{path:"/reports",name:"reports",component:Rt},{path:"/users",name:"users",component:Lt},{path:"/feedbacks",name:"feedbacks",component:xt},{path:"/logs",name:"logs",component:Nt},{path:"/announcements",name:"announcements",component:Ot},{path:"/email",name:"email",component:Ct},{path:"/security",name:"security",component:Bt},{path:"/system",name:"system",component:Dt},{path:"/settings",name:"settings",component:Mt}]}],It=Re({history:Le(),routes:Vt});xe(je).use(It).use(Ke,{locale:$e}).mount("#app");export{ue as _,p as a,Ut as b,de as c,jt as d,Ht as e,st as f,mt as g,Yt as h,zt as i,it as j,_t as p,Gt as r,Wt as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ReportPage-2jS10KoG.js","./vendor-element-CIudPaVX.js","./vendor-vue-CVxSw_oJ.js","./vendor-misc-DszMq72k.js","./vendor-element-C68yOrAy.css","./email-CgUCpCe3.js","./tasks-C6JkguA6.js","./system-CeiBEEoE.js","./MetricGrid-kv-nSROj.js","./MetricGrid-BR486o_b.css","./vendor-axios-B9ygI19o.js","./ReportPage-IaDpUFfl.css","./UsersPage-2-Mno2hz.js","./users-D9XvGIoE.js","./UsersPage-CgYh6JHW.css","./FeedbacksPage-CG9FZytm.js","./FeedbacksPage-CPmSqIaj.css","./LogsPage-Ct-BSxV6.js","./LogsPage-BUgx3sZr.css","./AnnouncementsPage-BcIVG51R.js","./AnnouncementsPage-tpO97PUg.css","./EmailPage-B1uMhyWi.js","./EmailPage-CTHxGzDv.css","./SecurityPage-93lfkhLF.js","./SecurityPage-C2-mJ7eD.css","./SystemPage-D9T-fhw-.js","./SystemPage-CTs6qr36.css","./SettingsPage-BbHyIZsy.js","./admin-VsbfHbbH.js","./SettingsPage-CjIQQfeg.css","./AdminSocialBindCallbackPage-BsLZg3f-.js","./AdminSocialBindCallbackPage-CXV1zZmY.css"])))=>i.map(i=>d[i]); +import{aj as h,D as k,q as y,ax as Se,ay as ke,r as C,c as Z,o as Te,R as Ae,E as i,G as ee,L as _,t as m,n as I,K as te,a3 as ne,H as ae,J as N,I as se,az as Pe,p as $,aA as Re,aB as Le,as as xe}from"./vendor-vue-CVxSw_oJ.js";import{E as ie,a as le,d as Oe,u as Ce,c as Ne,l as Be,b as De,m as Me,e as Ve,t as Ie,s as Fe,i as Ke,z as $e}from"./vendor-element-CIudPaVX.js";import{a as qe}from"./vendor-axios-B9ygI19o.js";import"./vendor-misc-DszMq72k.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();const ue=(e,t)=>{const n=e.__vccOpts||e;for(const[s,a]of t)n[s]=a;return n},Ue={};function Ge(e,t){const n=h("RouterView");return y(),k(n)}const je=ue(Ue,[["render",Ge]]),He="modulepreload",Ye=function(e,t){return new URL(e,t).href},oe={},E=function(t,n,s){let a=Promise.resolve();if(n&&n.length>0){let T=function(f){return Promise.all(f.map(g=>Promise.resolve(g).then(w=>({status:"fulfilled",value:w}),w=>({status:"rejected",reason:w}))))};const l=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),v=r?.nonce||r?.getAttribute("nonce");a=T(n.map(f=>{if(f=Ye(f,s),f in oe)return;oe[f]=!0;const g=f.endsWith(".css"),w=g?'[rel="stylesheet"]':"";if(s)for(let A=l.length-1;A>=0;A--){const S=l[A];if(S.href===f&&(!g||S.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${w}`))return;const b=document.createElement("link");if(b.rel=g?"stylesheet":He,g||(b.as="script"),b.crossOrigin="",b.href=f,v&&b.setAttribute("nonce",v),document.head.appendChild(b),g)return new Promise((A,S)=>{b.addEventListener("load",A),b.addEventListener("error",()=>S(new Error(`Unable to preload CSS for ${f}`)))})}))}function o(l){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=l,window.dispatchEvent(r),!r.defaultPrevented)throw l}return a.then(l=>{for(const r of l||[])r.status==="rejected"&&o(r.reason);return t().catch(o)})};let re="",ce=0;const ze=new Set([408,425,429,500,502,503,504]),We=1,Je=300;function B(e,t,n=1500){const s=Date.now();e===re&&s-ce=We)return!1;const s=String(e?.code||"");if(s==="ECONNABORTED"||s==="ERR_NETWORK")return!0;const a=Number(e?.response?.status||0);return ze.has(a)}function et(e){return new Promise(t=>{window.setTimeout(t,Math.max(0,Number(e||0)))})}async function tt(e,t){const n=e?.config||{},s=Number(n.__retry_count||0);n.__retry_count=s+1;const a=Je*(s+1);return await et(a),t.request(n)}const p=qe.create({baseURL:"/yuyx/api",timeout:3e4,withCredentials:!0});let D=null;async function nt(){return D||(D=ie.prompt("请输入管理员密码进行二次确认","安全确认",{inputType:"password",inputPlaceholder:"管理员密码",confirmButtonText:"确认",cancelButtonText:"取消",inputValidator:e=>!!String(e||"").trim(),inputErrorMessage:"密码不能为空"}).then(async e=>{const t=String(e.value||"").trim();await p.post("/admin/reauth",{password:t}),le.success("已通过安全确认")}).finally(()=>{D=null}),D)}p.interceptors.request.use(e=>{const t=String(e?.method||"GET").toUpperCase();if(!["GET","HEAD","OPTIONS"].includes(t)){const n=Xe("csrf_token");n&&(e.headers=e.headers||{},e.headers["X-CSRF-Token"]=n)}return e});p.interceptors.response.use(e=>e,async e=>{const t=e?.response?.status,n=e?.response?.data,s=n?.error||n?.message||e?.message||"请求失败",a=!!e?.config?.__silent;if(n?.code==="reauth_required"&&e?.config&&!e.config.__reauth_retry)try{return e.config.__reauth_retry=!0,await nt(),p.request(e.config)}catch{return Promise.reject(e)}return Ze(e)?tt(e,p):(t===401?(a||B("401",s,3e3),(window.location?.pathname||"").startsWith("/yuyx")||(window.location.href="/yuyx")):t===403?a||B("403",s,5e3):t?a||B(`http:${t}:${s}`,s):e?.code==="ECONNABORTED"?a||B("timeout","请求超时",3e3):a||B(`net:${s}`,s,3e3),Promise.reject(e))});function de(e,t=0){let n=!1,s=null,a=0,o=null;async function l(v={}){const T=!!v?.force,f=Date.now();return!T&&n&&fe()).then(g=>{s=g,n=!0;const w=Math.max(0,Number(t)||0);return a=Date.now()+w,g}).finally(()=>{o=null})),o)}function r(){n=!1,s=null,a=0,o=null}return{run:l,clear:r}}const at=1e4,fe=de(async()=>{const{data:e}=await p.get("/feedbacks",{params:{limit:1,offset:0}});return e?.stats},at);async function Gt(e=""){const{data:t}=await p.get("/feedbacks",{params:e?{status:e}:{}});return t}async function st(e={}){return fe.run(e)}function q(){fe.clear()}async function jt(e,t){const{data:n}=await p.post(`/feedbacks/${e}/reply`,{reply:t});return q(),n}async function Ht(e){const{data:t}=await p.post(`/feedbacks/${e}/close`);return q(),t}async function Yt(e){const{data:t}=await p.delete(`/feedbacks/${e}`);return q(),t}const ot=15e3,rt=de(async()=>{const{data:e}=await p.get("/stats");return e},ot);async function ct(e={}){return rt.run(e)}async function it(e={},t={}){const{data:n}=await p.get("/kdocs/status",{params:e,...t});return n}async function zt(e={}){const t={force:!0,...e},{data:n}=await p.post("/kdocs/qr",t);return n}async function Wt(){const{data:e}=await p.post("/kdocs/clear-login",{});return e}const U="admin:kdocs:status:v1",me=300*1e3;let P=null,L=0,R=null;function G(){return Date.now()}function F(e){return!e||typeof e!="object"?{}:e}function lt(){try{const e=window.sessionStorage.getItem(U);if(!e)return null;const t=JSON.parse(e);if(!t||typeof t!="object")return null;const n=Number(t.updated_at||0),s=F(t.status);return n?{status:s,updatedAt:n}:null}catch{return null}}function ut(e,t){try{window.sessionStorage.setItem(U,JSON.stringify({status:F(e),updated_at:Number(t||G())}))}catch{}}function dt(){if(P!==null)return;const e=lt();e&&(P=e.status,L=e.updatedAt)}function pe(e){return P=F(e),L=G(),ut(P,L),P}function ft(e){if(P===null||!L)return!1;const t=Number(e);return!Number.isFinite(t)||t<0?!0:G()-L<=t}function mt(e={}){dt();const t=e.maxAgeMs??me;return ft(t)?F(P):null}function Jt(e){return pe(e)}function pt(){P=null,L=0,R=null;try{window.sessionStorage.removeItem(U)}catch{}}async function _t(e={}){const{force:t=!1,maxAgeMs:n=me,silent:s=!0,live:a=0}=e;if(!t){const r=mt({maxAgeMs:n});if(r)return r}return R||(R=it(a?{live:1}:{},{__silent:!!s,__no_retry:!0,timeout:8e3}).then(r=>pe(r||{})).finally(()=>{R=null}),R)}const ht={class:"menu-label"},yt={key:1,class:"menu-label"},gt={class:"header-left"},bt={class:"header-right"},vt={class:"admin-name"},wt={class:"main-shell"},Et={class:"menu-label"},St={key:1,class:"menu-label"},kt=6e4,Tt=18e4,At={__name:"AdminLayout",setup(e){const t=Se(),n=ke(),s=C({}),a=Z(()=>s.value?.admin_username||"");async function o(d={}){s.value=await ct(d)}const l=C(!1),r=C(0);let v=null;async function T(d=null){if(d&&typeof d=="object"){Object.prototype.hasOwnProperty.call(d,"pendingFeedbacks")&&(r.value=Number(d.pendingFeedbacks||0));return}if(!l.value){l.value=!0;try{const c=await st();r.value=Number(c?.pending||0)}finally{l.value=!1}}}function f(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function g(){return f()?Tt:kt}function w(){v&&(window.clearTimeout(v),v=null)}function b(){w(),v=window.setTimeout(async()=>{v=null,await T().catch(()=>{}),b()},g())}function A(){b()}$("refreshStats",o),$("adminStats",s),$("refreshNavBadges",T);const S=C(!1),x=C(!1);let M;function K(){S.value=!!M?.matches,S.value||(x.value=!1)}Te(async()=>{M=window.matchMedia("(max-width: 768px)"),M.addEventListener?.("change",K),K(),_t({maxAgeMs:6e4,silent:!0}).catch(()=>{}),await o(),await T(),b(),window.addEventListener("visibilitychange",A)}),Ae(()=>{M?.removeEventListener?.("change",K),w(),window.removeEventListener("visibilitychange",A)});const j=[{path:"/reports",label:"报表",icon:Oe},{path:"/users",label:"用户",icon:Ce},{path:"/feedbacks",label:"反馈",icon:Ne,badgeKey:"feedbacks"},{path:"/logs",label:"任务日志",icon:Be},{path:"/announcements",label:"公告",icon:De},{path:"/email",label:"邮件",icon:Me},{path:"/security",label:"安全防护",icon:Ve},{path:"/system",label:"系统配置",icon:Ie},{path:"/settings",label:"设置",icon:Fe}],H=Z(()=>t.path);function V(d){return d?.badgeKey&&d.badgeKey==="feedbacks"?Number(r.value||0):0}async function _e(){let d=!1;try{await ie.confirm("确定退出管理员登录吗?","退出登录",{confirmButtonText:"退出",cancelButtonText:"取消",type:"warning"}),d=!0}catch(c){const O=String(c||"").toLowerCase();if(O==="cancel"||O==="close")return;try{d=window.confirm("确定退出管理员登录吗?")}catch{d=!1}}if(d)try{await p.post("/logout")}finally{pt(),window.location.href="/yuyx"}}async function Y(d){await n.push(d),x.value=!1}return(d,c)=>{const O=h("el-icon"),z=h("el-badge"),W=h("el-menu-item"),J=h("el-menu"),he=h("el-aside"),X=h("el-button"),ye=h("el-header"),ge=h("RouterView"),be=h("el-skeleton"),ve=h("el-card"),we=h("el-main"),Q=h("el-container"),Ee=h("el-drawer");return y(),k(Q,{class:"layout-root"},{default:i(()=>[S.value?ee("",!0):(y(),k(he,{key:0,width:"220px",class:"layout-aside"},{default:i(()=>[c[2]||(c[2]=m("div",{class:"brand"},[m("div",{class:"brand-title"},"后台管理"),m("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),_(J,{"default-active":H.value,class:"aside-menu",router:"",onSelect:Y},{default:i(()=>[(y(),I(te,null,ne(j,u=>_(W,{key:u.path,index:u.path},{default:i(()=>[_(O,null,{default:i(()=>[(y(),k(ae(u.icon)))]),_:2},1024),V(u)>0?(y(),k(z,{key:0,value:V(u),max:99,class:"menu-badge"},{default:i(()=>[m("span",ht,N(u.label),1)]),_:2},1032,["value"])):(y(),I("span",yt,N(u.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1})),_(Q,null,{default:i(()=>[_(ye,{class:"layout-header"},{default:i(()=>[m("div",gt,[S.value?(y(),k(X,{key:0,text:"",class:"header-menu-btn",onClick:c[0]||(c[0]=u=>x.value=!0)},{default:i(()=>[...c[3]||(c[3]=[se(" 菜单 ",-1)])]),_:1})):ee("",!0),c[4]||(c[4]=m("div",{class:"header-title"},"后台管理系统",-1))]),m("div",bt,[m("div",vt,[c[5]||(c[5]=m("span",{class:"app-muted"},"管理员",-1)),m("strong",null,N(a.value||"-"),1)]),_(X,{type:"primary",plain:"",class:"logout-btn",onClick:_e},{default:i(()=>[...c[6]||(c[6]=[se("退出",-1)])]),_:1})])]),_:1}),_(we,{class:"layout-main"},{default:i(()=>[m("div",wt,[(y(),k(Pe,null,{default:i(()=>[_(ge)]),fallback:i(()=>[_(ve,{shadow:"never","body-style":{padding:"16px"},class:"fallback-card"},{default:i(()=>[_(be,{rows:5,animated:""})]),_:1})]),_:1}))])]),_:1})]),_:1}),_(Ee,{modelValue:x.value,"onUpdate:modelValue":c[1]||(c[1]=u=>x.value=u),size:"min(82vw, 280px)",direction:"ltr","with-header":!1},{default:i(()=>[c[7]||(c[7]=m("div",{class:"drawer-brand"},[m("div",{class:"brand-title"},"后台管理"),m("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),_(J,{"default-active":H.value,class:"aside-menu",router:"",onSelect:Y},{default:i(()=>[(y(),I(te,null,ne(j,u=>_(W,{key:u.path,index:u.path},{default:i(()=>[_(O,null,{default:i(()=>[(y(),k(ae(u.icon)))]),_:2},1024),V(u)>0?(y(),k(z,{key:0,value:V(u),max:99,class:"menu-badge"},{default:i(()=>[m("span",Et,N(u.label),1)]),_:2},1032,["value"])):(y(),I("span",St,N(u.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1},8,["modelValue"])]),_:1})}}},Pt=ue(At,[["__scopeId","data-v-520fd502"]]),Rt=()=>E(()=>import("./ReportPage-2jS10KoG.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]),import.meta.url),Lt=()=>E(()=>import("./UsersPage-2-Mno2hz.js"),__vite__mapDeps([12,13,1,2,3,4,10,14]),import.meta.url),xt=()=>E(()=>import("./FeedbacksPage-CG9FZytm.js"),__vite__mapDeps([15,8,2,9,1,3,4,10,16]),import.meta.url),Ot=()=>E(()=>import("./LogsPage-Ct-BSxV6.js"),__vite__mapDeps([17,13,6,1,2,3,4,10,18]),import.meta.url),Ct=()=>E(()=>import("./AnnouncementsPage-BcIVG51R.js"),__vite__mapDeps([19,1,2,3,4,10,20]),import.meta.url),Nt=()=>E(()=>import("./EmailPage-B1uMhyWi.js"),__vite__mapDeps([21,5,8,2,9,1,3,4,10,22]),import.meta.url),Bt=()=>E(()=>import("./SecurityPage-93lfkhLF.js"),__vite__mapDeps([23,8,2,9,1,3,4,10,24]),import.meta.url),Dt=()=>E(()=>import("./SystemPage-D9T-fhw-.js"),__vite__mapDeps([25,7,1,2,3,4,10,26]),import.meta.url),Mt=()=>E(()=>import("./SettingsPage-BbHyIZsy.js"),__vite__mapDeps([27,3,2,28,1,4,10,29]),import.meta.url),Vt=()=>E(()=>import("./AdminSocialBindCallbackPage-BsLZg3f-.js"),__vite__mapDeps([30,2,28,1,3,4,10,31]),import.meta.url),It=[{path:"/social-bind-callback",name:"admin_social_bind_callback",component:Vt},{path:"/",component:Pt,children:[{path:"",redirect:"/reports"},{path:"/pending",redirect:"/reports"},{path:"/stats",redirect:"/reports"},{path:"/reports",name:"reports",component:Rt},{path:"/users",name:"users",component:Lt},{path:"/feedbacks",name:"feedbacks",component:xt},{path:"/logs",name:"logs",component:Ot},{path:"/announcements",name:"announcements",component:Ct},{path:"/email",name:"email",component:Nt},{path:"/security",name:"security",component:Bt},{path:"/system",name:"system",component:Dt},{path:"/settings",name:"settings",component:Mt}]}],Ft=Re({history:Le(),routes:It});xe(je).use(Ft).use(Ke,{locale:$e}).mount("#app");export{ue as _,p as a,Gt as b,de as c,Ht as d,Yt as e,st as f,mt as g,zt as h,Wt as i,it as j,_t as p,jt as r,Jt as u}; diff --git a/static/admin/assets/system-CYbWdReq.js b/static/admin/assets/system-CeiBEEoE.js similarity index 88% rename from static/admin/assets/system-CYbWdReq.js rename to static/admin/assets/system-CeiBEEoE.js index 933b17c..6b4a534 100644 --- a/static/admin/assets/system-CYbWdReq.js +++ b/static/admin/assets/system-CeiBEEoE.js @@ -1 +1 @@ -import{c as s,a as n}from"./index-DOvMEmc8.js";const o=s(async()=>{const{data:t}=await n.get("/system/config");return t},15e3);async function i(t={}){return o.run(t)}async function e(t){const{data:a}=await n.post("/system/config",t);return o.clear(),a}async function r(){const{data:t}=await n.get("/social-login/config");return t}async function f(t){const{data:a}=await n.post("/social-login/config",t||{});return o.clear(),a}async function g(t){const{data:a}=await n.post("/social-login/test",t||{});return a}export{r as a,f as b,i as f,g as t,e as u}; +import{c as s,a as n}from"./index-6ynv0Z9Y.js";const o=s(async()=>{const{data:t}=await n.get("/system/config");return t},15e3);async function i(t={}){return o.run(t)}async function e(t){const{data:a}=await n.post("/system/config",t);return o.clear(),a}async function r(){const{data:t}=await n.get("/social-login/config");return t}async function f(t){const{data:a}=await n.post("/social-login/config",t||{});return o.clear(),a}async function g(t){const{data:a}=await n.post("/social-login/test",t||{});return a}export{r as a,f as b,i as f,g as t,e as u}; diff --git a/static/admin/assets/tasks-B7oNpIBD.js b/static/admin/assets/tasks-C6JkguA6.js similarity index 93% rename from static/admin/assets/tasks-B7oNpIBD.js rename to static/admin/assets/tasks-C6JkguA6.js index 653acb4..b85f85d 100644 --- a/static/admin/assets/tasks-B7oNpIBD.js +++ b/static/admin/assets/tasks-C6JkguA6.js @@ -1 +1 @@ -import{c as s,a}from"./index-DOvMEmc8.js";const c=s(async()=>{const{data:t}=await a.get("/server/info");return t},3e4),o=s(async()=>{const{data:t}=await a.get("/docker_stats");return t},8e3),u=s(async()=>{const{data:t}=await a.get("/request_metrics");return t},1e4),i=s(async()=>{const{data:t}=await a.get("/slow_sql_metrics");return t},1e4),e=s(async()=>{const{data:t}=await a.get("/task/stats");return t},4e3),r=s(async()=>{const{data:t}=await a.get("/task/running");return t},2e3);async function g(t={}){return c.run(t)}async function y(t={}){return o.run(t)}async function d(t={}){return u.run(t)}async function k(t={}){return i.run(t)}async function l(t={}){return e.run(t)}async function w(t={}){return r.run(t)}async function _(t){const{data:n}=await a.get("/task/logs",{params:t});return n}async function h(t){const{data:n}=await a.post("/task/logs/clear",{days:t});return e.clear(),r.clear(),n}export{w as a,g as b,y as c,d,k as e,l as f,_ as g,h}; +import{c as s,a}from"./index-6ynv0Z9Y.js";const c=s(async()=>{const{data:t}=await a.get("/server/info");return t},3e4),o=s(async()=>{const{data:t}=await a.get("/docker_stats");return t},8e3),u=s(async()=>{const{data:t}=await a.get("/request_metrics");return t},1e4),i=s(async()=>{const{data:t}=await a.get("/slow_sql_metrics");return t},1e4),e=s(async()=>{const{data:t}=await a.get("/task/stats");return t},4e3),r=s(async()=>{const{data:t}=await a.get("/task/running");return t},2e3);async function g(t={}){return c.run(t)}async function y(t={}){return o.run(t)}async function d(t={}){return u.run(t)}async function k(t={}){return i.run(t)}async function l(t={}){return e.run(t)}async function w(t={}){return r.run(t)}async function _(t){const{data:n}=await a.get("/task/logs",{params:t});return n}async function h(t){const{data:n}=await a.post("/task/logs/clear",{days:t});return e.clear(),r.clear(),n}export{w as a,g as b,y as c,d,k as e,l as f,_ as g,h}; diff --git a/static/admin/assets/users-DzDcz9C_.js b/static/admin/assets/users-D9XvGIoE.js similarity index 90% rename from static/admin/assets/users-DzDcz9C_.js rename to static/admin/assets/users-D9XvGIoE.js index ccb411b..a94a934 100644 --- a/static/admin/assets/users-DzDcz9C_.js +++ b/static/admin/assets/users-D9XvGIoE.js @@ -1 +1 @@ -import{a as t}from"./index-DOvMEmc8.js";async function n(){const{data:s}=await t.get("/users");return s}async function o(s){const{data:a}=await t.post(`/users/${s}/approve`);return a}async function c(s){const{data:a}=await t.post(`/users/${s}/reject`);return a}async function i(s){const{data:a}=await t.delete(`/users/${s}`);return a}async function u(s,a){const{data:e}=await t.post(`/users/${s}/vip`,{days:a});return e}async function p(s){const{data:a}=await t.delete(`/users/${s}/vip`);return a}async function d(s,a){const{data:e}=await t.post(`/users/${s}/reset_password`,{new_password:a});return e}export{o as a,p as b,d as c,i as d,n as f,c as r,u as s}; +import{a as t}from"./index-6ynv0Z9Y.js";async function n(){const{data:s}=await t.get("/users");return s}async function o(s){const{data:a}=await t.post(`/users/${s}/approve`);return a}async function c(s){const{data:a}=await t.post(`/users/${s}/reject`);return a}async function i(s){const{data:a}=await t.delete(`/users/${s}`);return a}async function u(s,a){const{data:e}=await t.post(`/users/${s}/vip`,{days:a});return e}async function p(s){const{data:a}=await t.delete(`/users/${s}/vip`);return a}async function d(s,a){const{data:e}=await t.post(`/users/${s}/reset_password`,{new_password:a});return e}export{o as a,p as b,d as c,i as d,n as f,c as r,u as s}; diff --git a/static/admin/assets/vendor-element-B5S5pUKo.js b/static/admin/assets/vendor-element-CIudPaVX.js similarity index 99% rename from static/admin/assets/vendor-element-B5S5pUKo.js rename to static/admin/assets/vendor-element-CIudPaVX.js index 7bd75b1..379e83a 100644 --- a/static/admin/assets/vendor-element-B5S5pUKo.js +++ b/static/admin/assets/vendor-element-CIudPaVX.js @@ -1,4 +1,4 @@ -import{g as tt,i as ke,r as I,c as b,u as a,a as De,b as Se,d as yt,e as Nn,h as on,w as eh,f as Je,p as rt,j as zr,k as x,s as Bt,l as re,o as Ze,m as En,n as L,q as S,t as F,v as Z,x as Pe,y as T,z as Te,N as Vt,A as qe,B as Zt,C as wt,D as le,E as X,F as Ye,G as ee,H as Xe,I as ut,J as pe,K as Re,L as U,M as bt,T as rn,O as ms,P as hl,Q as Ve,R as _t,S as kt,U as Hr,V as ml,W as th,X as Ml,Y as Dc,Z as nh,_ as Kr,$ as Ac,a0 as lh,a1 as It,a2 as Mn,a3 as st,a4 as ka,a5 as Sn,a6 as nl,a7 as Dt,a8 as Le,a9 as Fo,aa as Go,ab as Fc,ac as tn,ad as xc,ae as zc,af as qa,ag as gs,ah,ai as oh,aj as gt,ak as Hc,al as Tl,am as sh,an as rh,ao as ar,ap as bs,aq as ih,ar as Pl,as as uh,at as ch,au as Kc}from"./vendor-vue-CVxSw_oJ.js";import{i as Ut,a as Ct,g as Gt,f as Ga,b as Kt,s as dh,u as Wr,c as cu,d as Ft,t as fh,p as On,e as Xo,h as Ht,j as Ma,E as Ql,y as vh,k as ph,o as jr,l as Bn,m as Wc,T as ha,n as We,q as jc,r as Wl,v as hh,w as Zo,x as mh,z as an,A as gh,B as Fs,C as Yr,D as bh,F as yh,G as Ch,H as wh,I as kh,J as Sh,K as Eh,L as Ul,M as Yc,N as _h,O as du,S as Th,P as $h,Q as or,R as Uc,U as qc,V as Gc,W as Nh,X as Ih,Y as fo,Z as Xc,_ as Zc,$ as Mh,a0 as Ph,a1 as Oh,a2 as sr,a3 as Jc,a4 as Qc,a5 as ed,a6 as td,a7 as nd,a8 as Rh,a9 as Bh,aa as Lh,ab as Vh,ac as Dh}from"./vendor-misc-BeoNyvBp.js";const Ah="2.11.3",fu=Symbol("INSTALLED_KEY"),ld=Symbol(),ja="el",Fh="is-",Dl=(e,t,n,l,o)=>{let s=`${e}-${t}`;return n&&(s+=`-${n}`),l&&(s+=`__${l}`),o&&(s+=`--${o}`),s},ad=Symbol("namespaceContextKey"),Ur=e=>{const t=e||(tt()?ke(ad,I(ja)):I(ja));return b(()=>a(t)||ja)},ue=(e,t)=>{const n=Ur(t);return{namespace:n,b:(p="")=>Dl(n.value,e,p,"",""),e:p=>p?Dl(n.value,e,"",p,""):"",m:p=>p?Dl(n.value,e,"","",p):"",be:(p,g)=>p&&g?Dl(n.value,e,p,g,""):"",em:(p,g)=>p&&g?Dl(n.value,e,"",p,g):"",bm:(p,g)=>p&&g?Dl(n.value,e,p,"",g):"",bem:(p,g,y)=>p&&g&&y?Dl(n.value,e,p,g,y):"",is:(p,...g)=>{const y=g.length>=1?g[0]:!0;return p&&y?`${Fh}${p}`:""},cssVar:p=>{const g={};for(const y in p)p[y]&&(g[`--${n.value}-${y}`]=p[y]);return g},cssVarName:p=>`--${n.value}-${p}`,cssVarBlock:p=>{const g={};for(const y in p)p[y]&&(g[`--${n.value}-${e}-${y}`]=p[y]);return g},cssVarBlockName:p=>`--${n.value}-${e}-${p}`}},dt=e=>e===void 0,Tt=e=>typeof e=="boolean",Me=e=>typeof e=="number",Pn=e=>!e&&e!==0||Se(e)&&e.length===0||yt(e)&&!Object.keys(e).length,Rn=e=>typeof Element>"u"?!1:e instanceof Element,In=e=>Ut(e),xh=e=>De(e)?!Number.isNaN(Number(e)):!1,vo=e=>e===window,vu={current:0},pu=I(0),od=2e3,hu=Symbol("elZIndexContextKey"),sd=Symbol("zIndexContextKey"),Pa=e=>{const t=tt()?ke(hu,vu):vu,n=e||(tt()?ke(sd,void 0):void 0),l=b(()=>{const r=a(n);return Me(r)?r:od}),o=b(()=>l.value+pu.value),s=()=>(t.current++,pu.value=t.current,o.value);return!Ct&&ke(hu),{initialZIndex:l,currentZIndex:o,nextZIndex:s}};var zh={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish",close:"Close this dialog"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const Hh=e=>(t,n)=>Kh(t,n,a(e)),Kh=(e,t,n)=>Gt(n,e,e).replace(/\{(\w+)\}/g,(l,o)=>{var s;return`${(s=t?.[o])!=null?s:`{${o}}`}`}),Wh=e=>{const t=b(()=>a(e).name),n=Nn(e)?e:I(e);return{lang:t,locale:n,t:Hh(e)}},rd=Symbol("localeContextKey"),ht=e=>{const t=e||ke(rd,I());return Wh(b(()=>t.value||zh))},id="__epPropKey",j=e=>e,jh=e=>yt(e)&&!!e[id],Xn=(e,t)=>{if(!yt(e)||jh(e))return e;const{values:n,required:l,default:o,type:s,validator:r}=e,u={type:s,required:!!l,validator:n||r?c=>{let f=!1,v=[];if(n&&(v=Array.from(n),on(e,"default")&&v.push(o),f||(f=v.includes(c))),r&&(f||(f=r(c))),!f&&v.length>0){const m=[...new Set(v)].map(d=>JSON.stringify(d)).join(", ");eh(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${m}], got value ${JSON.stringify(c)}.`)}return f}:void 0,[id]:!0};return on(e,"default")&&(u.default=o),u},fe=e=>Ga(Object.entries(e).map(([t,n])=>[t,Xn(n,t)])),ol=["","default","small","large"],Qt=Xn({type:String,values:ol,required:!1}),ud=Symbol("size"),cd=()=>{const e=ke(ud,{});return b(()=>a(e.size)||"")},dd=Symbol("emptyValuesContextKey"),Yh=["",void 0,null],Uh=void 0,ea=fe({emptyValues:Array,valueOnClear:{type:j([String,Number,Boolean,Function]),default:void 0,validator:e=>(e=Je(e)?e():e,Se(e)?e.every(t=>!t):!e)}}),po=(e,t)=>{const n=tt()?ke(dd,I({})):I({}),l=b(()=>e.emptyValues||n.value.emptyValues||Yh),o=b(()=>Je(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Je(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:Uh),s=r=>{let i=!0;return Se(r)?i=l.value.some(u=>Kt(r,u)):i=l.value.includes(r),i};return s(o.value),{emptyValues:l,valueOnClear:o,isEmptyValue:s}},Sa=e=>Object.keys(e),fd=e=>Object.entries(e),Ya=(e,t,n)=>({get value(){return Gt(e,t,n)},set value(l){dh(e,t,l)}}),Jo=I();function Oa(e,t=void 0){const n=tt()?ke(ld,Jo):Jo;return e?b(()=>{var l,o;return(o=(l=n.value)==null?void 0:l[e])!=null?o:t}):n}function ys(e,t){const n=Oa(),l=ue(e,b(()=>{var i;return((i=n.value)==null?void 0:i.namespace)||ja})),o=ht(b(()=>{var i;return(i=n.value)==null?void 0:i.locale})),s=Pa(b(()=>{var i;return((i=n.value)==null?void 0:i.zIndex)||od})),r=b(()=>{var i;return a(t)||((i=n.value)==null?void 0:i.size)||""});return qr(b(()=>a(n)||{})),{ns:l,locale:o,zIndex:s,size:r}}const qr=(e,t,n=!1)=>{var l;const o=!!tt(),s=o?Oa():void 0,r=(l=t?.provide)!=null?l:o?rt:void 0;if(!r)return;const i=b(()=>{const u=a(e);return s?.value?qh(s.value,u):u});return r(ld,i),r(rd,b(()=>i.value.locale)),r(ad,b(()=>i.value.namespace)),r(sd,b(()=>i.value.zIndex)),r(ud,{size:b(()=>i.value.size||"")}),r(dd,b(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(n||!Jo.value)&&(Jo.value=i.value),i},qh=(e,t)=>{const n=[...new Set([...Sa(e),...Sa(t)])],l={};for(const o of n)l[o]=t[o]!==void 0?t[o]:e[o];return l},Gh=(e=[])=>({version:Ah,install:(n,l)=>{n[fu]||(n[fu]=!0,e.forEach(o=>n.use(o)),l&&qr(l,n,!0))}}),Fe="update:modelValue",lt="change",Jt="input",Xh=fe({zIndex:{type:j([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),Zh={scroll:({scrollTop:e,fixed:t})=>Me(e)&&Tt(t),[lt]:e=>Tt(e)};var ve=(e,t)=>{const n=e.__vccOpts||e;for(const[l,o]of t)n[l]=o;return n};function Jh(e,t,n,l){const o=n-t;return e/=l/2,e<1?o/2*e*e*e+t:o/2*((e-=2)*e*e+2)+t}const Ol=e=>Ct?window.requestAnimationFrame(e):setTimeout(e,16),ql=e=>Ct?window.cancelAnimationFrame(e):clearTimeout(e),vd=(e="")=>e.split(" ").filter(t=>!!t.trim()),Fn=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},xn=(e,t)=>{!e||!t.trim()||e.classList.add(...vd(t))},yn=(e,t)=>{!e||!t.trim()||e.classList.remove(...vd(t))},ul=(e,t)=>{var n;if(!Ct||!e||!t)return"";let l=zr(t);l==="float"&&(l="cssFloat");try{const o=e.style[l];if(o)return o;const s=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return s?s[l]:""}catch{return e.style[l]}},pd=(e,t,n)=>{if(!(!e||!t))if(yt(t))fd(t).forEach(([l,o])=>pd(e,l,o));else{const l=zr(t);e.style[l]=n}};function Wt(e,t="px"){if(!e)return"";if(Me(e)||xh(e))return`${e}${t}`;if(De(e))return e}const Qh=(e,t)=>{if(!Ct)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],l=ul(e,n);return["scroll","auto","overlay"].some(o=>l.includes(o))},Gr=(e,t)=>{if(!Ct)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(Qh(n,t))return n;n=n.parentNode}return n};let No;const hd=e=>{var t;if(!Ct)return 0;if(No!==void 0)return No;const n=document.createElement("div");n.className=`${e}-scrollbar__wrap`,n.style.visibility="hidden",n.style.width="100px",n.style.position="absolute",n.style.top="-9999px",document.body.appendChild(n);const l=n.offsetWidth;n.style.overflow="scroll";const o=document.createElement("div");o.style.width="100%",n.appendChild(o);const s=o.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),No=l-s,No};function Xr(e,t){if(!Ct)return;if(!t){e.scrollTop=0;return}const n=[];let l=t.offsetParent;for(;l!==null&&e!==l&&e.contains(l);)n.push(l),l=l.offsetParent;const o=t.offsetTop+n.reduce((u,c)=>u+c.offsetTop,0),s=o+t.offsetHeight,r=e.scrollTop,i=r+e.clientHeight;oi&&(e.scrollTop=s-e.clientHeight)}function em(e,t,n,l,o){const s=Date.now();let r;const i=()=>{const c=Date.now()-s,f=Jh(c>l?l:c,t,n,l);vo(e)?e.scrollTo(window.pageXOffset,f):e.scrollTop=f,c{r&&ql(r)}}const mu=(e,t)=>vo(t)?e.ownerDocument.documentElement:t,gu=e=>vo(e)?window.scrollY:e.scrollTop;class tm extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function qt(e,t){throw new tm(`[${e}] ${t}`)}const md="ElAffix",nm=x({name:md}),lm=x({...nm,props:Xh,emits:Zh,setup(e,{expose:t,emit:n}){const l=e,o=ue("affix"),s=Bt(),r=Bt(),i=Bt(),{height:u}=Wr(),{height:c,width:f,top:v,bottom:m,update:d}=cu(r,{windowScroll:!1}),h=cu(s),p=I(!1),g=I(0),y=I(0),k=b(()=>({height:p.value?`${c.value}px`:"",width:p.value?`${f.value}px`:""})),C=b(()=>{if(!p.value)return{};const $=l.offset?Wt(l.offset):0;return{height:`${c.value}px`,width:`${f.value}px`,top:l.position==="top"?$:"",bottom:l.position==="bottom"?$:"",transform:y.value?`translateY(${y.value}px)`:"",zIndex:l.zIndex}}),w=()=>{if(!i.value)return;g.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0;const{position:$,target:O,offset:M}=l,N=M+c.value;if($==="top")if(O){const P=h.bottom.value-N;p.value=M>v.value&&h.bottom.value>0,y.value=P<0?P:0}else p.value=M>v.value;else if(O){const P=u.value-h.top.value-N;p.value=u.value-Mh.top.value,y.value=P<0?-P:0}else p.value=u.value-M{if(!p.value){d();return}p.value=!1,await Te(),d(),p.value=!0},E=async()=>{d(),await Te(),n("scroll",{scrollTop:g.value,fixed:p.value})};return re(p,$=>n(lt,$)),Ze(()=>{var $;l.target?(s.value=($=document.querySelector(l.target))!=null?$:void 0,s.value||qt(md,`Target does not exist: ${l.target}`)):s.value=document.documentElement,i.value=Gr(r.value,!0),d()}),Ft(i,"scroll",E),En(w),t({update:w,updateRoot:_}),($,O)=>(S(),L("div",{ref_key:"root",ref:r,class:T(a(o).b()),style:Pe(a(k))},[F("div",{class:T({[a(o).m("fixed")]:p.value}),style:Pe(a(C))},[Z($.$slots,"default")],6)],6))}});var am=ve(lm,[["__file","affix.vue"]]);const Ke=(e,t)=>{if(e.install=n=>{for(const l of[e,...Object.values(t??{})])n.component(l.name,l)},t)for(const[n,l]of Object.entries(t))e[n]=l;return e},gd=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),om=(e,t)=>(e.install=n=>{n.directive(t,e)},e),zt=e=>(e.install=Vt,e),sm=Ke(am),rm=fe({size:{type:j([Number,String])},color:{type:String}}),im=x({name:"ElIcon",inheritAttrs:!1}),um=x({...im,props:rm,setup(e){const t=e,n=ue("icon"),l=b(()=>{const{size:o,color:s}=t;return!o&&!s?{}:{fontSize:dt(o)?void 0:Wt(o),"--color":s}});return(o,s)=>(S(),L("i",qe({class:a(n).b(),style:a(l)},o.$attrs),[Z(o.$slots,"default")],16))}});var cm=ve(um,[["__file","icon.vue"]]);const $e=Ke(cm);function bu(){let e;const t=(l,o)=>{n(),e=window.setTimeout(l,o)},n=()=>window.clearTimeout(e);return fh(()=>n()),{registerTimeout:t,cancelTimeout:n}}const bd=fe({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),yd=({showAfter:e,hideAfter:t,autoClose:n,open:l,close:o})=>{const{registerTimeout:s}=bu(),{registerTimeout:r,cancelTimeout:i}=bu();return{onOpen:(f,v=a(e))=>{s(()=>{l(f);const m=a(n);Me(m)&&m>0&&r(()=>{o(f)},m)},v)},onClose:(f,v=a(t))=>{i(),s(()=>{o(f)},v)}}};var dm=x({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"})]))}}),sl=dm,fm=x({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.59 30.59 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.59 30.59 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0"})]))}}),fl=fm,vm=x({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512 340.864 831.872a30.59 30.59 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Cn=vm,pm=x({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),Cs=pm,hm=x({name:"Back",__name:"back",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),F("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),mm=hm,gm=x({name:"Bell",__name:"bell",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64"}),F("path",{fill:"currentColor",d:"M256 768h512V448a256 256 0 1 0-512 0zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320"}),F("path",{fill:"currentColor",d:"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32m352 128h128a64 64 0 0 1-128 0"})]))}}),UM=gm,bm=x({name:"Calendar",__name:"calendar",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),ym=bm,Cm=x({name:"CaretRight",__name:"caret-right",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"})]))}}),Cd=Cm,wm=x({name:"CaretTop",__name:"caret-top",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"})]))}}),km=wm,Sm=x({name:"ChatLineSquare",__name:"chat-line-square",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M160 826.88 273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z"}),F("path",{fill:"currentColor",d:"M352 512h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m0-192h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32"})]))}}),qM=Sm,Em=x({name:"Check",__name:"check",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),ho=Em,_m=x({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Tm=_m,$m=x({name:"CircleCheck",__name:"circle-check",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752z"})]))}}),Zr=$m,Nm=x({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),Jr=Nm,Im=x({name:"CircleClose",__name:"circle-close",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),gl=Im,Mm=x({name:"Clock",__name:"clock",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),F("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),wd=Mm,Pm=x({name:"Close",__name:"close",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Hn=Pm,Om=x({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672zm256 0a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672z"})]))}}),Rl=Om,Rm=x({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L764.736 512 452.864 192a30.59 30.59 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L508.736 512 196.864 192a30.59 30.59 0 0 1 0-42.688"})]))}}),Bl=Rm,Bm=x({name:"Delete",__name:"delete",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),Lm=Bm,Vm=x({name:"Document",__name:"document",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),Dm=Vm,Am=x({name:"FullScreen",__name:"full-screen",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),Fm=Am,xm=x({name:"Hide",__name:"hide",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176"}),F("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48"})]))}}),zm=xm,Hm=x({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Xa=Hm,Km=x({name:"Key",__name:"key",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M448 456.064V96a32 32 0 0 1 32-32.064L672 64a32 32 0 0 1 0 64H512v128h160a32 32 0 0 1 0 64H512v128a256 256 0 1 1-64 8.064M512 896a192 192 0 1 0 0-384 192 192 0 0 0 0 384"})]))}}),GM=Km,Wm=x({name:"List",__name:"list",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M704 192h160v736H160V192h160v64h384zM288 512h448v-64H288zm0 256h448v-64H288zm96-576V96h256v96z"})]))}}),XM=Wm,jm=x({name:"Loading",__name:"loading",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248m452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248M828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0"})]))}}),ll=jm,Ym=x({name:"Lock",__name:"lock",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96"}),F("path",{fill:"currentColor",d:"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m192-160v-64a192 192 0 1 0-384 0v64zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64"})]))}}),ZM=Ym,Um=x({name:"Message",__name:"message",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64"}),F("path",{fill:"currentColor",d:"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224z"})]))}}),JM=Um,qm=x({name:"Minus",__name:"minus",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),Gm=qm,Xm=x({name:"MoreFilled",__name:"more-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),yu=Xm,Zm=x({name:"More",__name:"more",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),Jm=Zm,Qm=x({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),eg=Qm,tg=x({name:"Plus",__name:"plus",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),kd=tg,ng=x({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592q0-64.416-42.24-101.376c-28.16-25.344-65.472-37.312-111.232-37.312m-12.672 406.208a54.27 54.27 0 0 0-38.72 14.784 49.4 49.4 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.85 54.85 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.97 51.97 0 0 0-15.488-38.016 55.94 55.94 0 0 0-39.424-14.784"})]))}}),lg=ng,ag=x({name:"RefreshLeft",__name:"refresh-left",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"})]))}}),og=ag,sg=x({name:"RefreshRight",__name:"refresh-right",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88"})]))}}),rg=sg,ig=x({name:"ScaleToOriginal",__name:"scale-to-original",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.12 30.12 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.12 30.12 0 0 0-30.118-30.118m-361.412 0a30.12 30.12 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.12 30.12 0 0 0-30.118-30.118M512 361.412a30.12 30.12 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.12 30.12 0 0 0 512 361.412M512 512a30.12 30.12 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.12 30.12 0 0 0 512 512"})]))}}),ug=ig,cg=x({name:"Search",__name:"search",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),dg=cg,fg=x({name:"Setting",__name:"setting",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357 357 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a352 352 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357 357 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294 294 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293 293 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294 294 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288 288 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293 293 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a288 288 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256"})]))}}),QM=fg,vg=x({name:"SortDown",__name:"sort-down",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"})]))}}),pg=vg,hg=x({name:"SortUp",__name:"sort-up",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"})]))}}),mg=hg,gg=x({name:"StarFilled",__name:"star-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M313.6 924.48a70.4 70.4 0 0 1-74.152-5.365 70.4 70.4 0 0 1-27.992-68.875l37.888-220.928L88.96 472.96a70.4 70.4 0 0 1 3.788-104.225A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 100.246-28.595 70.4 70.4 0 0 1 25.962 28.595l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),Io=gg,bg=x({name:"Star",__name:"star",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),yg=bg,Cg=x({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Sd=Cg,wg=x({name:"Tools",__name:"tools",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M764.416 254.72a351.7 351.7 0 0 1 86.336 149.184H960v192.064H850.752a351.7 351.7 0 0 1-86.336 149.312l54.72 94.72-166.272 96-54.592-94.72a352.64 352.64 0 0 1-172.48 0L371.136 936l-166.272-96 54.72-94.72a351.7 351.7 0 0 1-86.336-149.312H64v-192h109.248a351.7 351.7 0 0 1 86.336-149.312L204.8 160l166.208-96h.192l54.656 94.592a352.64 352.64 0 0 1 172.48 0L652.8 64h.128L819.2 160l-54.72 94.72zM704 499.968a192 192 0 1 0-384 0 192 192 0 0 0 384 0"})]))}}),eP=wg,kg=x({name:"TrendCharts",__name:"trend-charts",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 896V128h768v768zm291.712-327.296 128 102.4 180.16-201.792-47.744-42.624-139.84 156.608-128-102.4-180.16 201.792 47.744 42.624zM816 352a48 48 0 1 0-96 0 48 48 0 0 0 96 0"})]))}}),tP=kg,Sg=x({name:"UserFilled",__name:"user-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0m544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"})]))}}),nP=Sg,Eg=x({name:"User",__name:"user",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0"})]))}}),lP=Eg,_g=x({name:"View",__name:"view",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),Tg=_g,$g=x({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),ws=$g,Ng=x({name:"ZoomIn",__name:"zoom-in",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),Ed=Ng,Ig=x({name:"ZoomOut",__name:"zoom-out",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})]))}}),Mg=Ig;const St=j([String,Object,Function]),_d={Close:Hn},Qr={Close:Hn,SuccessFilled:Sd,InfoFilled:Xa,WarningFilled:ws,CircleCloseFilled:Jr},Ll={primary:Xa,success:Sd,warning:ws,error:Jr,info:Xa},ks={validating:ll,success:Zr,error:gl},Pg=["light","dark"],Og=fe({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:Sa(Ll),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:Pg,default:"light"},...bd,showAfter:Number}),Rg={open:()=>!0,close:e=>dt(e)||e instanceof Event},Bg=x({name:"ElAlert"}),Lg=x({...Bg,props:Og,emits:Rg,setup(e,{emit:t}){const n=e,{Close:l}=Qr,o=Zt(),s=ue("alert"),r=I(dt(n.showAfter)),i=b(()=>Ll[n.type]),u=b(()=>!!(n.description||o.default)),c=()=>{r.value=!0,t("open")},f=d=>{r.value=!1,t("close",d)},{onOpen:v,onClose:m}=yd({showAfter:wt(n,"showAfter",0),hideAfter:wt(n,"hideAfter"),autoClose:wt(n,"autoClose"),open:c,close:f});return Ct&&v(),(d,h)=>(S(),le(rn,{name:a(s).b("fade"),persisted:""},{default:X(()=>[Ye(F("div",{class:T([a(s).b(),a(s).m(d.type),a(s).is("center",d.center),a(s).is(d.effect)]),role:"alert"},[d.showIcon&&(d.$slots.icon||a(i))?(S(),le(a($e),{key:0,class:T([a(s).e("icon"),{[a(s).is("big")]:a(u)}])},{default:X(()=>[Z(d.$slots,"icon",{},()=>[(S(),le(Xe(a(i))))])]),_:3},8,["class"])):ee("v-if",!0),F("div",{class:T(a(s).e("content"))},[d.title||d.$slots.title?(S(),L("span",{key:0,class:T([a(s).e("title"),{"with-description":a(u)}])},[Z(d.$slots,"title",{},()=>[ut(pe(d.title),1)])],2)):ee("v-if",!0),a(u)?(S(),L("p",{key:1,class:T(a(s).e("description"))},[Z(d.$slots,"default",{},()=>[ut(pe(d.description),1)])],2)):ee("v-if",!0),d.closable?(S(),L(Re,{key:2},[d.closeText?(S(),L("div",{key:0,class:T([a(s).e("close-btn"),a(s).is("customed")]),onClick:f},pe(d.closeText),3)):(S(),le(a($e),{key:1,class:T(a(s).e("close-btn")),onClick:a(m)},{default:X(()=>[U(a(l))]),_:1},8,["class","onClick"]))],64)):ee("v-if",!0)],2)],2),[[bt,r.value]])]),_:3},8,["name"]))}});var Vg=ve(Lg,[["__file","alert.vue"]]);const Dg=Ke(Vg),ei=()=>Ct&&/firefox/i.test(window.navigator.userAgent);let $n;const Ag={height:"0",visibility:"hidden",overflow:ei()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},Fg=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"];function xg(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),l=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),o=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:Fg.map(r=>[r,t.getPropertyValue(r)]),paddingSize:l,borderSize:o,boxSizing:n}}function Cu(e,t=1,n){var l,o;$n||($n=document.createElement("textarea"),((l=e.parentNode)!=null?l:document.body).appendChild($n));const{paddingSize:s,borderSize:r,boxSizing:i,contextStyle:u}=xg(e);u.forEach(([m,d])=>$n?.style.setProperty(m,d)),Object.entries(Ag).forEach(([m,d])=>$n?.style.setProperty(m,d,"important")),$n.value=e.value||e.placeholder||"";let c=$n.scrollHeight;const f={};i==="border-box"?c=c+r:i==="content-box"&&(c=c-s),$n.value="";const v=$n.scrollHeight-s;if(Me(t)){let m=v*t;i==="border-box"&&(m=m+s+r),c=Math.max(m,c),f.minHeight=`${m}px`}if(Me(n)){let m=v*n;i==="border-box"&&(m=m+s+r),c=Math.min(m,c)}return f.height=`${c}px`,(o=$n.parentNode)==null||o.removeChild($n),$n=void 0,f}const xt=e=>e,zg=fe({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),vn=e=>On(zg,e),mo=fe({id:{type:String,default:void 0},size:Qt,disabled:Boolean,modelValue:{type:j([String,Number,Object]),default:""},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:j([Boolean,Object]),default:!1},autocomplete:{type:j(String),default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,clearIcon:{type:St,default:gl},showPassword:Boolean,showWordLimit:Boolean,suffixIcon:{type:St},prefixIcon:{type:St},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:j([Object,Array,String]),default:()=>xt({})},autofocus:Boolean,rows:{type:Number,default:2},...vn(["ariaLabel"]),inputmode:{type:j(String),default:void 0},name:String}),Hg={[Fe]:e=>De(e),input:e=>De(e),change:e=>De(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},Kg=["class","style"],Wg=/^on[A-Z]/,Ss=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,l=b(()=>(n?.value||[]).concat(Kg)),o=tt();return o?b(()=>{var s;return Ga(Object.entries((s=o.proxy)==null?void 0:s.$attrs).filter(([r])=>!l.value.includes(r)&&!(t&&Wg.test(r))))}):b(()=>({}))},wu={prefix:Math.floor(Math.random()*1e4),current:0},jg=Symbol("elIdInjection"),ti=()=>tt()?ke(jg,wu):wu,un=e=>{const t=ti(),n=Ur();return Xo(()=>a(e)||`${n.value}-id-${t.prefix}-${t.current++}`)},ta=Symbol("formContextKey"),al=Symbol("formItemContextKey"),dn=()=>{const e=ke(ta,void 0),t=ke(al,void 0);return{form:e,formItem:t}},Ln=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:l})=>{n||(n=I(!1)),l||(l=I(!1));const o=tt(),s=()=>{let c=o?.parent;for(;c;){if(c.type.name==="ElFormItem")return!1;if(c.type.name==="ElLabelWrap")return!0;c=c.parent}return!1},r=I();let i;const u=b(()=>{var c;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((c=t.inputIds)==null?void 0:c.length)<=1)});return Ze(()=>{i=re([wt(e,"id"),n],([c,f])=>{const v=c??(f?void 0:un().value);v!==r.value&&(t?.removeInputId&&!s()&&(r.value&&t.removeInputId(r.value),!l?.value&&!f&&v&&t.addInputId(v)),r.value=v)},{immediate:!0})}),ms(()=>{i&&i(),t?.removeInputId&&r.value&&t.removeInputId(r.value)}),{isLabeledByFormItem:u,inputId:r}},Td=e=>{const t=tt();return b(()=>{var n,l;return(l=(n=t?.proxy)==null?void 0:n.$props)==null?void 0:l[e]})},Xt=(e,t={})=>{const n=I(void 0),l=t.prop?n:Td("size"),o=t.global?n:cd(),s=t.form?{size:void 0}:ke(ta,void 0),r=t.formItem?{size:void 0}:ke(al,void 0);return b(()=>l.value||a(e)||r?.size||s?.size||o.value||"")},nn=e=>{const t=Td("disabled"),n=ke(ta,void 0);return b(()=>t.value||a(e)||n?.disabled||!1)},Yg='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',ku=e=>typeof Element>"u"?!1:e instanceof Element,Ug=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,Su=e=>Array.from(e.querySelectorAll(Yg)).filter(t=>Za(t)&&Ug(t)),Za=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},xo=function(e,t,...n){let l;t.includes("mouse")||t.includes("click")?l="MouseEvents":t.includes("key")?l="KeyboardEvent":l="HTMLEvents";const o=document.createEvent(l);return o.initEvent(t,...n),e.dispatchEvent(o),e},$d=e=>!e.getAttribute("aria-owns"),Nd=(e,t,n)=>{const{parentNode:l}=e;if(!l)return null;const o=l.querySelectorAll(n),s=Array.prototype.indexOf.call(o,e);return o[s+t]||null},go=(e,t)=>{if(!e||!e.focus)return;let n=!1;ku(e)&&!Za(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),n=!0),e.focus(t),ku(e)&&n&&e.removeAttribute("tabindex")},zo=e=>{e&&(go(e),!$d(e)&&e.click())};function bl(e,{disabled:t,beforeFocus:n,afterFocus:l,beforeBlur:o,afterBlur:s}={}){const r=tt(),{emit:i}=r,u=Bt(),c=I(!1),f=d=>{const h=Je(n)?n(d):!1;a(t)||c.value||h||(c.value=!0,i("focus",d),l?.())},v=d=>{var h;const p=Je(o)?o(d):!1;a(t)||d.relatedTarget&&((h=u.value)!=null&&h.contains(d.relatedTarget))||p||(c.value=!1,i("blur",d),s?.())},m=d=>{var h,p;a(t)||Za(d.target)||(h=u.value)!=null&&h.contains(document.activeElement)&&u.value!==document.activeElement||(p=e.value)==null||p.focus()};return re([u,()=>a(t)],([d,h])=>{d&&(h?d.removeAttribute("tabindex"):d.setAttribute("tabindex","-1"))}),Ft(u,"focus",f,!0),Ft(u,"blur",v,!0),Ft(u,"click",m,!0),{isFocused:c,wrapperRef:u,handleFocus:f,handleBlur:v}}const qg=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function bo({afterComposition:e,emit:t}){const n=I(!1),l=i=>{t?.("compositionstart",i),n.value=!0},o=i=>{var u;t?.("compositionupdate",i);const c=(u=i.target)==null?void 0:u.value,f=c[c.length-1]||"";n.value=!qg(f)},s=i=>{t?.("compositionend",i),n.value&&(n.value=!1,Te(()=>e(i)))};return{isComposing:n,handleComposition:i=>{i.type==="compositionend"?s(i):o(i)},handleCompositionStart:l,handleCompositionUpdate:o,handleCompositionEnd:s}}function Gg(e){let t;function n(){if(e.value==null)return;const{selectionStart:o,selectionEnd:s,value:r}=e.value;if(o==null||s==null)return;const i=r.slice(0,Math.max(0,o)),u=r.slice(Math.max(0,s));t={selectionStart:o,selectionEnd:s,value:r,beforeTxt:i,afterTxt:u}}function l(){if(e.value==null||t==null)return;const{value:o}=e.value,{beforeTxt:s,afterTxt:r,selectionStart:i}=t;if(s==null||r==null||i==null)return;let u=o.length;if(o.endsWith(r))u=o.length-r.length;else if(o.startsWith(s))u=s.length;else{const c=s[i-1],f=o.indexOf(c,i-1);f!==-1&&(u=f+1)}e.value.setSelectionRange(u,u)}return[n,l]}const Xg="ElInput",Zg=x({name:Xg,inheritAttrs:!1}),Jg=x({...Zg,props:mo,emits:Hg,setup(e,{expose:t,emit:n}){const l=e,o=hl(),s=Ss(),r=Zt(),i=b(()=>[l.type==="textarea"?p.b():h.b(),h.m(m.value),h.is("disabled",d.value),h.is("exceed",K.value),{[h.b("group")]:r.prepend||r.append,[h.m("prefix")]:r.prefix||l.prefixIcon,[h.m("suffix")]:r.suffix||l.suffixIcon||l.clearable||l.showPassword,[h.bm("suffix","password-clear")]:R.value&&A.value,[h.b("hidden")]:l.type==="hidden"},o.class]),u=b(()=>[h.e("wrapper"),h.is("focus",O.value)]),{form:c,formItem:f}=dn(),{inputId:v}=Ln(l,{formItemContext:f}),m=Xt(),d=nn(),h=ue("input"),p=ue("textarea"),g=Bt(),y=Bt(),k=I(!1),C=I(!1),w=I(),_=Bt(l.inputStyle),E=b(()=>g.value||y.value),{wrapperRef:$,isFocused:O,handleFocus:M,handleBlur:N}=bl(E,{disabled:d,afterBlur(){var ye;l.validateEvent&&((ye=f?.validate)==null||ye.call(f,"blur").catch(Ue=>void 0))}}),P=b(()=>{var ye;return(ye=c?.statusIcon)!=null?ye:!1}),B=b(()=>f?.validateState||""),q=b(()=>B.value&&ks[B.value]),W=b(()=>C.value?Tg:zm),te=b(()=>[o.style]),V=b(()=>[l.inputStyle,_.value,{resize:l.resize}]),D=b(()=>Ut(l.modelValue)?"":String(l.modelValue)),R=b(()=>l.clearable&&!d.value&&!l.readonly&&!!D.value&&(O.value||k.value)),A=b(()=>l.showPassword&&!d.value&&!!D.value),z=b(()=>l.showWordLimit&&!!l.maxlength&&(l.type==="text"||l.type==="textarea")&&!d.value&&!l.readonly&&!l.showPassword),H=b(()=>D.value.length),K=b(()=>!!z.value&&H.value>Number(l.maxlength)),G=b(()=>!!r.suffix||!!l.suffixIcon||R.value||l.showPassword||z.value||!!B.value&&P.value),[Q,ae]=Gg(g);Ht(y,ye=>{if(J(),!z.value||l.resize!=="both")return;const Ue=ye[0],{width:$t}=Ue.contentRect;w.value={right:`calc(100% - ${$t+15+6}px)`}});const se=()=>{const{type:ye,autosize:Ue}=l;if(!(!Ct||ye!=="textarea"||!y.value))if(Ue){const $t=yt(Ue)?Ue.minRows:void 0,Mt=yt(Ue)?Ue.maxRows:void 0,Ot=Cu(y.value,$t,Mt);_.value={overflowY:"hidden",...Ot},Te(()=>{y.value.offsetHeight,_.value=Ot})}else _.value={minHeight:Cu(y.value).minHeight}},J=(ye=>{let Ue=!1;return()=>{var $t;if(Ue||!l.autosize)return;(($t=y.value)==null?void 0:$t.offsetParent)===null||(setTimeout(ye),Ue=!0)}})(se),ie=()=>{const ye=E.value,Ue=l.formatter?l.formatter(D.value):D.value;!ye||ye.value===Ue||(ye.value=Ue)},Ee=async ye=>{Q();let{value:Ue}=ye.target;if(l.formatter&&l.parser&&(Ue=l.parser(Ue)),!he.value){if(Ue===D.value){ie();return}n(Fe,Ue),n(Jt,Ue),await Te(),ie(),ae()}},oe=ye=>{let{value:Ue}=ye.target;l.formatter&&l.parser&&(Ue=l.parser(Ue)),n(lt,Ue)},{isComposing:he,handleCompositionStart:Oe,handleCompositionUpdate:Ae,handleCompositionEnd:Ce}=bo({emit:n,afterComposition:Ee}),at=()=>{Q(),C.value=!C.value,setTimeout(ae)},_e=()=>{var ye;return(ye=E.value)==null?void 0:ye.focus()},Ne=()=>{var ye;return(ye=E.value)==null?void 0:ye.blur()},He=ye=>{k.value=!1,n("mouseleave",ye)},ct=ye=>{k.value=!0,n("mouseenter",ye)},ot=ye=>{n("keydown",ye)},nt=()=>{var ye;(ye=E.value)==null||ye.select()},ft=()=>{n(Fe,""),n(lt,""),n("clear"),n(Jt,"")};return re(()=>l.modelValue,()=>{var ye;Te(()=>se()),l.validateEvent&&((ye=f?.validate)==null||ye.call(f,"change").catch(Ue=>void 0))}),re(D,()=>ie()),re(()=>l.type,async()=>{await Te(),ie(),se()}),Ze(()=>{!l.formatter&&l.parser,ie(),Te(se)}),t({input:g,textarea:y,ref:E,textareaStyle:V,autosize:wt(l,"autosize"),isComposing:he,focus:_e,blur:Ne,select:nt,clear:ft,resizeTextarea:se}),(ye,Ue)=>(S(),L("div",{class:T([a(i),{[a(h).bm("group","append")]:ye.$slots.append,[a(h).bm("group","prepend")]:ye.$slots.prepend}]),style:Pe(a(te)),onMouseenter:ct,onMouseleave:He},[ee(" input "),ye.type!=="textarea"?(S(),L(Re,{key:0},[ee(" prepend slot "),ye.$slots.prepend?(S(),L("div",{key:0,class:T(a(h).be("group","prepend"))},[Z(ye.$slots,"prepend")],2)):ee("v-if",!0),F("div",{ref_key:"wrapperRef",ref:$,class:T(a(u))},[ee(" prefix slot "),ye.$slots.prefix||ye.prefixIcon?(S(),L("span",{key:0,class:T(a(h).e("prefix"))},[F("span",{class:T(a(h).e("prefix-inner"))},[Z(ye.$slots,"prefix"),ye.prefixIcon?(S(),le(a($e),{key:0,class:T(a(h).e("icon"))},{default:X(()=>[(S(),le(Xe(ye.prefixIcon)))]),_:1},8,["class"])):ee("v-if",!0)],2)],2)):ee("v-if",!0),F("input",qe({id:a(v),ref_key:"input",ref:g,class:a(h).e("inner")},a(s),{name:ye.name,minlength:ye.minlength,maxlength:ye.maxlength,type:ye.showPassword?C.value?"text":"password":ye.type,disabled:a(d),readonly:ye.readonly,autocomplete:ye.autocomplete,tabindex:ye.tabindex,"aria-label":ye.ariaLabel,placeholder:ye.placeholder,style:ye.inputStyle,form:ye.form,autofocus:ye.autofocus,role:ye.containerRole,inputmode:ye.inputmode,onCompositionstart:a(Oe),onCompositionupdate:a(Ae),onCompositionend:a(Ce),onInput:Ee,onChange:oe,onKeydown:ot}),null,16,["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode","onCompositionstart","onCompositionupdate","onCompositionend"]),ee(" suffix slot "),a(G)?(S(),L("span",{key:1,class:T(a(h).e("suffix"))},[F("span",{class:T(a(h).e("suffix-inner"))},[!a(R)||!a(A)||!a(z)?(S(),L(Re,{key:0},[Z(ye.$slots,"suffix"),ye.suffixIcon?(S(),le(a($e),{key:0,class:T(a(h).e("icon"))},{default:X(()=>[(S(),le(Xe(ye.suffixIcon)))]),_:1},8,["class"])):ee("v-if",!0)],64)):ee("v-if",!0),a(R)?(S(),le(a($e),{key:1,class:T([a(h).e("icon"),a(h).e("clear")]),onMousedown:Ve(a(Vt),["prevent"]),onClick:ft},{default:X(()=>[(S(),le(Xe(ye.clearIcon)))]),_:1},8,["class","onMousedown"])):ee("v-if",!0),a(A)?(S(),le(a($e),{key:2,class:T([a(h).e("icon"),a(h).e("password")]),onClick:at},{default:X(()=>[(S(),le(Xe(a(W))))]),_:1},8,["class"])):ee("v-if",!0),a(z)?(S(),L("span",{key:3,class:T(a(h).e("count"))},[F("span",{class:T(a(h).e("count-inner"))},pe(a(H))+" / "+pe(ye.maxlength),3)],2)):ee("v-if",!0),a(B)&&a(q)&&a(P)?(S(),le(a($e),{key:4,class:T([a(h).e("icon"),a(h).e("validateIcon"),a(h).is("loading",a(B)==="validating")])},{default:X(()=>[(S(),le(Xe(a(q))))]),_:1},8,["class"])):ee("v-if",!0)],2)],2)):ee("v-if",!0)],2),ee(" append slot "),ye.$slots.append?(S(),L("div",{key:1,class:T(a(h).be("group","append"))},[Z(ye.$slots,"append")],2)):ee("v-if",!0)],64)):(S(),L(Re,{key:1},[ee(" textarea "),F("textarea",qe({id:a(v),ref_key:"textarea",ref:y,class:[a(p).e("inner"),a(h).is("focus",a(O))]},a(s),{minlength:ye.minlength,maxlength:ye.maxlength,tabindex:ye.tabindex,disabled:a(d),readonly:ye.readonly,autocomplete:ye.autocomplete,style:a(V),"aria-label":ye.ariaLabel,placeholder:ye.placeholder,form:ye.form,autofocus:ye.autofocus,rows:ye.rows,role:ye.containerRole,onCompositionstart:a(Oe),onCompositionupdate:a(Ae),onCompositionend:a(Ce),onInput:Ee,onFocus:a(M),onBlur:a(N),onChange:oe,onKeydown:ot}),null,16,["id","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),a(z)?(S(),L("span",{key:0,style:Pe(w.value),class:T(a(h).e("count"))},pe(a(H))+" / "+pe(ye.maxlength),7)):ee("v-if",!0)],64))],38))}});var Qg=ve(Jg,[["__file","input.vue"]]);const bn=Ke(Qg),sa=4,Id={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},e0=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),ni=Symbol("scrollbarContextKey"),t0=fe({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),n0="Thumb",l0=x({__name:"thumb",props:t0,setup(e){const t=e,n=ke(ni),l=ue("scrollbar");n||qt(n0,"can not inject scrollbar context");const o=I(),s=I(),r=I({}),i=I(!1);let u=!1,c=!1,f=0,v=0,m=Ct?document.onselectstart:null;const d=b(()=>Id[t.vertical?"vertical":"horizontal"]),h=b(()=>e0({size:t.size,move:t.move,bar:d.value})),p=b(()=>o.value[d.value.offset]**2/n.wrapElement[d.value.scrollSize]/t.ratio/s.value[d.value.offset]),g=O=>{var M;if(O.stopPropagation(),O.ctrlKey||[1,2].includes(O.button))return;(M=window.getSelection())==null||M.removeAllRanges(),k(O);const N=O.currentTarget;N&&(r.value[d.value.axis]=N[d.value.offset]-(O[d.value.client]-N.getBoundingClientRect()[d.value.direction]))},y=O=>{if(!s.value||!o.value||!n.wrapElement)return;const M=Math.abs(O.target.getBoundingClientRect()[d.value.direction]-O[d.value.client]),N=s.value[d.value.offset]/2,P=(M-N)*100*p.value/o.value[d.value.offset];n.wrapElement[d.value.scroll]=P*n.wrapElement[d.value.scrollSize]/100},k=O=>{O.stopImmediatePropagation(),u=!0,f=n.wrapElement.scrollHeight,v=n.wrapElement.scrollWidth,document.addEventListener("mousemove",C),document.addEventListener("mouseup",w),m=document.onselectstart,document.onselectstart=()=>!1},C=O=>{if(!o.value||!s.value||u===!1)return;const M=r.value[d.value.axis];if(!M)return;const N=(o.value.getBoundingClientRect()[d.value.direction]-O[d.value.client])*-1,P=s.value[d.value.offset]-M,B=(N-P)*100*p.value/o.value[d.value.offset];d.value.scroll==="scrollLeft"?n.wrapElement[d.value.scroll]=B*v/100:n.wrapElement[d.value.scroll]=B*f/100},w=()=>{u=!1,r.value[d.value.axis]=0,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",w),$(),c&&(i.value=!1)},_=()=>{c=!1,i.value=!!t.size},E=()=>{c=!0,i.value=u};_t(()=>{$(),document.removeEventListener("mouseup",w)});const $=()=>{document.onselectstart!==m&&(document.onselectstart=m)};return Ft(wt(n,"scrollbarElement"),"mousemove",_),Ft(wt(n,"scrollbarElement"),"mouseleave",E),(O,M)=>(S(),le(rn,{name:a(l).b("fade"),persisted:""},{default:X(()=>[Ye(F("div",{ref_key:"instance",ref:o,class:T([a(l).e("bar"),a(l).is(a(d).key)]),onMousedown:y,onClick:Ve(()=>{},["stop"])},[F("div",{ref_key:"thumb",ref:s,class:T(a(l).e("thumb")),style:Pe(a(h)),onMousedown:g},null,38)],42,["onClick"]),[[bt,O.always||i.value]])]),_:1},8,["name"]))}});var Eu=ve(l0,[["__file","thumb.vue"]]);const a0=fe({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),o0=x({__name:"bar",props:a0,setup(e,{expose:t}){const n=e,l=ke(ni),o=I(0),s=I(0),r=I(""),i=I(""),u=I(1),c=I(1);return t({handleScroll:m=>{if(m){const d=m.offsetHeight-sa,h=m.offsetWidth-sa;s.value=m.scrollTop*100/d*u.value,o.value=m.scrollLeft*100/h*c.value}},update:()=>{const m=l?.wrapElement;if(!m)return;const d=m.offsetHeight-sa,h=m.offsetWidth-sa,p=d**2/m.scrollHeight,g=h**2/m.scrollWidth,y=Math.max(p,n.minSize),k=Math.max(g,n.minSize);u.value=p/(d-p)/(y/(d-y)),c.value=g/(h-g)/(k/(h-k)),i.value=y+sa(S(),L(Re,null,[U(Eu,{move:o.value,ratio:c.value,size:r.value,always:m.always},null,8,["move","ratio","size","always"]),U(Eu,{move:s.value,ratio:u.value,size:i.value,vertical:"",always:m.always},null,8,["move","ratio","size","always"])],64))}});var s0=ve(o0,[["__file","bar.vue"]]);const r0=fe({distance:{type:Number,default:0},height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:j([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...vn(["ariaLabel","ariaOrientation"])}),Md={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Me)},i0="ElScrollbar",u0=x({name:i0}),c0=x({...u0,props:r0,emits:Md,setup(e,{expose:t,emit:n}){const l=e,o=ue("scrollbar");let s,r,i,u=0,c=0,f="";const v={bottom:!1,top:!1,right:!1,left:!1},m=I(),d=I(),h=I(),p=I(),g=b(()=>{const P={};return l.height&&(P.height=Wt(l.height)),l.maxHeight&&(P.maxHeight=Wt(l.maxHeight)),[l.wrapStyle,P]}),y=b(()=>[l.wrapClass,o.e("wrap"),{[o.em("wrap","hidden-default")]:!l.native}]),k=b(()=>[o.e("view"),l.viewClass]),C=P=>{var B;return(B=v[P])!=null?B:!1},w={top:"bottom",bottom:"top",left:"right",right:"left"},_=P=>{const B=w[f];if(!B)return;const q=P[f],W=P[B];q&&!v[f]&&(v[f]=!0),!W&&v[B]&&(v[B]=!1)},E=()=>{var P;if(d.value){(P=p.value)==null||P.handleScroll(d.value);const B=u,q=c;u=d.value.scrollTop,c=d.value.scrollLeft;const W={bottom:u+d.value.clientHeight>=d.value.scrollHeight-l.distance,top:u<=l.distance&&B!==0,right:c+d.value.clientWidth>=d.value.scrollWidth-l.distance&&q!==c,left:c<=l.distance&&q!==0};if(n("scroll",{scrollTop:u,scrollLeft:c}),B!==u&&(f=u>B?"bottom":"top"),q!==c&&(f=c>q?"right":"left"),l.distance>0){if(C(f))return;_(W)}W[f]&&n("end-reached",f)}};function $(P,B){yt(P)?d.value.scrollTo(P):Me(P)&&Me(B)&&d.value.scrollTo(P,B)}const O=P=>{Me(P)&&(d.value.scrollTop=P)},M=P=>{Me(P)&&(d.value.scrollLeft=P)},N=()=>{var P;(P=p.value)==null||P.update(),v[f]=!1};return re(()=>l.noresize,P=>{P?(s?.(),r?.(),i?.()):({stop:s}=Ht(h,N),{stop:r}=Ht(d,N),i=Ft("resize",N))},{immediate:!0}),re(()=>[l.maxHeight,l.height],()=>{l.native||Te(()=>{var P;N(),d.value&&((P=p.value)==null||P.handleScroll(d.value))})}),rt(ni,kt({scrollbarElement:m,wrapElement:d})),Hr(()=>{d.value&&(d.value.scrollTop=u,d.value.scrollLeft=c)}),Ze(()=>{l.native||Te(()=>{N()})}),ml(()=>N()),t({wrapRef:d,update:N,scrollTo:$,setScrollTop:O,setScrollLeft:M,handleScroll:E}),(P,B)=>(S(),L("div",{ref_key:"scrollbarRef",ref:m,class:T(a(o).b())},[F("div",{ref_key:"wrapRef",ref:d,class:T(a(y)),style:Pe(a(g)),tabindex:P.tabindex,onScroll:E},[(S(),le(Xe(P.tag),{id:P.id,ref_key:"resizeRef",ref:h,class:T(a(k)),style:Pe(P.viewStyle),role:P.role,"aria-label":P.ariaLabel,"aria-orientation":P.ariaOrientation},{default:X(()=>[Z(P.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),P.native?ee("v-if",!0):(S(),le(s0,{key:0,ref_key:"barRef",ref:p,always:P.always,"min-size":P.minSize},null,8,["always","min-size"]))],2))}});var d0=ve(c0,[["__file","scrollbar.vue"]]);const qn=Ke(d0),li=Symbol("popper"),Pd=Symbol("popperContent"),Od=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],Rd=fe({role:{type:String,values:Od,default:"tooltip"}}),f0=x({name:"ElPopper",inheritAttrs:!1}),v0=x({...f0,props:Rd,setup(e,{expose:t}){const n=e,l=I(),o=I(),s=I(),r=I(),i=b(()=>n.role),u={triggerRef:l,popperInstanceRef:o,contentRef:s,referenceRef:r,role:i};return t(u),rt(li,u),(c,f)=>Z(c.$slots,"default")}});var p0=ve(v0,[["__file","popper.vue"]]);const h0=x({name:"ElPopperArrow",inheritAttrs:!1}),m0=x({...h0,setup(e,{expose:t}){const n=ue("popper"),{arrowRef:l,arrowStyle:o}=ke(Pd,void 0);return _t(()=>{l.value=void 0}),t({arrowRef:l}),(s,r)=>(S(),L("span",{ref_key:"arrowRef",ref:l,class:T(a(n).e("arrow")),style:Pe(a(o)),"data-popper-arrow":""},null,6))}});var g0=ve(m0,[["__file","arrow.vue"]]);const Bd=fe({virtualRef:{type:j(Object)},virtualTriggering:Boolean,onMouseenter:{type:j(Function)},onMouseleave:{type:j(Function)},onClick:{type:j(Function)},onKeydown:{type:j(Function)},onFocus:{type:j(Function)},onBlur:{type:j(Function)},onContextmenu:{type:j(Function)},id:String,open:Boolean}),Ld=Symbol("elForwardRef"),b0=e=>{rt(Ld,{setForwardRef:n=>{e.value=n}})},y0=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),C0="ElOnlyChild",Vd=x({name:C0,setup(e,{slots:t,attrs:n}){var l;const o=ke(Ld),s=y0((l=o?.setForwardRef)!=null?l:Vt);return()=>{var r;const i=(r=t.default)==null?void 0:r.call(t,n);if(!i)return null;const[u,c]=Dd(i);return u?Ye(th(u,n),[[s]]):null}}});function Dd(e){if(!e)return[null,0];const t=e,n=t.filter(l=>l.type!==Ml).length;for(const l of t){if(yt(l))switch(l.type){case Ml:continue;case Dc:case"svg":return[_u(l),n];case Re:return Dd(l.children);default:return[l,n]}return[_u(l),n]}return[null,0]}function _u(e){const t=ue("only-child");return U("span",{class:t.e("content")},[e])}const w0=x({name:"ElPopperTrigger",inheritAttrs:!1}),k0=x({...w0,props:Bd,setup(e,{expose:t}){const n=e,{role:l,triggerRef:o}=ke(li,void 0);b0(o);const s=b(()=>i.value?n.id:void 0),r=b(()=>{if(l&&l.value==="tooltip")return n.open&&n.id?n.id:void 0}),i=b(()=>{if(l&&l.value!=="tooltip")return l.value}),u=b(()=>i.value?`${n.open}`:void 0);let c;const f=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return Ze(()=>{re(()=>n.virtualRef,v=>{v&&(o.value=Ma(v))},{immediate:!0}),re(o,(v,m)=>{c?.(),c=void 0,Rn(v)&&(f.forEach(d=>{var h;const p=n[d];p&&(v.addEventListener(d.slice(2).toLowerCase(),p,["onFocus","onBlur"].includes(d)),(h=m?.removeEventListener)==null||h.call(m,d.slice(2).toLowerCase(),p,["onFocus","onBlur"].includes(d)))}),Za(v)&&(c=re([s,r,i,u],d=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((h,p)=>{Ut(d[p])?v.removeAttribute(h):v.setAttribute(h,d[p])})},{immediate:!0}))),Rn(m)&&Za(m)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(d=>m.removeAttribute(d))},{immediate:!0})}),_t(()=>{if(c?.(),c=void 0,o.value&&Rn(o.value)){const v=o.value;f.forEach(m=>{const d=n[m];d&&v.removeEventListener(m.slice(2).toLowerCase(),d,["onFocus","onBlur"].includes(m))}),o.value=void 0}}),t({triggerRef:o}),(v,m)=>v.virtualTriggering?ee("v-if",!0):(S(),le(a(Vd),qe({key:0},v.$attrs,{"aria-controls":a(s),"aria-describedby":a(r),"aria-expanded":a(u),"aria-haspopup":a(i)}),{default:X(()=>[Z(v.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var S0=ve(k0,[["__file","trigger.vue"]]);const xs="focus-trap.focus-after-trapped",zs="focus-trap.focus-after-released",E0="focus-trap.focusout-prevented",Tu={cancelable:!0,bubbles:!1},_0={cancelable:!0,bubbles:!1},$u="focusAfterTrapped",Nu="focusAfterReleased",ai=Symbol("elFocusTrap"),oi=I(),Es=I(0),si=I(0);let Mo=0;const Ad=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const o=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||o?NodeFilter.FILTER_SKIP:l.tabIndex>=0||l===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},Iu=(e,t)=>{for(const n of e)if(!T0(n,t))return n},T0=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},$0=e=>{const t=Ad(e),n=Iu(t,e),l=Iu(t.reverse(),e);return[n,l]},N0=e=>e instanceof HTMLInputElement&&"select"in e,Cl=(e,t)=>{if(e){const n=document.activeElement;go(e,{preventScroll:!0}),si.value=window.performance.now(),e!==n&&N0(e)&&t&&e.select()}};function Mu(e,t){const n=[...e],l=e.indexOf(t);return l!==-1&&n.splice(l,1),n}const I0=()=>{let e=[];return{push:l=>{const o=e[0];o&&l!==o&&o.pause(),e=Mu(e,l),e.unshift(l)},remove:l=>{var o,s;e=Mu(e,l),(s=(o=e[0])==null?void 0:o.resume)==null||s.call(o)}}},M0=(e,t=!1)=>{const n=document.activeElement;for(const l of e)if(Cl(l,t),document.activeElement!==n)return},Pu=I0(),P0=()=>Es.value>si.value,Po=()=>{oi.value="pointer",Es.value=window.performance.now()},Ou=()=>{oi.value="keyboard",Es.value=window.performance.now()},O0=()=>(Ze(()=>{Mo===0&&(document.addEventListener("mousedown",Po),document.addEventListener("touchstart",Po),document.addEventListener("keydown",Ou)),Mo++}),_t(()=>{Mo--,Mo<=0&&(document.removeEventListener("mousedown",Po),document.removeEventListener("touchstart",Po),document.removeEventListener("keydown",Ou))}),{focusReason:oi,lastUserFocusTimestamp:Es,lastAutomatedFocusTimestamp:si}),Oo=e=>new CustomEvent(E0,{..._0,detail:e}),we={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"};let fa=[];const Ru=e=>{e.code===we.esc&&fa.forEach(t=>t(e))},R0=e=>{Ze(()=>{fa.length===0&&document.addEventListener("keydown",Ru),Ct&&fa.push(e)}),_t(()=>{fa=fa.filter(t=>t!==e),fa.length===0&&Ct&&document.removeEventListener("keydown",Ru)})},B0=x({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[$u,Nu,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=I();let l,o;const{focusReason:s}=O0();R0(h=>{e.trapped&&!r.paused&&t("release-requested",h)});const r={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},i=h=>{if(!e.loop&&!e.trapped||r.paused)return;const{code:p,altKey:g,ctrlKey:y,metaKey:k,currentTarget:C,shiftKey:w}=h,{loop:_}=e,E=p===we.tab&&!g&&!y&&!k,$=document.activeElement;if(E&&$){const O=C,[M,N]=$0(O);if(M&&N){if(!w&&$===N){const B=Oo({focusReason:s.value});t("focusout-prevented",B),B.defaultPrevented||(h.preventDefault(),_&&Cl(M,!0))}else if(w&&[M,O].includes($)){const B=Oo({focusReason:s.value});t("focusout-prevented",B),B.defaultPrevented||(h.preventDefault(),_&&Cl(N,!0))}}else if($===O){const B=Oo({focusReason:s.value});t("focusout-prevented",B),B.defaultPrevented||h.preventDefault()}}};rt(ai,{focusTrapRef:n,onKeydown:i}),re(()=>e.focusTrapEl,h=>{h&&(n.value=h)},{immediate:!0}),re([n],([h],[p])=>{h&&(h.addEventListener("keydown",i),h.addEventListener("focusin",f),h.addEventListener("focusout",v)),p&&(p.removeEventListener("keydown",i),p.removeEventListener("focusin",f),p.removeEventListener("focusout",v))});const u=h=>{t($u,h)},c=h=>t(Nu,h),f=h=>{const p=a(n);if(!p)return;const g=h.target,y=h.relatedTarget,k=g&&p.contains(g);e.trapped||y&&p.contains(y)||(l=y),k&&t("focusin",h),!r.paused&&e.trapped&&(k?o=g:Cl(o,!0))},v=h=>{const p=a(n);if(!(r.paused||!p))if(e.trapped){const g=h.relatedTarget;!Ut(g)&&!p.contains(g)&&setTimeout(()=>{if(!r.paused&&e.trapped){const y=Oo({focusReason:s.value});t("focusout-prevented",y),y.defaultPrevented||Cl(o,!0)}},0)}else{const g=h.target;g&&p.contains(g)||t("focusout",h)}};async function m(){await Te();const h=a(n);if(h){Pu.push(r);const p=h.contains(document.activeElement)?l:document.activeElement;if(l=p,!h.contains(p)){const y=new Event(xs,Tu);h.addEventListener(xs,u),h.dispatchEvent(y),y.defaultPrevented||Te(()=>{let k=e.focusStartEl;De(k)||(Cl(k),document.activeElement!==k&&(k="first")),k==="first"&&M0(Ad(h),!0),(document.activeElement===p||k==="container")&&Cl(h)})}}}function d(){const h=a(n);if(h){h.removeEventListener(xs,u);const p=new CustomEvent(zs,{...Tu,detail:{focusReason:s.value}});h.addEventListener(zs,c),h.dispatchEvent(p),!p.defaultPrevented&&(s.value=="keyboard"||!P0()||h.contains(document.activeElement))&&Cl(l??document.body),h.removeEventListener(zs,c),Pu.remove(r),l=null,o=null}}return Ze(()=>{e.trapped&&m(),re(()=>e.trapped,h=>{h?m():d()})}),_t(()=>{e.trapped&&d(),n.value&&(n.value.removeEventListener("keydown",i),n.value.removeEventListener("focusin",f),n.value.removeEventListener("focusout",v),n.value=void 0)}),{onKeydown:i}}});function L0(e,t,n,l,o,s){return Z(e.$slots,"default",{handleKeydown:e.onKeydown})}var na=ve(B0,[["render",L0],["__file","focus-trap.vue"]]);const Fd=fe({arrowOffset:{type:Number,default:5}}),V0=["fixed","absolute"],D0=fe({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:j(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Ql,default:"bottom"},popperOptions:{type:j(Object),default:()=>({})},strategy:{type:String,values:V0,default:"absolute"}}),xd=fe({...D0,...Fd,id:String,style:{type:j([String,Array,Object])},className:{type:j([String,Array,Object])},effect:{type:j(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:j([String,Array,Object])},popperStyle:{type:j([String,Array,Object])},referenceEl:{type:j(Object)},triggerTargetEl:{type:j(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...vn(["ariaLabel"])}),A0={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},F0=(e,t)=>{const n=I(!1),l=I();return{focusStartRef:l,trapped:n,onFocusAfterReleased:c=>{var f;((f=c.detail)==null?void 0:f.focusReason)!=="pointer"&&(l.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:c=>{e.visible&&!n.value&&(c.target&&(l.value=c.target),n.value=!0)},onFocusoutPrevented:c=>{e.trapping||(c.detail.focusReason==="pointer"&&c.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}},x0=(e,t=[])=>{const{placement:n,strategy:l,popperOptions:o}=e,s={placement:n,strategy:l,...o,modifiers:[...H0(e),...t]};return K0(s,o?.modifiers),s},z0=e=>{if(Ct)return Ma(e)};function H0(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:l}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:0,bottom:0,left:0,right:0}}},{name:"flip",options:{padding:5,fallbackPlacements:l}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function K0(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const W0=(e,t,n={})=>{const l={name:"updateState",enabled:!0,phase:"write",fn:({state:u})=>{const c=j0(u);Object.assign(r.value,c)},requires:["computeStyles"]},o=b(()=>{const{onFirstUpdate:u,placement:c,strategy:f,modifiers:v}=a(n);return{onFirstUpdate:u,placement:c||"bottom",strategy:f||"absolute",modifiers:[...v||[],l,{name:"applyStyles",enabled:!1}]}}),s=Bt(),r=I({styles:{popper:{position:a(o).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),i=()=>{s.value&&(s.value.destroy(),s.value=void 0)};return re(o,u=>{const c=a(s);c&&c.setOptions(u)},{deep:!0}),re([e,t],([u,c])=>{i(),!(!u||!c)&&(s.value=vh(u,c,a(o)))}),_t(()=>{i()}),{state:b(()=>{var u;return{...((u=a(s))==null?void 0:u.state)||{}}}),styles:b(()=>a(r).styles),attributes:b(()=>a(r).attributes),update:()=>{var u;return(u=a(s))==null?void 0:u.update()},forceUpdate:()=>{var u;return(u=a(s))==null?void 0:u.forceUpdate()},instanceRef:b(()=>a(s))}};function j0(e){const t=Object.keys(e.elements),n=Ga(t.map(o=>[o,e.styles[o]||{}])),l=Ga(t.map(o=>[o,e.attributes[o]]));return{styles:n,attributes:l}}const Y0=0,U0=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:l,role:o}=ke(li,void 0),s=I(),r=b(()=>e.arrowOffset),i=b(()=>({name:"eventListeners",enabled:!!e.visible})),u=b(()=>{var y;const k=a(s),C=(y=a(r))!=null?y:Y0;return{name:"arrow",enabled:!ph(k),options:{element:k,padding:C}}}),c=b(()=>({onFirstUpdate:()=>{h()},...x0(e,[a(u),a(i)])})),f=b(()=>z0(e.referenceEl)||a(l)),{attributes:v,state:m,styles:d,update:h,forceUpdate:p,instanceRef:g}=W0(f,n,c);return re(g,y=>t.value=y,{flush:"sync"}),Ze(()=>{re(()=>{var y,k;return(k=(y=a(f))==null?void 0:y.getBoundingClientRect)==null?void 0:k.call(y)},()=>{h()})}),{attributes:v,arrowRef:s,contentRef:n,instanceRef:g,state:m,styles:d,role:o,forceUpdate:p,update:h}},q0=(e,{attributes:t,styles:n,role:l})=>{const{nextZIndex:o}=Pa(),s=ue("popper"),r=b(()=>a(t).popper),i=I(Me(e.zIndex)?e.zIndex:o()),u=b(()=>[s.b(),s.is("pure",e.pure),s.is(e.effect),e.popperClass]),c=b(()=>[{zIndex:a(i)},a(n).popper,e.popperStyle||{}]),f=b(()=>l.value==="dialog"?"false":void 0),v=b(()=>a(n).arrow||{});return{ariaModal:f,arrowStyle:v,contentAttrs:r,contentClass:u,contentStyle:c,contentZIndex:i,updateZIndex:()=>{i.value=Me(e.zIndex)?e.zIndex:o()}}},G0=x({name:"ElPopperContent"}),X0=x({...G0,props:xd,emits:A0,setup(e,{expose:t,emit:n}){const l=e,{focusStartRef:o,trapped:s,onFocusAfterReleased:r,onFocusAfterTrapped:i,onFocusInTrap:u,onFocusoutPrevented:c,onReleaseRequested:f}=F0(l,n),{attributes:v,arrowRef:m,contentRef:d,styles:h,instanceRef:p,role:g,update:y}=U0(l),{ariaModal:k,arrowStyle:C,contentAttrs:w,contentClass:_,contentStyle:E,updateZIndex:$}=q0(l,{styles:h,attributes:v,role:g}),O=ke(al,void 0);rt(Pd,{arrowStyle:C,arrowRef:m}),O&&rt(al,{...O,addInputId:Vt,removeInputId:Vt});let M;const N=(B=!0)=>{y(),B&&$()},P=()=>{N(!1),l.visible&&l.focusOnShow?s.value=!0:l.visible===!1&&(s.value=!1)};return Ze(()=>{re(()=>l.triggerTargetEl,(B,q)=>{M?.(),M=void 0;const W=a(B||d.value),te=a(q||d.value);Rn(W)&&(M=re([g,()=>l.ariaLabel,k,()=>l.id],V=>{["role","aria-label","aria-modal","id"].forEach((D,R)=>{Ut(V[R])?W.removeAttribute(D):W.setAttribute(D,V[R])})},{immediate:!0})),te!==W&&Rn(te)&&["role","aria-label","aria-modal","id"].forEach(V=>{te.removeAttribute(V)})},{immediate:!0}),re(()=>l.visible,P,{immediate:!0})}),_t(()=>{M?.(),M=void 0}),t({popperContentRef:d,popperInstanceRef:p,updatePopper:N,contentStyle:E}),(B,q)=>(S(),L("div",qe({ref_key:"contentRef",ref:d},a(w),{style:a(E),class:a(_),tabindex:"-1",onMouseenter:W=>B.$emit("mouseenter",W),onMouseleave:W=>B.$emit("mouseleave",W)}),[U(a(na),{trapped:a(s),"trap-on-focus-in":!0,"focus-trap-el":a(d),"focus-start-el":a(o),onFocusAfterTrapped:a(i),onFocusAfterReleased:a(r),onFocusin:a(u),onFocusoutPrevented:a(c),onReleaseRequested:a(f)},{default:X(()=>[Z(B.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var Z0=ve(X0,[["__file","content.vue"]]);const zd=Ke(p0),ri=Symbol("elTooltip"),_s=fe({to:{type:j([String,Object]),required:!0},disabled:Boolean}),Lt=fe({...bd,...xd,appendTo:{type:_s.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:j(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...vn(["ariaLabel"])}),$l=fe({...Bd,disabled:Boolean,trigger:{type:j([String,Array]),default:"hover"},triggerKeys:{type:j(Array),default:()=>[we.enter,we.numpadEnter,we.space]},focusOnTarget:Boolean}),J0=Xn({type:j(Boolean),default:null}),Q0=Xn({type:j(Function)}),eb=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,l=[t],o={[e]:J0,[n]:Q0};return{useModelToggle:({indicator:r,toggleReason:i,shouldHideWhenRouteChanges:u,shouldProceed:c,onShow:f,onHide:v})=>{const m=tt(),{emit:d}=m,h=m.props,p=b(()=>Je(h[n])),g=b(()=>h[e]===null),y=$=>{r.value!==!0&&(r.value=!0,i&&(i.value=$),Je(f)&&f($))},k=$=>{r.value!==!1&&(r.value=!1,i&&(i.value=$),Je(v)&&v($))},C=$=>{if(h.disabled===!0||Je(c)&&!c())return;const O=p.value&&Ct;O&&d(t,!0),(g.value||!O)&&y($)},w=$=>{if(h.disabled===!0||!Ct)return;const O=p.value&&Ct;O&&d(t,!1),(g.value||!O)&&k($)},_=$=>{Tt($)&&(h.disabled&&$?p.value&&d(t,!1):r.value!==$&&($?y():k()))},E=()=>{r.value?w():C()};return re(()=>h[e],_),u&&m.appContext.config.globalProperties.$route!==void 0&&re(()=>({...m.proxy.$route}),()=>{u.value&&r.value&&w()}),Ze(()=>{_(h[e])}),{hide:w,show:C,toggle:E,hasUpdateHandler:p}},useModelToggleProps:o,useModelToggleEmits:l}},{useModelToggleProps:tb,useModelToggleEmits:nb,useModelToggle:lb}=eb("visible"),ab=fe({...Rd,...tb,...Lt,...$l,...Fd,showArrow:{type:Boolean,default:!0}}),ob=[...nb,"before-show","before-hide","show","hide","open","close"],sb=(e,t)=>Se(e)?e.includes(t):e===t,ra=(e,t,n)=>l=>{sb(a(e),t)&&n(l)},jt=(e,t,{checkForDefaultPrevented:n=!0}={})=>o=>{const s=e?.(o);if(n===!1||!s)return t?.(o)},Bu=e=>t=>t.pointerType==="mouse"?e(t):void 0,rb=x({name:"ElTooltipTrigger"}),ib=x({...rb,props:$l,setup(e,{expose:t}){const n=e,l=ue("tooltip"),{controlled:o,id:s,open:r,onOpen:i,onClose:u,onToggle:c}=ke(ri,void 0),f=I(null),v=()=>{if(a(o)||n.disabled)return!0},m=wt(n,"trigger"),d=jt(v,ra(m,"hover",w=>{i(w),n.focusOnTarget&&w.target&&Te(()=>{go(w.target,{preventScroll:!0})})})),h=jt(v,ra(m,"hover",u)),p=jt(v,ra(m,"click",w=>{w.button===0&&c(w)})),g=jt(v,ra(m,"focus",i)),y=jt(v,ra(m,"focus",u)),k=jt(v,ra(m,"contextmenu",w=>{w.preventDefault(),c(w)})),C=jt(v,w=>{const{code:_}=w;n.triggerKeys.includes(_)&&(w.preventDefault(),c(w))});return t({triggerRef:f}),(w,_)=>(S(),le(a(S0),{id:a(s),"virtual-ref":w.virtualRef,open:a(r),"virtual-triggering":w.virtualTriggering,class:T(a(l).e("trigger")),onBlur:a(y),onClick:a(p),onContextmenu:a(k),onFocus:a(g),onMouseenter:a(d),onMouseleave:a(h),onKeydown:a(C)},{default:X(()=>[Z(w.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var ub=ve(ib,[["__file","trigger.vue"]]);const cb=x({__name:"teleport",props:_s,setup(e){return(t,n)=>t.disabled?Z(t.$slots,"default",{key:0}):(S(),le(nh,{key:1,to:t.to},[Z(t.$slots,"default")],8,["to"]))}});var db=ve(cb,[["__file","teleport.vue"]]);const Ra=Ke(db),Hd=()=>{const e=Ur(),t=ti(),n=b(()=>`${e.value}-popper-container-${t.prefix}`),l=b(()=>`#${n.value}`);return{id:n,selector:l}},fb=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},vb=()=>{const{id:e,selector:t}=Hd();return Kr(()=>{Ct&&(document.body.querySelector(t.value)||fb(e.value))}),{id:e,selector:t}},Lu=e=>[...new Set(e)],Aa=e=>Se(e)?e[0]:e,gn=e=>!e&&e!==0?[]:Se(e)?e:[e],pb=x({name:"ElTooltipContent",inheritAttrs:!1}),hb=x({...pb,props:Lt,setup(e,{expose:t}){const n=e,{selector:l}=Hd(),o=ue("tooltip"),s=I(),r=Xo(()=>{var R;return(R=s.value)==null?void 0:R.popperContentRef});let i;const{controlled:u,id:c,open:f,trigger:v,onClose:m,onOpen:d,onShow:h,onHide:p,onBeforeShow:g,onBeforeHide:y}=ke(ri,void 0),k=b(()=>n.transition||`${o.namespace.value}-fade-in-linear`),C=b(()=>n.persistent);_t(()=>{i?.()});const w=b(()=>a(C)?!0:a(f)),_=b(()=>n.disabled?!1:a(f)),E=b(()=>n.appendTo||l.value),$=b(()=>{var R;return(R=n.style)!=null?R:{}}),O=I(!0),M=()=>{p(),D()&&go(document.body,{preventScroll:!0}),O.value=!0},N=()=>{if(a(u))return!0},P=jt(N,()=>{n.enterable&&a(v)==="hover"&&d()}),B=jt(N,()=>{a(v)==="hover"&&m()}),q=()=>{var R,A;(A=(R=s.value)==null?void 0:R.updatePopper)==null||A.call(R),g?.()},W=()=>{y?.()},te=()=>{h()},V=()=>{n.virtualTriggering||m()},D=R=>{var A;const z=(A=s.value)==null?void 0:A.popperContentRef,H=R?.relatedTarget||document.activeElement;return z?.contains(H)};return re(()=>a(f),R=>{R?(O.value=!1,i=jr(r,()=>{if(a(u))return;gn(a(v)).every(z=>z!=="hover"&&z!=="focus")&&m()})):i?.()},{flush:"post"}),re(()=>n.content,()=>{var R,A;(A=(R=s.value)==null?void 0:R.updatePopper)==null||A.call(R)}),t({contentRef:s,isFocusInsideContent:D}),(R,A)=>(S(),le(a(Ra),{disabled:!R.teleported,to:a(E)},{default:X(()=>[a(w)||!O.value?(S(),le(rn,{key:0,name:a(k),appear:!a(C),onAfterLeave:M,onBeforeEnter:q,onAfterEnter:te,onBeforeLeave:W,persisted:""},{default:X(()=>[Ye(U(a(Z0),qe({id:a(c),ref_key:"contentRef",ref:s},R.$attrs,{"aria-label":R.ariaLabel,"aria-hidden":O.value,"boundaries-padding":R.boundariesPadding,"fallback-placements":R.fallbackPlacements,"gpu-acceleration":R.gpuAcceleration,offset:R.offset,placement:R.placement,"popper-options":R.popperOptions,"arrow-offset":R.arrowOffset,strategy:R.strategy,effect:R.effect,enterable:R.enterable,pure:R.pure,"popper-class":R.popperClass,"popper-style":[R.popperStyle,a($)],"reference-el":R.referenceEl,"trigger-target-el":R.triggerTargetEl,visible:a(_),"z-index":R.zIndex,onMouseenter:a(P),onMouseleave:a(B),onBlur:V,onClose:a(m)}),{default:X(()=>[Z(R.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"]),[[bt,a(_)]])]),_:3},8,["name","appear"])):ee("v-if",!0)]),_:3},8,["disabled","to"]))}});var mb=ve(hb,[["__file","content.vue"]]);const gb=x({name:"ElTooltip"}),bb=x({...gb,props:ab,emits:ob,setup(e,{expose:t,emit:n}){const l=e;vb();const o=ue("tooltip"),s=un(),r=I(),i=I(),u=()=>{var C;const w=a(r);w&&((C=w.popperInstanceRef)==null||C.update())},c=I(!1),f=I(),{show:v,hide:m,hasUpdateHandler:d}=lb({indicator:c,toggleReason:f}),{onOpen:h,onClose:p}=yd({showAfter:wt(l,"showAfter"),hideAfter:wt(l,"hideAfter"),autoClose:wt(l,"autoClose"),open:v,close:m}),g=b(()=>Tt(l.visible)&&!d.value),y=b(()=>[o.b(),l.popperClass]);rt(ri,{controlled:g,id:s,open:Ac(c),trigger:wt(l,"trigger"),onOpen:h,onClose:p,onToggle:C=>{a(c)?p(C):h(C)},onShow:()=>{n("show",f.value)},onHide:()=>{n("hide",f.value)},onBeforeShow:()=>{n("before-show",f.value)},onBeforeHide:()=>{n("before-hide",f.value)},updatePopper:u}),re(()=>l.disabled,C=>{C&&c.value&&(c.value=!1)});const k=C=>{var w;return(w=i.value)==null?void 0:w.isFocusInsideContent(C)};return lh(()=>c.value&&m()),t({popperRef:r,contentRef:i,isFocusInsideContent:k,updatePopper:u,onOpen:h,onClose:p,hide:m}),(C,w)=>(S(),le(a(zd),{ref_key:"popperRef",ref:r,role:C.role},{default:X(()=>[U(ub,{disabled:C.disabled,trigger:C.trigger,"trigger-keys":C.triggerKeys,"virtual-ref":C.virtualRef,"virtual-triggering":C.virtualTriggering,"focus-on-target":C.focusOnTarget},{default:X(()=>[C.$slots.default?Z(C.$slots,"default",{key:0}):ee("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering","focus-on-target"]),U(mb,{ref_key:"contentRef",ref:i,"aria-label":C.ariaLabel,"boundaries-padding":C.boundariesPadding,content:C.content,disabled:C.disabled,effect:C.effect,enterable:C.enterable,"fallback-placements":C.fallbackPlacements,"hide-after":C.hideAfter,"gpu-acceleration":C.gpuAcceleration,offset:C.offset,persistent:C.persistent,"popper-class":a(y),"popper-style":C.popperStyle,placement:C.placement,"popper-options":C.popperOptions,"arrow-offset":C.arrowOffset,pure:C.pure,"raw-content":C.rawContent,"reference-el":C.referenceEl,"trigger-target-el":C.triggerTargetEl,"show-after":C.showAfter,strategy:C.strategy,teleported:C.teleported,transition:C.transition,"virtual-triggering":C.virtualTriggering,"z-index":C.zIndex,"append-to":C.appendTo},{default:X(()=>[Z(C.$slots,"content",{},()=>[C.rawContent?(S(),L("span",{key:0,innerHTML:C.content},null,8,["innerHTML"])):(S(),L("span",{key:1},pe(C.content),1))]),C.showArrow?(S(),le(a(g0),{key:0})):ee("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var yb=ve(bb,[["__file","tooltip.vue"]]);const cn=Ke(yb),Cb=fe({...mo,valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:j(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:j([Function,Array]),default:Vt},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:Boolean,hideLoading:Boolean,teleported:Lt.teleported,appendTo:Lt.appendTo,highlightFirstItem:Boolean,fitInputWidth:Boolean}),wb={[Fe]:e=>De(e)||Me(e),[Jt]:e=>De(e)||Me(e),[lt]:e=>De(e)||Me(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>yt(e)},Kd="ElAutocomplete",kb=x({name:Kd,inheritAttrs:!1}),Sb=x({...kb,props:Cb,emits:wb,setup(e,{expose:t,emit:n}){const l=e,o=b(()=>On(l,Object.keys(mo))),s=hl(),r=nn(),i=ue("autocomplete"),u=I(),c=I(),f=I(),v=I();let m=!1,d=!1;const h=I([]),p=I(-1),g=I(""),y=I(!1),k=I(!1),C=I(!1),w=un(),_=b(()=>s.style),E=b(()=>(h.value.length>0||C.value)&&y.value),$=b(()=>!l.hideLoading&&C.value),O=b(()=>u.value?Array.from(u.value.$el.querySelectorAll("input")):[]),M=()=>{E.value&&(g.value=`${u.value.$el.offsetWidth}px`)},N=()=>{p.value=-1},P=async ne=>{if(k.value)return;const J=ie=>{C.value=!1,!k.value&&(Se(ie)?(h.value=ie,p.value=l.highlightFirstItem?0:-1):qt(Kd,"autocomplete suggestions must be an array"))};if(C.value=!0,Se(l.fetchSuggestions))J(l.fetchSuggestions);else{const ie=await l.fetchSuggestions(ne,J);Se(ie)&&J(ie)}},B=Bn(P,l.debounce),q=ne=>{const J=!!ne;if(n(Jt,ne),n(Fe,ne),k.value=!1,y.value||(y.value=J),!l.triggerOnFocus&&!ne){k.value=!0,h.value=[];return}B(ne)},W=ne=>{var J;r.value||(((J=ne.target)==null?void 0:J.tagName)!=="INPUT"||O.value.includes(document.activeElement))&&(y.value=!0)},te=ne=>{n(lt,ne)},V=ne=>{var J;if(d)d=!1;else{y.value=!0,n("focus",ne);const ie=(J=l.modelValue)!=null?J:"";l.triggerOnFocus&&!m&&B(String(ie))}},D=ne=>{setTimeout(()=>{var J;if((J=f.value)!=null&&J.isFocusInsideContent()){d=!0;return}y.value&&H(),n("blur",ne)})},R=()=>{y.value=!1,n(Fe,""),n("clear")},A=async()=>{var ne;(ne=u.value)!=null&&ne.isComposing||(E.value&&p.value>=0&&p.value{E.value&&(ne.preventDefault(),ne.stopPropagation(),H())},H=()=>{y.value=!1},K=()=>{var ne;(ne=u.value)==null||ne.focus()},G=()=>{var ne;(ne=u.value)==null||ne.blur()},Q=async ne=>{n(Jt,ne[l.valueKey]),n(Fe,ne[l.valueKey]),n("select",ne),h.value=[],p.value=-1},ae=ne=>{var J,ie;if(!E.value||C.value)return;if(ne<0){p.value=-1;return}ne>=h.value.length&&(ne=h.value.length-1);const Ee=c.value.querySelector(`.${i.be("suggestion","wrap")}`),he=Ee.querySelectorAll(`.${i.be("suggestion","list")} li`)[ne],Oe=Ee.scrollTop,{offsetTop:Ae,scrollHeight:Ce}=he;Ae+Ce>Oe+Ee.clientHeight&&(Ee.scrollTop+=Ce),Ae{var ne;(ne=f.value)!=null&&ne.isFocusInsideContent()||E.value&&H()});return _t(()=>{se?.()}),Ze(()=>{var ne;const J=(ne=u.value)==null?void 0:ne.ref;J&&([{key:"role",value:"textbox"},{key:"aria-autocomplete",value:"list"},{key:"aria-controls",value:"id"},{key:"aria-activedescendant",value:`${w.value}-item-${p.value}`}].forEach(({key:ie,value:Ee})=>J.setAttribute(ie,Ee)),m=J.hasAttribute("readonly"))}),t({highlightedIndex:p,activated:y,loading:C,inputRef:u,popperRef:f,suggestions:h,handleSelect:Q,handleKeyEnter:A,focus:K,blur:G,close:H,highlight:ae,getData:P}),(ne,J)=>(S(),le(a(cn),{ref_key:"popperRef",ref:f,visible:a(E),placement:ne.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[a(i).e("popper"),ne.popperClass],teleported:ne.teleported,"append-to":ne.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${a(i).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:M,onHide:N},{content:X(()=>[F("div",{ref_key:"regionRef",ref:c,class:T([a(i).b("suggestion"),a(i).is("loading",a($))]),style:Pe({[ne.fitInputWidth?"width":"minWidth"]:g.value,outline:"none"}),role:"region"},[ne.$slots.header?(S(),L("div",{key:0,class:T(a(i).be("suggestion","header")),onClick:Ve(()=>{},["stop"])},[Z(ne.$slots,"header")],10,["onClick"])):ee("v-if",!0),U(a(qn),{id:a(w),tag:"ul","wrap-class":a(i).be("suggestion","wrap"),"view-class":a(i).be("suggestion","list"),role:"listbox"},{default:X(()=>[a($)?(S(),L("li",{key:0},[Z(ne.$slots,"loading",{},()=>[U(a($e),{class:T(a(i).is("loading"))},{default:X(()=>[U(a(ll))]),_:1},8,["class"])])])):(S(!0),L(Re,{key:1},st(h.value,(ie,Ee)=>(S(),L("li",{id:`${a(w)}-item-${Ee}`,key:Ee,class:T({highlighted:p.value===Ee}),role:"option","aria-selected":p.value===Ee,onClick:oe=>Q(ie)},[Z(ne.$slots,"default",{item:ie},()=>[ut(pe(ie[ne.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"]),ne.$slots.footer?(S(),L("div",{key:1,class:T(a(i).be("suggestion","footer")),onClick:Ve(()=>{},["stop"])},[Z(ne.$slots,"footer")],10,["onClick"])):ee("v-if",!0)],6)]),default:X(()=>[F("div",{ref_key:"listboxRef",ref:v,class:T([a(i).b(),ne.$attrs.class]),style:Pe(a(_)),role:"combobox","aria-haspopup":"listbox","aria-expanded":a(E),"aria-owns":a(w)},[U(a(bn),qe({ref_key:"inputRef",ref:u},qe(a(o),ne.$attrs),{"model-value":ne.modelValue,disabled:a(r),onInput:q,onChange:te,onFocus:V,onBlur:D,onClear:R,onKeydown:[It(Ve(ie=>ae(p.value-1),["prevent"]),["up"]),It(Ve(ie=>ae(p.value+1),["prevent"]),["down"]),It(A,["enter"]),It(H,["tab"]),It(z,["esc"])],onMousedown:W}),Mn({_:2},[ne.$slots.prepend?{name:"prepend",fn:X(()=>[Z(ne.$slots,"prepend")])}:void 0,ne.$slots.append?{name:"append",fn:X(()=>[Z(ne.$slots,"append")])}:void 0,ne.$slots.prefix?{name:"prefix",fn:X(()=>[Z(ne.$slots,"prefix")])}:void 0,ne.$slots.suffix?{name:"suffix",fn:X(()=>[Z(ne.$slots,"suffix")])}:void 0]),1040,["model-value","disabled","onKeydown"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","teleported","append-to","transition"]))}});var Eb=ve(Sb,[["__file","autocomplete.vue"]]);const _b=Ke(Eb),Tb=fe({size:{type:[Number,String],values:ol,default:"",validator:e=>Me(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:St},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:j(String),default:"cover"}}),$b={error:e=>e instanceof Event},Nb=x({name:"ElAvatar"}),Ib=x({...Nb,props:Tb,emits:$b,setup(e,{emit:t}){const n=e,l=ue("avatar"),o=I(!1),s=b(()=>{const{size:c,icon:f,shape:v}=n,m=[l.b()];return De(c)&&m.push(l.m(c)),f&&m.push(l.m("icon")),v&&m.push(l.m(v)),m}),r=b(()=>{const{size:c}=n;return Me(c)?l.cssVarBlock({size:Wt(c)||""}):void 0}),i=b(()=>({objectFit:n.fit}));re(()=>n.src,()=>o.value=!1);function u(c){o.value=!0,t("error",c)}return(c,f)=>(S(),L("span",{class:T(a(s)),style:Pe(a(r))},[(c.src||c.srcSet)&&!o.value?(S(),L("img",{key:0,src:c.src,alt:c.alt,srcset:c.srcSet,style:Pe(a(i)),onError:u},null,44,["src","alt","srcset"])):c.icon?(S(),le(a($e),{key:1},{default:X(()=>[(S(),le(Xe(c.icon)))]),_:1})):Z(c.$slots,"default",{key:2})],6))}});var Mb=ve(Ib,[["__file","avatar.vue"]]);const Pb=Ke(Mb),Ob={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},Rb={click:e=>e instanceof MouseEvent},Bb=(e,t,n)=>{const l=Bt(),o=Bt(),s=I(!1),r=()=>{l.value&&(s.value=l.value.scrollTop>=e.visibilityHeight)},i=c=>{var f;(f=l.value)==null||f.scrollTo({top:0,behavior:"smooth"}),t("click",c)},u=Wc(r,300,!0);return Ft(o,"scroll",u),Ze(()=>{var c;o.value=document,l.value=document.documentElement,e.target&&(l.value=(c=document.querySelector(e.target))!=null?c:void 0,l.value||qt(n,`target does not exist: ${e.target}`),o.value=l.value),r()}),{visible:s,handleClick:i}},Wd="ElBacktop",Lb=x({name:Wd}),Vb=x({...Lb,props:Ob,emits:Rb,setup(e,{emit:t}){const n=e,l=ue("backtop"),{handleClick:o,visible:s}=Bb(n,t,Wd),r=b(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(i,u)=>(S(),le(rn,{name:`${a(l).namespace.value}-fade-in`},{default:X(()=>[a(s)?(S(),L("div",{key:0,style:Pe(a(r)),class:T(a(l).b()),onClick:Ve(a(o),["stop"])},[Z(i.$slots,"default",{},()=>[U(a($e),{class:T(a(l).e("icon"))},{default:X(()=>[U(a(km))]),_:1},8,["class"])])],14,["onClick"])):ee("v-if",!0)]),_:3},8,["name"]))}});var Db=ve(Vb,[["__file","backtop.vue"]]);const Ab=Ke(Db),Fb=fe({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:j([String,Object,Array])},offset:{type:j(Array),default:[0,0]},badgeClass:{type:String}}),xb=x({name:"ElBadge"}),zb=x({...xb,props:Fb,setup(e,{expose:t}){const n=e,l=ue("badge"),o=b(()=>n.isDot?"":Me(n.value)&&Me(n.max)?n.max{var r,i,u,c,f;return[{backgroundColor:n.color,marginRight:Wt(-((i=(r=n.offset)==null?void 0:r[0])!=null?i:0)),marginTop:Wt((c=(u=n.offset)==null?void 0:u[1])!=null?c:0)},(f=n.badgeStyle)!=null?f:{}]});return t({content:o}),(r,i)=>(S(),L("div",{class:T(a(l).b())},[Z(r.$slots,"default"),U(rn,{name:`${a(l).namespace.value}-zoom-in-center`,persisted:""},{default:X(()=>[Ye(F("sup",{class:T([a(l).e("content"),a(l).em("content",r.type),a(l).is("fixed",!!r.$slots.default),a(l).is("dot",r.isDot),a(l).is("hide-zero",!r.showZero&&n.value===0),r.badgeClass]),style:Pe(a(s))},[Z(r.$slots,"content",{value:a(o)},()=>[ut(pe(a(o)),1)])],6),[[bt,!r.hidden&&(a(o)||r.isDot||r.$slots.content)]])]),_:3},8,["name"])],2))}});var Hb=ve(zb,[["__file","badge.vue"]]);const jd=Ke(Hb),Yd=Symbol("breadcrumbKey"),Kb=fe({separator:{type:String,default:"/"},separatorIcon:{type:St}}),Wb=x({name:"ElBreadcrumb"}),jb=x({...Wb,props:Kb,setup(e){const t=e,{t:n}=ht(),l=ue("breadcrumb"),o=I();return rt(Yd,t),Ze(()=>{const s=o.value.querySelectorAll(`.${l.e("item")}`);s.length&&s[s.length-1].setAttribute("aria-current","page")}),(s,r)=>(S(),L("div",{ref_key:"breadcrumb",ref:o,class:T(a(l).b()),"aria-label":a(n)("el.breadcrumb.label"),role:"navigation"},[Z(s.$slots,"default")],10,["aria-label"]))}});var Yb=ve(jb,[["__file","breadcrumb.vue"]]);const Ub=fe({to:{type:j([String,Object]),default:""},replace:Boolean}),qb=x({name:"ElBreadcrumbItem"}),Gb=x({...qb,props:Ub,setup(e){const t=e,n=tt(),l=ke(Yd,void 0),o=ue("breadcrumb"),s=n.appContext.config.globalProperties.$router,r=I(),i=()=>{!t.to||!s||(t.replace?s.replace(t.to):s.push(t.to))};return(u,c)=>{var f,v;return S(),L("span",{class:T(a(o).e("item"))},[F("span",{ref_key:"link",ref:r,class:T([a(o).e("inner"),a(o).is("link",!!u.to)]),role:"link",onClick:i},[Z(u.$slots,"default")],2),(f=a(l))!=null&&f.separatorIcon?(S(),le(a($e),{key:0,class:T(a(o).e("separator"))},{default:X(()=>[(S(),le(Xe(a(l).separatorIcon)))]),_:1},8,["class"])):(S(),L("span",{key:1,class:T(a(o).e("separator")),role:"presentation"},pe((v=a(l))==null?void 0:v.separator),3))],2)}}});var Ud=ve(Gb,[["__file","breadcrumb-item.vue"]]);const Xb=Ke(Yb,{BreadcrumbItem:Ud}),Zb=zt(Ud),qd=Symbol("buttonGroupContextKey"),dl=({from:e,replacement:t,scope:n,version:l,ref:o,type:s="API"},r)=>{re(()=>a(r),i=>{},{immediate:!0})},Jb=(e,t)=>{dl({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},b(()=>e.type==="text"));const n=ke(qd,void 0),l=Oa("button"),{form:o}=dn(),s=Xt(b(()=>n?.size)),r=nn(),i=I(),u=Zt(),c=b(()=>{var y;return e.type||n?.type||((y=l.value)==null?void 0:y.type)||""}),f=b(()=>{var y,k,C;return(C=(k=e.autoInsertSpace)!=null?k:(y=l.value)==null?void 0:y.autoInsertSpace)!=null?C:!1}),v=b(()=>{var y,k,C;return(C=(k=e.plain)!=null?k:(y=l.value)==null?void 0:y.plain)!=null?C:!1}),m=b(()=>{var y,k,C;return(C=(k=e.round)!=null?k:(y=l.value)==null?void 0:y.round)!=null?C:!1}),d=b(()=>{var y,k,C;return(C=(k=e.text)!=null?k:(y=l.value)==null?void 0:y.text)!=null?C:!1}),h=b(()=>e.tag==="button"?{ariaDisabled:r.value||e.loading,disabled:r.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),p=b(()=>{var y;const k=(y=u.default)==null?void 0:y.call(u);if(f.value&&k?.length===1){const C=k[0];if(C?.type===Dc){const w=C.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(w.trim())}}return!1});return{_disabled:r,_size:s,_type:c,_ref:i,_props:h,_plain:v,_round:m,_text:d,shouldAddSpace:p,handleClick:y=>{if(r.value||e.loading){y.stopPropagation();return}e.nativeType==="reset"&&o?.resetFields(),t("click",y)}}},rr=["default","primary","success","warning","info","danger","text",""],Qb=["button","submit","reset"],ir=fe({size:Qt,disabled:Boolean,type:{type:String,values:rr,default:""},icon:{type:St},nativeType:{type:String,values:Qb,default:"button"},loading:Boolean,loadingIcon:{type:St,default:()=>ll},plain:{type:Boolean,default:void 0},text:{type:Boolean,default:void 0},link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:j([String,Object]),default:"button"}}),ey={click:e=>e instanceof MouseEvent};function yl(e,t=20){return e.mix("#141414",t).toString()}function ty(e){const t=nn(),n=ue("button");return b(()=>{let l={},o=e.color;if(o){const s=o.match(/var\((.*?)\)/);s&&(o=window.getComputedStyle(window.document.documentElement).getPropertyValue(s[1]));const r=new ha(o),i=e.dark?r.tint(20).toString():yl(r,20);if(e.plain)l=n.cssVarBlock({"bg-color":e.dark?yl(r,90):r.tint(90).toString(),"text-color":o,"border-color":e.dark?yl(r,50):r.tint(50).toString(),"hover-text-color":`var(${n.cssVarName("color-white")})`,"hover-bg-color":o,"hover-border-color":o,"active-bg-color":i,"active-text-color":`var(${n.cssVarName("color-white")})`,"active-border-color":i}),t.value&&(l[n.cssVarBlockName("disabled-bg-color")]=e.dark?yl(r,90):r.tint(90).toString(),l[n.cssVarBlockName("disabled-text-color")]=e.dark?yl(r,50):r.tint(50).toString(),l[n.cssVarBlockName("disabled-border-color")]=e.dark?yl(r,80):r.tint(80).toString());else{const u=e.dark?yl(r,30):r.tint(30).toString(),c=r.isDark()?`var(${n.cssVarName("color-white")})`:`var(${n.cssVarName("color-black")})`;if(l=n.cssVarBlock({"bg-color":o,"text-color":c,"border-color":o,"hover-bg-color":u,"hover-text-color":c,"hover-border-color":u,"active-bg-color":i,"active-border-color":i}),t.value){const f=e.dark?yl(r,50):r.tint(50).toString();l[n.cssVarBlockName("disabled-bg-color")]=f,l[n.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${n.cssVarName("color-white")})`,l[n.cssVarBlockName("disabled-border-color")]=f}}}return l})}const ny=x({name:"ElButton"}),ly=x({...ny,props:ir,emits:ey,setup(e,{expose:t,emit:n}){const l=e,o=ty(l),s=ue("button"),{_ref:r,_size:i,_type:u,_disabled:c,_props:f,_plain:v,_round:m,_text:d,shouldAddSpace:h,handleClick:p}=Jb(l,n),g=b(()=>[s.b(),s.m(u.value),s.m(i.value),s.is("disabled",c.value),s.is("loading",l.loading),s.is("plain",v.value),s.is("round",m.value),s.is("circle",l.circle),s.is("text",d.value),s.is("link",l.link),s.is("has-bg",l.bg)]);return t({ref:r,size:i,type:u,disabled:c,shouldAddSpace:h}),(y,k)=>(S(),le(Xe(y.tag),qe({ref_key:"_ref",ref:r},a(f),{class:a(g),style:a(o),onClick:a(p)}),{default:X(()=>[y.loading?(S(),L(Re,{key:0},[y.$slots.loading?Z(y.$slots,"loading",{key:0}):(S(),le(a($e),{key:1,class:T(a(s).is("loading"))},{default:X(()=>[(S(),le(Xe(y.loadingIcon)))]),_:1},8,["class"]))],64)):y.icon||y.$slots.icon?(S(),le(a($e),{key:1},{default:X(()=>[y.icon?(S(),le(Xe(y.icon),{key:0})):Z(y.$slots,"icon",{key:1})]),_:3})):ee("v-if",!0),y.$slots.default?(S(),L("span",{key:2,class:T({[a(s).em("text","expand")]:a(h)})},[Z(y.$slots,"default")],2)):ee("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var ay=ve(ly,[["__file","button.vue"]]);const oy={size:ir.size,type:ir.type},sy=x({name:"ElButtonGroup"}),ry=x({...sy,props:oy,setup(e){const t=e;rt(qd,kt({size:wt(t,"size"),type:wt(t,"type")}));const n=ue("button");return(l,o)=>(S(),L("div",{class:T(a(n).b("group"))},[Z(l.$slots,"default")],2))}});var Gd=ve(ry,[["__file","button-group.vue"]]);const sn=Ke(ay,{ButtonGroup:Gd}),Xd=zt(Gd),Hs=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),Zd=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),Jd=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),Vu=function(e,t){const n=ka(e),l=ka(t);return n&&l?e.getTime()===t.getTime():!n&&!l?e===t:!1},Qd=function(e,t){const n=Se(e),l=Se(t);return n&&l?e.length!==t.length?!1:e.every((o,s)=>Vu(o,t[s])):!n&&!l?Vu(e,t):!1},Du=function(e,t,n){const l=Pn(t)||t==="x"?We(e).locale(n):We(e,t).locale(n);return l.isValid()?l:void 0},Au=function(e,t,n){return Pn(t)?e:t==="x"?+e:We(e).locale(n).format(t)},Ks=(e,t)=>{var n;const l=[],o=t?.();for(let s=0;sSe(e)?e.map(t=>t.toDate()):e.toDate(),iy=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return Nl(t).map((l,o)=>n-(t-o-1))},uy=e=>{const t=e.daysInMonth();return Nl(t).map((n,l)=>l+1)},cy=e=>Nl(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),dy=fe({selectedDay:{type:j(Object)},range:{type:j(Array)},date:{type:j(Object),required:!0},hideHeader:{type:Boolean}}),fy={pick:e=>yt(e)},vy=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Ws=["sun","mon","tue","wed","thu","fri","sat"],py=(e,t)=>{We.extend(jc);const n=We.localeData().firstDayOfWeek(),{t:l,lang:o}=ht(),s=We().locale(o.value),r=b(()=>!!e.range&&!!e.range.length),i=b(()=>{let m=[];if(r.value){const[d,h]=e.range,p=Nl(h.date()-d.date()+1).map(k=>({text:d.date()+k,type:"current"}));let g=p.length%7;g=g===0?0:7-g;const y=Nl(g).map((k,C)=>({text:C+1,type:"next"}));m=p.concat(y)}else{const d=e.date.startOf("month").day(),h=iy(e.date,(d-n+7)%7).map(k=>({text:k,type:"prev"})),p=uy(e.date).map(k=>({text:k,type:"current"}));m=[...h,...p];const g=7-(m.length%7||7),y=Nl(g).map((k,C)=>({text:C+1,type:"next"}));m=m.concat(y)}return cy(m)}),u=b(()=>{const m=n;return m===0?Ws.map(d=>l(`el.datepicker.weeks.${d}`)):Ws.slice(m).concat(Ws.slice(0,m)).map(d=>l(`el.datepicker.weeks.${d}`))}),c=(m,d)=>{switch(d){case"prev":return e.date.startOf("month").subtract(1,"month").date(m);case"next":return e.date.startOf("month").add(1,"month").date(m);case"current":return e.date.date(m)}};return{now:s,isInRange:r,rows:i,weekDays:u,getFormattedDate:c,handlePickDay:({text:m,type:d})=>{const h=c(m,d);t("pick",h)},getSlotData:({text:m,type:d})=>{const h=c(m,d);return{isSelected:h.isSame(e.selectedDay),type:`${d}-month`,day:h.format("YYYY-MM-DD"),date:h.toDate()}}}},hy=x({name:"DateTable"}),my=x({...hy,props:dy,emits:fy,setup(e,{expose:t,emit:n}){const l=e,{isInRange:o,now:s,rows:r,weekDays:i,getFormattedDate:u,handlePickDay:c,getSlotData:f}=py(l,n),v=ue("calendar-table"),m=ue("calendar-day"),d=({text:h,type:p})=>{const g=[p];if(p==="current"){const y=u(h,p);y.isSame(l.selectedDay,"day")&&g.push(m.is("selected")),y.isSame(s,"day")&&g.push(m.is("today"))}return g};return t({getFormattedDate:u}),(h,p)=>(S(),L("table",{class:T([a(v).b(),a(v).is("range",a(o))]),cellspacing:"0",cellpadding:"0"},[h.hideHeader?ee("v-if",!0):(S(),L("thead",{key:0},[F("tr",null,[(S(!0),L(Re,null,st(a(i),g=>(S(),L("th",{key:g,scope:"col"},pe(g),1))),128))])])),F("tbody",null,[(S(!0),L(Re,null,st(a(r),(g,y)=>(S(),L("tr",{key:y,class:T({[a(v).e("row")]:!0,[a(v).em("row","hide-border")]:y===0&&h.hideHeader})},[(S(!0),L(Re,null,st(g,(k,C)=>(S(),L("td",{key:C,class:T(d(k)),onClick:w=>a(c)(k)},[F("div",{class:T(a(m).b())},[Z(h.$slots,"date-cell",{data:a(f)(k)},()=>[F("span",null,pe(k.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Fu=ve(my,[["__file","date-table.vue"]]);const gy=(e,t)=>{const n=e.endOf("month"),l=t.startOf("month"),s=n.isSame(l,"week")?l.add(1,"week"):l;return[[e,n],[s.startOf("week"),t]]},by=(e,t)=>{const n=e.endOf("month"),l=e.add(1,"month").startOf("month"),o=n.isSame(l,"week")?l.add(1,"week"):l,s=o.endOf("month"),r=t.startOf("month"),i=s.isSame(r,"week")?r.add(1,"week"):r;return[[e,n],[o.startOf("week"),s],[i.startOf("week"),t]]},yy=(e,t,n)=>{const{lang:l}=ht(),o=I(),s=We().locale(l.value),r=b({get(){return e.modelValue?u.value:o.value},set(g){if(!g)return;o.value=g;const y=g.toDate();t(Jt,y),t(Fe,y)}}),i=b(()=>{if(!e.range||!Se(e.range)||e.range.length!==2||e.range.some(C=>!ka(C)))return[];const g=e.range.map(C=>We(C).locale(l.value)),[y,k]=g;return y.isAfter(k)?[]:y.isSame(k,"month")?d(y,k):y.add(1,"month").month()!==k.month()?[]:d(y,k)}),u=b(()=>e.modelValue?We(e.modelValue).locale(l.value):r.value||(i.value.length?i.value[0][0]:s)),c=b(()=>u.value.subtract(1,"month").date(1)),f=b(()=>u.value.add(1,"month").date(1)),v=b(()=>u.value.subtract(1,"year").date(1)),m=b(()=>u.value.add(1,"year").date(1)),d=(g,y)=>{const k=g.startOf("week"),C=y.endOf("week"),w=k.get("month"),_=C.get("month");return w===_?[[k,C]]:(w+1)%12===_?gy(k,C):w+2===_||(w+1)%11===_?by(k,C):[]},h=g=>{r.value=g};return{calculateValidatedDateRange:d,date:u,realSelectedDay:r,pickDay:h,selectDate:g=>{const k={"prev-month":c.value,"next-month":f.value,"prev-year":v.value,"next-year":m.value,today:s}[g];k.isSame(u.value,"day")||h(k)},validatedRange:i}},Cy=e=>Se(e)&&e.length===2&&e.every(t=>ka(t)),wy=fe({modelValue:{type:Date},range:{type:j(Array),validator:Cy}}),ky={[Fe]:e=>ka(e),[Jt]:e=>ka(e)},Sy="ElCalendar",Ey=x({name:Sy}),_y=x({...Ey,props:wy,emits:ky,setup(e,{expose:t,emit:n}){const l=e,o=ue("calendar"),{calculateValidatedDateRange:s,date:r,pickDay:i,realSelectedDay:u,selectDate:c,validatedRange:f}=yy(l,n),{t:v}=ht(),m=b(()=>{const d=`el.datepicker.month${r.value.format("M")}`;return`${r.value.year()} ${v("el.datepicker.year")} ${v(d)}`});return t({selectedDay:u,pickDay:i,selectDate:c,calculateValidatedDateRange:s}),(d,h)=>(S(),L("div",{class:T(a(o).b())},[F("div",{class:T(a(o).e("header"))},[Z(d.$slots,"header",{date:a(m)},()=>[F("div",{class:T(a(o).e("title"))},pe(a(m)),3),a(f).length===0?(S(),L("div",{key:0,class:T(a(o).e("button-group"))},[U(a(Xd),null,{default:X(()=>[U(a(sn),{size:"small",onClick:p=>a(c)("prev-month")},{default:X(()=>[ut(pe(a(v)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),U(a(sn),{size:"small",onClick:p=>a(c)("today")},{default:X(()=>[ut(pe(a(v)("el.datepicker.today")),1)]),_:1},8,["onClick"]),U(a(sn),{size:"small",onClick:p=>a(c)("next-month")},{default:X(()=>[ut(pe(a(v)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):ee("v-if",!0)])],2),a(f).length===0?(S(),L("div",{key:0,class:T(a(o).e("body"))},[U(Fu,{date:a(r),"selected-day":a(u),onPick:a(i)},Mn({_:2},[d.$slots["date-cell"]?{name:"date-cell",fn:X(p=>[Z(d.$slots,"date-cell",Sn(nl(p)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):(S(),L("div",{key:1,class:T(a(o).e("body"))},[(S(!0),L(Re,null,st(a(f),(p,g)=>(S(),le(Fu,{key:g,date:p[0],"selected-day":a(u),range:p,"hide-header":g!==0,onPick:a(i)},Mn({_:2},[d.$slots["date-cell"]?{name:"date-cell",fn:X(y=>[Z(d.$slots,"date-cell",Sn(nl(y)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var Ty=ve(_y,[["__file","calendar.vue"]]);const $y=Ke(Ty),Ny=fe({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:j([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:void 0}}),Iy=x({name:"ElCard"}),My=x({...Iy,props:Ny,setup(e){const t=Oa("card"),n=ue("card");return(l,o)=>{var s;return S(),L("div",{class:T([a(n).b(),a(n).is(`${l.shadow||((s=a(t))==null?void 0:s.shadow)||"always"}-shadow`)])},[l.$slots.header||l.header?(S(),L("div",{key:0,class:T([a(n).e("header"),l.headerClass])},[Z(l.$slots,"header",{},()=>[ut(pe(l.header),1)])],2)):ee("v-if",!0),F("div",{class:T([a(n).e("body"),l.bodyClass]),style:Pe(l.bodyStyle)},[Z(l.$slots,"default")],6),l.$slots.footer||l.footer?(S(),L("div",{key:1,class:T([a(n).e("footer"),l.footerClass])},[Z(l.$slots,"footer",{},()=>[ut(pe(l.footer),1)])],2)):ee("v-if",!0)],2)}}});var Py=ve(My,[["__file","card.vue"]]);const Oy=Ke(Py),Ry=fe({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),By={change:(e,t)=>[e,t].every(Me)},ef=Symbol("carouselContextKey"),ur="ElCarouselItem";var Dn=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Dn||{});function cr(e){return Dt(e)&&e.type===Re}function Ly(e){return Dt(e)&&e.type===Ml}function Vy(e){return Dt(e)&&!cr(e)&&!Ly(e)}const Dy=e=>{if(!Dt(e))return{};const t=e.props||{},n=(Dt(e.type)?e.type.props:void 0)||{},l={};return Object.keys(n).forEach(o=>{on(n[o],"default")&&(l[o]=n[o].default)}),Object.keys(t).forEach(o=>{l[zr(o)]=t[o]}),l},Ay=e=>{if(!Se(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},el=e=>{const t=Se(e)?e:[e],n=[];return t.forEach(l=>{var o;Se(l)?n.push(...el(l)):Dt(l)&&((o=l.component)!=null&&o.subTree)?n.push(l,...el(l.component.subTree)):Dt(l)&&Se(l.children)?n.push(...el(l.children)):Dt(l)&&l.shapeFlag===2?n.push(...el(l.type())):n.push(l)}),n},Fy=(e,t,n)=>el(e.subTree).filter(s=>{var r;return Dt(s)&&((r=s.type)==null?void 0:r.name)===t&&!!s.component}).map(s=>s.component.uid).map(s=>n[s]).filter(s=>!!s),Ts=(e,t)=>{const n=Bt({}),l=Bt([]),o=new WeakMap,s=f=>{n.value[f.uid]=f,Fo(n),Ze(()=>{const v=f.getVnode().el,m=v.parentNode;if(!o.has(m)){o.set(m,[]);const d=m.insertBefore.bind(m);m.insertBefore=(h,p)=>(o.get(m).some(y=>h===y||p===y)&&Fo(n),d(h,p))}o.get(m).push(v)})},r=f=>{delete n.value[f.uid],Fo(n);const v=f.getVnode().el,m=v.parentNode,d=o.get(m),h=d.indexOf(v);d.splice(h,1)},i=()=>{l.value=Fy(e,t,n.value)},u=f=>f.render(),c=x({setup(f,{slots:v}){return()=>(i(),v.default?Le(u,{render:v.default}):null)}});return{children:l,addChild:s,removeChild:r,ChildrenSorter:c}},xu=300,xy=(e,t,n)=>{const{children:l,addChild:o,removeChild:s,ChildrenSorter:r}=Ts(tt(),ur),i=Zt(),u=I(-1),c=I(null),f=I(!1),v=I(),m=I(0),d=I(!0),h=b(()=>e.arrow!=="never"&&!a(y)),p=b(()=>l.value.some(ae=>ae.props.label.toString().length>0)),g=b(()=>e.type==="card"),y=b(()=>e.direction==="vertical"),k=b(()=>e.height!=="auto"?{height:e.height}:{height:`${m.value}px`,overflow:"hidden"}),C=Wl(ae=>{M(ae)},xu,{trailing:!0}),w=Wl(ae=>{D(ae)},xu),_=ae=>d.value?u.value<=1?ae<=1:ae>1:!0;function E(){c.value&&(clearInterval(c.value),c.value=null)}function $(){e.interval<=0||!e.autoplay||c.value||(c.value=setInterval(()=>O(),e.interval))}const O=()=>{u.valueie.props.name===ae);J.length>0&&(ae=l.value.indexOf(J[0]))}if(ae=Number(ae),Number.isNaN(ae)||ae!==Math.floor(ae))return;const se=l.value.length,ne=u.value;ae<0?u.value=e.loop?se-1:0:ae>=se?u.value=e.loop?0:se-1:u.value=ae,ne===u.value&&N(ne),z()}function N(ae){l.value.forEach((se,ne)=>{se.translateItem(ne,u.value,ae)})}function P(ae,se){var ne,J,ie,Ee;const oe=a(l),he=oe.length;if(he===0||!ae.states.inStage)return!1;const Oe=se+1,Ae=se-1,Ce=he-1,at=oe[Ce].states.active,_e=oe[0].states.active,Ne=(J=(ne=oe[Oe])==null?void 0:ne.states)==null?void 0:J.active,He=(Ee=(ie=oe[Ae])==null?void 0:ie.states)==null?void 0:Ee.active;return se===Ce&&_e||Ne?"left":se===0&&at||He?"right":!1}function B(){f.value=!0,e.pauseOnHover&&E()}function q(){f.value=!1,$()}function W(ae){a(y)||l.value.forEach((se,ne)=>{ae===P(se,ne)&&(se.states.hover=!0)})}function te(){a(y)||l.value.forEach(ae=>{ae.states.hover=!1})}function V(ae){u.value=ae}function D(ae){e.trigger==="hover"&&ae!==u.value&&(u.value=ae)}function R(){M(u.value-1)}function A(){M(u.value+1)}function z(){E(),e.pauseOnHover||$()}function H(ae){e.height==="auto"&&(m.value=ae)}function K(){var ae;const se=(ae=i.default)==null?void 0:ae.call(i);if(!se)return null;const J=el(se).filter(ie=>Dt(ie)&&ie.type.name===ur);return J?.length===2&&e.loop&&!g.value?(d.value=!0,J):(d.value=!1,null)}re(()=>u.value,(ae,se)=>{N(se),d.value&&(ae=ae%2,se=se%2),se>-1&&t(lt,ae,se)});const G=b({get:()=>d.value?u.value%2:u.value,set:ae=>u.value=ae});re(()=>e.autoplay,ae=>{ae?$():E()}),re(()=>e.loop,()=>{M(u.value)}),re(()=>e.interval,()=>{z()});const Q=Bt();return Ze(()=>{re(()=>l.value,()=>{l.value.length>0&&M(e.initialIndex)},{immediate:!0}),Q.value=Ht(v.value,()=>{N()}),$()}),_t(()=>{E(),v.value&&Q.value&&Q.value.stop()}),rt(ef,{root:v,isCardType:g,isVertical:y,items:l,loop:e.loop,cardScale:e.cardScale,addItem:o,removeItem:s,setActiveItem:M,setContainerHeight:H}),{root:v,activeIndex:u,exposeActiveIndex:G,arrowDisplay:h,hasLabel:p,hover:f,isCardType:g,items:l,isVertical:y,containerStyle:k,isItemsTwoLength:d,handleButtonEnter:W,handleButtonLeave:te,handleIndicatorClick:V,handleMouseEnter:B,handleMouseLeave:q,setActiveItem:M,prev:R,next:A,PlaceholderItem:K,isTwoLengthShow:_,ItemsSorter:r,throttledArrowClick:C,throttledIndicatorHover:w}},zy="ElCarousel",Hy=x({name:zy}),Ky=x({...Hy,props:Ry,emits:By,setup(e,{expose:t,emit:n}){const l=e,{root:o,activeIndex:s,exposeActiveIndex:r,arrowDisplay:i,hasLabel:u,hover:c,isCardType:f,items:v,isVertical:m,containerStyle:d,handleButtonEnter:h,handleButtonLeave:p,handleIndicatorClick:g,handleMouseEnter:y,handleMouseLeave:k,setActiveItem:C,prev:w,next:_,PlaceholderItem:E,isTwoLengthShow:$,ItemsSorter:O,throttledArrowClick:M,throttledIndicatorHover:N}=xy(l,n),P=ue("carousel"),{t:B}=ht(),q=b(()=>{const D=[P.b(),P.m(l.direction)];return a(f)&&D.push(P.m("card")),D}),W=b(()=>{const D=[P.e("indicators"),P.em("indicators",l.direction)];return a(u)&&D.push(P.em("indicators","labels")),l.indicatorPosition==="outside"&&D.push(P.em("indicators","outside")),a(m)&&D.push(P.em("indicators","right")),D});function te(D){if(!l.motionBlur)return;const R=a(m)?`${P.namespace.value}-transitioning-vertical`:`${P.namespace.value}-transitioning`;D.currentTarget.classList.add(R)}function V(D){if(!l.motionBlur)return;const R=a(m)?`${P.namespace.value}-transitioning-vertical`:`${P.namespace.value}-transitioning`;D.currentTarget.classList.remove(R)}return t({activeIndex:r,setActiveItem:C,prev:w,next:_}),(D,R)=>(S(),L("div",{ref_key:"root",ref:o,class:T(a(q)),onMouseenter:Ve(a(y),["stop"]),onMouseleave:Ve(a(k),["stop"])},[a(i)?(S(),le(rn,{key:0,name:"carousel-arrow-left",persisted:""},{default:X(()=>[Ye(F("button",{type:"button",class:T([a(P).e("arrow"),a(P).em("arrow","left")]),"aria-label":a(B)("el.carousel.leftArrow"),onMouseenter:A=>a(h)("left"),onMouseleave:a(p),onClick:Ve(A=>a(M)(a(s)-1),["stop"])},[U(a($e),null,{default:X(()=>[U(a(fl))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[bt,(D.arrow==="always"||a(c))&&(l.loop||a(s)>0)]])]),_:1})):ee("v-if",!0),a(i)?(S(),le(rn,{key:1,name:"carousel-arrow-right",persisted:""},{default:X(()=>[Ye(F("button",{type:"button",class:T([a(P).e("arrow"),a(P).em("arrow","right")]),"aria-label":a(B)("el.carousel.rightArrow"),onMouseenter:A=>a(h)("right"),onMouseleave:a(p),onClick:Ve(A=>a(M)(a(s)+1),["stop"])},[U(a($e),null,{default:X(()=>[U(a(Cn))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[bt,(D.arrow==="always"||a(c))&&(l.loop||a(s)[D.indicatorPosition!=="none"?(S(),L("ul",{key:0,class:T(a(W))},[(S(!0),L(Re,null,st(a(v),(A,z)=>Ye((S(),L("li",{key:z,class:T([a(P).e("indicator"),a(P).em("indicator",D.direction),a(P).is("active",z===a(s))]),onMouseenter:H=>a(N)(z),onClick:Ve(H=>a(g)(z),["stop"])},[F("button",{class:T(a(P).e("button")),"aria-label":a(B)("el.carousel.indicator",{index:z+1})},[a(u)?(S(),L("span",{key:0},pe(A.props.label),1)):ee("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[bt,a($)(z)]])),128))],2)):ee("v-if",!0)]),_:1}),l.motionBlur?(S(),L("svg",{key:2,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[F("defs",null,[F("filter",{id:"elCarouselHorizontal"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),F("filter",{id:"elCarouselVertical"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):ee("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var Wy=ve(Ky,[["__file","carousel.vue"]]);const jy=fe({name:{type:String,default:""},label:{type:[String,Number],default:""}}),Yy=e=>{const t=ke(ef),n=tt(),l=I(),o=I(!1),s=I(0),r=I(1),i=I(!1),u=I(!1),c=I(!1),f=I(!1),{isCardType:v,isVertical:m,cardScale:d}=t;function h(w,_,E){const $=E-1,O=_-1,M=_+1,N=E/2;return _===0&&w===$?-1:_===$&&w===0?E:w=N?E+1:w>M&&w-_>=N?-2:w}function p(w,_){var E,$;const O=a(m)?((E=t.root.value)==null?void 0:E.offsetHeight)||0:(($=t.root.value)==null?void 0:$.offsetWidth)||0;return c.value?O*((2-d)*(w-_)+1)/4:w<_?-(1+d)*O/4:(3+d)*O/4}function g(w,_,E){const $=t.root.value;return $?((E?$.offsetHeight:$.offsetWidth)||0)*(w-_):0}const y=(w,_,E)=>{var $;const O=a(v),M=($=t.items.value.length)!=null?$:Number.NaN,N=w===_;!O&&!dt(E)&&(f.value=N||w===E),!N&&M>2&&t.loop&&(w=h(w,_,M));const P=a(m);i.value=N,O?(c.value=Math.round(Math.abs(w-_))<=1,s.value=p(w,_),r.value=a(i)?1:d):s.value=g(w,_,P),u.value=!0,N&&l.value&&t.setContainerHeight(l.value.offsetHeight)};function k(){if(t&&a(v)){const w=t.items.value.findIndex(({uid:_})=>_===n.uid);t.setActiveItem(w)}}const C={props:e,states:kt({hover:o,translate:s,scale:r,active:i,ready:u,inStage:c,animating:f}),uid:n.uid,getVnode:()=>n.vnode,translateItem:y};return t.addItem(C),_t(()=>{t.removeItem(C)}),{carouselItemRef:l,active:i,animating:f,hover:o,inStage:c,isVertical:m,translate:s,isCardType:v,scale:r,ready:u,handleItemClick:k}},Uy=x({name:ur}),qy=x({...Uy,props:jy,setup(e){const t=e,n=ue("carousel"),{carouselItemRef:l,active:o,animating:s,hover:r,inStage:i,isVertical:u,translate:c,isCardType:f,scale:v,ready:m,handleItemClick:d}=Yy(t),h=b(()=>[n.e("item"),n.is("active",o.value),n.is("in-stage",i.value),n.is("hover",r.value),n.is("animating",s.value),{[n.em("item","card")]:f.value,[n.em("item","card-vertical")]:f.value&&u.value}]),p=b(()=>{const y=`${`translate${a(u)?"Y":"X"}`}(${a(c)}px)`,k=`scale(${a(v)})`;return{transform:[y,k].join(" ")}});return(g,y)=>Ye((S(),L("div",{ref_key:"carouselItemRef",ref:l,class:T(a(h)),style:Pe(a(p)),onClick:a(d)},[a(f)?Ye((S(),L("div",{key:0,class:T(a(n).e("mask"))},null,2)),[[bt,!a(o)]]):ee("v-if",!0),Z(g.$slots,"default")],14,["onClick"])),[[bt,a(m)]])}});var tf=ve(qy,[["__file","carousel-item.vue"]]);const Gy=Ke(Wy,{CarouselItem:tf}),Xy=zt(tf),nf={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Qt,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...vn(["ariaControls"])},lf={[Fe]:e=>De(e)||Me(e)||Tt(e),change:e=>De(e)||Me(e)||Tt(e)},Ba=Symbol("checkboxGroupContextKey"),Zy=({model:e,isChecked:t})=>{const n=ke(Ba,void 0),l=b(()=>{var s,r;const i=(s=n?.max)==null?void 0:s.value,u=(r=n?.min)==null?void 0:r.value;return!dt(i)&&e.value.length>=i&&!t.value||!dt(u)&&e.value.length<=u&&t.value});return{isDisabled:nn(b(()=>n?.disabled.value||l.value)),isLimitDisabled:l}},Jy=(e,{model:t,isLimitExceeded:n,hasOwnLabel:l,isDisabled:o,isLabeledByFormItem:s})=>{const r=ke(Ba,void 0),{formItem:i}=dn(),{emit:u}=tt();function c(h){var p,g,y,k;return[!0,e.trueValue,e.trueLabel].includes(h)?(g=(p=e.trueValue)!=null?p:e.trueLabel)!=null?g:!0:(k=(y=e.falseValue)!=null?y:e.falseLabel)!=null?k:!1}function f(h,p){u(lt,c(h),p)}function v(h){if(n.value)return;const p=h.target;u(lt,c(p.checked),h)}async function m(h){n.value||!l.value&&!o.value&&s.value&&(h.composedPath().some(y=>y.tagName==="LABEL")||(t.value=c([!1,e.falseValue,e.falseLabel].includes(t.value)),await Te(),f(t.value,h)))}const d=b(()=>r?.validateEvent||e.validateEvent);return re(()=>e.modelValue,()=>{d.value&&i?.validate("change").catch(h=>void 0)}),{handleChange:v,onClickRoot:m}},Qy=e=>{const t=I(!1),{emit:n}=tt(),l=ke(Ba,void 0),o=b(()=>dt(l)===!1),s=I(!1),r=b({get(){var i,u;return o.value?(i=l?.modelValue)==null?void 0:i.value:(u=e.modelValue)!=null?u:t.value},set(i){var u,c;o.value&&Se(i)?(s.value=((u=l?.max)==null?void 0:u.value)!==void 0&&i.length>l?.max.value&&i.length>r.value.length,s.value===!1&&((c=l?.changeEvent)==null||c.call(l,i))):(n(Fe,i),t.value=i)}});return{model:r,isGroup:o,isLimitExceeded:s}},e1=(e,t,{model:n})=>{const l=ke(Ba,void 0),o=I(!1),s=b(()=>In(e.value)?e.label:e.value),r=b(()=>{const f=n.value;return Tt(f)?f:Se(f)?yt(s.value)?f.map(Go).some(v=>Kt(v,s.value)):f.map(Go).includes(s.value):f!=null?f===e.trueValue||f===e.trueLabel:!!f}),i=Xt(b(()=>{var f;return(f=l?.size)==null?void 0:f.value}),{prop:!0}),u=Xt(b(()=>{var f;return(f=l?.size)==null?void 0:f.value})),c=b(()=>!!t.default||!In(s.value));return{checkboxButtonSize:i,isChecked:r,isFocused:o,checkboxSize:u,hasOwnLabel:c,actualValue:s}},af=(e,t)=>{const{formItem:n}=dn(),{model:l,isGroup:o,isLimitExceeded:s}=Qy(e),{isFocused:r,isChecked:i,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:f,actualValue:v}=e1(e,t,{model:l}),{isDisabled:m}=Zy({model:l,isChecked:i}),{inputId:d,isLabeledByFormItem:h}=Ln(e,{formItemContext:n,disableIdGeneration:f,disableIdManagement:o}),{handleChange:p,onClickRoot:g}=Jy(e,{model:l,isLimitExceeded:s,hasOwnLabel:f,isDisabled:m,isLabeledByFormItem:h});return(()=>{function k(){var C,w;Se(l.value)&&!l.value.includes(v.value)?l.value.push(v.value):l.value=(w=(C=e.trueValue)!=null?C:e.trueLabel)!=null?w:!0}e.checked&&k()})(),dl({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>o.value&&In(e.value))),dl({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.trueLabel)),dl({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.falseLabel)),{inputId:d,isLabeledByFormItem:h,isChecked:i,isDisabled:m,isFocused:r,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:f,model:l,actualValue:v,handleChange:p,onClickRoot:g}},t1=x({name:"ElCheckbox"}),n1=x({...t1,props:nf,emits:lf,setup(e){const t=e,n=Zt(),{inputId:l,isLabeledByFormItem:o,isChecked:s,isDisabled:r,isFocused:i,checkboxSize:u,hasOwnLabel:c,model:f,actualValue:v,handleChange:m,onClickRoot:d}=af(t,n),h=b(()=>{var k,C,w,_;return t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":(C=(k=t.trueValue)!=null?k:t.trueLabel)!=null?C:!0,"false-value":(_=(w=t.falseValue)!=null?w:t.falseLabel)!=null?_:!1}:{value:v.value}}),p=ue("checkbox"),g=b(()=>[p.b(),p.m(u.value),p.is("disabled",r.value),p.is("bordered",t.border),p.is("checked",s.value)]),y=b(()=>[p.e("input"),p.is("disabled",r.value),p.is("checked",s.value),p.is("indeterminate",t.indeterminate),p.is("focus",i.value)]);return(k,C)=>(S(),le(Xe(!a(c)&&a(o)?"span":"label"),{class:T(a(g)),"aria-controls":k.indeterminate?k.ariaControls:null,onClick:a(d)},{default:X(()=>[F("span",{class:T(a(y))},[Ye(F("input",qe({id:a(l),"onUpdate:modelValue":w=>Nn(f)?f.value=w:null,class:a(p).e("original"),type:"checkbox",indeterminate:k.indeterminate,name:k.name,tabindex:k.tabindex,disabled:a(r)},a(h),{onChange:a(m),onFocus:w=>i.value=!0,onBlur:w=>i.value=!1,onClick:Ve(()=>{},["stop"])}),null,16,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[Fc,a(f)]]),F("span",{class:T(a(p).e("inner"))},null,2)],2),a(c)?(S(),L("span",{key:0,class:T(a(p).e("label"))},[Z(k.$slots,"default"),k.$slots.default?ee("v-if",!0):(S(),L(Re,{key:0},[ut(pe(k.label),1)],64))],2)):ee("v-if",!0)]),_:3},8,["class","aria-controls","onClick"]))}});var of=ve(n1,[["__file","checkbox.vue"]]);const l1=x({name:"ElCheckboxButton"}),a1=x({...l1,props:nf,emits:lf,setup(e){const t=e,n=Zt(),{isFocused:l,isChecked:o,isDisabled:s,checkboxButtonSize:r,model:i,actualValue:u,handleChange:c}=af(t,n),f=b(()=>{var p,g,y,k;return t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":(g=(p=t.trueValue)!=null?p:t.trueLabel)!=null?g:!0,"false-value":(k=(y=t.falseValue)!=null?y:t.falseLabel)!=null?k:!1}:{value:u.value}}),v=ke(Ba,void 0),m=ue("checkbox"),d=b(()=>{var p,g,y,k;const C=(g=(p=v?.fill)==null?void 0:p.value)!=null?g:"";return{backgroundColor:C,borderColor:C,color:(k=(y=v?.textColor)==null?void 0:y.value)!=null?k:"",boxShadow:C?`-1px 0 0 0 ${C}`:void 0}}),h=b(()=>[m.b("button"),m.bm("button",r.value),m.is("disabled",s.value),m.is("checked",o.value),m.is("focus",l.value)]);return(p,g)=>(S(),L("label",{class:T(a(h))},[Ye(F("input",qe({"onUpdate:modelValue":y=>Nn(i)?i.value=y:null,class:a(m).be("button","original"),type:"checkbox",name:p.name,tabindex:p.tabindex,disabled:a(s)},a(f),{onChange:a(c),onFocus:y=>l.value=!0,onBlur:y=>l.value=!1,onClick:Ve(()=>{},["stop"])}),null,16,["onUpdate:modelValue","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[Fc,a(i)]]),p.$slots.default||p.label?(S(),L("span",{key:0,class:T(a(m).be("button","inner")),style:Pe(a(o)?a(d):void 0)},[Z(p.$slots,"default",{},()=>[ut(pe(p.label),1)])],6)):ee("v-if",!0)],2))}});var sf=ve(a1,[["__file","checkbox-button.vue"]]);const o1=fe({modelValue:{type:j(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Qt,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},options:{type:j(Array)},props:{type:j(Object),default:()=>rf},...vn(["ariaLabel"])}),s1={[Fe]:e=>Se(e),change:e=>Se(e)},rf={label:"label",value:"value",disabled:"disabled"},r1=x({name:"ElCheckboxGroup"}),i1=x({...r1,props:o1,emits:s1,setup(e,{emit:t}){const n=e,l=ue("checkbox"),{formItem:o}=dn(),{inputId:s,isLabeledByFormItem:r}=Ln(n,{formItemContext:o}),i=async v=>{t(Fe,v),await Te(),t(lt,v)},u=b({get(){return n.modelValue},set(v){i(v)}}),c=b(()=>({...rf,...n.props})),f=v=>{const m={label:v[c.value.label],value:v[c.value.value],disabled:v[c.value.disabled]};return{...v,...m}};return rt(Ba,{...On(tn(n),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:u,changeEvent:i}),re(()=>n.modelValue,(v,m)=>{n.validateEvent&&!Kt(v,m)&&o?.validate("change").catch(d=>void 0)}),(v,m)=>{var d;return S(),le(Xe(v.tag),{id:a(s),class:T(a(l).b("group")),role:"group","aria-label":a(r)?void 0:v.ariaLabel||"checkbox-group","aria-labelledby":a(r)?(d=a(o))==null?void 0:d.labelId:void 0},{default:X(()=>[Z(v.$slots,"default",{},()=>[(S(!0),L(Re,null,st(n.options,(h,p)=>(S(),le(of,qe({key:p},f(h)),null,16))),128))])]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var uf=ve(i1,[["__file","checkbox-group.vue"]]);const Kn=Ke(of,{CheckboxButton:sf,CheckboxGroup:uf}),u1=zt(sf),cf=zt(uf),df=fe({modelValue:{type:[String,Number,Boolean],default:void 0},size:Qt,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),c1=fe({...df,border:Boolean}),ff={[Fe]:e=>De(e)||Me(e)||Tt(e),[lt]:e=>De(e)||Me(e)||Tt(e)},vf=Symbol("radioGroupKey"),pf=(e,t)=>{const n=I(),l=ke(vf,void 0),o=b(()=>!!l),s=b(()=>In(e.value)?e.label:e.value),r=b({get(){return o.value?l.modelValue:e.modelValue},set(v){o.value?l.changeEvent(v):t&&t(Fe,v),n.value.checked=e.modelValue===s.value}}),i=Xt(b(()=>l?.size)),u=nn(b(()=>l?.disabled)),c=I(!1),f=b(()=>u.value||o.value&&r.value!==s.value?-1:0);return dl({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},b(()=>o.value&&In(e.value))),{radioRef:n,isGroup:o,radioGroup:l,focus:c,size:i,disabled:u,tabIndex:f,modelValue:r,actualValue:s}},d1=x({name:"ElRadio"}),f1=x({...d1,props:c1,emits:ff,setup(e,{emit:t}){const n=e,l=ue("radio"),{radioRef:o,radioGroup:s,focus:r,size:i,disabled:u,modelValue:c,actualValue:f}=pf(n,t);function v(){Te(()=>t(lt,c.value))}return(m,d)=>{var h;return S(),L("label",{class:T([a(l).b(),a(l).is("disabled",a(u)),a(l).is("focus",a(r)),a(l).is("bordered",m.border),a(l).is("checked",a(c)===a(f)),a(l).m(a(i))])},[F("span",{class:T([a(l).e("input"),a(l).is("disabled",a(u)),a(l).is("checked",a(c)===a(f))])},[Ye(F("input",{ref_key:"radioRef",ref:o,"onUpdate:modelValue":p=>Nn(c)?c.value=p:null,class:T(a(l).e("original")),value:a(f),name:m.name||((h=a(s))==null?void 0:h.name),disabled:a(u),checked:a(c)===a(f),type:"radio",onFocus:p=>r.value=!0,onBlur:p=>r.value=!1,onChange:v,onClick:Ve(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","checked","onFocus","onBlur","onClick"]),[[xc,a(c)]]),F("span",{class:T(a(l).e("inner"))},null,2)],2),F("span",{class:T(a(l).e("label")),onKeydown:Ve(()=>{},["stop"])},[Z(m.$slots,"default",{},()=>[ut(pe(m.label),1)])],42,["onKeydown"])],2)}}});var hf=ve(f1,[["__file","radio.vue"]]);const v1=fe({...df}),p1=x({name:"ElRadioButton"}),h1=x({...p1,props:v1,setup(e){const t=e,n=ue("radio"),{radioRef:l,focus:o,size:s,disabled:r,modelValue:i,radioGroup:u,actualValue:c}=pf(t),f=b(()=>({backgroundColor:u?.fill||"",borderColor:u?.fill||"",boxShadow:u?.fill?`-1px 0 0 0 ${u.fill}`:"",color:u?.textColor||""}));return(v,m)=>{var d;return S(),L("label",{class:T([a(n).b("button"),a(n).is("active",a(i)===a(c)),a(n).is("disabled",a(r)),a(n).is("focus",a(o)),a(n).bm("button",a(s))])},[Ye(F("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":h=>Nn(i)?i.value=h:null,class:T(a(n).be("button","original-radio")),value:a(c),type:"radio",name:v.name||((d=a(u))==null?void 0:d.name),disabled:a(r),onFocus:h=>o.value=!0,onBlur:h=>o.value=!1,onClick:Ve(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","onFocus","onBlur","onClick"]),[[xc,a(i)]]),F("span",{class:T(a(n).be("button","inner")),style:Pe(a(i)===a(c)?a(f):{}),onKeydown:Ve(()=>{},["stop"])},[Z(v.$slots,"default",{},()=>[ut(pe(v.label),1)])],46,["onKeydown"])],2)}}});var mf=ve(h1,[["__file","radio-button.vue"]]);const m1=fe({id:{type:String,default:void 0},size:Qt,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},options:{type:j(Array)},props:{type:j(Object),default:()=>gf},...vn(["ariaLabel"])}),g1=ff,gf={label:"label",value:"value",disabled:"disabled"},b1=x({name:"ElRadioGroup"}),y1=x({...b1,props:m1,emits:g1,setup(e,{emit:t}){const n=e,l=ue("radio"),o=un(),s=I(),{formItem:r}=dn(),{inputId:i,isLabeledByFormItem:u}=Ln(n,{formItemContext:r}),c=d=>{t(Fe,d),Te(()=>t(lt,d))};Ze(()=>{const d=s.value.querySelectorAll("[type=radio]"),h=d[0];!Array.from(d).some(p=>p.checked)&&h&&(h.tabIndex=0)});const f=b(()=>n.name||o.value),v=b(()=>({...gf,...n.props})),m=d=>{const h={label:d[v.value.label],value:d[v.value.value],disabled:d[v.value.disabled]};return{...d,...h}};return rt(vf,kt({...tn(n),changeEvent:c,name:f})),re(()=>n.modelValue,(d,h)=>{n.validateEvent&&!Kt(d,h)&&r?.validate("change").catch(p=>void 0)}),(d,h)=>(S(),L("div",{id:a(i),ref_key:"radioGroupRef",ref:s,class:T(a(l).b("group")),role:"radiogroup","aria-label":a(u)?void 0:d.ariaLabel||"radio-group","aria-labelledby":a(u)?a(r).labelId:void 0},[Z(d.$slots,"default",{},()=>[(S(!0),L(Re,null,st(n.options,(p,g)=>(S(),le(hf,qe({key:g},m(p)),null,16))),128))])],10,["id","aria-label","aria-labelledby"]))}});var bf=ve(y1,[["__file","radio-group.vue"]]);const yf=Ke(hf,{RadioButton:mf,RadioGroup:bf}),C1=zt(bf),w1=zt(mf),$s=Symbol();function k1(e){return!!(Se(e)?e.every(({type:t})=>t===Ml):e?.type===Ml)}var S1=x({name:"NodeContent",props:{node:{type:Object,required:!0}},setup(e){const t=ue("cascader-node"),{renderLabelFn:n}=ke($s),{node:l}=e,{data:o,label:s}=l,r=()=>{const i=n?.({node:l,data:o});return k1(i)?s:i??s};return()=>U("span",{class:t.e("label")},[r()])}});const E1=x({name:"ElCascaderNode"}),_1=x({...E1,props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=e,l=ke($s),o=ue("cascader-node"),s=b(()=>l.isHoverMenu),r=b(()=>l.config.multiple),i=b(()=>l.config.checkStrictly),u=b(()=>l.config.showPrefix),c=b(()=>{var O;return(O=l.checkedNodes[0])==null?void 0:O.uid}),f=b(()=>n.node.isDisabled),v=b(()=>n.node.isLeaf),m=b(()=>i.value&&!v.value||!f.value),d=b(()=>p(l.expandingNode)),h=b(()=>i.value&&l.checkedNodes.some(p)),p=O=>{var M;const{level:N,uid:P}=n.node;return((M=O?.pathNodes[N-1])==null?void 0:M.uid)===P},g=()=>{d.value||l.expandNode(n.node)},y=O=>{const{node:M}=n;O!==M.checked&&l.handleCheckChange(M,O)},k=()=>{l.lazyLoad(n.node,()=>{v.value||g()})},C=O=>{s.value&&(w(),!v.value&&t("expand",O))},w=()=>{const{node:O}=n;!m.value||O.loading||(O.loaded?g():k())},_=()=>{v.value&&!f.value&&!i.value&&!r.value?$(!0):(l.config.checkOnClickNode&&(r.value||i.value)||v.value&&l.config.checkOnClickLeaf)&&!f.value?E(!n.node.checked):s.value||w()},E=O=>{i.value?(y(O),n.node.loaded&&g()):$(O)},$=O=>{n.node.loaded?(y(O),!i.value&&g()):k()};return(O,M)=>(S(),L("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!a(v),"aria-owns":a(v)?void 0:e.menuId,"aria-expanded":a(d),tabindex:a(m)?-1:void 0,class:T([a(o).b(),a(o).is("selectable",a(i)),a(o).is("active",e.node.checked),a(o).is("disabled",!a(m)),a(d)&&"in-active-path",a(h)&&"in-checked-path"]),onMouseenter:C,onFocus:C,onClick:_},[ee(" prefix "),a(r)&&a(u)?(S(),le(a(Kn),{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:a(f),onClick:Ve(()=>{},["stop"]),"onUpdate:modelValue":E},null,8,["model-value","indeterminate","disabled","onClick"])):a(i)&&a(u)?(S(),le(a(yf),{key:1,"model-value":a(c),label:e.node.uid,disabled:a(f),"onUpdate:modelValue":E,onClick:Ve(()=>{},["stop"])},{default:X(()=>[ee(` +import{g as tt,i as ke,r as I,c as b,u as a,a as De,b as Se,d as yt,e as Nn,h as on,w as eh,f as Je,p as rt,j as zr,k as x,s as Bt,l as re,o as Ze,m as En,n as L,q as S,t as F,v as Z,x as Pe,y as T,z as Te,N as Vt,A as qe,B as Zt,C as wt,D as le,E as X,F as Ye,G as ee,H as Xe,I as ut,J as pe,K as Re,L as U,M as bt,T as rn,O as ms,P as hl,Q as Ve,R as _t,S as kt,U as Hr,V as ml,W as th,X as Ml,Y as Dc,Z as nh,_ as Kr,$ as Ac,a0 as lh,a1 as It,a2 as Mn,a3 as st,a4 as ka,a5 as Sn,a6 as nl,a7 as Dt,a8 as Le,a9 as Fo,aa as Go,ab as Fc,ac as tn,ad as xc,ae as zc,af as qa,ag as gs,ah,ai as oh,aj as gt,ak as Hc,al as Tl,am as sh,an as rh,ao as ar,ap as bs,aq as ih,ar as Pl,as as uh,at as ch,au as Kc}from"./vendor-vue-CVxSw_oJ.js";import{i as Ut,a as Ct,g as Gt,f as Ga,b as Kt,s as dh,u as Wr,c as cu,d as Ft,t as fh,p as On,e as Xo,h as Ht,j as Ma,E as Ql,y as vh,k as ph,o as jr,l as Bn,m as Wc,T as ha,n as We,q as jc,r as Wl,v as hh,w as Zo,x as mh,z as an,A as gh,B as Fs,C as Yr,D as bh,F as yh,G as Ch,H as wh,I as kh,J as Sh,K as Eh,L as Ul,M as Yc,N as _h,O as du,S as Th,P as $h,Q as or,R as Uc,U as qc,V as Gc,W as Nh,X as Ih,Y as fo,Z as Xc,_ as Zc,$ as Mh,a0 as Ph,a1 as Oh,a2 as sr,a3 as Jc,a4 as Qc,a5 as ed,a6 as td,a7 as nd,a8 as Rh,a9 as Bh,aa as Lh,ab as Vh,ac as Dh}from"./vendor-misc-DszMq72k.js";const Ah="2.11.3",fu=Symbol("INSTALLED_KEY"),ld=Symbol(),ja="el",Fh="is-",Dl=(e,t,n,l,o)=>{let s=`${e}-${t}`;return n&&(s+=`-${n}`),l&&(s+=`__${l}`),o&&(s+=`--${o}`),s},ad=Symbol("namespaceContextKey"),Ur=e=>{const t=e||(tt()?ke(ad,I(ja)):I(ja));return b(()=>a(t)||ja)},ue=(e,t)=>{const n=Ur(t);return{namespace:n,b:(p="")=>Dl(n.value,e,p,"",""),e:p=>p?Dl(n.value,e,"",p,""):"",m:p=>p?Dl(n.value,e,"","",p):"",be:(p,g)=>p&&g?Dl(n.value,e,p,g,""):"",em:(p,g)=>p&&g?Dl(n.value,e,"",p,g):"",bm:(p,g)=>p&&g?Dl(n.value,e,p,"",g):"",bem:(p,g,y)=>p&&g&&y?Dl(n.value,e,p,g,y):"",is:(p,...g)=>{const y=g.length>=1?g[0]:!0;return p&&y?`${Fh}${p}`:""},cssVar:p=>{const g={};for(const y in p)p[y]&&(g[`--${n.value}-${y}`]=p[y]);return g},cssVarName:p=>`--${n.value}-${p}`,cssVarBlock:p=>{const g={};for(const y in p)p[y]&&(g[`--${n.value}-${e}-${y}`]=p[y]);return g},cssVarBlockName:p=>`--${n.value}-${e}-${p}`}},dt=e=>e===void 0,Tt=e=>typeof e=="boolean",Me=e=>typeof e=="number",Pn=e=>!e&&e!==0||Se(e)&&e.length===0||yt(e)&&!Object.keys(e).length,Rn=e=>typeof Element>"u"?!1:e instanceof Element,In=e=>Ut(e),xh=e=>De(e)?!Number.isNaN(Number(e)):!1,vo=e=>e===window,vu={current:0},pu=I(0),od=2e3,hu=Symbol("elZIndexContextKey"),sd=Symbol("zIndexContextKey"),Pa=e=>{const t=tt()?ke(hu,vu):vu,n=e||(tt()?ke(sd,void 0):void 0),l=b(()=>{const r=a(n);return Me(r)?r:od}),o=b(()=>l.value+pu.value),s=()=>(t.current++,pu.value=t.current,o.value);return!Ct&&ke(hu),{initialZIndex:l,currentZIndex:o,nextZIndex:s}};var zh={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish",close:"Close this dialog"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const Hh=e=>(t,n)=>Kh(t,n,a(e)),Kh=(e,t,n)=>Gt(n,e,e).replace(/\{(\w+)\}/g,(l,o)=>{var s;return`${(s=t?.[o])!=null?s:`{${o}}`}`}),Wh=e=>{const t=b(()=>a(e).name),n=Nn(e)?e:I(e);return{lang:t,locale:n,t:Hh(e)}},rd=Symbol("localeContextKey"),ht=e=>{const t=e||ke(rd,I());return Wh(b(()=>t.value||zh))},id="__epPropKey",j=e=>e,jh=e=>yt(e)&&!!e[id],Xn=(e,t)=>{if(!yt(e)||jh(e))return e;const{values:n,required:l,default:o,type:s,validator:r}=e,u={type:s,required:!!l,validator:n||r?c=>{let f=!1,v=[];if(n&&(v=Array.from(n),on(e,"default")&&v.push(o),f||(f=v.includes(c))),r&&(f||(f=r(c))),!f&&v.length>0){const m=[...new Set(v)].map(d=>JSON.stringify(d)).join(", ");eh(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${m}], got value ${JSON.stringify(c)}.`)}return f}:void 0,[id]:!0};return on(e,"default")&&(u.default=o),u},fe=e=>Ga(Object.entries(e).map(([t,n])=>[t,Xn(n,t)])),ol=["","default","small","large"],Qt=Xn({type:String,values:ol,required:!1}),ud=Symbol("size"),cd=()=>{const e=ke(ud,{});return b(()=>a(e.size)||"")},dd=Symbol("emptyValuesContextKey"),Yh=["",void 0,null],Uh=void 0,ea=fe({emptyValues:Array,valueOnClear:{type:j([String,Number,Boolean,Function]),default:void 0,validator:e=>(e=Je(e)?e():e,Se(e)?e.every(t=>!t):!e)}}),po=(e,t)=>{const n=tt()?ke(dd,I({})):I({}),l=b(()=>e.emptyValues||n.value.emptyValues||Yh),o=b(()=>Je(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Je(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:Uh),s=r=>{let i=!0;return Se(r)?i=l.value.some(u=>Kt(r,u)):i=l.value.includes(r),i};return s(o.value),{emptyValues:l,valueOnClear:o,isEmptyValue:s}},Sa=e=>Object.keys(e),fd=e=>Object.entries(e),Ya=(e,t,n)=>({get value(){return Gt(e,t,n)},set value(l){dh(e,t,l)}}),Jo=I();function Oa(e,t=void 0){const n=tt()?ke(ld,Jo):Jo;return e?b(()=>{var l,o;return(o=(l=n.value)==null?void 0:l[e])!=null?o:t}):n}function ys(e,t){const n=Oa(),l=ue(e,b(()=>{var i;return((i=n.value)==null?void 0:i.namespace)||ja})),o=ht(b(()=>{var i;return(i=n.value)==null?void 0:i.locale})),s=Pa(b(()=>{var i;return((i=n.value)==null?void 0:i.zIndex)||od})),r=b(()=>{var i;return a(t)||((i=n.value)==null?void 0:i.size)||""});return qr(b(()=>a(n)||{})),{ns:l,locale:o,zIndex:s,size:r}}const qr=(e,t,n=!1)=>{var l;const o=!!tt(),s=o?Oa():void 0,r=(l=t?.provide)!=null?l:o?rt:void 0;if(!r)return;const i=b(()=>{const u=a(e);return s?.value?qh(s.value,u):u});return r(ld,i),r(rd,b(()=>i.value.locale)),r(ad,b(()=>i.value.namespace)),r(sd,b(()=>i.value.zIndex)),r(ud,{size:b(()=>i.value.size||"")}),r(dd,b(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(n||!Jo.value)&&(Jo.value=i.value),i},qh=(e,t)=>{const n=[...new Set([...Sa(e),...Sa(t)])],l={};for(const o of n)l[o]=t[o]!==void 0?t[o]:e[o];return l},Gh=(e=[])=>({version:Ah,install:(n,l)=>{n[fu]||(n[fu]=!0,e.forEach(o=>n.use(o)),l&&qr(l,n,!0))}}),Fe="update:modelValue",lt="change",Jt="input",Xh=fe({zIndex:{type:j([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),Zh={scroll:({scrollTop:e,fixed:t})=>Me(e)&&Tt(t),[lt]:e=>Tt(e)};var ve=(e,t)=>{const n=e.__vccOpts||e;for(const[l,o]of t)n[l]=o;return n};function Jh(e,t,n,l){const o=n-t;return e/=l/2,e<1?o/2*e*e*e+t:o/2*((e-=2)*e*e+2)+t}const Ol=e=>Ct?window.requestAnimationFrame(e):setTimeout(e,16),ql=e=>Ct?window.cancelAnimationFrame(e):clearTimeout(e),vd=(e="")=>e.split(" ").filter(t=>!!t.trim()),Fn=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},xn=(e,t)=>{!e||!t.trim()||e.classList.add(...vd(t))},yn=(e,t)=>{!e||!t.trim()||e.classList.remove(...vd(t))},ul=(e,t)=>{var n;if(!Ct||!e||!t)return"";let l=zr(t);l==="float"&&(l="cssFloat");try{const o=e.style[l];if(o)return o;const s=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return s?s[l]:""}catch{return e.style[l]}},pd=(e,t,n)=>{if(!(!e||!t))if(yt(t))fd(t).forEach(([l,o])=>pd(e,l,o));else{const l=zr(t);e.style[l]=n}};function Wt(e,t="px"){if(!e)return"";if(Me(e)||xh(e))return`${e}${t}`;if(De(e))return e}const Qh=(e,t)=>{if(!Ct)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],l=ul(e,n);return["scroll","auto","overlay"].some(o=>l.includes(o))},Gr=(e,t)=>{if(!Ct)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(Qh(n,t))return n;n=n.parentNode}return n};let No;const hd=e=>{var t;if(!Ct)return 0;if(No!==void 0)return No;const n=document.createElement("div");n.className=`${e}-scrollbar__wrap`,n.style.visibility="hidden",n.style.width="100px",n.style.position="absolute",n.style.top="-9999px",document.body.appendChild(n);const l=n.offsetWidth;n.style.overflow="scroll";const o=document.createElement("div");o.style.width="100%",n.appendChild(o);const s=o.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),No=l-s,No};function Xr(e,t){if(!Ct)return;if(!t){e.scrollTop=0;return}const n=[];let l=t.offsetParent;for(;l!==null&&e!==l&&e.contains(l);)n.push(l),l=l.offsetParent;const o=t.offsetTop+n.reduce((u,c)=>u+c.offsetTop,0),s=o+t.offsetHeight,r=e.scrollTop,i=r+e.clientHeight;oi&&(e.scrollTop=s-e.clientHeight)}function em(e,t,n,l,o){const s=Date.now();let r;const i=()=>{const c=Date.now()-s,f=Jh(c>l?l:c,t,n,l);vo(e)?e.scrollTo(window.pageXOffset,f):e.scrollTop=f,c{r&&ql(r)}}const mu=(e,t)=>vo(t)?e.ownerDocument.documentElement:t,gu=e=>vo(e)?window.scrollY:e.scrollTop;class tm extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function qt(e,t){throw new tm(`[${e}] ${t}`)}const md="ElAffix",nm=x({name:md}),lm=x({...nm,props:Xh,emits:Zh,setup(e,{expose:t,emit:n}){const l=e,o=ue("affix"),s=Bt(),r=Bt(),i=Bt(),{height:u}=Wr(),{height:c,width:f,top:v,bottom:m,update:d}=cu(r,{windowScroll:!1}),h=cu(s),p=I(!1),g=I(0),y=I(0),k=b(()=>({height:p.value?`${c.value}px`:"",width:p.value?`${f.value}px`:""})),C=b(()=>{if(!p.value)return{};const $=l.offset?Wt(l.offset):0;return{height:`${c.value}px`,width:`${f.value}px`,top:l.position==="top"?$:"",bottom:l.position==="bottom"?$:"",transform:y.value?`translateY(${y.value}px)`:"",zIndex:l.zIndex}}),w=()=>{if(!i.value)return;g.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0;const{position:$,target:O,offset:M}=l,N=M+c.value;if($==="top")if(O){const P=h.bottom.value-N;p.value=M>v.value&&h.bottom.value>0,y.value=P<0?P:0}else p.value=M>v.value;else if(O){const P=u.value-h.top.value-N;p.value=u.value-Mh.top.value,y.value=P<0?-P:0}else p.value=u.value-M{if(!p.value){d();return}p.value=!1,await Te(),d(),p.value=!0},E=async()=>{d(),await Te(),n("scroll",{scrollTop:g.value,fixed:p.value})};return re(p,$=>n(lt,$)),Ze(()=>{var $;l.target?(s.value=($=document.querySelector(l.target))!=null?$:void 0,s.value||qt(md,`Target does not exist: ${l.target}`)):s.value=document.documentElement,i.value=Gr(r.value,!0),d()}),Ft(i,"scroll",E),En(w),t({update:w,updateRoot:_}),($,O)=>(S(),L("div",{ref_key:"root",ref:r,class:T(a(o).b()),style:Pe(a(k))},[F("div",{class:T({[a(o).m("fixed")]:p.value}),style:Pe(a(C))},[Z($.$slots,"default")],6)],6))}});var am=ve(lm,[["__file","affix.vue"]]);const Ke=(e,t)=>{if(e.install=n=>{for(const l of[e,...Object.values(t??{})])n.component(l.name,l)},t)for(const[n,l]of Object.entries(t))e[n]=l;return e},gd=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),om=(e,t)=>(e.install=n=>{n.directive(t,e)},e),zt=e=>(e.install=Vt,e),sm=Ke(am),rm=fe({size:{type:j([Number,String])},color:{type:String}}),im=x({name:"ElIcon",inheritAttrs:!1}),um=x({...im,props:rm,setup(e){const t=e,n=ue("icon"),l=b(()=>{const{size:o,color:s}=t;return!o&&!s?{}:{fontSize:dt(o)?void 0:Wt(o),"--color":s}});return(o,s)=>(S(),L("i",qe({class:a(n).b(),style:a(l)},o.$attrs),[Z(o.$slots,"default")],16))}});var cm=ve(um,[["__file","icon.vue"]]);const $e=Ke(cm);function bu(){let e;const t=(l,o)=>{n(),e=window.setTimeout(l,o)},n=()=>window.clearTimeout(e);return fh(()=>n()),{registerTimeout:t,cancelTimeout:n}}const bd=fe({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),yd=({showAfter:e,hideAfter:t,autoClose:n,open:l,close:o})=>{const{registerTimeout:s}=bu(),{registerTimeout:r,cancelTimeout:i}=bu();return{onOpen:(f,v=a(e))=>{s(()=>{l(f);const m=a(n);Me(m)&&m>0&&r(()=>{o(f)},m)},v)},onClose:(f,v=a(t))=>{i(),s(()=>{o(f)},v)}}};var dm=x({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"})]))}}),sl=dm,fm=x({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.59 30.59 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.59 30.59 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0"})]))}}),fl=fm,vm=x({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512 340.864 831.872a30.59 30.59 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Cn=vm,pm=x({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),Cs=pm,hm=x({name:"Back",__name:"back",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),F("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),mm=hm,gm=x({name:"Bell",__name:"bell",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64"}),F("path",{fill:"currentColor",d:"M256 768h512V448a256 256 0 1 0-512 0zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320"}),F("path",{fill:"currentColor",d:"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32m352 128h128a64 64 0 0 1-128 0"})]))}}),UM=gm,bm=x({name:"Calendar",__name:"calendar",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),ym=bm,Cm=x({name:"CaretRight",__name:"caret-right",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"})]))}}),Cd=Cm,wm=x({name:"CaretTop",__name:"caret-top",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"})]))}}),km=wm,Sm=x({name:"ChatLineSquare",__name:"chat-line-square",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M160 826.88 273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z"}),F("path",{fill:"currentColor",d:"M352 512h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m0-192h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32"})]))}}),qM=Sm,Em=x({name:"Check",__name:"check",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),ho=Em,_m=x({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Tm=_m,$m=x({name:"CircleCheck",__name:"circle-check",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752z"})]))}}),Zr=$m,Nm=x({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),Jr=Nm,Im=x({name:"CircleClose",__name:"circle-close",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),gl=Im,Mm=x({name:"Clock",__name:"clock",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),F("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),wd=Mm,Pm=x({name:"Close",__name:"close",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Hn=Pm,Om=x({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672zm256 0a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672z"})]))}}),Rl=Om,Rm=x({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L764.736 512 452.864 192a30.59 30.59 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L508.736 512 196.864 192a30.59 30.59 0 0 1 0-42.688"})]))}}),Bl=Rm,Bm=x({name:"Delete",__name:"delete",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),Lm=Bm,Vm=x({name:"Document",__name:"document",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),Dm=Vm,Am=x({name:"FullScreen",__name:"full-screen",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),Fm=Am,xm=x({name:"Hide",__name:"hide",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176"}),F("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48"})]))}}),zm=xm,Hm=x({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Xa=Hm,Km=x({name:"Key",__name:"key",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M448 456.064V96a32 32 0 0 1 32-32.064L672 64a32 32 0 0 1 0 64H512v128h160a32 32 0 0 1 0 64H512v128a256 256 0 1 1-64 8.064M512 896a192 192 0 1 0 0-384 192 192 0 0 0 0 384"})]))}}),GM=Km,Wm=x({name:"List",__name:"list",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M704 192h160v736H160V192h160v64h384zM288 512h448v-64H288zm0 256h448v-64H288zm96-576V96h256v96z"})]))}}),XM=Wm,jm=x({name:"Loading",__name:"loading",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248m452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248M828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0"})]))}}),ll=jm,Ym=x({name:"Lock",__name:"lock",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96"}),F("path",{fill:"currentColor",d:"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m192-160v-64a192 192 0 1 0-384 0v64zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64"})]))}}),ZM=Ym,Um=x({name:"Message",__name:"message",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64"}),F("path",{fill:"currentColor",d:"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224z"})]))}}),JM=Um,qm=x({name:"Minus",__name:"minus",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),Gm=qm,Xm=x({name:"MoreFilled",__name:"more-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),yu=Xm,Zm=x({name:"More",__name:"more",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),Jm=Zm,Qm=x({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),eg=Qm,tg=x({name:"Plus",__name:"plus",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),kd=tg,ng=x({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592q0-64.416-42.24-101.376c-28.16-25.344-65.472-37.312-111.232-37.312m-12.672 406.208a54.27 54.27 0 0 0-38.72 14.784 49.4 49.4 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.85 54.85 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.97 51.97 0 0 0-15.488-38.016 55.94 55.94 0 0 0-39.424-14.784"})]))}}),lg=ng,ag=x({name:"RefreshLeft",__name:"refresh-left",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"})]))}}),og=ag,sg=x({name:"RefreshRight",__name:"refresh-right",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88"})]))}}),rg=sg,ig=x({name:"ScaleToOriginal",__name:"scale-to-original",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.12 30.12 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.12 30.12 0 0 0-30.118-30.118m-361.412 0a30.12 30.12 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.12 30.12 0 0 0-30.118-30.118M512 361.412a30.12 30.12 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.12 30.12 0 0 0 512 361.412M512 512a30.12 30.12 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.12 30.12 0 0 0 512 512"})]))}}),ug=ig,cg=x({name:"Search",__name:"search",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),dg=cg,fg=x({name:"Setting",__name:"setting",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357 357 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a352 352 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357 357 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294 294 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293 293 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294 294 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288 288 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293 293 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a288 288 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256"})]))}}),QM=fg,vg=x({name:"SortDown",__name:"sort-down",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"})]))}}),pg=vg,hg=x({name:"SortUp",__name:"sort-up",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"})]))}}),mg=hg,gg=x({name:"StarFilled",__name:"star-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M313.6 924.48a70.4 70.4 0 0 1-74.152-5.365 70.4 70.4 0 0 1-27.992-68.875l37.888-220.928L88.96 472.96a70.4 70.4 0 0 1 3.788-104.225A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 100.246-28.595 70.4 70.4 0 0 1 25.962 28.595l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),Io=gg,bg=x({name:"Star",__name:"star",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),yg=bg,Cg=x({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Sd=Cg,wg=x({name:"Tools",__name:"tools",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M764.416 254.72a351.7 351.7 0 0 1 86.336 149.184H960v192.064H850.752a351.7 351.7 0 0 1-86.336 149.312l54.72 94.72-166.272 96-54.592-94.72a352.64 352.64 0 0 1-172.48 0L371.136 936l-166.272-96 54.72-94.72a351.7 351.7 0 0 1-86.336-149.312H64v-192h109.248a351.7 351.7 0 0 1 86.336-149.312L204.8 160l166.208-96h.192l54.656 94.592a352.64 352.64 0 0 1 172.48 0L652.8 64h.128L819.2 160l-54.72 94.72zM704 499.968a192 192 0 1 0-384 0 192 192 0 0 0 384 0"})]))}}),eP=wg,kg=x({name:"TrendCharts",__name:"trend-charts",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 896V128h768v768zm291.712-327.296 128 102.4 180.16-201.792-47.744-42.624-139.84 156.608-128-102.4-180.16 201.792 47.744 42.624zM816 352a48 48 0 1 0-96 0 48 48 0 0 0 96 0"})]))}}),tP=kg,Sg=x({name:"UserFilled",__name:"user-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0m544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"})]))}}),nP=Sg,Eg=x({name:"User",__name:"user",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0"})]))}}),lP=Eg,_g=x({name:"View",__name:"view",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),Tg=_g,$g=x({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),ws=$g,Ng=x({name:"ZoomIn",__name:"zoom-in",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),Ed=Ng,Ig=x({name:"ZoomOut",__name:"zoom-out",setup(e){return(t,n)=>(S(),L("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})]))}}),Mg=Ig;const St=j([String,Object,Function]),_d={Close:Hn},Qr={Close:Hn,SuccessFilled:Sd,InfoFilled:Xa,WarningFilled:ws,CircleCloseFilled:Jr},Ll={primary:Xa,success:Sd,warning:ws,error:Jr,info:Xa},ks={validating:ll,success:Zr,error:gl},Pg=["light","dark"],Og=fe({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:Sa(Ll),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:Pg,default:"light"},...bd,showAfter:Number}),Rg={open:()=>!0,close:e=>dt(e)||e instanceof Event},Bg=x({name:"ElAlert"}),Lg=x({...Bg,props:Og,emits:Rg,setup(e,{emit:t}){const n=e,{Close:l}=Qr,o=Zt(),s=ue("alert"),r=I(dt(n.showAfter)),i=b(()=>Ll[n.type]),u=b(()=>!!(n.description||o.default)),c=()=>{r.value=!0,t("open")},f=d=>{r.value=!1,t("close",d)},{onOpen:v,onClose:m}=yd({showAfter:wt(n,"showAfter",0),hideAfter:wt(n,"hideAfter"),autoClose:wt(n,"autoClose"),open:c,close:f});return Ct&&v(),(d,h)=>(S(),le(rn,{name:a(s).b("fade"),persisted:""},{default:X(()=>[Ye(F("div",{class:T([a(s).b(),a(s).m(d.type),a(s).is("center",d.center),a(s).is(d.effect)]),role:"alert"},[d.showIcon&&(d.$slots.icon||a(i))?(S(),le(a($e),{key:0,class:T([a(s).e("icon"),{[a(s).is("big")]:a(u)}])},{default:X(()=>[Z(d.$slots,"icon",{},()=>[(S(),le(Xe(a(i))))])]),_:3},8,["class"])):ee("v-if",!0),F("div",{class:T(a(s).e("content"))},[d.title||d.$slots.title?(S(),L("span",{key:0,class:T([a(s).e("title"),{"with-description":a(u)}])},[Z(d.$slots,"title",{},()=>[ut(pe(d.title),1)])],2)):ee("v-if",!0),a(u)?(S(),L("p",{key:1,class:T(a(s).e("description"))},[Z(d.$slots,"default",{},()=>[ut(pe(d.description),1)])],2)):ee("v-if",!0),d.closable?(S(),L(Re,{key:2},[d.closeText?(S(),L("div",{key:0,class:T([a(s).e("close-btn"),a(s).is("customed")]),onClick:f},pe(d.closeText),3)):(S(),le(a($e),{key:1,class:T(a(s).e("close-btn")),onClick:a(m)},{default:X(()=>[U(a(l))]),_:1},8,["class","onClick"]))],64)):ee("v-if",!0)],2)],2),[[bt,r.value]])]),_:3},8,["name"]))}});var Vg=ve(Lg,[["__file","alert.vue"]]);const Dg=Ke(Vg),ei=()=>Ct&&/firefox/i.test(window.navigator.userAgent);let $n;const Ag={height:"0",visibility:"hidden",overflow:ei()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},Fg=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"];function xg(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),l=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),o=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:Fg.map(r=>[r,t.getPropertyValue(r)]),paddingSize:l,borderSize:o,boxSizing:n}}function Cu(e,t=1,n){var l,o;$n||($n=document.createElement("textarea"),((l=e.parentNode)!=null?l:document.body).appendChild($n));const{paddingSize:s,borderSize:r,boxSizing:i,contextStyle:u}=xg(e);u.forEach(([m,d])=>$n?.style.setProperty(m,d)),Object.entries(Ag).forEach(([m,d])=>$n?.style.setProperty(m,d,"important")),$n.value=e.value||e.placeholder||"";let c=$n.scrollHeight;const f={};i==="border-box"?c=c+r:i==="content-box"&&(c=c-s),$n.value="";const v=$n.scrollHeight-s;if(Me(t)){let m=v*t;i==="border-box"&&(m=m+s+r),c=Math.max(m,c),f.minHeight=`${m}px`}if(Me(n)){let m=v*n;i==="border-box"&&(m=m+s+r),c=Math.min(m,c)}return f.height=`${c}px`,(o=$n.parentNode)==null||o.removeChild($n),$n=void 0,f}const xt=e=>e,zg=fe({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),vn=e=>On(zg,e),mo=fe({id:{type:String,default:void 0},size:Qt,disabled:Boolean,modelValue:{type:j([String,Number,Object]),default:""},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:j([Boolean,Object]),default:!1},autocomplete:{type:j(String),default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,clearIcon:{type:St,default:gl},showPassword:Boolean,showWordLimit:Boolean,suffixIcon:{type:St},prefixIcon:{type:St},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:j([Object,Array,String]),default:()=>xt({})},autofocus:Boolean,rows:{type:Number,default:2},...vn(["ariaLabel"]),inputmode:{type:j(String),default:void 0},name:String}),Hg={[Fe]:e=>De(e),input:e=>De(e),change:e=>De(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},Kg=["class","style"],Wg=/^on[A-Z]/,Ss=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,l=b(()=>(n?.value||[]).concat(Kg)),o=tt();return o?b(()=>{var s;return Ga(Object.entries((s=o.proxy)==null?void 0:s.$attrs).filter(([r])=>!l.value.includes(r)&&!(t&&Wg.test(r))))}):b(()=>({}))},wu={prefix:Math.floor(Math.random()*1e4),current:0},jg=Symbol("elIdInjection"),ti=()=>tt()?ke(jg,wu):wu,un=e=>{const t=ti(),n=Ur();return Xo(()=>a(e)||`${n.value}-id-${t.prefix}-${t.current++}`)},ta=Symbol("formContextKey"),al=Symbol("formItemContextKey"),dn=()=>{const e=ke(ta,void 0),t=ke(al,void 0);return{form:e,formItem:t}},Ln=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:l})=>{n||(n=I(!1)),l||(l=I(!1));const o=tt(),s=()=>{let c=o?.parent;for(;c;){if(c.type.name==="ElFormItem")return!1;if(c.type.name==="ElLabelWrap")return!0;c=c.parent}return!1},r=I();let i;const u=b(()=>{var c;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((c=t.inputIds)==null?void 0:c.length)<=1)});return Ze(()=>{i=re([wt(e,"id"),n],([c,f])=>{const v=c??(f?void 0:un().value);v!==r.value&&(t?.removeInputId&&!s()&&(r.value&&t.removeInputId(r.value),!l?.value&&!f&&v&&t.addInputId(v)),r.value=v)},{immediate:!0})}),ms(()=>{i&&i(),t?.removeInputId&&r.value&&t.removeInputId(r.value)}),{isLabeledByFormItem:u,inputId:r}},Td=e=>{const t=tt();return b(()=>{var n,l;return(l=(n=t?.proxy)==null?void 0:n.$props)==null?void 0:l[e]})},Xt=(e,t={})=>{const n=I(void 0),l=t.prop?n:Td("size"),o=t.global?n:cd(),s=t.form?{size:void 0}:ke(ta,void 0),r=t.formItem?{size:void 0}:ke(al,void 0);return b(()=>l.value||a(e)||r?.size||s?.size||o.value||"")},nn=e=>{const t=Td("disabled"),n=ke(ta,void 0);return b(()=>t.value||a(e)||n?.disabled||!1)},Yg='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',ku=e=>typeof Element>"u"?!1:e instanceof Element,Ug=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,Su=e=>Array.from(e.querySelectorAll(Yg)).filter(t=>Za(t)&&Ug(t)),Za=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},xo=function(e,t,...n){let l;t.includes("mouse")||t.includes("click")?l="MouseEvents":t.includes("key")?l="KeyboardEvent":l="HTMLEvents";const o=document.createEvent(l);return o.initEvent(t,...n),e.dispatchEvent(o),e},$d=e=>!e.getAttribute("aria-owns"),Nd=(e,t,n)=>{const{parentNode:l}=e;if(!l)return null;const o=l.querySelectorAll(n),s=Array.prototype.indexOf.call(o,e);return o[s+t]||null},go=(e,t)=>{if(!e||!e.focus)return;let n=!1;ku(e)&&!Za(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),n=!0),e.focus(t),ku(e)&&n&&e.removeAttribute("tabindex")},zo=e=>{e&&(go(e),!$d(e)&&e.click())};function bl(e,{disabled:t,beforeFocus:n,afterFocus:l,beforeBlur:o,afterBlur:s}={}){const r=tt(),{emit:i}=r,u=Bt(),c=I(!1),f=d=>{const h=Je(n)?n(d):!1;a(t)||c.value||h||(c.value=!0,i("focus",d),l?.())},v=d=>{var h;const p=Je(o)?o(d):!1;a(t)||d.relatedTarget&&((h=u.value)!=null&&h.contains(d.relatedTarget))||p||(c.value=!1,i("blur",d),s?.())},m=d=>{var h,p;a(t)||Za(d.target)||(h=u.value)!=null&&h.contains(document.activeElement)&&u.value!==document.activeElement||(p=e.value)==null||p.focus()};return re([u,()=>a(t)],([d,h])=>{d&&(h?d.removeAttribute("tabindex"):d.setAttribute("tabindex","-1"))}),Ft(u,"focus",f,!0),Ft(u,"blur",v,!0),Ft(u,"click",m,!0),{isFocused:c,wrapperRef:u,handleFocus:f,handleBlur:v}}const qg=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function bo({afterComposition:e,emit:t}){const n=I(!1),l=i=>{t?.("compositionstart",i),n.value=!0},o=i=>{var u;t?.("compositionupdate",i);const c=(u=i.target)==null?void 0:u.value,f=c[c.length-1]||"";n.value=!qg(f)},s=i=>{t?.("compositionend",i),n.value&&(n.value=!1,Te(()=>e(i)))};return{isComposing:n,handleComposition:i=>{i.type==="compositionend"?s(i):o(i)},handleCompositionStart:l,handleCompositionUpdate:o,handleCompositionEnd:s}}function Gg(e){let t;function n(){if(e.value==null)return;const{selectionStart:o,selectionEnd:s,value:r}=e.value;if(o==null||s==null)return;const i=r.slice(0,Math.max(0,o)),u=r.slice(Math.max(0,s));t={selectionStart:o,selectionEnd:s,value:r,beforeTxt:i,afterTxt:u}}function l(){if(e.value==null||t==null)return;const{value:o}=e.value,{beforeTxt:s,afterTxt:r,selectionStart:i}=t;if(s==null||r==null||i==null)return;let u=o.length;if(o.endsWith(r))u=o.length-r.length;else if(o.startsWith(s))u=s.length;else{const c=s[i-1],f=o.indexOf(c,i-1);f!==-1&&(u=f+1)}e.value.setSelectionRange(u,u)}return[n,l]}const Xg="ElInput",Zg=x({name:Xg,inheritAttrs:!1}),Jg=x({...Zg,props:mo,emits:Hg,setup(e,{expose:t,emit:n}){const l=e,o=hl(),s=Ss(),r=Zt(),i=b(()=>[l.type==="textarea"?p.b():h.b(),h.m(m.value),h.is("disabled",d.value),h.is("exceed",K.value),{[h.b("group")]:r.prepend||r.append,[h.m("prefix")]:r.prefix||l.prefixIcon,[h.m("suffix")]:r.suffix||l.suffixIcon||l.clearable||l.showPassword,[h.bm("suffix","password-clear")]:R.value&&A.value,[h.b("hidden")]:l.type==="hidden"},o.class]),u=b(()=>[h.e("wrapper"),h.is("focus",O.value)]),{form:c,formItem:f}=dn(),{inputId:v}=Ln(l,{formItemContext:f}),m=Xt(),d=nn(),h=ue("input"),p=ue("textarea"),g=Bt(),y=Bt(),k=I(!1),C=I(!1),w=I(),_=Bt(l.inputStyle),E=b(()=>g.value||y.value),{wrapperRef:$,isFocused:O,handleFocus:M,handleBlur:N}=bl(E,{disabled:d,afterBlur(){var ye;l.validateEvent&&((ye=f?.validate)==null||ye.call(f,"blur").catch(Ue=>void 0))}}),P=b(()=>{var ye;return(ye=c?.statusIcon)!=null?ye:!1}),B=b(()=>f?.validateState||""),q=b(()=>B.value&&ks[B.value]),W=b(()=>C.value?Tg:zm),te=b(()=>[o.style]),V=b(()=>[l.inputStyle,_.value,{resize:l.resize}]),D=b(()=>Ut(l.modelValue)?"":String(l.modelValue)),R=b(()=>l.clearable&&!d.value&&!l.readonly&&!!D.value&&(O.value||k.value)),A=b(()=>l.showPassword&&!d.value&&!!D.value),z=b(()=>l.showWordLimit&&!!l.maxlength&&(l.type==="text"||l.type==="textarea")&&!d.value&&!l.readonly&&!l.showPassword),H=b(()=>D.value.length),K=b(()=>!!z.value&&H.value>Number(l.maxlength)),G=b(()=>!!r.suffix||!!l.suffixIcon||R.value||l.showPassword||z.value||!!B.value&&P.value),[Q,ae]=Gg(g);Ht(y,ye=>{if(J(),!z.value||l.resize!=="both")return;const Ue=ye[0],{width:$t}=Ue.contentRect;w.value={right:`calc(100% - ${$t+15+6}px)`}});const se=()=>{const{type:ye,autosize:Ue}=l;if(!(!Ct||ye!=="textarea"||!y.value))if(Ue){const $t=yt(Ue)?Ue.minRows:void 0,Mt=yt(Ue)?Ue.maxRows:void 0,Ot=Cu(y.value,$t,Mt);_.value={overflowY:"hidden",...Ot},Te(()=>{y.value.offsetHeight,_.value=Ot})}else _.value={minHeight:Cu(y.value).minHeight}},J=(ye=>{let Ue=!1;return()=>{var $t;if(Ue||!l.autosize)return;(($t=y.value)==null?void 0:$t.offsetParent)===null||(setTimeout(ye),Ue=!0)}})(se),ie=()=>{const ye=E.value,Ue=l.formatter?l.formatter(D.value):D.value;!ye||ye.value===Ue||(ye.value=Ue)},Ee=async ye=>{Q();let{value:Ue}=ye.target;if(l.formatter&&l.parser&&(Ue=l.parser(Ue)),!he.value){if(Ue===D.value){ie();return}n(Fe,Ue),n(Jt,Ue),await Te(),ie(),ae()}},oe=ye=>{let{value:Ue}=ye.target;l.formatter&&l.parser&&(Ue=l.parser(Ue)),n(lt,Ue)},{isComposing:he,handleCompositionStart:Oe,handleCompositionUpdate:Ae,handleCompositionEnd:Ce}=bo({emit:n,afterComposition:Ee}),at=()=>{Q(),C.value=!C.value,setTimeout(ae)},_e=()=>{var ye;return(ye=E.value)==null?void 0:ye.focus()},Ne=()=>{var ye;return(ye=E.value)==null?void 0:ye.blur()},He=ye=>{k.value=!1,n("mouseleave",ye)},ct=ye=>{k.value=!0,n("mouseenter",ye)},ot=ye=>{n("keydown",ye)},nt=()=>{var ye;(ye=E.value)==null||ye.select()},ft=()=>{n(Fe,""),n(lt,""),n("clear"),n(Jt,"")};return re(()=>l.modelValue,()=>{var ye;Te(()=>se()),l.validateEvent&&((ye=f?.validate)==null||ye.call(f,"change").catch(Ue=>void 0))}),re(D,()=>ie()),re(()=>l.type,async()=>{await Te(),ie(),se()}),Ze(()=>{!l.formatter&&l.parser,ie(),Te(se)}),t({input:g,textarea:y,ref:E,textareaStyle:V,autosize:wt(l,"autosize"),isComposing:he,focus:_e,blur:Ne,select:nt,clear:ft,resizeTextarea:se}),(ye,Ue)=>(S(),L("div",{class:T([a(i),{[a(h).bm("group","append")]:ye.$slots.append,[a(h).bm("group","prepend")]:ye.$slots.prepend}]),style:Pe(a(te)),onMouseenter:ct,onMouseleave:He},[ee(" input "),ye.type!=="textarea"?(S(),L(Re,{key:0},[ee(" prepend slot "),ye.$slots.prepend?(S(),L("div",{key:0,class:T(a(h).be("group","prepend"))},[Z(ye.$slots,"prepend")],2)):ee("v-if",!0),F("div",{ref_key:"wrapperRef",ref:$,class:T(a(u))},[ee(" prefix slot "),ye.$slots.prefix||ye.prefixIcon?(S(),L("span",{key:0,class:T(a(h).e("prefix"))},[F("span",{class:T(a(h).e("prefix-inner"))},[Z(ye.$slots,"prefix"),ye.prefixIcon?(S(),le(a($e),{key:0,class:T(a(h).e("icon"))},{default:X(()=>[(S(),le(Xe(ye.prefixIcon)))]),_:1},8,["class"])):ee("v-if",!0)],2)],2)):ee("v-if",!0),F("input",qe({id:a(v),ref_key:"input",ref:g,class:a(h).e("inner")},a(s),{name:ye.name,minlength:ye.minlength,maxlength:ye.maxlength,type:ye.showPassword?C.value?"text":"password":ye.type,disabled:a(d),readonly:ye.readonly,autocomplete:ye.autocomplete,tabindex:ye.tabindex,"aria-label":ye.ariaLabel,placeholder:ye.placeholder,style:ye.inputStyle,form:ye.form,autofocus:ye.autofocus,role:ye.containerRole,inputmode:ye.inputmode,onCompositionstart:a(Oe),onCompositionupdate:a(Ae),onCompositionend:a(Ce),onInput:Ee,onChange:oe,onKeydown:ot}),null,16,["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode","onCompositionstart","onCompositionupdate","onCompositionend"]),ee(" suffix slot "),a(G)?(S(),L("span",{key:1,class:T(a(h).e("suffix"))},[F("span",{class:T(a(h).e("suffix-inner"))},[!a(R)||!a(A)||!a(z)?(S(),L(Re,{key:0},[Z(ye.$slots,"suffix"),ye.suffixIcon?(S(),le(a($e),{key:0,class:T(a(h).e("icon"))},{default:X(()=>[(S(),le(Xe(ye.suffixIcon)))]),_:1},8,["class"])):ee("v-if",!0)],64)):ee("v-if",!0),a(R)?(S(),le(a($e),{key:1,class:T([a(h).e("icon"),a(h).e("clear")]),onMousedown:Ve(a(Vt),["prevent"]),onClick:ft},{default:X(()=>[(S(),le(Xe(ye.clearIcon)))]),_:1},8,["class","onMousedown"])):ee("v-if",!0),a(A)?(S(),le(a($e),{key:2,class:T([a(h).e("icon"),a(h).e("password")]),onClick:at},{default:X(()=>[(S(),le(Xe(a(W))))]),_:1},8,["class"])):ee("v-if",!0),a(z)?(S(),L("span",{key:3,class:T(a(h).e("count"))},[F("span",{class:T(a(h).e("count-inner"))},pe(a(H))+" / "+pe(ye.maxlength),3)],2)):ee("v-if",!0),a(B)&&a(q)&&a(P)?(S(),le(a($e),{key:4,class:T([a(h).e("icon"),a(h).e("validateIcon"),a(h).is("loading",a(B)==="validating")])},{default:X(()=>[(S(),le(Xe(a(q))))]),_:1},8,["class"])):ee("v-if",!0)],2)],2)):ee("v-if",!0)],2),ee(" append slot "),ye.$slots.append?(S(),L("div",{key:1,class:T(a(h).be("group","append"))},[Z(ye.$slots,"append")],2)):ee("v-if",!0)],64)):(S(),L(Re,{key:1},[ee(" textarea "),F("textarea",qe({id:a(v),ref_key:"textarea",ref:y,class:[a(p).e("inner"),a(h).is("focus",a(O))]},a(s),{minlength:ye.minlength,maxlength:ye.maxlength,tabindex:ye.tabindex,disabled:a(d),readonly:ye.readonly,autocomplete:ye.autocomplete,style:a(V),"aria-label":ye.ariaLabel,placeholder:ye.placeholder,form:ye.form,autofocus:ye.autofocus,rows:ye.rows,role:ye.containerRole,onCompositionstart:a(Oe),onCompositionupdate:a(Ae),onCompositionend:a(Ce),onInput:Ee,onFocus:a(M),onBlur:a(N),onChange:oe,onKeydown:ot}),null,16,["id","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),a(z)?(S(),L("span",{key:0,style:Pe(w.value),class:T(a(h).e("count"))},pe(a(H))+" / "+pe(ye.maxlength),7)):ee("v-if",!0)],64))],38))}});var Qg=ve(Jg,[["__file","input.vue"]]);const bn=Ke(Qg),sa=4,Id={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},e0=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),ni=Symbol("scrollbarContextKey"),t0=fe({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),n0="Thumb",l0=x({__name:"thumb",props:t0,setup(e){const t=e,n=ke(ni),l=ue("scrollbar");n||qt(n0,"can not inject scrollbar context");const o=I(),s=I(),r=I({}),i=I(!1);let u=!1,c=!1,f=0,v=0,m=Ct?document.onselectstart:null;const d=b(()=>Id[t.vertical?"vertical":"horizontal"]),h=b(()=>e0({size:t.size,move:t.move,bar:d.value})),p=b(()=>o.value[d.value.offset]**2/n.wrapElement[d.value.scrollSize]/t.ratio/s.value[d.value.offset]),g=O=>{var M;if(O.stopPropagation(),O.ctrlKey||[1,2].includes(O.button))return;(M=window.getSelection())==null||M.removeAllRanges(),k(O);const N=O.currentTarget;N&&(r.value[d.value.axis]=N[d.value.offset]-(O[d.value.client]-N.getBoundingClientRect()[d.value.direction]))},y=O=>{if(!s.value||!o.value||!n.wrapElement)return;const M=Math.abs(O.target.getBoundingClientRect()[d.value.direction]-O[d.value.client]),N=s.value[d.value.offset]/2,P=(M-N)*100*p.value/o.value[d.value.offset];n.wrapElement[d.value.scroll]=P*n.wrapElement[d.value.scrollSize]/100},k=O=>{O.stopImmediatePropagation(),u=!0,f=n.wrapElement.scrollHeight,v=n.wrapElement.scrollWidth,document.addEventListener("mousemove",C),document.addEventListener("mouseup",w),m=document.onselectstart,document.onselectstart=()=>!1},C=O=>{if(!o.value||!s.value||u===!1)return;const M=r.value[d.value.axis];if(!M)return;const N=(o.value.getBoundingClientRect()[d.value.direction]-O[d.value.client])*-1,P=s.value[d.value.offset]-M,B=(N-P)*100*p.value/o.value[d.value.offset];d.value.scroll==="scrollLeft"?n.wrapElement[d.value.scroll]=B*v/100:n.wrapElement[d.value.scroll]=B*f/100},w=()=>{u=!1,r.value[d.value.axis]=0,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",w),$(),c&&(i.value=!1)},_=()=>{c=!1,i.value=!!t.size},E=()=>{c=!0,i.value=u};_t(()=>{$(),document.removeEventListener("mouseup",w)});const $=()=>{document.onselectstart!==m&&(document.onselectstart=m)};return Ft(wt(n,"scrollbarElement"),"mousemove",_),Ft(wt(n,"scrollbarElement"),"mouseleave",E),(O,M)=>(S(),le(rn,{name:a(l).b("fade"),persisted:""},{default:X(()=>[Ye(F("div",{ref_key:"instance",ref:o,class:T([a(l).e("bar"),a(l).is(a(d).key)]),onMousedown:y,onClick:Ve(()=>{},["stop"])},[F("div",{ref_key:"thumb",ref:s,class:T(a(l).e("thumb")),style:Pe(a(h)),onMousedown:g},null,38)],42,["onClick"]),[[bt,O.always||i.value]])]),_:1},8,["name"]))}});var Eu=ve(l0,[["__file","thumb.vue"]]);const a0=fe({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),o0=x({__name:"bar",props:a0,setup(e,{expose:t}){const n=e,l=ke(ni),o=I(0),s=I(0),r=I(""),i=I(""),u=I(1),c=I(1);return t({handleScroll:m=>{if(m){const d=m.offsetHeight-sa,h=m.offsetWidth-sa;s.value=m.scrollTop*100/d*u.value,o.value=m.scrollLeft*100/h*c.value}},update:()=>{const m=l?.wrapElement;if(!m)return;const d=m.offsetHeight-sa,h=m.offsetWidth-sa,p=d**2/m.scrollHeight,g=h**2/m.scrollWidth,y=Math.max(p,n.minSize),k=Math.max(g,n.minSize);u.value=p/(d-p)/(y/(d-y)),c.value=g/(h-g)/(k/(h-k)),i.value=y+sa(S(),L(Re,null,[U(Eu,{move:o.value,ratio:c.value,size:r.value,always:m.always},null,8,["move","ratio","size","always"]),U(Eu,{move:s.value,ratio:u.value,size:i.value,vertical:"",always:m.always},null,8,["move","ratio","size","always"])],64))}});var s0=ve(o0,[["__file","bar.vue"]]);const r0=fe({distance:{type:Number,default:0},height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:j([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...vn(["ariaLabel","ariaOrientation"])}),Md={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Me)},i0="ElScrollbar",u0=x({name:i0}),c0=x({...u0,props:r0,emits:Md,setup(e,{expose:t,emit:n}){const l=e,o=ue("scrollbar");let s,r,i,u=0,c=0,f="";const v={bottom:!1,top:!1,right:!1,left:!1},m=I(),d=I(),h=I(),p=I(),g=b(()=>{const P={};return l.height&&(P.height=Wt(l.height)),l.maxHeight&&(P.maxHeight=Wt(l.maxHeight)),[l.wrapStyle,P]}),y=b(()=>[l.wrapClass,o.e("wrap"),{[o.em("wrap","hidden-default")]:!l.native}]),k=b(()=>[o.e("view"),l.viewClass]),C=P=>{var B;return(B=v[P])!=null?B:!1},w={top:"bottom",bottom:"top",left:"right",right:"left"},_=P=>{const B=w[f];if(!B)return;const q=P[f],W=P[B];q&&!v[f]&&(v[f]=!0),!W&&v[B]&&(v[B]=!1)},E=()=>{var P;if(d.value){(P=p.value)==null||P.handleScroll(d.value);const B=u,q=c;u=d.value.scrollTop,c=d.value.scrollLeft;const W={bottom:u+d.value.clientHeight>=d.value.scrollHeight-l.distance,top:u<=l.distance&&B!==0,right:c+d.value.clientWidth>=d.value.scrollWidth-l.distance&&q!==c,left:c<=l.distance&&q!==0};if(n("scroll",{scrollTop:u,scrollLeft:c}),B!==u&&(f=u>B?"bottom":"top"),q!==c&&(f=c>q?"right":"left"),l.distance>0){if(C(f))return;_(W)}W[f]&&n("end-reached",f)}};function $(P,B){yt(P)?d.value.scrollTo(P):Me(P)&&Me(B)&&d.value.scrollTo(P,B)}const O=P=>{Me(P)&&(d.value.scrollTop=P)},M=P=>{Me(P)&&(d.value.scrollLeft=P)},N=()=>{var P;(P=p.value)==null||P.update(),v[f]=!1};return re(()=>l.noresize,P=>{P?(s?.(),r?.(),i?.()):({stop:s}=Ht(h,N),{stop:r}=Ht(d,N),i=Ft("resize",N))},{immediate:!0}),re(()=>[l.maxHeight,l.height],()=>{l.native||Te(()=>{var P;N(),d.value&&((P=p.value)==null||P.handleScroll(d.value))})}),rt(ni,kt({scrollbarElement:m,wrapElement:d})),Hr(()=>{d.value&&(d.value.scrollTop=u,d.value.scrollLeft=c)}),Ze(()=>{l.native||Te(()=>{N()})}),ml(()=>N()),t({wrapRef:d,update:N,scrollTo:$,setScrollTop:O,setScrollLeft:M,handleScroll:E}),(P,B)=>(S(),L("div",{ref_key:"scrollbarRef",ref:m,class:T(a(o).b())},[F("div",{ref_key:"wrapRef",ref:d,class:T(a(y)),style:Pe(a(g)),tabindex:P.tabindex,onScroll:E},[(S(),le(Xe(P.tag),{id:P.id,ref_key:"resizeRef",ref:h,class:T(a(k)),style:Pe(P.viewStyle),role:P.role,"aria-label":P.ariaLabel,"aria-orientation":P.ariaOrientation},{default:X(()=>[Z(P.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),P.native?ee("v-if",!0):(S(),le(s0,{key:0,ref_key:"barRef",ref:p,always:P.always,"min-size":P.minSize},null,8,["always","min-size"]))],2))}});var d0=ve(c0,[["__file","scrollbar.vue"]]);const qn=Ke(d0),li=Symbol("popper"),Pd=Symbol("popperContent"),Od=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],Rd=fe({role:{type:String,values:Od,default:"tooltip"}}),f0=x({name:"ElPopper",inheritAttrs:!1}),v0=x({...f0,props:Rd,setup(e,{expose:t}){const n=e,l=I(),o=I(),s=I(),r=I(),i=b(()=>n.role),u={triggerRef:l,popperInstanceRef:o,contentRef:s,referenceRef:r,role:i};return t(u),rt(li,u),(c,f)=>Z(c.$slots,"default")}});var p0=ve(v0,[["__file","popper.vue"]]);const h0=x({name:"ElPopperArrow",inheritAttrs:!1}),m0=x({...h0,setup(e,{expose:t}){const n=ue("popper"),{arrowRef:l,arrowStyle:o}=ke(Pd,void 0);return _t(()=>{l.value=void 0}),t({arrowRef:l}),(s,r)=>(S(),L("span",{ref_key:"arrowRef",ref:l,class:T(a(n).e("arrow")),style:Pe(a(o)),"data-popper-arrow":""},null,6))}});var g0=ve(m0,[["__file","arrow.vue"]]);const Bd=fe({virtualRef:{type:j(Object)},virtualTriggering:Boolean,onMouseenter:{type:j(Function)},onMouseleave:{type:j(Function)},onClick:{type:j(Function)},onKeydown:{type:j(Function)},onFocus:{type:j(Function)},onBlur:{type:j(Function)},onContextmenu:{type:j(Function)},id:String,open:Boolean}),Ld=Symbol("elForwardRef"),b0=e=>{rt(Ld,{setForwardRef:n=>{e.value=n}})},y0=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),C0="ElOnlyChild",Vd=x({name:C0,setup(e,{slots:t,attrs:n}){var l;const o=ke(Ld),s=y0((l=o?.setForwardRef)!=null?l:Vt);return()=>{var r;const i=(r=t.default)==null?void 0:r.call(t,n);if(!i)return null;const[u,c]=Dd(i);return u?Ye(th(u,n),[[s]]):null}}});function Dd(e){if(!e)return[null,0];const t=e,n=t.filter(l=>l.type!==Ml).length;for(const l of t){if(yt(l))switch(l.type){case Ml:continue;case Dc:case"svg":return[_u(l),n];case Re:return Dd(l.children);default:return[l,n]}return[_u(l),n]}return[null,0]}function _u(e){const t=ue("only-child");return U("span",{class:t.e("content")},[e])}const w0=x({name:"ElPopperTrigger",inheritAttrs:!1}),k0=x({...w0,props:Bd,setup(e,{expose:t}){const n=e,{role:l,triggerRef:o}=ke(li,void 0);b0(o);const s=b(()=>i.value?n.id:void 0),r=b(()=>{if(l&&l.value==="tooltip")return n.open&&n.id?n.id:void 0}),i=b(()=>{if(l&&l.value!=="tooltip")return l.value}),u=b(()=>i.value?`${n.open}`:void 0);let c;const f=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return Ze(()=>{re(()=>n.virtualRef,v=>{v&&(o.value=Ma(v))},{immediate:!0}),re(o,(v,m)=>{c?.(),c=void 0,Rn(v)&&(f.forEach(d=>{var h;const p=n[d];p&&(v.addEventListener(d.slice(2).toLowerCase(),p,["onFocus","onBlur"].includes(d)),(h=m?.removeEventListener)==null||h.call(m,d.slice(2).toLowerCase(),p,["onFocus","onBlur"].includes(d)))}),Za(v)&&(c=re([s,r,i,u],d=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((h,p)=>{Ut(d[p])?v.removeAttribute(h):v.setAttribute(h,d[p])})},{immediate:!0}))),Rn(m)&&Za(m)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(d=>m.removeAttribute(d))},{immediate:!0})}),_t(()=>{if(c?.(),c=void 0,o.value&&Rn(o.value)){const v=o.value;f.forEach(m=>{const d=n[m];d&&v.removeEventListener(m.slice(2).toLowerCase(),d,["onFocus","onBlur"].includes(m))}),o.value=void 0}}),t({triggerRef:o}),(v,m)=>v.virtualTriggering?ee("v-if",!0):(S(),le(a(Vd),qe({key:0},v.$attrs,{"aria-controls":a(s),"aria-describedby":a(r),"aria-expanded":a(u),"aria-haspopup":a(i)}),{default:X(()=>[Z(v.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var S0=ve(k0,[["__file","trigger.vue"]]);const xs="focus-trap.focus-after-trapped",zs="focus-trap.focus-after-released",E0="focus-trap.focusout-prevented",Tu={cancelable:!0,bubbles:!1},_0={cancelable:!0,bubbles:!1},$u="focusAfterTrapped",Nu="focusAfterReleased",ai=Symbol("elFocusTrap"),oi=I(),Es=I(0),si=I(0);let Mo=0;const Ad=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const o=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||o?NodeFilter.FILTER_SKIP:l.tabIndex>=0||l===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},Iu=(e,t)=>{for(const n of e)if(!T0(n,t))return n},T0=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},$0=e=>{const t=Ad(e),n=Iu(t,e),l=Iu(t.reverse(),e);return[n,l]},N0=e=>e instanceof HTMLInputElement&&"select"in e,Cl=(e,t)=>{if(e){const n=document.activeElement;go(e,{preventScroll:!0}),si.value=window.performance.now(),e!==n&&N0(e)&&t&&e.select()}};function Mu(e,t){const n=[...e],l=e.indexOf(t);return l!==-1&&n.splice(l,1),n}const I0=()=>{let e=[];return{push:l=>{const o=e[0];o&&l!==o&&o.pause(),e=Mu(e,l),e.unshift(l)},remove:l=>{var o,s;e=Mu(e,l),(s=(o=e[0])==null?void 0:o.resume)==null||s.call(o)}}},M0=(e,t=!1)=>{const n=document.activeElement;for(const l of e)if(Cl(l,t),document.activeElement!==n)return},Pu=I0(),P0=()=>Es.value>si.value,Po=()=>{oi.value="pointer",Es.value=window.performance.now()},Ou=()=>{oi.value="keyboard",Es.value=window.performance.now()},O0=()=>(Ze(()=>{Mo===0&&(document.addEventListener("mousedown",Po),document.addEventListener("touchstart",Po),document.addEventListener("keydown",Ou)),Mo++}),_t(()=>{Mo--,Mo<=0&&(document.removeEventListener("mousedown",Po),document.removeEventListener("touchstart",Po),document.removeEventListener("keydown",Ou))}),{focusReason:oi,lastUserFocusTimestamp:Es,lastAutomatedFocusTimestamp:si}),Oo=e=>new CustomEvent(E0,{..._0,detail:e}),we={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"};let fa=[];const Ru=e=>{e.code===we.esc&&fa.forEach(t=>t(e))},R0=e=>{Ze(()=>{fa.length===0&&document.addEventListener("keydown",Ru),Ct&&fa.push(e)}),_t(()=>{fa=fa.filter(t=>t!==e),fa.length===0&&Ct&&document.removeEventListener("keydown",Ru)})},B0=x({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[$u,Nu,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=I();let l,o;const{focusReason:s}=O0();R0(h=>{e.trapped&&!r.paused&&t("release-requested",h)});const r={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},i=h=>{if(!e.loop&&!e.trapped||r.paused)return;const{code:p,altKey:g,ctrlKey:y,metaKey:k,currentTarget:C,shiftKey:w}=h,{loop:_}=e,E=p===we.tab&&!g&&!y&&!k,$=document.activeElement;if(E&&$){const O=C,[M,N]=$0(O);if(M&&N){if(!w&&$===N){const B=Oo({focusReason:s.value});t("focusout-prevented",B),B.defaultPrevented||(h.preventDefault(),_&&Cl(M,!0))}else if(w&&[M,O].includes($)){const B=Oo({focusReason:s.value});t("focusout-prevented",B),B.defaultPrevented||(h.preventDefault(),_&&Cl(N,!0))}}else if($===O){const B=Oo({focusReason:s.value});t("focusout-prevented",B),B.defaultPrevented||h.preventDefault()}}};rt(ai,{focusTrapRef:n,onKeydown:i}),re(()=>e.focusTrapEl,h=>{h&&(n.value=h)},{immediate:!0}),re([n],([h],[p])=>{h&&(h.addEventListener("keydown",i),h.addEventListener("focusin",f),h.addEventListener("focusout",v)),p&&(p.removeEventListener("keydown",i),p.removeEventListener("focusin",f),p.removeEventListener("focusout",v))});const u=h=>{t($u,h)},c=h=>t(Nu,h),f=h=>{const p=a(n);if(!p)return;const g=h.target,y=h.relatedTarget,k=g&&p.contains(g);e.trapped||y&&p.contains(y)||(l=y),k&&t("focusin",h),!r.paused&&e.trapped&&(k?o=g:Cl(o,!0))},v=h=>{const p=a(n);if(!(r.paused||!p))if(e.trapped){const g=h.relatedTarget;!Ut(g)&&!p.contains(g)&&setTimeout(()=>{if(!r.paused&&e.trapped){const y=Oo({focusReason:s.value});t("focusout-prevented",y),y.defaultPrevented||Cl(o,!0)}},0)}else{const g=h.target;g&&p.contains(g)||t("focusout",h)}};async function m(){await Te();const h=a(n);if(h){Pu.push(r);const p=h.contains(document.activeElement)?l:document.activeElement;if(l=p,!h.contains(p)){const y=new Event(xs,Tu);h.addEventListener(xs,u),h.dispatchEvent(y),y.defaultPrevented||Te(()=>{let k=e.focusStartEl;De(k)||(Cl(k),document.activeElement!==k&&(k="first")),k==="first"&&M0(Ad(h),!0),(document.activeElement===p||k==="container")&&Cl(h)})}}}function d(){const h=a(n);if(h){h.removeEventListener(xs,u);const p=new CustomEvent(zs,{...Tu,detail:{focusReason:s.value}});h.addEventListener(zs,c),h.dispatchEvent(p),!p.defaultPrevented&&(s.value=="keyboard"||!P0()||h.contains(document.activeElement))&&Cl(l??document.body),h.removeEventListener(zs,c),Pu.remove(r),l=null,o=null}}return Ze(()=>{e.trapped&&m(),re(()=>e.trapped,h=>{h?m():d()})}),_t(()=>{e.trapped&&d(),n.value&&(n.value.removeEventListener("keydown",i),n.value.removeEventListener("focusin",f),n.value.removeEventListener("focusout",v),n.value=void 0)}),{onKeydown:i}}});function L0(e,t,n,l,o,s){return Z(e.$slots,"default",{handleKeydown:e.onKeydown})}var na=ve(B0,[["render",L0],["__file","focus-trap.vue"]]);const Fd=fe({arrowOffset:{type:Number,default:5}}),V0=["fixed","absolute"],D0=fe({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:j(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Ql,default:"bottom"},popperOptions:{type:j(Object),default:()=>({})},strategy:{type:String,values:V0,default:"absolute"}}),xd=fe({...D0,...Fd,id:String,style:{type:j([String,Array,Object])},className:{type:j([String,Array,Object])},effect:{type:j(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:j([String,Array,Object])},popperStyle:{type:j([String,Array,Object])},referenceEl:{type:j(Object)},triggerTargetEl:{type:j(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...vn(["ariaLabel"])}),A0={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},F0=(e,t)=>{const n=I(!1),l=I();return{focusStartRef:l,trapped:n,onFocusAfterReleased:c=>{var f;((f=c.detail)==null?void 0:f.focusReason)!=="pointer"&&(l.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:c=>{e.visible&&!n.value&&(c.target&&(l.value=c.target),n.value=!0)},onFocusoutPrevented:c=>{e.trapping||(c.detail.focusReason==="pointer"&&c.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}},x0=(e,t=[])=>{const{placement:n,strategy:l,popperOptions:o}=e,s={placement:n,strategy:l,...o,modifiers:[...H0(e),...t]};return K0(s,o?.modifiers),s},z0=e=>{if(Ct)return Ma(e)};function H0(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:l}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:0,bottom:0,left:0,right:0}}},{name:"flip",options:{padding:5,fallbackPlacements:l}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function K0(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const W0=(e,t,n={})=>{const l={name:"updateState",enabled:!0,phase:"write",fn:({state:u})=>{const c=j0(u);Object.assign(r.value,c)},requires:["computeStyles"]},o=b(()=>{const{onFirstUpdate:u,placement:c,strategy:f,modifiers:v}=a(n);return{onFirstUpdate:u,placement:c||"bottom",strategy:f||"absolute",modifiers:[...v||[],l,{name:"applyStyles",enabled:!1}]}}),s=Bt(),r=I({styles:{popper:{position:a(o).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),i=()=>{s.value&&(s.value.destroy(),s.value=void 0)};return re(o,u=>{const c=a(s);c&&c.setOptions(u)},{deep:!0}),re([e,t],([u,c])=>{i(),!(!u||!c)&&(s.value=vh(u,c,a(o)))}),_t(()=>{i()}),{state:b(()=>{var u;return{...((u=a(s))==null?void 0:u.state)||{}}}),styles:b(()=>a(r).styles),attributes:b(()=>a(r).attributes),update:()=>{var u;return(u=a(s))==null?void 0:u.update()},forceUpdate:()=>{var u;return(u=a(s))==null?void 0:u.forceUpdate()},instanceRef:b(()=>a(s))}};function j0(e){const t=Object.keys(e.elements),n=Ga(t.map(o=>[o,e.styles[o]||{}])),l=Ga(t.map(o=>[o,e.attributes[o]]));return{styles:n,attributes:l}}const Y0=0,U0=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:l,role:o}=ke(li,void 0),s=I(),r=b(()=>e.arrowOffset),i=b(()=>({name:"eventListeners",enabled:!!e.visible})),u=b(()=>{var y;const k=a(s),C=(y=a(r))!=null?y:Y0;return{name:"arrow",enabled:!ph(k),options:{element:k,padding:C}}}),c=b(()=>({onFirstUpdate:()=>{h()},...x0(e,[a(u),a(i)])})),f=b(()=>z0(e.referenceEl)||a(l)),{attributes:v,state:m,styles:d,update:h,forceUpdate:p,instanceRef:g}=W0(f,n,c);return re(g,y=>t.value=y,{flush:"sync"}),Ze(()=>{re(()=>{var y,k;return(k=(y=a(f))==null?void 0:y.getBoundingClientRect)==null?void 0:k.call(y)},()=>{h()})}),{attributes:v,arrowRef:s,contentRef:n,instanceRef:g,state:m,styles:d,role:o,forceUpdate:p,update:h}},q0=(e,{attributes:t,styles:n,role:l})=>{const{nextZIndex:o}=Pa(),s=ue("popper"),r=b(()=>a(t).popper),i=I(Me(e.zIndex)?e.zIndex:o()),u=b(()=>[s.b(),s.is("pure",e.pure),s.is(e.effect),e.popperClass]),c=b(()=>[{zIndex:a(i)},a(n).popper,e.popperStyle||{}]),f=b(()=>l.value==="dialog"?"false":void 0),v=b(()=>a(n).arrow||{});return{ariaModal:f,arrowStyle:v,contentAttrs:r,contentClass:u,contentStyle:c,contentZIndex:i,updateZIndex:()=>{i.value=Me(e.zIndex)?e.zIndex:o()}}},G0=x({name:"ElPopperContent"}),X0=x({...G0,props:xd,emits:A0,setup(e,{expose:t,emit:n}){const l=e,{focusStartRef:o,trapped:s,onFocusAfterReleased:r,onFocusAfterTrapped:i,onFocusInTrap:u,onFocusoutPrevented:c,onReleaseRequested:f}=F0(l,n),{attributes:v,arrowRef:m,contentRef:d,styles:h,instanceRef:p,role:g,update:y}=U0(l),{ariaModal:k,arrowStyle:C,contentAttrs:w,contentClass:_,contentStyle:E,updateZIndex:$}=q0(l,{styles:h,attributes:v,role:g}),O=ke(al,void 0);rt(Pd,{arrowStyle:C,arrowRef:m}),O&&rt(al,{...O,addInputId:Vt,removeInputId:Vt});let M;const N=(B=!0)=>{y(),B&&$()},P=()=>{N(!1),l.visible&&l.focusOnShow?s.value=!0:l.visible===!1&&(s.value=!1)};return Ze(()=>{re(()=>l.triggerTargetEl,(B,q)=>{M?.(),M=void 0;const W=a(B||d.value),te=a(q||d.value);Rn(W)&&(M=re([g,()=>l.ariaLabel,k,()=>l.id],V=>{["role","aria-label","aria-modal","id"].forEach((D,R)=>{Ut(V[R])?W.removeAttribute(D):W.setAttribute(D,V[R])})},{immediate:!0})),te!==W&&Rn(te)&&["role","aria-label","aria-modal","id"].forEach(V=>{te.removeAttribute(V)})},{immediate:!0}),re(()=>l.visible,P,{immediate:!0})}),_t(()=>{M?.(),M=void 0}),t({popperContentRef:d,popperInstanceRef:p,updatePopper:N,contentStyle:E}),(B,q)=>(S(),L("div",qe({ref_key:"contentRef",ref:d},a(w),{style:a(E),class:a(_),tabindex:"-1",onMouseenter:W=>B.$emit("mouseenter",W),onMouseleave:W=>B.$emit("mouseleave",W)}),[U(a(na),{trapped:a(s),"trap-on-focus-in":!0,"focus-trap-el":a(d),"focus-start-el":a(o),onFocusAfterTrapped:a(i),onFocusAfterReleased:a(r),onFocusin:a(u),onFocusoutPrevented:a(c),onReleaseRequested:a(f)},{default:X(()=>[Z(B.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var Z0=ve(X0,[["__file","content.vue"]]);const zd=Ke(p0),ri=Symbol("elTooltip"),_s=fe({to:{type:j([String,Object]),required:!0},disabled:Boolean}),Lt=fe({...bd,...xd,appendTo:{type:_s.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:j(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...vn(["ariaLabel"])}),$l=fe({...Bd,disabled:Boolean,trigger:{type:j([String,Array]),default:"hover"},triggerKeys:{type:j(Array),default:()=>[we.enter,we.numpadEnter,we.space]},focusOnTarget:Boolean}),J0=Xn({type:j(Boolean),default:null}),Q0=Xn({type:j(Function)}),eb=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,l=[t],o={[e]:J0,[n]:Q0};return{useModelToggle:({indicator:r,toggleReason:i,shouldHideWhenRouteChanges:u,shouldProceed:c,onShow:f,onHide:v})=>{const m=tt(),{emit:d}=m,h=m.props,p=b(()=>Je(h[n])),g=b(()=>h[e]===null),y=$=>{r.value!==!0&&(r.value=!0,i&&(i.value=$),Je(f)&&f($))},k=$=>{r.value!==!1&&(r.value=!1,i&&(i.value=$),Je(v)&&v($))},C=$=>{if(h.disabled===!0||Je(c)&&!c())return;const O=p.value&&Ct;O&&d(t,!0),(g.value||!O)&&y($)},w=$=>{if(h.disabled===!0||!Ct)return;const O=p.value&&Ct;O&&d(t,!1),(g.value||!O)&&k($)},_=$=>{Tt($)&&(h.disabled&&$?p.value&&d(t,!1):r.value!==$&&($?y():k()))},E=()=>{r.value?w():C()};return re(()=>h[e],_),u&&m.appContext.config.globalProperties.$route!==void 0&&re(()=>({...m.proxy.$route}),()=>{u.value&&r.value&&w()}),Ze(()=>{_(h[e])}),{hide:w,show:C,toggle:E,hasUpdateHandler:p}},useModelToggleProps:o,useModelToggleEmits:l}},{useModelToggleProps:tb,useModelToggleEmits:nb,useModelToggle:lb}=eb("visible"),ab=fe({...Rd,...tb,...Lt,...$l,...Fd,showArrow:{type:Boolean,default:!0}}),ob=[...nb,"before-show","before-hide","show","hide","open","close"],sb=(e,t)=>Se(e)?e.includes(t):e===t,ra=(e,t,n)=>l=>{sb(a(e),t)&&n(l)},jt=(e,t,{checkForDefaultPrevented:n=!0}={})=>o=>{const s=e?.(o);if(n===!1||!s)return t?.(o)},Bu=e=>t=>t.pointerType==="mouse"?e(t):void 0,rb=x({name:"ElTooltipTrigger"}),ib=x({...rb,props:$l,setup(e,{expose:t}){const n=e,l=ue("tooltip"),{controlled:o,id:s,open:r,onOpen:i,onClose:u,onToggle:c}=ke(ri,void 0),f=I(null),v=()=>{if(a(o)||n.disabled)return!0},m=wt(n,"trigger"),d=jt(v,ra(m,"hover",w=>{i(w),n.focusOnTarget&&w.target&&Te(()=>{go(w.target,{preventScroll:!0})})})),h=jt(v,ra(m,"hover",u)),p=jt(v,ra(m,"click",w=>{w.button===0&&c(w)})),g=jt(v,ra(m,"focus",i)),y=jt(v,ra(m,"focus",u)),k=jt(v,ra(m,"contextmenu",w=>{w.preventDefault(),c(w)})),C=jt(v,w=>{const{code:_}=w;n.triggerKeys.includes(_)&&(w.preventDefault(),c(w))});return t({triggerRef:f}),(w,_)=>(S(),le(a(S0),{id:a(s),"virtual-ref":w.virtualRef,open:a(r),"virtual-triggering":w.virtualTriggering,class:T(a(l).e("trigger")),onBlur:a(y),onClick:a(p),onContextmenu:a(k),onFocus:a(g),onMouseenter:a(d),onMouseleave:a(h),onKeydown:a(C)},{default:X(()=>[Z(w.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var ub=ve(ib,[["__file","trigger.vue"]]);const cb=x({__name:"teleport",props:_s,setup(e){return(t,n)=>t.disabled?Z(t.$slots,"default",{key:0}):(S(),le(nh,{key:1,to:t.to},[Z(t.$slots,"default")],8,["to"]))}});var db=ve(cb,[["__file","teleport.vue"]]);const Ra=Ke(db),Hd=()=>{const e=Ur(),t=ti(),n=b(()=>`${e.value}-popper-container-${t.prefix}`),l=b(()=>`#${n.value}`);return{id:n,selector:l}},fb=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},vb=()=>{const{id:e,selector:t}=Hd();return Kr(()=>{Ct&&(document.body.querySelector(t.value)||fb(e.value))}),{id:e,selector:t}},Lu=e=>[...new Set(e)],Aa=e=>Se(e)?e[0]:e,gn=e=>!e&&e!==0?[]:Se(e)?e:[e],pb=x({name:"ElTooltipContent",inheritAttrs:!1}),hb=x({...pb,props:Lt,setup(e,{expose:t}){const n=e,{selector:l}=Hd(),o=ue("tooltip"),s=I(),r=Xo(()=>{var R;return(R=s.value)==null?void 0:R.popperContentRef});let i;const{controlled:u,id:c,open:f,trigger:v,onClose:m,onOpen:d,onShow:h,onHide:p,onBeforeShow:g,onBeforeHide:y}=ke(ri,void 0),k=b(()=>n.transition||`${o.namespace.value}-fade-in-linear`),C=b(()=>n.persistent);_t(()=>{i?.()});const w=b(()=>a(C)?!0:a(f)),_=b(()=>n.disabled?!1:a(f)),E=b(()=>n.appendTo||l.value),$=b(()=>{var R;return(R=n.style)!=null?R:{}}),O=I(!0),M=()=>{p(),D()&&go(document.body,{preventScroll:!0}),O.value=!0},N=()=>{if(a(u))return!0},P=jt(N,()=>{n.enterable&&a(v)==="hover"&&d()}),B=jt(N,()=>{a(v)==="hover"&&m()}),q=()=>{var R,A;(A=(R=s.value)==null?void 0:R.updatePopper)==null||A.call(R),g?.()},W=()=>{y?.()},te=()=>{h()},V=()=>{n.virtualTriggering||m()},D=R=>{var A;const z=(A=s.value)==null?void 0:A.popperContentRef,H=R?.relatedTarget||document.activeElement;return z?.contains(H)};return re(()=>a(f),R=>{R?(O.value=!1,i=jr(r,()=>{if(a(u))return;gn(a(v)).every(z=>z!=="hover"&&z!=="focus")&&m()})):i?.()},{flush:"post"}),re(()=>n.content,()=>{var R,A;(A=(R=s.value)==null?void 0:R.updatePopper)==null||A.call(R)}),t({contentRef:s,isFocusInsideContent:D}),(R,A)=>(S(),le(a(Ra),{disabled:!R.teleported,to:a(E)},{default:X(()=>[a(w)||!O.value?(S(),le(rn,{key:0,name:a(k),appear:!a(C),onAfterLeave:M,onBeforeEnter:q,onAfterEnter:te,onBeforeLeave:W,persisted:""},{default:X(()=>[Ye(U(a(Z0),qe({id:a(c),ref_key:"contentRef",ref:s},R.$attrs,{"aria-label":R.ariaLabel,"aria-hidden":O.value,"boundaries-padding":R.boundariesPadding,"fallback-placements":R.fallbackPlacements,"gpu-acceleration":R.gpuAcceleration,offset:R.offset,placement:R.placement,"popper-options":R.popperOptions,"arrow-offset":R.arrowOffset,strategy:R.strategy,effect:R.effect,enterable:R.enterable,pure:R.pure,"popper-class":R.popperClass,"popper-style":[R.popperStyle,a($)],"reference-el":R.referenceEl,"trigger-target-el":R.triggerTargetEl,visible:a(_),"z-index":R.zIndex,onMouseenter:a(P),onMouseleave:a(B),onBlur:V,onClose:a(m)}),{default:X(()=>[Z(R.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"]),[[bt,a(_)]])]),_:3},8,["name","appear"])):ee("v-if",!0)]),_:3},8,["disabled","to"]))}});var mb=ve(hb,[["__file","content.vue"]]);const gb=x({name:"ElTooltip"}),bb=x({...gb,props:ab,emits:ob,setup(e,{expose:t,emit:n}){const l=e;vb();const o=ue("tooltip"),s=un(),r=I(),i=I(),u=()=>{var C;const w=a(r);w&&((C=w.popperInstanceRef)==null||C.update())},c=I(!1),f=I(),{show:v,hide:m,hasUpdateHandler:d}=lb({indicator:c,toggleReason:f}),{onOpen:h,onClose:p}=yd({showAfter:wt(l,"showAfter"),hideAfter:wt(l,"hideAfter"),autoClose:wt(l,"autoClose"),open:v,close:m}),g=b(()=>Tt(l.visible)&&!d.value),y=b(()=>[o.b(),l.popperClass]);rt(ri,{controlled:g,id:s,open:Ac(c),trigger:wt(l,"trigger"),onOpen:h,onClose:p,onToggle:C=>{a(c)?p(C):h(C)},onShow:()=>{n("show",f.value)},onHide:()=>{n("hide",f.value)},onBeforeShow:()=>{n("before-show",f.value)},onBeforeHide:()=>{n("before-hide",f.value)},updatePopper:u}),re(()=>l.disabled,C=>{C&&c.value&&(c.value=!1)});const k=C=>{var w;return(w=i.value)==null?void 0:w.isFocusInsideContent(C)};return lh(()=>c.value&&m()),t({popperRef:r,contentRef:i,isFocusInsideContent:k,updatePopper:u,onOpen:h,onClose:p,hide:m}),(C,w)=>(S(),le(a(zd),{ref_key:"popperRef",ref:r,role:C.role},{default:X(()=>[U(ub,{disabled:C.disabled,trigger:C.trigger,"trigger-keys":C.triggerKeys,"virtual-ref":C.virtualRef,"virtual-triggering":C.virtualTriggering,"focus-on-target":C.focusOnTarget},{default:X(()=>[C.$slots.default?Z(C.$slots,"default",{key:0}):ee("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering","focus-on-target"]),U(mb,{ref_key:"contentRef",ref:i,"aria-label":C.ariaLabel,"boundaries-padding":C.boundariesPadding,content:C.content,disabled:C.disabled,effect:C.effect,enterable:C.enterable,"fallback-placements":C.fallbackPlacements,"hide-after":C.hideAfter,"gpu-acceleration":C.gpuAcceleration,offset:C.offset,persistent:C.persistent,"popper-class":a(y),"popper-style":C.popperStyle,placement:C.placement,"popper-options":C.popperOptions,"arrow-offset":C.arrowOffset,pure:C.pure,"raw-content":C.rawContent,"reference-el":C.referenceEl,"trigger-target-el":C.triggerTargetEl,"show-after":C.showAfter,strategy:C.strategy,teleported:C.teleported,transition:C.transition,"virtual-triggering":C.virtualTriggering,"z-index":C.zIndex,"append-to":C.appendTo},{default:X(()=>[Z(C.$slots,"content",{},()=>[C.rawContent?(S(),L("span",{key:0,innerHTML:C.content},null,8,["innerHTML"])):(S(),L("span",{key:1},pe(C.content),1))]),C.showArrow?(S(),le(a(g0),{key:0})):ee("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var yb=ve(bb,[["__file","tooltip.vue"]]);const cn=Ke(yb),Cb=fe({...mo,valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:j(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:j([Function,Array]),default:Vt},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:Boolean,hideLoading:Boolean,teleported:Lt.teleported,appendTo:Lt.appendTo,highlightFirstItem:Boolean,fitInputWidth:Boolean}),wb={[Fe]:e=>De(e)||Me(e),[Jt]:e=>De(e)||Me(e),[lt]:e=>De(e)||Me(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>yt(e)},Kd="ElAutocomplete",kb=x({name:Kd,inheritAttrs:!1}),Sb=x({...kb,props:Cb,emits:wb,setup(e,{expose:t,emit:n}){const l=e,o=b(()=>On(l,Object.keys(mo))),s=hl(),r=nn(),i=ue("autocomplete"),u=I(),c=I(),f=I(),v=I();let m=!1,d=!1;const h=I([]),p=I(-1),g=I(""),y=I(!1),k=I(!1),C=I(!1),w=un(),_=b(()=>s.style),E=b(()=>(h.value.length>0||C.value)&&y.value),$=b(()=>!l.hideLoading&&C.value),O=b(()=>u.value?Array.from(u.value.$el.querySelectorAll("input")):[]),M=()=>{E.value&&(g.value=`${u.value.$el.offsetWidth}px`)},N=()=>{p.value=-1},P=async ne=>{if(k.value)return;const J=ie=>{C.value=!1,!k.value&&(Se(ie)?(h.value=ie,p.value=l.highlightFirstItem?0:-1):qt(Kd,"autocomplete suggestions must be an array"))};if(C.value=!0,Se(l.fetchSuggestions))J(l.fetchSuggestions);else{const ie=await l.fetchSuggestions(ne,J);Se(ie)&&J(ie)}},B=Bn(P,l.debounce),q=ne=>{const J=!!ne;if(n(Jt,ne),n(Fe,ne),k.value=!1,y.value||(y.value=J),!l.triggerOnFocus&&!ne){k.value=!0,h.value=[];return}B(ne)},W=ne=>{var J;r.value||(((J=ne.target)==null?void 0:J.tagName)!=="INPUT"||O.value.includes(document.activeElement))&&(y.value=!0)},te=ne=>{n(lt,ne)},V=ne=>{var J;if(d)d=!1;else{y.value=!0,n("focus",ne);const ie=(J=l.modelValue)!=null?J:"";l.triggerOnFocus&&!m&&B(String(ie))}},D=ne=>{setTimeout(()=>{var J;if((J=f.value)!=null&&J.isFocusInsideContent()){d=!0;return}y.value&&H(),n("blur",ne)})},R=()=>{y.value=!1,n(Fe,""),n("clear")},A=async()=>{var ne;(ne=u.value)!=null&&ne.isComposing||(E.value&&p.value>=0&&p.value{E.value&&(ne.preventDefault(),ne.stopPropagation(),H())},H=()=>{y.value=!1},K=()=>{var ne;(ne=u.value)==null||ne.focus()},G=()=>{var ne;(ne=u.value)==null||ne.blur()},Q=async ne=>{n(Jt,ne[l.valueKey]),n(Fe,ne[l.valueKey]),n("select",ne),h.value=[],p.value=-1},ae=ne=>{var J,ie;if(!E.value||C.value)return;if(ne<0){p.value=-1;return}ne>=h.value.length&&(ne=h.value.length-1);const Ee=c.value.querySelector(`.${i.be("suggestion","wrap")}`),he=Ee.querySelectorAll(`.${i.be("suggestion","list")} li`)[ne],Oe=Ee.scrollTop,{offsetTop:Ae,scrollHeight:Ce}=he;Ae+Ce>Oe+Ee.clientHeight&&(Ee.scrollTop+=Ce),Ae{var ne;(ne=f.value)!=null&&ne.isFocusInsideContent()||E.value&&H()});return _t(()=>{se?.()}),Ze(()=>{var ne;const J=(ne=u.value)==null?void 0:ne.ref;J&&([{key:"role",value:"textbox"},{key:"aria-autocomplete",value:"list"},{key:"aria-controls",value:"id"},{key:"aria-activedescendant",value:`${w.value}-item-${p.value}`}].forEach(({key:ie,value:Ee})=>J.setAttribute(ie,Ee)),m=J.hasAttribute("readonly"))}),t({highlightedIndex:p,activated:y,loading:C,inputRef:u,popperRef:f,suggestions:h,handleSelect:Q,handleKeyEnter:A,focus:K,blur:G,close:H,highlight:ae,getData:P}),(ne,J)=>(S(),le(a(cn),{ref_key:"popperRef",ref:f,visible:a(E),placement:ne.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[a(i).e("popper"),ne.popperClass],teleported:ne.teleported,"append-to":ne.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${a(i).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:M,onHide:N},{content:X(()=>[F("div",{ref_key:"regionRef",ref:c,class:T([a(i).b("suggestion"),a(i).is("loading",a($))]),style:Pe({[ne.fitInputWidth?"width":"minWidth"]:g.value,outline:"none"}),role:"region"},[ne.$slots.header?(S(),L("div",{key:0,class:T(a(i).be("suggestion","header")),onClick:Ve(()=>{},["stop"])},[Z(ne.$slots,"header")],10,["onClick"])):ee("v-if",!0),U(a(qn),{id:a(w),tag:"ul","wrap-class":a(i).be("suggestion","wrap"),"view-class":a(i).be("suggestion","list"),role:"listbox"},{default:X(()=>[a($)?(S(),L("li",{key:0},[Z(ne.$slots,"loading",{},()=>[U(a($e),{class:T(a(i).is("loading"))},{default:X(()=>[U(a(ll))]),_:1},8,["class"])])])):(S(!0),L(Re,{key:1},st(h.value,(ie,Ee)=>(S(),L("li",{id:`${a(w)}-item-${Ee}`,key:Ee,class:T({highlighted:p.value===Ee}),role:"option","aria-selected":p.value===Ee,onClick:oe=>Q(ie)},[Z(ne.$slots,"default",{item:ie},()=>[ut(pe(ie[ne.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"]),ne.$slots.footer?(S(),L("div",{key:1,class:T(a(i).be("suggestion","footer")),onClick:Ve(()=>{},["stop"])},[Z(ne.$slots,"footer")],10,["onClick"])):ee("v-if",!0)],6)]),default:X(()=>[F("div",{ref_key:"listboxRef",ref:v,class:T([a(i).b(),ne.$attrs.class]),style:Pe(a(_)),role:"combobox","aria-haspopup":"listbox","aria-expanded":a(E),"aria-owns":a(w)},[U(a(bn),qe({ref_key:"inputRef",ref:u},qe(a(o),ne.$attrs),{"model-value":ne.modelValue,disabled:a(r),onInput:q,onChange:te,onFocus:V,onBlur:D,onClear:R,onKeydown:[It(Ve(ie=>ae(p.value-1),["prevent"]),["up"]),It(Ve(ie=>ae(p.value+1),["prevent"]),["down"]),It(A,["enter"]),It(H,["tab"]),It(z,["esc"])],onMousedown:W}),Mn({_:2},[ne.$slots.prepend?{name:"prepend",fn:X(()=>[Z(ne.$slots,"prepend")])}:void 0,ne.$slots.append?{name:"append",fn:X(()=>[Z(ne.$slots,"append")])}:void 0,ne.$slots.prefix?{name:"prefix",fn:X(()=>[Z(ne.$slots,"prefix")])}:void 0,ne.$slots.suffix?{name:"suffix",fn:X(()=>[Z(ne.$slots,"suffix")])}:void 0]),1040,["model-value","disabled","onKeydown"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","teleported","append-to","transition"]))}});var Eb=ve(Sb,[["__file","autocomplete.vue"]]);const _b=Ke(Eb),Tb=fe({size:{type:[Number,String],values:ol,default:"",validator:e=>Me(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:St},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:j(String),default:"cover"}}),$b={error:e=>e instanceof Event},Nb=x({name:"ElAvatar"}),Ib=x({...Nb,props:Tb,emits:$b,setup(e,{emit:t}){const n=e,l=ue("avatar"),o=I(!1),s=b(()=>{const{size:c,icon:f,shape:v}=n,m=[l.b()];return De(c)&&m.push(l.m(c)),f&&m.push(l.m("icon")),v&&m.push(l.m(v)),m}),r=b(()=>{const{size:c}=n;return Me(c)?l.cssVarBlock({size:Wt(c)||""}):void 0}),i=b(()=>({objectFit:n.fit}));re(()=>n.src,()=>o.value=!1);function u(c){o.value=!0,t("error",c)}return(c,f)=>(S(),L("span",{class:T(a(s)),style:Pe(a(r))},[(c.src||c.srcSet)&&!o.value?(S(),L("img",{key:0,src:c.src,alt:c.alt,srcset:c.srcSet,style:Pe(a(i)),onError:u},null,44,["src","alt","srcset"])):c.icon?(S(),le(a($e),{key:1},{default:X(()=>[(S(),le(Xe(c.icon)))]),_:1})):Z(c.$slots,"default",{key:2})],6))}});var Mb=ve(Ib,[["__file","avatar.vue"]]);const Pb=Ke(Mb),Ob={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},Rb={click:e=>e instanceof MouseEvent},Bb=(e,t,n)=>{const l=Bt(),o=Bt(),s=I(!1),r=()=>{l.value&&(s.value=l.value.scrollTop>=e.visibilityHeight)},i=c=>{var f;(f=l.value)==null||f.scrollTo({top:0,behavior:"smooth"}),t("click",c)},u=Wc(r,300,!0);return Ft(o,"scroll",u),Ze(()=>{var c;o.value=document,l.value=document.documentElement,e.target&&(l.value=(c=document.querySelector(e.target))!=null?c:void 0,l.value||qt(n,`target does not exist: ${e.target}`),o.value=l.value),r()}),{visible:s,handleClick:i}},Wd="ElBacktop",Lb=x({name:Wd}),Vb=x({...Lb,props:Ob,emits:Rb,setup(e,{emit:t}){const n=e,l=ue("backtop"),{handleClick:o,visible:s}=Bb(n,t,Wd),r=b(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(i,u)=>(S(),le(rn,{name:`${a(l).namespace.value}-fade-in`},{default:X(()=>[a(s)?(S(),L("div",{key:0,style:Pe(a(r)),class:T(a(l).b()),onClick:Ve(a(o),["stop"])},[Z(i.$slots,"default",{},()=>[U(a($e),{class:T(a(l).e("icon"))},{default:X(()=>[U(a(km))]),_:1},8,["class"])])],14,["onClick"])):ee("v-if",!0)]),_:3},8,["name"]))}});var Db=ve(Vb,[["__file","backtop.vue"]]);const Ab=Ke(Db),Fb=fe({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:j([String,Object,Array])},offset:{type:j(Array),default:[0,0]},badgeClass:{type:String}}),xb=x({name:"ElBadge"}),zb=x({...xb,props:Fb,setup(e,{expose:t}){const n=e,l=ue("badge"),o=b(()=>n.isDot?"":Me(n.value)&&Me(n.max)?n.max{var r,i,u,c,f;return[{backgroundColor:n.color,marginRight:Wt(-((i=(r=n.offset)==null?void 0:r[0])!=null?i:0)),marginTop:Wt((c=(u=n.offset)==null?void 0:u[1])!=null?c:0)},(f=n.badgeStyle)!=null?f:{}]});return t({content:o}),(r,i)=>(S(),L("div",{class:T(a(l).b())},[Z(r.$slots,"default"),U(rn,{name:`${a(l).namespace.value}-zoom-in-center`,persisted:""},{default:X(()=>[Ye(F("sup",{class:T([a(l).e("content"),a(l).em("content",r.type),a(l).is("fixed",!!r.$slots.default),a(l).is("dot",r.isDot),a(l).is("hide-zero",!r.showZero&&n.value===0),r.badgeClass]),style:Pe(a(s))},[Z(r.$slots,"content",{value:a(o)},()=>[ut(pe(a(o)),1)])],6),[[bt,!r.hidden&&(a(o)||r.isDot||r.$slots.content)]])]),_:3},8,["name"])],2))}});var Hb=ve(zb,[["__file","badge.vue"]]);const jd=Ke(Hb),Yd=Symbol("breadcrumbKey"),Kb=fe({separator:{type:String,default:"/"},separatorIcon:{type:St}}),Wb=x({name:"ElBreadcrumb"}),jb=x({...Wb,props:Kb,setup(e){const t=e,{t:n}=ht(),l=ue("breadcrumb"),o=I();return rt(Yd,t),Ze(()=>{const s=o.value.querySelectorAll(`.${l.e("item")}`);s.length&&s[s.length-1].setAttribute("aria-current","page")}),(s,r)=>(S(),L("div",{ref_key:"breadcrumb",ref:o,class:T(a(l).b()),"aria-label":a(n)("el.breadcrumb.label"),role:"navigation"},[Z(s.$slots,"default")],10,["aria-label"]))}});var Yb=ve(jb,[["__file","breadcrumb.vue"]]);const Ub=fe({to:{type:j([String,Object]),default:""},replace:Boolean}),qb=x({name:"ElBreadcrumbItem"}),Gb=x({...qb,props:Ub,setup(e){const t=e,n=tt(),l=ke(Yd,void 0),o=ue("breadcrumb"),s=n.appContext.config.globalProperties.$router,r=I(),i=()=>{!t.to||!s||(t.replace?s.replace(t.to):s.push(t.to))};return(u,c)=>{var f,v;return S(),L("span",{class:T(a(o).e("item"))},[F("span",{ref_key:"link",ref:r,class:T([a(o).e("inner"),a(o).is("link",!!u.to)]),role:"link",onClick:i},[Z(u.$slots,"default")],2),(f=a(l))!=null&&f.separatorIcon?(S(),le(a($e),{key:0,class:T(a(o).e("separator"))},{default:X(()=>[(S(),le(Xe(a(l).separatorIcon)))]),_:1},8,["class"])):(S(),L("span",{key:1,class:T(a(o).e("separator")),role:"presentation"},pe((v=a(l))==null?void 0:v.separator),3))],2)}}});var Ud=ve(Gb,[["__file","breadcrumb-item.vue"]]);const Xb=Ke(Yb,{BreadcrumbItem:Ud}),Zb=zt(Ud),qd=Symbol("buttonGroupContextKey"),dl=({from:e,replacement:t,scope:n,version:l,ref:o,type:s="API"},r)=>{re(()=>a(r),i=>{},{immediate:!0})},Jb=(e,t)=>{dl({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},b(()=>e.type==="text"));const n=ke(qd,void 0),l=Oa("button"),{form:o}=dn(),s=Xt(b(()=>n?.size)),r=nn(),i=I(),u=Zt(),c=b(()=>{var y;return e.type||n?.type||((y=l.value)==null?void 0:y.type)||""}),f=b(()=>{var y,k,C;return(C=(k=e.autoInsertSpace)!=null?k:(y=l.value)==null?void 0:y.autoInsertSpace)!=null?C:!1}),v=b(()=>{var y,k,C;return(C=(k=e.plain)!=null?k:(y=l.value)==null?void 0:y.plain)!=null?C:!1}),m=b(()=>{var y,k,C;return(C=(k=e.round)!=null?k:(y=l.value)==null?void 0:y.round)!=null?C:!1}),d=b(()=>{var y,k,C;return(C=(k=e.text)!=null?k:(y=l.value)==null?void 0:y.text)!=null?C:!1}),h=b(()=>e.tag==="button"?{ariaDisabled:r.value||e.loading,disabled:r.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),p=b(()=>{var y;const k=(y=u.default)==null?void 0:y.call(u);if(f.value&&k?.length===1){const C=k[0];if(C?.type===Dc){const w=C.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(w.trim())}}return!1});return{_disabled:r,_size:s,_type:c,_ref:i,_props:h,_plain:v,_round:m,_text:d,shouldAddSpace:p,handleClick:y=>{if(r.value||e.loading){y.stopPropagation();return}e.nativeType==="reset"&&o?.resetFields(),t("click",y)}}},rr=["default","primary","success","warning","info","danger","text",""],Qb=["button","submit","reset"],ir=fe({size:Qt,disabled:Boolean,type:{type:String,values:rr,default:""},icon:{type:St},nativeType:{type:String,values:Qb,default:"button"},loading:Boolean,loadingIcon:{type:St,default:()=>ll},plain:{type:Boolean,default:void 0},text:{type:Boolean,default:void 0},link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:j([String,Object]),default:"button"}}),ey={click:e=>e instanceof MouseEvent};function yl(e,t=20){return e.mix("#141414",t).toString()}function ty(e){const t=nn(),n=ue("button");return b(()=>{let l={},o=e.color;if(o){const s=o.match(/var\((.*?)\)/);s&&(o=window.getComputedStyle(window.document.documentElement).getPropertyValue(s[1]));const r=new ha(o),i=e.dark?r.tint(20).toString():yl(r,20);if(e.plain)l=n.cssVarBlock({"bg-color":e.dark?yl(r,90):r.tint(90).toString(),"text-color":o,"border-color":e.dark?yl(r,50):r.tint(50).toString(),"hover-text-color":`var(${n.cssVarName("color-white")})`,"hover-bg-color":o,"hover-border-color":o,"active-bg-color":i,"active-text-color":`var(${n.cssVarName("color-white")})`,"active-border-color":i}),t.value&&(l[n.cssVarBlockName("disabled-bg-color")]=e.dark?yl(r,90):r.tint(90).toString(),l[n.cssVarBlockName("disabled-text-color")]=e.dark?yl(r,50):r.tint(50).toString(),l[n.cssVarBlockName("disabled-border-color")]=e.dark?yl(r,80):r.tint(80).toString());else{const u=e.dark?yl(r,30):r.tint(30).toString(),c=r.isDark()?`var(${n.cssVarName("color-white")})`:`var(${n.cssVarName("color-black")})`;if(l=n.cssVarBlock({"bg-color":o,"text-color":c,"border-color":o,"hover-bg-color":u,"hover-text-color":c,"hover-border-color":u,"active-bg-color":i,"active-border-color":i}),t.value){const f=e.dark?yl(r,50):r.tint(50).toString();l[n.cssVarBlockName("disabled-bg-color")]=f,l[n.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${n.cssVarName("color-white")})`,l[n.cssVarBlockName("disabled-border-color")]=f}}}return l})}const ny=x({name:"ElButton"}),ly=x({...ny,props:ir,emits:ey,setup(e,{expose:t,emit:n}){const l=e,o=ty(l),s=ue("button"),{_ref:r,_size:i,_type:u,_disabled:c,_props:f,_plain:v,_round:m,_text:d,shouldAddSpace:h,handleClick:p}=Jb(l,n),g=b(()=>[s.b(),s.m(u.value),s.m(i.value),s.is("disabled",c.value),s.is("loading",l.loading),s.is("plain",v.value),s.is("round",m.value),s.is("circle",l.circle),s.is("text",d.value),s.is("link",l.link),s.is("has-bg",l.bg)]);return t({ref:r,size:i,type:u,disabled:c,shouldAddSpace:h}),(y,k)=>(S(),le(Xe(y.tag),qe({ref_key:"_ref",ref:r},a(f),{class:a(g),style:a(o),onClick:a(p)}),{default:X(()=>[y.loading?(S(),L(Re,{key:0},[y.$slots.loading?Z(y.$slots,"loading",{key:0}):(S(),le(a($e),{key:1,class:T(a(s).is("loading"))},{default:X(()=>[(S(),le(Xe(y.loadingIcon)))]),_:1},8,["class"]))],64)):y.icon||y.$slots.icon?(S(),le(a($e),{key:1},{default:X(()=>[y.icon?(S(),le(Xe(y.icon),{key:0})):Z(y.$slots,"icon",{key:1})]),_:3})):ee("v-if",!0),y.$slots.default?(S(),L("span",{key:2,class:T({[a(s).em("text","expand")]:a(h)})},[Z(y.$slots,"default")],2)):ee("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var ay=ve(ly,[["__file","button.vue"]]);const oy={size:ir.size,type:ir.type},sy=x({name:"ElButtonGroup"}),ry=x({...sy,props:oy,setup(e){const t=e;rt(qd,kt({size:wt(t,"size"),type:wt(t,"type")}));const n=ue("button");return(l,o)=>(S(),L("div",{class:T(a(n).b("group"))},[Z(l.$slots,"default")],2))}});var Gd=ve(ry,[["__file","button-group.vue"]]);const sn=Ke(ay,{ButtonGroup:Gd}),Xd=zt(Gd),Hs=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),Zd=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),Jd=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),Vu=function(e,t){const n=ka(e),l=ka(t);return n&&l?e.getTime()===t.getTime():!n&&!l?e===t:!1},Qd=function(e,t){const n=Se(e),l=Se(t);return n&&l?e.length!==t.length?!1:e.every((o,s)=>Vu(o,t[s])):!n&&!l?Vu(e,t):!1},Du=function(e,t,n){const l=Pn(t)||t==="x"?We(e).locale(n):We(e,t).locale(n);return l.isValid()?l:void 0},Au=function(e,t,n){return Pn(t)?e:t==="x"?+e:We(e).locale(n).format(t)},Ks=(e,t)=>{var n;const l=[],o=t?.();for(let s=0;sSe(e)?e.map(t=>t.toDate()):e.toDate(),iy=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return Nl(t).map((l,o)=>n-(t-o-1))},uy=e=>{const t=e.daysInMonth();return Nl(t).map((n,l)=>l+1)},cy=e=>Nl(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),dy=fe({selectedDay:{type:j(Object)},range:{type:j(Array)},date:{type:j(Object),required:!0},hideHeader:{type:Boolean}}),fy={pick:e=>yt(e)},vy=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Ws=["sun","mon","tue","wed","thu","fri","sat"],py=(e,t)=>{We.extend(jc);const n=We.localeData().firstDayOfWeek(),{t:l,lang:o}=ht(),s=We().locale(o.value),r=b(()=>!!e.range&&!!e.range.length),i=b(()=>{let m=[];if(r.value){const[d,h]=e.range,p=Nl(h.date()-d.date()+1).map(k=>({text:d.date()+k,type:"current"}));let g=p.length%7;g=g===0?0:7-g;const y=Nl(g).map((k,C)=>({text:C+1,type:"next"}));m=p.concat(y)}else{const d=e.date.startOf("month").day(),h=iy(e.date,(d-n+7)%7).map(k=>({text:k,type:"prev"})),p=uy(e.date).map(k=>({text:k,type:"current"}));m=[...h,...p];const g=7-(m.length%7||7),y=Nl(g).map((k,C)=>({text:C+1,type:"next"}));m=m.concat(y)}return cy(m)}),u=b(()=>{const m=n;return m===0?Ws.map(d=>l(`el.datepicker.weeks.${d}`)):Ws.slice(m).concat(Ws.slice(0,m)).map(d=>l(`el.datepicker.weeks.${d}`))}),c=(m,d)=>{switch(d){case"prev":return e.date.startOf("month").subtract(1,"month").date(m);case"next":return e.date.startOf("month").add(1,"month").date(m);case"current":return e.date.date(m)}};return{now:s,isInRange:r,rows:i,weekDays:u,getFormattedDate:c,handlePickDay:({text:m,type:d})=>{const h=c(m,d);t("pick",h)},getSlotData:({text:m,type:d})=>{const h=c(m,d);return{isSelected:h.isSame(e.selectedDay),type:`${d}-month`,day:h.format("YYYY-MM-DD"),date:h.toDate()}}}},hy=x({name:"DateTable"}),my=x({...hy,props:dy,emits:fy,setup(e,{expose:t,emit:n}){const l=e,{isInRange:o,now:s,rows:r,weekDays:i,getFormattedDate:u,handlePickDay:c,getSlotData:f}=py(l,n),v=ue("calendar-table"),m=ue("calendar-day"),d=({text:h,type:p})=>{const g=[p];if(p==="current"){const y=u(h,p);y.isSame(l.selectedDay,"day")&&g.push(m.is("selected")),y.isSame(s,"day")&&g.push(m.is("today"))}return g};return t({getFormattedDate:u}),(h,p)=>(S(),L("table",{class:T([a(v).b(),a(v).is("range",a(o))]),cellspacing:"0",cellpadding:"0"},[h.hideHeader?ee("v-if",!0):(S(),L("thead",{key:0},[F("tr",null,[(S(!0),L(Re,null,st(a(i),g=>(S(),L("th",{key:g,scope:"col"},pe(g),1))),128))])])),F("tbody",null,[(S(!0),L(Re,null,st(a(r),(g,y)=>(S(),L("tr",{key:y,class:T({[a(v).e("row")]:!0,[a(v).em("row","hide-border")]:y===0&&h.hideHeader})},[(S(!0),L(Re,null,st(g,(k,C)=>(S(),L("td",{key:C,class:T(d(k)),onClick:w=>a(c)(k)},[F("div",{class:T(a(m).b())},[Z(h.$slots,"date-cell",{data:a(f)(k)},()=>[F("span",null,pe(k.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Fu=ve(my,[["__file","date-table.vue"]]);const gy=(e,t)=>{const n=e.endOf("month"),l=t.startOf("month"),s=n.isSame(l,"week")?l.add(1,"week"):l;return[[e,n],[s.startOf("week"),t]]},by=(e,t)=>{const n=e.endOf("month"),l=e.add(1,"month").startOf("month"),o=n.isSame(l,"week")?l.add(1,"week"):l,s=o.endOf("month"),r=t.startOf("month"),i=s.isSame(r,"week")?r.add(1,"week"):r;return[[e,n],[o.startOf("week"),s],[i.startOf("week"),t]]},yy=(e,t,n)=>{const{lang:l}=ht(),o=I(),s=We().locale(l.value),r=b({get(){return e.modelValue?u.value:o.value},set(g){if(!g)return;o.value=g;const y=g.toDate();t(Jt,y),t(Fe,y)}}),i=b(()=>{if(!e.range||!Se(e.range)||e.range.length!==2||e.range.some(C=>!ka(C)))return[];const g=e.range.map(C=>We(C).locale(l.value)),[y,k]=g;return y.isAfter(k)?[]:y.isSame(k,"month")?d(y,k):y.add(1,"month").month()!==k.month()?[]:d(y,k)}),u=b(()=>e.modelValue?We(e.modelValue).locale(l.value):r.value||(i.value.length?i.value[0][0]:s)),c=b(()=>u.value.subtract(1,"month").date(1)),f=b(()=>u.value.add(1,"month").date(1)),v=b(()=>u.value.subtract(1,"year").date(1)),m=b(()=>u.value.add(1,"year").date(1)),d=(g,y)=>{const k=g.startOf("week"),C=y.endOf("week"),w=k.get("month"),_=C.get("month");return w===_?[[k,C]]:(w+1)%12===_?gy(k,C):w+2===_||(w+1)%11===_?by(k,C):[]},h=g=>{r.value=g};return{calculateValidatedDateRange:d,date:u,realSelectedDay:r,pickDay:h,selectDate:g=>{const k={"prev-month":c.value,"next-month":f.value,"prev-year":v.value,"next-year":m.value,today:s}[g];k.isSame(u.value,"day")||h(k)},validatedRange:i}},Cy=e=>Se(e)&&e.length===2&&e.every(t=>ka(t)),wy=fe({modelValue:{type:Date},range:{type:j(Array),validator:Cy}}),ky={[Fe]:e=>ka(e),[Jt]:e=>ka(e)},Sy="ElCalendar",Ey=x({name:Sy}),_y=x({...Ey,props:wy,emits:ky,setup(e,{expose:t,emit:n}){const l=e,o=ue("calendar"),{calculateValidatedDateRange:s,date:r,pickDay:i,realSelectedDay:u,selectDate:c,validatedRange:f}=yy(l,n),{t:v}=ht(),m=b(()=>{const d=`el.datepicker.month${r.value.format("M")}`;return`${r.value.year()} ${v("el.datepicker.year")} ${v(d)}`});return t({selectedDay:u,pickDay:i,selectDate:c,calculateValidatedDateRange:s}),(d,h)=>(S(),L("div",{class:T(a(o).b())},[F("div",{class:T(a(o).e("header"))},[Z(d.$slots,"header",{date:a(m)},()=>[F("div",{class:T(a(o).e("title"))},pe(a(m)),3),a(f).length===0?(S(),L("div",{key:0,class:T(a(o).e("button-group"))},[U(a(Xd),null,{default:X(()=>[U(a(sn),{size:"small",onClick:p=>a(c)("prev-month")},{default:X(()=>[ut(pe(a(v)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),U(a(sn),{size:"small",onClick:p=>a(c)("today")},{default:X(()=>[ut(pe(a(v)("el.datepicker.today")),1)]),_:1},8,["onClick"]),U(a(sn),{size:"small",onClick:p=>a(c)("next-month")},{default:X(()=>[ut(pe(a(v)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):ee("v-if",!0)])],2),a(f).length===0?(S(),L("div",{key:0,class:T(a(o).e("body"))},[U(Fu,{date:a(r),"selected-day":a(u),onPick:a(i)},Mn({_:2},[d.$slots["date-cell"]?{name:"date-cell",fn:X(p=>[Z(d.$slots,"date-cell",Sn(nl(p)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):(S(),L("div",{key:1,class:T(a(o).e("body"))},[(S(!0),L(Re,null,st(a(f),(p,g)=>(S(),le(Fu,{key:g,date:p[0],"selected-day":a(u),range:p,"hide-header":g!==0,onPick:a(i)},Mn({_:2},[d.$slots["date-cell"]?{name:"date-cell",fn:X(y=>[Z(d.$slots,"date-cell",Sn(nl(y)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var Ty=ve(_y,[["__file","calendar.vue"]]);const $y=Ke(Ty),Ny=fe({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:j([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:void 0}}),Iy=x({name:"ElCard"}),My=x({...Iy,props:Ny,setup(e){const t=Oa("card"),n=ue("card");return(l,o)=>{var s;return S(),L("div",{class:T([a(n).b(),a(n).is(`${l.shadow||((s=a(t))==null?void 0:s.shadow)||"always"}-shadow`)])},[l.$slots.header||l.header?(S(),L("div",{key:0,class:T([a(n).e("header"),l.headerClass])},[Z(l.$slots,"header",{},()=>[ut(pe(l.header),1)])],2)):ee("v-if",!0),F("div",{class:T([a(n).e("body"),l.bodyClass]),style:Pe(l.bodyStyle)},[Z(l.$slots,"default")],6),l.$slots.footer||l.footer?(S(),L("div",{key:1,class:T([a(n).e("footer"),l.footerClass])},[Z(l.$slots,"footer",{},()=>[ut(pe(l.footer),1)])],2)):ee("v-if",!0)],2)}}});var Py=ve(My,[["__file","card.vue"]]);const Oy=Ke(Py),Ry=fe({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),By={change:(e,t)=>[e,t].every(Me)},ef=Symbol("carouselContextKey"),ur="ElCarouselItem";var Dn=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Dn||{});function cr(e){return Dt(e)&&e.type===Re}function Ly(e){return Dt(e)&&e.type===Ml}function Vy(e){return Dt(e)&&!cr(e)&&!Ly(e)}const Dy=e=>{if(!Dt(e))return{};const t=e.props||{},n=(Dt(e.type)?e.type.props:void 0)||{},l={};return Object.keys(n).forEach(o=>{on(n[o],"default")&&(l[o]=n[o].default)}),Object.keys(t).forEach(o=>{l[zr(o)]=t[o]}),l},Ay=e=>{if(!Se(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},el=e=>{const t=Se(e)?e:[e],n=[];return t.forEach(l=>{var o;Se(l)?n.push(...el(l)):Dt(l)&&((o=l.component)!=null&&o.subTree)?n.push(l,...el(l.component.subTree)):Dt(l)&&Se(l.children)?n.push(...el(l.children)):Dt(l)&&l.shapeFlag===2?n.push(...el(l.type())):n.push(l)}),n},Fy=(e,t,n)=>el(e.subTree).filter(s=>{var r;return Dt(s)&&((r=s.type)==null?void 0:r.name)===t&&!!s.component}).map(s=>s.component.uid).map(s=>n[s]).filter(s=>!!s),Ts=(e,t)=>{const n=Bt({}),l=Bt([]),o=new WeakMap,s=f=>{n.value[f.uid]=f,Fo(n),Ze(()=>{const v=f.getVnode().el,m=v.parentNode;if(!o.has(m)){o.set(m,[]);const d=m.insertBefore.bind(m);m.insertBefore=(h,p)=>(o.get(m).some(y=>h===y||p===y)&&Fo(n),d(h,p))}o.get(m).push(v)})},r=f=>{delete n.value[f.uid],Fo(n);const v=f.getVnode().el,m=v.parentNode,d=o.get(m),h=d.indexOf(v);d.splice(h,1)},i=()=>{l.value=Fy(e,t,n.value)},u=f=>f.render(),c=x({setup(f,{slots:v}){return()=>(i(),v.default?Le(u,{render:v.default}):null)}});return{children:l,addChild:s,removeChild:r,ChildrenSorter:c}},xu=300,xy=(e,t,n)=>{const{children:l,addChild:o,removeChild:s,ChildrenSorter:r}=Ts(tt(),ur),i=Zt(),u=I(-1),c=I(null),f=I(!1),v=I(),m=I(0),d=I(!0),h=b(()=>e.arrow!=="never"&&!a(y)),p=b(()=>l.value.some(ae=>ae.props.label.toString().length>0)),g=b(()=>e.type==="card"),y=b(()=>e.direction==="vertical"),k=b(()=>e.height!=="auto"?{height:e.height}:{height:`${m.value}px`,overflow:"hidden"}),C=Wl(ae=>{M(ae)},xu,{trailing:!0}),w=Wl(ae=>{D(ae)},xu),_=ae=>d.value?u.value<=1?ae<=1:ae>1:!0;function E(){c.value&&(clearInterval(c.value),c.value=null)}function $(){e.interval<=0||!e.autoplay||c.value||(c.value=setInterval(()=>O(),e.interval))}const O=()=>{u.valueie.props.name===ae);J.length>0&&(ae=l.value.indexOf(J[0]))}if(ae=Number(ae),Number.isNaN(ae)||ae!==Math.floor(ae))return;const se=l.value.length,ne=u.value;ae<0?u.value=e.loop?se-1:0:ae>=se?u.value=e.loop?0:se-1:u.value=ae,ne===u.value&&N(ne),z()}function N(ae){l.value.forEach((se,ne)=>{se.translateItem(ne,u.value,ae)})}function P(ae,se){var ne,J,ie,Ee;const oe=a(l),he=oe.length;if(he===0||!ae.states.inStage)return!1;const Oe=se+1,Ae=se-1,Ce=he-1,at=oe[Ce].states.active,_e=oe[0].states.active,Ne=(J=(ne=oe[Oe])==null?void 0:ne.states)==null?void 0:J.active,He=(Ee=(ie=oe[Ae])==null?void 0:ie.states)==null?void 0:Ee.active;return se===Ce&&_e||Ne?"left":se===0&&at||He?"right":!1}function B(){f.value=!0,e.pauseOnHover&&E()}function q(){f.value=!1,$()}function W(ae){a(y)||l.value.forEach((se,ne)=>{ae===P(se,ne)&&(se.states.hover=!0)})}function te(){a(y)||l.value.forEach(ae=>{ae.states.hover=!1})}function V(ae){u.value=ae}function D(ae){e.trigger==="hover"&&ae!==u.value&&(u.value=ae)}function R(){M(u.value-1)}function A(){M(u.value+1)}function z(){E(),e.pauseOnHover||$()}function H(ae){e.height==="auto"&&(m.value=ae)}function K(){var ae;const se=(ae=i.default)==null?void 0:ae.call(i);if(!se)return null;const J=el(se).filter(ie=>Dt(ie)&&ie.type.name===ur);return J?.length===2&&e.loop&&!g.value?(d.value=!0,J):(d.value=!1,null)}re(()=>u.value,(ae,se)=>{N(se),d.value&&(ae=ae%2,se=se%2),se>-1&&t(lt,ae,se)});const G=b({get:()=>d.value?u.value%2:u.value,set:ae=>u.value=ae});re(()=>e.autoplay,ae=>{ae?$():E()}),re(()=>e.loop,()=>{M(u.value)}),re(()=>e.interval,()=>{z()});const Q=Bt();return Ze(()=>{re(()=>l.value,()=>{l.value.length>0&&M(e.initialIndex)},{immediate:!0}),Q.value=Ht(v.value,()=>{N()}),$()}),_t(()=>{E(),v.value&&Q.value&&Q.value.stop()}),rt(ef,{root:v,isCardType:g,isVertical:y,items:l,loop:e.loop,cardScale:e.cardScale,addItem:o,removeItem:s,setActiveItem:M,setContainerHeight:H}),{root:v,activeIndex:u,exposeActiveIndex:G,arrowDisplay:h,hasLabel:p,hover:f,isCardType:g,items:l,isVertical:y,containerStyle:k,isItemsTwoLength:d,handleButtonEnter:W,handleButtonLeave:te,handleIndicatorClick:V,handleMouseEnter:B,handleMouseLeave:q,setActiveItem:M,prev:R,next:A,PlaceholderItem:K,isTwoLengthShow:_,ItemsSorter:r,throttledArrowClick:C,throttledIndicatorHover:w}},zy="ElCarousel",Hy=x({name:zy}),Ky=x({...Hy,props:Ry,emits:By,setup(e,{expose:t,emit:n}){const l=e,{root:o,activeIndex:s,exposeActiveIndex:r,arrowDisplay:i,hasLabel:u,hover:c,isCardType:f,items:v,isVertical:m,containerStyle:d,handleButtonEnter:h,handleButtonLeave:p,handleIndicatorClick:g,handleMouseEnter:y,handleMouseLeave:k,setActiveItem:C,prev:w,next:_,PlaceholderItem:E,isTwoLengthShow:$,ItemsSorter:O,throttledArrowClick:M,throttledIndicatorHover:N}=xy(l,n),P=ue("carousel"),{t:B}=ht(),q=b(()=>{const D=[P.b(),P.m(l.direction)];return a(f)&&D.push(P.m("card")),D}),W=b(()=>{const D=[P.e("indicators"),P.em("indicators",l.direction)];return a(u)&&D.push(P.em("indicators","labels")),l.indicatorPosition==="outside"&&D.push(P.em("indicators","outside")),a(m)&&D.push(P.em("indicators","right")),D});function te(D){if(!l.motionBlur)return;const R=a(m)?`${P.namespace.value}-transitioning-vertical`:`${P.namespace.value}-transitioning`;D.currentTarget.classList.add(R)}function V(D){if(!l.motionBlur)return;const R=a(m)?`${P.namespace.value}-transitioning-vertical`:`${P.namespace.value}-transitioning`;D.currentTarget.classList.remove(R)}return t({activeIndex:r,setActiveItem:C,prev:w,next:_}),(D,R)=>(S(),L("div",{ref_key:"root",ref:o,class:T(a(q)),onMouseenter:Ve(a(y),["stop"]),onMouseleave:Ve(a(k),["stop"])},[a(i)?(S(),le(rn,{key:0,name:"carousel-arrow-left",persisted:""},{default:X(()=>[Ye(F("button",{type:"button",class:T([a(P).e("arrow"),a(P).em("arrow","left")]),"aria-label":a(B)("el.carousel.leftArrow"),onMouseenter:A=>a(h)("left"),onMouseleave:a(p),onClick:Ve(A=>a(M)(a(s)-1),["stop"])},[U(a($e),null,{default:X(()=>[U(a(fl))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[bt,(D.arrow==="always"||a(c))&&(l.loop||a(s)>0)]])]),_:1})):ee("v-if",!0),a(i)?(S(),le(rn,{key:1,name:"carousel-arrow-right",persisted:""},{default:X(()=>[Ye(F("button",{type:"button",class:T([a(P).e("arrow"),a(P).em("arrow","right")]),"aria-label":a(B)("el.carousel.rightArrow"),onMouseenter:A=>a(h)("right"),onMouseleave:a(p),onClick:Ve(A=>a(M)(a(s)+1),["stop"])},[U(a($e),null,{default:X(()=>[U(a(Cn))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[bt,(D.arrow==="always"||a(c))&&(l.loop||a(s)[D.indicatorPosition!=="none"?(S(),L("ul",{key:0,class:T(a(W))},[(S(!0),L(Re,null,st(a(v),(A,z)=>Ye((S(),L("li",{key:z,class:T([a(P).e("indicator"),a(P).em("indicator",D.direction),a(P).is("active",z===a(s))]),onMouseenter:H=>a(N)(z),onClick:Ve(H=>a(g)(z),["stop"])},[F("button",{class:T(a(P).e("button")),"aria-label":a(B)("el.carousel.indicator",{index:z+1})},[a(u)?(S(),L("span",{key:0},pe(A.props.label),1)):ee("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[bt,a($)(z)]])),128))],2)):ee("v-if",!0)]),_:1}),l.motionBlur?(S(),L("svg",{key:2,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[F("defs",null,[F("filter",{id:"elCarouselHorizontal"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),F("filter",{id:"elCarouselVertical"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):ee("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var Wy=ve(Ky,[["__file","carousel.vue"]]);const jy=fe({name:{type:String,default:""},label:{type:[String,Number],default:""}}),Yy=e=>{const t=ke(ef),n=tt(),l=I(),o=I(!1),s=I(0),r=I(1),i=I(!1),u=I(!1),c=I(!1),f=I(!1),{isCardType:v,isVertical:m,cardScale:d}=t;function h(w,_,E){const $=E-1,O=_-1,M=_+1,N=E/2;return _===0&&w===$?-1:_===$&&w===0?E:w=N?E+1:w>M&&w-_>=N?-2:w}function p(w,_){var E,$;const O=a(m)?((E=t.root.value)==null?void 0:E.offsetHeight)||0:(($=t.root.value)==null?void 0:$.offsetWidth)||0;return c.value?O*((2-d)*(w-_)+1)/4:w<_?-(1+d)*O/4:(3+d)*O/4}function g(w,_,E){const $=t.root.value;return $?((E?$.offsetHeight:$.offsetWidth)||0)*(w-_):0}const y=(w,_,E)=>{var $;const O=a(v),M=($=t.items.value.length)!=null?$:Number.NaN,N=w===_;!O&&!dt(E)&&(f.value=N||w===E),!N&&M>2&&t.loop&&(w=h(w,_,M));const P=a(m);i.value=N,O?(c.value=Math.round(Math.abs(w-_))<=1,s.value=p(w,_),r.value=a(i)?1:d):s.value=g(w,_,P),u.value=!0,N&&l.value&&t.setContainerHeight(l.value.offsetHeight)};function k(){if(t&&a(v)){const w=t.items.value.findIndex(({uid:_})=>_===n.uid);t.setActiveItem(w)}}const C={props:e,states:kt({hover:o,translate:s,scale:r,active:i,ready:u,inStage:c,animating:f}),uid:n.uid,getVnode:()=>n.vnode,translateItem:y};return t.addItem(C),_t(()=>{t.removeItem(C)}),{carouselItemRef:l,active:i,animating:f,hover:o,inStage:c,isVertical:m,translate:s,isCardType:v,scale:r,ready:u,handleItemClick:k}},Uy=x({name:ur}),qy=x({...Uy,props:jy,setup(e){const t=e,n=ue("carousel"),{carouselItemRef:l,active:o,animating:s,hover:r,inStage:i,isVertical:u,translate:c,isCardType:f,scale:v,ready:m,handleItemClick:d}=Yy(t),h=b(()=>[n.e("item"),n.is("active",o.value),n.is("in-stage",i.value),n.is("hover",r.value),n.is("animating",s.value),{[n.em("item","card")]:f.value,[n.em("item","card-vertical")]:f.value&&u.value}]),p=b(()=>{const y=`${`translate${a(u)?"Y":"X"}`}(${a(c)}px)`,k=`scale(${a(v)})`;return{transform:[y,k].join(" ")}});return(g,y)=>Ye((S(),L("div",{ref_key:"carouselItemRef",ref:l,class:T(a(h)),style:Pe(a(p)),onClick:a(d)},[a(f)?Ye((S(),L("div",{key:0,class:T(a(n).e("mask"))},null,2)),[[bt,!a(o)]]):ee("v-if",!0),Z(g.$slots,"default")],14,["onClick"])),[[bt,a(m)]])}});var tf=ve(qy,[["__file","carousel-item.vue"]]);const Gy=Ke(Wy,{CarouselItem:tf}),Xy=zt(tf),nf={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Qt,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...vn(["ariaControls"])},lf={[Fe]:e=>De(e)||Me(e)||Tt(e),change:e=>De(e)||Me(e)||Tt(e)},Ba=Symbol("checkboxGroupContextKey"),Zy=({model:e,isChecked:t})=>{const n=ke(Ba,void 0),l=b(()=>{var s,r;const i=(s=n?.max)==null?void 0:s.value,u=(r=n?.min)==null?void 0:r.value;return!dt(i)&&e.value.length>=i&&!t.value||!dt(u)&&e.value.length<=u&&t.value});return{isDisabled:nn(b(()=>n?.disabled.value||l.value)),isLimitDisabled:l}},Jy=(e,{model:t,isLimitExceeded:n,hasOwnLabel:l,isDisabled:o,isLabeledByFormItem:s})=>{const r=ke(Ba,void 0),{formItem:i}=dn(),{emit:u}=tt();function c(h){var p,g,y,k;return[!0,e.trueValue,e.trueLabel].includes(h)?(g=(p=e.trueValue)!=null?p:e.trueLabel)!=null?g:!0:(k=(y=e.falseValue)!=null?y:e.falseLabel)!=null?k:!1}function f(h,p){u(lt,c(h),p)}function v(h){if(n.value)return;const p=h.target;u(lt,c(p.checked),h)}async function m(h){n.value||!l.value&&!o.value&&s.value&&(h.composedPath().some(y=>y.tagName==="LABEL")||(t.value=c([!1,e.falseValue,e.falseLabel].includes(t.value)),await Te(),f(t.value,h)))}const d=b(()=>r?.validateEvent||e.validateEvent);return re(()=>e.modelValue,()=>{d.value&&i?.validate("change").catch(h=>void 0)}),{handleChange:v,onClickRoot:m}},Qy=e=>{const t=I(!1),{emit:n}=tt(),l=ke(Ba,void 0),o=b(()=>dt(l)===!1),s=I(!1),r=b({get(){var i,u;return o.value?(i=l?.modelValue)==null?void 0:i.value:(u=e.modelValue)!=null?u:t.value},set(i){var u,c;o.value&&Se(i)?(s.value=((u=l?.max)==null?void 0:u.value)!==void 0&&i.length>l?.max.value&&i.length>r.value.length,s.value===!1&&((c=l?.changeEvent)==null||c.call(l,i))):(n(Fe,i),t.value=i)}});return{model:r,isGroup:o,isLimitExceeded:s}},e1=(e,t,{model:n})=>{const l=ke(Ba,void 0),o=I(!1),s=b(()=>In(e.value)?e.label:e.value),r=b(()=>{const f=n.value;return Tt(f)?f:Se(f)?yt(s.value)?f.map(Go).some(v=>Kt(v,s.value)):f.map(Go).includes(s.value):f!=null?f===e.trueValue||f===e.trueLabel:!!f}),i=Xt(b(()=>{var f;return(f=l?.size)==null?void 0:f.value}),{prop:!0}),u=Xt(b(()=>{var f;return(f=l?.size)==null?void 0:f.value})),c=b(()=>!!t.default||!In(s.value));return{checkboxButtonSize:i,isChecked:r,isFocused:o,checkboxSize:u,hasOwnLabel:c,actualValue:s}},af=(e,t)=>{const{formItem:n}=dn(),{model:l,isGroup:o,isLimitExceeded:s}=Qy(e),{isFocused:r,isChecked:i,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:f,actualValue:v}=e1(e,t,{model:l}),{isDisabled:m}=Zy({model:l,isChecked:i}),{inputId:d,isLabeledByFormItem:h}=Ln(e,{formItemContext:n,disableIdGeneration:f,disableIdManagement:o}),{handleChange:p,onClickRoot:g}=Jy(e,{model:l,isLimitExceeded:s,hasOwnLabel:f,isDisabled:m,isLabeledByFormItem:h});return(()=>{function k(){var C,w;Se(l.value)&&!l.value.includes(v.value)?l.value.push(v.value):l.value=(w=(C=e.trueValue)!=null?C:e.trueLabel)!=null?w:!0}e.checked&&k()})(),dl({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>o.value&&In(e.value))),dl({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.trueLabel)),dl({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.falseLabel)),{inputId:d,isLabeledByFormItem:h,isChecked:i,isDisabled:m,isFocused:r,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:f,model:l,actualValue:v,handleChange:p,onClickRoot:g}},t1=x({name:"ElCheckbox"}),n1=x({...t1,props:nf,emits:lf,setup(e){const t=e,n=Zt(),{inputId:l,isLabeledByFormItem:o,isChecked:s,isDisabled:r,isFocused:i,checkboxSize:u,hasOwnLabel:c,model:f,actualValue:v,handleChange:m,onClickRoot:d}=af(t,n),h=b(()=>{var k,C,w,_;return t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":(C=(k=t.trueValue)!=null?k:t.trueLabel)!=null?C:!0,"false-value":(_=(w=t.falseValue)!=null?w:t.falseLabel)!=null?_:!1}:{value:v.value}}),p=ue("checkbox"),g=b(()=>[p.b(),p.m(u.value),p.is("disabled",r.value),p.is("bordered",t.border),p.is("checked",s.value)]),y=b(()=>[p.e("input"),p.is("disabled",r.value),p.is("checked",s.value),p.is("indeterminate",t.indeterminate),p.is("focus",i.value)]);return(k,C)=>(S(),le(Xe(!a(c)&&a(o)?"span":"label"),{class:T(a(g)),"aria-controls":k.indeterminate?k.ariaControls:null,onClick:a(d)},{default:X(()=>[F("span",{class:T(a(y))},[Ye(F("input",qe({id:a(l),"onUpdate:modelValue":w=>Nn(f)?f.value=w:null,class:a(p).e("original"),type:"checkbox",indeterminate:k.indeterminate,name:k.name,tabindex:k.tabindex,disabled:a(r)},a(h),{onChange:a(m),onFocus:w=>i.value=!0,onBlur:w=>i.value=!1,onClick:Ve(()=>{},["stop"])}),null,16,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[Fc,a(f)]]),F("span",{class:T(a(p).e("inner"))},null,2)],2),a(c)?(S(),L("span",{key:0,class:T(a(p).e("label"))},[Z(k.$slots,"default"),k.$slots.default?ee("v-if",!0):(S(),L(Re,{key:0},[ut(pe(k.label),1)],64))],2)):ee("v-if",!0)]),_:3},8,["class","aria-controls","onClick"]))}});var of=ve(n1,[["__file","checkbox.vue"]]);const l1=x({name:"ElCheckboxButton"}),a1=x({...l1,props:nf,emits:lf,setup(e){const t=e,n=Zt(),{isFocused:l,isChecked:o,isDisabled:s,checkboxButtonSize:r,model:i,actualValue:u,handleChange:c}=af(t,n),f=b(()=>{var p,g,y,k;return t.trueValue||t.falseValue||t.trueLabel||t.falseLabel?{"true-value":(g=(p=t.trueValue)!=null?p:t.trueLabel)!=null?g:!0,"false-value":(k=(y=t.falseValue)!=null?y:t.falseLabel)!=null?k:!1}:{value:u.value}}),v=ke(Ba,void 0),m=ue("checkbox"),d=b(()=>{var p,g,y,k;const C=(g=(p=v?.fill)==null?void 0:p.value)!=null?g:"";return{backgroundColor:C,borderColor:C,color:(k=(y=v?.textColor)==null?void 0:y.value)!=null?k:"",boxShadow:C?`-1px 0 0 0 ${C}`:void 0}}),h=b(()=>[m.b("button"),m.bm("button",r.value),m.is("disabled",s.value),m.is("checked",o.value),m.is("focus",l.value)]);return(p,g)=>(S(),L("label",{class:T(a(h))},[Ye(F("input",qe({"onUpdate:modelValue":y=>Nn(i)?i.value=y:null,class:a(m).be("button","original"),type:"checkbox",name:p.name,tabindex:p.tabindex,disabled:a(s)},a(f),{onChange:a(c),onFocus:y=>l.value=!0,onBlur:y=>l.value=!1,onClick:Ve(()=>{},["stop"])}),null,16,["onUpdate:modelValue","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[Fc,a(i)]]),p.$slots.default||p.label?(S(),L("span",{key:0,class:T(a(m).be("button","inner")),style:Pe(a(o)?a(d):void 0)},[Z(p.$slots,"default",{},()=>[ut(pe(p.label),1)])],6)):ee("v-if",!0)],2))}});var sf=ve(a1,[["__file","checkbox-button.vue"]]);const o1=fe({modelValue:{type:j(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Qt,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},options:{type:j(Array)},props:{type:j(Object),default:()=>rf},...vn(["ariaLabel"])}),s1={[Fe]:e=>Se(e),change:e=>Se(e)},rf={label:"label",value:"value",disabled:"disabled"},r1=x({name:"ElCheckboxGroup"}),i1=x({...r1,props:o1,emits:s1,setup(e,{emit:t}){const n=e,l=ue("checkbox"),{formItem:o}=dn(),{inputId:s,isLabeledByFormItem:r}=Ln(n,{formItemContext:o}),i=async v=>{t(Fe,v),await Te(),t(lt,v)},u=b({get(){return n.modelValue},set(v){i(v)}}),c=b(()=>({...rf,...n.props})),f=v=>{const m={label:v[c.value.label],value:v[c.value.value],disabled:v[c.value.disabled]};return{...v,...m}};return rt(Ba,{...On(tn(n),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:u,changeEvent:i}),re(()=>n.modelValue,(v,m)=>{n.validateEvent&&!Kt(v,m)&&o?.validate("change").catch(d=>void 0)}),(v,m)=>{var d;return S(),le(Xe(v.tag),{id:a(s),class:T(a(l).b("group")),role:"group","aria-label":a(r)?void 0:v.ariaLabel||"checkbox-group","aria-labelledby":a(r)?(d=a(o))==null?void 0:d.labelId:void 0},{default:X(()=>[Z(v.$slots,"default",{},()=>[(S(!0),L(Re,null,st(n.options,(h,p)=>(S(),le(of,qe({key:p},f(h)),null,16))),128))])]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var uf=ve(i1,[["__file","checkbox-group.vue"]]);const Kn=Ke(of,{CheckboxButton:sf,CheckboxGroup:uf}),u1=zt(sf),cf=zt(uf),df=fe({modelValue:{type:[String,Number,Boolean],default:void 0},size:Qt,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),c1=fe({...df,border:Boolean}),ff={[Fe]:e=>De(e)||Me(e)||Tt(e),[lt]:e=>De(e)||Me(e)||Tt(e)},vf=Symbol("radioGroupKey"),pf=(e,t)=>{const n=I(),l=ke(vf,void 0),o=b(()=>!!l),s=b(()=>In(e.value)?e.label:e.value),r=b({get(){return o.value?l.modelValue:e.modelValue},set(v){o.value?l.changeEvent(v):t&&t(Fe,v),n.value.checked=e.modelValue===s.value}}),i=Xt(b(()=>l?.size)),u=nn(b(()=>l?.disabled)),c=I(!1),f=b(()=>u.value||o.value&&r.value!==s.value?-1:0);return dl({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},b(()=>o.value&&In(e.value))),{radioRef:n,isGroup:o,radioGroup:l,focus:c,size:i,disabled:u,tabIndex:f,modelValue:r,actualValue:s}},d1=x({name:"ElRadio"}),f1=x({...d1,props:c1,emits:ff,setup(e,{emit:t}){const n=e,l=ue("radio"),{radioRef:o,radioGroup:s,focus:r,size:i,disabled:u,modelValue:c,actualValue:f}=pf(n,t);function v(){Te(()=>t(lt,c.value))}return(m,d)=>{var h;return S(),L("label",{class:T([a(l).b(),a(l).is("disabled",a(u)),a(l).is("focus",a(r)),a(l).is("bordered",m.border),a(l).is("checked",a(c)===a(f)),a(l).m(a(i))])},[F("span",{class:T([a(l).e("input"),a(l).is("disabled",a(u)),a(l).is("checked",a(c)===a(f))])},[Ye(F("input",{ref_key:"radioRef",ref:o,"onUpdate:modelValue":p=>Nn(c)?c.value=p:null,class:T(a(l).e("original")),value:a(f),name:m.name||((h=a(s))==null?void 0:h.name),disabled:a(u),checked:a(c)===a(f),type:"radio",onFocus:p=>r.value=!0,onBlur:p=>r.value=!1,onChange:v,onClick:Ve(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","checked","onFocus","onBlur","onClick"]),[[xc,a(c)]]),F("span",{class:T(a(l).e("inner"))},null,2)],2),F("span",{class:T(a(l).e("label")),onKeydown:Ve(()=>{},["stop"])},[Z(m.$slots,"default",{},()=>[ut(pe(m.label),1)])],42,["onKeydown"])],2)}}});var hf=ve(f1,[["__file","radio.vue"]]);const v1=fe({...df}),p1=x({name:"ElRadioButton"}),h1=x({...p1,props:v1,setup(e){const t=e,n=ue("radio"),{radioRef:l,focus:o,size:s,disabled:r,modelValue:i,radioGroup:u,actualValue:c}=pf(t),f=b(()=>({backgroundColor:u?.fill||"",borderColor:u?.fill||"",boxShadow:u?.fill?`-1px 0 0 0 ${u.fill}`:"",color:u?.textColor||""}));return(v,m)=>{var d;return S(),L("label",{class:T([a(n).b("button"),a(n).is("active",a(i)===a(c)),a(n).is("disabled",a(r)),a(n).is("focus",a(o)),a(n).bm("button",a(s))])},[Ye(F("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":h=>Nn(i)?i.value=h:null,class:T(a(n).be("button","original-radio")),value:a(c),type:"radio",name:v.name||((d=a(u))==null?void 0:d.name),disabled:a(r),onFocus:h=>o.value=!0,onBlur:h=>o.value=!1,onClick:Ve(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","onFocus","onBlur","onClick"]),[[xc,a(i)]]),F("span",{class:T(a(n).be("button","inner")),style:Pe(a(i)===a(c)?a(f):{}),onKeydown:Ve(()=>{},["stop"])},[Z(v.$slots,"default",{},()=>[ut(pe(v.label),1)])],46,["onKeydown"])],2)}}});var mf=ve(h1,[["__file","radio-button.vue"]]);const m1=fe({id:{type:String,default:void 0},size:Qt,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},options:{type:j(Array)},props:{type:j(Object),default:()=>gf},...vn(["ariaLabel"])}),g1=ff,gf={label:"label",value:"value",disabled:"disabled"},b1=x({name:"ElRadioGroup"}),y1=x({...b1,props:m1,emits:g1,setup(e,{emit:t}){const n=e,l=ue("radio"),o=un(),s=I(),{formItem:r}=dn(),{inputId:i,isLabeledByFormItem:u}=Ln(n,{formItemContext:r}),c=d=>{t(Fe,d),Te(()=>t(lt,d))};Ze(()=>{const d=s.value.querySelectorAll("[type=radio]"),h=d[0];!Array.from(d).some(p=>p.checked)&&h&&(h.tabIndex=0)});const f=b(()=>n.name||o.value),v=b(()=>({...gf,...n.props})),m=d=>{const h={label:d[v.value.label],value:d[v.value.value],disabled:d[v.value.disabled]};return{...d,...h}};return rt(vf,kt({...tn(n),changeEvent:c,name:f})),re(()=>n.modelValue,(d,h)=>{n.validateEvent&&!Kt(d,h)&&r?.validate("change").catch(p=>void 0)}),(d,h)=>(S(),L("div",{id:a(i),ref_key:"radioGroupRef",ref:s,class:T(a(l).b("group")),role:"radiogroup","aria-label":a(u)?void 0:d.ariaLabel||"radio-group","aria-labelledby":a(u)?a(r).labelId:void 0},[Z(d.$slots,"default",{},()=>[(S(!0),L(Re,null,st(n.options,(p,g)=>(S(),le(hf,qe({key:g},m(p)),null,16))),128))])],10,["id","aria-label","aria-labelledby"]))}});var bf=ve(y1,[["__file","radio-group.vue"]]);const yf=Ke(hf,{RadioButton:mf,RadioGroup:bf}),C1=zt(bf),w1=zt(mf),$s=Symbol();function k1(e){return!!(Se(e)?e.every(({type:t})=>t===Ml):e?.type===Ml)}var S1=x({name:"NodeContent",props:{node:{type:Object,required:!0}},setup(e){const t=ue("cascader-node"),{renderLabelFn:n}=ke($s),{node:l}=e,{data:o,label:s}=l,r=()=>{const i=n?.({node:l,data:o});return k1(i)?s:i??s};return()=>U("span",{class:t.e("label")},[r()])}});const E1=x({name:"ElCascaderNode"}),_1=x({...E1,props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=e,l=ke($s),o=ue("cascader-node"),s=b(()=>l.isHoverMenu),r=b(()=>l.config.multiple),i=b(()=>l.config.checkStrictly),u=b(()=>l.config.showPrefix),c=b(()=>{var O;return(O=l.checkedNodes[0])==null?void 0:O.uid}),f=b(()=>n.node.isDisabled),v=b(()=>n.node.isLeaf),m=b(()=>i.value&&!v.value||!f.value),d=b(()=>p(l.expandingNode)),h=b(()=>i.value&&l.checkedNodes.some(p)),p=O=>{var M;const{level:N,uid:P}=n.node;return((M=O?.pathNodes[N-1])==null?void 0:M.uid)===P},g=()=>{d.value||l.expandNode(n.node)},y=O=>{const{node:M}=n;O!==M.checked&&l.handleCheckChange(M,O)},k=()=>{l.lazyLoad(n.node,()=>{v.value||g()})},C=O=>{s.value&&(w(),!v.value&&t("expand",O))},w=()=>{const{node:O}=n;!m.value||O.loading||(O.loaded?g():k())},_=()=>{v.value&&!f.value&&!i.value&&!r.value?$(!0):(l.config.checkOnClickNode&&(r.value||i.value)||v.value&&l.config.checkOnClickLeaf)&&!f.value?E(!n.node.checked):s.value||w()},E=O=>{i.value?(y(O),n.node.loaded&&g()):$(O)},$=O=>{n.node.loaded?(y(O),!i.value&&g()):k()};return(O,M)=>(S(),L("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!a(v),"aria-owns":a(v)?void 0:e.menuId,"aria-expanded":a(d),tabindex:a(m)?-1:void 0,class:T([a(o).b(),a(o).is("selectable",a(i)),a(o).is("active",e.node.checked),a(o).is("disabled",!a(m)),a(d)&&"in-active-path",a(h)&&"in-checked-path"]),onMouseenter:C,onFocus:C,onClick:_},[ee(" prefix "),a(r)&&a(u)?(S(),le(a(Kn),{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:a(f),onClick:Ve(()=>{},["stop"]),"onUpdate:modelValue":E},null,8,["model-value","indeterminate","disabled","onClick"])):a(i)&&a(u)?(S(),le(a(yf),{key:1,"model-value":a(c),label:e.node.uid,disabled:a(f),"onUpdate:modelValue":E,onClick:Ve(()=>{},["stop"])},{default:X(()=>[ee(` Add an empty element to avoid render label, do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485 `),F("span")]),_:1},8,["model-value","label","disabled","onClick"])):a(v)&&e.node.checked?(S(),le(a($e),{key:2,class:T(a(o).e("prefix"))},{default:X(()=>[U(a(ho))]),_:1},8,["class"])):ee("v-if",!0),ee(" content "),U(a(S1),{node:e.node},null,8,["node"]),ee(" postfix "),a(v)?ee("v-if",!0):(S(),L(Re,{key:3},[e.node.loading?(S(),le(a($e),{key:0,class:T([a(o).is("loading"),a(o).e("postfix")])},{default:X(()=>[U(a(ll))]),_:1},8,["class"])):(S(),le(a($e),{key:1,class:T(["arrow-right",a(o).e("postfix")])},{default:X(()=>[U(a(Cn))]),_:1},8,["class"]))],64))],42,["id","aria-haspopup","aria-owns","aria-expanded","tabindex"]))}});var T1=ve(_1,[["__file","node.vue"]]);const $1=x({name:"ElCascaderMenu"}),N1=x({...$1,props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=e,n=tt(),l=ue("cascader-menu"),{t:o}=ht(),s=un();let r,i;const u=ke($s),c=I(),f=b(()=>!t.nodes.length),v=b(()=>!u.initialLoaded),m=b(()=>`${s.value}-${t.index}`),d=y=>{r=y.target},h=y=>{if(!(!u.isHoverMenu||!r||!c.value))if(r.contains(y.target)){p();const k=n.vnode.el,{left:C}=k.getBoundingClientRect(),{offsetWidth:w,offsetHeight:_}=k,E=y.clientX-C,$=r.offsetTop,O=$+r.offsetHeight;c.value.innerHTML=` diff --git a/static/admin/assets/vendor-misc-BeoNyvBp.js b/static/admin/assets/vendor-misc-BeoNyvBp.js deleted file mode 100644 index d8e5187..0000000 --- a/static/admin/assets/vendor-misc-BeoNyvBp.js +++ /dev/null @@ -1,12 +0,0 @@ -import{r as U,$ as Do,u as Ro,av as Za,ai as Ka,g as Fo,o as Qa,z as Ja,s as es,m as ts,c as An,l as le,e as qn,S as ii,aw as ns}from"./vendor-vue-CVxSw_oJ.js";var Co=typeof global=="object"&&global&&global.Object===Object&&global,rs=typeof self=="object"&&self&&self.Object===Object&&self,Oe=Co||rs||Function("return this")(),de=Oe.Symbol,Lo=Object.prototype,is=Lo.hasOwnProperty,os=Lo.toString,$t=de?de.toStringTag:void 0;function as(e){var t=is.call(e,$t),n=e[$t];try{e[$t]=void 0;var r=!0}catch{}var i=os.call(e);return r&&(t?e[$t]=n:delete e[$t]),i}var ss=Object.prototype,fs=ss.toString;function us(e){return fs.call(e)}var cs="[object Null]",ls="[object Undefined]",oi=de?de.toStringTag:void 0;function Ke(e){return e==null?e===void 0?ls:cs:oi&&oi in Object(e)?as(e):us(e)}function _e(e){return e!=null&&typeof e=="object"}var ds="[object Symbol]";function Sn(e){return typeof e=="symbol"||_e(e)&&Ke(e)==ds}function wr(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=Hs)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Ys(e){return function(){return e}}var yn=(function(){try{var e=Je(Object,"defineProperty");return e({},"",{}),e}catch{}})(),Us=yn?function(e,t){return yn(e,"toString",{configurable:!0,enumerable:!1,value:Ys(t),writable:!0})}:xr,No=ks(Us);function Gs(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var Ks=9007199254740991,Qs=/^(?:0|[1-9]\d*)$/;function _n(e,t){var n=typeof e;return t=t??Ks,!!t&&(n=="number"||n!="symbol"&&Qs.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=tf}function mt(e){return e!=null&&Sr(e.length)&&!Or(e)}function nf(e,t,n){if(!J(n))return!1;var r=typeof t;return(r=="number"?mt(n)&&_n(t,n.length):r=="string"&&t in n)?Ht(n[t],e):!1}function rf(e){return Bo(function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(o=e.length>3&&typeof o=="function"?(i--,o):void 0,a&&nf(n[0],n[1],a)&&(o=i<3?void 0:o,i=1),t=Object(t);++r-1}function pu(e,t){var n=this.__data__,r=Tn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Ce(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(s)?t>1?kt(s,t-1,n,r,i):Dr(i,s):r||(i[i.length]=s)}return i}function Pu(e){var t=e==null?0:e.length;return t?kt(e,1):[]}function zo(e){return No(Ho(e,void 0,Pu),e+"")}var Rr=Go(Object.getPrototypeOf,Object),Du="[object Object]",Ru=Function.prototype,Fu=Object.prototype,Vo=Ru.toString,Cu=Fu.hasOwnProperty,Lu=Vo.call(Object);function Xo(e){if(!_e(e)||Ke(e)!=Du)return!1;var t=Rr(e);if(t===null)return!0;var n=Cu.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&Vo.call(n)==Lu}function Iu(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r=t?e:t)),e}function mv(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=_t(n),n=n===n?n:0),t!==void 0&&(t=_t(t),t=t===t?t:0),ju(_t(e),t,n)}function Nu(){this.__data__=new Ce,this.size=0}function qu(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Hu(e){return this.__data__.get(e)}function Bu(e){return this.__data__.has(e)}var Wu=200;function ku(e,t){var n=this.__data__;if(n instanceof Ce){var r=n.__data__;if(!Ct||r.lengths))return!1;var u=o.get(e),l=o.get(t);if(u&&l)return u==t&&l==e;var c=-1,d=!0,h=n&yl?new Lt:void 0;for(o.set(e,t),o.set(t,e);++c=t||E<0||c&&D>=o}function p(){var S=kn();if(g(S))return b(S);s=setTimeout(p,v(S))}function b(S){return s=void 0,d&&r?h(S):(r=i=void 0,a)}function y(){s!==void 0&&clearTimeout(s),u=0,r=f=i=s=void 0}function x(){return s===void 0?a:b(kn())}function $(){var S=kn(),E=g(S);if(r=arguments,i=this,f=S,E){if(s===void 0)return m(f);if(c)return clearTimeout(s),s=setTimeout(p,t),h(f)}return s===void 0&&(s=setTimeout(p,t)),a}return $.cancel=y,$.flush=x,$}function Jn(e,t,n){(n!==void 0&&!Ht(e[t],n)||n===void 0&&!(t in e))&&$r(e,t,n)}function pa(e){return _e(e)&&mt(e)}function er(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}function fd(e){return vt(e,Wt(e))}function ud(e,t,n,r,i,o,a){var s=er(e,n),f=er(t,n),u=a.get(f);if(u){Jn(e,n,u);return}var l=o?o(s,f,n+"",e,t,a):void 0,c=l===void 0;if(c){var d=Q(f),h=!d&&Rt(f),m=!d&&!h&&Mr(f);l=f,d||h||m?Q(s)?l=s:pa(s)?l=jo(s):h?(c=!1,l=Ko(f,!0)):m?(c=!1,l=na(f,!0)):l=[]:Xo(f)||Dt(f)?(l=s,Dt(s)?l=fd(s):(!J(s)||Or(s))&&(l=ra(f))):c=!1}c&&(a.set(f,l),i(l,f,r,o,a),a.delete(f)),Jn(e,n,l)}function ga(e,t,n,r,i){e!==t&&ha(t,function(o,a){if(i||(i=new be),J(o))ud(e,t,a,n,ga,r,i);else{var s=r?r(er(e,a),o,a+"",e,t,i):void 0;s===void 0&&(s=o),Jn(e,a,s)}},Wt)}function cd(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function wv(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=r-1;return qo(e,da(t),i,!0)}function ld(e,t){var n=-1,r=mt(e)?Array(e.length):[];return rd(e,function(i,o,a){r[++n]=t(i,o,a)}),r}function dd(e,t){var n=Q(e)?wr:ld;return n(e,da(t))}function xv(e,t){return kt(dd(e,t),1)}var hd=1/0;function Ov(e){var t=e==null?0:e.length;return t?kt(e,hd):[]}function $v(e){for(var t=-1,n=e==null?0:e.length,r={};++t1),o}),vt(e,ta(e),n),r&&(n=at(n,md|yd|bd,vd));for(var i=t.length;i--;)gd(n,t[i]);return n});function va(e,t,n,r){if(!J(e))return e;t=yt(t,e);for(var i=-1,o=t.length,a=o-1,s=e;s!=null&&++i=Sd){var u=Ad(e);if(u)return Lr(u);a=!1,i=sa,f=new Lt}else f=s;e:for(;++rt in e?Td(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Rd=(e,t)=>{for(var n in t||(t={}))Pd.call(t,n)&&Li(e,n,t[n]);if(Ci)for(var n of Ci(t))Dd.call(t,n)&&Li(e,n,t[n]);return e},Fd=(e,t)=>Md(e,Ed(t));function Cv(e,t){var n;const r=es();return ts(()=>{r.value=e()},Fd(Rd({},t),{flush:(n=void 0)!=null?n:"sync"})),Do(r)}var Ii;const Dn=typeof window<"u",Cd=e=>typeof e<"u",tr=e=>typeof e=="function",Ld=e=>typeof e=="string",Lv=(e,t,n)=>Math.min(n,Math.max(t,e)),Re=()=>{},Id=Dn&&((Ii=window?.navigator)==null?void 0:Ii.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function He(e){return typeof e=="function"?e():Ro(e)}function ma(e,t){function n(...r){return new Promise((i,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(i).catch(o)})}return n}function jd(e,t={}){let n,r,i=Re;const o=s=>{clearTimeout(s),i(),i=Re};return s=>{const f=He(e),u=He(t.maxWait);return n&&o(n),f<=0||u!==void 0&&u<=0?(r&&(o(r),r=null),Promise.resolve(s())):new Promise((l,c)=>{i=t.rejectOnCancel?c:l,u&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,l(s())},u)),n=setTimeout(()=>{r&&o(r),r=null,l(s())},f)})}}function Nd(e,t=!0,n=!0,r=!1){let i=0,o,a=!0,s=Re,f;const u=()=>{o&&(clearTimeout(o),o=void 0,s(),s=Re)};return c=>{const d=He(e),h=Date.now()-i,m=()=>f=c();return u(),d<=0?(i=Date.now(),m()):(h>d&&(n||!a)?(i=Date.now(),m()):t&&(f=new Promise((v,g)=>{s=r?g:v,o=setTimeout(()=>{i=Date.now(),a=!0,v(m()),u()},Math.max(0,d-h))})),!n&&!o&&(o=setTimeout(()=>a=!0,d)),a=!1,f)}}function qd(e){return e}function Hd(e,t){let n,r,i;const o=U(!0),a=()=>{o.value=!0,i()};le(e,a,{flush:"sync"});const s=tr(t)?t:t.get,f=tr(t)?void 0:t.set,u=ns((l,c)=>(r=l,i=c,{get(){return o.value&&(n=s(),o.value=!1),r(),n},set(d){f?.(d)}}));return Object.isExtensible(u)&&(u.trigger=a),u}function Yt(e){return Za()?(Ka(e),!0):!1}function Bd(e){if(!qn(e))return ii(e);const t=new Proxy({},{get(n,r,i){return Ro(Reflect.get(e.value,r,i))},set(n,r,i){return qn(e.value[r])&&!qn(i)?e.value[r].value=i:e.value[r]=i,!0},deleteProperty(n,r){return Reflect.deleteProperty(e.value,r)},has(n,r){return Reflect.has(e.value,r)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return ii(t)}function Iv(e){return Bd(An(e))}function Wd(e,t=200,n={}){return ma(jd(t,n),e)}function jv(e,t=200,n={}){const r=U(e.value),i=Wd(()=>{r.value=e.value},t,n);return le(e,()=>i()),r}function Nv(e,t=200,n=!1,r=!0,i=!1){return ma(Nd(t,n,r,i),e)}function Ir(e,t=!0){Fo()?Qa(e):t?e():Ja(e)}function qv(e,t,n={}){const{immediate:r=!0}=n,i=U(!1);let o=null;function a(){o&&(clearTimeout(o),o=null)}function s(){i.value=!1,a()}function f(...u){a(),i.value=!0,o=setTimeout(()=>{i.value=!1,o=null,e(...u)},He(t))}return r&&(i.value=!0,Dn&&f()),Yt(s),{isPending:Do(i),start:f,stop:s}}function K(e){var t;const n=He(e);return(t=n?.$el)!=null?t:n}const Ee=Dn?window:void 0,kd=Dn?window.document:void 0;function ue(...e){let t,n,r,i;if(Ld(e[0])||Array.isArray(e[0])?([n,r,i]=e,t=Ee):[t,n,r,i]=e,!t)return Re;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],a=()=>{o.forEach(l=>l()),o.length=0},s=(l,c,d,h)=>(l.addEventListener(c,d,h),()=>l.removeEventListener(c,d,h)),f=le(()=>[K(t),He(i)],([l,c])=>{a(),l&&o.push(...n.flatMap(d=>r.map(h=>s(l,d,h,c))))},{immediate:!0,flush:"post"}),u=()=>{f(),a()};return Yt(u),u}let ji=!1;function Hv(e,t,n={}){const{window:r=Ee,ignore:i=[],capture:o=!0,detectIframe:a=!1}=n;if(!r)return;Id&&!ji&&(ji=!0,Array.from(r.document.body.children).forEach(d=>d.addEventListener("click",Re)));let s=!0;const f=d=>i.some(h=>{if(typeof h=="string")return Array.from(r.document.querySelectorAll(h)).some(m=>m===d.target||d.composedPath().includes(m));{const m=K(h);return m&&(d.target===m||d.composedPath().includes(m))}}),l=[ue(r,"click",d=>{const h=K(e);if(!(!h||h===d.target||d.composedPath().includes(h))){if(d.detail===0&&(s=!f(d)),!s){s=!0;return}t(d)}},{passive:!0,capture:o}),ue(r,"pointerdown",d=>{const h=K(e);h&&(s=!d.composedPath().includes(h)&&!f(d))},{passive:!0}),a&&ue(r,"blur",d=>{var h;const m=K(e);((h=r.document.activeElement)==null?void 0:h.tagName)==="IFRAME"&&!m?.contains(r.document.activeElement)&&t(d)})].filter(Boolean);return()=>l.forEach(d=>d())}function Bv(e={}){var t;const{window:n=Ee}=e,r=(t=e.document)!=null?t:n?.document,i=Hd(()=>null,()=>r?.activeElement);return n&&(ue(n,"blur",o=>{o.relatedTarget===null&&i.trigger()},!0),ue(n,"focus",i.trigger,!0)),i}function jr(e,t=!1){const n=U(),r=()=>n.value=!!e();return r(),Ir(r,t),n}function Yd(e){return JSON.parse(JSON.stringify(e))}const Ni=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},qi="__vueuse_ssr_handlers__";Ni[qi]=Ni[qi]||{};function Wv(e,t,{window:n=Ee,initialValue:r=""}={}){const i=U(r),o=An(()=>{var a;return K(t)||((a=n?.document)==null?void 0:a.documentElement)});return le([o,()=>He(e)],([a,s])=>{var f;if(a&&n){const u=(f=n.getComputedStyle(a).getPropertyValue(s))==null?void 0:f.trim();i.value=u||r}},{immediate:!0}),le(i,a=>{var s;(s=o.value)!=null&&s.style&&o.value.style.setProperty(He(e),a)}),i}function kv({document:e=kd}={}){if(!e)return U("visible");const t=U(e.visibilityState);return ue(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var Hi=Object.getOwnPropertySymbols,Ud=Object.prototype.hasOwnProperty,Gd=Object.prototype.propertyIsEnumerable,zd=(e,t)=>{var n={};for(var r in e)Ud.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Hi)for(var r of Hi(e))t.indexOf(r)<0&&Gd.call(e,r)&&(n[r]=e[r]);return n};function ya(e,t,n={}){const r=n,{window:i=Ee}=r,o=zd(r,["window"]);let a;const s=jr(()=>i&&"ResizeObserver"in i),f=()=>{a&&(a.disconnect(),a=void 0)},u=le(()=>K(e),c=>{f(),s.value&&i&&c&&(a=new ResizeObserver(t),a.observe(c,o))},{immediate:!0,flush:"post"}),l=()=>{f(),u()};return Yt(l),{isSupported:s,stop:l}}function Yv(e,t={}){const{reset:n=!0,windowResize:r=!0,windowScroll:i=!0,immediate:o=!0}=t,a=U(0),s=U(0),f=U(0),u=U(0),l=U(0),c=U(0),d=U(0),h=U(0);function m(){const v=K(e);if(!v){n&&(a.value=0,s.value=0,f.value=0,u.value=0,l.value=0,c.value=0,d.value=0,h.value=0);return}const g=v.getBoundingClientRect();a.value=g.height,s.value=g.bottom,f.value=g.left,u.value=g.right,l.value=g.top,c.value=g.width,d.value=g.x,h.value=g.y}return ya(e,m),le(()=>K(e),v=>!v&&m()),i&&ue("scroll",m,{capture:!0,passive:!0}),r&&ue("resize",m,{passive:!0}),Ir(()=>{o&&m()}),{height:a,bottom:s,left:f,right:u,top:l,width:c,x:d,y:h,update:m}}function Uv(e,t={width:0,height:0},n={}){const{window:r=Ee,box:i="content-box"}=n,o=An(()=>{var f,u;return(u=(f=K(e))==null?void 0:f.namespaceURI)==null?void 0:u.includes("svg")}),a=U(t.width),s=U(t.height);return ya(e,([f])=>{const u=i==="border-box"?f.borderBoxSize:i==="content-box"?f.contentBoxSize:f.devicePixelContentBoxSize;if(r&&o.value){const l=K(e);if(l){const c=r.getComputedStyle(l);a.value=parseFloat(c.width),s.value=parseFloat(c.height)}}else if(u){const l=Array.isArray(u)?u:[u];a.value=l.reduce((c,{inlineSize:d})=>c+d,0),s.value=l.reduce((c,{blockSize:d})=>c+d,0)}else a.value=f.contentRect.width,s.value=f.contentRect.height},n),le(()=>K(e),f=>{a.value=f?t.width:0,s.value=f?t.height:0}),{width:a,height:s}}function Gv(e,t,n={}){const{root:r,rootMargin:i="0px",threshold:o=.1,window:a=Ee}=n,s=jr(()=>a&&"IntersectionObserver"in a);let f=Re;const u=s.value?le(()=>({el:K(e),root:K(r)}),({el:c,root:d})=>{if(f(),!c)return;const h=new IntersectionObserver(t,{root:d,rootMargin:i,threshold:o});h.observe(c),f=()=>{h.disconnect(),f=Re}},{immediate:!0,flush:"post"}):Re,l=()=>{f(),u()};return Yt(l),{isSupported:s,stop:l}}var Bi=Object.getOwnPropertySymbols,Vd=Object.prototype.hasOwnProperty,Xd=Object.prototype.propertyIsEnumerable,Zd=(e,t)=>{var n={};for(var r in e)Vd.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Bi)for(var r of Bi(e))t.indexOf(r)<0&&Xd.call(e,r)&&(n[r]=e[r]);return n};function zv(e,t,n={}){const r=n,{window:i=Ee}=r,o=Zd(r,["window"]);let a;const s=jr(()=>i&&"MutationObserver"in i),f=()=>{a&&(a.disconnect(),a=void 0)},u=le(()=>K(e),c=>{f(),s.value&&i&&c&&(a=new MutationObserver(t),a.observe(c,o))},{immediate:!0}),l=()=>{f(),u()};return Yt(l),{isSupported:s,stop:l}}var Wi;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Wi||(Wi={}));var Kd=Object.defineProperty,ki=Object.getOwnPropertySymbols,Qd=Object.prototype.hasOwnProperty,Jd=Object.prototype.propertyIsEnumerable,Yi=(e,t,n)=>t in e?Kd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,eh=(e,t)=>{for(var n in t||(t={}))Qd.call(t,n)&&Yi(e,n,t[n]);if(ki)for(var n of ki(t))Jd.call(t,n)&&Yi(e,n,t[n]);return e};const th={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};eh({linear:qd},th);function Vv(e,t,n,r={}){var i,o,a;const{clone:s=!1,passive:f=!1,eventName:u,deep:l=!1,defaultValue:c}=r,d=Fo(),h=n||d?.emit||((i=d?.$emit)==null?void 0:i.bind(d))||((a=(o=d?.proxy)==null?void 0:o.$emit)==null?void 0:a.bind(d?.proxy));let m=u;t||(t="modelValue"),m=u||m||`update:${t.toString()}`;const v=p=>s?tr(s)?s(p):Yd(p):p,g=()=>Cd(e[t])?v(e[t]):c;if(f){const p=g(),b=U(p);return le(()=>e[t],y=>b.value=v(y)),le(b,y=>{(y!==e[t]||l)&&h(m,y)},{deep:l}),b}else return An({get(){return g()},set(p){h(m,p)}})}function Xv({window:e=Ee}={}){if(!e)return U(!1);const t=U(e.document.hasFocus());return ue(e,"blur",()=>{t.value=!1}),ue(e,"focus",()=>{t.value=!0}),t}function Zv(e={}){const{window:t=Ee,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:i=!0,includeScrollbar:o=!0}=e,a=U(n),s=U(r),f=()=>{t&&(o?(a.value=t.innerWidth,s.value=t.innerHeight):(a.value=t.document.documentElement.clientWidth,s.value=t.document.documentElement.clientHeight))};return f(),Ir(f),ue("resize",f,{passive:!0}),i&&ue("orientationchange",f,{passive:!0}),{width:a,height:s}}var ne="top",he="bottom",pe="right",re="left",Nr="auto",Ut=[ne,he,pe,re],ut="start",It="end",nh="clippingParents",ba="viewport",At="popper",rh="reference",Ui=Ut.reduce(function(e,t){return e.concat([t+"-"+ut,t+"-"+It])},[]),wa=[].concat(Ut,[Nr]).reduce(function(e,t){return e.concat([t,t+"-"+ut,t+"-"+It])},[]),ih="beforeRead",oh="read",ah="afterRead",sh="beforeMain",fh="main",uh="afterMain",ch="beforeWrite",lh="write",dh="afterWrite",hh=[ih,oh,ah,sh,fh,uh,ch,lh,dh];function Te(e){return e?(e.nodeName||"").toLowerCase():null}function $e(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ct(e){var t=$e(e).Element;return e instanceof t||e instanceof Element}function ce(e){var t=$e(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function qr(e){if(typeof ShadowRoot>"u")return!1;var t=$e(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function ph(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},i=t.attributes[n]||{},o=t.elements[n];!ce(o)||!Te(o)||(Object.assign(o.style,r),Object.keys(i).forEach(function(a){var s=i[a];s===!1?o.removeAttribute(a):o.setAttribute(a,s===!0?"":s)}))})}function gh(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var i=t.elements[r],o=t.attributes[r]||{},a=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),s=a.reduce(function(f,u){return f[u]="",f},{});!ce(i)||!Te(i)||(Object.assign(i.style,s),Object.keys(o).forEach(function(f){i.removeAttribute(f)}))})}}var xa={name:"applyStyles",enabled:!0,phase:"write",fn:ph,effect:gh,requires:["computeStyles"]};function Ae(e){return e.split("-")[0]}var Ge=Math.max,wn=Math.min,lt=Math.round;function dt(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),r=1,i=1;if(ce(e)&&t){var o=e.offsetHeight,a=e.offsetWidth;a>0&&(r=lt(n.width)/a||1),o>0&&(i=lt(n.height)/o||1)}return{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function Hr(e){var t=dt(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function Oa(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&qr(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Fe(e){return $e(e).getComputedStyle(e)}function vh(e){return["table","td","th"].indexOf(Te(e))>=0}function We(e){return((ct(e)?e.ownerDocument:e.document)||window.document).documentElement}function Rn(e){return Te(e)==="html"?e:e.assignedSlot||e.parentNode||(qr(e)?e.host:null)||We(e)}function Gi(e){return!ce(e)||Fe(e).position==="fixed"?null:e.offsetParent}function mh(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&ce(e)){var r=Fe(e);if(r.position==="fixed")return null}var i=Rn(e);for(qr(i)&&(i=i.host);ce(i)&&["html","body"].indexOf(Te(i))<0;){var o=Fe(i);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return i;i=i.parentNode}return null}function Gt(e){for(var t=$e(e),n=Gi(e);n&&vh(n)&&Fe(n).position==="static";)n=Gi(n);return n&&(Te(n)==="html"||Te(n)==="body"&&Fe(n).position==="static")?t:n||mh(e)||t}function Br(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Mt(e,t,n){return Ge(e,wn(t,n))}function yh(e,t,n){var r=Mt(e,t,n);return r>n?n:r}function $a(){return{top:0,right:0,bottom:0,left:0}}function Aa(e){return Object.assign({},$a(),e)}function Sa(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var bh=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,Aa(typeof e!="number"?e:Sa(e,Ut))};function wh(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=Ae(n.placement),f=Br(s),u=[re,pe].indexOf(s)>=0,l=u?"height":"width";if(!(!o||!a)){var c=bh(i.padding,n),d=Hr(o),h=f==="y"?ne:re,m=f==="y"?he:pe,v=n.rects.reference[l]+n.rects.reference[f]-a[f]-n.rects.popper[l],g=a[f]-n.rects.reference[f],p=Gt(o),b=p?f==="y"?p.clientHeight||0:p.clientWidth||0:0,y=v/2-g/2,x=c[h],$=b-d[l]-c[m],S=b/2-d[l]/2+y,E=Mt(x,S,$),D=f;n.modifiersData[r]=(t={},t[D]=E,t.centerOffset=E-S,t)}}function xh(e){var t=e.state,n=e.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||!Oa(t.elements.popper,i)||(t.elements.arrow=i))}var Oh={name:"arrow",enabled:!0,phase:"main",fn:wh,effect:xh,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ht(e){return e.split("-")[1]}var $h={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ah(e){var t=e.x,n=e.y,r=window,i=r.devicePixelRatio||1;return{x:lt(t*i)/i||0,y:lt(n*i)/i||0}}function zi(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,a=e.offsets,s=e.position,f=e.gpuAcceleration,u=e.adaptive,l=e.roundOffsets,c=e.isFixed,d=a.x,h=d===void 0?0:d,m=a.y,v=m===void 0?0:m,g=typeof l=="function"?l({x:h,y:v}):{x:h,y:v};h=g.x,v=g.y;var p=a.hasOwnProperty("x"),b=a.hasOwnProperty("y"),y=re,x=ne,$=window;if(u){var S=Gt(n),E="clientHeight",D="clientWidth";if(S===$e(n)&&(S=We(n),Fe(S).position!=="static"&&s==="absolute"&&(E="scrollHeight",D="scrollWidth")),S=S,i===ne||(i===re||i===pe)&&o===It){x=he;var C=c&&S===$&&$.visualViewport?$.visualViewport.height:S[E];v-=C-r.height,v*=f?1:-1}if(i===re||(i===ne||i===he)&&o===It){y=pe;var R=c&&S===$&&$.visualViewport?$.visualViewport.width:S[D];h-=R-r.width,h*=f?1:-1}}var P=Object.assign({position:s},u&&$h),L=l===!0?Ah({x:h,y:v}):{x:h,y:v};if(h=L.x,v=L.y,f){var I;return Object.assign({},P,(I={},I[x]=b?"0":"",I[y]=p?"0":"",I.transform=($.devicePixelRatio||1)<=1?"translate("+h+"px, "+v+"px)":"translate3d("+h+"px, "+v+"px, 0)",I))}return Object.assign({},P,(t={},t[x]=b?v+"px":"",t[y]=p?h+"px":"",t.transform="",t))}function Sh(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,o=n.adaptive,a=o===void 0?!0:o,s=n.roundOffsets,f=s===void 0?!0:s,u={placement:Ae(t.placement),variation:ht(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,zi(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:f})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,zi(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var _a={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Sh,data:{}},Qt={passive:!0};function _h(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=i===void 0?!0:i,a=r.resize,s=a===void 0?!0:a,f=$e(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&u.forEach(function(l){l.addEventListener("scroll",n.update,Qt)}),s&&f.addEventListener("resize",n.update,Qt),function(){o&&u.forEach(function(l){l.removeEventListener("scroll",n.update,Qt)}),s&&f.removeEventListener("resize",n.update,Qt)}}var Ta={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:_h,data:{}},Th={left:"right",right:"left",bottom:"top",top:"bottom"};function rn(e){return e.replace(/left|right|bottom|top/g,function(t){return Th[t]})}var Mh={start:"end",end:"start"};function Vi(e){return e.replace(/start|end/g,function(t){return Mh[t]})}function Wr(e){var t=$e(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function kr(e){return dt(We(e)).left+Wr(e).scrollLeft}function Eh(e){var t=$e(e),n=We(e),r=t.visualViewport,i=n.clientWidth,o=n.clientHeight,a=0,s=0;return r&&(i=r.width,o=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=r.offsetLeft,s=r.offsetTop)),{width:i,height:o,x:a+kr(e),y:s}}function Ph(e){var t,n=We(e),r=Wr(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=Ge(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Ge(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+kr(e),f=-r.scrollTop;return Fe(i||n).direction==="rtl"&&(s+=Ge(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:f}}function Yr(e){var t=Fe(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function Ma(e){return["html","body","#document"].indexOf(Te(e))>=0?e.ownerDocument.body:ce(e)&&Yr(e)?e:Ma(Rn(e))}function Et(e,t){var n;t===void 0&&(t=[]);var r=Ma(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=$e(r),a=i?[o].concat(o.visualViewport||[],Yr(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(Et(Rn(a)))}function nr(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Dh(e){var t=dt(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Xi(e,t){return t===ba?nr(Eh(e)):ct(t)?Dh(t):nr(Ph(We(e)))}function Rh(e){var t=Et(Rn(e)),n=["absolute","fixed"].indexOf(Fe(e).position)>=0,r=n&&ce(e)?Gt(e):e;return ct(r)?t.filter(function(i){return ct(i)&&Oa(i,r)&&Te(i)!=="body"}):[]}function Fh(e,t,n){var r=t==="clippingParents"?Rh(e):[].concat(t),i=[].concat(r,[n]),o=i[0],a=i.reduce(function(s,f){var u=Xi(e,f);return s.top=Ge(u.top,s.top),s.right=wn(u.right,s.right),s.bottom=wn(u.bottom,s.bottom),s.left=Ge(u.left,s.left),s},Xi(e,o));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function Ea(e){var t=e.reference,n=e.element,r=e.placement,i=r?Ae(r):null,o=r?ht(r):null,a=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,f;switch(i){case ne:f={x:a,y:t.y-n.height};break;case he:f={x:a,y:t.y+t.height};break;case pe:f={x:t.x+t.width,y:s};break;case re:f={x:t.x-n.width,y:s};break;default:f={x:t.x,y:t.y}}var u=i?Br(i):null;if(u!=null){var l=u==="y"?"height":"width";switch(o){case ut:f[u]=f[u]-(t[l]/2-n[l]/2);break;case It:f[u]=f[u]+(t[l]/2-n[l]/2);break}}return f}function jt(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,o=n.boundary,a=o===void 0?nh:o,s=n.rootBoundary,f=s===void 0?ba:s,u=n.elementContext,l=u===void 0?At:u,c=n.altBoundary,d=c===void 0?!1:c,h=n.padding,m=h===void 0?0:h,v=Aa(typeof m!="number"?m:Sa(m,Ut)),g=l===At?rh:At,p=e.rects.popper,b=e.elements[d?g:l],y=Fh(ct(b)?b:b.contextElement||We(e.elements.popper),a,f),x=dt(e.elements.reference),$=Ea({reference:x,element:p,placement:i}),S=nr(Object.assign({},p,$)),E=l===At?S:x,D={top:y.top-E.top+v.top,bottom:E.bottom-y.bottom+v.bottom,left:y.left-E.left+v.left,right:E.right-y.right+v.right},C=e.modifiersData.offset;if(l===At&&C){var R=C[i];Object.keys(D).forEach(function(P){var L=[pe,he].indexOf(P)>=0?1:-1,I=[ne,he].indexOf(P)>=0?"y":"x";D[P]+=R[I]*L})}return D}function Ch(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,u=f===void 0?wa:f,l=ht(r),c=l?s?Ui:Ui.filter(function(m){return ht(m)===l}):Ut,d=c.filter(function(m){return u.indexOf(m)>=0});d.length===0&&(d=c);var h=d.reduce(function(m,v){return m[v]=jt(e,{placement:v,boundary:i,rootBoundary:o,padding:a})[Ae(v)],m},{});return Object.keys(h).sort(function(m,v){return h[m]-h[v]})}function Lh(e){if(Ae(e)===Nr)return[];var t=rn(e);return[Vi(e),t,Vi(t)]}function Ih(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=i===void 0?!0:i,a=n.altAxis,s=a===void 0?!0:a,f=n.fallbackPlacements,u=n.padding,l=n.boundary,c=n.rootBoundary,d=n.altBoundary,h=n.flipVariations,m=h===void 0?!0:h,v=n.allowedAutoPlacements,g=t.options.placement,p=Ae(g),b=p===g,y=f||(b||!m?[rn(g)]:Lh(g)),x=[g].concat(y).reduce(function(B,Y){return B.concat(Ae(Y)===Nr?Ch(t,{placement:Y,boundary:l,rootBoundary:c,padding:u,flipVariations:m,allowedAutoPlacements:v}):Y)},[]),$=t.rects.reference,S=t.rects.popper,E=new Map,D=!0,C=x[0],R=0;R=0,A=T?"width":"height",w=jt(t,{placement:P,boundary:l,rootBoundary:c,altBoundary:d,padding:u}),_=T?I?pe:re:I?he:ne;$[A]>S[A]&&(_=rn(_));var O=rn(_),M=[];if(o&&M.push(w[L]<=0),s&&M.push(w[_]<=0,w[O]<=0),M.every(function(B){return B})){C=P,D=!1;break}E.set(P,M)}if(D)for(var F=m?3:1,j=function(B){var Y=x.find(function(ie){var Z=E.get(ie);if(Z)return Z.slice(0,B).every(function(ee){return ee})});if(Y)return C=Y,"break"},q=F;q>0;q--){var H=j(q);if(H==="break")break}t.placement!==C&&(t.modifiersData[r]._skip=!0,t.placement=C,t.reset=!0)}}var jh={name:"flip",enabled:!0,phase:"main",fn:Ih,requiresIfExists:["offset"],data:{_skip:!1}};function Zi(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Ki(e){return[ne,pe,he,re].some(function(t){return e[t]>=0})}function Nh(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,a=jt(t,{elementContext:"reference"}),s=jt(t,{altBoundary:!0}),f=Zi(a,r),u=Zi(s,i,o),l=Ki(f),c=Ki(u);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:c},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":c})}var qh={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Nh};function Hh(e,t,n){var r=Ae(e),i=[re,ne].indexOf(r)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*i,[re,pe].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}function Bh(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=i===void 0?[0,0]:i,a=wa.reduce(function(l,c){return l[c]=Hh(c,t.rects,o),l},{}),s=a[t.placement],f=s.x,u=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=a}var Wh={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Bh};function kh(e){var t=e.state,n=e.name;t.modifiersData[n]=Ea({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})}var Pa={name:"popperOffsets",enabled:!0,phase:"read",fn:kh,data:{}};function Yh(e){return e==="x"?"y":"x"}function Uh(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=i===void 0?!0:i,a=n.altAxis,s=a===void 0?!1:a,f=n.boundary,u=n.rootBoundary,l=n.altBoundary,c=n.padding,d=n.tether,h=d===void 0?!0:d,m=n.tetherOffset,v=m===void 0?0:m,g=jt(t,{boundary:f,rootBoundary:u,padding:c,altBoundary:l}),p=Ae(t.placement),b=ht(t.placement),y=!b,x=Br(p),$=Yh(x),S=t.modifiersData.popperOffsets,E=t.rects.reference,D=t.rects.popper,C=typeof v=="function"?v(Object.assign({},t.rects,{placement:t.placement})):v,R=typeof C=="number"?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),P=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(S){if(o){var I,T=x==="y"?ne:re,A=x==="y"?he:pe,w=x==="y"?"height":"width",_=S[x],O=_+g[T],M=_-g[A],F=h?-D[w]/2:0,j=b===ut?E[w]:D[w],q=b===ut?-D[w]:-E[w],H=t.elements.arrow,B=h&&H?Hr(H):{width:0,height:0},Y=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:$a(),ie=Y[T],Z=Y[A],ee=Mt(0,E[w],B[w]),fe=y?E[w]/2-F-ee-ie-R.mainAxis:j-ee-ie-R.mainAxis,G=y?-E[w]/2+F+ee+Z+R.mainAxis:q+ee+Z+R.mainAxis,X=t.elements.arrow&&Gt(t.elements.arrow),ge=X?x==="y"?X.clientTop||0:X.clientLeft||0:0,ve=(I=P?.[x])!=null?I:0,et=_+fe-ve-ge,tt=_+G-ve,nt=Mt(h?wn(O,et):O,_,h?Ge(M,tt):M);S[x]=nt,L[x]=nt-_}if(s){var rt,xt=x==="x"?ne:re,Ot=x==="x"?he:pe,je=S[$],Zt=$==="y"?"height":"width",Qr=je+g[xt],Jr=je-g[Ot],Nn=[ne,re].indexOf(p)!==-1,ei=(rt=P?.[$])!=null?rt:0,ti=Nn?Qr:je-E[Zt]-D[Zt]-ei+R.altAxis,ni=Nn?je+E[Zt]+D[Zt]-ei-R.altAxis:Jr,ri=h&&Nn?yh(ti,je,ni):Mt(h?ti:Qr,je,h?ni:Jr);S[$]=ri,L[$]=ri-je}t.modifiersData[r]=L}}var Gh={name:"preventOverflow",enabled:!0,phase:"main",fn:Uh,requiresIfExists:["offset"]};function zh(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Vh(e){return e===$e(e)||!ce(e)?Wr(e):zh(e)}function Xh(e){var t=e.getBoundingClientRect(),n=lt(t.width)/e.offsetWidth||1,r=lt(t.height)/e.offsetHeight||1;return n!==1||r!==1}function Zh(e,t,n){n===void 0&&(n=!1);var r=ce(t),i=ce(t)&&Xh(t),o=We(t),a=dt(e,i),s={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&((Te(t)!=="body"||Yr(o))&&(s=Vh(t)),ce(t)?(f=dt(t,!0),f.x+=t.clientLeft,f.y+=t.clientTop):o&&(f.x=kr(o))),{x:a.left+s.scrollLeft-f.x,y:a.top+s.scrollTop-f.y,width:a.width,height:a.height}}function Kh(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function i(o){n.add(o.name);var a=[].concat(o.requires||[],o.requiresIfExists||[]);a.forEach(function(s){if(!n.has(s)){var f=t.get(s);f&&i(f)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||i(o)}),r}function Qh(e){var t=Kh(e);return hh.reduce(function(n,r){return n.concat(t.filter(function(i){return i.phase===r}))},[])}function Jh(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function ep(e){var t=e.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var Qi={placement:"bottom",modifiers:[],strategy:"absolute"};function Ji(){for(var e=arguments.length,t=new Array(e),n=0;n1)&&(e=1),e}function en(e){return e<=1?"".concat(Number(e)*100,"%"):e}function Ye(e){return e.length===1?"0"+e:String(e)}function op(e,t,n){return{r:V(e,255)*255,g:V(t,255)*255,b:V(n,255)*255}}function eo(e,t,n){e=V(e,255),t=V(t,255),n=V(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),o=0,a=0,s=(r+i)/2;if(r===i)a=0,o=0;else{var f=r-i;switch(a=s>.5?f/(2-r-i):f/(r+i),r){case e:o=(t-n)/f+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function ap(e,t,n){var r,i,o;if(e=V(e,360),t=V(t,100),n=V(n,100),t===0)i=n,o=n,r=n;else{var a=n<.5?n*(1+t):n+t-n*t,s=2*n-a;r=Yn(s,a,e+1/3),i=Yn(s,a,e),o=Yn(s,a,e-1/3)}return{r:r*255,g:i*255,b:o*255}}function to(e,t,n){e=V(e,255),t=V(t,255),n=V(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),o=0,a=r,s=r-i,f=r===0?0:s/r;if(r===i)o=0;else{switch(r){case e:o=(t-n)/s+(t>16,g:(e&65280)>>8,b:e&255}}var rr={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function lp(e){var t={r:0,g:0,b:0},n=1,r=null,i=null,o=null,a=!1,s=!1;return typeof e=="string"&&(e=pp(e)),typeof e=="object"&&(De(e.r)&&De(e.g)&&De(e.b)?(t=op(e.r,e.g,e.b),a=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):De(e.h)&&De(e.s)&&De(e.v)?(r=en(e.s),i=en(e.v),t=sp(e.h,r,i),a=!0,s="hsv"):De(e.h)&&De(e.s)&&De(e.l)&&(r=en(e.s),o=en(e.l),t=ap(e.h,r,o),a=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=Da(n),{ok:a,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var dp="[-\\+]?\\d+%?",hp="[-\\+]?\\d*\\.\\d+%?",Ne="(?:".concat(hp,")|(?:").concat(dp,")"),Un="[\\s|\\(]+(".concat(Ne,")[,|\\s]+(").concat(Ne,")[,|\\s]+(").concat(Ne,")\\s*\\)?"),Gn="[\\s|\\(]+(".concat(Ne,")[,|\\s]+(").concat(Ne,")[,|\\s]+(").concat(Ne,")[,|\\s]+(").concat(Ne,")\\s*\\)?"),me={CSS_UNIT:new RegExp(Ne),rgb:new RegExp("rgb"+Un),rgba:new RegExp("rgba"+Gn),hsl:new RegExp("hsl"+Un),hsla:new RegExp("hsla"+Gn),hsv:new RegExp("hsv"+Un),hsva:new RegExp("hsva"+Gn),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function pp(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(rr[e])e=rr[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=me.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=me.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=me.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=me.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=me.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=me.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=me.hex8.exec(e),n?{r:oe(n[1]),g:oe(n[2]),b:oe(n[3]),a:ro(n[4]),format:t?"name":"hex8"}:(n=me.hex6.exec(e),n?{r:oe(n[1]),g:oe(n[2]),b:oe(n[3]),format:t?"name":"hex"}:(n=me.hex4.exec(e),n?{r:oe(n[1]+n[1]),g:oe(n[2]+n[2]),b:oe(n[3]+n[3]),a:ro(n[4]+n[4]),format:t?"name":"hex8"}:(n=me.hex3.exec(e),n?{r:oe(n[1]+n[1]),g:oe(n[2]+n[2]),b:oe(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function De(e){return!!me.CSS_UNIT.exec(String(e))}var Qv=(function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var r;if(t instanceof e)return t;typeof t=="number"&&(t=cp(t)),this.originalInput=t;var i=lp(t);this.originalInput=t,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:i.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,r,i,o=t.r/255,a=t.g/255,s=t.b/255;return o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),s<=.03928?i=s/12.92:i=Math.pow((s+.055)/1.055,2.4),.2126*n+.7152*r+.0722*i},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=Da(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=to(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=to(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),i=Math.round(t.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=eo(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=eo(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),i=Math.round(t.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),no(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),fp(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(n,", ").concat(r,")"):"rgba(".concat(t,", ").concat(n,", ").concat(r,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(n){return"".concat(Math.round(V(n,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(V(n,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+no(this.r,this.g,this.b,!1),n=0,r=Object.entries(rr);n=0,o=!n&&i&&(t.startsWith("hex")||t==="name");return o?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(r=this.toRgbString()),t==="prgb"&&(r=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(r=this.toHexString()),t==="hex3"&&(r=this.toHexString(!0)),t==="hex4"&&(r=this.toHex8String(!0)),t==="hex8"&&(r=this.toHex8String()),t==="name"&&(r=this.toName()),t==="hsl"&&(r=this.toHslString()),t==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=Jt(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=Jt(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=Jt(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=Jt(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var r=this.toRgb(),i=new e(t).toRgb(),o=n/100,a={r:(i.r-r.r)*o+r.r,g:(i.g-r.g)*o+r.g,b:(i.b-r.b)*o+r.b,a:(i.a-r.a)*o+r.a};return new e(a)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var r=this.toHsl(),i=360/n,o=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,o.push(new e(r));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),r=n.h,i=n.s,o=n.v,a=[],s=1/t;t--;)a.push(new e({h:r,s:i,v:o})),o=(o+s)%1;return a},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb(),i=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/i,g:(n.g*n.a+r.g*r.a*(1-n.a))/i,b:(n.b*n.a+r.b*r.a*(1-n.a))/i,a:i})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,i=[this],o=360/t,a=1;a=A?T:""+Array(A+1-_.length).join(w)+T},x={s:y,z:function(T){var A=-T.utcOffset(),w=Math.abs(A),_=Math.floor(w/60),O=w%60;return(A<=0?"+":"-")+y(_,2,"0")+":"+y(O,2,"0")},m:function T(A,w){if(A.date()1)return T(F[0])}else{var j=A.name;S[j]=A,O=j}return!_&&O&&($=O),O||!_&&$},R=function(T,A){if(D(T))return T.clone();var w=typeof A=="object"?A:{};return w.date=T,w.args=arguments,new L(w)},P=x;P.l=C,P.i=D,P.w=function(T,A){return R(T,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var L=(function(){function T(w){this.$L=C(w.locale,null,!0),this.parse(w),this.$x=this.$x||w.x||{},this[E]=!0}var A=T.prototype;return A.parse=function(w){this.$d=(function(_){var O=_.date,M=_.utc;if(O===null)return new Date(NaN);if(P.u(O))return new Date;if(O instanceof Date)return new Date(O);if(typeof O=="string"&&!/Z$/i.test(O)){var F=O.match(g);if(F){var j=F[2]-1||0,q=(F[7]||"0").substring(0,3);return M?new Date(Date.UTC(F[1],j,F[3]||1,F[4]||0,F[5]||0,F[6]||0,q)):new Date(F[1],j,F[3]||1,F[4]||0,F[5]||0,F[6]||0,q)}}return new Date(O)})(w),this.init()},A.init=function(){var w=this.$d;this.$y=w.getFullYear(),this.$M=w.getMonth(),this.$D=w.getDate(),this.$W=w.getDay(),this.$H=w.getHours(),this.$m=w.getMinutes(),this.$s=w.getSeconds(),this.$ms=w.getMilliseconds()},A.$utils=function(){return P},A.isValid=function(){return this.$d.toString()!==v},A.isSame=function(w,_){var O=R(w);return this.startOf(_)<=O&&O<=this.endOf(_)},A.isAfter=function(w,_){return R(w)68?1900:2e3)},l=function(g){return function(p){this[g]=+p}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(p){if(!p||p==="Z")return 0;var b=p.match(/([+-]|\d\d)/g),y=60*b[1]+(+b[2]||0);return y===0?0:b[0]==="+"?-y:y})(g)}],d=function(g){var p=f[g];return p&&(p.indexOf?p:p.s.concat(p.f))},h=function(g,p){var b,y=f.meridiem;if(y){for(var x=1;x<=24;x+=1)if(g.indexOf(y(x,0,p))>-1){b=x>12;break}}else b=g===(p?"pm":"PM");return b},m={A:[s,function(g){this.afternoon=h(g,!1)}],a:[s,function(g){this.afternoon=h(g,!0)}],Q:[i,function(g){this.month=3*(g-1)+1}],S:[i,function(g){this.milliseconds=100*+g}],SS:[o,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[a,l("seconds")],ss:[a,l("seconds")],m:[a,l("minutes")],mm:[a,l("minutes")],H:[a,l("hours")],h:[a,l("hours")],HH:[a,l("hours")],hh:[a,l("hours")],D:[a,l("day")],DD:[o,l("day")],Do:[s,function(g){var p=f.ordinal,b=g.match(/\d+/);if(this.day=b[0],p)for(var y=1;y<=31;y+=1)p(y).replace(/\[|\]/g,"")===g&&(this.day=y)}],w:[a,l("week")],ww:[o,l("week")],M:[a,l("month")],MM:[o,l("month")],MMM:[s,function(g){var p=d("months"),b=(d("monthsShort")||p.map((function(y){return y.slice(0,3)}))).indexOf(g)+1;if(b<1)throw new Error;this.month=b%12||b}],MMMM:[s,function(g){var p=d("months").indexOf(g)+1;if(p<1)throw new Error;this.month=p%12||p}],Y:[/[+-]?\d+/,l("year")],YY:[o,function(g){this.year=u(g)}],YYYY:[/\d{4}/,l("year")],Z:c,ZZ:c};function v(g){var p,b;p=g,b=f&&f.formats;for(var y=(g=p.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(R,P,L){var I=L&&L.toUpperCase();return P||b[L]||n[L]||b[I].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(T,A,w){return A||w.slice(1)}))}))).match(r),x=y.length,$=0;$-1)return new Date((O==="X"?1e3:1)*_);var j=v(O)(_),q=j.year,H=j.month,B=j.day,Y=j.hours,ie=j.minutes,Z=j.seconds,ee=j.milliseconds,fe=j.zone,G=j.week,X=new Date,ge=B||(q||H?1:X.getDate()),ve=q||X.getFullYear(),et=0;q&&!H||(et=H>0?H-1:X.getMonth());var tt,nt=Y||0,rt=ie||0,xt=Z||0,Ot=ee||0;return fe?new Date(Date.UTC(ve,et,ge,nt,rt,xt,Ot+60*fe.offset*1e3)):M?new Date(Date.UTC(ve,et,ge,nt,rt,xt,Ot)):(tt=new Date(ve,et,ge,nt,rt,xt,Ot),G&&(tt=F(tt).week(G).toDate()),tt)}catch{return new Date("")}})(S,C,E,b),this.init(),I&&I!==!0&&(this.$L=this.locale(I).$L),L&&S!=this.format(C)&&(this.$d=new Date("")),f={}}else if(C instanceof Array)for(var T=C.length,A=1;A<=T;A+=1){D[1]=C[A-1];var w=b.apply(this,D);if(w.isValid()){this.$d=w.$d,this.$L=w.$L,this.init();break}A===T&&(this.$d=new Date(""))}else x.call(this,$)}}}))})(sn)),sn.exports}var $p=Op();const tm=Ie($p);var fn={exports:{}},Ap=fn.exports,so;function Sp(){return so||(so=1,(function(e,t){(function(n,r){e.exports=r()})(Ap,(function(){return function(n,r){var i=r.prototype,o=i.format;i.format=function(a){var s=this,f=this.$locale();if(!this.isValid())return o.bind(this)(a);var u=this.$utils(),l=(a||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(c){switch(c){case"Q":return Math.ceil((s.$M+1)/3);case"Do":return f.ordinal(s.$D);case"gggg":return s.weekYear();case"GGGG":return s.isoWeekYear();case"wo":return f.ordinal(s.week(),"W");case"w":case"ww":return u.s(s.week(),c==="w"?1:2,"0");case"W":case"WW":return u.s(s.isoWeek(),c==="W"?1:2,"0");case"k":case"kk":return u.s(String(s.$H===0?24:s.$H),c==="k"?1:2,"0");case"X":return Math.floor(s.$d.getTime()/1e3);case"x":return s.$d.getTime();case"z":return"["+s.offsetName()+"]";case"zzz":return"["+s.offsetName("long")+"]";default:return c}}));return o.bind(this)(l)}}}))})(fn)),fn.exports}var _p=Sp();const nm=Ie(_p);var un={exports:{}},Tp=un.exports,fo;function Mp(){return fo||(fo=1,(function(e,t){(function(n,r){e.exports=r()})(Tp,(function(){var n="week",r="year";return function(i,o,a){var s=o.prototype;s.week=function(f){if(f===void 0&&(f=null),f!==null)return this.add(7*(f-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var l=a(this).startOf(r).add(1,r).date(u),c=a(this).endOf(n);if(l.isBefore(c))return 1}var d=a(this).startOf(r).date(u).startOf(n).subtract(1,"millisecond"),h=this.diff(d,n,!0);return h<0?a(this).startOf("week").week():Math.ceil(h)},s.weeks=function(f){return f===void 0&&(f=null),this.week(f)}}}))})(un)),un.exports}var Ep=Mp();const rm=Ie(Ep);var cn={exports:{}},Pp=cn.exports,uo;function Dp(){return uo||(uo=1,(function(e,t){(function(n,r){e.exports=r()})(Pp,(function(){return function(n,r){r.prototype.weekYear=function(){var i=this.month(),o=this.week(),a=this.year();return o===1&&i===11?a+1:i===0&&o>=52?a-1:a}}}))})(cn)),cn.exports}var Rp=Dp();const im=Ie(Rp);var ln={exports:{}},Fp=ln.exports,co;function Cp(){return co||(co=1,(function(e,t){(function(n,r){e.exports=r()})(Fp,(function(){return function(n,r,i){r.prototype.dayOfYear=function(o){var a=Math.round((i(this).startOf("day")-i(this).startOf("year"))/864e5)+1;return o==null?a:this.add(o-a,"day")}}}))})(ln)),ln.exports}var Lp=Cp();const om=Ie(Lp);var dn={exports:{}},Ip=dn.exports,lo;function jp(){return lo||(lo=1,(function(e,t){(function(n,r){e.exports=r()})(Ip,(function(){return function(n,r){r.prototype.isSameOrAfter=function(i,o){return this.isSame(i,o)||this.isAfter(i,o)}}}))})(dn)),dn.exports}var Np=jp();const am=Ie(Np);var hn={exports:{}},qp=hn.exports,ho;function Hp(){return ho||(ho=1,(function(e,t){(function(n,r){e.exports=r()})(qp,(function(){return function(n,r){r.prototype.isSameOrBefore=function(i,o){return this.isSame(i,o)||this.isBefore(i,o)}}}))})(hn)),hn.exports}var Bp=Hp();const sm=Ie(Bp);function Ue(){return Ue=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function pn(e,t,n){return kp()?pn=Reflect.construct.bind():pn=function(i,o,a){var s=[null];s.push.apply(s,o);var f=Function.bind.apply(i,s),u=new f;return a&&Nt(u,a.prototype),u},pn.apply(null,arguments)}function Yp(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function or(e){var t=typeof Map=="function"?new Map:void 0;return or=function(r){if(r===null||!Yp(r))return r;if(typeof r!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(r))return t.get(r);t.set(r,i)}function i(){return pn(r,arguments,ir(this).constructor)}return i.prototype=Object.create(r.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),Nt(i,r)},or(e)}var Up=/%[sdj%]/g,Gp=function(){};function ar(e){if(!e||!e.length)return null;var t={};return e.forEach(function(n){var r=n.field;t[r]=t[r]||[],t[r].push(n)}),t}function ae(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=o)return s;switch(s){case"%s":return String(n[i++]);case"%d":return Number(n[i++]);case"%j":try{return JSON.stringify(n[i++])}catch{return"[Circular]"}break;default:return s}});return a}return e}function zp(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function z(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||zp(t)&&typeof e=="string"&&!e)}function Vp(e,t,n){var r=[],i=0,o=e.length;function a(s){r.push.apply(r,s||[]),i++,i===o&&n(r)}e.forEach(function(s){t(s,a)})}function po(e,t,n){var r=0,i=e.length;function o(a){if(a&&a.length){n(a);return}var s=r;r=r+1,s()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},St={integer:function(t){return St.number(t)&&parseInt(t,10)===t},float:function(t){return St.number(t)&&!St.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!St.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(yo.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(eg())},hex:function(t){return typeof t=="string"&&!!t.match(yo.hex)}},tg=function(t,n,r,i,o){if(t.required&&n===void 0){Ra(t,n,r,i,o);return}var a=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=t.type;a.indexOf(s)>-1?St[s](n)||i.push(ae(o.messages.types[s],t.fullField,t.type)):s&&typeof n!==t.type&&i.push(ae(o.messages.types[s],t.fullField,t.type))},ng=function(t,n,r,i,o){var a=typeof t.len=="number",s=typeof t.min=="number",f=typeof t.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=n,c=null,d=typeof n=="number",h=typeof n=="string",m=Array.isArray(n);if(d?c="number":h?c="string":m&&(c="array"),!c)return!1;m&&(l=n.length),h&&(l=n.replace(u,"_").length),a?l!==t.len&&i.push(ae(o.messages[c].len,t.fullField,t.len)):s&&!f&<.max?i.push(ae(o.messages[c].max,t.fullField,t.max)):s&&f&&(lt.max)&&i.push(ae(o.messages[c].range,t.fullField,t.min,t.max))},it="enum",rg=function(t,n,r,i,o){t[it]=Array.isArray(t[it])?t[it]:[],t[it].indexOf(n)===-1&&i.push(ae(o.messages[it],t.fullField,t[it].join(", ")))},ig=function(t,n,r,i,o){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||i.push(ae(o.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern=="string"){var a=new RegExp(t.pattern);a.test(n)||i.push(ae(o.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},N={required:Ra,whitespace:Jp,type:tg,range:ng,enum:rg,pattern:ig},og=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n,"string")&&!t.required)return r();N.required(t,n,i,a,o,"string"),z(n,"string")||(N.type(t,n,i,a,o),N.range(t,n,i,a,o),N.pattern(t,n,i,a,o),t.whitespace===!0&&N.whitespace(t,n,i,a,o))}r(a)},ag=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n)&&!t.required)return r();N.required(t,n,i,a,o),n!==void 0&&N.type(t,n,i,a,o)}r(a)},sg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(n===""&&(n=void 0),z(n)&&!t.required)return r();N.required(t,n,i,a,o),n!==void 0&&(N.type(t,n,i,a,o),N.range(t,n,i,a,o))}r(a)},fg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n)&&!t.required)return r();N.required(t,n,i,a,o),n!==void 0&&N.type(t,n,i,a,o)}r(a)},ug=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n)&&!t.required)return r();N.required(t,n,i,a,o),z(n)||N.type(t,n,i,a,o)}r(a)},cg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n)&&!t.required)return r();N.required(t,n,i,a,o),n!==void 0&&(N.type(t,n,i,a,o),N.range(t,n,i,a,o))}r(a)},lg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n)&&!t.required)return r();N.required(t,n,i,a,o),n!==void 0&&(N.type(t,n,i,a,o),N.range(t,n,i,a,o))}r(a)},dg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(n==null&&!t.required)return r();N.required(t,n,i,a,o,"array"),n!=null&&(N.type(t,n,i,a,o),N.range(t,n,i,a,o))}r(a)},hg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n)&&!t.required)return r();N.required(t,n,i,a,o),n!==void 0&&N.type(t,n,i,a,o)}r(a)},pg="enum",gg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n)&&!t.required)return r();N.required(t,n,i,a,o),n!==void 0&&N[pg](t,n,i,a,o)}r(a)},vg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n,"string")&&!t.required)return r();N.required(t,n,i,a,o),z(n,"string")||N.pattern(t,n,i,a,o)}r(a)},mg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n,"date")&&!t.required)return r();if(N.required(t,n,i,a,o),!z(n,"date")){var f;n instanceof Date?f=n:f=new Date(n),N.type(t,f,i,a,o),f&&N.range(t,f.getTime(),i,a,o)}}r(a)},yg=function(t,n,r,i,o){var a=[],s=Array.isArray(n)?"array":typeof n;N.required(t,n,i,a,o,s),r(a)},zn=function(t,n,r,i,o){var a=t.type,s=[],f=t.required||!t.required&&i.hasOwnProperty(t.field);if(f){if(z(n,a)&&!t.required)return r();N.required(t,n,i,s,o,a),z(n,a)||N.type(t,n,i,s,o)}r(s)},bg=function(t,n,r,i,o){var a=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(z(n)&&!t.required)return r();N.required(t,n,i,a,o)}r(a)},Pt={string:og,method:ag,number:sg,boolean:fg,regexp:ug,integer:cg,float:lg,array:dg,object:hg,enum:gg,pattern:vg,date:mg,url:zn,hex:zn,email:zn,required:yg,any:bg};function sr(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var fr=sr(),Fn=(function(){function e(n){this.rules=null,this._messages=fr,this.define(n)}var t=e.prototype;return t.define=function(r){var i=this;if(!r)throw new Error("Cannot configure a schema with no rules");if(typeof r!="object"||Array.isArray(r))throw new Error("Rules must be an object");this.rules={},Object.keys(r).forEach(function(o){var a=r[o];i.rules[o]=Array.isArray(a)?a:[a]})},t.messages=function(r){return r&&(this._messages=mo(sr(),r)),this._messages},t.validate=function(r,i,o){var a=this;i===void 0&&(i={}),o===void 0&&(o=function(){});var s=r,f=i,u=o;if(typeof f=="function"&&(u=f,f={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,s),Promise.resolve(s);function l(v){var g=[],p={};function b(x){if(Array.isArray(x)){var $;g=($=g).concat.apply($,x)}else g.push(x)}for(var y=0;yke},ie64:function(){return vr.ie()&&Ca},firefox:function(){return te()||ur},opera:function(){return te()||cr},webkit:function(){return te()||gn},safari:function(){return vr.webkit()},chrome:function(){return te()||vn},windows:function(){return te()||lr},osx:function(){return te()||mn},linux:function(){return te()||dr},iphone:function(){return te()||pr},mobile:function(){return te()||pr||gr||hr||Ia},nativeApp:function(){return te()||La},android:function(){return te()||hr},ipad:function(){return te()||gr}},Og=vr,$g=!!(typeof window<"u"&&window.document&&window.document.createElement),Ag={canUseDOM:$g},ja=Ag,Na;ja.canUseDOM&&(Na=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function Sg(e,t){if(!ja.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var i=document.createElement("div");i.setAttribute(n,"return;"),r=typeof i[n]=="function"}return!r&&Na&&e==="wheel"&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var _g=Sg,xo=10,Oo=40,$o=800;function qa(e){var t=0,n=0,r=0,i=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*xo,i=n*xo,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(r=e.deltaX),(r||i)&&e.deltaMode&&(e.deltaMode==1?(r*=Oo,i*=Oo):(r*=$o,i*=$o)),r&&!t&&(t=r<1?-1:1),i&&!n&&(n=i<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:i}}qa.getEventType=function(){return Og.firefox()?"DOMMouseScroll":_g("wheel")?"wheel":"mousewheel"};var um=qa;const pt=Math.min,ze=Math.max,xn=Math.round,nn=Math.floor,Se=e=>({x:e,y:e}),Tg={left:"right",right:"left",bottom:"top",top:"bottom"},Mg={start:"end",end:"start"};function mr(e,t,n){return ze(e,pt(t,n))}function zt(e,t){return typeof e=="function"?e(t):e}function Xe(e){return e.split("-")[0]}function Vt(e){return e.split("-")[1]}function Ha(e){return e==="x"?"y":"x"}function Gr(e){return e==="y"?"height":"width"}const Eg=new Set(["top","bottom"]);function qe(e){return Eg.has(Xe(e))?"y":"x"}function zr(e){return Ha(qe(e))}function Pg(e,t,n){n===void 0&&(n=!1);const r=Vt(e),i=zr(e),o=Gr(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=On(a)),[a,On(a)]}function Dg(e){const t=On(e);return[yr(e),t,yr(t)]}function yr(e){return e.replace(/start|end/g,t=>Mg[t])}const Ao=["left","right"],So=["right","left"],Rg=["top","bottom"],Fg=["bottom","top"];function Cg(e,t,n){switch(e){case"top":case"bottom":return n?t?So:Ao:t?Ao:So;case"left":case"right":return t?Rg:Fg;default:return[]}}function Lg(e,t,n,r){const i=Vt(e);let o=Cg(Xe(e),n==="start",r);return i&&(o=o.map(a=>a+"-"+i),t&&(o=o.concat(o.map(yr)))),o}function On(e){return e.replace(/left|right|bottom|top/g,t=>Tg[t])}function Ig(e){return{top:0,right:0,bottom:0,left:0,...e}}function Ba(e){return typeof e!="number"?Ig(e):{top:e,right:e,bottom:e,left:e}}function $n(e){const{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function _o(e,t,n){let{reference:r,floating:i}=e;const o=qe(t),a=zr(t),s=Gr(a),f=Xe(t),u=o==="y",l=r.x+r.width/2-i.width/2,c=r.y+r.height/2-i.height/2,d=r[s]/2-i[s]/2;let h;switch(f){case"top":h={x:l,y:r.y-i.height};break;case"bottom":h={x:l,y:r.y+r.height};break;case"right":h={x:r.x+r.width,y:c};break;case"left":h={x:r.x-i.width,y:c};break;default:h={x:r.x,y:r.y}}switch(Vt(t)){case"start":h[a]-=d*(n&&u?-1:1);break;case"end":h[a]+=d*(n&&u?-1:1);break}return h}const jg=async(e,t,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=o.filter(Boolean),f=await(a.isRTL==null?void 0:a.isRTL(t));let u=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:l,y:c}=_o(u,r,f),d=r,h={},m=0;for(let v=0;v({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:i,rects:o,platform:a,elements:s,middlewareData:f}=t,{element:u,padding:l=0}=zt(e,t)||{};if(u==null)return{};const c=Ba(l),d={x:n,y:r},h=zr(i),m=Gr(h),v=await a.getDimensions(u),g=h==="y",p=g?"top":"left",b=g?"bottom":"right",y=g?"clientHeight":"clientWidth",x=o.reference[m]+o.reference[h]-d[h]-o.floating[m],$=d[h]-o.reference[h],S=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u));let E=S?S[y]:0;(!E||!await(a.isElement==null?void 0:a.isElement(S)))&&(E=s.floating[y]||o.floating[m]);const D=x/2-$/2,C=E/2-v[m]/2-1,R=pt(c[p],C),P=pt(c[b],C),L=R,I=E-v[m]-P,T=E/2-v[m]/2+D,A=mr(L,T,I),w=!f.arrow&&Vt(i)!=null&&T!==A&&o.reference[m]/2-(TT<=0)){var P,L;const T=(((P=o.flip)==null?void 0:P.index)||0)+1,A=E[T];if(A&&(!(c==="alignment"?b!==qe(A):!1)||R.every(O=>qe(O.placement)===b?O.overflows[0]>0:!0)))return{data:{index:T,overflows:R},reset:{placement:A}};let w=(L=R.filter(_=>_.overflows[0]<=0).sort((_,O)=>_.overflows[1]-O.overflows[1])[0])==null?void 0:L.placement;if(!w)switch(h){case"bestFit":{var I;const _=(I=R.filter(O=>{if(S){const M=qe(O.placement);return M===b||M==="y"}return!0}).map(O=>[O.placement,O.overflows.filter(M=>M>0).reduce((M,F)=>M+F,0)]).sort((O,M)=>O[1]-M[1])[0])==null?void 0:I[0];_&&(w=_);break}case"initialPlacement":w=s;break}if(i!==w)return{reset:{placement:w}}}return{}}}},Hg=new Set(["left","top"]);async function Bg(e,t){const{placement:n,platform:r,elements:i}=e,o=await(r.isRTL==null?void 0:r.isRTL(i.floating)),a=Xe(n),s=Vt(n),f=qe(n)==="y",u=Hg.has(a)?-1:1,l=o&&f?-1:1,c=zt(t,e);let{mainAxis:d,crossAxis:h,alignmentAxis:m}=typeof c=="number"?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:c.mainAxis||0,crossAxis:c.crossAxis||0,alignmentAxis:c.alignmentAxis};return s&&typeof m=="number"&&(h=s==="end"?m*-1:m),f?{x:h*l,y:d*u}:{x:d*u,y:h*l}}const Wg=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:i,y:o,placement:a,middlewareData:s}=t,f=await Bg(t,e);return a===((n=s.offset)==null?void 0:n.placement)&&(r=s.arrow)!=null&&r.alignmentOffset?{}:{x:i+f.x,y:o+f.y,data:{...f,placement:a}}}}},kg=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:i}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:s={fn:g=>{let{x:p,y:b}=g;return{x:p,y:b}}},...f}=zt(e,t),u={x:n,y:r},l=await Vr(t,f),c=qe(Xe(i)),d=Ha(c);let h=u[d],m=u[c];if(o){const g=d==="y"?"top":"left",p=d==="y"?"bottom":"right",b=h+l[g],y=h-l[p];h=mr(b,h,y)}if(a){const g=c==="y"?"top":"left",p=c==="y"?"bottom":"right",b=m+l[g],y=m-l[p];m=mr(b,m,y)}const v=s.fn({...t,[d]:h,[c]:m});return{...v,data:{x:v.x-n,y:v.y-r,enabled:{[d]:o,[c]:a}}}}}};function Cn(){return typeof window<"u"}function wt(e){return Wa(e)?(e.nodeName||"").toLowerCase():"#document"}function se(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Pe(e){var t;return(t=(Wa(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Wa(e){return Cn()?e instanceof Node||e instanceof se(e).Node:!1}function we(e){return Cn()?e instanceof Element||e instanceof se(e).Element:!1}function Me(e){return Cn()?e instanceof HTMLElement||e instanceof se(e).HTMLElement:!1}function To(e){return!Cn()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof se(e).ShadowRoot}const Yg=new Set(["inline","contents"]);function Xt(e){const{overflow:t,overflowX:n,overflowY:r,display:i}=xe(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!Yg.has(i)}const Ug=new Set(["table","td","th"]);function Gg(e){return Ug.has(wt(e))}const zg=[":popover-open",":modal"];function Ln(e){return zg.some(t=>{try{return e.matches(t)}catch{return!1}})}const Vg=["transform","translate","scale","rotate","perspective"],Xg=["transform","translate","scale","rotate","perspective","filter"],Zg=["paint","layout","strict","content"];function Xr(e){const t=Zr(),n=we(e)?xe(e):e;return Vg.some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||Xg.some(r=>(n.willChange||"").includes(r))||Zg.some(r=>(n.contain||"").includes(r))}function Kg(e){let t=Be(e);for(;Me(t)&&!gt(t);){if(Xr(t))return t;if(Ln(t))return null;t=Be(t)}return null}function Zr(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const Qg=new Set(["html","body","#document"]);function gt(e){return Qg.has(wt(e))}function xe(e){return se(e).getComputedStyle(e)}function In(e){return we(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Be(e){if(wt(e)==="html")return e;const t=e.assignedSlot||e.parentNode||To(e)&&e.host||Pe(e);return To(t)?t.host:t}function ka(e){const t=Be(e);return gt(t)?e.ownerDocument?e.ownerDocument.body:e.body:Me(t)&&Xt(t)?t:ka(t)}function qt(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const i=ka(e),o=i===((r=e.ownerDocument)==null?void 0:r.body),a=se(i);if(o){const s=br(a);return t.concat(a,a.visualViewport||[],Xt(i)?i:[],s&&n?qt(s):[])}return t.concat(i,qt(i,[],n))}function br(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ya(e){const t=xe(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const i=Me(e),o=i?e.offsetWidth:n,a=i?e.offsetHeight:r,s=xn(n)!==o||xn(r)!==a;return s&&(n=o,r=a),{width:n,height:r,$:s}}function Kr(e){return we(e)?e:e.contextElement}function st(e){const t=Kr(e);if(!Me(t))return Se(1);const n=t.getBoundingClientRect(),{width:r,height:i,$:o}=Ya(t);let a=(o?xn(n.width):n.width)/r,s=(o?xn(n.height):n.height)/i;return(!a||!Number.isFinite(a))&&(a=1),(!s||!Number.isFinite(s))&&(s=1),{x:a,y:s}}const Jg=Se(0);function Ua(e){const t=se(e);return!Zr()||!t.visualViewport?Jg:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function ev(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==se(e)?!1:t}function Ze(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),o=Kr(e);let a=Se(1);t&&(r?we(r)&&(a=st(r)):a=st(e));const s=ev(o,n,r)?Ua(o):Se(0);let f=(i.left+s.x)/a.x,u=(i.top+s.y)/a.y,l=i.width/a.x,c=i.height/a.y;if(o){const d=se(o),h=r&&we(r)?se(r):r;let m=d,v=br(m);for(;v&&r&&h!==m;){const g=st(v),p=v.getBoundingClientRect(),b=xe(v),y=p.left+(v.clientLeft+parseFloat(b.paddingLeft))*g.x,x=p.top+(v.clientTop+parseFloat(b.paddingTop))*g.y;f*=g.x,u*=g.y,l*=g.x,c*=g.y,f+=y,u+=x,m=se(v),v=br(m)}}return $n({width:l,height:c,x:f,y:u})}function jn(e,t){const n=In(e).scrollLeft;return t?t.left+n:Ze(Pe(e)).left+n}function Ga(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-jn(e,n),i=n.top+t.scrollTop;return{x:r,y:i}}function tv(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e;const o=i==="fixed",a=Pe(r),s=t?Ln(t.floating):!1;if(r===a||s&&o)return n;let f={scrollLeft:0,scrollTop:0},u=Se(1);const l=Se(0),c=Me(r);if((c||!c&&!o)&&((wt(r)!=="body"||Xt(a))&&(f=In(r)),Me(r))){const h=Ze(r);u=st(r),l.x=h.x+r.clientLeft,l.y=h.y+r.clientTop}const d=a&&!c&&!o?Ga(a,f):Se(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-f.scrollLeft*u.x+l.x+d.x,y:n.y*u.y-f.scrollTop*u.y+l.y+d.y}}function nv(e){return Array.from(e.getClientRects())}function rv(e){const t=Pe(e),n=In(e),r=e.ownerDocument.body,i=ze(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=ze(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+jn(e);const s=-n.scrollTop;return xe(r).direction==="rtl"&&(a+=ze(t.clientWidth,r.clientWidth)-i),{width:i,height:o,x:a,y:s}}const Mo=25;function iv(e,t){const n=se(e),r=Pe(e),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,f=0;if(i){o=i.width,a=i.height;const l=Zr();(!l||l&&t==="fixed")&&(s=i.offsetLeft,f=i.offsetTop)}const u=jn(r);if(u<=0){const l=r.ownerDocument,c=l.body,d=getComputedStyle(c),h=l.compatMode==="CSS1Compat"&&parseFloat(d.marginLeft)+parseFloat(d.marginRight)||0,m=Math.abs(r.clientWidth-c.clientWidth-h);m<=Mo&&(o-=m)}else u<=Mo&&(o+=u);return{width:o,height:a,x:s,y:f}}const ov=new Set(["absolute","fixed"]);function av(e,t){const n=Ze(e,!0,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft,o=Me(e)?st(e):Se(1),a=e.clientWidth*o.x,s=e.clientHeight*o.y,f=i*o.x,u=r*o.y;return{width:a,height:s,x:f,y:u}}function Eo(e,t,n){let r;if(t==="viewport")r=iv(e,n);else if(t==="document")r=rv(Pe(e));else if(we(t))r=av(t,n);else{const i=Ua(e);r={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return $n(r)}function za(e,t){const n=Be(e);return n===t||!we(n)||gt(n)?!1:xe(n).position==="fixed"||za(n,t)}function sv(e,t){const n=t.get(e);if(n)return n;let r=qt(e,[],!1).filter(s=>we(s)&&wt(s)!=="body"),i=null;const o=xe(e).position==="fixed";let a=o?Be(e):e;for(;we(a)&&!gt(a);){const s=xe(a),f=Xr(a);!f&&s.position==="fixed"&&(i=null),(o?!f&&!i:!f&&s.position==="static"&&!!i&&ov.has(i.position)||Xt(a)&&!f&&za(e,a))?r=r.filter(l=>l!==a):i=s,a=Be(a)}return t.set(e,r),r}function fv(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e;const a=[...n==="clippingAncestors"?Ln(t)?[]:sv(t,this._c):[].concat(n),r],s=a[0],f=a.reduce((u,l)=>{const c=Eo(t,l,i);return u.top=ze(c.top,u.top),u.right=pt(c.right,u.right),u.bottom=pt(c.bottom,u.bottom),u.left=ze(c.left,u.left),u},Eo(t,s,i));return{width:f.right-f.left,height:f.bottom-f.top,x:f.left,y:f.top}}function uv(e){const{width:t,height:n}=Ya(e);return{width:t,height:n}}function cv(e,t,n){const r=Me(t),i=Pe(t),o=n==="fixed",a=Ze(e,!0,o,t);let s={scrollLeft:0,scrollTop:0};const f=Se(0);function u(){f.x=jn(i)}if(r||!r&&!o)if((wt(t)!=="body"||Xt(i))&&(s=In(t)),r){const h=Ze(t,!0,o,t);f.x=h.x+t.clientLeft,f.y=h.y+t.clientTop}else i&&u();o&&!r&&i&&u();const l=i&&!r&&!o?Ga(i,s):Se(0),c=a.left+s.scrollLeft-f.x-l.x,d=a.top+s.scrollTop-f.y-l.y;return{x:c,y:d,width:a.width,height:a.height}}function Vn(e){return xe(e).position==="static"}function Po(e,t){if(!Me(e)||xe(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return Pe(e)===n&&(n=n.ownerDocument.body),n}function Va(e,t){const n=se(e);if(Ln(e))return n;if(!Me(e)){let i=Be(e);for(;i&&!gt(i);){if(we(i)&&!Vn(i))return i;i=Be(i)}return n}let r=Po(e,t);for(;r&&Gg(r)&&Vn(r);)r=Po(r,t);return r&>(r)&&Vn(r)&&!Xr(r)?n:r||Kg(e)||n}const lv=async function(e){const t=this.getOffsetParent||Va,n=this.getDimensions,r=await n(e.floating);return{reference:cv(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function dv(e){return xe(e).direction==="rtl"}const hv={convertOffsetParentRelativeRectToViewportRelativeRect:tv,getDocumentElement:Pe,getClippingRect:fv,getOffsetParent:Va,getElementRects:lv,getClientRects:nv,getDimensions:uv,getScale:st,isElement:we,isRTL:dv};function Xa(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function pv(e,t){let n=null,r;const i=Pe(e);function o(){var s;clearTimeout(r),(s=n)==null||s.disconnect(),n=null}function a(s,f){s===void 0&&(s=!1),f===void 0&&(f=1),o();const u=e.getBoundingClientRect(),{left:l,top:c,width:d,height:h}=u;if(s||t(),!d||!h)return;const m=nn(c),v=nn(i.clientWidth-(l+d)),g=nn(i.clientHeight-(c+h)),p=nn(l),y={rootMargin:-m+"px "+-v+"px "+-g+"px "+-p+"px",threshold:ze(0,pt(1,f))||1};let x=!0;function $(S){const E=S[0].intersectionRatio;if(E!==f){if(!x)return a();E?a(!1,E):r=setTimeout(()=>{a(!1,1e-7)},1e3)}E===1&&!Xa(u,e.getBoundingClientRect())&&a(),x=!1}try{n=new IntersectionObserver($,{...y,root:i.ownerDocument})}catch{n=new IntersectionObserver($,y)}n.observe(e)}return a(!0),o}function cm(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:f=!1}=r,u=Kr(e),l=i||o?[...u?qt(u):[],...qt(t)]:[];l.forEach(p=>{i&&p.addEventListener("scroll",n,{passive:!0}),o&&p.addEventListener("resize",n)});const c=u&&s?pv(u,n):null;let d=-1,h=null;a&&(h=new ResizeObserver(p=>{let[b]=p;b&&b.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(d),d=requestAnimationFrame(()=>{var y;(y=h)==null||y.observe(t)})),n()}),u&&!f&&h.observe(u),h.observe(t));let m,v=f?Ze(e):null;f&&g();function g(){const p=Ze(e);v&&!Xa(v,p)&&n(),v=p,m=requestAnimationFrame(g)}return n(),()=>{var p;l.forEach(b=>{i&&b.removeEventListener("scroll",n),o&&b.removeEventListener("resize",n)}),c?.(),(p=h)==null||p.disconnect(),h=null,f&&cancelAnimationFrame(m)}}const lm=Vr,dm=Wg,hm=kg,pm=qg,gm=Ng,vm=(e,t,n)=>{const r=new Map,i={platform:hv,...n},o={...i.platform,_c:r};return jg(e,t,{...i,platform:o})};export{um as $,Iv as A,Fv as B,tm as C,Pu as D,wa as E,nm as F,rm as G,im as H,om as I,am as J,sm as K,qv as L,Lv as M,jv as N,yv as O,Gv as P,Id as Q,wv as R,Fn as S,Qv as T,zv as U,mv as V,Pr as W,fm as X,_v as Y,Mv as Z,xv as _,Dn as a,kv as a0,Xv as a1,Uv as a2,Ev as a3,gm as a4,vm as a5,dm as a6,Vv as a7,pm as a8,hm as a9,cm as aa,lm as ab,Bv as ac,Av as b,Yv as c,ue as d,Cv as e,$v as f,Mu as g,ya as h,Sv as i,K as j,Tv as k,sd as l,Nv as m,Jv as n,Hv as o,Pv as p,em as q,Rv as r,Dv as s,Yt as t,Zv as u,Ov as v,bv as w,Wv as x,Kv as y,vv as z}; diff --git a/static/admin/assets/vendor-misc-DszMq72k.js b/static/admin/assets/vendor-misc-DszMq72k.js new file mode 100644 index 0000000..1b56992 --- /dev/null +++ b/static/admin/assets/vendor-misc-DszMq72k.js @@ -0,0 +1,12 @@ +import{r as Y,$ as Na,u as La,av as us,ai as cs,g as Ba,o as ja,z as ls,s as ds,m as Ha,c as ce,l as he,e as Wn,S as ci,aw as hs,k as Ar,a8 as K,K as ps}from"./vendor-vue-CVxSw_oJ.js";var qa=typeof global=="object"&&global&&global.Object===Object&&global,vs=typeof self=="object"&&self&&self.Object===Object&&self,Ee=qa||vs||Function("return this")(),pe=Ee.Symbol,ka=Object.prototype,gs=ka.hasOwnProperty,ms=ka.toString,_t=pe?pe.toStringTag:void 0;function ys(e){var t=gs.call(e,_t),n=e[_t];try{e[_t]=void 0;var r=!0}catch{}var i=ms.call(e);return r&&(t?e[_t]=n:delete e[_t]),i}var bs=Object.prototype,ws=bs.toString;function xs(e){return ws.call(e)}var Os="[object Null]",Ss="[object Undefined]",li=pe?pe.toStringTag:void 0;function tt(e){return e==null?e===void 0?Ss:Os:li&&li in Object(e)?ys(e):xs(e)}function Pe(e){return e!=null&&typeof e=="object"}var As="[object Symbol]";function Pn(e){return typeof e=="symbol"||Pe(e)&&tt(e)==As}function Er(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=Zs)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function nf(e){return function(){return e}}var Sn=(function(){try{var e=rt(Object,"defineProperty");return e({},"",{}),e}catch{}})(),rf=Sn?function(e,t){return Sn(e,"toString",{configurable:!0,enumerable:!1,value:nf(t),writable:!0})}:Mr,Ya=tf(rf);function af(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var cf=9007199254740991,lf=/^(?:0|[1-9]\d*)$/;function Tn(e,t){var n=typeof e;return t=t??cf,!!t&&(n=="number"||n!="symbol"&&lf.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=pf}function xt(e){return e!=null&&Tr(e.length)&&!_r(e)}function vf(e,t,n){if(!ee(n))return!1;var r=typeof t;return(r=="number"?xt(n)&&Tn(t,n.length):r=="string"&&t in n)?Yt(n[t],e):!1}function gf(e){return Va(function(t,n){var r=-1,i=n.length,s=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(s=e.length>3&&typeof s=="function"?(i--,s):void 0,o&&vf(n[0],n[1],o)&&(s=i<3?void 0:s,i=1),t=Object(t);++r-1}function Mu(e,t){var n=this.__data__,r=Rn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Le(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?Vt(a,t-1,n,r,i):Nr(i,a):r||(i[i.length]=a)}return i}function ku(e){var t=e==null?0:e.length;return t?Vt(e,1):[]}function eo(e){return Ya(Ga(e,void 0,ku),e+"")}var Lr=Ja(Object.getPrototypeOf,Object),Wu="[object Object]",zu=Function.prototype,Yu=Object.prototype,to=zu.toString,Uu=Yu.hasOwnProperty,Gu=to.call(Object);function no(e){if(!Pe(e)||tt(e)!=Wu)return!1;var t=Lr(e);if(t===null)return!0;var n=Uu.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&to.call(n)==Gu}function Vu(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(i);++r=t?e:t)),e}function kg(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=Rt(n),n=n===n?n:0),t!==void 0&&(t=Rt(t),t=t===t?t:0),Qu(Rt(e),t,n)}function Xu(){this.__data__=new Le,this.size=0}function Ku(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Zu(e){return this.__data__.get(e)}function Ju(e){return this.__data__.has(e)}var ec=200;function tc(e,t){var n=this.__data__;if(n instanceof Le){var r=n.__data__;if(!jt||r.lengtha))return!1;var u=s.get(e),c=s.get(t);if(u&&c)return u==t&&c==e;var l=-1,d=!0,h=n&Tl?new Ht:void 0;for(s.set(e,t),s.set(t,e);++l=t||$<0||l&&R>=s}function p(){var S=Gn();if(g(S))return x(S);a=setTimeout(p,v(S))}function x(S){return a=void 0,d&&r?h(S):(r=i=void 0,o)}function y(){a!==void 0&&clearTimeout(a),u=0,r=f=i=a=void 0}function b(){return a===void 0?o:x(Gn())}function w(){var S=Gn(),$=g(S);if(r=arguments,i=this,f=S,$){if(a===void 0)return m(f);if(l)return clearTimeout(a),a=setTimeout(p,t),h(f)}return a===void 0&&(a=setTimeout(p,t)),o}return w.cancel=y,w.flush=b,w}function rr(e,t,n){(n!==void 0&&!Yt(e[t],n)||n===void 0&&!(t in e))&&$r(e,t,n)}function Oo(e){return Pe(e)&&xt(e)}function ir(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}function wd(e){return wt(e,Gt(e))}function xd(e,t,n,r,i,s,o){var a=ir(e,n),f=ir(t,n),u=o.get(f);if(u){rr(e,n,u);return}var c=s?s(a,f,n+"",e,t,o):void 0,l=c===void 0;if(l){var d=J(f),h=!d&&Lt(f),m=!d&&!h&&Dr(f);c=f,d||h||m?J(a)?c=a:Oo(a)?c=za(a):h?(l=!1,c=io(f,!0)):m?(l=!1,c=uo(f,!0)):c=[]:no(f)||Nt(f)?(c=a,Nt(a)?c=wd(a):(!ee(a)||_r(a))&&(c=co(f))):l=!1}l&&(o.set(f,c),i(c,f,r,s,o),o.delete(f)),rr(e,n,c)}function So(e,t,n,r,i){e!==t&&xo(t,function(s,o){if(i||(i=new Oe),ee(s))xd(e,t,o,n,So,r,i);else{var a=r?r(ir(e,o),s,o+"",e,t,i):void 0;a===void 0&&(a=s),rr(e,o,a)}},Gt)}function Od(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function Yg(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=r-1;return Ua(e,wo(t),i,!0)}function Sd(e,t){var n=-1,r=xt(e)?Array(e.length):[];return vd(e,function(i,s,o){r[++n]=t(i,s,o)}),r}function Ad(e,t){var n=J(e)?Er:Sd;return n(e,wo(t))}function Ug(e,t){return Vt(Ad(e,t),1)}var Ed=1/0;function Gg(e){var t=e==null?0:e.length;return t?Vt(e,Ed):[]}function Vg(e){for(var t=-1,n=e==null?0:e.length,r={};++t1),s}),wt(e,fo(e),n),r&&(n=ct(n,Pd|Td|Rd,$d));for(var i=t.length;i--;)_d(n,t[i]);return n});function Ao(e,t,n,r){if(!ee(e))return e;t=Ot(t,e);for(var i=-1,s=t.length,o=s-1,a=e;a!=null&&++i=Ld){var u=Nd(e);if(u)return Hr(u);o=!1,i=vo,f=new Ht}else f=a;e:for(;++rt in e?jd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zd=(e,t)=>{for(var n in t||(t={}))kd.call(t,n)&&qi(e,n,t[n]);if(Hi)for(var n of Hi(t))Wd.call(t,n)&&qi(e,n,t[n]);return e},Yd=(e,t)=>Hd(e,qd(t));function a0(e,t){var n;const r=ds();return Ha(()=>{r.value=e()},Yd(zd({},t),{flush:(n=void 0)!=null?n:"sync"})),Na(r)}var ki;const In=typeof window<"u",Ud=e=>typeof e<"u",ar=e=>typeof e=="function",Gd=e=>typeof e=="string",o0=(e,t,n)=>Math.min(n,Math.max(t,e)),Ie=()=>{},Vd=In&&((ki=window?.navigator)==null?void 0:ki.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function We(e){return typeof e=="function"?e():La(e)}function Eo(e,t){function n(...r){return new Promise((i,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(i).catch(s)})}return n}function Qd(e,t={}){let n,r,i=Ie;const s=a=>{clearTimeout(a),i(),i=Ie};return a=>{const f=We(e),u=We(t.maxWait);return n&&s(n),f<=0||u!==void 0&&u<=0?(r&&(s(r),r=null),Promise.resolve(a())):new Promise((c,l)=>{i=t.rejectOnCancel?l:c,u&&!r&&(r=setTimeout(()=>{n&&s(n),r=null,c(a())},u)),n=setTimeout(()=>{r&&s(r),r=null,c(a())},f)})}}function Xd(e,t=!0,n=!0,r=!1){let i=0,s,o=!0,a=Ie,f;const u=()=>{s&&(clearTimeout(s),s=void 0,a(),a=Ie)};return l=>{const d=We(e),h=Date.now()-i,m=()=>f=l();return u(),d<=0?(i=Date.now(),m()):(h>d&&(n||!o)?(i=Date.now(),m()):t&&(f=new Promise((v,g)=>{a=r?g:v,s=setTimeout(()=>{i=Date.now(),o=!0,v(m()),u()},Math.max(0,d-h))})),!n&&!s&&(s=setTimeout(()=>o=!0,d)),o=!1,f)}}function Kd(e){return e}function Zd(e,t){let n,r,i;const s=Y(!0),o=()=>{s.value=!0,i()};he(e,o,{flush:"sync"});const a=ar(t)?t:t.get,f=ar(t)?void 0:t.set,u=hs((c,l)=>(r=c,i=l,{get(){return s.value&&(n=a(),s.value=!1),r(),n},set(d){f?.(d)}}));return Object.isExtensible(u)&&(u.trigger=o),u}function Qt(e){return us()?(cs(e),!0):!1}function Jd(e){if(!Wn(e))return ci(e);const t=new Proxy({},{get(n,r,i){return La(Reflect.get(e.value,r,i))},set(n,r,i){return Wn(e.value[r])&&!Wn(i)?e.value[r].value=i:e.value[r]=i,!0},deleteProperty(n,r){return Reflect.deleteProperty(e.value,r)},has(n,r){return Reflect.has(e.value,r)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return ci(t)}function s0(e){return Jd(ce(e))}function eh(e,t=200,n={}){return Eo(Qd(t,n),e)}function f0(e,t=200,n={}){const r=Y(e.value),i=eh(()=>{r.value=e.value},t,n);return he(e,()=>i()),r}function u0(e,t=200,n=!1,r=!0,i=!1){return Eo(Xd(t,n,r,i),e)}function qr(e,t=!0){Ba()?ja(e):t?e():ls(e)}function c0(e,t,n={}){const{immediate:r=!0}=n,i=Y(!1);let s=null;function o(){s&&(clearTimeout(s),s=null)}function a(){i.value=!1,o()}function f(...u){o(),i.value=!0,s=setTimeout(()=>{i.value=!1,s=null,e(...u)},We(t))}return r&&(i.value=!0,In&&f()),Qt(a),{isPending:Na(i),start:f,stop:a}}function Z(e){var t;const n=We(e);return(t=n?.$el)!=null?t:n}const Ce=In?window:void 0,th=In?window.document:void 0;function le(...e){let t,n,r,i;if(Gd(e[0])||Array.isArray(e[0])?([n,r,i]=e,t=Ce):[t,n,r,i]=e,!t)return Ie;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],o=()=>{s.forEach(c=>c()),s.length=0},a=(c,l,d,h)=>(c.addEventListener(l,d,h),()=>c.removeEventListener(l,d,h)),f=he(()=>[Z(t),We(i)],([c,l])=>{o(),c&&s.push(...n.flatMap(d=>r.map(h=>a(c,d,h,l))))},{immediate:!0,flush:"post"}),u=()=>{f(),o()};return Qt(u),u}let Wi=!1;function l0(e,t,n={}){const{window:r=Ce,ignore:i=[],capture:s=!0,detectIframe:o=!1}=n;if(!r)return;Vd&&!Wi&&(Wi=!0,Array.from(r.document.body.children).forEach(d=>d.addEventListener("click",Ie)));let a=!0;const f=d=>i.some(h=>{if(typeof h=="string")return Array.from(r.document.querySelectorAll(h)).some(m=>m===d.target||d.composedPath().includes(m));{const m=Z(h);return m&&(d.target===m||d.composedPath().includes(m))}}),c=[le(r,"click",d=>{const h=Z(e);if(!(!h||h===d.target||d.composedPath().includes(h))){if(d.detail===0&&(a=!f(d)),!a){a=!0;return}t(d)}},{passive:!0,capture:s}),le(r,"pointerdown",d=>{const h=Z(e);h&&(a=!d.composedPath().includes(h)&&!f(d))},{passive:!0}),o&&le(r,"blur",d=>{var h;const m=Z(e);((h=r.document.activeElement)==null?void 0:h.tagName)==="IFRAME"&&!m?.contains(r.document.activeElement)&&t(d)})].filter(Boolean);return()=>c.forEach(d=>d())}function d0(e={}){var t;const{window:n=Ce}=e,r=(t=e.document)!=null?t:n?.document,i=Zd(()=>null,()=>r?.activeElement);return n&&(le(n,"blur",s=>{s.relatedTarget===null&&i.trigger()},!0),le(n,"focus",i.trigger,!0)),i}function kr(e,t=!1){const n=Y(),r=()=>n.value=!!e();return r(),qr(r,t),n}function nh(e){return JSON.parse(JSON.stringify(e))}const zi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Yi="__vueuse_ssr_handlers__";zi[Yi]=zi[Yi]||{};function h0(e,t,{window:n=Ce,initialValue:r=""}={}){const i=Y(r),s=ce(()=>{var o;return Z(t)||((o=n?.document)==null?void 0:o.documentElement)});return he([s,()=>We(e)],([o,a])=>{var f;if(o&&n){const u=(f=n.getComputedStyle(o).getPropertyValue(a))==null?void 0:f.trim();i.value=u||r}},{immediate:!0}),he(i,o=>{var a;(a=s.value)!=null&&a.style&&s.value.style.setProperty(We(e),o)}),i}function p0({document:e=th}={}){if(!e)return Y("visible");const t=Y(e.visibilityState);return le(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var Ui=Object.getOwnPropertySymbols,rh=Object.prototype.hasOwnProperty,ih=Object.prototype.propertyIsEnumerable,ah=(e,t)=>{var n={};for(var r in e)rh.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ui)for(var r of Ui(e))t.indexOf(r)<0&&ih.call(e,r)&&(n[r]=e[r]);return n};function Mo(e,t,n={}){const r=n,{window:i=Ce}=r,s=ah(r,["window"]);let o;const a=kr(()=>i&&"ResizeObserver"in i),f=()=>{o&&(o.disconnect(),o=void 0)},u=he(()=>Z(e),l=>{f(),a.value&&i&&l&&(o=new ResizeObserver(t),o.observe(l,s))},{immediate:!0,flush:"post"}),c=()=>{f(),u()};return Qt(c),{isSupported:a,stop:c}}function v0(e,t={}){const{reset:n=!0,windowResize:r=!0,windowScroll:i=!0,immediate:s=!0}=t,o=Y(0),a=Y(0),f=Y(0),u=Y(0),c=Y(0),l=Y(0),d=Y(0),h=Y(0);function m(){const v=Z(e);if(!v){n&&(o.value=0,a.value=0,f.value=0,u.value=0,c.value=0,l.value=0,d.value=0,h.value=0);return}const g=v.getBoundingClientRect();o.value=g.height,a.value=g.bottom,f.value=g.left,u.value=g.right,c.value=g.top,l.value=g.width,d.value=g.x,h.value=g.y}return Mo(e,m),he(()=>Z(e),v=>!v&&m()),i&&le("scroll",m,{capture:!0,passive:!0}),r&&le("resize",m,{passive:!0}),qr(()=>{s&&m()}),{height:o,bottom:a,left:f,right:u,top:c,width:l,x:d,y:h,update:m}}function g0(e,t={width:0,height:0},n={}){const{window:r=Ce,box:i="content-box"}=n,s=ce(()=>{var f,u;return(u=(f=Z(e))==null?void 0:f.namespaceURI)==null?void 0:u.includes("svg")}),o=Y(t.width),a=Y(t.height);return Mo(e,([f])=>{const u=i==="border-box"?f.borderBoxSize:i==="content-box"?f.contentBoxSize:f.devicePixelContentBoxSize;if(r&&s.value){const c=Z(e);if(c){const l=r.getComputedStyle(c);o.value=parseFloat(l.width),a.value=parseFloat(l.height)}}else if(u){const c=Array.isArray(u)?u:[u];o.value=c.reduce((l,{inlineSize:d})=>l+d,0),a.value=c.reduce((l,{blockSize:d})=>l+d,0)}else o.value=f.contentRect.width,a.value=f.contentRect.height},n),he(()=>Z(e),f=>{o.value=f?t.width:0,a.value=f?t.height:0}),{width:o,height:a}}function m0(e,t,n={}){const{root:r,rootMargin:i="0px",threshold:s=.1,window:o=Ce}=n,a=kr(()=>o&&"IntersectionObserver"in o);let f=Ie;const u=a.value?he(()=>({el:Z(e),root:Z(r)}),({el:l,root:d})=>{if(f(),!l)return;const h=new IntersectionObserver(t,{root:d,rootMargin:i,threshold:s});h.observe(l),f=()=>{h.disconnect(),f=Ie}},{immediate:!0,flush:"post"}):Ie,c=()=>{f(),u()};return Qt(c),{isSupported:a,stop:c}}var Gi=Object.getOwnPropertySymbols,oh=Object.prototype.hasOwnProperty,sh=Object.prototype.propertyIsEnumerable,fh=(e,t)=>{var n={};for(var r in e)oh.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Gi)for(var r of Gi(e))t.indexOf(r)<0&&sh.call(e,r)&&(n[r]=e[r]);return n};function y0(e,t,n={}){const r=n,{window:i=Ce}=r,s=fh(r,["window"]);let o;const a=kr(()=>i&&"MutationObserver"in i),f=()=>{o&&(o.disconnect(),o=void 0)},u=he(()=>Z(e),l=>{f(),a.value&&i&&l&&(o=new MutationObserver(t),o.observe(l,s))},{immediate:!0}),c=()=>{f(),u()};return Qt(c),{isSupported:a,stop:c}}var Vi;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Vi||(Vi={}));var uh=Object.defineProperty,Qi=Object.getOwnPropertySymbols,ch=Object.prototype.hasOwnProperty,lh=Object.prototype.propertyIsEnumerable,Xi=(e,t,n)=>t in e?uh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,dh=(e,t)=>{for(var n in t||(t={}))ch.call(t,n)&&Xi(e,n,t[n]);if(Qi)for(var n of Qi(t))lh.call(t,n)&&Xi(e,n,t[n]);return e};const hh={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};dh({linear:Kd},hh);function b0(e,t,n,r={}){var i,s,o;const{clone:a=!1,passive:f=!1,eventName:u,deep:c=!1,defaultValue:l}=r,d=Ba(),h=n||d?.emit||((i=d?.$emit)==null?void 0:i.bind(d))||((o=(s=d?.proxy)==null?void 0:s.$emit)==null?void 0:o.bind(d?.proxy));let m=u;t||(t="modelValue"),m=u||m||`update:${t.toString()}`;const v=p=>a?ar(a)?a(p):nh(p):p,g=()=>Ud(e[t])?v(e[t]):l;if(f){const p=g(),x=Y(p);return he(()=>e[t],y=>x.value=v(y)),he(x,y=>{(y!==e[t]||c)&&h(m,y)},{deep:c}),x}else return ce({get(){return g()},set(p){h(m,p)}})}function w0({window:e=Ce}={}){if(!e)return Y(!1);const t=Y(e.document.hasFocus());return le(e,"blur",()=>{t.value=!1}),le(e,"focus",()=>{t.value=!0}),t}function x0(e={}){const{window:t=Ce,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:i=!0,includeScrollbar:s=!0}=e,o=Y(n),a=Y(r),f=()=>{t&&(s?(o.value=t.innerWidth,a.value=t.innerHeight):(o.value=t.document.documentElement.clientWidth,a.value=t.document.documentElement.clientHeight))};return f(),qr(f),le("resize",f,{passive:!0}),i&&le("orientationchange",f,{passive:!0}),{width:o,height:a}}var re="top",ve="bottom",ge="right",ie="left",Wr="auto",Xt=[re,ve,ge,ie],ht="start",qt="end",ph="clippingParents",_o="viewport",$t="popper",vh="reference",Ki=Xt.reduce(function(e,t){return e.concat([t+"-"+ht,t+"-"+qt])},[]),$o=[].concat(Xt,[Wr]).reduce(function(e,t){return e.concat([t,t+"-"+ht,t+"-"+qt])},[]),gh="beforeRead",mh="read",yh="afterRead",bh="beforeMain",wh="main",xh="afterMain",Oh="beforeWrite",Sh="write",Ah="afterWrite",Eh=[gh,mh,yh,bh,wh,xh,Oh,Sh,Ah];function Te(e){return e?(e.nodeName||"").toLowerCase():null}function Me(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function pt(e){var t=Me(e).Element;return e instanceof t||e instanceof Element}function de(e){var t=Me(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function zr(e){if(typeof ShadowRoot>"u")return!1;var t=Me(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Mh(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},i=t.attributes[n]||{},s=t.elements[n];!de(s)||!Te(s)||(Object.assign(s.style,r),Object.keys(i).forEach(function(o){var a=i[o];a===!1?s.removeAttribute(o):s.setAttribute(o,a===!0?"":a)}))})}function _h(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var i=t.elements[r],s=t.attributes[r]||{},o=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),a=o.reduce(function(f,u){return f[u]="",f},{});!de(i)||!Te(i)||(Object.assign(i.style,a),Object.keys(s).forEach(function(f){i.removeAttribute(f)}))})}}var Po={name:"applyStyles",enabled:!0,phase:"write",fn:Mh,effect:_h,requires:["computeStyles"]};function _e(e){return e.split("-")[0]}var Qe=Math.max,En=Math.min,vt=Math.round;function gt(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),r=1,i=1;if(de(e)&&t){var s=e.offsetHeight,o=e.offsetWidth;o>0&&(r=vt(n.width)/o||1),s>0&&(i=vt(n.height)/s||1)}return{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function Yr(e){var t=gt(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function To(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&zr(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Ne(e){return Me(e).getComputedStyle(e)}function $h(e){return["table","td","th"].indexOf(Te(e))>=0}function Ye(e){return((pt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Nn(e){return Te(e)==="html"?e:e.assignedSlot||e.parentNode||(zr(e)?e.host:null)||Ye(e)}function Zi(e){return!de(e)||Ne(e).position==="fixed"?null:e.offsetParent}function Ph(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&de(e)){var r=Ne(e);if(r.position==="fixed")return null}var i=Nn(e);for(zr(i)&&(i=i.host);de(i)&&["html","body"].indexOf(Te(i))<0;){var s=Ne(i);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return i;i=i.parentNode}return null}function Kt(e){for(var t=Me(e),n=Zi(e);n&&$h(n)&&Ne(n).position==="static";)n=Zi(n);return n&&(Te(n)==="html"||Te(n)==="body"&&Ne(n).position==="static")?t:n||Ph(e)||t}function Ur(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Dt(e,t,n){return Qe(e,En(t,n))}function Th(e,t,n){var r=Dt(e,t,n);return r>n?n:r}function Ro(){return{top:0,right:0,bottom:0,left:0}}function Co(e){return Object.assign({},Ro(),e)}function Do(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var Rh=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,Co(typeof e!="number"?e:Do(e,Xt))};function Ch(e){var t,n=e.state,r=e.name,i=e.options,s=n.elements.arrow,o=n.modifiersData.popperOffsets,a=_e(n.placement),f=Ur(a),u=[ie,ge].indexOf(a)>=0,c=u?"height":"width";if(!(!s||!o)){var l=Rh(i.padding,n),d=Yr(s),h=f==="y"?re:ie,m=f==="y"?ve:ge,v=n.rects.reference[c]+n.rects.reference[f]-o[f]-n.rects.popper[c],g=o[f]-n.rects.reference[f],p=Kt(s),x=p?f==="y"?p.clientHeight||0:p.clientWidth||0:0,y=v/2-g/2,b=l[h],w=x-d[c]-l[m],S=x/2-d[c]/2+y,$=Dt(b,S,w),R=f;n.modifiersData[r]=(t={},t[R]=$,t.centerOffset=$-S,t)}}function Dh(e){var t=e.state,n=e.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||!To(t.elements.popper,i)||(t.elements.arrow=i))}var Fh={name:"arrow",enabled:!0,phase:"main",fn:Ch,effect:Dh,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function mt(e){return e.split("-")[1]}var Ih={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Nh(e){var t=e.x,n=e.y,r=window,i=r.devicePixelRatio||1;return{x:vt(t*i)/i||0,y:vt(n*i)/i||0}}function Ji(e){var t,n=e.popper,r=e.popperRect,i=e.placement,s=e.variation,o=e.offsets,a=e.position,f=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,l=e.isFixed,d=o.x,h=d===void 0?0:d,m=o.y,v=m===void 0?0:m,g=typeof c=="function"?c({x:h,y:v}):{x:h,y:v};h=g.x,v=g.y;var p=o.hasOwnProperty("x"),x=o.hasOwnProperty("y"),y=ie,b=re,w=window;if(u){var S=Kt(n),$="clientHeight",R="clientWidth";if(S===Me(n)&&(S=Ye(n),Ne(S).position!=="static"&&a==="absolute"&&($="scrollHeight",R="scrollWidth")),S=S,i===re||(i===ie||i===ge)&&s===qt){b=ve;var D=l&&S===w&&w.visualViewport?w.visualViewport.height:S[$];v-=D-r.height,v*=f?1:-1}if(i===ie||(i===re||i===ve)&&s===qt){y=ge;var C=l&&S===w&&w.visualViewport?w.visualViewport.width:S[R];h-=C-r.width,h*=f?1:-1}}var P=Object.assign({position:a},u&&Ih),N=c===!0?Nh({x:h,y:v}):{x:h,y:v};if(h=N.x,v=N.y,f){var I;return Object.assign({},P,(I={},I[b]=x?"0":"",I[y]=p?"0":"",I.transform=(w.devicePixelRatio||1)<=1?"translate("+h+"px, "+v+"px)":"translate3d("+h+"px, "+v+"px, 0)",I))}return Object.assign({},P,(t={},t[b]=x?v+"px":"",t[y]=p?h+"px":"",t.transform="",t))}function Lh(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,s=n.adaptive,o=s===void 0?!0:s,a=n.roundOffsets,f=a===void 0?!0:a,u={placement:_e(t.placement),variation:mt(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ji(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:f})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ji(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var Fo={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Lh,data:{}},rn={passive:!0};function Bh(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,s=i===void 0?!0:i,o=r.resize,a=o===void 0?!0:o,f=Me(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&u.forEach(function(c){c.addEventListener("scroll",n.update,rn)}),a&&f.addEventListener("resize",n.update,rn),function(){s&&u.forEach(function(c){c.removeEventListener("scroll",n.update,rn)}),a&&f.removeEventListener("resize",n.update,rn)}}var Io={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Bh,data:{}},jh={left:"right",right:"left",bottom:"top",top:"bottom"};function un(e){return e.replace(/left|right|bottom|top/g,function(t){return jh[t]})}var Hh={start:"end",end:"start"};function ea(e){return e.replace(/start|end/g,function(t){return Hh[t]})}function Gr(e){var t=Me(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Vr(e){return gt(Ye(e)).left+Gr(e).scrollLeft}function qh(e){var t=Me(e),n=Ye(e),r=t.visualViewport,i=n.clientWidth,s=n.clientHeight,o=0,a=0;return r&&(i=r.width,s=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(o=r.offsetLeft,a=r.offsetTop)),{width:i,height:s,x:o+Vr(e),y:a}}function kh(e){var t,n=Ye(e),r=Gr(e),i=(t=e.ownerDocument)==null?void 0:t.body,s=Qe(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=Qe(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-r.scrollLeft+Vr(e),f=-r.scrollTop;return Ne(i||n).direction==="rtl"&&(a+=Qe(n.clientWidth,i?i.clientWidth:0)-s),{width:s,height:o,x:a,y:f}}function Qr(e){var t=Ne(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function No(e){return["html","body","#document"].indexOf(Te(e))>=0?e.ownerDocument.body:de(e)&&Qr(e)?e:No(Nn(e))}function Ft(e,t){var n;t===void 0&&(t=[]);var r=No(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),s=Me(r),o=i?[s].concat(s.visualViewport||[],Qr(r)?r:[]):r,a=t.concat(o);return i?a:a.concat(Ft(Nn(o)))}function or(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Wh(e){var t=gt(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function ta(e,t){return t===_o?or(qh(e)):pt(t)?Wh(t):or(kh(Ye(e)))}function zh(e){var t=Ft(Nn(e)),n=["absolute","fixed"].indexOf(Ne(e).position)>=0,r=n&&de(e)?Kt(e):e;return pt(r)?t.filter(function(i){return pt(i)&&To(i,r)&&Te(i)!=="body"}):[]}function Yh(e,t,n){var r=t==="clippingParents"?zh(e):[].concat(t),i=[].concat(r,[n]),s=i[0],o=i.reduce(function(a,f){var u=ta(e,f);return a.top=Qe(u.top,a.top),a.right=En(u.right,a.right),a.bottom=En(u.bottom,a.bottom),a.left=Qe(u.left,a.left),a},ta(e,s));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function Lo(e){var t=e.reference,n=e.element,r=e.placement,i=r?_e(r):null,s=r?mt(r):null,o=t.x+t.width/2-n.width/2,a=t.y+t.height/2-n.height/2,f;switch(i){case re:f={x:o,y:t.y-n.height};break;case ve:f={x:o,y:t.y+t.height};break;case ge:f={x:t.x+t.width,y:a};break;case ie:f={x:t.x-n.width,y:a};break;default:f={x:t.x,y:t.y}}var u=i?Ur(i):null;if(u!=null){var c=u==="y"?"height":"width";switch(s){case ht:f[u]=f[u]-(t[c]/2-n[c]/2);break;case qt:f[u]=f[u]+(t[c]/2-n[c]/2);break}}return f}function kt(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,s=n.boundary,o=s===void 0?ph:s,a=n.rootBoundary,f=a===void 0?_o:a,u=n.elementContext,c=u===void 0?$t:u,l=n.altBoundary,d=l===void 0?!1:l,h=n.padding,m=h===void 0?0:h,v=Co(typeof m!="number"?m:Do(m,Xt)),g=c===$t?vh:$t,p=e.rects.popper,x=e.elements[d?g:c],y=Yh(pt(x)?x:x.contextElement||Ye(e.elements.popper),o,f),b=gt(e.elements.reference),w=Lo({reference:b,element:p,placement:i}),S=or(Object.assign({},p,w)),$=c===$t?S:b,R={top:y.top-$.top+v.top,bottom:$.bottom-y.bottom+v.bottom,left:y.left-$.left+v.left,right:$.right-y.right+v.right},D=e.modifiersData.offset;if(c===$t&&D){var C=D[i];Object.keys(R).forEach(function(P){var N=[ge,ve].indexOf(P)>=0?1:-1,I=[re,ve].indexOf(P)>=0?"y":"x";R[P]+=C[I]*N})}return R}function Uh(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,s=n.rootBoundary,o=n.padding,a=n.flipVariations,f=n.allowedAutoPlacements,u=f===void 0?$o:f,c=mt(r),l=c?a?Ki:Ki.filter(function(m){return mt(m)===c}):Xt,d=l.filter(function(m){return u.indexOf(m)>=0});d.length===0&&(d=l);var h=d.reduce(function(m,v){return m[v]=kt(e,{placement:v,boundary:i,rootBoundary:s,padding:o})[_e(v)],m},{});return Object.keys(h).sort(function(m,v){return h[m]-h[v]})}function Gh(e){if(_e(e)===Wr)return[];var t=un(e);return[ea(e),t,ea(t)]}function Vh(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,s=i===void 0?!0:i,o=n.altAxis,a=o===void 0?!0:o,f=n.fallbackPlacements,u=n.padding,c=n.boundary,l=n.rootBoundary,d=n.altBoundary,h=n.flipVariations,m=h===void 0?!0:h,v=n.allowedAutoPlacements,g=t.options.placement,p=_e(g),x=p===g,y=f||(x||!m?[un(g)]:Gh(g)),b=[g].concat(y).reduce(function(q,z){return q.concat(_e(z)===Wr?Uh(t,{placement:z,boundary:c,rootBoundary:l,padding:u,flipVariations:m,allowedAutoPlacements:v}):z)},[]),w=t.rects.reference,S=t.rects.popper,$=new Map,R=!0,D=b[0],C=0;C=0,A=_?"width":"height",O=kt(t,{placement:P,boundary:c,rootBoundary:l,altBoundary:d,padding:u}),M=_?I?ge:ie:I?ve:re;w[A]>S[A]&&(M=un(M));var E=un(M),T=[];if(s&&T.push(O[N]<=0),a&&T.push(O[M]<=0,O[E]<=0),T.every(function(q){return q})){D=P,R=!1;break}$.set(P,T)}if(R)for(var F=m?3:1,L=function(q){var z=b.find(function(ae){var X=$.get(ae);if(X)return X.slice(0,q).every(function(te){return te})});if(z)return D=z,"break"},j=F;j>0;j--){var H=L(j);if(H==="break")break}t.placement!==D&&(t.modifiersData[r]._skip=!0,t.placement=D,t.reset=!0)}}var Qh={name:"flip",enabled:!0,phase:"main",fn:Vh,requiresIfExists:["offset"],data:{_skip:!1}};function na(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ra(e){return[re,ge,ve,ie].some(function(t){return e[t]>=0})}function Xh(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,s=t.modifiersData.preventOverflow,o=kt(t,{elementContext:"reference"}),a=kt(t,{altBoundary:!0}),f=na(o,r),u=na(a,i,s),c=ra(f),l=ra(u);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:l},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":l})}var Kh={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Xh};function Zh(e,t,n){var r=_e(e),i=[ie,re].indexOf(r)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,o=s[0],a=s[1];return o=o||0,a=(a||0)*i,[ie,ge].indexOf(r)>=0?{x:a,y:o}:{x:o,y:a}}function Jh(e){var t=e.state,n=e.options,r=e.name,i=n.offset,s=i===void 0?[0,0]:i,o=$o.reduce(function(c,l){return c[l]=Zh(l,t.rects,s),c},{}),a=o[t.placement],f=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=o}var ep={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Jh};function tp(e){var t=e.state,n=e.name;t.modifiersData[n]=Lo({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})}var Bo={name:"popperOffsets",enabled:!0,phase:"read",fn:tp,data:{}};function np(e){return e==="x"?"y":"x"}function rp(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,s=i===void 0?!0:i,o=n.altAxis,a=o===void 0?!1:o,f=n.boundary,u=n.rootBoundary,c=n.altBoundary,l=n.padding,d=n.tether,h=d===void 0?!0:d,m=n.tetherOffset,v=m===void 0?0:m,g=kt(t,{boundary:f,rootBoundary:u,padding:l,altBoundary:c}),p=_e(t.placement),x=mt(t.placement),y=!x,b=Ur(p),w=np(b),S=t.modifiersData.popperOffsets,$=t.rects.reference,R=t.rects.popper,D=typeof v=="function"?v(Object.assign({},t.rects,{placement:t.placement})):v,C=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),P=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,N={x:0,y:0};if(S){if(s){var I,_=b==="y"?re:ie,A=b==="y"?ve:ge,O=b==="y"?"height":"width",M=S[b],E=M+g[_],T=M-g[A],F=h?-R[O]/2:0,L=x===ht?$[O]:R[O],j=x===ht?-R[O]:-$[O],H=t.elements.arrow,q=h&&H?Yr(H):{width:0,height:0},z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Ro(),ae=z[_],X=z[A],te=Dt(0,$[O],q[O]),ue=y?$[O]/2-F-te-ae-C.mainAxis:L-te-ae-C.mainAxis,U=y?-$[O]/2+F+te+X+C.mainAxis:j+te+X+C.mainAxis,Q=t.elements.arrow&&Kt(t.elements.arrow),me=Q?b==="y"?Q.clientTop||0:Q.clientLeft||0:0,ye=(I=P?.[b])!=null?I:0,it=M+ue-ye-me,at=M+U-ye,ot=Dt(h?En(E,it):E,M,h?Qe(T,at):T);S[b]=ot,N[b]=ot-M}if(a){var st,Et=b==="x"?re:ie,Mt=b==="x"?ve:ge,He=S[w],tn=w==="y"?"height":"width",ii=He+g[Et],ai=He-g[Mt],kn=[re,ie].indexOf(p)!==-1,oi=(st=P?.[w])!=null?st:0,si=kn?ii:He-$[tn]-R[tn]-oi+C.altAxis,fi=kn?He+$[tn]+R[tn]-oi-C.altAxis:ai,ui=h&&kn?Th(si,He,fi):Dt(h?si:ii,He,h?fi:ai);S[w]=ui,N[w]=ui-He}t.modifiersData[r]=N}}var ip={name:"preventOverflow",enabled:!0,phase:"main",fn:rp,requiresIfExists:["offset"]};function ap(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function op(e){return e===Me(e)||!de(e)?Gr(e):ap(e)}function sp(e){var t=e.getBoundingClientRect(),n=vt(t.width)/e.offsetWidth||1,r=vt(t.height)/e.offsetHeight||1;return n!==1||r!==1}function fp(e,t,n){n===void 0&&(n=!1);var r=de(t),i=de(t)&&sp(t),s=Ye(t),o=gt(e,i),a={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&((Te(t)!=="body"||Qr(s))&&(a=op(t)),de(t)?(f=gt(t,!0),f.x+=t.clientLeft,f.y+=t.clientTop):s&&(f.x=Vr(s))),{x:o.left+a.scrollLeft-f.x,y:o.top+a.scrollTop-f.y,width:o.width,height:o.height}}function up(e){var t=new Map,n=new Set,r=[];e.forEach(function(s){t.set(s.name,s)});function i(s){n.add(s.name);var o=[].concat(s.requires||[],s.requiresIfExists||[]);o.forEach(function(a){if(!n.has(a)){var f=t.get(a);f&&i(f)}}),r.push(s)}return e.forEach(function(s){n.has(s.name)||i(s)}),r}function cp(e){var t=up(e);return Eh.reduce(function(n,r){return n.concat(t.filter(function(i){return i.phase===r}))},[])}function lp(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function dp(e){var t=e.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var ia={placement:"bottom",modifiers:[],strategy:"absolute"};function aa(){for(var e=arguments.length,t=new Array(e),n=0;n1)&&(e=1),e}function on(e){return e<=1?"".concat(Number(e)*100,"%"):e}function Ge(e){return e.length===1?"0"+e:String(e)}function mp(e,t,n){return{r:V(e,255)*255,g:V(t,255)*255,b:V(n,255)*255}}function oa(e,t,n){e=V(e,255),t=V(t,255),n=V(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),s=0,o=0,a=(r+i)/2;if(r===i)o=0,s=0;else{var f=r-i;switch(o=a>.5?f/(2-r-i):f/(r+i),r){case e:s=(t-n)/f+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function yp(e,t,n){var r,i,s;if(e=V(e,360),t=V(t,100),n=V(n,100),t===0)i=n,s=n,r=n;else{var o=n<.5?n*(1+t):n+t-n*t,a=2*n-o;r=Vn(a,o,e+1/3),i=Vn(a,o,e),s=Vn(a,o,e-1/3)}return{r:r*255,g:i*255,b:s*255}}function sa(e,t,n){e=V(e,255),t=V(t,255),n=V(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),s=0,o=r,a=r-i,f=r===0?0:a/r;if(r===i)s=0;else{switch(r){case e:s=(t-n)/a+(t>16,g:(e&65280)>>8,b:e&255}}var sr={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function Sp(e){var t={r:0,g:0,b:0},n=1,r=null,i=null,s=null,o=!1,a=!1;return typeof e=="string"&&(e=Mp(e)),typeof e=="object"&&(Fe(e.r)&&Fe(e.g)&&Fe(e.b)?(t=mp(e.r,e.g,e.b),o=!0,a=String(e.r).substr(-1)==="%"?"prgb":"rgb"):Fe(e.h)&&Fe(e.s)&&Fe(e.v)?(r=on(e.s),i=on(e.v),t=bp(e.h,r,i),o=!0,a="hsv"):Fe(e.h)&&Fe(e.s)&&Fe(e.l)&&(r=on(e.s),s=on(e.l),t=yp(e.h,r,s),o=!0,a="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=jo(n),{ok:o,format:e.format||a,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var Ap="[-\\+]?\\d+%?",Ep="[-\\+]?\\d*\\.\\d+%?",qe="(?:".concat(Ep,")|(?:").concat(Ap,")"),Qn="[\\s|\\(]+(".concat(qe,")[,|\\s]+(").concat(qe,")[,|\\s]+(").concat(qe,")\\s*\\)?"),Xn="[\\s|\\(]+(".concat(qe,")[,|\\s]+(").concat(qe,")[,|\\s]+(").concat(qe,")[,|\\s]+(").concat(qe,")\\s*\\)?"),be={CSS_UNIT:new RegExp(qe),rgb:new RegExp("rgb"+Qn),rgba:new RegExp("rgba"+Xn),hsl:new RegExp("hsl"+Qn),hsla:new RegExp("hsla"+Xn),hsv:new RegExp("hsv"+Qn),hsva:new RegExp("hsva"+Xn),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Mp(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(sr[e])e=sr[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=be.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=be.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=be.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=be.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=be.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=be.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=be.hex8.exec(e),n?{r:oe(n[1]),g:oe(n[2]),b:oe(n[3]),a:ua(n[4]),format:t?"name":"hex8"}:(n=be.hex6.exec(e),n?{r:oe(n[1]),g:oe(n[2]),b:oe(n[3]),format:t?"name":"hex"}:(n=be.hex4.exec(e),n?{r:oe(n[1]+n[1]),g:oe(n[2]+n[2]),b:oe(n[3]+n[3]),a:ua(n[4]+n[4]),format:t?"name":"hex8"}:(n=be.hex3.exec(e),n?{r:oe(n[1]+n[1]),g:oe(n[2]+n[2]),b:oe(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function Fe(e){return!!be.CSS_UNIT.exec(String(e))}var S0=(function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var r;if(t instanceof e)return t;typeof t=="number"&&(t=Op(t)),this.originalInput=t;var i=Sp(t);this.originalInput=t,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:i.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,r,i,s=t.r/255,o=t.g/255,a=t.b/255;return s<=.03928?n=s/12.92:n=Math.pow((s+.055)/1.055,2.4),o<=.03928?r=o/12.92:r=Math.pow((o+.055)/1.055,2.4),a<=.03928?i=a/12.92:i=Math.pow((a+.055)/1.055,2.4),.2126*n+.7152*r+.0722*i},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=jo(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=sa(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=sa(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),i=Math.round(t.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=oa(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=oa(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),i=Math.round(t.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),fa(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),wp(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(n,", ").concat(r,")"):"rgba(".concat(t,", ").concat(n,", ").concat(r,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(n){return"".concat(Math.round(V(n,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(V(n,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+fa(this.r,this.g,this.b,!1),n=0,r=Object.entries(sr);n=0,s=!n&&i&&(t.startsWith("hex")||t==="name");return s?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(r=this.toRgbString()),t==="prgb"&&(r=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(r=this.toHexString()),t==="hex3"&&(r=this.toHexString(!0)),t==="hex4"&&(r=this.toHex8String(!0)),t==="hex8"&&(r=this.toHex8String()),t==="name"&&(r=this.toName()),t==="hsl"&&(r=this.toHslString()),t==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=an(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=an(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=an(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=an(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var r=this.toRgb(),i=new e(t).toRgb(),s=n/100,o={r:(i.r-r.r)*s+r.r,g:(i.g-r.g)*s+r.g,b:(i.b-r.b)*s+r.b,a:(i.a-r.a)*s+r.a};return new e(o)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var r=this.toHsl(),i=360/n,s=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,s.push(new e(r));return s},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),r=n.h,i=n.s,s=n.v,o=[],a=1/t;t--;)o.push(new e({h:r,s:i,v:s})),s=(s+a)%1;return o},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb(),i=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/i,g:(n.g*n.a+r.g*r.a*(1-n.a))/i,b:(n.b*n.a+r.b*r.a*(1-n.a))/i,a:i})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,i=[this],s=360/t,o=1;o=A?_:""+Array(A+1-M.length).join(O)+_},b={s:y,z:function(_){var A=-_.utcOffset(),O=Math.abs(A),M=Math.floor(O/60),E=O%60;return(A<=0?"+":"-")+y(M,2,"0")+":"+y(E,2,"0")},m:function _(A,O){if(A.date()1)return _(F[0])}else{var L=A.name;S[L]=A,E=L}return!M&&E&&(w=E),E||!M&&w},C=function(_,A){if(R(_))return _.clone();var O=typeof A=="object"?A:{};return O.date=_,O.args=arguments,new N(O)},P=b;P.l=D,P.i=R,P.w=function(_,A){return C(_,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var N=(function(){function _(O){this.$L=D(O.locale,null,!0),this.parse(O),this.$x=this.$x||O.x||{},this[$]=!0}var A=_.prototype;return A.parse=function(O){this.$d=(function(M){var E=M.date,T=M.utc;if(E===null)return new Date(NaN);if(P.u(E))return new Date;if(E instanceof Date)return new Date(E);if(typeof E=="string"&&!/Z$/i.test(E)){var F=E.match(g);if(F){var L=F[2]-1||0,j=(F[7]||"0").substring(0,3);return T?new Date(Date.UTC(F[1],L,F[3]||1,F[4]||0,F[5]||0,F[6]||0,j)):new Date(F[1],L,F[3]||1,F[4]||0,F[5]||0,F[6]||0,j)}}return new Date(E)})(O),this.init()},A.init=function(){var O=this.$d;this.$y=O.getFullYear(),this.$M=O.getMonth(),this.$D=O.getDate(),this.$W=O.getDay(),this.$H=O.getHours(),this.$m=O.getMinutes(),this.$s=O.getSeconds(),this.$ms=O.getMilliseconds()},A.$utils=function(){return P},A.isValid=function(){return this.$d.toString()!==v},A.isSame=function(O,M){var E=C(O);return this.startOf(M)<=E&&E<=this.endOf(M)},A.isAfter=function(O,M){return C(O)68?1900:2e3)},c=function(g){return function(p){this[g]=+p}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(p){if(!p||p==="Z")return 0;var x=p.match(/([+-]|\d\d)/g),y=60*x[1]+(+x[2]||0);return y===0?0:x[0]==="+"?-y:y})(g)}],d=function(g){var p=f[g];return p&&(p.indexOf?p:p.s.concat(p.f))},h=function(g,p){var x,y=f.meridiem;if(y){for(var b=1;b<=24;b+=1)if(g.indexOf(y(b,0,p))>-1){x=b>12;break}}else x=g===(p?"pm":"PM");return x},m={A:[a,function(g){this.afternoon=h(g,!1)}],a:[a,function(g){this.afternoon=h(g,!0)}],Q:[i,function(g){this.month=3*(g-1)+1}],S:[i,function(g){this.milliseconds=100*+g}],SS:[s,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[o,c("seconds")],ss:[o,c("seconds")],m:[o,c("minutes")],mm:[o,c("minutes")],H:[o,c("hours")],h:[o,c("hours")],HH:[o,c("hours")],hh:[o,c("hours")],D:[o,c("day")],DD:[s,c("day")],Do:[a,function(g){var p=f.ordinal,x=g.match(/\d+/);if(this.day=x[0],p)for(var y=1;y<=31;y+=1)p(y).replace(/\[|\]/g,"")===g&&(this.day=y)}],w:[o,c("week")],ww:[s,c("week")],M:[o,c("month")],MM:[s,c("month")],MMM:[a,function(g){var p=d("months"),x=(d("monthsShort")||p.map((function(y){return y.slice(0,3)}))).indexOf(g)+1;if(x<1)throw new Error;this.month=x%12||x}],MMMM:[a,function(g){var p=d("months").indexOf(g)+1;if(p<1)throw new Error;this.month=p%12||p}],Y:[/[+-]?\d+/,c("year")],YY:[s,function(g){this.year=u(g)}],YYYY:[/\d{4}/,c("year")],Z:l,ZZ:l};function v(g){var p,x;p=g,x=f&&f.formats;for(var y=(g=p.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(C,P,N){var I=N&&N.toUpperCase();return P||x[N]||n[N]||x[I].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(_,A,O){return A||O.slice(1)}))}))).match(r),b=y.length,w=0;w-1)return new Date((E==="X"?1e3:1)*M);var L=v(E)(M),j=L.year,H=L.month,q=L.day,z=L.hours,ae=L.minutes,X=L.seconds,te=L.milliseconds,ue=L.zone,U=L.week,Q=new Date,me=q||(j||H?1:Q.getDate()),ye=j||Q.getFullYear(),it=0;j&&!H||(it=H>0?H-1:Q.getMonth());var at,ot=z||0,st=ae||0,Et=X||0,Mt=te||0;return ue?new Date(Date.UTC(ye,it,me,ot,st,Et,Mt+60*ue.offset*1e3)):T?new Date(Date.UTC(ye,it,me,ot,st,Et,Mt)):(at=new Date(ye,it,me,ot,st,Et,Mt),U&&(at=F(at).week(U).toDate()),at)}catch{return new Date("")}})(S,D,$,x),this.init(),I&&I!==!0&&(this.$L=this.locale(I).$L),N&&S!=this.format(D)&&(this.$d=new Date("")),f={}}else if(D instanceof Array)for(var _=D.length,A=1;A<=_;A+=1){R[1]=D[A-1];var O=x.apply(this,R);if(O.isValid()){this.$d=O.$d,this.$L=O.$L,this.init();break}A===_&&(this.$d=new Date(""))}else b.call(this,w)}}}))})(dn)),dn.exports}var Ip=Fp();const M0=je(Ip);var hn={exports:{}},Np=hn.exports,ha;function Lp(){return ha||(ha=1,(function(e,t){(function(n,r){e.exports=r()})(Np,(function(){return function(n,r){var i=r.prototype,s=i.format;i.format=function(o){var a=this,f=this.$locale();if(!this.isValid())return s.bind(this)(o);var u=this.$utils(),c=(o||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(l){switch(l){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return f.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return f.ordinal(a.week(),"W");case"w":case"ww":return u.s(a.week(),l==="w"?1:2,"0");case"W":case"WW":return u.s(a.isoWeek(),l==="W"?1:2,"0");case"k":case"kk":return u.s(String(a.$H===0?24:a.$H),l==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return l}}));return s.bind(this)(c)}}}))})(hn)),hn.exports}var Bp=Lp();const _0=je(Bp);var pn={exports:{}},jp=pn.exports,pa;function Hp(){return pa||(pa=1,(function(e,t){(function(n,r){e.exports=r()})(jp,(function(){var n="week",r="year";return function(i,s,o){var a=s.prototype;a.week=function(f){if(f===void 0&&(f=null),f!==null)return this.add(7*(f-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var c=o(this).startOf(r).add(1,r).date(u),l=o(this).endOf(n);if(c.isBefore(l))return 1}var d=o(this).startOf(r).date(u).startOf(n).subtract(1,"millisecond"),h=this.diff(d,n,!0);return h<0?o(this).startOf("week").week():Math.ceil(h)},a.weeks=function(f){return f===void 0&&(f=null),this.week(f)}}}))})(pn)),pn.exports}var qp=Hp();const $0=je(qp);var vn={exports:{}},kp=vn.exports,va;function Wp(){return va||(va=1,(function(e,t){(function(n,r){e.exports=r()})(kp,(function(){return function(n,r){r.prototype.weekYear=function(){var i=this.month(),s=this.week(),o=this.year();return s===1&&i===11?o+1:i===0&&s>=52?o-1:o}}}))})(vn)),vn.exports}var zp=Wp();const P0=je(zp);var gn={exports:{}},Yp=gn.exports,ga;function Up(){return ga||(ga=1,(function(e,t){(function(n,r){e.exports=r()})(Yp,(function(){return function(n,r,i){r.prototype.dayOfYear=function(s){var o=Math.round((i(this).startOf("day")-i(this).startOf("year"))/864e5)+1;return s==null?o:this.add(s-o,"day")}}}))})(gn)),gn.exports}var Gp=Up();const T0=je(Gp);var mn={exports:{}},Vp=mn.exports,ma;function Qp(){return ma||(ma=1,(function(e,t){(function(n,r){e.exports=r()})(Vp,(function(){return function(n,r){r.prototype.isSameOrAfter=function(i,s){return this.isSame(i,s)||this.isAfter(i,s)}}}))})(mn)),mn.exports}var Xp=Qp();const R0=je(Xp);var yn={exports:{}},Kp=yn.exports,ya;function Zp(){return ya||(ya=1,(function(e,t){(function(n,r){e.exports=r()})(Kp,(function(){return function(n,r){r.prototype.isSameOrBefore=function(i,s){return this.isSame(i,s)||this.isBefore(i,s)}}}))})(yn)),yn.exports}var Jp=Zp();const C0=je(Jp);function Ve(){return Ve=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function bn(e,t,n){return tv()?bn=Reflect.construct.bind():bn=function(i,s,o){var a=[null];a.push.apply(a,s);var f=Function.bind.apply(i,a),u=new f;return o&&Wt(u,o.prototype),u},bn.apply(null,arguments)}function nv(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function ur(e){var t=typeof Map=="function"?new Map:void 0;return ur=function(r){if(r===null||!nv(r))return r;if(typeof r!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(r))return t.get(r);t.set(r,i)}function i(){return bn(r,arguments,fr(this).constructor)}return i.prototype=Object.create(r.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),Wt(i,r)},ur(e)}var rv=/%[sdj%]/g,iv=function(){};function cr(e){if(!e||!e.length)return null;var t={};return e.forEach(function(n){var r=n.field;t[r]=t[r]||[],t[r].push(n)}),t}function se(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=s)return a;switch(a){case"%s":return String(n[i++]);case"%d":return Number(n[i++]);case"%j":try{return JSON.stringify(n[i++])}catch{return"[Circular]"}break;default:return a}});return o}return e}function av(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function G(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||av(t)&&typeof e=="string"&&!e)}function ov(e,t,n){var r=[],i=0,s=e.length;function o(a){r.push.apply(r,a||[]),i++,i===s&&n(r)}e.forEach(function(a){t(a,o)})}function ba(e,t,n){var r=0,i=e.length;function s(o){if(o&&o.length){n(o);return}var a=r;r=r+1,a()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Pt={integer:function(t){return Pt.number(t)&&parseInt(t,10)===t},float:function(t){return Pt.number(t)&&!Pt.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!Pt.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(Sa.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(dv())},hex:function(t){return typeof t=="string"&&!!t.match(Sa.hex)}},hv=function(t,n,r,i,s){if(t.required&&n===void 0){Ho(t,n,r,i,s);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],a=t.type;o.indexOf(a)>-1?Pt[a](n)||i.push(se(s.messages.types[a],t.fullField,t.type)):a&&typeof n!==t.type&&i.push(se(s.messages.types[a],t.fullField,t.type))},pv=function(t,n,r,i,s){var o=typeof t.len=="number",a=typeof t.min=="number",f=typeof t.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=n,l=null,d=typeof n=="number",h=typeof n=="string",m=Array.isArray(n);if(d?l="number":h?l="string":m&&(l="array"),!l)return!1;m&&(c=n.length),h&&(c=n.replace(u,"_").length),o?c!==t.len&&i.push(se(s.messages[l].len,t.fullField,t.len)):a&&!f&&ct.max?i.push(se(s.messages[l].max,t.fullField,t.max)):a&&f&&(ct.max)&&i.push(se(s.messages[l].range,t.fullField,t.min,t.max))},ft="enum",vv=function(t,n,r,i,s){t[ft]=Array.isArray(t[ft])?t[ft]:[],t[ft].indexOf(n)===-1&&i.push(se(s.messages[ft],t.fullField,t[ft].join(", ")))},gv=function(t,n,r,i,s){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||i.push(se(s.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern=="string"){var o=new RegExp(t.pattern);o.test(n)||i.push(se(s.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},B={required:Ho,whitespace:lv,type:hv,range:pv,enum:vv,pattern:gv},mv=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n,"string")&&!t.required)return r();B.required(t,n,i,o,s,"string"),G(n,"string")||(B.type(t,n,i,o,s),B.range(t,n,i,o,s),B.pattern(t,n,i,o,s),t.whitespace===!0&&B.whitespace(t,n,i,o,s))}r(o)},yv=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n)&&!t.required)return r();B.required(t,n,i,o,s),n!==void 0&&B.type(t,n,i,o,s)}r(o)},bv=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(n===""&&(n=void 0),G(n)&&!t.required)return r();B.required(t,n,i,o,s),n!==void 0&&(B.type(t,n,i,o,s),B.range(t,n,i,o,s))}r(o)},wv=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n)&&!t.required)return r();B.required(t,n,i,o,s),n!==void 0&&B.type(t,n,i,o,s)}r(o)},xv=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n)&&!t.required)return r();B.required(t,n,i,o,s),G(n)||B.type(t,n,i,o,s)}r(o)},Ov=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n)&&!t.required)return r();B.required(t,n,i,o,s),n!==void 0&&(B.type(t,n,i,o,s),B.range(t,n,i,o,s))}r(o)},Sv=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n)&&!t.required)return r();B.required(t,n,i,o,s),n!==void 0&&(B.type(t,n,i,o,s),B.range(t,n,i,o,s))}r(o)},Av=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(n==null&&!t.required)return r();B.required(t,n,i,o,s,"array"),n!=null&&(B.type(t,n,i,o,s),B.range(t,n,i,o,s))}r(o)},Ev=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n)&&!t.required)return r();B.required(t,n,i,o,s),n!==void 0&&B.type(t,n,i,o,s)}r(o)},Mv="enum",_v=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n)&&!t.required)return r();B.required(t,n,i,o,s),n!==void 0&&B[Mv](t,n,i,o,s)}r(o)},$v=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n,"string")&&!t.required)return r();B.required(t,n,i,o,s),G(n,"string")||B.pattern(t,n,i,o,s)}r(o)},Pv=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n,"date")&&!t.required)return r();if(B.required(t,n,i,o,s),!G(n,"date")){var f;n instanceof Date?f=n:f=new Date(n),B.type(t,f,i,o,s),f&&B.range(t,f.getTime(),i,o,s)}}r(o)},Tv=function(t,n,r,i,s){var o=[],a=Array.isArray(n)?"array":typeof n;B.required(t,n,i,o,s,a),r(o)},Kn=function(t,n,r,i,s){var o=t.type,a=[],f=t.required||!t.required&&i.hasOwnProperty(t.field);if(f){if(G(n,o)&&!t.required)return r();B.required(t,n,i,a,s,o),G(n,o)||B.type(t,n,i,a,s)}r(a)},Rv=function(t,n,r,i,s){var o=[],a=t.required||!t.required&&i.hasOwnProperty(t.field);if(a){if(G(n)&&!t.required)return r();B.required(t,n,i,o,s)}r(o)},It={string:mv,method:yv,number:bv,boolean:wv,regexp:xv,integer:Ov,float:Sv,array:Av,object:Ev,enum:_v,pattern:$v,date:Pv,url:Kn,hex:Kn,email:Kn,required:Tv,any:Rv};function lr(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var dr=lr(),Ln=(function(){function e(n){this.rules=null,this._messages=dr,this.define(n)}var t=e.prototype;return t.define=function(r){var i=this;if(!r)throw new Error("Cannot configure a schema with no rules");if(typeof r!="object"||Array.isArray(r))throw new Error("Rules must be an object");this.rules={},Object.keys(r).forEach(function(s){var o=r[s];i.rules[s]=Array.isArray(o)?o:[o]})},t.messages=function(r){return r&&(this._messages=Oa(lr(),r)),this._messages},t.validate=function(r,i,s){var o=this;i===void 0&&(i={}),s===void 0&&(s=function(){});var a=r,f=i,u=s;if(typeof f=="function"&&(u=f,f={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,a),Promise.resolve(a);function c(v){var g=[],p={};function x(b){if(Array.isArray(b)){var w;g=(w=g).concat.apply(w,b)}else g.push(b)}for(var y=0;yUe},ie64:function(){return wr.ie()&&ko},firefox:function(){return ne()||hr},opera:function(){return ne()||pr},webkit:function(){return ne()||wn},safari:function(){return wr.webkit()},chrome:function(){return ne()||xn},windows:function(){return ne()||vr},osx:function(){return ne()||On},linux:function(){return ne()||gr},iphone:function(){return ne()||yr},mobile:function(){return ne()||yr||br||mr||zo},nativeApp:function(){return ne()||Wo},android:function(){return ne()||mr},ipad:function(){return ne()||br}},Fv=wr,Iv=!!(typeof window<"u"&&window.document&&window.document.createElement),Nv={canUseDOM:Iv},Yo=Nv,Uo;Yo.canUseDOM&&(Uo=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function Lv(e,t){if(!Yo.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var i=document.createElement("div");i.setAttribute(n,"return;"),r=typeof i[n]=="function"}return!r&&Uo&&e==="wheel"&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var Bv=Lv,Ma=10,_a=40,$a=800;function Go(e){var t=0,n=0,r=0,i=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*Ma,i=n*Ma,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(r=e.deltaX),(r||i)&&e.deltaMode&&(e.deltaMode==1?(r*=_a,i*=_a):(r*=$a,i*=$a)),r&&!t&&(t=r<1?-1:1),i&&!n&&(n=i<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:i}}Go.getEventType=function(){return Fv.firefox()?"DOMMouseScroll":Bv("wheel")?"wheel":"mousewheel"};var F0=Go;const yt=Math.min,Xe=Math.max,Mn=Math.round,fn=Math.floor,$e=e=>({x:e,y:e}),jv={left:"right",right:"left",bottom:"top",top:"bottom"},Hv={start:"end",end:"start"};function xr(e,t,n){return Xe(e,yt(t,n))}function Zt(e,t){return typeof e=="function"?e(t):e}function Ze(e){return e.split("-")[0]}function Jt(e){return e.split("-")[1]}function Vo(e){return e==="x"?"y":"x"}function Kr(e){return e==="y"?"height":"width"}const qv=new Set(["top","bottom"]);function ke(e){return qv.has(Ze(e))?"y":"x"}function Zr(e){return Vo(ke(e))}function kv(e,t,n){n===void 0&&(n=!1);const r=Jt(e),i=Zr(e),s=Kr(i);let o=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(o=_n(o)),[o,_n(o)]}function Wv(e){const t=_n(e);return[Or(e),t,Or(t)]}function Or(e){return e.replace(/start|end/g,t=>Hv[t])}const Pa=["left","right"],Ta=["right","left"],zv=["top","bottom"],Yv=["bottom","top"];function Uv(e,t,n){switch(e){case"top":case"bottom":return n?t?Ta:Pa:t?Pa:Ta;case"left":case"right":return t?zv:Yv;default:return[]}}function Gv(e,t,n,r){const i=Jt(e);let s=Uv(Ze(e),n==="start",r);return i&&(s=s.map(o=>o+"-"+i),t&&(s=s.concat(s.map(Or)))),s}function _n(e){return e.replace(/left|right|bottom|top/g,t=>jv[t])}function Vv(e){return{top:0,right:0,bottom:0,left:0,...e}}function Qo(e){return typeof e!="number"?Vv(e):{top:e,right:e,bottom:e,left:e}}function $n(e){const{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function Ra(e,t,n){let{reference:r,floating:i}=e;const s=ke(t),o=Zr(t),a=Kr(o),f=Ze(t),u=s==="y",c=r.x+r.width/2-i.width/2,l=r.y+r.height/2-i.height/2,d=r[a]/2-i[a]/2;let h;switch(f){case"top":h={x:c,y:r.y-i.height};break;case"bottom":h={x:c,y:r.y+r.height};break;case"right":h={x:r.x+r.width,y:l};break;case"left":h={x:r.x-i.width,y:l};break;default:h={x:r.x,y:r.y}}switch(Jt(t)){case"start":h[o]-=d*(n&&u?-1:1);break;case"end":h[o]+=d*(n&&u?-1:1);break}return h}const Qv=async(e,t,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:s=[],platform:o}=n,a=s.filter(Boolean),f=await(o.isRTL==null?void 0:o.isRTL(t));let u=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:l}=Ra(u,r,f),d=r,h={},m=0;for(let v=0;v({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:i,rects:s,platform:o,elements:a,middlewareData:f}=t,{element:u,padding:c=0}=Zt(e,t)||{};if(u==null)return{};const l=Qo(c),d={x:n,y:r},h=Zr(i),m=Kr(h),v=await o.getDimensions(u),g=h==="y",p=g?"top":"left",x=g?"bottom":"right",y=g?"clientHeight":"clientWidth",b=s.reference[m]+s.reference[h]-d[h]-s.floating[m],w=d[h]-s.reference[h],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(u));let $=S?S[y]:0;(!$||!await(o.isElement==null?void 0:o.isElement(S)))&&($=a.floating[y]||s.floating[m]);const R=b/2-w/2,D=$/2-v[m]/2-1,C=yt(l[p],D),P=yt(l[x],D),N=C,I=$-v[m]-P,_=$/2-v[m]/2+R,A=xr(N,_,I),O=!f.arrow&&Jt(i)!=null&&_!==A&&s.reference[m]/2-(__<=0)){var P,N;const _=(((P=s.flip)==null?void 0:P.index)||0)+1,A=$[_];if(A&&(!(l==="alignment"?x!==ke(A):!1)||C.every(E=>ke(E.placement)===x?E.overflows[0]>0:!0)))return{data:{index:_,overflows:C},reset:{placement:A}};let O=(N=C.filter(M=>M.overflows[0]<=0).sort((M,E)=>M.overflows[1]-E.overflows[1])[0])==null?void 0:N.placement;if(!O)switch(h){case"bestFit":{var I;const M=(I=C.filter(E=>{if(S){const T=ke(E.placement);return T===x||T==="y"}return!0}).map(E=>[E.placement,E.overflows.filter(T=>T>0).reduce((T,F)=>T+F,0)]).sort((E,T)=>E[1]-T[1])[0])==null?void 0:I[0];M&&(O=M);break}case"initialPlacement":O=a;break}if(i!==O)return{reset:{placement:O}}}return{}}}},Zv=new Set(["left","top"]);async function Jv(e,t){const{placement:n,platform:r,elements:i}=e,s=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=Ze(n),a=Jt(n),f=ke(n)==="y",u=Zv.has(o)?-1:1,c=s&&f?-1:1,l=Zt(t,e);let{mainAxis:d,crossAxis:h,alignmentAxis:m}=typeof l=="number"?{mainAxis:l,crossAxis:0,alignmentAxis:null}:{mainAxis:l.mainAxis||0,crossAxis:l.crossAxis||0,alignmentAxis:l.alignmentAxis};return a&&typeof m=="number"&&(h=a==="end"?m*-1:m),f?{x:h*c,y:d*u}:{x:d*u,y:h*c}}const eg=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:i,y:s,placement:o,middlewareData:a}=t,f=await Jv(t,e);return o===((n=a.offset)==null?void 0:n.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:i+f.x,y:s+f.y,data:{...f,placement:o}}}}},tg=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:i}=t,{mainAxis:s=!0,crossAxis:o=!1,limiter:a={fn:g=>{let{x:p,y:x}=g;return{x:p,y:x}}},...f}=Zt(e,t),u={x:n,y:r},c=await Jr(t,f),l=ke(Ze(i)),d=Vo(l);let h=u[d],m=u[l];if(s){const g=d==="y"?"top":"left",p=d==="y"?"bottom":"right",x=h+c[g],y=h-c[p];h=xr(x,h,y)}if(o){const g=l==="y"?"top":"left",p=l==="y"?"bottom":"right",x=m+c[g],y=m-c[p];m=xr(x,m,y)}const v=a.fn({...t,[d]:h,[l]:m});return{...v,data:{x:v.x-n,y:v.y-r,enabled:{[d]:s,[l]:o}}}}}};function Bn(){return typeof window<"u"}function At(e){return Xo(e)?(e.nodeName||"").toLowerCase():"#document"}function fe(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function De(e){var t;return(t=(Xo(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Xo(e){return Bn()?e instanceof Node||e instanceof fe(e).Node:!1}function Se(e){return Bn()?e instanceof Element||e instanceof fe(e).Element:!1}function Re(e){return Bn()?e instanceof HTMLElement||e instanceof fe(e).HTMLElement:!1}function Ca(e){return!Bn()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof fe(e).ShadowRoot}const ng=new Set(["inline","contents"]);function en(e){const{overflow:t,overflowX:n,overflowY:r,display:i}=Ae(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!ng.has(i)}const rg=new Set(["table","td","th"]);function ig(e){return rg.has(At(e))}const ag=[":popover-open",":modal"];function jn(e){return ag.some(t=>{try{return e.matches(t)}catch{return!1}})}const og=["transform","translate","scale","rotate","perspective"],sg=["transform","translate","scale","rotate","perspective","filter"],fg=["paint","layout","strict","content"];function ei(e){const t=ti(),n=Se(e)?Ae(e):e;return og.some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||sg.some(r=>(n.willChange||"").includes(r))||fg.some(r=>(n.contain||"").includes(r))}function ug(e){let t=ze(e);for(;Re(t)&&!bt(t);){if(ei(t))return t;if(jn(t))return null;t=ze(t)}return null}function ti(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const cg=new Set(["html","body","#document"]);function bt(e){return cg.has(At(e))}function Ae(e){return fe(e).getComputedStyle(e)}function Hn(e){return Se(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ze(e){if(At(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Ca(e)&&e.host||De(e);return Ca(t)?t.host:t}function Ko(e){const t=ze(e);return bt(t)?e.ownerDocument?e.ownerDocument.body:e.body:Re(t)&&en(t)?t:Ko(t)}function zt(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const i=Ko(e),s=i===((r=e.ownerDocument)==null?void 0:r.body),o=fe(i);if(s){const a=Sr(o);return t.concat(o,o.visualViewport||[],en(i)?i:[],a&&n?zt(a):[])}return t.concat(i,zt(i,[],n))}function Sr(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Zo(e){const t=Ae(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const i=Re(e),s=i?e.offsetWidth:n,o=i?e.offsetHeight:r,a=Mn(n)!==s||Mn(r)!==o;return a&&(n=s,r=o),{width:n,height:r,$:a}}function ni(e){return Se(e)?e:e.contextElement}function lt(e){const t=ni(e);if(!Re(t))return $e(1);const n=t.getBoundingClientRect(),{width:r,height:i,$:s}=Zo(t);let o=(s?Mn(n.width):n.width)/r,a=(s?Mn(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!a||!Number.isFinite(a))&&(a=1),{x:o,y:a}}const lg=$e(0);function Jo(e){const t=fe(e);return!ti()||!t.visualViewport?lg:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function dg(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==fe(e)?!1:t}function Je(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),s=ni(e);let o=$e(1);t&&(r?Se(r)&&(o=lt(r)):o=lt(e));const a=dg(s,n,r)?Jo(s):$e(0);let f=(i.left+a.x)/o.x,u=(i.top+a.y)/o.y,c=i.width/o.x,l=i.height/o.y;if(s){const d=fe(s),h=r&&Se(r)?fe(r):r;let m=d,v=Sr(m);for(;v&&r&&h!==m;){const g=lt(v),p=v.getBoundingClientRect(),x=Ae(v),y=p.left+(v.clientLeft+parseFloat(x.paddingLeft))*g.x,b=p.top+(v.clientTop+parseFloat(x.paddingTop))*g.y;f*=g.x,u*=g.y,c*=g.x,l*=g.y,f+=y,u+=b,m=fe(v),v=Sr(m)}}return $n({width:c,height:l,x:f,y:u})}function qn(e,t){const n=Hn(e).scrollLeft;return t?t.left+n:Je(De(e)).left+n}function es(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-qn(e,n),i=n.top+t.scrollTop;return{x:r,y:i}}function hg(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e;const s=i==="fixed",o=De(r),a=t?jn(t.floating):!1;if(r===o||a&&s)return n;let f={scrollLeft:0,scrollTop:0},u=$e(1);const c=$e(0),l=Re(r);if((l||!l&&!s)&&((At(r)!=="body"||en(o))&&(f=Hn(r)),Re(r))){const h=Je(r);u=lt(r),c.x=h.x+r.clientLeft,c.y=h.y+r.clientTop}const d=o&&!l&&!s?es(o,f):$e(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-f.scrollLeft*u.x+c.x+d.x,y:n.y*u.y-f.scrollTop*u.y+c.y+d.y}}function pg(e){return Array.from(e.getClientRects())}function vg(e){const t=De(e),n=Hn(e),r=e.ownerDocument.body,i=Xe(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),s=Xe(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let o=-n.scrollLeft+qn(e);const a=-n.scrollTop;return Ae(r).direction==="rtl"&&(o+=Xe(t.clientWidth,r.clientWidth)-i),{width:i,height:s,x:o,y:a}}const Da=25;function gg(e,t){const n=fe(e),r=De(e),i=n.visualViewport;let s=r.clientWidth,o=r.clientHeight,a=0,f=0;if(i){s=i.width,o=i.height;const c=ti();(!c||c&&t==="fixed")&&(a=i.offsetLeft,f=i.offsetTop)}const u=qn(r);if(u<=0){const c=r.ownerDocument,l=c.body,d=getComputedStyle(l),h=c.compatMode==="CSS1Compat"&&parseFloat(d.marginLeft)+parseFloat(d.marginRight)||0,m=Math.abs(r.clientWidth-l.clientWidth-h);m<=Da&&(s-=m)}else u<=Da&&(s+=u);return{width:s,height:o,x:a,y:f}}const mg=new Set(["absolute","fixed"]);function yg(e,t){const n=Je(e,!0,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft,s=Re(e)?lt(e):$e(1),o=e.clientWidth*s.x,a=e.clientHeight*s.y,f=i*s.x,u=r*s.y;return{width:o,height:a,x:f,y:u}}function Fa(e,t,n){let r;if(t==="viewport")r=gg(e,n);else if(t==="document")r=vg(De(e));else if(Se(t))r=yg(t,n);else{const i=Jo(e);r={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return $n(r)}function ts(e,t){const n=ze(e);return n===t||!Se(n)||bt(n)?!1:Ae(n).position==="fixed"||ts(n,t)}function bg(e,t){const n=t.get(e);if(n)return n;let r=zt(e,[],!1).filter(a=>Se(a)&&At(a)!=="body"),i=null;const s=Ae(e).position==="fixed";let o=s?ze(e):e;for(;Se(o)&&!bt(o);){const a=Ae(o),f=ei(o);!f&&a.position==="fixed"&&(i=null),(s?!f&&!i:!f&&a.position==="static"&&!!i&&mg.has(i.position)||en(o)&&!f&&ts(e,o))?r=r.filter(c=>c!==o):i=a,o=ze(o)}return t.set(e,r),r}function wg(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e;const o=[...n==="clippingAncestors"?jn(t)?[]:bg(t,this._c):[].concat(n),r],a=o[0],f=o.reduce((u,c)=>{const l=Fa(t,c,i);return u.top=Xe(l.top,u.top),u.right=yt(l.right,u.right),u.bottom=yt(l.bottom,u.bottom),u.left=Xe(l.left,u.left),u},Fa(t,a,i));return{width:f.right-f.left,height:f.bottom-f.top,x:f.left,y:f.top}}function xg(e){const{width:t,height:n}=Zo(e);return{width:t,height:n}}function Og(e,t,n){const r=Re(t),i=De(t),s=n==="fixed",o=Je(e,!0,s,t);let a={scrollLeft:0,scrollTop:0};const f=$e(0);function u(){f.x=qn(i)}if(r||!r&&!s)if((At(t)!=="body"||en(i))&&(a=Hn(t)),r){const h=Je(t,!0,s,t);f.x=h.x+t.clientLeft,f.y=h.y+t.clientTop}else i&&u();s&&!r&&i&&u();const c=i&&!r&&!s?es(i,a):$e(0),l=o.left+a.scrollLeft-f.x-c.x,d=o.top+a.scrollTop-f.y-c.y;return{x:l,y:d,width:o.width,height:o.height}}function Zn(e){return Ae(e).position==="static"}function Ia(e,t){if(!Re(e)||Ae(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return De(e)===n&&(n=n.ownerDocument.body),n}function ns(e,t){const n=fe(e);if(jn(e))return n;if(!Re(e)){let i=ze(e);for(;i&&!bt(i);){if(Se(i)&&!Zn(i))return i;i=ze(i)}return n}let r=Ia(e,t);for(;r&&ig(r)&&Zn(r);)r=Ia(r,t);return r&&bt(r)&&Zn(r)&&!ei(r)?n:r||ug(e)||n}const Sg=async function(e){const t=this.getOffsetParent||ns,n=this.getDimensions,r=await n(e.floating);return{reference:Og(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Ag(e){return Ae(e).direction==="rtl"}const Eg={convertOffsetParentRelativeRectToViewportRelativeRect:hg,getDocumentElement:De,getClippingRect:wg,getOffsetParent:ns,getElementRects:Sg,getClientRects:pg,getDimensions:xg,getScale:lt,isElement:Se,isRTL:Ag};function rs(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Mg(e,t){let n=null,r;const i=De(e);function s(){var a;clearTimeout(r),(a=n)==null||a.disconnect(),n=null}function o(a,f){a===void 0&&(a=!1),f===void 0&&(f=1),s();const u=e.getBoundingClientRect(),{left:c,top:l,width:d,height:h}=u;if(a||t(),!d||!h)return;const m=fn(l),v=fn(i.clientWidth-(c+d)),g=fn(i.clientHeight-(l+h)),p=fn(c),y={rootMargin:-m+"px "+-v+"px "+-g+"px "+-p+"px",threshold:Xe(0,yt(1,f))||1};let b=!0;function w(S){const $=S[0].intersectionRatio;if($!==f){if(!b)return o();$?o(!1,$):r=setTimeout(()=>{o(!1,1e-7)},1e3)}$===1&&!rs(u,e.getBoundingClientRect())&&o(),b=!1}try{n=new IntersectionObserver(w,{...y,root:i.ownerDocument})}catch{n=new IntersectionObserver(w,y)}n.observe(e)}return o(!0),s}function I0(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:i=!0,ancestorResize:s=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:f=!1}=r,u=ni(e),c=i||s?[...u?zt(u):[],...zt(t)]:[];c.forEach(p=>{i&&p.addEventListener("scroll",n,{passive:!0}),s&&p.addEventListener("resize",n)});const l=u&&a?Mg(u,n):null;let d=-1,h=null;o&&(h=new ResizeObserver(p=>{let[x]=p;x&&x.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(d),d=requestAnimationFrame(()=>{var y;(y=h)==null||y.observe(t)})),n()}),u&&!f&&h.observe(u),h.observe(t));let m,v=f?Je(e):null;f&&g();function g(){const p=Je(e);v&&!rs(v,p)&&n(),v=p,m=requestAnimationFrame(g)}return n(),()=>{var p;c.forEach(x=>{i&&x.removeEventListener("scroll",n),s&&x.removeEventListener("resize",n)}),l?.(),(p=h)==null||p.disconnect(),h=null,f&&cancelAnimationFrame(m)}}const N0=Jr,L0=eg,B0=tg,j0=Kv,H0=Xv,q0=(e,t,n)=>{const r=new Map,i={platform:Eg,...n},s={...i.platform,_c:r};return Qv(e,t,{...i,platform:s})};var xe=function(){return xe=Object.assign||function(t){for(var n,r=1,i=arguments.length;ro.MAX_VERSION)throw new RangeError("Version value out of range");if(c<-1||c>7)throw new RangeError("Mask value out of range");this.size=a*4+17;for(var l=[],d=0;d7)throw new RangeError("Invalid value");var h,m;for(h=u;;h++){var v=o.getNumDataCodewords(h,f)*8,g=s.getTotalBits(a,h);if(g<=v){m=g;break}if(h>=c)throw new RangeError("Data too long")}for(var p=0,x=[o.Ecc.MEDIUM,o.Ecc.QUARTILE,o.Ecc.HIGH];p>>3]|=_<<7-(A&7)}),new o(h,f,I,l)},o.prototype.getModule=function(a,f){return 0<=a&&a>>9)*1335;var l=(f<<10|u)^21522;i(l>>>15==0);for(var c=0;c<=5;c++)this.setFunctionModule(8,c,r(l,c));this.setFunctionModule(8,7,r(l,6)),this.setFunctionModule(8,8,r(l,7)),this.setFunctionModule(7,8,r(l,8));for(var c=9;c<15;c++)this.setFunctionModule(14-c,8,r(l,c));for(var c=0;c<8;c++)this.setFunctionModule(this.size-1-c,8,r(l,c));for(var c=8;c<15;c++)this.setFunctionModule(8,this.size-15+c,r(l,c));this.setFunctionModule(8,this.size-8,!0)},o.prototype.drawVersion=function(){if(!(this.version<7)){for(var a=this.version,f=0;f<12;f++)a=a<<1^(a>>>11)*7973;var u=this.version<<12|a;i(u>>>18==0);for(var f=0;f<18;f++){var c=r(u,f),l=this.size-11+f%3,d=Math.floor(f/3);this.setFunctionModule(l,d,c),this.setFunctionModule(d,l,c)}}},o.prototype.drawFinderPattern=function(a,f){for(var u=-4;u<=4;u++)for(var c=-4;c<=4;c++){var l=Math.max(Math.abs(c),Math.abs(u)),d=a+c,h=f+u;0<=d&&d=h)&&w.push(R[$])})},p=0;p=1;u-=2){u==6&&(u=5);for(var c=0;c>>3],7-(f&7)),f++)}}i(f==a.length*8)},o.prototype.applyMask=function(a){if(a<0||a>7)throw new RangeError("Mask value out of range");for(var f=0;f5&&a++):(this.finderPenaltyAddHistory(c,l),u||(a+=this.finderPenaltyCountPatterns(l)*o.PENALTY_N3),u=this.modules[f][d],c=1);a+=this.finderPenaltyTerminateAndCount(u,c,l)*o.PENALTY_N3}for(var d=0;d5&&a++):(this.finderPenaltyAddHistory(h,l),u||(a+=this.finderPenaltyCountPatterns(l)*o.PENALTY_N3),u=this.modules[f][d],h=1);a+=this.finderPenaltyTerminateAndCount(u,h,l)*o.PENALTY_N3}for(var f=0;fo.MAX_VERSION)throw new RangeError("Version number out of range");var f=(16*a+128)*a+64;if(a>=2){var u=Math.floor(a/7)+2;f-=(25*u-10)*u-55,a>=7&&(f-=36)}return i(208<=f&&f<=29648),f},o.getNumDataCodewords=function(a,f){return Math.floor(o.getNumRawDataModules(a)/8)-o.ECC_CODEWORDS_PER_BLOCK[f.ordinal][a]*o.NUM_ERROR_CORRECTION_BLOCKS[f.ordinal][a]},o.reedSolomonComputeDivisor=function(a){if(a<1||a>255)throw new RangeError("Degree out of range");for(var f=[],u=0;u>>8||f>>>8)throw new RangeError("Byte out of range");for(var u=0,c=7;c>=0;c--)u=u<<1^(u>>>7)*285,u^=(f>>>c&1)*a;return i(u>>>8==0),u},o.prototype.finderPenaltyCountPatterns=function(a){var f=a[1];i(f<=this.size*3);var u=f>0&&a[2]==f&&a[3]==f*3&&a[4]==f&&a[5]==f;return(u&&a[0]>=f*4&&a[6]>=f?1:0)+(u&&a[6]>=f*4&&a[0]>=f?1:0)},o.prototype.finderPenaltyTerminateAndCount=function(a,f,u){return a&&(this.finderPenaltyAddHistory(f,u),f=0),f+=this.size,this.finderPenaltyAddHistory(f,u),this.finderPenaltyCountPatterns(u)},o.prototype.finderPenaltyAddHistory=function(a,f){f[0]==0&&(a+=this.size),f.pop(),f.unshift(a)},o.MIN_VERSION=1,o.MAX_VERSION=40,o.PENALTY_N1=3,o.PENALTY_N2=3,o.PENALTY_N3=40,o.PENALTY_N4=10,o.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],o.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],o})();e.QrCode=t;function n(o,a,f){if(a<0||a>31||o>>>a)throw new RangeError("Value out of range");for(var u=a-1;u>=0;u--)f.push(o>>>u&1)}function r(o,a){return(o>>>a&1)!=0}function i(o){if(!o)throw new Error("Assertion error")}var s=(function(){function o(a,f,u){if(this.mode=a,this.numChars=f,this.bitData=u,f<0)throw new RangeError("Invalid argument");this.bitData=u.slice()}return o.makeBytes=function(a){for(var f=[],u=0,c=a;u=1<0?e[t-1][n]:!1,i=t0?e[t][n-1]:!1,o=n>>0}),n=ce(function(){var a=ss(e.level)?e.level:is;return Tt.QrCode.encodeText(e.value,os[a]).getModules()}),r=ce(function(){return n.value.length+t.value*2}),i=ce(function(){return e.radius>0?Fg(n.value,t.value,e.radius):Ig(n.value,t.value)}),s=ce(function(){if(!e.imageSettings.src)return null;var a=Ng(n.value,e.size,t.value,e.imageSettings);return{x:a.x+t.value,y:a.y+t.value,width:a.w,height:a.h,borderRadius:a.borderRadius}}),o=ce(function(){if(!e.imageSettings.excavate||!s.value)return null;var a=Rg/(e.size/r.value);return{x:s.value.x-a,y:s.value.y-a,width:s.value.width+a*2,height:s.value.height+a*2,borderRadius:s.value.borderRadius}});return{margin:t,numCells:r,cells:n,fgPath:i,imageProps:s,imageBorderProps:o}}var ri={value:{type:String,required:!0,default:""},size:{type:Number,default:Pg},level:{type:String,default:is,validator:function(e){return ss(e)}},background:{type:String,default:"#fff"},foreground:{type:String,default:"#000"},margin:{type:Number,required:!1,default:as},imageSettings:{type:Object,required:!1,default:function(){return{}}},gradient:{type:Boolean,required:!1,default:!1},gradientType:{type:String,required:!1,default:"linear",validator:function(e){return["linear","radial"].indexOf(e)>-1}},gradientStartColor:{type:String,required:!1,default:"#000"},gradientEndColor:{type:String,required:!1,default:"#fff"},radius:{type:Number,required:!1,default:0,validator:function(e){return!isNaN(e)&&e>=0&&e<=.5}},id:{type:String,required:!1}},Lg=xe(xe({},ri),{renderAs:{type:String,required:!1,default:"canvas",validator:function(e){return["canvas","svg"].indexOf(e)>-1}}}),Bg=Ar({name:"QRCodeSvg",props:ri,setup:function(e){var t=fs(e),n=t.numCells,r=t.fgPath,i=t.imageProps,s=t.imageBorderProps,o=$g(e.id),a="qrcode.vue-gradient-".concat(o),f="qrcode.vue-logo-clip-path-".concat(o),u=ce(function(){if(!e.gradient)return null;var l=e.gradientType==="linear"?{x1:"0%",y1:"0%",x2:"100%",y2:"100%"}:{cx:"50%",cy:"50%",r:"50%",fx:"50%",fy:"50%"};return K(e.gradientType==="linear"?"linearGradient":"radialGradient",xe({id:a},l),[K("stop",{offset:"0%",style:{stopColor:e.gradientStartColor}}),K("stop",{offset:"100%",style:{stopColor:e.gradientEndColor}})])}),c=ce(function(){if(!i.value)return null;var l=i.value.borderRadius;return l<=0?null:K("clipPath",{id:f},[K("rect",{x:i.value.x,y:i.value.y,width:i.value.width,height:i.value.height,rx:l,ry:l})])});return function(){return K("svg",{width:e.size,height:e.size,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(n.value," ").concat(n.value),role:"img","aria-label":e.value},[K("defs",{},[u.value,c.value]),K("rect",{width:"100%",height:"100%",fill:e.background}),K("path",{fill:e.gradient?"url(#".concat(a,")"):e.foreground,d:r.value}),s.value&&K("rect",{x:s.value.x,y:s.value.y,width:s.value.width,height:s.value.height,fill:e.background,rx:s.value.borderRadius,ry:s.value.borderRadius}),e.imageSettings.src&&i.value&&K("image",xe(xe({href:e.imageSettings.src},i.value),i.value.borderRadius>0?{"clip-path":"url(#".concat(f,")")}:{}))])}}}),jg=Ar({name:"QRCodeCanvas",props:ri,setup:function(e,t){var n=fs(e),r=n.margin,i=n.cells,s=n.numCells,o=n.fgPath,a=n.imageProps,f=n.imageBorderProps,u=Y(null),c=Y(null),l=function(h,m,v,g,p,x){h.beginPath(),h.roundRect?h.roundRect(m,v,g,p,x):h.rect(m,v,g,p)},d=function(){var h=e.size,m=e.background,v=e.foreground,g=e.gradient,p=e.gradientType,x=e.gradientStartColor,y=e.gradientEndColor,b=u.value;if(b){var w=b.getContext("2d");if(w){var S=c.value,$=typeof window<"u"&&window.devicePixelRatio||1,R=h/s.value*$;if(b.height=b.width=h*$,w.setTransform(R,0,0,R,0,0),w.fillStyle=m,w.fillRect(0,0,s.value,s.value),g){var D=void 0;p==="linear"?D=w.createLinearGradient(0,0,s.value,s.value):D=w.createRadialGradient(s.value/2,s.value/2,0,s.value/2,s.value/2,s.value/2),D.addColorStop(0,x),D.addColorStop(1,y),w.fillStyle=D}else w.fillStyle=v;Cg?w.fill(new Path2D(o.value)):i.value.forEach(function(I,_){I.forEach(function(A,O){A&&w.fillRect(O+r.value,_+r.value,1,1)})});var C=e.imageSettings.src&&S&&S.naturalWidth!==0&&S.naturalHeight!==0;if(C&&a.value){if(f.value){var P=f.value;w.fillStyle=e.background,l(w,P.x,P.y,P.width,P.height,P.borderRadius),w.fill()}var N=a.value.borderRadius;N>0?(w.save(),l(w,a.value.x,a.value.y,a.value.width,a.value.height,N),w.clip(),w.drawImage(S,a.value.x,a.value.y,a.value.width,a.value.height),w.restore()):w.drawImage(S,a.value.x,a.value.y,a.value.width,a.value.height)}}}};return ja(d),Ha(d),function(){return K(ps,[K("canvas",xe(xe({},t.attrs),{ref:u,role:"img","aria-label":e.value,style:xe(xe({},t.attrs.style),{width:"".concat(e.size,"px"),height:"".concat(e.size,"px")})})),e.imageSettings.src&&K("img",{ref:c,src:e.imageSettings.src,style:{display:"none"},onLoad:d})])}}}),k0=Ar({name:"Qrcode",props:Lg,setup:function(e){return function(){return K(e.renderAs==="svg"?Bg:jg,{value:e.value,size:e.size,margin:e.margin,level:e.level,background:e.background,foreground:e.foreground,imageSettings:e.imageSettings,gradient:e.gradient,gradientType:e.gradientType,gradientStartColor:e.gradientStartColor,gradientEndColor:e.gradientEndColor,radius:e.radius,id:e.id})}}});export{F0 as $,s0 as A,i0 as B,M0 as C,ku as D,$o as E,_0 as F,$0 as G,P0 as H,T0 as I,R0 as J,C0 as K,c0 as L,o0 as M,f0 as N,Wg as O,m0 as P,Vd as Q,Yg as R,Ln as S,S0 as T,y0 as U,kg as V,Ir as W,D0 as X,Kg as Y,Jg as Z,Ug as _,In as a,p0 as a0,w0 as a1,g0 as a2,e0 as a3,H0 as a4,q0 as a5,L0 as a6,b0 as a7,j0 as a8,B0 as a9,I0 as aa,N0 as ab,d0 as ac,k0 as ad,Qg as b,v0 as c,le as d,a0 as e,Vg as f,Hu as g,Mo as h,Xg as i,Z as j,Zg as k,bd as l,u0 as m,A0 as n,l0 as o,t0 as p,E0 as q,r0 as r,n0 as s,Qt as t,x0 as u,Gg as v,zg as w,h0 as x,O0 as y,qg as z}; diff --git a/static/admin/index.html b/static/admin/index.html index 725cf66..6ef57f0 100644 --- a/static/admin/index.html +++ b/static/admin/index.html @@ -1,20 +1,19 @@ - - - - - - - 后台管理 - 知识管理平台 - + + + + + + + 后台管理 - 知识管理平台 + - - + + - - - - - - + + + + +