diff --git a/.gitignore b/.gitignore index 4eebc246..8c14d7ad 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ venv .venv* __pycache__ +node_modules/ output/* !output/.keep @@ -45,6 +46,8 @@ config/.update_cache.json # IDE/Tool directories .sisyphus/ .playwright-mcp/ +frontend/source/test-results/ +frontend/source/playwright-report/ # Local docs (not uploaded to GitHub) doc/ diff --git a/docs/design/frontend-source-of-truth-plan.md b/docs/design/frontend-source-of-truth-plan.md index 7b5884d2..1fbd7fe8 100644 --- a/docs/design/frontend-source-of-truth-plan.md +++ b/docs/design/frontend-source-of-truth-plan.md @@ -1,5 +1,5 @@ -# Frontend Source-of-Truth Recovery Plan - +# Frontend Source-of-Truth Recovery Plan + Status: draft Branch context: `editor` Created: 2026-05-30 @@ -9,222 +9,285 @@ Created: 2026-05-30 - 2026-05-30: Added `scripts/patch_frontend_dist.py` to reapply and validate the current native tag editor dist patches. The script covers the VuePress app route mapping, sidebar JSON, native page-data chunk, native page preload contract, settings cache-bust URL, and SSR sidebar snapshots. - 2026-05-30: The first script run found older SSR pages that still exposed the single `标签编辑` sidebar entry. Those snapshots were updated to split `经典标签编辑` and `原生标签编辑`, with regression coverage in `tests/test_dataset_editor_api.py`. - 2026-05-30: Expanded the patch script to also cover the older Anima/SD3 dist text patches documented in `frontend/VENDOR.md`, including the app sidebar, `sd3` render chunk, `sd3` page-data chunk, and `lora/sd3.html` SSR copy. +- 2026-05-30: Created `codex/frontend-source` with `frontend/source`, a minimal Vite + Vue 3 + TypeScript shell. It declares public compatibility routes in `src/routes.json`, builds static output to `build/frontend-source-dist`, writes HTML route aliases, and has `scripts/verify_frontend_source.py` for source/build contract checks. +- 2026-05-30: Started incremental migration by adding a source-owned `/other/settings.html` page. It reads and writes the existing `ui-configs` and `sd-trainer-ui-advanced-links` localStorage keys, includes native tag editor API settings, masks the API key field, and is covered by `tests/test_frontend_source.py`. +- 2026-05-30: Added low-risk Anima source route scaffolding for `/lora/sd3.html` and `/lora/anima-finetune.html`. The source app now records the stable route, `model_train_type`, schema file, and backend entrypoint contracts without touching the mature SD/Flux training pages. +- 2026-05-30: Migrated the native tag editor entry into `frontend/source`. The source app owns `/native-tageditor.html`, packages the native editor JS/CSS assets into the source build output, and adds a Playwright browser smoke script for the generated source frontend. +- 2026-05-30: Migrated the first tagger source route. `/tagger.html` now has a source-owned form scaffold and packages the tagger progress dock asset into the source build output while preserving the existing `/api/tagger/*` and `/api/interrogate` backend contracts. +- 2026-05-30: Removed the source frontend dependency on the copied `tagger-progress.js` asset. The source tagger page now owns its form state, progress dock, status polling, prefetch, start, cancel, and reset calls in TypeScript. +- 2026-05-30: Routed the source `/dataset-editor.html` fallback/debug page to the same native editor source entry as `/native-tageditor.html`, preserving the separate public URLs while avoiding a placeholder fallback in the generated source frontend. +- 2026-05-30: Moved the native dataset editor stylesheet from a copied public asset into the source bundle. The generated source frontend no longer emits standalone `assets/dataset-editor.css`. +- 2026-05-30: Moved the native dataset editor embedded markup from copied `dataset-editor-entry.js` into a source TypeScript module. `/native-tageditor.html` and `/dataset-editor.html` now render the editor shell from source and only load the remaining editor runtime script. +- 2026-05-30: Moved the native dataset editor runtime from a copied public script into a source TypeScript module loaded by the Vue page. The generated source frontend no longer emits standalone `dataset-editor.js`, `dataset-editor-entry.js`, or `dataset-editor.css` assets. +- 2026-05-30: Expanded Anima source routes from contract scaffolds into source-owned training form shells. The forms preserve the Anima `model_train_type` values, submit to `/api/run`, and save/load local route-specific config under `sd-trainer-source-anima-configs`. +- 2026-05-30: Expanded the source-owned Anima training forms with schema-backed model asset, Anima parameter, batch, cache, preview, and caption controls while keeping SD/Flux training pages unchanged. +- 2026-05-30: Started visual parity recovery for source-owned Anima training pages by moving them into a trainer-style workbench with a sticky parameter preview and run controls, reducing dependence on the missing compiled schema renderer. +- 2026-05-30: Began extracting a source-owned training schema renderer in `frontend/source/src/trainingRenderer.ts`. Anima now consumes shared field, section, workbench, run-control, and TOML preview helpers instead of keeping all renderer logic inside the page. +- 2026-05-30: Expanded the source-owned training renderer with schema-like field metadata (`description`, `hidden`, `disabled`), row layout, and batch field rendering so future Anima/SD/Flux migration can reuse one renderer instead of hand-built page forms. +- 2026-05-30: Filled another high-priority Anima schema slice in source: adapter/resume paths, token length limits, scheduler warmup, bucket settings, timestep weighting, and LoRA train-target toggles now round-trip through the source form and preview. +- 2026-05-30: Restored common training config workflow controls in source Anima pages: reset to route defaults, export current run payload as JSON, and import JSON configs back into the source-owned form. +- 2026-05-30: Added guarded production dist sync tooling in `scripts/sync_frontend_source_dist.py`. It verifies `build/frontend-source-dist` first, dry-runs by default, and requires explicit `--apply` before replacing `frontend/dist`, with optional backup support. +- 2026-05-30: Migrated low-risk utility/info routes to source-owned static pages: `/tensorboard.html`, `/lora/tools.html`, `/task.html`, `/help/guide.html`, `/other/about.html`, and `/other/changelog.html`. These now render real source content instead of the generic compatibility placeholder while keeping backend/service contracts unchanged. +- 2026-05-30: Expanded Anima schema parity with preview sampler/scheduler controls, step-0 preview toggle, logit/mode weighting fields, split attention/VAE toggles, FP8 cache controls, worker/cache batch settings, and offload fields shared by LoRA and finetune routes. +- 2026-05-30: Pushed the source training renderer toward reusable schema components by adding `TrainingSectionSpec`, `visibleWhen`, field roles, and source-owned file/folder path field affordances. Anima model, dataset, output, tokenizer, adapter, and resume paths now declare roles instead of being plain text inputs. +- 2026-05-30: Began moving Anima off render-function field declarations by extracting the model asset controls into a `TrainingSectionSpec` rendered through the shared schema-style training renderer. +- 2026-05-30: Extended `TrainingSectionSpec` with row items and extracted Anima dataset/output controls into a second schema-style section while preserving the existing row layout. +- 2026-05-30: Extracted the remaining Anima form groups (`Training`, `LoRA Adapter`, `Anima Parameters`, `Cache`, and `Preview`) into schema-style `TrainingSectionSpec` constants, leaving the page render function focused on route/workflow composition. +- 2026-05-30: Split Anima schema definitions into `frontend/source/src/animaSchema.ts`, so `anima.ts` now owns page workflow while schema/defaults/route metadata live behind a reusable source module. +- 2026-05-30: Added declarative visibility rules to the source training renderer and started using them in Anima schema sections for preview-only fields and weighting-scheme-specific controls. +- 2026-05-30: Added batch section rendering with `renderTrainingSchemaSections` and moved Anima route-specific section composition into `animaSectionsForPlan`, further separating schema composition from page workflow. +- 2026-05-30: Added source-owned table/list field rendering for schema `role('table')`-style inputs and wired Anima `optimizer_args_custom` / `network_args_custom` into the schema sections. +- 2026-05-30: Added Anima debug option coverage with `enable_debug_options` conditional rendering for profiling, NaN checks, debug mode, and RoPE mismatch settings. +- 2026-05-30: Added source-owned Anima coverage for shared noise settings, data enhancement toggles, other/custom params, and distributed training fields. +- 2026-05-30: Expanded Anima optimizer/LR parity with per-block finetune learning rates, scheduler cycle controls, min SNR, and Prodigy-specific conditional parameters. +- 2026-05-30: Expanded Anima LoRA adapter parity with resume weights, dim inference, norm/dropout controls, PiSSA conditionals, LoKr fields, and T-LoRA fields, while stripping LoRA-only payload keys from finetune submissions. +- 2026-05-30: Promoted mature training compatibility routes (`/lora/index.html`, `/lora/basic.html`, `/lora/master.html`, `/lora/flux.html`, `/dreambooth/index.html`, and `/lora/params.html`) from generic placeholders to source-owned static pages without changing their training behavior. +- 2026-05-30: Added source-owned training schema definition helpers, real slider rendering for `role: "slider"` numeric fields, and a shared path browse event bridge for file/folder fields. +- 2026-05-30: Promoted `/tageditor.html` and `/` from generic compatibility placeholders to source-owned static pages, keeping the classic editor, native editor, and dataset debug routes explicitly separate. +- 2026-05-30: Added dedicated browser smoke coverage for the historical Anima LoRA route `/lora/sd3.html`, including LoRA adapter fields and `model_train_type = "anima-lora"` preview output. + +Current source independence estimate: about 90%. The remaining work is no longer blocked by missing frontend source for the migrated routes; it is mainly final production-dist replacement approval, one clean `--apply --backup` rehearsal, and any visual polish discovered during that rehearsal. ## Background SD Trainer Next currently serves the trainer WebUI from `frontend/dist/`. That directory is a vendored prebuilt VuePress/Vue application, originally sourced from `hanamizuki-ai/lora-gui-dist`. - -Public upstream history suggests the trainer frontend was published to the main Akegarasu repository as a dist submodule from its first visible integration: - -- `Akegarasu/lora-scripts` first added `frontend` as a submodule in commit `8ea34ab` on 2023-04-23. -- That submodule pointed to `https://github.com/hanamizuki-ai/lora-gui-dist`. -- The visible history of `hanamizuki-ai/lora-gui-dist` contains prebuilt `dist/` files from its earliest commits, not a source project with `package.json`, `src/`, or VuePress config. - -As a result, this fork currently patches compiled assets directly. This has worked for targeted fixes, but it is not a healthy long-term maintenance model. - -## Problem - -Important UI behavior is hidden inside minified build artifacts such as: - -- `frontend/dist/assets/app.547295de.js` -- hashed page-data chunks under `frontend/dist/assets/` -- SSR HTML snapshots under `frontend/dist/**/*.html` - -This creates recurring maintenance risks: - -- Route changes require hand-editing minified bundles. -- Sidebar changes must often be patched in both JS runtime data and SSR HTML. -- Encoding mistakes can corrupt Chinese text. -- Cache-busting and hashed asset names make fixes fragile. -- Multiple agents editing `frontend/dist/` can easily conflict. -- A simple search on a minified single-line bundle can produce huge tool output and destabilize agent sessions. - -The native tag editor work exposed this sharply: `/native-tageditor.html` returned HTTP 200 and loaded the native editor entry script, but VuePress still rendered the classic tag editor because `v-native-tageditor` was mapped to the classic `tageditor.html.*.js` page-data chunk inside `app.547295de.js`. - -## Goal - -Create a maintainable frontend source-of-truth owned by this project. - -In plain terms: future UI changes should be made in source files, then built into `frontend/dist/`, instead of manually patching compiled JavaScript and HTML. - -## Non-Goals - -This project must not become a broad UI rewrite while the native tag editor is still being stabilized. - -Do not do the following in the first phase: - -- Replace the trainer WebUI in `main`. -- Rewrite all training pages at once. -- Change portable contract directories or launch scripts. -- Break existing `frontend/dist/` serving behavior. -- Remove the classic editor before the native editor is proven stable. - -## Recommended Strategy - -Use a staged recovery rather than a big-bang rewrite. - -### Phase 0: Stabilize Current Editor Work - -Finish the native tag editor on the `editor` branch first. - -Required guardrails: - -- Keep `/dataset-editor.html` as standalone fallback/debug. -- Keep `/native-tageditor.html` as the trainer-embedded native editor. -- Keep `/tageditor.html` as the classic editor. -- Keep direct `frontend/dist/` patches small and test-covered. -- Keep the current regression tests for native route mapping, sidebar JSON, and settings behavior. - -Exit criteria: - -- Native editor loads reliably without falling back to the classic editor. -- Real dataset QA covers scan, thumbnails, selection, batch edit/tagging, save, undo, and redo. -- The branch has no known 404/mojibake/cache regressions. - -### Phase 1: Make Dist Patching Reproducible - -Before building a new frontend source tree, script the existing dist patches so they are repeatable. - -Deliverables: - -- A patch script under `scripts/`, for example `scripts/patch_frontend_dist.py`. -- The script should: - - detect expected input assets and hashes, - - patch route mappings, - - patch sidebar/theme data, - - patch SSR HTML where needed, - - validate that JSON blocks still parse, - - fail loudly when upstream dist layout changes. -- Tests should assert the final observable behavior, not just string replacement. - -This phase reduces risk immediately and gives the future frontend rebuild a baseline to compare against. - -### Phase 2: Create a Parallel Source Frontend Branch - -Create a separate branch, suggested name: - -```text -frontend-source -``` - -or: - -```text -app-shell-rebuild -``` - -This branch should not block the `editor` branch. - -Initial source project requirements: - -- Use a modern, boring stack, preferably Vite + Vue 3 + TypeScript. -- Reuse the existing trainer visual language where practical. -- Keep output compatible with the current FastAPI static serving model. -- Produce a `dist` folder that can be served by the existing backend without npm at runtime. -- Keep build tooling out of portable runtime requirements. - -Recommended early pages: - -- Trainer shell/sidebar. -- Settings page. -- Native tag editor page. -- Minimal compatibility routes for existing links. - -Do not migrate all training pages in the first pass unless necessary. - -### Phase 3: Compatibility Layer - -The rebuilt frontend must preserve current public routes or provide backend redirects. - -Important routes include: - -- `/` -- `/tagger.html` -- `/tageditor.html` -- `/native-tageditor.html` -- `/dataset-editor.html` -- `/tensorboard.html` -- `/other/settings.html` -- `/lora/*` - -The source frontend should define routes explicitly in source, with tests covering generated output. - -### Phase 4: Incremental Migration - -Once the new app shell is buildable and served successfully, migrate one page family at a time. - -Suggested order: - -1. Settings and utility pages. -2. Native tag editor. -3. Tagger page and tagging model settings. -4. Training pages only after shell and settings are stable. - -Each migrated area should include: - -- route tests, -- visual smoke checks, -- compatibility checks for old links, -- portable package validation where relevant. - + +Public upstream history suggests the trainer frontend was published to the main Akegarasu repository as a dist submodule from its first visible integration: + +- `Akegarasu/lora-scripts` first added `frontend` as a submodule in commit `8ea34ab` on 2023-04-23. +- That submodule pointed to `https://github.com/hanamizuki-ai/lora-gui-dist`. +- The visible history of `hanamizuki-ai/lora-gui-dist` contains prebuilt `dist/` files from its earliest commits, not a source project with `package.json`, `src/`, or VuePress config. + +As a result, this fork currently patches compiled assets directly. This has worked for targeted fixes, but it is not a healthy long-term maintenance model. + +## Problem + +Important UI behavior is hidden inside minified build artifacts such as: + +- `frontend/dist/assets/app.547295de.js` +- hashed page-data chunks under `frontend/dist/assets/` +- SSR HTML snapshots under `frontend/dist/**/*.html` + +This creates recurring maintenance risks: + +- Route changes require hand-editing minified bundles. +- Sidebar changes must often be patched in both JS runtime data and SSR HTML. +- Encoding mistakes can corrupt Chinese text. +- Cache-busting and hashed asset names make fixes fragile. +- Multiple agents editing `frontend/dist/` can easily conflict. +- A simple search on a minified single-line bundle can produce huge tool output and destabilize agent sessions. + +The native tag editor work exposed this sharply: `/native-tageditor.html` returned HTTP 200 and loaded the native editor entry script, but VuePress still rendered the classic tag editor because `v-native-tageditor` was mapped to the classic `tageditor.html.*.js` page-data chunk inside `app.547295de.js`. + +## Goal + +Create a maintainable frontend source-of-truth owned by this project. + +In plain terms: future UI changes should be made in source files, then built into `frontend/dist/`, instead of manually patching compiled JavaScript and HTML. + +## Non-Goals + +This project must not become a broad UI rewrite while the native tag editor is still being stabilized. + +Do not do the following in the first phase: + +- Replace the trainer WebUI in `main`. +- Rewrite all training pages at once. +- Change portable contract directories or launch scripts. +- Break existing `frontend/dist/` serving behavior. +- Remove the classic editor before the native editor is proven stable. + +## Recommended Strategy + +Use a staged recovery rather than a big-bang rewrite. + +### Phase 0: Stabilize Current Editor Work + +Finish the native tag editor on the `editor` branch first. + +Required guardrails: + +- Keep `/dataset-editor.html` as standalone fallback/debug. +- Keep `/native-tageditor.html` as the trainer-embedded native editor. +- Keep `/tageditor.html` as the classic editor. +- Keep direct `frontend/dist/` patches small and test-covered. +- Keep the current regression tests for native route mapping, sidebar JSON, and settings behavior. + +Exit criteria: + +- Native editor loads reliably without falling back to the classic editor. +- Real dataset QA covers scan, thumbnails, selection, batch edit/tagging, save, undo, and redo. +- The branch has no known 404/mojibake/cache regressions. + +### Phase 1: Make Dist Patching Reproducible + +Before building a new frontend source tree, script the existing dist patches so they are repeatable. + +Deliverables: + +- A patch script under `scripts/`, for example `scripts/patch_frontend_dist.py`. +- The script should: + - detect expected input assets and hashes, + - patch route mappings, + - patch sidebar/theme data, + - patch SSR HTML where needed, + - validate that JSON blocks still parse, + - fail loudly when upstream dist layout changes. +- Tests should assert the final observable behavior, not just string replacement. + +This phase reduces risk immediately and gives the future frontend rebuild a baseline to compare against. + +### Phase 2: Create a Parallel Source Frontend Branch + +Create a separate branch, suggested name: + +```text +frontend-source +``` + +or: + +```text +app-shell-rebuild +``` + +This branch should not block the `editor` branch. + +Initial source project requirements: + +- Use a modern, boring stack, preferably Vite + Vue 3 + TypeScript. +- Reuse the existing trainer visual language where practical. +- Keep output compatible with the current FastAPI static serving model. +- Produce a `dist` folder that can be served by the existing backend without npm at runtime. +- Keep build tooling out of portable runtime requirements. + +Recommended early pages: + +- Trainer shell/sidebar. +- Settings page. +- Native tag editor page. +- Minimal compatibility routes for existing links. + +Do not migrate all training pages in the first pass unless necessary. + +### Phase 3: Compatibility Layer + +The rebuilt frontend must preserve current public routes or provide backend redirects. + +Important routes include: + +- `/` +- `/tagger.html` +- `/tageditor.html` +- `/native-tageditor.html` +- `/dataset-editor.html` +- `/tensorboard.html` +- `/other/settings.html` +- `/lora/*` + +The source frontend should define routes explicitly in source, with tests covering generated output. + +### Phase 4: Incremental Migration + +Once the new app shell is buildable and served successfully, migrate one page family at a time. + +Suggested order: + +1. Settings and utility pages. +2. Native tag editor. +3. Tagger page and tagging model settings. +4. Training pages only after shell and settings are stable. + +Each migrated area should include: + +- route tests, +- visual smoke checks, +- compatibility checks for old links, +- portable package validation where relevant. + ### Phase 5: Retire Manual Dist Surgery When the source frontend can generate the necessary production `dist`, stop hand-editing minified bundles. - -Retirement criteria: - -- No required behavior depends on manual edits to `app.*.js`. -- Sidebar and route data come from source files. -- Settings schema and sensitive-field behavior are source-owned. -- Native editor entry is source-owned. + +Retirement criteria: + +- No required behavior depends on manual edits to `app.*.js`. +- Sidebar and route data come from source files. +- Settings schema and sensitive-field behavior are source-owned. +- Native editor entry is source-owned. - Build output is reproducible from a clean checkout. -## Investigation Tasks for the Next Agent +### Production Dist Replacement Gate -The next Codex/agent should start with evidence gathering, not implementation. +Do not manually edit `frontend/dist/` while this source-of-truth branch is being prepared. All source frontend changes must land in `frontend/source/`, then be validated through the generated `build/frontend-source-dist` output. -Checklist: - -- Read `frontend/VENDOR.md`. -- Read `agent_allinone.md`. -- Read this document. -- Inspect `mikazuki/app/application.py` static serving behavior. -- Inspect existing tests in `tests/test_dataset_editor_api.py`. -- Confirm current branch state with: +Before any production replacement attempt, run these commands from a clean checkout: ```powershell -git status --short --untracked-files=all -git log --oneline --decorate -5 +cd frontend\source +npm run check +npm run build +npm run smoke +cd ..\.. +.\venv\Scripts\python.exe scripts\verify_frontend_source.py --require-built-output +.\venv\Scripts\python.exe scripts\sync_frontend_source_dist.py +.\venv\Scripts\python.exe -m pytest tests\test_frontend_source.py tests\test_dataset_editor_api.py tests\test_tagger_progress_api.py tests\test_portable_packaging_scripts.py -q ``` -- Confirm upstream frontend history if needed: - -```powershell -git fetch akegarasu main -git show 8ea34ab3d8e5289b09f6977728979bd704fa806b:.gitmodules -git clone --bare --filter=blob:none https://github.com/hanamizuki-ai/lora-gui-dist.git ../_tmp_lora_gui_dist_bare -git --git-dir=../_tmp_lora_gui_dist_bare ls-tree -r --name-only 62b5805 -``` - -Clean up temporary clones after investigation. - -## Risks - -- Rebuilding the frontend source tree can accidentally regress mature training forms. -- Users rely on current URLs and portable packaging behavior. -- The existing WebUI has many hidden SSR/hydration assumptions. -- Multiple frontend efforts can conflict if they all edit `frontend/dist/` directly. -- A full rewrite before the native editor is stable would multiply risk. - -## Recommendation - -Do not start the full frontend source recovery until the native tag editor reaches a stable milestone. - -After that, create a separate branch and treat this as an engineering infrastructure project: - -1. Make current dist patches reproducible. -2. Build a parallel source-owned shell. -3. Migrate routes incrementally. -4. Retire manual dist patching only after the generated frontend passes compatibility tests. - -This lets the project stop depending on unavailable upstream frontend source without jeopardizing the current editor work. +The sync command above is intentionally a dry-run. Do not run `scripts/sync_frontend_source_dist.py --apply` until the PR has explicit maintainer approval to replace `frontend/dist/`. If approval is granted, use `--backup` for the first replacement rehearsal so the previous vendored dist can be inspected or restored without relying on git history alone. + +After an approved `--apply --backup` rehearsal, run `npm run smoke:dist` from `frontend\source` to browser-check the generated `frontend/dist` entrypoints, including `/tageditor.html`, native tag editor routes, Anima, params, and TensorBoard. + +For the large production `frontend/dist` replacement commit, reviewers should not audit generated hash files by hand. Instead, review the source changes and run `scripts/verify_frontend_dist_matches_source.py` after `--apply`; it proves the committed production dist matches `build/frontend-source-dist` byte-for-byte. + +The required verification gate is `scripts/verify_frontend_source.py --require-built-output`; it must pass before the dry-run sync is considered meaningful. + +## Investigation Tasks for the Next Agent + +The next Codex/agent should start with evidence gathering, not implementation. + +Checklist: + +- Read `frontend/VENDOR.md`. +- Read `agent_allinone.md`. +- Read this document. +- Inspect `mikazuki/app/application.py` static serving behavior. +- Inspect existing tests in `tests/test_dataset_editor_api.py`. +- Confirm current branch state with: + +```powershell +git status --short --untracked-files=all +git log --oneline --decorate -5 +``` + +- Confirm upstream frontend history if needed: + +```powershell +git fetch akegarasu main +git show 8ea34ab3d8e5289b09f6977728979bd704fa806b:.gitmodules +git clone --bare --filter=blob:none https://github.com/hanamizuki-ai/lora-gui-dist.git ../_tmp_lora_gui_dist_bare +git --git-dir=../_tmp_lora_gui_dist_bare ls-tree -r --name-only 62b5805 +``` + +Clean up temporary clones after investigation. + +## Risks + +- Rebuilding the frontend source tree can accidentally regress mature training forms. +- Users rely on current URLs and portable packaging behavior. +- The existing WebUI has many hidden SSR/hydration assumptions. +- Multiple frontend efforts can conflict if they all edit `frontend/dist/` directly. +- A full rewrite before the native editor is stable would multiply risk. + +## Recommendation + +Do not start the full frontend source recovery until the native tag editor reaches a stable milestone. + +After that, create a separate branch and treat this as an engineering infrastructure project: + +1. Make current dist patches reproducible. +2. Build a parallel source-owned shell. +3. Migrate routes incrementally. +4. Retire manual dist patching only after the generated frontend passes compatibility tests. + +This lets the project stop depending on unavailable upstream frontend source without jeopardizing the current editor work. diff --git a/docs/design/new-trainer-frontend-completion-plan.md b/docs/design/new-trainer-frontend-completion-plan.md new file mode 100644 index 00000000..70929c97 --- /dev/null +++ b/docs/design/new-trainer-frontend-completion-plan.md @@ -0,0 +1,704 @@ +# New Trainer Frontend Completion Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Build a source-owned training UI that keeps SD Trainer Next independent from missing legacy frontend source, restores practical full training forms route by route, and presents a polished trainer experience that is visually and behaviorally familiar to Akiba/original trainer users while being cleaner, more searchable, and safer to run. + +**Architecture:** `frontend/source` remains the source of truth, `build/frontend-source-dist` is the generated artifact, and `frontend/dist` is committed only from the guarded sync script. Mature training routes should move from compatibility cards to shared schema-rendered forms by adapting existing `mikazuki/schema/*.ts` contracts into local `TrainingSectionSpec` modules. Anima stays the reference implementation for workflow, preview, save/load/import/export, and run submission behavior. + +**Tech Stack:** Vue 3 render functions, Vite, Playwright, pytest, `scripts/sync_frontend_source_dist.py`, `scripts/verify_frontend_source.py`, `scripts/verify_frontend_dist_matches_source.py`. + +--- + +## Feasibility Verdict + +This is feasible. The hardest dependency problem has already been broken: production `frontend/dist` can now be generated from `frontend/source`, and the committed dist can be proven byte-for-byte equal to the source build. + +The remaining work is product reconstruction, not blocked-source recovery. The main cost is schema migration volume: + +- Anima routes are already source-owned and should be polished into the reference training experience. +- Mature training routes already have source compatibility shells and can be restored one route at a time. +- Existing schema files under `mikazuki/schema/` provide field names, defaults, groups, and option sets. They are not directly executable in the browser source app, so each restored route needs a local schema adapter module. +- The current renderer already supports text, number, checkbox, select, textarea, table arrays, visibility rules, file/folder browse affordances, section navigation, search, previews, and run submission. + +The target visual direction should be "Akiba-familiar, SD Trainer Next cleaner": left navigation, dense grouped forms, right-side parameter preview/run workflow, compact controls, clear section navigation, and fewer decorative blocks. This is a source-owned reconstruction of the old trainer experience, not a blank new shell. We should not copy old minified CSS; we should recreate the useful layout language from readable `frontend/source` code. + +## Updated Acceptance Intent + +The user-facing target is closer to pixel-parity than compatibility scaffolding. The old frontend's practical surface area is the benchmark: + +- Training routes that existed in the old frontend should not be empty or card-only unless they are explicitly marked as temporary migration fallbacks. +- Training parameter coverage should be restored from the existing schema contracts and backend-facing parameter names. +- The core layout should preserve the recognizable old workflow: left navigation, central grouped parameter editor, right parameter preview/actions panel. +- Buttons, switches, numeric controls, file/folder affordances, save/load/import/export controls, and start/stop training actions should feel familiar to existing users. +- Improvements are welcome when they make the UI clearer, denser, more searchable, or safer, but not when they make the trainer feel unrelated to the old product. +- Backend training behavior is a red line. Prefer adapting source frontend schemas, renderers, and payload builders to existing APIs instead of changing backend launch semantics. + +In short: source independence is necessary but not sufficient. The finished product must also restore the old frontend's pages, parameter editing experience, and visual rhythm from maintainable source. + +## Completion Definition + +The new training frontend is considered complete when all P0 acceptance labels pass. + +### P0 Acceptance Labels + +- **[P0-A1 Source Ownership]** Every public frontend route in `frontend/source/src/routes.json` is generated from source and covered by `scripts/verify_frontend_source.py --require-built-output`. +- **[P0-A2 Production Sync]** `frontend/dist` matches `build/frontend-source-dist` byte-for-byte after `scripts/sync_frontend_source_dist.py --apply --backup`. +- **[P0-A3 Production Browser Smoke]** `npm run smoke:dist` passes against committed `frontend/dist`. +- **[P0-A4 Native Tag Editor]** `/native-tageditor.html`, `/native-tageditor-standalone.html`, and `/dataset-editor.html` render the source-owned native editor and do not require old VuePress chunks. +- **[P0-A5 Classic Tag Editor Retirement]** `/tageditor.html` remains a stable route but does not depend on `/proxy/tageditor/`; it guides users to native editor routes. +- **[P0-A6 Anima Full Form]** `/lora/sd3.html` and `/lora/anima-finetune.html` expose all currently migrated Anima sections, submit the expected `model_train_type`, show run result links, provide save/load/import/export, and retain old-style parameter density with a right-side parameter preview/actions panel. +- **[P0-A7 Mature Training Forms]** `/lora/basic.html`, `/lora/master.html`, `/lora/flux.html`, and `/dreambooth/index.html` no longer stop at compatibility cards; each has a source-owned form with model, dataset, output, training, optimizer, cache, preview, and advanced sections mapped from existing schema contracts. +- **[P0-A8 Legacy Visual Parity]** Core training pages preserve the old frontend's recognizable layout and interaction model: left navigation, central grouped parameter editor, right parameter preview/actions panel, compact controls, visible file/folder affordances, and prominent training controls. +- **[P0-A9 Backend Red Line]** Restored pages submit existing backend-facing parameter names and train-type contracts. Backend changes are allowed only for small compatibility fixes that do not alter training launch semantics. +- **[P0-A10 Verification Gate]** This command set passes from repo root: + +```powershell +cd frontend\source +npm run check +npm run build +npm run smoke +npm run smoke:dist +cd ..\.. +.\venv\Scripts\python.exe scripts\verify_frontend_source.py --require-built-output +.\venv\Scripts\python.exe scripts\sync_frontend_source_dist.py +.\venv\Scripts\python.exe scripts\verify_frontend_dist_matches_source.py +.\venv\Scripts\python.exe -m pytest tests\test_frontend_source.py tests\test_dataset_editor_api.py tests\test_tagger_progress_api.py tests\test_portable_packaging_scripts.py -q +``` + +### P1 Acceptance Labels + +- **[P1-B1 Akiba-Familiar Layout]** Training pages use dense left/main forms, grouped fieldsets, compact action bars, and right-side preview/run panels. They should feel familiar to existing trainer users without inheriting old brittle CSS. +- **[P1-B2 Better Than Old UX]** Each training page has search, section jump navigation, workflow summary, required-path status, and generated parameter preview. +- **[P1-B3 Reviewable Dist]** Any dist replacement commit is dist-only and accompanied by a preceding source commit plus `verify_frontend_dist_matches_source.py` output. +- **[P1-B4 Interaction Parity]** Common controls behave like users expect from the old UI: toggles feel like toggles, numeric controls stay compact, file/folder browse affordances are obvious, save/load/import/export controls sit near the preview, and start/stop training actions are prominent. +- **[P1-B5 No Empty Public Pages]** Public routes from the old frontend either provide real source-owned content or an explicit source-owned fallback explaining the migration state and linking to a working replacement. + +### P2 Acceptance Labels + +- **[P2-C1 Visual Polish]** Mobile and desktop screenshots show no overlapping controls at 390px, 768px, 1365px, and 1600px widths. +- **[P2-C2 Form Ergonomics]** Repeated option groups use reusable section specs rather than ad hoc route-specific code. +- **[P2-C3 Runtime Grace]** If backend APIs are unavailable, pages show useful status text instead of blank panels. +- **[P2-C4 Pixel-Parity Audit]** For the core training pages, compare screenshots against the old frontend and fix obvious spacing, density, button, panel, and preview mismatches unless the new design is intentionally cleaner. +- **[P2-C5 Source-Only Styling]** Visual parity must come from readable `frontend/source` CSS/components, not copied minified assets or hidden legacy bundles. + +--- + +## Files And Responsibilities + +- `frontend/source/src/trainingRenderer.ts` + Shared schema renderer: fields, rows, visibility rules, section rendering, preview, run controls, browse bridge. + +- `frontend/source/src/anima.ts` + Reference full training page workflow: route-specific payload, save/load/import/export, run submission, summary, result links. + +- `frontend/source/src/animaSchema.ts` + Reference source schema module with defaults and section specs. + +- `frontend/source/src/matureTraining.ts` + Temporary compatibility template for mature routes. This should be replaced route-by-route with real schema-backed pages. + +- `frontend/source/src/matureTrainingSchema.ts` + Create this file to hold shared mature training defaults and section factories used by Basic, SD, Flux, and Dreambooth. + +- `frontend/source/src/matureTrainingPage.ts` + Create this file to host the generic full-form page for mature routes, modeled after `anima.ts` but parameterized by route plan. + +- `frontend/source/scripts/smoke-source-frontend.spec.mjs` + Source preview smoke coverage. + +- `frontend/source/scripts/smoke-dist-frontend.spec.mjs` + Production dist smoke coverage. + +- `scripts/verify_frontend_source.py` + Static source contract verification. + +- `scripts/verify_frontend_dist_matches_source.py` + Dist review aid proving generated production output is exact. + +- `tests/test_frontend_source.py` + Python-side source contract tests. + +--- + +## Implementation Plan + +### Task 1: Lock The Current Production Baseline + +**Files:** +- Modify: `docs/design/frontend-source-of-truth-plan.md` +- Test: `tests/test_frontend_source.py` + +- [ ] **Step 1: Verify current baseline** + +Run: + +```powershell +cd frontend\source +npm run check +npm run build +npm run smoke +npm run smoke:dist +cd ..\.. +.\venv\Scripts\python.exe scripts\verify_frontend_source.py --require-built-output +.\venv\Scripts\python.exe scripts\verify_frontend_dist_matches_source.py +.\venv\Scripts\python.exe -m pytest tests\test_frontend_source.py tests\test_dataset_editor_api.py tests\test_tagger_progress_api.py tests\test_portable_packaging_scripts.py -q +``` + +Expected: + +```text +43+ source smoke tests passed +3 production dist smoke tests passed +frontend source contract OK (21 routes) +frontend dist matches source build +65 passed +``` + +- [ ] **Step 2: Add a baseline note** + +Append a dated line to `docs/design/frontend-source-of-truth-plan.md`: + +```markdown +- 2026-05-31: Production `frontend/dist` is now generated from `frontend/source` and verified with `scripts/verify_frontend_dist_matches_source.py`; mature training routes remain the next full-form recovery target. +``` + +- [ ] **Step 3: Commit** + +```powershell +git add docs/design/frontend-source-of-truth-plan.md tests/test_frontend_source.py +git commit -m "docs(frontend): record production source baseline" +``` + +### Task 2: Extract Mature Training Route Plans + +**Files:** +- Create: `frontend/source/src/matureTrainingSchema.ts` +- Modify: `frontend/source/src/matureTraining.ts` +- Test: `frontend/source/scripts/smoke-source-frontend.spec.mjs` + +- [ ] **Step 1: Write failing route-plan smoke** + +Add expectations to the existing `mature training route uses shared source template` test: + +```js +await expect(page.locator(".training-compat-page")).toContainText("Schema source"); +await expect(page.locator(".training-compat-page")).toContainText("mikazuki/schema"); +``` + +Run: + +```powershell +cd frontend\source +npx playwright test scripts/smoke-source-frontend.spec.mjs -g "mature training route" +``` + +Expected: fails because route plans do not expose schema source metadata yet. + +- [ ] **Step 2: Create route plan module** + +Create `frontend/source/src/matureTrainingSchema.ts`: + +```ts +import type { AppRoute } from "./routes"; + +export interface MatureTrainingRoutePlan { + path: string; + family: string; + schemaFile: string; + backendEntrypoint: string; + summary: string; +} + +export const MATURE_TRAINING_ROUTES: Record = { + "/lora/basic.html": { + path: "/lora/basic.html", + family: "LoRA compatibility", + schemaFile: "mikazuki/schema/lora-basic.ts", + backendEntrypoint: "scripts/stable/train_network.py", + summary: "Basic LoRA training route restored from source-owned schema sections.", + }, + "/lora/master.html": { + path: "/lora/master.html", + family: "Stable Diffusion compatibility", + schemaFile: "mikazuki/schema/lora-master.ts", + backendEntrypoint: "scripts/dev/train_network.py", + summary: "Stable Diffusion route restored without touching Anima workflows.", + }, + "/lora/flux.html": { + path: "/lora/flux.html", + family: "Flux compatibility", + schemaFile: "mikazuki/schema/flux-lora.ts", + backendEntrypoint: "scripts/dev/flux_train_network.py", + summary: "Flux LoRA route prepared for source-owned form recovery.", + }, + "/dreambooth/index.html": { + path: "/dreambooth/index.html", + family: "Dreambooth compatibility", + schemaFile: "mikazuki/schema/dreambooth.ts", + backendEntrypoint: "scripts/stable/train_db.py", + summary: "Dreambooth route prepared for source-owned form recovery.", + }, +}; + +export function matureTrainingPlanFor(route: AppRoute) { + return MATURE_TRAINING_ROUTES[route.path]; +} +``` + +- [ ] **Step 3: Render plan metadata in mature template** + +Modify `frontend/source/src/matureTraining.ts` to import `matureTrainingPlanFor` and display: + +```ts +h("dt", "Schema source"), +h("dd", plan.schemaFile), +h("dt", "Backend entrypoint"), +h("dd", plan.backendEntrypoint), +``` + +- [ ] **Step 4: Verify** + +```powershell +cd frontend\source +npm run check +npx playwright test scripts/smoke-source-frontend.spec.mjs -g "mature training route" +``` + +Expected: all mature route tests pass. + +- [ ] **Step 5: Commit** + +```powershell +git add frontend/source/src/matureTraining.ts frontend/source/src/matureTrainingSchema.ts frontend/source/scripts/smoke-source-frontend.spec.mjs +git commit -m "feat(frontend): add mature training route plans" +``` + +### Task 3: Restore Basic LoRA Full Form First + +**Files:** +- Create: `frontend/source/src/basicLoraSchema.ts` +- Create: `frontend/source/src/matureTrainingPage.ts` +- Modify: `frontend/source/src/main.ts` +- Modify: `frontend/source/scripts/smoke-source-frontend.spec.mjs` + +- [ ] **Step 1: Write failing Basic LoRA smoke** + +Add a test: + +```js +test("basic lora route renders full source form", async ({ page }) => { + await page.goto("/lora/basic.html"); + await expect(page.locator("#mature-train-form")).toBeVisible(); + await expect(page.locator("#basic-pretrained-model")).toBeVisible(); + await expect(page.locator("#basic-train-data-dir")).toBeVisible(); + await expect(page.locator("#basic-output-dir")).toBeVisible(); + await expect(page.locator("#basic-network-dim")).toBeVisible(); + await expect(page.locator("#basic-preview-code")).toContainText('model_train_type = "lora-basic"'); +}); +``` + +Run: + +```powershell +cd frontend\source +npx playwright test scripts/smoke-source-frontend.spec.mjs -g "basic lora route renders full source form" +``` + +Expected: fails because `/lora/basic.html` still renders the compatibility template. + +- [ ] **Step 2: Create Basic LoRA schema module** + +Create `frontend/source/src/basicLoraSchema.ts` with these sections: + +```ts +import { defineTrainingRow, defineTrainingSection, defineTrainingSections, type TrainingSectionSpec } from "./trainingRenderer"; + +export interface BasicLoraForm { + [key: string]: unknown; + pretrained_model_name_or_path: string; + train_data_dir: string; + reg_data_dir: string; + resolution: string; + output_name: string; + output_dir: string; + save_every_n_epochs: number; + max_train_epochs: number; + train_batch_size: number; + unet_lr: string; + text_encoder_lr: string; + lr_scheduler: "cosine" | "cosine_with_restarts" | "constant" | "constant_with_warmup"; + lr_warmup_steps: number; + lr_scheduler_num_cycles: number; + optimizer_type: "AdamW8bit" | "Lion"; + enable_preview: boolean; + sample_prompts: string; + sample_sampler: string; + sample_every_n_epochs: number; + network_weights: string; + network_dim: number; + network_alpha: number; + shuffle_caption: boolean; + keep_tokens: number; + mixed_precision: "no" | "fp16" | "bf16"; + no_half_vae: boolean; + xformers: boolean; + cache_latents: boolean; +} + +export const basicLoraDefaults: BasicLoraForm = { + pretrained_model_name_or_path: "./sd-models/model.safetensors", + train_data_dir: "./train/aki", + reg_data_dir: "", + resolution: "512,512", + output_name: "aki", + output_dir: "./output", + save_every_n_epochs: 2, + max_train_epochs: 10, + train_batch_size: 1, + unet_lr: "1e-4", + text_encoder_lr: "1e-5", + lr_scheduler: "cosine_with_restarts", + lr_warmup_steps: 0, + lr_scheduler_num_cycles: 1, + optimizer_type: "AdamW8bit", + enable_preview: false, + sample_prompts: "(masterpiece, best quality:1.2), 1girl, solo", + sample_sampler: "euler_a", + sample_every_n_epochs: 2, + network_weights: "", + network_dim: 32, + network_alpha: 32, + shuffle_caption: true, + keep_tokens: 0, + mixed_precision: "fp16", + no_half_vae: false, + xformers: true, + cache_latents: true, +}; + +export const basicLoraSections: TrainingSectionSpec[] = defineTrainingSections([ + defineTrainingSection("Model", [ + { kind: "text", key: "pretrained_model_name_or_path", id: "basic-pretrained-model", label: "pretrained_model_name_or_path", role: "file" }, + ]), + defineTrainingSection("Dataset", [ + { kind: "text", key: "train_data_dir", id: "basic-train-data-dir", label: "train_data_dir", role: "folder" }, + { kind: "text", key: "reg_data_dir", id: "basic-reg-data-dir", label: "reg_data_dir", role: "folder" }, + { kind: "text", key: "resolution", id: "basic-resolution", label: "resolution" }, + ]), + defineTrainingSection("Output", [ + { kind: "text", key: "output_name", id: "basic-output-name", label: "output_name" }, + { kind: "text", key: "output_dir", id: "basic-output-dir", label: "output_dir", role: "folder" }, + { kind: "number", key: "save_every_n_epochs", id: "basic-save-every-n-epochs", label: "save_every_n_epochs", min: 1 }, + ]), + defineTrainingSection("Training", [ + defineTrainingRow([ + { kind: "number", key: "max_train_epochs", id: "basic-epochs", label: "max_train_epochs", min: 1 }, + { kind: "number", key: "train_batch_size", id: "basic-train-batch-size", label: "train_batch_size", min: 1 }, + ]), + defineTrainingRow([ + { kind: "text", key: "unet_lr", id: "basic-unet-lr", label: "unet_lr" }, + { kind: "text", key: "text_encoder_lr", id: "basic-text-encoder-lr", label: "text_encoder_lr" }, + ]), + { kind: "select", key: "lr_scheduler", id: "basic-lr-scheduler", label: "lr_scheduler", options: ["cosine", "cosine_with_restarts", "constant", "constant_with_warmup"] }, + { kind: "number", key: "lr_scheduler_num_cycles", id: "basic-lr-scheduler-num-cycles", label: "lr_scheduler_num_cycles", min: 1, visibleWhen: { key: "lr_scheduler", equals: "cosine_with_restarts" } }, + { kind: "select", key: "optimizer_type", id: "basic-optimizer", label: "optimizer_type", options: ["AdamW8bit", "Lion"] }, + ]), + defineTrainingSection("Network", [ + { kind: "text", key: "network_weights", id: "basic-network-weights", label: "network_weights", role: "file" }, + defineTrainingRow([ + { kind: "number", key: "network_dim", id: "basic-network-dim", label: "network_dim", min: 8, max: 256, step: 8 }, + { kind: "number", key: "network_alpha", id: "basic-network-alpha", label: "network_alpha", min: 1 }, + ]), + ]), + defineTrainingSection("Caption", [ + { kind: "checkbox", key: "shuffle_caption", id: "basic-shuffle-caption", label: "shuffle_caption" }, + { kind: "number", key: "keep_tokens", id: "basic-keep-tokens", label: "keep_tokens", min: 0, max: 255 }, + ]), + defineTrainingSection("Preview", [ + { kind: "checkbox", key: "enable_preview", id: "basic-enable-preview", label: "enable_preview" }, + { kind: "textarea", key: "sample_prompts", id: "basic-sample-prompts", label: "sample_prompts", visibleWhen: { key: "enable_preview", equals: true } }, + { kind: "select", key: "sample_sampler", id: "basic-sample-sampler", label: "sample_sampler", options: ["ddim", "pndm", "lms", "euler", "euler_a", "heun"] }, + { kind: "number", key: "sample_every_n_epochs", id: "basic-sample-every-n-epochs", label: "sample_every_n_epochs", min: 1 }, + ]), + defineTrainingSection("Performance", [ + { kind: "select", key: "mixed_precision", id: "basic-mixed-precision", label: "mixed_precision", options: ["no", "fp16", "bf16"] }, + { kind: "checkbox", key: "no_half_vae", id: "basic-no-half-vae", label: "no_half_vae" }, + { kind: "checkbox", key: "xformers", id: "basic-xformers", label: "xformers" }, + { kind: "checkbox", key: "cache_latents", id: "basic-cache-latents", label: "cache_latents" }, + ]), +]); +``` + +- [ ] **Step 3: Create a generic mature form page** + +Create `frontend/source/src/matureTrainingPage.ts` modeled on `anima.ts` with: + +- reactive form from route defaults +- `payload()` adding `model_train_type` +- `renderTrainingSchemaSections` +- `renderParameterPreview(previewToml(payload()), "basic-preview-code")` +- save/load/reset/export/import/run controls +- status and submitted task links + +Use storage key: + +```ts +const MATURE_TRAINING_STORAGE_KEY = "sd-trainer-source-mature-training-configs"; +``` + +- [ ] **Step 4: Route Basic LoRA into the full form** + +Modify `frontend/source/src/main.ts`: + +```ts +import { BasicLoraPage } from "./matureTrainingPage"; + +// before MatureTrainingPage compatibility route +route.path === "/lora/basic.html" + ? h(BasicLoraPage, { route }) +``` + +- [ ] **Step 5: Verify and commit** + +```powershell +cd frontend\source +npm run check +npx playwright test scripts/smoke-source-frontend.spec.mjs -g "basic lora route renders full source form" +cd ..\.. +git add frontend/source/src/basicLoraSchema.ts frontend/source/src/matureTrainingPage.ts frontend/source/src/main.ts frontend/source/scripts/smoke-source-frontend.spec.mjs +git commit -m "feat(frontend): restore basic lora source form" +``` + +### Task 4: Apply The Basic Pattern To Stable Diffusion, Flux, And Dreambooth + +**Files:** +- Create: `frontend/source/src/stableDiffusionSchema.ts` +- Create: `frontend/source/src/fluxLoraSchema.ts` +- Create: `frontend/source/src/dreamboothSchema.ts` +- Modify: `frontend/source/src/matureTrainingPage.ts` +- Modify: `frontend/source/src/main.ts` +- Test: `frontend/source/scripts/smoke-source-frontend.spec.mjs` + +- [ ] **Step 1: Add route smoke tests** + +Add one test per route: + +```js +test("stable diffusion route renders full source form", async ({ page }) => { + await page.goto("/lora/master.html"); + await expect(page.locator("#mature-train-form")).toBeVisible(); + await expect(page.locator("#sd-pretrained-model")).toBeVisible(); + await expect(page.locator("#sd-train-data-dir")).toBeVisible(); + await expect(page.locator("#sd-preview-code")).toContainText('model_train_type = "lora-master"'); +}); + +test("flux route renders full source form", async ({ page }) => { + await page.goto("/lora/flux.html"); + await expect(page.locator("#mature-train-form")).toBeVisible(); + await expect(page.locator("#flux-pretrained-model")).toBeVisible(); + await expect(page.locator("#flux-train-data-dir")).toBeVisible(); + await expect(page.locator("#flux-preview-code")).toContainText('model_train_type = "flux-lora"'); +}); + +test("dreambooth route renders full source form", async ({ page }) => { + await page.goto("/dreambooth/index.html"); + await expect(page.locator("#mature-train-form")).toBeVisible(); + await expect(page.locator("#dreambooth-pretrained-model")).toBeVisible(); + await expect(page.locator("#dreambooth-train-data-dir")).toBeVisible(); + await expect(page.locator("#dreambooth-preview-code")).toContainText('model_train_type = "dreambooth"'); +}); +``` + +- [ ] **Step 2: Build schema modules by copying the Basic module structure** + +For each route: + +- Include at least Model, Dataset, Output, Training, Optimizer, Network/Architecture, Caption, Preview, Cache/Performance, Advanced. +- Use field keys from the corresponding `mikazuki/schema/*.ts`. +- Preserve backend-facing key names exactly. +- Add route-specific preview code IDs: `sd-preview-code`, `flux-preview-code`, `dreambooth-preview-code`. + +- [ ] **Step 3: Register each route** + +In `matureTrainingPage.ts`, export: + +```ts +export const StableDiffusionPage = createMatureTrainingPage(stableDiffusionRouteSpec); +export const FluxLoraPage = createMatureTrainingPage(fluxLoraRouteSpec); +export const DreamboothPage = createMatureTrainingPage(dreamboothRouteSpec); +``` + +In `main.ts`, route them before the compatibility template. + +- [ ] **Step 4: Verify and commit** + +```powershell +cd frontend\source +npm run check +npm run smoke +cd ..\.. +.\venv\Scripts\python.exe scripts\verify_frontend_source.py --require-built-output +git add frontend/source/src/stableDiffusionSchema.ts frontend/source/src/fluxLoraSchema.ts frontend/source/src/dreamboothSchema.ts frontend/source/src/matureTrainingPage.ts frontend/source/src/main.ts frontend/source/scripts/smoke-source-frontend.spec.mjs +git commit -m "feat(frontend): restore mature training source forms" +``` + +### Task 5: Visual Polish Pass + +**Files:** +- Modify: `frontend/source/src/styles.css` +- Modify: `frontend/source/scripts/smoke-source-frontend.spec.mjs` +- Modify: `frontend/source/scripts/smoke-dist-frontend.spec.mjs` + +- [ ] **Step 1: Add viewport smoke** + +Add a Playwright test that checks no horizontal document overflow on key pages: + +```js +for (const route of ["/lora/sd3.html", "/lora/basic.html", "/lora/master.html", "/lora/flux.html", "/dreambooth/index.html"]) { + test(`training route has no horizontal overflow ${route}`, async ({ page }) => { + await page.setViewportSize({ width: 1365, height: 900 }); + await page.goto(route); + await expect.poll(() => page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth + 1)).toBe(true); + }); +} +``` + +- [ ] **Step 2: Apply visual rules** + +In `styles.css`: + +- Keep form fieldsets at `border-radius: 8px`. +- Use restrained neutral backgrounds. +- Keep right preview panel sticky only above tablet width. +- Ensure `.training-field-row` collapses to one column below 900px. +- Do not use decorative orb/gradient backgrounds. + +- [ ] **Step 3: Verify and commit** + +```powershell +cd frontend\source +npm run check +npm run smoke +git add frontend/source/src/styles.css frontend/source/scripts/smoke-source-frontend.spec.mjs frontend/source/scripts/smoke-dist-frontend.spec.mjs +git commit -m "style(frontend): polish source training pages" +``` + +### Task 6: Production Dist Update + +**Files:** +- Modify generated files under `frontend/dist/` + +- [ ] **Step 1: Rebuild and apply** + +```powershell +cd frontend\source +npm run build +cd ..\.. +.\venv\Scripts\python.exe scripts\sync_frontend_source_dist.py --apply --backup +.\venv\Scripts\python.exe scripts\verify_frontend_dist_matches_source.py +``` + +Expected: + +```text +frontend dist matches source build +``` + +- [ ] **Step 2: Browser smoke production dist** + +```powershell +cd frontend\source +npm run smoke:dist +``` + +Expected: + +```text +3 passed +``` + +- [ ] **Step 3: Commit dist only** + +```powershell +cd ..\.. +git add frontend/dist +git diff --cached --name-only | powershell -Command "$input | Where-Object { $_ -notlike 'frontend/dist/*' } | ForEach-Object { throw \"unexpected staged path $_\" }" +git commit -m "chore(frontend): update production dist" +``` + +### Task 7: Final Acceptance Run + +**Files:** +- No source files should change in this task. + +- [ ] **Step 1: Run full gate** + +```powershell +cd frontend\source +npm run check +npm run build +npm run smoke +npm run smoke:dist +cd ..\.. +.\venv\Scripts\python.exe scripts\verify_frontend_source.py --require-built-output +.\venv\Scripts\python.exe scripts\sync_frontend_source_dist.py +.\venv\Scripts\python.exe scripts\verify_frontend_dist_matches_source.py +.\venv\Scripts\python.exe -m pytest tests\test_frontend_source.py tests\test_dataset_editor_api.py tests\test_tagger_progress_api.py tests\test_portable_packaging_scripts.py -q +``` + +- [ ] **Step 2: Verify acceptance labels** + +Create a short PR comment or release note with: + +```markdown +P0-A1 Source Ownership: PASS +P0-A2 Production Sync: PASS +P0-A3 Production Browser Smoke: PASS +P0-A4 Native Tag Editor: PASS +P0-A5 Classic Tag Editor Retirement: PASS +P0-A6 Anima Full Form: PASS +P0-A7 Mature Training Forms: PASS +P0-A8 Legacy Visual Parity: PASS +P0-A9 Backend Red Line: PASS +P0-A10 Verification Gate: PASS +P1-B1 Akiba-Familiar Layout: PASS +P1-B2 Better Than Old UX: PASS +P1-B3 Reviewable Dist: PASS +P1-B4 Interaction Parity: PASS +P1-B5 No Empty Public Pages: PASS +``` + +- [ ] **Step 3: Push** + +```powershell +git push origin codex/frontend-source +``` + +--- + +## Review Notes + +Do not treat generated `frontend/dist` as hand-reviewed source. Reviewers should inspect: + +- `frontend/source/src/*.ts` +- `frontend/source/scripts/*.mjs` +- `scripts/verify_frontend_*.py` +- `tests/test_frontend_source.py` +- `tests/test_dataset_editor_api.py` +- `docs/design/*.md` + +Then verify: + +```powershell +.\venv\Scripts\python.exe scripts\verify_frontend_dist_matches_source.py +``` + +If it passes, the generated dist is reviewable by provenance instead of by eyeballing bundled assets. + +## Self-Review + +- Spec coverage: P0/P1/P2 labels map to tasks 1-7. +- Placeholder scan: no task contains open-ended "TBD" or "TODO". +- Type consistency: route plan names, file names, and preview code IDs are specified before use. +- Scope control: Basic LoRA is first full mature form; SD/Flux/Dreambooth follow the same route spec pattern after the first route proves the adapter. diff --git a/frontend/dist/404.html b/frontend/dist/404.html deleted file mode 100644 index 47c6466c..00000000 --- a/frontend/dist/404.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - SD 训练 UI - - - - -

404

How did we get here?
Take me home
- - - - - - - - diff --git a/frontend/dist/assets/404.47057000.js b/frontend/dist/assets/404.47057000.js deleted file mode 100644 index a5e33457..00000000 --- a/frontend/dist/assets/404.47057000.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,f as d,u as p,g as f,r as v,o as k,c as g,a as e,t as c,d as L,w as x,b as B,h as l}from"./app.547295de.js";const N={class:"theme-container"},T={class:"page"},b={class:"theme-default-content"},C=e("h1",null,"404",-1),M=d({__name:"404",setup(R){var a,s,n;const _=p(),o=f(),t=(a=o.value.notFound)!=null?a:["Not Found"],r=()=>t[Math.floor(Math.random()*t.length)],u=(s=o.value.home)!=null?s:_.value,m=(n=o.value.backToHome)!=null?n:"Back to home";return(V,w)=>{const h=v("RouterLink");return k(),g("div",N,[e("main",T,[e("div",b,[C,e("blockquote",null,c(r()),1),L(h,{to:l(u)},{default:x(()=>[B(c(l(m)),1)]),_:1},8,["to"])])])])}}});var F=i(M,[["__file","404.vue"]]);export{F as default}; diff --git a/frontend/dist/assets/404.html.686caba0.js b/frontend/dist/assets/404.html.686caba0.js deleted file mode 100644 index f3b54d5c..00000000 --- a/frontend/dist/assets/404.html.686caba0.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"en-US","frontmatter":{"layout":"404"},"excerpt":"","headers":[],"filePathRelative":null}');export{t as data}; diff --git a/frontend/dist/assets/404.html.7a24a487.js b/frontend/dist/assets/404.html.7a24a487.js deleted file mode 100644 index 8160b096..00000000 --- a/frontend/dist/assets/404.html.7a24a487.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,o as _,c}from"./app.547295de.js";const r={};function t(o,a){return _(),c("div")}var s=e(r,[["render",t],["__file","404.html.vue"]]);export{s as default}; diff --git a/frontend/dist/assets/about.html.5b0c0de9.js b/frontend/dist/assets/about.html.5b0c0de9.js deleted file mode 100644 index 6b99887b..00000000 --- a/frontend/dist/assets/about.html.5b0c0de9.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse('{"key":"v-b5471278","path":"/other/about.html","title":"","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"filePathRelative":"other/about.md"}');export{t as data}; diff --git a/frontend/dist/assets/about.html.b4807002.js b/frontend/dist/assets/about.html.b4807002.js deleted file mode 100644 index 428bd0cd..00000000 --- a/frontend/dist/assets/about.html.b4807002.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,r as o,o as s,c,a as e,b as r,d as a}from"./app.547295de.js";const h={},i=e("h2",{id:"\u5173\u4E8E",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u5173\u4E8E","aria-hidden":"true"},"#"),r(" \u5173\u4E8E")],-1),d={href:"https://github.com/shigma/schemastery",target:"_blank",rel:"noopener noreferrer"},l=e("h3",{id:"\u53CD\u9988",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u53CD\u9988","aria-hidden":"true"},"#"),r(" \u53CD\u9988")],-1),_={href:"https://github.com/wochenlong/lora-scripts-next/issues",target:"_blank",rel:"noopener noreferrer"},u=e("h3",{id:"\u8054\u7CFB\u65B9\u5F0F",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u8054\u7CFB\u65B9\u5F0F","aria-hidden":"true"},"#"),r(" \u8054\u7CFB\u65B9\u5F0F")],-1),p=e("p",null,"\u90AE\u7BB1\uFF1Aoulongchen273@outlook.com",-1),f={href:"https://github.com/wochenlong/lora-scripts-next/issues",target:"_blank",rel:"noopener noreferrer"};function m(b,k){const t=o("ExternalLinkIcon");return s(),c("div",null,[i,e("p",null,[r("\u7531 "),e("a",d,[r("schemastery"),a(t)]),r(" \u5F3A\u529B\u9A71\u52A8")]),l,e("p",null,[r("\u8BF7\u524D\u5F80 Github \u63D0\u4EA4 "),e("a",_,[r("issue"),a(t)])]),u,p,e("p",null,[e("a",f,[r("discord \u9891\u9053"),a(t)])])])}var x=n(h,[["render",m],["__file","about.html.vue"]]);export{x as default}; diff --git a/frontend/dist/assets/anima-finetune.html.1a4bf32e.js b/frontend/dist/assets/anima-finetune.html.1a4bf32e.js deleted file mode 100644 index 3c46ad95..00000000 --- a/frontend/dist/assets/anima-finetune.html.1a4bf32e.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,o as t,c as o,a as e,b as a}from"./app.547295de.js";const _={},f=e("p",{class:"sd-anima-finetune-tagline"},"anima-finetune \uff0c\u4e00\u5207\u7686\u6709\u53ef\u80fd",-1),c=e("h1",{id:"anima-finetune",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#anima-finetune","aria-hidden":"true"},"#"),a(" Anima Finetune 专家模式")],-1),n=e("p",null,"Anima DiT 全量微调(full finetune)",-1),d=e("p",null,"\u66f4\u65b0\u5b8c\u6574 DiT \u6743\u91cd\uff0c\u9002\u5408\u8fdb\u9636\u73a9\u5bb6\u8bad\u7ec3\uff0c\u9700\u5145\u8db3\u6837\u672c\u4e0e\u9ad8\u663e\u5b58",-1),l=[f,c,n,d];function i(h,u){return t(),o("div",null,l)}var p=s(_,[["render",i],["__file","anima-finetune.html.vue"]]);export{p as default}; \ No newline at end of file diff --git a/frontend/dist/assets/anima-finetune.html.eaeb05f2.js b/frontend/dist/assets/anima-finetune.html.eaeb05f2.js deleted file mode 100644 index 6a7b0953..00000000 --- a/frontend/dist/assets/anima-finetune.html.eaeb05f2.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse("{\"key\": \"v-a1f1ne2e\", \"path\": \"/lora/anima-finetune.html\", \"title\": \"Anima Finetune \u4e13\u5bb6\u6a21\u5f0f\", \"lang\": \"en-US\", \"frontmatter\": {\"example\": true, \"trainType\": \"anima-finetune\"}, \"excerpt\": \"\", \"headers\": [], \"filePathRelative\": \"lora/anima-finetune.md\"}");export{e as data}; \ No newline at end of file diff --git a/frontend/dist/assets/app.547295de.js b/frontend/dist/assets/app.547295de.js deleted file mode 100644 index c2d1af1e..00000000 --- a/frontend/dist/assets/app.547295de.js +++ /dev/null @@ -1,123 +0,0 @@ -var m2=Object.defineProperty;var h2=(e,t,n)=>t in e?m2(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Hp=(e,t,n)=>(h2(e,typeof t!="symbol"?t+"":t,n),n);const zp={};const v2="modulepreload",jp={},g2="/",wt=function(t,n){return!n||n.length===0?t():Promise.all(n.map(r=>{if(r=`${g2}${r}`,r in jp)return;jp[r]=!0;const o=r.endsWith(".css"),a=o?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${a}`))return;const l=document.createElement("link");if(l.rel=o?"stylesheet":v2,o||(l.as="script",l.crossOrigin=""),l.href=r,document.head.appendChild(l),o)return new Promise((s,i)=>{l.addEventListener("load",s),l.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>t())},b2={"v-8daa1a0e":()=>wt(()=>import("./index.html.ec4ace46.js"),[]).then(({data:e})=>e),"v-6983ba2a":()=>wt(()=>import("./tageditor.html.66da263e.js"),[]).then(({data:e})=>e),"v-native-tageditor":()=>wt(()=>import("./native-tageditor.html.native.js"),[]).then(({data:e})=>e),"v-51615306":()=>wt(()=>import("./tagger.html.66f12b92.js"),[]).then(({data:e})=>e),"v-06850b9b":()=>wt(()=>import("./task.html.4e4c8633.js"),[]).then(({data:e})=>e),"v-13efe3c5":()=>wt(()=>import("./tensorboard.html.4a2799a9.js"),[]).then(({data:e})=>e),"v-33a23463":()=>wt(()=>import("./index.html.838bbc6c.js"),[]).then(({data:e})=>e),"v-b5471278":()=>wt(()=>import("./about.html.5b0c0de9.js"),[]).then(({data:e})=>e),"v-a1c9e4f2":()=>wt(()=>import("./changelog.html.a1b2c3d4.js"),[]).then(({data:e})=>e),"v-b8e2d701":()=>wt(()=>import("./guide.html.b8e2d701.js"),[]).then(({data:e})=>e),"v-72e1da3e":()=>wt(()=>import("./settings.html.06993f96.js?v=dataset-tagger-api"),[]).then(({data:e})=>e),"v-3e43d6e2":()=>wt(()=>import("./basic.html.48955584.js"),[]).then(({data:e})=>e),"v-fdbe4e28":()=>wt(()=>import("./flux.html.6fefc131.js"),[]).then(({data:e})=>e),"v-14e91824":()=>wt(()=>import("./index.html.b97ec799.js"),[]).then(({data:e})=>e),"v-1bf725da":()=>wt(()=>import("./master.html.54eb6415.js"),[]).then(({data:e})=>e),"v-0f9e746f":()=>wt(()=>import("./params.html.c8cc13ef.js"),[]).then(({data:e})=>e),"v-0dc76a3b":()=>wt(()=>import("./sd3.html.eaeb05e1.js"),[]).then(({data:e})=>e),"v-a1f1ne2e":()=>wt(()=>import("./anima-finetune.html.eaeb05f2.js"),[]).then(({data:e})=>e),"v-53c99f50":()=>wt(()=>import("./sdxl.html.6ab37b06.js"),[]).then(({data:e})=>e),"v-4441a302":()=>wt(()=>import("./tools.html.c0a4659a.js"),[]).then(({data:e})=>e),"v-3706649a":()=>wt(()=>import("./404.html.686caba0.js"),[]).then(({data:e})=>e)};function Jd(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const Ft={},Na=[],en=()=>{},y2=()=>!1,_2=/^on[^a-z]/,$s=e=>_2.test(e),Zd=e=>e.startsWith("onUpdate:"),Wt=Object.assign,Qd=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},w2=Object.prototype.hasOwnProperty,ft=(e,t)=>w2.call(e,t),De=Array.isArray,Da=e=>Ts(e)==="[object Map]",Su=e=>Ts(e)==="[object Set]",Yi=e=>Ts(e)==="[object Date]",Ke=e=>typeof e=="function",Ge=e=>typeof e=="string",Zl=e=>typeof e=="symbol",ht=e=>e!==null&&typeof e=="object",Gi=e=>ht(e)&&Ke(e.then)&&Ke(e.catch),Kg=Object.prototype.toString,Ts=e=>Kg.call(e),$i=e=>Ts(e).slice(8,-1),qg=e=>Ts(e)==="[object Object]",ef=e=>Ge(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Rl=Jd(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Eu=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},C2=/-(\w)/g,cr=Eu(e=>e.replace(C2,(t,n)=>n?n.toUpperCase():"")),k2=/\B([A-Z])/g,fa=Eu(e=>e.replace(k2,"-$1").toLowerCase()),$u=Eu(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ti=Eu(e=>e?`on${$u(e)}`:""),Ql=(e,t)=>!Object.is(e,t),xi=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Vc=e=>{const t=parseFloat(e);return isNaN(t)?e:t},S2=e=>{const t=Ge(e)?Number(e):NaN;return isNaN(t)?e:t};let Wp;const Bc=()=>Wp||(Wp=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function Qe(e){if(De(e)){const t={};for(let n=0;n{if(n){const r=n.split($2);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function D(e){let t="";if(Ge(e))t=e;else if(De(e))for(let n=0;nja(n,t))}const Ee=e=>Ge(e)?e:e==null?"":De(e)||ht(e)&&(e.toString===Kg||!Ke(e.toString))?JSON.stringify(e,Xg,2):String(e),Xg=(e,t)=>t&&t.__v_isRef?Xg(e,t.value):Da(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:Su(t)?{[`Set(${t.size})`]:[...t.values()]}:ht(t)&&!De(t)&&!qg(t)?String(t):t;let Vn;class Jg{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Vn,!t&&Vn&&(this.index=(Vn.scopes||(Vn.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Vn;try{return Vn=this,t()}finally{Vn=n}}}on(){Vn=this}off(){Vn=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},eb=e=>(e.w&To)>0,tb=e=>(e.n&To)>0,R2=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(d==="length"||d>=i)&&s.push(u)})}else switch(n!==void 0&&s.push(l.get(n)),t){case"add":De(e)?ef(n)&&s.push(l.get("length")):(s.push(l.get(na)),Da(e)&&s.push(l.get(Hc)));break;case"delete":De(e)||(s.push(l.get(na)),Da(e)&&s.push(l.get(Hc)));break;case"set":Da(e)&&s.push(l.get(na));break}if(s.length===1)s[0]&&jc(s[0]);else{const i=[];for(const u of s)u&&i.push(...u);jc(tf(i))}}function jc(e,t){const n=De(e)?e:[...e];for(const r of n)r.computed&&Kp(r);for(const r of n)r.computed||Kp(r)}function Kp(e,t){(e!==lr||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function D2(e,t){var n;return(n=Ji.get(e))==null?void 0:n.get(t)}const F2=Jd("__proto__,__v_isRef,__isVue"),ob=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Zl)),V2=rf(),B2=rf(!1,!0),z2=rf(!0),qp=H2();function H2(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=gt(this);for(let a=0,l=this.length;a{e[t]=function(...n){dl();const r=gt(this)[t].apply(this,n);return fl(),r}}),e}function j2(e){const t=gt(this);return Ln(t,"has",e),t.hasOwnProperty(e)}function rf(e=!1,t=!1){return function(r,o,a){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&a===(e?t?aC:ub:t?ib:sb).get(r))return r;const l=De(r);if(!e){if(l&&ft(qp,o))return Reflect.get(qp,o,a);if(o==="hasOwnProperty")return j2}const s=Reflect.get(r,o,a);return(Zl(o)?ob.has(o):F2(o))||(e||Ln(r,"get",o),t)?s:mt(s)?l&&ef(o)?s:s.value:ht(s)?e?pa(s):Xt(s):s}}const W2=ab(),U2=ab(!0);function ab(e=!1){return function(n,r,o,a){let l=n[r];if(Wa(l)&&mt(l)&&!mt(o))return!1;if(!e&&(!Zi(o)&&!Wa(o)&&(l=gt(l),o=gt(o)),!De(n)&&mt(l)&&!mt(o)))return l.value=o,!0;const s=De(n)&&ef(r)?Number(r)e,Tu=e=>Reflect.getPrototypeOf(e);function qs(e,t,n=!1,r=!1){e=e.__v_raw;const o=gt(e),a=gt(t);n||(t!==a&&Ln(o,"get",t),Ln(o,"get",a));const{has:l}=Tu(o),s=r?of:n?uf:es;if(l.call(o,t))return s(e.get(t));if(l.call(o,a))return s(e.get(a));e!==o&&e.get(t)}function Ys(e,t=!1){const n=this.__v_raw,r=gt(n),o=gt(e);return t||(e!==o&&Ln(r,"has",e),Ln(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Gs(e,t=!1){return e=e.__v_raw,!t&&Ln(gt(e),"iterate",na),Reflect.get(e,"size",e)}function Yp(e){e=gt(e);const t=gt(this);return Tu(t).has.call(t,e)||(t.add(e),Yr(t,"add",e,e)),this}function Gp(e,t){t=gt(t);const n=gt(this),{has:r,get:o}=Tu(n);let a=r.call(n,e);a||(e=gt(e),a=r.call(n,e));const l=o.call(n,e);return n.set(e,t),a?Ql(t,l)&&Yr(n,"set",e,t):Yr(n,"add",e,t),this}function Xp(e){const t=gt(this),{has:n,get:r}=Tu(t);let o=n.call(t,e);o||(e=gt(e),o=n.call(t,e)),r&&r.call(t,e);const a=t.delete(e);return o&&Yr(t,"delete",e,void 0),a}function Jp(){const e=gt(this),t=e.size!==0,n=e.clear();return t&&Yr(e,"clear",void 0,void 0),n}function Xs(e,t){return function(r,o){const a=this,l=a.__v_raw,s=gt(l),i=t?of:e?uf:es;return!e&&Ln(s,"iterate",na),l.forEach((u,d)=>r.call(o,i(u),i(d),a))}}function Js(e,t,n){return function(...r){const o=this.__v_raw,a=gt(o),l=Da(a),s=e==="entries"||e===Symbol.iterator&&l,i=e==="keys"&&l,u=o[e](...r),d=n?of:t?uf:es;return!t&&Ln(a,"iterate",i?Hc:na),{next(){const{value:f,done:h}=u.next();return h?{value:f,done:h}:{value:s?[d(f[0]),d(f[1])]:d(f),done:h}},[Symbol.iterator](){return this}}}}function so(e){return function(...t){return e==="delete"?!1:this}}function J2(){const e={get(a){return qs(this,a)},get size(){return Gs(this)},has:Ys,add:Yp,set:Gp,delete:Xp,clear:Jp,forEach:Xs(!1,!1)},t={get(a){return qs(this,a,!1,!0)},get size(){return Gs(this)},has:Ys,add:Yp,set:Gp,delete:Xp,clear:Jp,forEach:Xs(!1,!0)},n={get(a){return qs(this,a,!0)},get size(){return Gs(this,!0)},has(a){return Ys.call(this,a,!0)},add:so("add"),set:so("set"),delete:so("delete"),clear:so("clear"),forEach:Xs(!0,!1)},r={get(a){return qs(this,a,!0,!0)},get size(){return Gs(this,!0)},has(a){return Ys.call(this,a,!0)},add:so("add"),set:so("set"),delete:so("delete"),clear:so("clear"),forEach:Xs(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=Js(a,!1,!1),n[a]=Js(a,!0,!1),t[a]=Js(a,!1,!0),r[a]=Js(a,!0,!0)}),[e,n,t,r]}const[Z2,Q2,eC,tC]=J2();function af(e,t){const n=t?e?tC:eC:e?Q2:Z2;return(r,o,a)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ft(n,o)&&o in r?n:r,o,a)}const nC={get:af(!1,!1)},rC={get:af(!1,!0)},oC={get:af(!0,!1)},sb=new WeakMap,ib=new WeakMap,ub=new WeakMap,aC=new WeakMap;function lC(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function sC(e){return e.__v_skip||!Object.isExtensible(e)?0:lC($i(e))}function Xt(e){return Wa(e)?e:sf(e,!1,lb,nC,sb)}function lf(e){return sf(e,!1,X2,rC,ib)}function pa(e){return sf(e,!0,G2,oC,ub)}function sf(e,t,n,r,o){if(!ht(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=o.get(e);if(a)return a;const l=sC(e);if(l===0)return e;const s=new Proxy(e,l===2?r:n);return o.set(e,s),s}function Fa(e){return Wa(e)?Fa(e.__v_raw):!!(e&&e.__v_isReactive)}function Wa(e){return!!(e&&e.__v_isReadonly)}function Zi(e){return!!(e&&e.__v_isShallow)}function cb(e){return Fa(e)||Wa(e)}function gt(e){const t=e&&e.__v_raw;return t?gt(t):e}function db(e){return Xi(e,"__v_skip",!0),e}const es=e=>ht(e)?Xt(e):e,uf=e=>ht(e)?pa(e):e;function fb(e){So&&lr&&(e=gt(e),rb(e.dep||(e.dep=tf())))}function cf(e,t){e=gt(e);const n=e.dep;n&&jc(n)}function mt(e){return!!(e&&e.__v_isRef===!0)}function B(e){return pb(e,!1)}function On(e){return pb(e,!0)}function pb(e,t){return mt(e)?e:new iC(e,t)}class iC{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:gt(t),this._value=n?t:es(t)}get value(){return fb(this),this._value}set value(t){const n=this.__v_isShallow||Zi(t)||Wa(t);t=n?t:gt(t),Ql(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:es(t),cf(this))}}function Cl(e){cf(e)}function c(e){return mt(e)?e.value:e}const uC={get:(e,t,n)=>c(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return mt(o)&&!mt(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function mb(e){return Fa(e)?e:new Proxy(e,uC)}function dr(e){const t=De(e)?new Array(e.length):{};for(const n in e)t[n]=hb(e,n);return t}class cC{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return D2(gt(this._object),this._key)}}class dC{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function zt(e,t,n){return mt(e)?e:Ke(e)?new dC(e):ht(e)&&arguments.length>1?hb(e,t,n):B(e)}function hb(e,t,n){const r=e[t];return mt(r)?r:new cC(e,t,n)}class fC{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new nf(t,()=>{this._dirty||(this._dirty=!0,cf(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=gt(this);return fb(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function vb(e,t,n=!1){let r,o;const a=Ke(e);return a?(r=e,o=en):(r=e.get,o=e.set),new fC(r,o,a||!o,n)}function pC(e,...t){}function Eo(e,t,n,r){let o;try{o=r?e(...r):e()}catch(a){xs(a,t,n)}return o}function qn(e,t,n,r){if(Ke(e)){const a=Eo(e,t,n,r);return a&&Gi(a)&&a.catch(l=>{xs(l,t,n)}),a}const o=[];for(let a=0;a>>1;ns(pn[r])Sr&&pn.splice(t,1)}function gC(e){De(e)?Va.push(...e):(!zr||!zr.includes(e,e.allowRecurse?qo+1:qo))&&Va.push(e),bb()}function Zp(e,t=ts?Sr+1:0){for(;tns(n)-ns(r)),qo=0;qoe.id==null?1/0:e.id,bC=(e,t)=>{const n=ns(e)-ns(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function yb(e){Wc=!1,ts=!0,pn.sort(bC);const t=en;try{for(Sr=0;SrGe(p)?p.trim():p)),f&&(o=n.map(Vc))}let s,i=r[s=Ti(t)]||r[s=Ti(cr(t))];!i&&a&&(i=r[s=Ti(fa(t))]),i&&qn(i,e,6,o);const u=r[s+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,qn(u,e,6,o)}}function _b(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const a=e.emits;let l={},s=!1;if(!Ke(e)){const i=u=>{const d=_b(u,t,!0);d&&(s=!0,Wt(l,d))};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}return!a&&!s?(ht(e)&&r.set(e,null),null):(De(a)?a.forEach(i=>l[i]=null):Wt(l,a),ht(e)&&r.set(e,l),l)}function Ou(e,t){return!e||!$s(t)?!1:(t=t.slice(2).replace(/Once$/,""),ft(e,t[0].toLowerCase()+t.slice(1))||ft(e,fa(t))||ft(e,t))}let sn=null,Au=null;function eu(e){const t=sn;return sn=e,Au=e&&e.type.__scopeId||null,t}function _C(e){Au=e}function wC(){Au=null}function G(e,t=sn,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&dm(-1);const a=eu(t);let l;try{l=e(...o)}finally{eu(a),r._d&&dm(1)}return l};return r._n=!0,r._c=!0,r._d=!0,r}function ac(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:a,propsOptions:[l],slots:s,attrs:i,emit:u,render:d,renderCache:f,data:h,setupState:p,ctx:v,inheritAttrs:g}=e;let w,m;const b=eu(e);try{if(n.shapeFlag&4){const y=o||r;w=or(d.call(y,y,f,a,p,h,v)),m=i}else{const y=t;w=or(y.length>1?y(a,{attrs:i,slots:s,emit:u}):y(a,null)),m=t.props?i:CC(i)}}catch(y){Vl.length=0,xs(y,e,1),w=Q(yn)}let _=w;if(m&&g!==!1){const y=Object.keys(m),{shapeFlag:C}=_;y.length&&C&7&&(l&&y.some(Zd)&&(m=kC(m,l)),_=Xr(_,m))}return n.dirs&&(_=Xr(_),_.dirs=_.dirs?_.dirs.concat(n.dirs):n.dirs),n.transition&&(_.transition=n.transition),w=_,eu(b),w}const CC=e=>{let t;for(const n in e)(n==="class"||n==="style"||$s(n))&&((t||(t={}))[n]=e[n]);return t},kC=(e,t)=>{const n={};for(const r in e)(!Zd(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function SC(e,t,n){const{props:r,children:o,component:a}=e,{props:l,children:s,patchFlag:i}=t,u=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&i>=0){if(i&1024)return!0;if(i&16)return r?Qp(r,l,u):!!l;if(i&8){const d=t.dynamicProps;for(let f=0;fe.__isSuspense;function wb(e,t){t&&t.pendingBranch?De(e)?t.effects.push(...e):t.effects.push(e):gC(e)}function qr(e,t){return ff(e,null,t)}const Zs={};function $e(e,t,n){return ff(e,t,n)}function ff(e,t,{immediate:n,deep:r,flush:o,onTrack:a,onTrigger:l}=Ft){var s;const i=Zg()===((s=Zt)==null?void 0:s.scope)?Zt:null;let u,d=!1,f=!1;if(mt(e)?(u=()=>e.value,d=Zi(e)):Fa(e)?(u=()=>e,r=!0):De(e)?(f=!0,d=e.some(y=>Fa(y)||Zi(y)),u=()=>e.map(y=>{if(mt(y))return y.value;if(Fa(y))return Jo(y);if(Ke(y))return Eo(y,i,2)})):Ke(e)?t?u=()=>Eo(e,i,2):u=()=>{if(!(i&&i.isUnmounted))return h&&h(),qn(e,i,3,[p])}:u=en,t&&r){const y=u;u=()=>Jo(y())}let h,p=y=>{h=b.onStop=()=>{Eo(y,i,4)}},v;if(qa)if(p=en,t?n&&qn(t,i,3,[u(),f?[]:void 0,p]):u(),o==="sync"){const y=vk();v=y.__watcherHandles||(y.__watcherHandles=[])}else return en;let g=f?new Array(e.length).fill(Zs):Zs;const w=()=>{if(!!b.active)if(t){const y=b.run();(r||d||(f?y.some((C,k)=>Ql(C,g[k])):Ql(y,g)))&&(h&&h(),qn(t,i,3,[y,g===Zs?void 0:f&&g[0]===Zs?[]:g,p]),g=y)}else b.run()};w.allowRecurse=!!t;let m;o==="sync"?m=w:o==="post"?m=()=>Tn(w,i&&i.suspense):(w.pre=!0,i&&(w.id=i.uid),m=()=>xu(w));const b=new nf(u,m);t?n?w():g=b.run():o==="post"?Tn(b.run.bind(b),i&&i.suspense):b.run();const _=()=>{b.stop(),i&&i.scope&&Qd(i.scope.effects,b)};return v&&v.push(_),_}function TC(e,t,n){const r=this.proxy,o=Ge(e)?e.includes(".")?Cb(r,e):()=>r[e]:e.bind(r,r);let a;Ke(t)?a=t:(a=t.handler,n=t);const l=Zt;Ka(this);const s=ff(o,a.bind(r),n);return l?Ka(l):ra(),s}function Cb(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{Jo(n,t)});else if(qg(e))for(const n in e)Jo(e[n],t);return e}function vt(e,t){const n=sn;if(n===null)return e;const r=Mu(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let a=0;a{e.isMounted=!0}),rn(()=>{e.isUnmounting=!0}),e}const Wn=[Function,Array],Sb={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Wn,onEnter:Wn,onAfterEnter:Wn,onEnterCancelled:Wn,onBeforeLeave:Wn,onLeave:Wn,onAfterLeave:Wn,onLeaveCancelled:Wn,onBeforeAppear:Wn,onAppear:Wn,onAfterAppear:Wn,onAppearCancelled:Wn},xC={name:"BaseTransition",props:Sb,setup(e,{slots:t}){const n=lt(),r=kb();let o;return()=>{const a=t.default&&pf(t.default(),!0);if(!a||!a.length)return;let l=a[0];if(a.length>1){for(const g of a)if(g.type!==yn){l=g;break}}const s=gt(e),{mode:i}=s;if(r.isLeaving)return lc(l);const u=em(l);if(!u)return lc(l);const d=rs(u,s,r,n);os(u,d);const f=n.subTree,h=f&&em(f);let p=!1;const{getTransitionKey:v}=u.type;if(v){const g=v();o===void 0?o=g:g!==o&&(o=g,p=!0)}if(h&&h.type!==yn&&(!Yo(u,h)||p)){const g=rs(h,s,r,n);if(os(h,g),i==="out-in")return r.isLeaving=!0,g.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},lc(l);i==="in-out"&&u.type!==yn&&(g.delayLeave=(w,m,b)=>{const _=Eb(r,h);_[String(h.key)]=h,w._leaveCb=()=>{m(),w._leaveCb=void 0,delete d.delayedLeave},d.delayedLeave=b})}return l}}},OC=xC;function Eb(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function rs(e,t,n,r){const{appear:o,mode:a,persisted:l=!1,onBeforeEnter:s,onEnter:i,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:f,onLeave:h,onAfterLeave:p,onLeaveCancelled:v,onBeforeAppear:g,onAppear:w,onAfterAppear:m,onAppearCancelled:b}=t,_=String(e.key),y=Eb(n,e),C=(S,R)=>{S&&qn(S,r,9,R)},k=(S,R)=>{const L=R[1];C(S,R),De(S)?S.every(F=>F.length<=1)&&L():S.length<=1&&L()},E={mode:a,persisted:l,beforeEnter(S){let R=s;if(!n.isMounted)if(o)R=g||s;else return;S._leaveCb&&S._leaveCb(!0);const L=y[_];L&&Yo(e,L)&&L.el._leaveCb&&L.el._leaveCb(),C(R,[S])},enter(S){let R=i,L=u,F=d;if(!n.isMounted)if(o)R=w||i,L=m||u,F=b||d;else return;let N=!1;const A=S._enterCb=M=>{N||(N=!0,M?C(F,[S]):C(L,[S]),E.delayedLeave&&E.delayedLeave(),S._enterCb=void 0)};R?k(R,[S,A]):A()},leave(S,R){const L=String(e.key);if(S._enterCb&&S._enterCb(!0),n.isUnmounting)return R();C(f,[S]);let F=!1;const N=S._leaveCb=A=>{F||(F=!0,R(),A?C(v,[S]):C(p,[S]),S._leaveCb=void 0,y[L]===e&&delete y[L])};y[L]=e,h?k(h,[S,N]):N()},clone(S){return rs(S,t,n,r)}};return E}function lc(e){if(Os(e))return e=Xr(e),e.children=null,e}function em(e){return Os(e)?e.children?e.children[0]:void 0:e}function os(e,t){e.shapeFlag&6&&e.component?os(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function pf(e,t=!1,n){let r=[],o=0;for(let a=0;a1)for(let a=0;aWt({name:e.name},t,{setup:e}))():e}const Ba=e=>!!e.type.__asyncLoader;function Jt(e){Ke(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:a,suspensible:l=!0,onError:s}=e;let i=null,u,d=0;const f=()=>(d++,i=null,h()),h=()=>{let p;return i||(p=i=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),s)return new Promise((g,w)=>{s(v,()=>g(f()),()=>w(v),d+1)});throw v}).then(v=>p!==i&&i?i:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),u=v,v)))};return se({name:"AsyncComponentWrapper",__asyncLoader:h,get __asyncResolved(){return u},setup(){const p=Zt;if(u)return()=>sc(u,p);const v=b=>{i=null,xs(b,p,13,!r)};if(l&&p.suspense||qa)return h().then(b=>()=>sc(b,p)).catch(b=>(v(b),()=>r?Q(r,{error:b}):null));const g=B(!1),w=B(),m=B(!!o);return o&&setTimeout(()=>{m.value=!1},o),a!=null&&setTimeout(()=>{if(!g.value&&!w.value){const b=new Error(`Async component timed out after ${a}ms.`);v(b),w.value=b}},a),h().then(()=>{g.value=!0,p.parent&&Os(p.parent.vnode)&&xu(p.parent.update)}).catch(b=>{v(b),w.value=b}),()=>{if(g.value&&u)return sc(u,p);if(w.value&&r)return Q(r,{error:w.value});if(n&&!m.value)return Q(n)}}})}function sc(e,t){const{ref:n,props:r,children:o,ce:a}=t.vnode,l=Q(e,r,o);return l.ref=n,l.ce=a,delete t.vnode.ce,l}const Os=e=>e.type.__isKeepAlive;function AC(e,t){Tb(e,"a",t)}function $b(e,t){Tb(e,"da",t)}function Tb(e,t,n=Zt){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Iu(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Os(o.parent.vnode)&&IC(r,t,n,o),o=o.parent}}function IC(e,t,n,r){const o=Iu(t,e,r,!0);Mo(()=>{Qd(r[t],o)},n)}function Iu(e,t,n=Zt,r=!1){if(n){const o=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;dl(),Ka(n);const s=qn(t,n,e,l);return ra(),fl(),s});return r?o.unshift(a):o.push(a),a}}const eo=e=>(t,n=Zt)=>(!qa||e==="sp")&&Iu(e,(...r)=>t(...r),n),As=eo("bm"),dt=eo("m"),PC=eo("bu"),pl=eo("u"),rn=eo("bum"),Mo=eo("um"),LC=eo("sp"),MC=eo("rtg"),RC=eo("rtc");function NC(e,t=Zt){Iu("ec",e,t)}const mf="components",DC="directives";function Ve(e,t){return vf(mf,e,!0,t)||e}const xb=Symbol.for("v-ndc");function Lt(e){return Ge(e)?vf(mf,e,!1)||e:e||xb}function hf(e){return vf(DC,e)}function vf(e,t,n=!0,r=!1){const o=sn||Zt;if(o){const a=o.type;if(e===mf){const s=pk(a,!1);if(s&&(s===t||s===cr(t)||s===$u(cr(t))))return a}const l=tm(o[e]||a[e],t)||tm(o.appContext[e],t);return!l&&r?a:l}}function tm(e,t){return e&&(e[t]||e[cr(t)]||e[$u(cr(t))])}function it(e,t,n,r){let o;const a=n&&n[r];if(De(e)||Ge(e)){o=new Array(e.length);for(let l=0,s=e.length;lt(l,s,void 0,a&&a[s]));else{const l=Object.keys(e);o=new Array(l.length);for(let s=0,i=l.length;s{const a=r.fn(...o);return a&&(a.key=r.key),a}:r.fn)}return e}function pe(e,t,n={},r,o){if(sn.isCE||sn.parent&&Ba(sn.parent)&&sn.parent.isCE)return t!=="default"&&(n.name=t),Q("slot",n,r&&r());let a=e[t];a&&a._c&&(a._d=!1),x();const l=a&&Ob(a(n)),s=ce(Pe,{key:n.key||l&&l.key||`_${t}`},l||(r?r():[]),l&&e._===1?64:-2);return!o&&s.scopeId&&(s.slotScopeIds=[s.scopeId+"-s"]),a&&a._c&&(a._d=!0),s}function Ob(e){return e.some(t=>Ua(t)?!(t.type===yn||t.type===Pe&&!Ob(t.children)):!0)?e:null}function FC(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:Ti(r)]=e[r];return n}const Uc=e=>e?Wb(e)?Mu(e)||e.proxy:Uc(e.parent):null,Nl=Wt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Uc(e.parent),$root:e=>Uc(e.root),$emit:e=>e.emit,$options:e=>gf(e),$forceUpdate:e=>e.f||(e.f=()=>xu(e.update)),$nextTick:e=>e.n||(e.n=qe.bind(e.proxy)),$watch:e=>TC.bind(e)}),ic=(e,t)=>e!==Ft&&!e.__isScriptSetup&&ft(e,t),VC={get({_:e},t){const{ctx:n,setupState:r,data:o,props:a,accessCache:l,type:s,appContext:i}=e;let u;if(t[0]!=="$"){const p=l[t];if(p!==void 0)switch(p){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return a[t]}else{if(ic(r,t))return l[t]=1,r[t];if(o!==Ft&&ft(o,t))return l[t]=2,o[t];if((u=e.propsOptions[0])&&ft(u,t))return l[t]=3,a[t];if(n!==Ft&&ft(n,t))return l[t]=4,n[t];Kc&&(l[t]=0)}}const d=Nl[t];let f,h;if(d)return t==="$attrs"&&Ln(e,"get",t),d(e);if((f=s.__cssModules)&&(f=f[t]))return f;if(n!==Ft&&ft(n,t))return l[t]=4,n[t];if(h=i.config.globalProperties,ft(h,t))return h[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:a}=e;return ic(o,t)?(o[t]=n,!0):r!==Ft&&ft(r,t)?(r[t]=n,!0):ft(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:a}},l){let s;return!!n[l]||e!==Ft&&ft(e,l)||ic(t,l)||(s=a[0])&&ft(s,l)||ft(r,l)||ft(Nl,l)||ft(o.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ft(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function to(){return Ab().slots}function Pu(){return Ab().attrs}function Ab(){const e=lt();return e.setupContext||(e.setupContext=Kb(e))}function nm(e){return De(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Kc=!0;function BC(e){const t=gf(e),n=e.proxy,r=e.ctx;Kc=!1,t.beforeCreate&&rm(t.beforeCreate,e,"bc");const{data:o,computed:a,methods:l,watch:s,provide:i,inject:u,created:d,beforeMount:f,mounted:h,beforeUpdate:p,updated:v,activated:g,deactivated:w,beforeDestroy:m,beforeUnmount:b,destroyed:_,unmounted:y,render:C,renderTracked:k,renderTriggered:E,errorCaptured:S,serverPrefetch:R,expose:L,inheritAttrs:F,components:N,directives:A,filters:M}=t;if(u&&zC(u,r,null),l)for(const V in l){const X=l[V];Ke(X)&&(r[V]=X.bind(n))}if(o){const V=o.call(n,n);ht(V)&&(e.data=Xt(V))}if(Kc=!0,a)for(const V in a){const X=a[V],I=Ke(X)?X.bind(n,n):Ke(X.get)?X.get.bind(n,n):en,Y=!Ke(X)&&Ke(X.set)?X.set.bind(n):en,ee=O({get:I,set:Y});Object.defineProperty(r,V,{enumerable:!0,configurable:!0,get:()=>ee.value,set:W=>ee.value=W})}if(s)for(const V in s)Ib(s[V],r,n,V);if(i){const V=Ke(i)?i.call(n):i;Reflect.ownKeys(V).forEach(X=>{yt(X,V[X])})}d&&rm(d,e,"c");function j(V,X){De(X)?X.forEach(I=>V(I.bind(n))):X&&V(X.bind(n))}if(j(As,f),j(dt,h),j(PC,p),j(pl,v),j(AC,g),j($b,w),j(NC,S),j(RC,k),j(MC,E),j(rn,b),j(Mo,y),j(LC,R),De(L))if(L.length){const V=e.exposed||(e.exposed={});L.forEach(X=>{Object.defineProperty(V,X,{get:()=>n[X],set:I=>n[X]=I})})}else e.exposed||(e.exposed={});C&&e.render===en&&(e.render=C),F!=null&&(e.inheritAttrs=F),N&&(e.components=N),A&&(e.directives=A)}function zC(e,t,n=en){De(e)&&(e=qc(e));for(const r in e){const o=e[r];let a;ht(o)?"default"in o?a=Re(o.from||r,o.default,!0):a=Re(o.from||r):a=Re(o),mt(a)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>a.value,set:l=>a.value=l}):t[r]=a}}function rm(e,t,n){qn(De(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ib(e,t,n,r){const o=r.includes(".")?Cb(n,r):()=>n[r];if(Ge(e)){const a=t[e];Ke(a)&&$e(o,a)}else if(Ke(e))$e(o,e.bind(n));else if(ht(e))if(De(e))e.forEach(a=>Ib(a,t,n,r));else{const a=Ke(e.handler)?e.handler.bind(n):t[e.handler];Ke(a)&&$e(o,a,e)}}function gf(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:a,config:{optionMergeStrategies:l}}=e.appContext,s=a.get(t);let i;return s?i=s:!o.length&&!n&&!r?i=t:(i={},o.length&&o.forEach(u=>tu(i,u,l,!0)),tu(i,t,l)),ht(t)&&a.set(t,i),i}function tu(e,t,n,r=!1){const{mixins:o,extends:a}=t;a&&tu(e,a,n,!0),o&&o.forEach(l=>tu(e,l,n,!0));for(const l in t)if(!(r&&l==="expose")){const s=HC[l]||n&&n[l];e[l]=s?s(e[l],t[l]):t[l]}return e}const HC={data:om,props:am,emits:am,methods:Ll,computed:Ll,beforeCreate:gn,created:gn,beforeMount:gn,mounted:gn,beforeUpdate:gn,updated:gn,beforeDestroy:gn,beforeUnmount:gn,destroyed:gn,unmounted:gn,activated:gn,deactivated:gn,errorCaptured:gn,serverPrefetch:gn,components:Ll,directives:Ll,watch:WC,provide:om,inject:jC};function om(e,t){return t?e?function(){return Wt(Ke(e)?e.call(this,this):e,Ke(t)?t.call(this,this):t)}:t:e}function jC(e,t){return Ll(qc(e),qc(t))}function qc(e){if(De(e)){const t={};for(let n=0;n1)return n&&Ke(t)?t.call(r&&r.proxy):t}}function qC(e,t,n,r=!1){const o={},a={};Xi(a,Lu,1),e.propsDefaults=Object.create(null),Lb(e,t,o,a);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=r?o:lf(o):e.type.props?e.props=o:e.props=a,e.attrs=a}function YC(e,t,n,r){const{props:o,attrs:a,vnode:{patchFlag:l}}=e,s=gt(o),[i]=e.propsOptions;let u=!1;if((r||l>0)&&!(l&16)){if(l&8){const d=e.vnode.dynamicProps;for(let f=0;f{i=!0;const[h,p]=Mb(f,t,!0);Wt(l,h),p&&s.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!a&&!i)return ht(e)&&r.set(e,Na),Na;if(De(a))for(let d=0;d-1,p[1]=g<0||v-1||ft(p,"default"))&&s.push(f)}}}const u=[l,s];return ht(e)&&r.set(e,u),u}function lm(e){return e[0]!=="$"}function sm(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function im(e,t){return sm(e)===sm(t)}function um(e,t){return De(t)?t.findIndex(n=>im(n,e)):Ke(t)&&im(t,e)?0:-1}const Rb=e=>e[0]==="_"||e==="$stable",bf=e=>De(e)?e.map(or):[or(e)],GC=(e,t,n)=>{if(t._n)return t;const r=G((...o)=>bf(t(...o)),n);return r._c=!1,r},Nb=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Rb(o))continue;const a=e[o];if(Ke(a))t[o]=GC(o,a,r);else if(a!=null){const l=bf(a);t[o]=()=>l}}},Db=(e,t)=>{const n=bf(t);e.slots.default=()=>n},XC=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=gt(t),Xi(t,"_",n)):Nb(t,e.slots={})}else e.slots={},t&&Db(e,t);Xi(e.slots,Lu,1)},JC=(e,t,n)=>{const{vnode:r,slots:o}=e;let a=!0,l=Ft;if(r.shapeFlag&32){const s=t._;s?n&&s===1?a=!1:(Wt(o,t),!n&&s===1&&delete o._):(a=!t.$stable,Nb(t,o)),l=t}else t&&(Db(e,t),l={default:1});if(a)for(const s in o)!Rb(s)&&!(s in l)&&delete o[s]};function ru(e,t,n,r,o=!1){if(De(e)){e.forEach((h,p)=>ru(h,t&&(De(t)?t[p]:t),n,r,o));return}if(Ba(r)&&!o)return;const a=r.shapeFlag&4?Mu(r.component)||r.component.proxy:r.el,l=o?null:a,{i:s,r:i}=e,u=t&&t.r,d=s.refs===Ft?s.refs={}:s.refs,f=s.setupState;if(u!=null&&u!==i&&(Ge(u)?(d[u]=null,ft(f,u)&&(f[u]=null)):mt(u)&&(u.value=null)),Ke(i))Eo(i,s,12,[l,d]);else{const h=Ge(i),p=mt(i);if(h||p){const v=()=>{if(e.f){const g=h?ft(f,i)?f[i]:d[i]:i.value;o?De(g)&&Qd(g,a):De(g)?g.includes(a)||g.push(a):h?(d[i]=[a],ft(f,i)&&(f[i]=d[i])):(i.value=[a],e.k&&(d[e.k]=i.value))}else h?(d[i]=l,ft(f,i)&&(f[i]=l)):p&&(i.value=l,e.k&&(d[e.k]=l))};l?(v.id=-1,Tn(v,n)):v()}}}let io=!1;const Qs=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",ei=e=>e.nodeType===8;function ZC(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:a,parentNode:l,remove:s,insert:i,createComment:u}}=e,d=(m,b)=>{if(!b.hasChildNodes()){n(null,m,b),Qi(),b._vnode=m;return}io=!1,f(b.firstChild,m,null,null,null),Qi(),b._vnode=m,io&&console.error("Hydration completed but contains mismatches.")},f=(m,b,_,y,C,k=!1)=>{const E=ei(m)&&m.data==="[",S=()=>g(m,b,_,y,C,E),{type:R,ref:L,shapeFlag:F,patchFlag:N}=b;let A=m.nodeType;b.el=m,N===-2&&(k=!1,b.dynamicChildren=null);let M=null;switch(R){case Gr:A!==3?b.children===""?(i(b.el=o(""),l(m),m),M=m):M=S():(m.data!==b.children&&(io=!0,m.data=b.children),M=a(m));break;case yn:A!==8||E?M=S():M=a(m);break;case Fl:if(E&&(m=a(m),A=m.nodeType),A===1||A===3){M=m;const H=!b.children.length;for(let j=0;j{k=k||!!b.dynamicChildren;const{type:E,props:S,patchFlag:R,shapeFlag:L,dirs:F}=b,N=E==="input"&&F||E==="option";if(N||R!==-1){if(F&&kr(b,null,_,"created"),S)if(N||!k||R&48)for(const M in S)(N&&M.endsWith("value")||$s(M)&&!Rl(M))&&r(m,M,null,S[M],!1,void 0,_);else S.onClick&&r(m,"onClick",null,S.onClick,!1,void 0,_);let A;if((A=S&&S.onVnodeBeforeMount)&&Un(A,_,b),F&&kr(b,null,_,"beforeMount"),((A=S&&S.onVnodeMounted)||F)&&wb(()=>{A&&Un(A,_,b),F&&kr(b,null,_,"mounted")},y),L&16&&!(S&&(S.innerHTML||S.textContent))){let M=p(m.firstChild,b,m,_,y,C,k);for(;M;){io=!0;const H=M;M=M.nextSibling,s(H)}}else L&8&&m.textContent!==b.children&&(io=!0,m.textContent=b.children)}return m.nextSibling},p=(m,b,_,y,C,k,E)=>{E=E||!!b.dynamicChildren;const S=b.children,R=S.length;for(let L=0;L{const{slotScopeIds:E}=b;E&&(C=C?C.concat(E):E);const S=l(m),R=p(a(m),b,S,_,y,C,k);return R&&ei(R)&&R.data==="]"?a(b.anchor=R):(io=!0,i(b.anchor=u("]"),S,R),R)},g=(m,b,_,y,C,k)=>{if(io=!0,b.el=null,k){const R=w(m);for(;;){const L=a(m);if(L&&L!==R)s(L);else break}}const E=a(m),S=l(m);return s(m),n(null,b,S,E,_,y,Qs(S),C),E},w=m=>{let b=0;for(;m;)if(m=a(m),m&&ei(m)&&(m.data==="["&&b++,m.data==="]")){if(b===0)return a(m);b--}return m};return[d,f]}const Tn=wb;function QC(e){return Fb(e)}function ek(e){return Fb(e,ZC)}function Fb(e,t){const n=Bc();n.__VUE__=!0;const{insert:r,remove:o,patchProp:a,createElement:l,createText:s,createComment:i,setText:u,setElementText:d,parentNode:f,nextSibling:h,setScopeId:p=en,insertStaticContent:v}=e,g=(P,$,T,z=null,Z=null,oe=null,_e=!1,we=null,he=!!$.dynamicChildren)=>{if(P===$)return;P&&!Yo(P,$)&&(z=J(P),W(P,Z,oe,!0),P=null),$.patchFlag===-2&&(he=!1,$.dynamicChildren=null);const{type:ke,ref:Me,shapeFlag:ne}=$;switch(ke){case Gr:w(P,$,T,z);break;case yn:m(P,$,T,z);break;case Fl:P==null&&b($,T,z,_e);break;case Pe:N(P,$,T,z,Z,oe,_e,we,he);break;default:ne&1?C(P,$,T,z,Z,oe,_e,we,he):ne&6?A(P,$,T,z,Z,oe,_e,we,he):(ne&64||ne&128)&&ke.process(P,$,T,z,Z,oe,_e,we,he,ae)}Me!=null&&Z&&ru(Me,P&&P.ref,oe,$||P,!$)},w=(P,$,T,z)=>{if(P==null)r($.el=s($.children),T,z);else{const Z=$.el=P.el;$.children!==P.children&&u(Z,$.children)}},m=(P,$,T,z)=>{P==null?r($.el=i($.children||""),T,z):$.el=P.el},b=(P,$,T,z)=>{[P.el,P.anchor]=v(P.children,$,T,z,P.el,P.anchor)},_=({el:P,anchor:$},T,z)=>{let Z;for(;P&&P!==$;)Z=h(P),r(P,T,z),P=Z;r($,T,z)},y=({el:P,anchor:$})=>{let T;for(;P&&P!==$;)T=h(P),o(P),P=T;o($)},C=(P,$,T,z,Z,oe,_e,we,he)=>{_e=_e||$.type==="svg",P==null?k($,T,z,Z,oe,_e,we,he):R(P,$,Z,oe,_e,we,he)},k=(P,$,T,z,Z,oe,_e,we)=>{let he,ke;const{type:Me,props:ne,shapeFlag:ue,transition:ie,dirs:Oe}=P;if(he=P.el=l(P.type,oe,ne&&ne.is,ne),ue&8?d(he,P.children):ue&16&&S(P.children,he,null,z,Z,oe&&Me!=="foreignObject",_e,we),Oe&&kr(P,null,z,"created"),E(he,P,P.scopeId,_e,z),ne){for(const Xe in ne)Xe!=="value"&&!Rl(Xe)&&a(he,Xe,null,ne[Xe],oe,P.children,z,Z,ge);"value"in ne&&a(he,"value",null,ne.value),(ke=ne.onVnodeBeforeMount)&&Un(ke,z,P)}Oe&&kr(P,null,z,"beforeMount");const We=(!Z||Z&&!Z.pendingBranch)&&ie&&!ie.persisted;We&&ie.beforeEnter(he),r(he,$,T),((ke=ne&&ne.onVnodeMounted)||We||Oe)&&Tn(()=>{ke&&Un(ke,z,P),We&&ie.enter(he),Oe&&kr(P,null,z,"mounted")},Z)},E=(P,$,T,z,Z)=>{if(T&&p(P,T),z)for(let oe=0;oe{for(let ke=he;ke{const we=$.el=P.el;let{patchFlag:he,dynamicChildren:ke,dirs:Me}=$;he|=P.patchFlag&16;const ne=P.props||Ft,ue=$.props||Ft;let ie;T&&Bo(T,!1),(ie=ue.onVnodeBeforeUpdate)&&Un(ie,T,$,P),Me&&kr($,P,T,"beforeUpdate"),T&&Bo(T,!0);const Oe=Z&&$.type!=="foreignObject";if(ke?L(P.dynamicChildren,ke,we,T,z,Oe,oe):_e||X(P,$,we,null,T,z,Oe,oe,!1),he>0){if(he&16)F(we,$,ne,ue,T,z,Z);else if(he&2&&ne.class!==ue.class&&a(we,"class",null,ue.class,Z),he&4&&a(we,"style",ne.style,ue.style,Z),he&8){const We=$.dynamicProps;for(let Xe=0;Xe{ie&&Un(ie,T,$,P),Me&&kr($,P,T,"updated")},z)},L=(P,$,T,z,Z,oe,_e)=>{for(let we=0;we<$.length;we++){const he=P[we],ke=$[we],Me=he.el&&(he.type===Pe||!Yo(he,ke)||he.shapeFlag&70)?f(he.el):T;g(he,ke,Me,null,z,Z,oe,_e,!0)}},F=(P,$,T,z,Z,oe,_e)=>{if(T!==z){if(T!==Ft)for(const we in T)!Rl(we)&&!(we in z)&&a(P,we,T[we],null,_e,$.children,Z,oe,ge);for(const we in z){if(Rl(we))continue;const he=z[we],ke=T[we];he!==ke&&we!=="value"&&a(P,we,ke,he,_e,$.children,Z,oe,ge)}"value"in z&&a(P,"value",T.value,z.value)}},N=(P,$,T,z,Z,oe,_e,we,he)=>{const ke=$.el=P?P.el:s(""),Me=$.anchor=P?P.anchor:s("");let{patchFlag:ne,dynamicChildren:ue,slotScopeIds:ie}=$;ie&&(we=we?we.concat(ie):ie),P==null?(r(ke,T,z),r(Me,T,z),S($.children,T,Me,Z,oe,_e,we,he)):ne>0&&ne&64&&ue&&P.dynamicChildren?(L(P.dynamicChildren,ue,T,Z,oe,_e,we),($.key!=null||Z&&$===Z.subTree)&&yf(P,$,!0)):X(P,$,T,Me,Z,oe,_e,we,he)},A=(P,$,T,z,Z,oe,_e,we,he)=>{$.slotScopeIds=we,P==null?$.shapeFlag&512?Z.ctx.activate($,T,z,_e,he):M($,T,z,Z,oe,_e,he):H(P,$,he)},M=(P,$,T,z,Z,oe,_e)=>{const we=P.component=uk(P,z,Z);if(Os(P)&&(we.ctx.renderer=ae),ck(we),we.asyncDep){if(Z&&Z.registerDep(we,j),!P.el){const he=we.subTree=Q(yn);m(null,he,$,T)}return}j(we,P,$,T,Z,oe,_e)},H=(P,$,T)=>{const z=$.component=P.component;if(SC(P,$,T))if(z.asyncDep&&!z.asyncResolved){V(z,$,T);return}else z.next=$,vC(z.update),z.update();else $.el=P.el,z.vnode=$},j=(P,$,T,z,Z,oe,_e)=>{const we=()=>{if(P.isMounted){let{next:Me,bu:ne,u:ue,parent:ie,vnode:Oe}=P,We=Me,Xe;Bo(P,!1),Me?(Me.el=Oe.el,V(P,Me,_e)):Me=Oe,ne&&xi(ne),(Xe=Me.props&&Me.props.onVnodeBeforeUpdate)&&Un(Xe,ie,Me,Oe),Bo(P,!0);const fe=ac(P),ve=P.subTree;P.subTree=fe,g(ve,fe,f(ve.el),J(ve),P,Z,oe),Me.el=fe.el,We===null&&EC(P,fe.el),ue&&Tn(ue,Z),(Xe=Me.props&&Me.props.onVnodeUpdated)&&Tn(()=>Un(Xe,ie,Me,Oe),Z)}else{let Me;const{el:ne,props:ue}=$,{bm:ie,m:Oe,parent:We}=P,Xe=Ba($);if(Bo(P,!1),ie&&xi(ie),!Xe&&(Me=ue&&ue.onVnodeBeforeMount)&&Un(Me,We,$),Bo(P,!0),ne&&me){const fe=()=>{P.subTree=ac(P),me(ne,P.subTree,P,Z,null)};Xe?$.type.__asyncLoader().then(()=>!P.isUnmounted&&fe()):fe()}else{const fe=P.subTree=ac(P);g(null,fe,T,z,P,Z,oe),$.el=fe.el}if(Oe&&Tn(Oe,Z),!Xe&&(Me=ue&&ue.onVnodeMounted)){const fe=$;Tn(()=>Un(Me,We,fe),Z)}($.shapeFlag&256||We&&Ba(We.vnode)&&We.vnode.shapeFlag&256)&&P.a&&Tn(P.a,Z),P.isMounted=!0,$=T=z=null}},he=P.effect=new nf(we,()=>xu(ke),P.scope),ke=P.update=()=>he.run();ke.id=P.uid,Bo(P,!0),ke()},V=(P,$,T)=>{$.component=P;const z=P.vnode.props;P.vnode=$,P.next=null,YC(P,$.props,z,T),JC(P,$.children,T),dl(),Zp(),fl()},X=(P,$,T,z,Z,oe,_e,we,he=!1)=>{const ke=P&&P.children,Me=P?P.shapeFlag:0,ne=$.children,{patchFlag:ue,shapeFlag:ie}=$;if(ue>0){if(ue&128){Y(ke,ne,T,z,Z,oe,_e,we,he);return}else if(ue&256){I(ke,ne,T,z,Z,oe,_e,we,he);return}}ie&8?(Me&16&&ge(ke,Z,oe),ne!==ke&&d(T,ne)):Me&16?ie&16?Y(ke,ne,T,z,Z,oe,_e,we,he):ge(ke,Z,oe,!0):(Me&8&&d(T,""),ie&16&&S(ne,T,z,Z,oe,_e,we,he))},I=(P,$,T,z,Z,oe,_e,we,he)=>{P=P||Na,$=$||Na;const ke=P.length,Me=$.length,ne=Math.min(ke,Me);let ue;for(ue=0;ueMe?ge(P,Z,oe,!0,!1,ne):S($,T,z,Z,oe,_e,we,he,ne)},Y=(P,$,T,z,Z,oe,_e,we,he)=>{let ke=0;const Me=$.length;let ne=P.length-1,ue=Me-1;for(;ke<=ne&&ke<=ue;){const ie=P[ke],Oe=$[ke]=he?go($[ke]):or($[ke]);if(Yo(ie,Oe))g(ie,Oe,T,null,Z,oe,_e,we,he);else break;ke++}for(;ke<=ne&&ke<=ue;){const ie=P[ne],Oe=$[ue]=he?go($[ue]):or($[ue]);if(Yo(ie,Oe))g(ie,Oe,T,null,Z,oe,_e,we,he);else break;ne--,ue--}if(ke>ne){if(ke<=ue){const ie=ue+1,Oe=ieue)for(;ke<=ne;)W(P[ke],Z,oe,!0),ke++;else{const ie=ke,Oe=ke,We=new Map;for(ke=Oe;ke<=ue;ke++){const q=$[ke]=he?go($[ke]):or($[ke]);q.key!=null&&We.set(q.key,ke)}let Xe,fe=0;const ve=ue-Oe+1;let Ce=!1,Ye=0;const Se=new Array(ve);for(ke=0;ke=ve){W(q,Z,oe,!0);continue}let Ie;if(q.key!=null)Ie=We.get(q.key);else for(Xe=Oe;Xe<=ue;Xe++)if(Se[Xe-Oe]===0&&Yo(q,$[Xe])){Ie=Xe;break}Ie===void 0?W(q,Z,oe,!0):(Se[Ie-Oe]=ke+1,Ie>=Ye?Ye=Ie:Ce=!0,g(q,$[Ie],T,null,Z,oe,_e,we,he),fe++)}const Ae=Ce?tk(Se):Na;for(Xe=Ae.length-1,ke=ve-1;ke>=0;ke--){const q=Oe+ke,Ie=$[q],et=q+1{const{el:oe,type:_e,transition:we,children:he,shapeFlag:ke}=P;if(ke&6){ee(P.component.subTree,$,T,z);return}if(ke&128){P.suspense.move($,T,z);return}if(ke&64){_e.move(P,$,T,ae);return}if(_e===Pe){r(oe,$,T);for(let ne=0;newe.enter(oe),Z);else{const{leave:ne,delayLeave:ue,afterLeave:ie}=we,Oe=()=>r(oe,$,T),We=()=>{ne(oe,()=>{Oe(),ie&&ie()})};ue?ue(oe,Oe,We):We()}else r(oe,$,T)},W=(P,$,T,z=!1,Z=!1)=>{const{type:oe,props:_e,ref:we,children:he,dynamicChildren:ke,shapeFlag:Me,patchFlag:ne,dirs:ue}=P;if(we!=null&&ru(we,null,T,P,!0),Me&256){$.ctx.deactivate(P);return}const ie=Me&1&&ue,Oe=!Ba(P);let We;if(Oe&&(We=_e&&_e.onVnodeBeforeUnmount)&&Un(We,$,P),Me&6)Te(P.component,T,z);else{if(Me&128){P.suspense.unmount(T,z);return}ie&&kr(P,null,$,"beforeUnmount"),Me&64?P.type.remove(P,$,T,Z,ae,z):ke&&(oe!==Pe||ne>0&&ne&64)?ge(ke,$,T,!1,!0):(oe===Pe&&ne&384||!Z&&Me&16)&&ge(he,$,T),z&&re(P)}(Oe&&(We=_e&&_e.onVnodeUnmounted)||ie)&&Tn(()=>{We&&Un(We,$,P),ie&&kr(P,null,$,"unmounted")},T)},re=P=>{const{type:$,el:T,anchor:z,transition:Z}=P;if($===Pe){be(T,z);return}if($===Fl){y(P);return}const oe=()=>{o(T),Z&&!Z.persisted&&Z.afterLeave&&Z.afterLeave()};if(P.shapeFlag&1&&Z&&!Z.persisted){const{leave:_e,delayLeave:we}=Z,he=()=>_e(T,oe);we?we(P.el,oe,he):he()}else oe()},be=(P,$)=>{let T;for(;P!==$;)T=h(P),o(P),P=T;o($)},Te=(P,$,T)=>{const{bum:z,scope:Z,update:oe,subTree:_e,um:we}=P;z&&xi(z),Z.stop(),oe&&(oe.active=!1,W(_e,P,$,T)),we&&Tn(we,$),Tn(()=>{P.isUnmounted=!0},$),$&&$.pendingBranch&&!$.isUnmounted&&P.asyncDep&&!P.asyncResolved&&P.suspenseId===$.pendingId&&($.deps--,$.deps===0&&$.resolve())},ge=(P,$,T,z=!1,Z=!1,oe=0)=>{for(let _e=oe;_eP.shapeFlag&6?J(P.component.subTree):P.shapeFlag&128?P.suspense.next():h(P.anchor||P.el),te=(P,$,T)=>{P==null?$._vnode&&W($._vnode,null,null,!0):g($._vnode||null,P,$,null,null,null,T),Zp(),Qi(),$._vnode=P},ae={p:g,um:W,m:ee,r:re,mt:M,mc:S,pc:X,pbc:L,n:J,o:e};let le,me;return t&&([le,me]=t(ae)),{render:te,hydrate:le,createApp:KC(te,le)}}function Bo({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function yf(e,t,n=!1){const r=e.children,o=t.children;if(De(r)&&De(o))for(let a=0;a>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,l=n[a-1];a-- >0;)n[a]=l,l=t[l];return n}const nk=e=>e.__isTeleport,Dl=e=>e&&(e.disabled||e.disabled===""),cm=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,Gc=(e,t)=>{const n=e&&e.to;return Ge(n)?t?t(n):null:n},rk={__isTeleport:!0,process(e,t,n,r,o,a,l,s,i,u){const{mc:d,pc:f,pbc:h,o:{insert:p,querySelector:v,createText:g,createComment:w}}=u,m=Dl(t.props);let{shapeFlag:b,children:_,dynamicChildren:y}=t;if(e==null){const C=t.el=g(""),k=t.anchor=g("");p(C,n,r),p(k,n,r);const E=t.target=Gc(t.props,v),S=t.targetAnchor=g("");E&&(p(S,E),l=l||cm(E));const R=(L,F)=>{b&16&&d(_,L,F,o,a,l,s,i)};m?R(n,k):E&&R(E,S)}else{t.el=e.el;const C=t.anchor=e.anchor,k=t.target=e.target,E=t.targetAnchor=e.targetAnchor,S=Dl(e.props),R=S?n:k,L=S?C:E;if(l=l||cm(k),y?(h(e.dynamicChildren,y,R,o,a,l,s),yf(e,t,!0)):i||f(e,t,R,L,o,a,l,s,!1),m)S||ti(t,n,C,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const F=t.target=Gc(t.props,v);F&&ti(t,F,null,u,0)}else S&&ti(t,k,E,u,1)}Bb(t)},remove(e,t,n,r,{um:o,o:{remove:a}},l){const{shapeFlag:s,children:i,anchor:u,targetAnchor:d,target:f,props:h}=e;if(f&&a(d),(l||!Dl(h))&&(a(u),s&16))for(let p=0;p0?sr||Na:null,ak(),as>0&&sr&&sr.push(e),e}function U(e,t,n,r,o,a){return zb(K(e,t,n,r,o,a,!0))}function ce(e,t,n,r,o){return zb(Q(e,t,n,r,o,!0))}function Ua(e){return e?e.__v_isVNode===!0:!1}function Yo(e,t){return e.type===t.type&&e.key===t.key}const Lu="__vInternal",Hb=({key:e})=>e!=null?e:null,Oi=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ge(e)||mt(e)||Ke(e)?{i:sn,r:e,k:t,f:!!n}:e:null);function K(e,t=null,n=null,r=0,o=null,a=e===Pe?0:1,l=!1,s=!1){const i={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Hb(t),ref:t&&Oi(t),scopeId:Au,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:sn};return s?(_f(i,n),a&128&&e.normalize(i)):n&&(i.shapeFlag|=Ge(n)?8:16),as>0&&!l&&sr&&(i.patchFlag>0||a&6)&&i.patchFlag!==32&&sr.push(i),i}const Q=lk;function lk(e,t=null,n=null,r=0,o=null,a=!1){if((!e||e===xb)&&(e=yn),Ua(e)){const s=Xr(e,t,!0);return n&&_f(s,n),as>0&&!a&&sr&&(s.shapeFlag&6?sr[sr.indexOf(e)]=s:sr.push(s)),s.patchFlag|=-2,s}if(mk(e)&&(e=e.__vccOpts),t){t=jb(t);let{class:s,style:i}=t;s&&!Ge(s)&&(t.class=D(s)),ht(i)&&(cb(i)&&!De(i)&&(i=Wt({},i)),t.style=Qe(i))}const l=Ge(e)?1:$C(e)?128:nk(e)?64:ht(e)?4:Ke(e)?2:0;return K(e,t,n,r,o,l,a,!0)}function jb(e){return e?cb(e)||Lu in e?Wt({},e):e:null}function Xr(e,t,n=!1){const{props:r,ref:o,patchFlag:a,children:l}=e,s=t?Ht(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&Hb(s),ref:t&&t.ref?n&&o?De(o)?o.concat(Oi(t)):[o,Oi(t)]:Oi(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Pe?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xr(e.ssContent),ssFallback:e.ssFallback&&Xr(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Je(e=" ",t=0){return Q(Gr,null,e,t)}function dG(e,t){const n=Q(Fl,null,e);return n.staticCount=t,n}function ye(e="",t=!1){return t?(x(),ce(yn,null,e)):Q(yn,null,e)}function or(e){return e==null||typeof e=="boolean"?Q(yn):De(e)?Q(Pe,null,e.slice()):typeof e=="object"?go(e):Q(Gr,null,String(e))}function go(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xr(e)}function _f(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(De(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),_f(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(Lu in t)?t._ctx=sn:o===3&&sn&&(sn.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Ke(t)?(t={default:t,_ctx:sn},n=32):(t=String(t),r&64?(n=16,t=[Je(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ht(...e){const t={};for(let n=0;nZt||sn;let wf,Sa,fm="__VUE_INSTANCE_SETTERS__";(Sa=Bc()[fm])||(Sa=Bc()[fm]=[]),Sa.push(e=>Zt=e),wf=e=>{Sa.length>1?Sa.forEach(t=>t(e)):Sa[0](e)};const Ka=e=>{wf(e),e.scope.on()},ra=()=>{Zt&&Zt.scope.off(),wf(null)};function Wb(e){return e.vnode.shapeFlag&4}let qa=!1;function ck(e,t=!1){qa=t;const{props:n,children:r}=e.vnode,o=Wb(e);qC(e,n,o,t),XC(e,r);const a=o?dk(e,t):void 0;return qa=!1,a}function dk(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=db(new Proxy(e.ctx,VC));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Kb(e):null;Ka(e),dl();const a=Eo(r,e,0,[e.props,o]);if(fl(),ra(),Gi(a)){if(a.then(ra,ra),t)return a.then(l=>{pm(e,l,t)}).catch(l=>{xs(l,e,0)});e.asyncDep=a}else pm(e,a,t)}else Ub(e,t)}function pm(e,t,n){Ke(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ht(t)&&(e.setupState=mb(t)),Ub(e,n)}let mm;function Ub(e,t,n){const r=e.type;if(!e.render){if(!t&&mm&&!r.render){const o=r.template||gf(e).template;if(o){const{isCustomElement:a,compilerOptions:l}=e.appContext.config,{delimiters:s,compilerOptions:i}=r,u=Wt(Wt({isCustomElement:a,delimiters:s},l),i);r.render=mm(o,u)}}e.render=r.render||en}Ka(e),dl(),BC(e),fl(),ra()}function fk(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return Ln(e,"get","$attrs"),t[n]}}))}function Kb(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return fk(e)},slots:e.slots,emit:e.emit,expose:t}}function Mu(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(mb(db(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nl)return Nl[n](e)},has(t,n){return n in t||n in Nl}}))}function pk(e,t=!0){return Ke(e)?e.displayName||e.name:e.name||t&&e.__name}function mk(e){return Ke(e)&&"__vccOpts"in e}const O=(e,t)=>vb(e,t,qa);function He(e,t,n){const r=arguments.length;return r===2?ht(t)&&!De(t)?Ua(t)?Q(e,null,[t]):Q(e,t):Q(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ua(n)&&(n=[n]),Q(e,t,n))}const hk=Symbol.for("v-scx"),vk=()=>Re(hk),qb="3.3.4",gk="http://www.w3.org/2000/svg",Go=typeof document!="undefined"?document:null,hm=Go&&Go.createElement("template"),bk={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Go.createElementNS(gk,e):Go.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Go.createTextNode(e),createComment:e=>Go.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Go.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,a){const l=n?n.previousSibling:t.lastChild;if(o&&(o===a||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===a||!(o=o.nextSibling)););else{hm.innerHTML=r?`${e}`:e;const s=hm.content;if(r){const i=s.firstChild;for(;i.firstChild;)s.appendChild(i.firstChild);s.removeChild(i)}t.insertBefore(s,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function yk(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function _k(e,t,n){const r=e.style,o=Ge(n);if(n&&!o){if(t&&!Ge(t))for(const a in t)n[a]==null&&Xc(r,a,"");for(const a in n)Xc(r,a,n[a])}else{const a=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=a)}}const vm=/\s*!important$/;function Xc(e,t,n){if(De(n))n.forEach(r=>Xc(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=wk(e,t);vm.test(n)?e.setProperty(fa(r),n.replace(vm,""),"important"):e[r]=n}}const gm=["Webkit","Moz","ms"],uc={};function wk(e,t){const n=uc[t];if(n)return n;let r=cr(t);if(r!=="filter"&&r in e)return uc[t]=r;r=$u(r);for(let o=0;occ||(Tk.then(()=>cc=0),cc=Date.now());function Ok(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;qn(Ak(r,n.value),t,5,[r])};return n.value=e,n.attached=xk(),n}function Ak(e,t){if(De(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const _m=/^on[a-z]/,Ik=(e,t,n,r,o=!1,a,l,s,i)=>{t==="class"?yk(e,r,o):t==="style"?_k(e,n,r):$s(t)?Zd(t)||Ek(e,t,n,r,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Pk(e,t,r,o))?kk(e,t,r,a,l,s,i):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ck(e,t,r,o))};function Pk(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&_m.test(t)&&Ke(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||_m.test(t)&&Ge(n)?!1:t in e}const uo="transition",kl="animation",Mn=(e,{slots:t})=>He(OC,Gb(e),t);Mn.displayName="Transition";const Yb={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Lk=Mn.props=Wt({},Sb,Yb),zo=(e,t=[])=>{De(e)?e.forEach(n=>n(...t)):e&&e(...t)},wm=e=>e?De(e)?e.some(t=>t.length>1):e.length>1:!1;function Gb(e){const t={};for(const N in e)N in Yb||(t[N]=e[N]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:a=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:i=a,appearActiveClass:u=l,appearToClass:d=s,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,v=Mk(o),g=v&&v[0],w=v&&v[1],{onBeforeEnter:m,onEnter:b,onEnterCancelled:_,onLeave:y,onLeaveCancelled:C,onBeforeAppear:k=m,onAppear:E=b,onAppearCancelled:S=_}=t,R=(N,A,M)=>{mo(N,A?d:s),mo(N,A?u:l),M&&M()},L=(N,A)=>{N._isLeaving=!1,mo(N,f),mo(N,p),mo(N,h),A&&A()},F=N=>(A,M)=>{const H=N?E:b,j=()=>R(A,N,M);zo(H,[A,j]),Cm(()=>{mo(A,N?i:a),Fr(A,N?d:s),wm(H)||km(A,r,g,j)})};return Wt(t,{onBeforeEnter(N){zo(m,[N]),Fr(N,a),Fr(N,l)},onBeforeAppear(N){zo(k,[N]),Fr(N,i),Fr(N,u)},onEnter:F(!1),onAppear:F(!0),onLeave(N,A){N._isLeaving=!0;const M=()=>L(N,A);Fr(N,f),Jb(),Fr(N,h),Cm(()=>{!N._isLeaving||(mo(N,f),Fr(N,p),wm(y)||km(N,r,w,M))}),zo(y,[N,M])},onEnterCancelled(N){R(N,!1),zo(_,[N])},onAppearCancelled(N){R(N,!0),zo(S,[N])},onLeaveCancelled(N){L(N),zo(C,[N])}})}function Mk(e){if(e==null)return null;if(ht(e))return[dc(e.enter),dc(e.leave)];{const t=dc(e);return[t,t]}}function dc(e){return S2(e)}function Fr(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function mo(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Cm(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Rk=0;function km(e,t,n,r){const o=e._endId=++Rk,a=()=>{o===e._endId&&r()};if(n)return setTimeout(a,n);const{type:l,timeout:s,propCount:i}=Xb(e,t);if(!l)return r();const u=l+"end";let d=0;const f=()=>{e.removeEventListener(u,h),a()},h=p=>{p.target===e&&++d>=i&&f()};setTimeout(()=>{d(n[v]||"").split(", "),o=r(`${uo}Delay`),a=r(`${uo}Duration`),l=Sm(o,a),s=r(`${kl}Delay`),i=r(`${kl}Duration`),u=Sm(s,i);let d=null,f=0,h=0;t===uo?l>0&&(d=uo,f=l,h=a.length):t===kl?u>0&&(d=kl,f=u,h=i.length):(f=Math.max(l,u),d=f>0?l>u?uo:kl:null,h=d?d===uo?a.length:i.length:0);const p=d===uo&&/\b(transform|all)(,|$)/.test(r(`${uo}Property`).toString());return{type:d,timeout:f,propCount:h,hasTransform:p}}function Sm(e,t){for(;e.lengthEm(n)+Em(e[r])))}function Em(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Jb(){return document.body.offsetHeight}const Zb=new WeakMap,Qb=new WeakMap,e0={name:"TransitionGroup",props:Wt({},Lk,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=lt(),r=kb();let o,a;return pl(()=>{if(!o.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!zk(o[0].el,n.vnode.el,l))return;o.forEach(Fk),o.forEach(Vk);const s=o.filter(Bk);Jb(),s.forEach(i=>{const u=i.el,d=u.style;Fr(u,l),d.transform=d.webkitTransform=d.transitionDuration="";const f=u._moveCb=h=>{h&&h.target!==u||(!h||/transform$/.test(h.propertyName))&&(u.removeEventListener("transitionend",f),u._moveCb=null,mo(u,l))};u.addEventListener("transitionend",f)})}),()=>{const l=gt(e),s=Gb(l);let i=l.tag||Pe;o=a,a=t.default?pf(t.default()):[];for(let u=0;udelete e.mode;e0.props;const Dk=e0;function Fk(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function Vk(e){Qb.set(e,e.el.getBoundingClientRect())}function Bk(e){const t=Zb.get(e),n=Qb.get(e),r=t.left-n.left,o=t.top-n.top;if(r||o){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${r}px,${o}px)`,a.transitionDuration="0s",e}}function zk(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(l=>{l.split(/\s+/).forEach(s=>s&&r.classList.remove(s))}),n.split(/\s+/).forEach(l=>l&&r.classList.add(l)),r.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:a}=Xb(r);return o.removeChild(r),a}const Ya=e=>{const t=e.props["onUpdate:modelValue"]||!1;return De(t)?n=>xi(t,n):t};function Hk(e){e.target.composing=!0}function $m(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const t0={created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e._assign=Ya(o);const a=r||o.props&&o.props.type==="number";_o(e,t?"change":"input",l=>{if(l.target.composing)return;let s=e.value;n&&(s=s.trim()),a&&(s=Vc(s)),e._assign(s)}),n&&_o(e,"change",()=>{e.value=e.value.trim()}),t||(_o(e,"compositionstart",Hk),_o(e,"compositionend",$m),_o(e,"change",$m))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:o}},a){if(e._assign=Ya(a),e.composing||document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===t||(o||e.type==="number")&&Vc(e.value)===t))return;const l=t==null?"":t;e.value!==l&&(e.value=l)}},ou={deep:!0,created(e,t,n){e._assign=Ya(n),_o(e,"change",()=>{const r=e._modelValue,o=r0(e),a=e.checked,l=e._assign;if(De(r)){const s=Gg(r,o),i=s!==-1;if(a&&!i)l(r.concat(o));else if(!a&&i){const u=[...r];u.splice(s,1),l(u)}}else if(Su(r)){const s=new Set(r);a?s.add(o):s.delete(o),l(s)}else l(o0(e,a))})},mounted:Tm,beforeUpdate(e,t,n){e._assign=Ya(n),Tm(e,t,n)}};function Tm(e,{value:t,oldValue:n},r){e._modelValue=t,De(t)?e.checked=Gg(t,r.props.value)>-1:Su(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=ja(t,o0(e,!0)))}const n0={created(e,{value:t},n){e.checked=ja(t,n.props.value),e._assign=Ya(n),_o(e,"change",()=>{e._assign(r0(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e._assign=Ya(r),t!==n&&(e.checked=ja(t,r.props.value))}};function r0(e){return"_value"in e?e._value:e.value}function o0(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const jk=["ctrl","shift","alt","meta"],Wk={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>jk.some(n=>e[`${n}Key`]&&!t.includes(n))},$t=(e,t)=>(n,...r)=>{for(let o=0;on=>{if(!("key"in n))return;const r=fa(n.key);if(t.some(o=>o===r||Uk[o]===r))return e(n)},qt={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Sl(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Sl(e,!0),r.enter(e)):r.leave(e,()=>{Sl(e,!1)}):Sl(e,t))},beforeUnmount(e,{value:t}){Sl(e,t)}};function Sl(e,t){e.style.display=t?e._vod:"none"}const a0=Wt({patchProp:Ik},bk);let Bl,xm=!1;function Kk(){return Bl||(Bl=QC(a0))}function qk(){return Bl=xm?Bl:ek(a0),xm=!0,Bl}const Om=(...e)=>{Kk().render(...e)},Yk=(...e)=>{const t=qk().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Gk(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Gk(e){return Ge(e)?document.querySelector(e):e}const Xk=JSON.parse('{"base":"/","lang":"en-US","title":"SD \u8BAD\u7EC3 UI","description":"","head":[],"locales":{}}');var Jk=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),Zk=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=Jk(r);t.has(o)||(t.add(o),n.push(r))}),n},Qk=e=>/^(https?:)?\/\//.test(e),fG=e=>/^mailto:/.test(e),pG=e=>/^tel:/.test(e),l0=e=>Object.prototype.toString.call(e)==="[object Object]",eS=e=>e.replace(/\/$/,""),tS=e=>e.replace(/^\//,""),s0=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const a=o.split("/").length-r.split("/").length;return a!==0?a:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const i0={"v-8daa1a0e":Jt(()=>wt(()=>import("./index.html.c6ef684b.js"),[])),"v-6983ba2a":Jt(()=>wt(()=>import("./tageditor.html.173f1b6a.js"),[])),"v-51615306":Jt(()=>wt(()=>import("./tagger.html.0daaef4e.js"),[])),"v-06850b9b":Jt(()=>wt(()=>import("./task.html.256f458b.js"),[])),"v-13efe3c5":Jt(()=>wt(()=>import("./tensorboard.html.9c3b4542.js"),[])),"v-33a23463":Jt(()=>wt(()=>import("./index.html.911dc78d.js"),[])),"v-b5471278":Jt(()=>wt(()=>import("./about.html.b4807002.js"),[])),"v-a1c9e4f2":Jt(()=>wt(()=>import("./changelog.html.e5f6a7b8.js"),[])),"v-b8e2d701":Jt(()=>wt(()=>import("./guide.html.c3f4a902.js"),[])),"v-72e1da3e":Jt(()=>wt(()=>import("./settings.html.07aaabcc.js"),[])),"v-3e43d6e2":Jt(()=>wt(()=>import("./basic.html.eb26832d.js"),[])),"v-fdbe4e28":Jt(()=>wt(()=>import("./flux.html.f22f5932.js"),[])),"v-14e91824":Jt(()=>wt(()=>import("./index.html.4896b94d.js"),[])),"v-1bf725da":Jt(()=>wt(()=>import("./master.html.404f21be.js"),[])),"v-0f9e746f":Jt(()=>wt(()=>import("./params.html.dea583bc.js"),[])),"v-0dc76a3b":Jt(()=>wt(()=>import("./sd3.html.1a4bf31e.js"),[])),"v-a1f1ne2e":Jt(()=>wt(()=>import("./anima-finetune.html.1a4bf32e.js"),[])),"v-53c99f50":Jt(()=>wt(()=>import("./sdxl.html.33fa069c.js"),[])),"v-4441a302":Jt(()=>wt(()=>import("./tools.html.6c8bfc09.js"),[])),"v-3706649a":Jt(()=>wt(()=>import("./404.html.7a24a487.js"),[]))},nS={404:Jt(()=>wt(()=>import("./404.47057000.js"),[])),Layout:Jt(()=>wt(()=>import("./layout.96d49288.js"),[]))};var u0=B(b2),c0=pa({key:"",path:"",title:"",lang:"",frontmatter:{},excerpt:"",headers:[]}),jr=B(c0),Ps=()=>jr;zp.webpackHot&&(__VUE_HMR_RUNTIME__.updatePageData=e=>{u0.value[e.key]=()=>Promise.resolve(e),e.key===jr.value.key&&(jr.value=e)});var d0=Symbol(""),rS=()=>{const e=Re(d0);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},f0=Symbol(""),oS=()=>{const e=Re(f0);if(!e)throw new Error("usePageHead() is called without provider.");return e},aS=Symbol(""),p0=Symbol(""),lS=()=>{const e=Re(p0);if(!e)throw new Error("usePageLang() is called without provider.");return e},Cf=Symbol(""),sS=()=>{const e=Re(Cf);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},wo=B(Xk),iS=()=>wo;zp.webpackHot&&(__VUE_HMR_RUNTIME__.updateSiteData=e=>{wo.value=e});var m0=Symbol(""),mG=()=>{const e=Re(m0);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},uS=Symbol(""),Wo=Xt({resolvePageData:async e=>{const t=u0.value[e],n=await(t==null?void 0:t());return n!=null?n:c0},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=Ge(t.description)?t.description:n.description,o=[...De(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return Zk(o)},resolvePageHeadTitle:(e,t)=>`${e.title?`${e.title} | `:""}${t.title}`,resolvePageLang:e=>e.lang||"en",resolveRouteLocale:(e,t)=>s0(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),cS=se({name:"ClientOnly",setup(e,t){const n=B(!1);return dt(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),dS=se({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=Ps(),n=O(()=>i0[e.pageKey||t.value.key]);return()=>n.value?He(n.value):He("div","404 Not Found")}}),Am=se({name:"Vuepress",setup(){const e=Ps(),t=O(()=>{let n;if(e.value.path){const r=e.value.frontmatter.layout;Ge(r)?n=r:n="Layout"}else n="404";return nS[n]||Ve(n,!1)});return()=>He(t.value)}}),fS=e=>Qk(e)?e:`${iS().value.base}${tS(e)}`,Ro=e=>e;function h0(e,t,n){var r,o,a;t===void 0&&(t=50),n===void 0&&(n={});var l=(r=n.isImmediate)!=null&&r,s=(o=n.callback)!=null&&o,i=n.maxWait,u=Date.now(),d=[];function f(){if(i!==void 0){var p=Date.now()-u;if(p+t>=i)return i-p}return t}var h=function(){var p=[].slice.call(arguments),v=this;return new Promise(function(g,w){var m=l&&a===void 0;if(a!==void 0&&clearTimeout(a),a=setTimeout(function(){if(a=void 0,u=Date.now(),!l){var _=e.apply(v,p);s&&s(_),d.forEach(function(y){return(0,y.resolve)(_)}),d=[]}},f()),m){var b=e.apply(v,p);return s&&s(b),g(b)}d.push({resolve:g,reject:w})})};return h.cancel=function(p){a!==void 0&&clearTimeout(a),d.forEach(function(v){return(0,v.reject)(p)}),d=[]},h}/*! - * vue-router v4.2.4 - * (c) 2023 Eduardo San Martin Morote - * @license MIT - */const Aa=typeof window!="undefined";function pS(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const At=Object.assign;function fc(e,t){const n={};for(const r in t){const o=t[r];n[r]=fr(o)?o.map(e):e(o)}return n}const zl=()=>{},fr=Array.isArray,mS=/\/$/,hS=e=>e.replace(mS,"");function pc(e,t,n="/"){let r,o={},a="",l="";const s=t.indexOf("#");let i=t.indexOf("?");return s=0&&(i=-1),i>-1&&(r=t.slice(0,i),a=t.slice(i+1,s>-1?s:t.length),o=e(a)),s>-1&&(r=r||t.slice(0,s),l=t.slice(s,t.length)),r=yS(r!=null?r:t,n),{fullPath:r+(a&&"?")+a+l,path:r,query:o,hash:l}}function vS(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Im(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function gS(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&Ga(t.matched[r],n.matched[o])&&v0(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Ga(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function v0(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!bS(e[n],t[n]))return!1;return!0}function bS(e,t){return fr(e)?Pm(e,t):fr(t)?Pm(t,e):e===t}function Pm(e,t){return fr(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function yS(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let a=n.length-1,l,s;for(l=0;l1&&a--;else break;return n.slice(0,a).join("/")+"/"+r.slice(l-(l===r.length?1:0)).join("/")}var ls;(function(e){e.pop="pop",e.push="push"})(ls||(ls={}));var Hl;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Hl||(Hl={}));function _S(e){if(!e)if(Aa){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),hS(e)}const wS=/^[^#]+#/;function CS(e,t){return e.replace(wS,"#")+t}function kS(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Ru=()=>({left:window.pageXOffset,top:window.pageYOffset});function SS(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=kS(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function Lm(e,t){return(history.state?history.state.position-t:-1)+e}const Jc=new Map;function ES(e,t){Jc.set(e,t)}function $S(e){const t=Jc.get(e);return Jc.delete(e),t}let TS=()=>location.protocol+"//"+location.host;function g0(e,t){const{pathname:n,search:r,hash:o}=t,a=e.indexOf("#");if(a>-1){let s=o.includes(e.slice(a))?e.slice(a).length:1,i=o.slice(s);return i[0]!=="/"&&(i="/"+i),Im(i,"")}return Im(n,e)+r+o}function xS(e,t,n,r){let o=[],a=[],l=null;const s=({state:h})=>{const p=g0(e,location),v=n.value,g=t.value;let w=0;if(h){if(n.value=p,t.value=h,l&&l===v){l=null;return}w=g?h.position-g.position:0}else r(p);o.forEach(m=>{m(n.value,v,{delta:w,type:ls.pop,direction:w?w>0?Hl.forward:Hl.back:Hl.unknown})})};function i(){l=n.value}function u(h){o.push(h);const p=()=>{const v=o.indexOf(h);v>-1&&o.splice(v,1)};return a.push(p),p}function d(){const{history:h}=window;!h.state||h.replaceState(At({},h.state,{scroll:Ru()}),"")}function f(){for(const h of a)h();a=[],window.removeEventListener("popstate",s),window.removeEventListener("beforeunload",d)}return window.addEventListener("popstate",s),window.addEventListener("beforeunload",d,{passive:!0}),{pauseListeners:i,listen:u,destroy:f}}function Mm(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?Ru():null}}function OS(e){const{history:t,location:n}=window,r={value:g0(e,n)},o={value:t.state};o.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(i,u,d){const f=e.indexOf("#"),h=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+i:TS()+e+i;try{t[d?"replaceState":"pushState"](u,"",h),o.value=u}catch(p){console.error(p),n[d?"replace":"assign"](h)}}function l(i,u){const d=At({},t.state,Mm(o.value.back,i,o.value.forward,!0),u,{position:o.value.position});a(i,d,!0),r.value=i}function s(i,u){const d=At({},o.value,t.state,{forward:i,scroll:Ru()});a(d.current,d,!0);const f=At({},Mm(r.value,i,null),{position:d.position+1},u);a(i,f,!1),r.value=i}return{location:r,state:o,push:s,replace:l}}function AS(e){e=_S(e);const t=OS(e),n=xS(e,t.state,t.location,t.replace);function r(a,l=!0){l||n.pauseListeners(),history.go(a)}const o=At({location:"",base:e,go:r,createHref:CS.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function IS(e){return typeof e=="string"||e&&typeof e=="object"}function b0(e){return typeof e=="string"||typeof e=="symbol"}const Vr={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},y0=Symbol("");var Rm;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Rm||(Rm={}));function Xa(e,t){return At(new Error,{type:e,[y0]:!0},t)}function Rr(e,t){return e instanceof Error&&y0 in e&&(t==null||!!(e.type&t))}const Nm="[^/]+?",PS={sensitive:!1,strict:!1,start:!0,end:!0},LS=/[.+*?^${}()[\]/\\]/g;function MS(e,t){const n=At({},PS,t),r=[];let o=n.start?"^":"";const a=[];for(const u of e){const d=u.length?[]:[90];n.strict&&!u.length&&(o+="/");for(let f=0;ft.length?t.length===1&&t[0]===40+40?1:-1:0}function NS(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const DS={type:0,value:""},FS=/[a-zA-Z0-9_]/;function VS(e){if(!e)return[[]];if(e==="/")return[[DS]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${n})/"${u}": ${p}`)}let n=0,r=n;const o=[];let a;function l(){a&&o.push(a),a=[]}let s=0,i,u="",d="";function f(){!u||(n===0?a.push({type:0,value:u}):n===1||n===2||n===3?(a.length>1&&(i==="*"||i==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:u,regexp:d,repeatable:i==="*"||i==="+",optional:i==="*"||i==="?"})):t("Invalid state to consume buffer"),u="")}function h(){u+=i}for(;s{l(b)}:zl}function l(d){if(b0(d)){const f=r.get(d);f&&(r.delete(d),n.splice(n.indexOf(f),1),f.children.forEach(l),f.alias.forEach(l))}else{const f=n.indexOf(d);f>-1&&(n.splice(f,1),d.record.name&&r.delete(d.record.name),d.children.forEach(l),d.alias.forEach(l))}}function s(){return n}function i(d){let f=0;for(;f=0&&(d.record.path!==n[f].record.path||!_0(d,n[f]));)f++;n.splice(f,0,d),d.record.name&&!Vm(d)&&r.set(d.record.name,d)}function u(d,f){let h,p={},v,g;if("name"in d&&d.name){if(h=r.get(d.name),!h)throw Xa(1,{location:d});g=h.record.name,p=At(Fm(f.params,h.keys.filter(b=>!b.optional).map(b=>b.name)),d.params&&Fm(d.params,h.keys.map(b=>b.name))),v=h.stringify(p)}else if("path"in d)v=d.path,h=n.find(b=>b.re.test(v)),h&&(p=h.parse(v),g=h.record.name);else{if(h=f.name?r.get(f.name):n.find(b=>b.re.test(f.path)),!h)throw Xa(1,{location:d,currentLocation:f});g=h.record.name,p=At({},f.params,d.params),v=h.stringify(p)}const w=[];let m=h;for(;m;)w.unshift(m.record),m=m.parent;return{name:g,path:v,params:p,matched:w,meta:WS(w)}}return e.forEach(d=>a(d)),{addRoute:a,resolve:u,removeRoute:l,getRoutes:s,getRecordMatcher:o}}function Fm(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function HS(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:jS(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function jS(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Vm(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function WS(e){return e.reduce((t,n)=>At(t,n.meta),{})}function Bm(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function _0(e,t){return t.children.some(n=>n===e||_0(e,n))}const w0=/#/g,US=/&/g,KS=/\//g,qS=/=/g,YS=/\?/g,C0=/\+/g,GS=/%5B/g,XS=/%5D/g,k0=/%5E/g,JS=/%60/g,S0=/%7B/g,ZS=/%7C/g,E0=/%7D/g,QS=/%20/g;function kf(e){return encodeURI(""+e).replace(ZS,"|").replace(GS,"[").replace(XS,"]")}function eE(e){return kf(e).replace(S0,"{").replace(E0,"}").replace(k0,"^")}function Zc(e){return kf(e).replace(C0,"%2B").replace(QS,"+").replace(w0,"%23").replace(US,"%26").replace(JS,"`").replace(S0,"{").replace(E0,"}").replace(k0,"^")}function tE(e){return Zc(e).replace(qS,"%3D")}function nE(e){return kf(e).replace(w0,"%23").replace(YS,"%3F")}function rE(e){return e==null?"":nE(e).replace(KS,"%2F")}function au(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function oE(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;oa&&Zc(a)):[r&&Zc(r)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function aE(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=fr(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const lE=Symbol(""),Hm=Symbol(""),Nu=Symbol(""),Sf=Symbol(""),Qc=Symbol("");function El(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function bo(e,t,n,r,o){const a=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((l,s)=>{const i=f=>{f===!1?s(Xa(4,{from:n,to:t})):f instanceof Error?s(f):IS(f)?s(Xa(2,{from:t,to:f})):(a&&r.enterCallbacks[o]===a&&typeof f=="function"&&a.push(f),l())},u=e.call(r&&r.instances[o],t,n,i);let d=Promise.resolve(u);e.length<3&&(d=d.then(i)),d.catch(f=>s(f))})}function mc(e,t,n,r){const o=[];for(const a of e)for(const l in a.components){let s=a.components[l];if(!(t!=="beforeRouteEnter"&&!a.instances[l]))if(sE(s)){const u=(s.__vccOpts||s)[t];u&&o.push(bo(u,n,r,a,l))}else{let i=s();o.push(()=>i.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${l}" at "${a.path}"`));const d=pS(u)?u.default:u;a.components[l]=d;const h=(d.__vccOpts||d)[t];return h&&bo(h,n,r,a,l)()}))}}return o}function sE(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function jm(e){const t=Re(Nu),n=Re(Sf),r=O(()=>t.resolve(c(e.to))),o=O(()=>{const{matched:i}=r.value,{length:u}=i,d=i[u-1],f=n.matched;if(!d||!f.length)return-1;const h=f.findIndex(Ga.bind(null,d));if(h>-1)return h;const p=Wm(i[u-2]);return u>1&&Wm(d)===p&&f[f.length-1].path!==p?f.findIndex(Ga.bind(null,i[u-2])):h}),a=O(()=>o.value>-1&&dE(n.params,r.value.params)),l=O(()=>o.value>-1&&o.value===n.matched.length-1&&v0(n.params,r.value.params));function s(i={}){return cE(i)?t[c(e.replace)?"replace":"push"](c(e.to)).catch(zl):Promise.resolve()}return{route:r,href:O(()=>r.value.href),isActive:a,isExactActive:l,navigate:s}}const iE=se({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:jm,setup(e,{slots:t}){const n=Xt(jm(e)),{options:r}=Re(Nu),o=O(()=>({[Um(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Um(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&t.default(n);return e.custom?a:He("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},a)}}}),uE=iE;function cE(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function dE(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!fr(o)||o.length!==r.length||r.some((a,l)=>a!==o[l]))return!1}return!0}function Wm(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Um=(e,t,n)=>e!=null?e:t!=null?t:n,fE=se({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Re(Qc),o=O(()=>e.route||r.value),a=Re(Hm,0),l=O(()=>{let u=c(a);const{matched:d}=o.value;let f;for(;(f=d[u])&&!f.components;)u++;return u}),s=O(()=>o.value.matched[l.value]);yt(Hm,O(()=>l.value+1)),yt(lE,s),yt(Qc,o);const i=B();return $e(()=>[i.value,s.value,e.name],([u,d,f],[h,p,v])=>{d&&(d.instances[f]=u,p&&p!==d&&u&&u===h&&(d.leaveGuards.size||(d.leaveGuards=p.leaveGuards),d.updateGuards.size||(d.updateGuards=p.updateGuards))),u&&d&&(!p||!Ga(d,p)||!h)&&(d.enterCallbacks[f]||[]).forEach(g=>g(u))},{flush:"post"}),()=>{const u=o.value,d=e.name,f=s.value,h=f&&f.components[d];if(!h)return Km(n.default,{Component:h,route:u});const p=f.props[d],v=p?p===!0?u.params:typeof p=="function"?p(u):p:null,w=He(h,At({},v,t,{onVnodeUnmounted:m=>{m.component.isUnmounted&&(f.instances[d]=null)},ref:i}));return Km(n.default,{Component:w,route:u})||w}}});function Km(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const $0=fE;function pE(e){const t=zS(e.routes,e),n=e.parseQuery||oE,r=e.stringifyQuery||zm,o=e.history,a=El(),l=El(),s=El(),i=On(Vr);let u=Vr;Aa&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=fc.bind(null,J=>""+J),f=fc.bind(null,rE),h=fc.bind(null,au);function p(J,te){let ae,le;return b0(J)?(ae=t.getRecordMatcher(J),le=te):le=J,t.addRoute(le,ae)}function v(J){const te=t.getRecordMatcher(J);te&&t.removeRoute(te)}function g(){return t.getRoutes().map(J=>J.record)}function w(J){return!!t.getRecordMatcher(J)}function m(J,te){if(te=At({},te||i.value),typeof J=="string"){const T=pc(n,J,te.path),z=t.resolve({path:T.path},te),Z=o.createHref(T.fullPath);return At(T,z,{params:h(z.params),hash:au(T.hash),redirectedFrom:void 0,href:Z})}let ae;if("path"in J)ae=At({},J,{path:pc(n,J.path,te.path).path});else{const T=At({},J.params);for(const z in T)T[z]==null&&delete T[z];ae=At({},J,{params:f(T)}),te.params=f(te.params)}const le=t.resolve(ae,te),me=J.hash||"";le.params=d(h(le.params));const P=vS(r,At({},J,{hash:eE(me),path:le.path})),$=o.createHref(P);return At({fullPath:P,hash:me,query:r===zm?aE(J.query):J.query||{}},le,{redirectedFrom:void 0,href:$})}function b(J){return typeof J=="string"?pc(n,J,i.value.path):At({},J)}function _(J,te){if(u!==J)return Xa(8,{from:te,to:J})}function y(J){return E(J)}function C(J){return y(At(b(J),{replace:!0}))}function k(J){const te=J.matched[J.matched.length-1];if(te&&te.redirect){const{redirect:ae}=te;let le=typeof ae=="function"?ae(J):ae;return typeof le=="string"&&(le=le.includes("?")||le.includes("#")?le=b(le):{path:le},le.params={}),At({query:J.query,hash:J.hash,params:"path"in le?{}:J.params},le)}}function E(J,te){const ae=u=m(J),le=i.value,me=J.state,P=J.force,$=J.replace===!0,T=k(ae);if(T)return E(At(b(T),{state:typeof T=="object"?At({},me,T.state):me,force:P,replace:$}),te||ae);const z=ae;z.redirectedFrom=te;let Z;return!P&&gS(r,le,ae)&&(Z=Xa(16,{to:z,from:le}),ee(le,le,!0,!1)),(Z?Promise.resolve(Z):L(z,le)).catch(oe=>Rr(oe)?Rr(oe,2)?oe:Y(oe):X(oe,z,le)).then(oe=>{if(oe){if(Rr(oe,2))return E(At({replace:$},b(oe.to),{state:typeof oe.to=="object"?At({},me,oe.to.state):me,force:P}),te||z)}else oe=N(z,le,!0,$,me);return F(z,le,oe),oe})}function S(J,te){const ae=_(J,te);return ae?Promise.reject(ae):Promise.resolve()}function R(J){const te=be.values().next().value;return te&&typeof te.runWithContext=="function"?te.runWithContext(J):J()}function L(J,te){let ae;const[le,me,P]=mE(J,te);ae=mc(le.reverse(),"beforeRouteLeave",J,te);for(const T of le)T.leaveGuards.forEach(z=>{ae.push(bo(z,J,te))});const $=S.bind(null,J,te);return ae.push($),ge(ae).then(()=>{ae=[];for(const T of a.list())ae.push(bo(T,J,te));return ae.push($),ge(ae)}).then(()=>{ae=mc(me,"beforeRouteUpdate",J,te);for(const T of me)T.updateGuards.forEach(z=>{ae.push(bo(z,J,te))});return ae.push($),ge(ae)}).then(()=>{ae=[];for(const T of P)if(T.beforeEnter)if(fr(T.beforeEnter))for(const z of T.beforeEnter)ae.push(bo(z,J,te));else ae.push(bo(T.beforeEnter,J,te));return ae.push($),ge(ae)}).then(()=>(J.matched.forEach(T=>T.enterCallbacks={}),ae=mc(P,"beforeRouteEnter",J,te),ae.push($),ge(ae))).then(()=>{ae=[];for(const T of l.list())ae.push(bo(T,J,te));return ae.push($),ge(ae)}).catch(T=>Rr(T,8)?T:Promise.reject(T))}function F(J,te,ae){s.list().forEach(le=>R(()=>le(J,te,ae)))}function N(J,te,ae,le,me){const P=_(J,te);if(P)return P;const $=te===Vr,T=Aa?history.state:{};ae&&(le||$?o.replace(J.fullPath,At({scroll:$&&T&&T.scroll},me)):o.push(J.fullPath,me)),i.value=J,ee(J,te,ae,$),Y()}let A;function M(){A||(A=o.listen((J,te,ae)=>{if(!Te.listening)return;const le=m(J),me=k(le);if(me){E(At(me,{replace:!0}),le).catch(zl);return}u=le;const P=i.value;Aa&&ES(Lm(P.fullPath,ae.delta),Ru()),L(le,P).catch($=>Rr($,12)?$:Rr($,2)?(E($.to,le).then(T=>{Rr(T,20)&&!ae.delta&&ae.type===ls.pop&&o.go(-1,!1)}).catch(zl),Promise.reject()):(ae.delta&&o.go(-ae.delta,!1),X($,le,P))).then($=>{$=$||N(le,P,!1),$&&(ae.delta&&!Rr($,8)?o.go(-ae.delta,!1):ae.type===ls.pop&&Rr($,20)&&o.go(-1,!1)),F(le,P,$)}).catch(zl)}))}let H=El(),j=El(),V;function X(J,te,ae){Y(J);const le=j.list();return le.length?le.forEach(me=>me(J,te,ae)):console.error(J),Promise.reject(J)}function I(){return V&&i.value!==Vr?Promise.resolve():new Promise((J,te)=>{H.add([J,te])})}function Y(J){return V||(V=!J,M(),H.list().forEach(([te,ae])=>J?ae(J):te()),H.reset()),J}function ee(J,te,ae,le){const{scrollBehavior:me}=e;if(!Aa||!me)return Promise.resolve();const P=!ae&&$S(Lm(J.fullPath,0))||(le||!ae)&&history.state&&history.state.scroll||null;return qe().then(()=>me(J,te,P)).then($=>$&&SS($)).catch($=>X($,J,te))}const W=J=>o.go(J);let re;const be=new Set,Te={currentRoute:i,listening:!0,addRoute:p,removeRoute:v,hasRoute:w,getRoutes:g,resolve:m,options:e,push:y,replace:C,go:W,back:()=>W(-1),forward:()=>W(1),beforeEach:a.add,beforeResolve:l.add,afterEach:s.add,onError:j.add,isReady:I,install(J){const te=this;J.component("RouterLink",uE),J.component("RouterView",$0),J.config.globalProperties.$router=te,Object.defineProperty(J.config.globalProperties,"$route",{enumerable:!0,get:()=>c(i)}),Aa&&!re&&i.value===Vr&&(re=!0,y(o.location).catch(me=>{}));const ae={};for(const me in Vr)Object.defineProperty(ae,me,{get:()=>i.value[me],enumerable:!0});J.provide(Nu,te),J.provide(Sf,lf(ae)),J.provide(Qc,i);const le=J.unmount;be.add(J),J.unmount=function(){be.delete(J),be.size<1&&(u=Vr,A&&A(),A=null,i.value=Vr,re=!1,V=!1),le()}}};function ge(J){return J.reduce((te,ae)=>te.then(()=>R(ae)),Promise.resolve())}return Te}function mE(e,t){const n=[],r=[],o=[],a=Math.max(t.matched.length,e.matched.length);for(let l=0;lGa(u,s))?r.push(s):n.push(s));const i=e.matched[l];i&&(t.matched.find(u=>Ga(u,i))||o.push(i))}return[n,r,o]}function Ef(){return Re(Nu)}function $f(){return Re(Sf)}const hE=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=Ef(),a=Ps(),s=h0(()=>{var w,m,b,_;const i=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(i-0)p.some(C=>C.hash===y.hash));for(let y=0;y=((m=(w=C.parentElement)==null?void 0:w.offsetTop)!=null?m:0)-r,S=!k||i<((_=(b=k.parentElement)==null?void 0:b.offsetTop)!=null?_:0)-r;if(!(E&&S))continue;const L=decodeURIComponent(o.currentRoute.value.hash),F=decodeURIComponent(C.hash);if(L===F)return;if(h){for(let N=y+1;N{s(),window.addEventListener("scroll",s)}),rn(()=>{window.removeEventListener("scroll",s)}),$e(()=>a.value.path,s)},qm=async(e,...t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace(...t).finally(()=>e.options.scrollBehavior=n)},vE="a.sidebar-item",gE=".header-anchor",bE=300,yE=5;var _E=Ro({setup(){hE({headerLinkSelector:vE,headerAnchorSelector:gE,delay:bE,offset:yE})}});const Ym=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,wE=()=>window.scrollTo({top:0,behavior:"smooth"});const CE=se({name:"BackToTop",setup(){const e=B(0),t=O(()=>e.value>300),n=h0(()=>{e.value=Ym()},100);dt(()=>{e.value=Ym(),window.addEventListener("scroll",()=>n())});const r=He("div",{class:"back-to-top",onClick:wE});return()=>He(Mn,{name:"back-to-top"},()=>t.value?r:null)}});var kE=Ro({rootComponents:[CE]});const SE=He("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[He("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),He("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),EE=se({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=sS(),n=O(()=>{var r;return(r=e.locales[t.value])!=null?r:{openInNewWindow:"open in new window"}});return()=>He("span",[SE,He("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}}),$E={"/":{openInNewWindow:"open in new window"}};var TE=Ro({enhance({app:e}){e.component("ExternalLinkIcon",He(EE,{locales:$E}))}});/*! medium-zoom 1.0.8 | MIT License | https://github.com/francoischalifour/medium-zoom */var Uo=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},r=window.Promise||function(N){function A(){}N(A,A)},o=function(N){var A=N.target;if(A===R){v();return}_.indexOf(A)!==-1&&g({target:A})},a=function(){if(!(C||!S.original)){var N=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(k-N)>E.scrollOffset&&setTimeout(v,150)}},l=function(N){var A=N.key||N.keyCode;(A==="Escape"||A==="Esc"||A===27)&&v()},s=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=N;if(N.background&&(R.style.background=N.background),N.container&&N.container instanceof Object&&(A.container=Uo({},E.container,N.container)),N.template){var M=Ai(N.template)?N.template:document.querySelector(N.template);A.template=M}return E=Uo({},E,A),_.forEach(function(H){H.dispatchEvent(Ea("medium-zoom:update",{detail:{zoom:L}}))}),L},i=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e(Uo({},E,N))},u=function(){for(var N=arguments.length,A=Array(N),M=0;M0?A.reduce(function(j,V){return[].concat(j,Xm(V))},[]):_;return H.forEach(function(j){j.classList.remove("medium-zoom-image"),j.dispatchEvent(Ea("medium-zoom:detach",{detail:{zoom:L}}))}),_=_.filter(function(j){return H.indexOf(j)===-1}),L},f=function(N,A){var M=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return _.forEach(function(H){H.addEventListener("medium-zoom:"+N,A,M)}),y.push({type:"medium-zoom:"+N,listener:A,options:M}),L},h=function(N,A){var M=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return _.forEach(function(H){H.removeEventListener("medium-zoom:"+N,A,M)}),y=y.filter(function(H){return!(H.type==="medium-zoom:"+N&&H.listener.toString()===A.toString())}),L},p=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=N.target,M=function(){var j={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},V=void 0,X=void 0;if(E.container)if(E.container instanceof Object)j=Uo({},j,E.container),V=j.width-j.left-j.right-E.margin*2,X=j.height-j.top-j.bottom-E.margin*2;else{var I=Ai(E.container)?E.container:document.querySelector(E.container),Y=I.getBoundingClientRect(),ee=Y.width,W=Y.height,re=Y.left,be=Y.top;j=Uo({},j,{width:ee,height:W,left:re,top:be})}V=V||j.width-E.margin*2,X=X||j.height-E.margin*2;var Te=S.zoomedHd||S.original,ge=Gm(Te)?V:Te.naturalWidth||V,J=Gm(Te)?X:Te.naturalHeight||X,te=Te.getBoundingClientRect(),ae=te.top,le=te.left,me=te.width,P=te.height,$=Math.min(Math.max(me,ge),V)/me,T=Math.min(Math.max(P,J),X)/P,z=Math.min($,T),Z=(-le+(V-me)/2+E.margin+j.left)/z,oe=(-ae+(X-P)/2+E.margin+j.top)/z,_e="scale("+z+") translate3d("+Z+"px, "+oe+"px, 0)";S.zoomed.style.transform=_e,S.zoomedHd&&(S.zoomedHd.style.transform=_e)};return new r(function(H){if(A&&_.indexOf(A)===-1){H(L);return}var j=function ee(){C=!1,S.zoomed.removeEventListener("transitionend",ee),S.original.dispatchEvent(Ea("medium-zoom:opened",{detail:{zoom:L}})),H(L)};if(S.zoomed){H(L);return}if(A)S.original=A;else if(_.length>0){var V=_;S.original=V[0]}else{H(L);return}if(S.original.dispatchEvent(Ea("medium-zoom:open",{detail:{zoom:L}})),k=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,C=!0,S.zoomed=AE(S.original),document.body.appendChild(R),E.template){var X=Ai(E.template)?E.template:document.querySelector(E.template);S.template=document.createElement("div"),S.template.appendChild(X.content.cloneNode(!0)),document.body.appendChild(S.template)}if(S.original.parentElement&&S.original.parentElement.tagName==="PICTURE"&&S.original.currentSrc&&(S.zoomed.src=S.original.currentSrc),document.body.appendChild(S.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),S.original.classList.add("medium-zoom-image--hidden"),S.zoomed.classList.add("medium-zoom-image--opened"),S.zoomed.addEventListener("click",v),S.zoomed.addEventListener("transitionend",j),S.original.getAttribute("data-zoom-src")){S.zoomedHd=S.zoomed.cloneNode(),S.zoomedHd.removeAttribute("srcset"),S.zoomedHd.removeAttribute("sizes"),S.zoomedHd.removeAttribute("loading"),S.zoomedHd.src=S.zoomed.getAttribute("data-zoom-src"),S.zoomedHd.onerror=function(){clearInterval(I),console.warn("Unable to reach the zoom image target "+S.zoomedHd.src),S.zoomedHd=null,M()};var I=setInterval(function(){S.zoomedHd.complete&&(clearInterval(I),S.zoomedHd.classList.add("medium-zoom-image--opened"),S.zoomedHd.addEventListener("click",v),document.body.appendChild(S.zoomedHd),M())},10)}else if(S.original.hasAttribute("srcset")){S.zoomedHd=S.zoomed.cloneNode(),S.zoomedHd.removeAttribute("sizes"),S.zoomedHd.removeAttribute("loading");var Y=S.zoomedHd.addEventListener("load",function(){S.zoomedHd.removeEventListener("load",Y),S.zoomedHd.classList.add("medium-zoom-image--opened"),S.zoomedHd.addEventListener("click",v),document.body.appendChild(S.zoomedHd),M()})}else M()})},v=function(){return new r(function(N){if(C||!S.original){N(L);return}var A=function M(){S.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(S.zoomed),S.zoomedHd&&document.body.removeChild(S.zoomedHd),document.body.removeChild(R),S.zoomed.classList.remove("medium-zoom-image--opened"),S.template&&document.body.removeChild(S.template),C=!1,S.zoomed.removeEventListener("transitionend",M),S.original.dispatchEvent(Ea("medium-zoom:closed",{detail:{zoom:L}})),S.original=null,S.zoomed=null,S.zoomedHd=null,S.template=null,N(L)};C=!0,document.body.classList.remove("medium-zoom--opened"),S.zoomed.style.transform="",S.zoomedHd&&(S.zoomedHd.style.transform=""),S.template&&(S.template.style.transition="opacity 150ms",S.template.style.opacity=0),S.original.dispatchEvent(Ea("medium-zoom:close",{detail:{zoom:L}})),S.zoomed.addEventListener("transitionend",A)})},g=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=N.target;return S.original?v():p({target:A})},w=function(){return E},m=function(){return _},b=function(){return S.original},_=[],y=[],C=!1,k=0,E=n,S={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(t)==="[object Object]"?E=t:(t||typeof t=="string")&&u(t),E=Uo({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},E);var R=OE(E.background);document.addEventListener("click",o),document.addEventListener("keyup",l),document.addEventListener("scroll",a),window.addEventListener("resize",v);var L={open:p,close:v,toggle:g,update:s,clone:i,attach:u,detach:d,on:f,off:h,getOptions:w,getImages:m,getZoomedImage:b};return L};function PE(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document=="undefined")){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",n==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var LE=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";PE(LE);var ME=IE;const RE=Symbol("mediumZoom");const NE=".theme-default-content > img, .theme-default-content :not(a) > img",DE={},FE=300;var VE=Ro({enhance({app:e,router:t}){const n=ME(DE);n.refresh=(r=NE)=>{n.detach(),n.attach(r)},e.provide(RE,n),t.afterEach(()=>{setTimeout(()=>n.refresh(),FE)})}});/** - * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT - */const Tt={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=Tt.isStarted();e=hc(e,Tt.settings.minimum,1),Tt.status=e===1?null:e;const n=Tt.render(!t),r=n.querySelector(Tt.settings.barSelector),o=Tt.settings.speed,a=Tt.settings.easing;return n.offsetWidth,BE(l=>{ri(r,{transform:"translate3d("+Jm(e)+"%,0,0)",transition:"all "+o+"ms "+a}),e===1?(ri(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){ri(n,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){Tt.remove(),l()},o)},o)):setTimeout(()=>l(),o)}),Tt},isStarted:()=>typeof Tt.status=="number",start:()=>{Tt.status||Tt.set(0);const e=()=>{setTimeout(()=>{!Tt.status||(Tt.trickle(),e())},Tt.settings.trickleSpeed)};return Tt.settings.trickle&&e(),Tt},done:e=>!e&&!Tt.status?Tt:Tt.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=Tt.status;return t?(typeof e!="number"&&(e=(1-t)*hc(Math.random()*t,.1,.95)),t=hc(t+e,0,.994),Tt.set(t)):Tt.start()},trickle:()=>Tt.inc(Math.random()*Tt.settings.trickleRate),render:e=>{if(Tt.isRendered())return document.getElementById("nprogress");Zm(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=Tt.settings.template;const n=t.querySelector(Tt.settings.barSelector),r=e?"-100":Jm(Tt.status||0),o=document.querySelector(Tt.settings.parent);return ri(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),o!==document.body&&Zm(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{Qm(document.documentElement,"nprogress-busy"),Qm(document.querySelector(Tt.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&zE(e)},isRendered:()=>!!document.getElementById("nprogress")},hc=(e,t,n)=>en?n:e,Jm=e=>(-1+e)*100,BE=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),ri=function(){const e=["Webkit","O","Moz","ms"],t={};function n(l){return l.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(s,i){return i.toUpperCase()})}function r(l){const s=document.body.style;if(l in s)return l;let i=e.length;const u=l.charAt(0).toUpperCase()+l.slice(1);let d;for(;i--;)if(d=e[i]+u,d in s)return d;return l}function o(l){return l=n(l),t[l]||(t[l]=r(l))}function a(l,s,i){s=o(s),l.style[s]=i}return function(l,s){for(const i in s){const u=s[i];u!==void 0&&Object.prototype.hasOwnProperty.call(s,i)&&a(l,i,u)}}}(),T0=(e,t)=>(typeof e=="string"?e:Tf(e)).indexOf(" "+t+" ")>=0,Zm=(e,t)=>{const n=Tf(e),r=n+t;T0(n,t)||(e.className=r.substring(1))},Qm=(e,t)=>{const n=Tf(e);if(!T0(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},Tf=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),zE=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const HE=()=>{dt(()=>{const e=Ef(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||Tt.start()}),e.afterEach(n=>{t.add(n.path),Tt.done()})})};var jE=Ro({setup(){HE()}});const WE=JSON.parse(`{"navbar":false,"sidebar":[{"text":"Next Trainer","link":"/"},{"text":"\u8bad\u7ec3","children":[{"text":"LoRA \u8bad\u7ec3","link":"/lora/index.md","collapsible":false,"children":[{"text":"Anima LoRA","link":"/lora/sd3.md"},{"text":"Flux","link":"/lora/flux.md"},{"text":"Stable Diffusion","link":"/lora/master.md"}]},{"text":"\u5168\u91cf\u5fae\u8c03","link":"/lora/anima-finetune.md","collapsible":false,"children":[{"text":"Anima Finetune","link":"/lora/anima-finetune.md"},{"text":"Stable Diffusion","link":"/dreambooth/index.md"}]}]},{"text":"\u5de5\u5177\u4e0e\u8c03\u8bd5","children":[{"text":"Tensorboard","link":"/tensorboard.md"},{"text":"\u6570\u636e\u96c6\u6253\u6807","link":"/tagger.md"},{"text":"\u7ecf\u5178\u6807\u7b7e\u7f16\u8f91","link":"/tageditor.md"},{"text":"\u539f\u751f\u6807\u7b7e\u7f16\u8f91","link":"/native-tageditor.html"},{"text":"LoRA \u811a\u672c\u5de5\u5177","link":"/lora/tools.md"}]},{"text":"\u5e2e\u52a9","children":[{"text":"\u65b0\u624b\u4e0a\u8def","link":"/help/guide.md"},{"text":"\u8bad\u7ec3\u53c2\u6570\u8bf4\u660e","link":"/lora/params.md"}]},{"text":"\u5176\u4ed6","collapsible":false,"children":[{"text":"UI \u8bbe\u7f6e","link":"/other/settings.md"},{"text":"\u5173\u4e8e","link":"/other/about.md"},{"text":"\u66f4\u65b0\u65e5\u5fd7","link":"/other/changelog.md"}]}],"locales":{"/":{"selectLanguageName":"English"}},"colorMode":"auto","colorModeSwitch":true,"logo":null,"repo":null,"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),x0=B(WE),UE=()=>x0;zp.webpackHot&&(__VUE_HMR_RUNTIME__.updateThemeData=e=>{x0.value=e});const O0=Symbol(""),KE=()=>{const e=Re(O0);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},qE=(e,t)=>{var n;return{...e,...(n=e.locales)==null?void 0:n[t]}};var YE=Ro({enhance({app:e}){const t=UE(),n=e._context.provides[Cf],r=O(()=>qE(t.value,n.value));e.provide(O0,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}}),St=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};const GE=se({__name:"Badge",props:{type:{type:String,required:!1,default:"tip"},text:{type:String,required:!1,default:""},vertical:{type:String,required:!1,default:void 0}},setup(e){return(t,n)=>(x(),U("span",{class:D(["badge",e.type]),style:Qe({verticalAlign:e.vertical})},[pe(t.$slots,"default",{},()=>[Je(Ee(e.text),1)])],6))}});var XE=St(GE,[["__file","Badge.vue"]]);const JE=se({name:"CodeGroup",setup(e,{slots:t}){const n=B(-1),r=B([]),o=(s=n.value)=>{s{s>0?n.value=s-1:n.value=r.value.length-1,r.value[n.value].focus()},l=(s,i)=>{s.key===" "||s.key==="Enter"?(s.preventDefault(),n.value=i):s.key==="ArrowRight"?(s.preventDefault(),o(i)):s.key==="ArrowLeft"&&(s.preventDefault(),a(i))};return()=>{var i;const s=(((i=t.default)==null?void 0:i.call(t))||[]).filter(u=>u.type.name==="CodeGroupItem").map(u=>(u.props===null&&(u.props={}),u));return s.length===0?null:(n.value<0||n.value>s.length-1?(n.value=s.findIndex(u=>u.props.active===""||u.props.active===!0),n.value===-1&&(n.value=0)):s.forEach((u,d)=>{u.props.active=d===n.value}),He("div",{class:"code-group"},[He("div",{class:"code-group__nav"},He("ul",{class:"code-group__ul"},s.map((u,d)=>{const f=d===n.value;return He("li",{class:"code-group__li"},He("button",{ref:h=>{h&&(r.value[d]=h)},class:{"code-group__nav-tab":!0,"code-group__nav-tab-active":f},ariaPressed:f,ariaExpanded:f,onClick:()=>n.value=d,onKeydown:h=>l(h,d)},u.props.title))}))),s]))}}}),ZE=["aria-selected"],QE=se({name:"CodeGroupItem"}),e$=se({...QE,props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},setup(e){return(t,n)=>(x(),U("div",{class:D(["code-group-item",{"code-group-item__active":e.active}]),"aria-selected":e.active},[pe(t.$slots,"default")],10,ZE))}});var t$=St(e$,[["__file","CodeGroupItem.vue"]]),n$=!0;function Ls(e){return Zg()?(Qg(e),!0):!1}var r$=Object.defineProperty,eh=Object.getOwnPropertySymbols,o$=Object.prototype.hasOwnProperty,a$=Object.prototype.propertyIsEnumerable,th=(e,t,n)=>t in e?r$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l$=(e,t)=>{for(var n in t||(t={}))o$.call(t,n)&&th(e,n,t[n]);if(eh)for(var n of eh(t))a$.call(t,n)&&th(e,n,t[n]);return e};function s$(e,t){if(typeof Symbol!="undefined"){const n=l$({},e);return Object.defineProperty(n,Symbol.iterator,{enumerable:!1,value(){let r=0;return{next:()=>({value:t[r++],done:r>t.length})}}}),n}else return Object.assign([...t],e)}function Jr(e){return typeof e=="function"?e():c(e)}const xt=typeof window!="undefined",ss=()=>{},A0=i$();function i$(){var e;return xt&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function I0(e,t){function n(...r){return new Promise((o,a)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(a)})}return n}const P0=e=>e();function u$(e,t={}){let n,r,o=ss;const a=s=>{clearTimeout(s),o(),o=ss};return s=>{const i=Jr(e),u=Jr(t.maxWait);return n&&a(n),i<=0||u!==void 0&&u<=0?(r&&(a(r),r=null),Promise.resolve(s())):new Promise((d,f)=>{o=t.rejectOnCancel?f:d,u&&!r&&(r=setTimeout(()=>{n&&a(n),r=null,d(s())},u)),n=setTimeout(()=>{r&&a(r),r=null,d(s())},i)})}}function c$(e=P0){const t=B(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...a)=>{t.value&&e(...a)};return{isActive:pa(t),pause:n,resume:r,eventFilter:o}}function d$(e){const t=Object.create(null);return n=>t[n]||(t[n]=e(n))}const f$=/-(\w)/g,p$=d$(e=>e.replace(f$,(t,n)=>n?n.toUpperCase():""));function m$(e,t=200,n={}){return I0(u$(t,n),e)}function h$(e,t=200,n={}){const r=B(e.value),o=m$(()=>{r.value=e.value},t,n);return $e(e,()=>o()),r}function ed(e,t,n={}){const{immediate:r=!0}=n,o=B(!1);let a=null;function l(){a&&(clearTimeout(a),a=null)}function s(){o.value=!1,l()}function i(...u){l(),o.value=!0,a=setTimeout(()=>{o.value=!1,a=null,e(...u)},Jr(t))}return r&&(o.value=!0,xt&&i()),Ls(s),{isPending:pa(o),start:i,stop:s}}function hG(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=mt(e),a=B(e);function l(s){if(arguments.length)return a.value=s,a.value;{const i=Jr(n);return a.value=a.value===i?Jr(r):i,a.value}}return o?l:[a,l]}var nh=Object.getOwnPropertySymbols,v$=Object.prototype.hasOwnProperty,g$=Object.prototype.propertyIsEnumerable,b$=(e,t)=>{var n={};for(var r in e)v$.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&nh)for(var r of nh(e))t.indexOf(r)<0&&g$.call(e,r)&&(n[r]=e[r]);return n};function y$(e,t,n={}){const r=n,{eventFilter:o=P0}=r,a=b$(r,["eventFilter"]);return $e(e,I0(o,t),a)}var _$=Object.defineProperty,w$=Object.defineProperties,C$=Object.getOwnPropertyDescriptors,lu=Object.getOwnPropertySymbols,L0=Object.prototype.hasOwnProperty,M0=Object.prototype.propertyIsEnumerable,rh=(e,t,n)=>t in e?_$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,k$=(e,t)=>{for(var n in t||(t={}))L0.call(t,n)&&rh(e,n,t[n]);if(lu)for(var n of lu(t))M0.call(t,n)&&rh(e,n,t[n]);return e},S$=(e,t)=>w$(e,C$(t)),E$=(e,t)=>{var n={};for(var r in e)L0.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&lu)for(var r of lu(e))t.indexOf(r)<0&&M0.call(e,r)&&(n[r]=e[r]);return n};function $$(e,t,n={}){const r=n,{eventFilter:o}=r,a=E$(r,["eventFilter"]),{eventFilter:l,pause:s,resume:i,isActive:u}=c$(o);return{stop:y$(e,t,S$(k$({},a),{eventFilter:l})),pause:s,resume:i,isActive:u}}var T$=Object.defineProperty,x$=Object.defineProperties,O$=Object.getOwnPropertyDescriptors,oh=Object.getOwnPropertySymbols,A$=Object.prototype.hasOwnProperty,I$=Object.prototype.propertyIsEnumerable,ah=(e,t,n)=>t in e?T$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,P$=(e,t)=>{for(var n in t||(t={}))A$.call(t,n)&&ah(e,n,t[n]);if(oh)for(var n of oh(t))I$.call(t,n)&&ah(e,n,t[n]);return e},L$=(e,t)=>x$(e,O$(t));function R0(e={}){if(!n$&&!qb.startsWith("2.7."))return;const{inheritAttrs:t=!0}=e,n=On(),r=se({setup(a,{slots:l}){return()=>{n.value=l.default}}}),o=se({inheritAttrs:t,setup(a,{attrs:l,slots:s}){return()=>{var i;n.value;const u=(i=n.value)==null?void 0:i.call(n,L$(P$({},M$(l)),{$slots:s}));return t&&(u==null?void 0:u.length)===1?u[0]:u}}});return s$({define:r,reuse:o},[r,o])}function M$(e){const t={};for(const n in e)t[p$(n)]=e[n];return t}function Kr(e){var t;const n=Jr(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Ja=xt?window:void 0;xt&&window.document;xt&&window.navigator;xt&&window.location;function An(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=Ja):[t,n,r,o]=e,!t)return ss;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],l=()=>{a.forEach(d=>d()),a.length=0},s=(d,f,h,p)=>(d.addEventListener(f,h,p),()=>d.removeEventListener(f,h,p)),i=$e(()=>[Kr(t),Jr(o)],([d,f])=>{l(),d&&a.push(...n.flatMap(h=>r.map(p=>s(d,h,p,f))))},{immediate:!0,flush:"post"}),u=()=>{i(),l()};return Ls(u),u}let lh=!1;function N0(e,t,n={}){const{window:r=Ja,ignore:o=[],capture:a=!0,detectIframe:l=!1}=n;if(!r)return;A0&&!lh&&(lh=!0,Array.from(r.document.body.children).forEach(h=>h.addEventListener("click",ss)),r.document.documentElement.addEventListener("click",ss));let s=!0;const i=h=>o.some(p=>{if(typeof p=="string")return Array.from(r.document.querySelectorAll(p)).some(v=>v===h.target||h.composedPath().includes(v));{const v=Kr(p);return v&&(h.target===v||h.composedPath().includes(v))}}),d=[An(r,"click",h=>{const p=Kr(e);if(!(!p||p===h.target||h.composedPath().includes(p))){if(h.detail===0&&(s=!i(h)),!s){s=!0;return}t(h)}},{passive:!0,capture:a}),An(r,"pointerdown",h=>{const p=Kr(e);p&&(s=!h.composedPath().includes(p)&&!i(h))},{passive:!0}),l&&An(r,"blur",h=>{setTimeout(()=>{var p;const v=Kr(e);((p=r.document.activeElement)==null?void 0:p.tagName)==="IFRAME"&&!(v!=null&&v.contains(r.document.activeElement))&&t(h)},0)})].filter(Boolean);return()=>d.forEach(h=>h())}function R$(){const e=B(!1);return lt()&&dt(()=>{e.value=!0}),e}function D0(e){const t=R$();return O(()=>(t.value,Boolean(e())))}function N$(e,t={}){const{window:n=Ja}=t,r=D0(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const a=B(!1),l=u=>{a.value=u.matches},s=()=>{!o||("removeEventListener"in o?o.removeEventListener("change",l):o.removeListener(l))},i=qr(()=>{!r.value||(s(),o=n.matchMedia(Jr(e)),"addEventListener"in o?o.addEventListener("change",l):o.addListener(l),a.value=o.matches)});return Ls(()=>{i(),s(),o=void 0}),a}const oi=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},ai="__vueuse_ssr_handlers__",D$=F$();function F$(){return ai in oi||(oi[ai]=oi[ai]||{}),oi[ai]}function V$(e,t){return D$[e]||t}function B$(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}var z$=Object.defineProperty,sh=Object.getOwnPropertySymbols,H$=Object.prototype.hasOwnProperty,j$=Object.prototype.propertyIsEnumerable,ih=(e,t,n)=>t in e?z$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uh=(e,t)=>{for(var n in t||(t={}))H$.call(t,n)&&ih(e,n,t[n]);if(sh)for(var n of sh(t))j$.call(t,n)&&ih(e,n,t[n]);return e};const W$={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},ch="vueuse-storage";function U$(e,t,n,r={}){var o;const{flush:a="pre",deep:l=!0,listenToStorageChanges:s=!0,writeDefaults:i=!0,mergeDefaults:u=!1,shallow:d,window:f=Ja,eventFilter:h,onError:p=S=>{console.error(S)}}=r,v=(d?On:B)(t);if(!n)try{n=V$("getDefaultStorage",()=>{var S;return(S=Ja)==null?void 0:S.localStorage})()}catch(S){p(S)}if(!n)return v;const g=Jr(t),w=B$(g),m=(o=r.serializer)!=null?o:W$[w],{pause:b,resume:_}=$$(v,()=>y(v.value),{flush:a,deep:l,eventFilter:h});return f&&s&&(An(f,"storage",E),An(f,ch,k)),E(),v;function y(S){try{if(S==null)n.removeItem(e);else{const R=m.write(S),L=n.getItem(e);L!==R&&(n.setItem(e,R),f&&f.dispatchEvent(new CustomEvent(ch,{detail:{key:e,oldValue:L,newValue:R,storageArea:n}})))}}catch(R){p(R)}}function C(S){const R=S?S.newValue:n.getItem(e);if(R==null)return i&&g!==null&&n.setItem(e,m.write(g)),g;if(!S&&u){const L=m.read(R);return typeof u=="function"?u(L,g):w==="object"&&!Array.isArray(L)?uh(uh({},g),L):L}else return typeof R!="string"?R:m.read(R)}function k(S){E(S.detail)}function E(S){if(!(S&&S.storageArea!==n)){if(S&&S.key==null){v.value=g;return}if(!(S&&S.key!==e)){b();try{v.value=C(S)}catch(R){p(R)}finally{S?qe(_):_()}}}}}function K$(e){return N$("(prefers-color-scheme: dark)",e)}var dh=Object.getOwnPropertySymbols,q$=Object.prototype.hasOwnProperty,Y$=Object.prototype.propertyIsEnumerable,G$=(e,t)=>{var n={};for(var r in e)q$.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&dh)for(var r of dh(e))t.indexOf(r)<0&&Y$.call(e,r)&&(n[r]=e[r]);return n};function xo(e,t,n={}){const r=n,{window:o=Ja}=r,a=G$(r,["window"]);let l;const s=D0(()=>o&&"ResizeObserver"in o),i=()=>{l&&(l.disconnect(),l=void 0)},u=O(()=>Array.isArray(e)?e.map(h=>Kr(h)):[Kr(e)]),d=$e(u,h=>{if(i(),s.value&&o){l=new ResizeObserver(t);for(const p of h)p&&l.observe(p,a)}},{immediate:!0,flush:"post",deep:!0}),f=()=>{i(),d()};return Ls(f),{isSupported:s,stop:f}}const F0=Symbol(""),vG=()=>{const e=Re(F0);if(!e)throw new Error("useDarkMode() is called without provider.");return e},X$=()=>{const e=H0(),t=K$(),n=U$("vuepress-color-scheme",e.value.colorMode),r=O({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?n.value="auto":n.value=o?"dark":"light"}});yt(F0,r),J$(r)},J$=e=>{const t=(n=e.value)=>{const r=window==null?void 0:window.document.querySelector("html");r==null||r.classList.toggle("dark",n)};dt(()=>{$e(e,t,{immediate:!0})}),Mo(()=>t())},V0=(...e)=>{const n=Ef().resolve(...e),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:o}=r,a=Ke(o)?o(n):o,l=Ge(a)?{path:a}:a;return V0({hash:n.hash,query:n.query,params:n.params,...l})},Z$=e=>{const t=V0(encodeURI(e));return{text:t.meta.title||e,link:t.name==="404"?e:t.fullPath}};let vc=null,$l=null;const Q$={wait:()=>vc,pending:()=>{vc=new Promise(e=>$l=e)},resolve:()=>{$l==null||$l(),vc=null,$l=null}},eT=()=>Q$,B0=Symbol("sidebarItems"),gG=()=>{const e=Re(B0);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},tT=()=>{const e=H0(),t=rS(),n=O(()=>nT(t.value,e.value));yt(B0,n)},nT=(e,t)=>{var o,a,l,s;const n=(a=(o=e.sidebar)!=null?o:t.sidebar)!=null?a:"auto",r=(s=(l=e.sidebarDepth)!=null?l:t.sidebarDepth)!=null?s:2;return e.home||n===!1?[]:n==="auto"?oT(r):De(n)?z0(n,r):l0(n)?aT(n,r):[]},rT=(e,t)=>({text:e.title,link:`#${e.slug}`,children:xf(e.children,t)}),xf=(e,t)=>t>0?e.map(n=>rT(n,t-1)):[],oT=e=>{const t=Ps();return[{text:t.value.title,children:xf(t.value.headers,e)}]},z0=(e,t)=>{const n=$f(),r=Ps(),o=a=>{var s;let l;if(Ge(a)?l=Z$(a):l=a,l.children)return{...l,children:l.children.map(i=>o(i))};if(l.link===n.path){const i=((s=r.value.headers[0])==null?void 0:s.level)===1?r.value.headers[0].children:r.value.headers;return{...l,children:xf(i,t)}}return l};return e.map(a=>o(a))},aT=(e,t)=>{var a;const n=$f(),r=s0(e,n.path),o=(a=e[r])!=null?a:[];return z0(o,t)},H0=()=>KE();var lT=Ro({enhance({app:e,router:t}){e.component("Badge",XE),e.component("CodeGroup",JE),e.component("CodeGroupItem",t$),e.component("AutoLinkExternalIcon",()=>{const r=e.component("ExternalLinkIcon");return r?He(r):null}),e.component("NavbarSearch",()=>{const r=e.component("Docsearch")||e.component("SearchBox");return r?He(r):null});const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...r)=>(await eT().wait(),n(...r))},setup(){X$(),tT()}});function j0(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}let ma=j0();function sT(e){ma=e}const W0=/[&<>"']/,iT=new RegExp(W0.source,"g"),U0=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,uT=new RegExp(U0.source,"g"),cT={"&":"&","<":"<",">":">",'"':""","'":"'"},fh=e=>cT[e];function dn(e,t){if(t){if(W0.test(e))return e.replace(iT,fh)}else if(U0.test(e))return e.replace(uT,fh);return e}const dT=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function K0(e){return e.replace(dT,(t,n)=>(n=n.toLowerCase(),n==="colon"?":":n.charAt(0)==="#"?n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1)):""))}const fT=/(^|[^\[])\^/g;function Mt(e,t){e=typeof e=="string"?e:e.source,t=t||"";const n={replace:(r,o)=>(o=o.source||o,o=o.replace(fT,"$1"),e=e.replace(r,o),n),getRegex:()=>new RegExp(e,t)};return n}const pT=/[^\w:]/g,mT=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function ph(e,t,n){if(e){let r;try{r=decodeURIComponent(K0(n)).replace(pT,"").toLowerCase()}catch{return null}if(r.indexOf("javascript:")===0||r.indexOf("vbscript:")===0||r.indexOf("data:")===0)return null}t&&!mT.test(n)&&(n=bT(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch{return null}return n}const li={},hT=/^[^:]+:\/*[^/]*$/,vT=/^([^:]+:)[\s\S]*$/,gT=/^([^:]+:\/*[^/]*)[\s\S]*$/;function bT(e,t){li[" "+e]||(hT.test(e)?li[" "+e]=e+"/":li[" "+e]=Ii(e,"/",!0)),e=li[" "+e];const n=e.indexOf(":")===-1;return t.substring(0,2)==="//"?n?t:e.replace(vT,"$1")+t:t.charAt(0)==="/"?n?t:e.replace(gT,"$1")+t:e+t}const su={exec:function(){}};function mh(e,t){const n=e.replace(/\|/g,(a,l,s)=>{let i=!1,u=l;for(;--u>=0&&s[u]==="\\";)i=!i;return i?"|":" |"}),r=n.split(/ \|/);let o=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),r.length>t)r.splice(t);else for(;r.length1;)t&1&&(n+=e),t>>=1,e+=e;return n+e}function vh(e,t,n,r){const o=t.href,a=t.title?dn(t.title):null,l=e[1].replace(/\\([\[\]])/g,"$1");if(e[0].charAt(0)!=="!"){r.state.inLink=!0;const s={type:"link",raw:n,href:o,title:a,text:l,tokens:r.inlineTokens(l)};return r.state.inLink=!1,s}return{type:"image",raw:n,href:o,title:a,text:dn(l)}}function wT(e,t){const n=e.match(/^(\s+)(?:```)/);if(n===null)return t;const r=n[1];return t.split(` -`).map(o=>{const a=o.match(/^\s+/);if(a===null)return o;const[l]=a;return l.length>=r.length?o.slice(r.length):o}).join(` -`)}class Of{constructor(t){this.options=t||ma}space(t){const n=this.rules.block.newline.exec(t);if(n&&n[0].length>0)return{type:"space",raw:n[0]}}code(t){const n=this.rules.block.code.exec(t);if(n){const r=n[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?r:Ii(r,` -`)}}}fences(t){const n=this.rules.block.fences.exec(t);if(n){const r=n[0],o=wT(r,n[3]||"");return{type:"code",raw:r,lang:n[2]?n[2].trim().replace(this.rules.inline._escapes,"$1"):n[2],text:o}}}heading(t){const n=this.rules.block.heading.exec(t);if(n){let r=n[2].trim();if(/#$/.test(r)){const o=Ii(r,"#");(this.options.pedantic||!o||/ $/.test(o))&&(r=o.trim())}return{type:"heading",raw:n[0],depth:n[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){const n=this.rules.block.hr.exec(t);if(n)return{type:"hr",raw:n[0]}}blockquote(t){const n=this.rules.block.blockquote.exec(t);if(n){const r=n[0].replace(/^ *>[ \t]?/gm,""),o=this.lexer.state.top;this.lexer.state.top=!0;const a=this.lexer.blockTokens(r);return this.lexer.state.top=o,{type:"blockquote",raw:n[0],tokens:a,text:r}}}list(t){let n=this.rules.block.list.exec(t);if(n){let r,o,a,l,s,i,u,d,f,h,p,v,g=n[1].trim();const w=g.length>1,m={type:"list",raw:"",ordered:w,start:w?+g.slice(0,-1):"",loose:!1,items:[]};g=w?`\\d{1,9}\\${g.slice(-1)}`:`\\${g}`,this.options.pedantic&&(g=w?g:"[*+-]");const b=new RegExp(`^( {0,3}${g})((?:[ ][^\\n]*)?(?:\\n|$))`);for(;t&&(v=!1,!(!(n=b.exec(t))||this.rules.block.hr.test(t)));){if(r=n[0],t=t.substring(r.length),d=n[2].split(` -`,1)[0].replace(/^\t+/,y=>" ".repeat(3*y.length)),f=t.split(` -`,1)[0],this.options.pedantic?(l=2,p=d.trimLeft()):(l=n[2].search(/[^ ]/),l=l>4?1:l,p=d.slice(l),l+=n[1].length),i=!1,!d&&/^ *$/.test(f)&&(r+=f+` -`,t=t.substring(f.length+1),v=!0),!v){const y=new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),C=new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),k=new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\`\`\`|~~~)`),E=new RegExp(`^ {0,${Math.min(3,l-1)}}#`);for(;t&&(h=t.split(` -`,1)[0],f=h,this.options.pedantic&&(f=f.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!(k.test(f)||E.test(f)||y.test(f)||C.test(t)));){if(f.search(/[^ ]/)>=l||!f.trim())p+=` -`+f.slice(l);else{if(i||d.search(/[^ ]/)>=4||k.test(d)||E.test(d)||C.test(d))break;p+=` -`+f}!i&&!f.trim()&&(i=!0),r+=h+` -`,t=t.substring(h.length+1),d=f.slice(l)}}m.loose||(u?m.loose=!0:/\n *\n *$/.test(r)&&(u=!0)),this.options.gfm&&(o=/^\[[ xX]\] /.exec(p),o&&(a=o[0]!=="[ ] ",p=p.replace(/^\[[ xX]\] +/,""))),m.items.push({type:"list_item",raw:r,task:!!o,checked:a,loose:!1,text:p}),m.raw+=r}m.items[m.items.length-1].raw=r.trimRight(),m.items[m.items.length-1].text=p.trimRight(),m.raw=m.raw.trimRight();const _=m.items.length;for(s=0;s<_;s++)if(this.lexer.state.top=!1,m.items[s].tokens=this.lexer.blockTokens(m.items[s].text,[]),!m.loose){const y=m.items[s].tokens.filter(k=>k.type==="space"),C=y.length>0&&y.some(k=>/\n.*\n/.test(k.raw));m.loose=C}if(m.loose)for(s=0;s<_;s++)m.items[s].loose=!0;return m}}html(t){const n=this.rules.block.html.exec(t);if(n){const r={type:"html",raw:n[0],pre:!this.options.sanitizer&&(n[1]==="pre"||n[1]==="script"||n[1]==="style"),text:n[0]};if(this.options.sanitize){const o=this.options.sanitizer?this.options.sanitizer(n[0]):dn(n[0]);r.type="paragraph",r.text=o,r.tokens=this.lexer.inline(o)}return r}}def(t){const n=this.rules.block.def.exec(t);if(n){const r=n[1].toLowerCase().replace(/\s+/g," "),o=n[2]?n[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",a=n[3]?n[3].substring(1,n[3].length-1).replace(this.rules.inline._escapes,"$1"):n[3];return{type:"def",tag:r,raw:n[0],href:o,title:a}}}table(t){const n=this.rules.block.table.exec(t);if(n){const r={type:"table",header:mh(n[1]).map(o=>({text:o})),align:n[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:n[3]&&n[3].trim()?n[3].replace(/\n[ \t]*$/,"").split(` -`):[]};if(r.header.length===r.align.length){r.raw=n[0];let o=r.align.length,a,l,s,i;for(a=0;a({text:u}));for(o=r.header.length,l=0;l/i.test(n[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(n[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(n[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:n[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):dn(n[0]):n[0]}}link(t){const n=this.rules.inline.link.exec(t);if(n){const r=n[2].trim();if(!this.options.pedantic&&/^$/.test(r))return;const l=Ii(r.slice(0,-1),"\\");if((r.length-l.length)%2===0)return}else{const l=yT(n[2],"()");if(l>-1){const i=(n[0].indexOf("!")===0?5:4)+n[1].length+l;n[2]=n[2].substring(0,l),n[0]=n[0].substring(0,i).trim(),n[3]=""}}let o=n[2],a="";if(this.options.pedantic){const l=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o);l&&(o=l[1],a=l[3])}else a=n[3]?n[3].slice(1,-1):"";return o=o.trim(),/^$/.test(r)?o=o.slice(1):o=o.slice(1,-1)),vh(n,{href:o&&o.replace(this.rules.inline._escapes,"$1"),title:a&&a.replace(this.rules.inline._escapes,"$1")},n[0],this.lexer)}}reflink(t,n){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let o=(r[2]||r[1]).replace(/\s+/g," ");if(o=n[o.toLowerCase()],!o){const a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return vh(r,o,r[0],this.lexer)}}emStrong(t,n,r=""){let o=this.rules.inline.emStrong.lDelim.exec(t);if(!o||o[3]&&r.match(/[\p{L}\p{N}]/u))return;const a=o[1]||o[2]||"";if(!a||a&&(r===""||this.rules.inline.punctuation.exec(r))){const l=o[0].length-1;let s,i,u=l,d=0;const f=o[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(f.lastIndex=0,n=n.slice(-1*t.length+l);(o=f.exec(n))!=null;){if(s=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!s)continue;if(i=s.length,o[3]||o[4]){u+=i;continue}else if((o[5]||o[6])&&l%3&&!((l+i)%3)){d+=i;continue}if(u-=i,u>0)continue;i=Math.min(i,i+u+d);const h=t.slice(0,l+o.index+(o[0].length-s.length)+i);if(Math.min(l,i)%2){const v=h.slice(1,-1);return{type:"em",raw:h,text:v,tokens:this.lexer.inlineTokens(v)}}const p=h.slice(2,-2);return{type:"strong",raw:h,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(t){const n=this.rules.inline.code.exec(t);if(n){let r=n[2].replace(/\n/g," ");const o=/[^ ]/.test(r),a=/^ /.test(r)&&/ $/.test(r);return o&&a&&(r=r.substring(1,r.length-1)),r=dn(r,!0),{type:"codespan",raw:n[0],text:r}}}br(t){const n=this.rules.inline.br.exec(t);if(n)return{type:"br",raw:n[0]}}del(t){const n=this.rules.inline.del.exec(t);if(n)return{type:"del",raw:n[0],text:n[2],tokens:this.lexer.inlineTokens(n[2])}}autolink(t,n){const r=this.rules.inline.autolink.exec(t);if(r){let o,a;return r[2]==="@"?(o=dn(this.options.mangle?n(r[1]):r[1]),a="mailto:"+o):(o=dn(r[1]),a=o),{type:"link",raw:r[0],text:o,href:a,tokens:[{type:"text",raw:o,text:o}]}}}url(t,n){let r;if(r=this.rules.inline.url.exec(t)){let o,a;if(r[2]==="@")o=dn(this.options.mangle?n(r[0]):r[0]),a="mailto:"+o;else{let l;do l=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])[0];while(l!==r[0]);o=dn(r[0]),r[1]==="www."?a="http://"+r[0]:a=r[0]}return{type:"link",raw:r[0],text:o,href:a,tokens:[{type:"text",raw:o,text:o}]}}}inlineText(t,n){const r=this.rules.inline.text.exec(t);if(r){let o;return this.lexer.state.inRawBlock?o=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):dn(r[0]):r[0]:o=dn(this.options.smartypants?n(r[0]):r[0]),{type:"text",raw:r[0],text:o}}}}const ot={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:su,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};ot._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/;ot._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;ot.def=Mt(ot.def).replace("label",ot._label).replace("title",ot._title).getRegex();ot.bullet=/(?:[*+-]|\d{1,9}[.)])/;ot.listItemStart=Mt(/^( *)(bull) */).replace("bull",ot.bullet).getRegex();ot.list=Mt(ot.list).replace(/bull/g,ot.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+ot.def.source+")").getRegex();ot._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";ot._comment=/|$)/;ot.html=Mt(ot.html,"i").replace("comment",ot._comment).replace("tag",ot._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();ot.paragraph=Mt(ot._paragraph).replace("hr",ot.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",ot._tag).getRegex();ot.blockquote=Mt(ot.blockquote).replace("paragraph",ot.paragraph).getRegex();ot.normal={...ot};ot.gfm={...ot.normal,table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"};ot.gfm.table=Mt(ot.gfm.table).replace("hr",ot.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",ot._tag).getRegex();ot.gfm.paragraph=Mt(ot._paragraph).replace("hr",ot.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",ot.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",ot._tag).getRegex();ot.pedantic={...ot.normal,html:Mt(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ot._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:su,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Mt(ot.normal._paragraph).replace("hr",ot.hr).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",ot.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()};const Ue={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:su,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:su,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~";Ue.punctuation=Mt(Ue.punctuation).replace(/punctuation/g,Ue._punctuation).getRegex();Ue.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;Ue.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g;Ue._comment=Mt(ot._comment).replace("(?:-->|$)","-->").getRegex();Ue.emStrong.lDelim=Mt(Ue.emStrong.lDelim).replace(/punct/g,Ue._punctuation).getRegex();Ue.emStrong.rDelimAst=Mt(Ue.emStrong.rDelimAst,"g").replace(/punct/g,Ue._punctuation).getRegex();Ue.emStrong.rDelimUnd=Mt(Ue.emStrong.rDelimUnd,"g").replace(/punct/g,Ue._punctuation).getRegex();Ue._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;Ue._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;Ue._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;Ue.autolink=Mt(Ue.autolink).replace("scheme",Ue._scheme).replace("email",Ue._email).getRegex();Ue._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;Ue.tag=Mt(Ue.tag).replace("comment",Ue._comment).replace("attribute",Ue._attribute).getRegex();Ue._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;Ue._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;Ue._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;Ue.link=Mt(Ue.link).replace("label",Ue._label).replace("href",Ue._href).replace("title",Ue._title).getRegex();Ue.reflink=Mt(Ue.reflink).replace("label",Ue._label).replace("ref",ot._label).getRegex();Ue.nolink=Mt(Ue.nolink).replace("ref",ot._label).getRegex();Ue.reflinkSearch=Mt(Ue.reflinkSearch,"g").replace("reflink",Ue.reflink).replace("nolink",Ue.nolink).getRegex();Ue.normal={...Ue};Ue.pedantic={...Ue.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:Mt(/^!?\[(label)\]\((.*?)\)/).replace("label",Ue._label).getRegex(),reflink:Mt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ue._label).getRegex()};Ue.gfm={...Ue.normal,escape:Mt(Ue.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(r="x"+r.toString(16)),t+="&#"+r+";";return t}class Oo{constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||ma,this.options.tokenizer=this.options.tokenizer||new Of,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const n={block:ot.normal,inline:Ue.normal};this.options.pedantic?(n.block=ot.pedantic,n.inline=Ue.pedantic):this.options.gfm&&(n.block=ot.gfm,this.options.breaks?n.inline=Ue.breaks:n.inline=Ue.gfm),this.tokenizer.rules=n}static get rules(){return{block:ot,inline:Ue}}static lex(t,n){return new Oo(n).lex(t)}static lexInline(t,n){return new Oo(n).inlineTokens(t)}lex(t){t=t.replace(/\r\n|\r/g,` -`),this.blockTokens(t,this.tokens);let n;for(;n=this.inlineQueue.shift();)this.inlineTokens(n.src,n.tokens);return this.tokens}blockTokens(t,n=[]){this.options.pedantic?t=t.replace(/\t/g," ").replace(/^ +$/gm,""):t=t.replace(/^( *)(\t+)/gm,(s,i,u)=>i+" ".repeat(u.length));let r,o,a,l;for(;t;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(s=>(r=s.call({lexer:this},t,n))?(t=t.substring(r.raw.length),n.push(r),!0):!1))){if(r=this.tokenizer.space(t)){t=t.substring(r.raw.length),r.raw.length===1&&n.length>0?n[n.length-1].raw+=` -`:n.push(r);continue}if(r=this.tokenizer.code(t)){t=t.substring(r.raw.length),o=n[n.length-1],o&&(o.type==="paragraph"||o.type==="text")?(o.raw+=` -`+r.raw,o.text+=` -`+r.text,this.inlineQueue[this.inlineQueue.length-1].src=o.text):n.push(r);continue}if(r=this.tokenizer.fences(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.heading(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.hr(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.blockquote(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.list(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.html(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.def(t)){t=t.substring(r.raw.length),o=n[n.length-1],o&&(o.type==="paragraph"||o.type==="text")?(o.raw+=` -`+r.raw,o.text+=` -`+r.raw,this.inlineQueue[this.inlineQueue.length-1].src=o.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.lheading(t)){t=t.substring(r.raw.length),n.push(r);continue}if(a=t,this.options.extensions&&this.options.extensions.startBlock){let s=1/0;const i=t.slice(1);let u;this.options.extensions.startBlock.forEach(function(d){u=d.call({lexer:this},i),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=t.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(a))){o=n[n.length-1],l&&o.type==="paragraph"?(o.raw+=` -`+r.raw,o.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=o.text):n.push(r),l=a.length!==t.length,t=t.substring(r.raw.length);continue}if(r=this.tokenizer.text(t)){t=t.substring(r.raw.length),o=n[n.length-1],o&&o.type==="text"?(o.raw+=` -`+r.raw,o.text+=` -`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=o.text):n.push(r);continue}if(t){const s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){let r,o,a,l=t,s,i,u;if(this.tokens.links){const d=Object.keys(this.tokens.links);if(d.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(l))!=null;)d.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,s.index)+"["+hh("a",s[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.blockSkip.exec(l))!=null;)l=l.slice(0,s.index)+"["+hh("a",s[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(s=this.tokenizer.rules.inline.escapedEmSt.exec(l))!=null;)l=l.slice(0,s.index+s[0].length-2)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;t;)if(i||(u=""),i=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(d=>(r=d.call({lexer:this},t,n))?(t=t.substring(r.raw.length),n.push(r),!0):!1))){if(r=this.tokenizer.escape(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.tag(t)){t=t.substring(r.raw.length),o=n[n.length-1],o&&r.type==="text"&&o.type==="text"?(o.raw+=r.raw,o.text+=r.text):n.push(r);continue}if(r=this.tokenizer.link(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(r.raw.length),o=n[n.length-1],o&&r.type==="text"&&o.type==="text"?(o.raw+=r.raw,o.text+=r.text):n.push(r);continue}if(r=this.tokenizer.emStrong(t,l,u)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.codespan(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.br(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.del(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.autolink(t,gh)){t=t.substring(r.raw.length),n.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(t,gh))){t=t.substring(r.raw.length),n.push(r);continue}if(a=t,this.options.extensions&&this.options.extensions.startInline){let d=1/0;const f=t.slice(1);let h;this.options.extensions.startInline.forEach(function(p){h=p.call({lexer:this},f),typeof h=="number"&&h>=0&&(d=Math.min(d,h))}),d<1/0&&d>=0&&(a=t.substring(0,d+1))}if(r=this.tokenizer.inlineText(a,CT)){t=t.substring(r.raw.length),r.raw.slice(-1)!=="_"&&(u=r.raw.slice(-1)),i=!0,o=n[n.length-1],o&&o.type==="text"?(o.raw+=r.raw,o.text+=r.text):n.push(r);continue}if(t){const d="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(d);break}else throw new Error(d)}}return n}}class Af{constructor(t){this.options=t||ma}code(t,n,r){const o=(n||"").match(/\S*/)[0];if(this.options.highlight){const a=this.options.highlight(t,o);a!=null&&a!==t&&(r=!0,t=a)}return t=t.replace(/\n$/,"")+` -`,o?'
'+(r?t:dn(t,!0))+`
-`:"
"+(r?t:dn(t,!0))+`
-`}blockquote(t){return`
-${t}
-`}html(t){return t}heading(t,n,r,o){if(this.options.headerIds){const a=this.options.headerPrefix+o.slug(r);return`${t} -`}return`${t} -`}hr(){return this.options.xhtml?`
-`:`
-`}list(t,n,r){const o=n?"ol":"ul",a=n&&r!==1?' start="'+r+'"':"";return"<"+o+a+`> -`+t+" -`}listitem(t){return`
  • ${t}
  • -`}checkbox(t){return" "}paragraph(t){return`

    ${t}

    -`}table(t,n){return n&&(n=`${n}`),` - -`+t+` -`+n+`
    -`}tablerow(t){return` -${t} -`}tablecell(t,n){const r=n.header?"th":"td";return(n.align?`<${r} align="${n.align}">`:`<${r}>`)+t+` -`}strong(t){return`${t}`}em(t){return`${t}`}codespan(t){return`${t}`}br(){return this.options.xhtml?"
    ":"
    "}del(t){return`${t}`}link(t,n,r){if(t=ph(this.options.sanitize,this.options.baseUrl,t),t===null)return r;let o='",o}image(t,n,r){if(t=ph(this.options.sanitize,this.options.baseUrl,t),t===null)return r;let o=`${r}":">",o}text(t){return t}}class q0{strong(t){return t}em(t){return t}codespan(t){return t}del(t){return t}html(t){return t}text(t){return t}link(t,n,r){return""+r}image(t,n,r){return""+r}br(){return""}}class Y0{constructor(){this.seen={}}serialize(t){return t.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(t,n){let r=t,o=0;if(this.seen.hasOwnProperty(r)){o=this.seen[t];do o++,r=t+"-"+o;while(this.seen.hasOwnProperty(r))}return n||(this.seen[t]=o,this.seen[r]=0),r}slug(t,n={}){const r=this.serialize(t);return this.getNextSafeSlug(r,n.dryrun)}}class Ao{constructor(t){this.options=t||ma,this.options.renderer=this.options.renderer||new Af,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new q0,this.slugger=new Y0}static parse(t,n){return new Ao(n).parse(t)}static parseInline(t,n){return new Ao(n).parseInline(t)}parse(t,n=!0){let r="",o,a,l,s,i,u,d,f,h,p,v,g,w,m,b,_,y,C,k;const E=t.length;for(o=0;o0&&b.tokens[0].type==="paragraph"?(b.tokens[0].text=C+" "+b.tokens[0].text,b.tokens[0].tokens&&b.tokens[0].tokens.length>0&&b.tokens[0].tokens[0].type==="text"&&(b.tokens[0].tokens[0].text=C+" "+b.tokens[0].tokens[0].text)):b.tokens.unshift({type:"text",text:C}):m+=C),m+=this.parse(b.tokens,w),h+=this.renderer.listitem(m,y,_);r+=this.renderer.list(h,v,g);continue}case"html":{r+=this.renderer.html(p.text);continue}case"paragraph":{r+=this.renderer.paragraph(this.parseInline(p.tokens));continue}case"text":{for(h=p.tokens?this.parseInline(p.tokens):p.text;o+1{if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,e){const o="

    An error occurred:

    "+dn(r.message+"",!0)+"
    ";if(t)return Promise.resolve(o);if(n){n(null,o);return}return o}if(t)return Promise.reject(r);if(n){n(r);return}throw r}}function G0(e,t){return(n,r,o)=>{typeof r=="function"&&(o=r,r=null);const a={...r};r={...rt.defaults,...a};const l=kT(r.silent,r.async,o);if(typeof n=="undefined"||n===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(_T(r),r.hooks&&(r.hooks.options=r),o){const s=r.highlight;let i;try{r.hooks&&(n=r.hooks.preprocess(n)),i=e(n,r)}catch(f){return l(f)}const u=function(f){let h;if(!f)try{r.walkTokens&&rt.walkTokens(i,r.walkTokens),h=t(i,r),r.hooks&&(h=r.hooks.postprocess(h))}catch(p){f=p}return r.highlight=s,f?l(f):o(null,h)};if(!s||s.length<3||(delete r.highlight,!i.length))return u();let d=0;rt.walkTokens(i,function(f){f.type==="code"&&(d++,setTimeout(()=>{s(f.text,f.lang,function(h,p){if(h)return u(h);p!=null&&p!==f.text&&(f.text=p,f.escaped=!0),d--,d===0&&u()})},0))}),d===0&&u();return}if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(n):n).then(s=>e(s,r)).then(s=>r.walkTokens?Promise.all(rt.walkTokens(s,r.walkTokens)).then(()=>s):s).then(s=>t(s,r)).then(s=>r.hooks?r.hooks.postprocess(s):s).catch(l);try{r.hooks&&(n=r.hooks.preprocess(n));const s=e(n,r);r.walkTokens&&rt.walkTokens(s,r.walkTokens);let i=t(s,r);return r.hooks&&(i=r.hooks.postprocess(i)),i}catch(s){return l(s)}}}function rt(e,t,n){return G0(Oo.lex,Ao.parse)(e,t,n)}rt.options=rt.setOptions=function(e){return rt.defaults={...rt.defaults,...e},sT(rt.defaults),rt};rt.getDefaults=j0;rt.defaults=ma;rt.use=function(...e){const t=rt.defaults.extensions||{renderers:{},childTokens:{}};e.forEach(n=>{const r={...n};if(r.async=rt.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(o=>{if(!o.name)throw new Error("extension name required");if(o.renderer){const a=t.renderers[o.name];a?t.renderers[o.name]=function(...l){let s=o.renderer.apply(this,l);return s===!1&&(s=a.apply(this,l)),s}:t.renderers[o.name]=o.renderer}if(o.tokenizer){if(!o.level||o.level!=="block"&&o.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");t[o.level]?t[o.level].unshift(o.tokenizer):t[o.level]=[o.tokenizer],o.start&&(o.level==="block"?t.startBlock?t.startBlock.push(o.start):t.startBlock=[o.start]:o.level==="inline"&&(t.startInline?t.startInline.push(o.start):t.startInline=[o.start]))}o.childTokens&&(t.childTokens[o.name]=o.childTokens)}),r.extensions=t),n.renderer){const o=rt.defaults.renderer||new Af;for(const a in n.renderer){const l=o[a];o[a]=(...s)=>{let i=n.renderer[a].apply(o,s);return i===!1&&(i=l.apply(o,s)),i}}r.renderer=o}if(n.tokenizer){const o=rt.defaults.tokenizer||new Of;for(const a in n.tokenizer){const l=o[a];o[a]=(...s)=>{let i=n.tokenizer[a].apply(o,s);return i===!1&&(i=l.apply(o,s)),i}}r.tokenizer=o}if(n.hooks){const o=rt.defaults.hooks||new iu;for(const a in n.hooks){const l=o[a];iu.passThroughHooks.has(a)?o[a]=s=>{if(rt.defaults.async)return Promise.resolve(n.hooks[a].call(o,s)).then(u=>l.call(o,u));const i=n.hooks[a].call(o,s);return l.call(o,i)}:o[a]=(...s)=>{let i=n.hooks[a].apply(o,s);return i===!1&&(i=l.apply(o,s)),i}}r.hooks=o}if(n.walkTokens){const o=rt.defaults.walkTokens;r.walkTokens=function(a){let l=[];return l.push(n.walkTokens.call(this,a)),o&&(l=l.concat(o.call(this,a))),l}}rt.setOptions(r)})};rt.walkTokens=function(e,t){let n=[];for(const r of e)switch(n=n.concat(t.call(rt,r)),r.type){case"table":{for(const o of r.header)n=n.concat(rt.walkTokens(o.tokens,t));for(const o of r.rows)for(const a of o)n=n.concat(rt.walkTokens(a.tokens,t));break}case"list":{n=n.concat(rt.walkTokens(r.items,t));break}default:rt.defaults.extensions&&rt.defaults.extensions.childTokens&&rt.defaults.extensions.childTokens[r.type]?rt.defaults.extensions.childTokens[r.type].forEach(function(o){n=n.concat(rt.walkTokens(r[o],t))}):r.tokens&&(n=n.concat(rt.walkTokens(r.tokens,t)))}return n};rt.parseInline=G0(Oo.lexInline,Ao.parseInline);rt.Parser=Ao;rt.parser=Ao.parse;rt.Renderer=Af;rt.TextRenderer=q0;rt.Lexer=Oo;rt.lexer=Oo.lex;rt.Tokenizer=Of;rt.Slugger=Y0;rt.Hooks=iu;rt.parse=rt;rt.options;rt.setOptions;rt.use;rt.walkTokens;rt.parseInline;Ao.parse;Oo.lex;var no=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},jl={exports:{}},jt={},is={exports:{}},ha={};function X0(){var e={};return e["align-content"]=!1,e["align-items"]=!1,e["align-self"]=!1,e["alignment-adjust"]=!1,e["alignment-baseline"]=!1,e.all=!1,e["anchor-point"]=!1,e.animation=!1,e["animation-delay"]=!1,e["animation-direction"]=!1,e["animation-duration"]=!1,e["animation-fill-mode"]=!1,e["animation-iteration-count"]=!1,e["animation-name"]=!1,e["animation-play-state"]=!1,e["animation-timing-function"]=!1,e.azimuth=!1,e["backface-visibility"]=!1,e.background=!0,e["background-attachment"]=!0,e["background-clip"]=!0,e["background-color"]=!0,e["background-image"]=!0,e["background-origin"]=!0,e["background-position"]=!0,e["background-repeat"]=!0,e["background-size"]=!0,e["baseline-shift"]=!1,e.binding=!1,e.bleed=!1,e["bookmark-label"]=!1,e["bookmark-level"]=!1,e["bookmark-state"]=!1,e.border=!0,e["border-bottom"]=!0,e["border-bottom-color"]=!0,e["border-bottom-left-radius"]=!0,e["border-bottom-right-radius"]=!0,e["border-bottom-style"]=!0,e["border-bottom-width"]=!0,e["border-collapse"]=!0,e["border-color"]=!0,e["border-image"]=!0,e["border-image-outset"]=!0,e["border-image-repeat"]=!0,e["border-image-slice"]=!0,e["border-image-source"]=!0,e["border-image-width"]=!0,e["border-left"]=!0,e["border-left-color"]=!0,e["border-left-style"]=!0,e["border-left-width"]=!0,e["border-radius"]=!0,e["border-right"]=!0,e["border-right-color"]=!0,e["border-right-style"]=!0,e["border-right-width"]=!0,e["border-spacing"]=!0,e["border-style"]=!0,e["border-top"]=!0,e["border-top-color"]=!0,e["border-top-left-radius"]=!0,e["border-top-right-radius"]=!0,e["border-top-style"]=!0,e["border-top-width"]=!0,e["border-width"]=!0,e.bottom=!1,e["box-decoration-break"]=!0,e["box-shadow"]=!0,e["box-sizing"]=!0,e["box-snap"]=!0,e["box-suppress"]=!0,e["break-after"]=!0,e["break-before"]=!0,e["break-inside"]=!0,e["caption-side"]=!1,e.chains=!1,e.clear=!0,e.clip=!1,e["clip-path"]=!1,e["clip-rule"]=!1,e.color=!0,e["color-interpolation-filters"]=!0,e["column-count"]=!1,e["column-fill"]=!1,e["column-gap"]=!1,e["column-rule"]=!1,e["column-rule-color"]=!1,e["column-rule-style"]=!1,e["column-rule-width"]=!1,e["column-span"]=!1,e["column-width"]=!1,e.columns=!1,e.contain=!1,e.content=!1,e["counter-increment"]=!1,e["counter-reset"]=!1,e["counter-set"]=!1,e.crop=!1,e.cue=!1,e["cue-after"]=!1,e["cue-before"]=!1,e.cursor=!1,e.direction=!1,e.display=!0,e["display-inside"]=!0,e["display-list"]=!0,e["display-outside"]=!0,e["dominant-baseline"]=!1,e.elevation=!1,e["empty-cells"]=!1,e.filter=!1,e.flex=!1,e["flex-basis"]=!1,e["flex-direction"]=!1,e["flex-flow"]=!1,e["flex-grow"]=!1,e["flex-shrink"]=!1,e["flex-wrap"]=!1,e.float=!1,e["float-offset"]=!1,e["flood-color"]=!1,e["flood-opacity"]=!1,e["flow-from"]=!1,e["flow-into"]=!1,e.font=!0,e["font-family"]=!0,e["font-feature-settings"]=!0,e["font-kerning"]=!0,e["font-language-override"]=!0,e["font-size"]=!0,e["font-size-adjust"]=!0,e["font-stretch"]=!0,e["font-style"]=!0,e["font-synthesis"]=!0,e["font-variant"]=!0,e["font-variant-alternates"]=!0,e["font-variant-caps"]=!0,e["font-variant-east-asian"]=!0,e["font-variant-ligatures"]=!0,e["font-variant-numeric"]=!0,e["font-variant-position"]=!0,e["font-weight"]=!0,e.grid=!1,e["grid-area"]=!1,e["grid-auto-columns"]=!1,e["grid-auto-flow"]=!1,e["grid-auto-rows"]=!1,e["grid-column"]=!1,e["grid-column-end"]=!1,e["grid-column-start"]=!1,e["grid-row"]=!1,e["grid-row-end"]=!1,e["grid-row-start"]=!1,e["grid-template"]=!1,e["grid-template-areas"]=!1,e["grid-template-columns"]=!1,e["grid-template-rows"]=!1,e["hanging-punctuation"]=!1,e.height=!0,e.hyphens=!1,e.icon=!1,e["image-orientation"]=!1,e["image-resolution"]=!1,e["ime-mode"]=!1,e["initial-letters"]=!1,e["inline-box-align"]=!1,e["justify-content"]=!1,e["justify-items"]=!1,e["justify-self"]=!1,e.left=!1,e["letter-spacing"]=!0,e["lighting-color"]=!0,e["line-box-contain"]=!1,e["line-break"]=!1,e["line-grid"]=!1,e["line-height"]=!1,e["line-snap"]=!1,e["line-stacking"]=!1,e["line-stacking-ruby"]=!1,e["line-stacking-shift"]=!1,e["line-stacking-strategy"]=!1,e["list-style"]=!0,e["list-style-image"]=!0,e["list-style-position"]=!0,e["list-style-type"]=!0,e.margin=!0,e["margin-bottom"]=!0,e["margin-left"]=!0,e["margin-right"]=!0,e["margin-top"]=!0,e["marker-offset"]=!1,e["marker-side"]=!1,e.marks=!1,e.mask=!1,e["mask-box"]=!1,e["mask-box-outset"]=!1,e["mask-box-repeat"]=!1,e["mask-box-slice"]=!1,e["mask-box-source"]=!1,e["mask-box-width"]=!1,e["mask-clip"]=!1,e["mask-image"]=!1,e["mask-origin"]=!1,e["mask-position"]=!1,e["mask-repeat"]=!1,e["mask-size"]=!1,e["mask-source-type"]=!1,e["mask-type"]=!1,e["max-height"]=!0,e["max-lines"]=!1,e["max-width"]=!0,e["min-height"]=!0,e["min-width"]=!0,e["move-to"]=!1,e["nav-down"]=!1,e["nav-index"]=!1,e["nav-left"]=!1,e["nav-right"]=!1,e["nav-up"]=!1,e["object-fit"]=!1,e["object-position"]=!1,e.opacity=!1,e.order=!1,e.orphans=!1,e.outline=!1,e["outline-color"]=!1,e["outline-offset"]=!1,e["outline-style"]=!1,e["outline-width"]=!1,e.overflow=!1,e["overflow-wrap"]=!1,e["overflow-x"]=!1,e["overflow-y"]=!1,e.padding=!0,e["padding-bottom"]=!0,e["padding-left"]=!0,e["padding-right"]=!0,e["padding-top"]=!0,e.page=!1,e["page-break-after"]=!1,e["page-break-before"]=!1,e["page-break-inside"]=!1,e["page-policy"]=!1,e.pause=!1,e["pause-after"]=!1,e["pause-before"]=!1,e.perspective=!1,e["perspective-origin"]=!1,e.pitch=!1,e["pitch-range"]=!1,e["play-during"]=!1,e.position=!1,e["presentation-level"]=!1,e.quotes=!1,e["region-fragment"]=!1,e.resize=!1,e.rest=!1,e["rest-after"]=!1,e["rest-before"]=!1,e.richness=!1,e.right=!1,e.rotation=!1,e["rotation-point"]=!1,e["ruby-align"]=!1,e["ruby-merge"]=!1,e["ruby-position"]=!1,e["shape-image-threshold"]=!1,e["shape-outside"]=!1,e["shape-margin"]=!1,e.size=!1,e.speak=!1,e["speak-as"]=!1,e["speak-header"]=!1,e["speak-numeral"]=!1,e["speak-punctuation"]=!1,e["speech-rate"]=!1,e.stress=!1,e["string-set"]=!1,e["tab-size"]=!1,e["table-layout"]=!1,e["text-align"]=!0,e["text-align-last"]=!0,e["text-combine-upright"]=!0,e["text-decoration"]=!0,e["text-decoration-color"]=!0,e["text-decoration-line"]=!0,e["text-decoration-skip"]=!0,e["text-decoration-style"]=!0,e["text-emphasis"]=!0,e["text-emphasis-color"]=!0,e["text-emphasis-position"]=!0,e["text-emphasis-style"]=!0,e["text-height"]=!0,e["text-indent"]=!0,e["text-justify"]=!0,e["text-orientation"]=!0,e["text-overflow"]=!0,e["text-shadow"]=!0,e["text-space-collapse"]=!0,e["text-transform"]=!0,e["text-underline-position"]=!0,e["text-wrap"]=!0,e.top=!1,e.transform=!1,e["transform-origin"]=!1,e["transform-style"]=!1,e.transition=!1,e["transition-delay"]=!1,e["transition-duration"]=!1,e["transition-property"]=!1,e["transition-timing-function"]=!1,e["unicode-bidi"]=!1,e["vertical-align"]=!1,e.visibility=!1,e["voice-balance"]=!1,e["voice-duration"]=!1,e["voice-family"]=!1,e["voice-pitch"]=!1,e["voice-range"]=!1,e["voice-rate"]=!1,e["voice-stress"]=!1,e["voice-volume"]=!1,e.volume=!1,e["white-space"]=!1,e.widows=!1,e.width=!0,e["will-change"]=!1,e["word-break"]=!0,e["word-spacing"]=!0,e["word-wrap"]=!0,e["wrap-flow"]=!1,e["wrap-through"]=!1,e["writing-mode"]=!1,e["z-index"]=!1,e}function ST(e,t,n){}function ET(e,t,n){}var $T=/javascript\s*\:/img;function TT(e,t){return $T.test(t)?"":t}ha.whiteList=X0();ha.getDefaultWhiteList=X0;ha.onAttr=ST;ha.onIgnoreAttr=ET;ha.safeAttrValue=TT;var xT={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n/g,jT=/"/g,WT=/"/g,UT=/&#([a-zA-Z0-9]*);?/gim,KT=/:?/gim,qT=/&newline;?/gim,ii=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,yh=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,_h=/u\s*r\s*l\s*\(.*/gi;function ty(e){return e.replace(jT,""")}function ny(e){return e.replace(WT,'"')}function ry(e){return e.replace(UT,function(n,r){return r[0]==="x"||r[0]==="X"?String.fromCharCode(parseInt(r.substr(1),16)):String.fromCharCode(parseInt(r,10))})}function oy(e){return e.replace(KT,":").replace(qT," ")}function ay(e){for(var t="",n=0,r=e.length;n",r);if(o===-1)break;n=o+3}return t}function JT(e){var t=e.split("");return t=t.filter(function(n){var r=n.charCodeAt(0);return r===127?!1:r<=31?r===10||r===13:!0}),t.join("")}jt.whiteList=Z0();jt.getDefaultWhiteList=Z0;jt.onTag=NT;jt.onIgnoreTag=DT;jt.onTagAttr=FT;jt.onIgnoreTagAttr=VT;jt.safeAttrValue=BT;jt.escapeHtml=ey;jt.escapeQuote=ty;jt.unescapeQuote=ny;jt.escapeHtmlEntities=ry;jt.escapeDangerHtml5Entities=oy;jt.clearNonPrintableCharacter=ay;jt.friendlyAttrValue=ly;jt.escapeAttrValue=sy;jt.onIgnoreTagStripAll=YT;jt.StripTagBody=GT;jt.stripCommentTag=XT;jt.stripBlankChar=JT;jt.cssFilter=Q0;jt.getDefaultCSSWhiteList=RT;var Du={},yo=If;function ZT(e){var t=yo.spaceIndex(e),n;return t===-1?n=e.slice(1,-1):n=e.slice(1,t+1),n=yo.trim(n).toLowerCase(),n.slice(0,1)==="/"&&(n=n.slice(1)),n.slice(-1)==="/"&&(n=n.slice(0,-1)),n}function QT(e){return e.slice(0,2)===""||s===i-1){r+=n(e.slice(o,a)),d=e.slice(a,s+1),u=ZT(d),r+=t(a,r.length,u,d,QT(d)),o=s+1,a=!1;continue}if(f==='"'||f==="'")for(var h=1,p=e.charAt(s-h);p.trim()===""||p==="=";){if(p==="="){l=f;continue e}p=e.charAt(s-++h)}}else if(f===l){l=!1;continue}}return o0;t--){var n=e[t];if(n!==" ")return n==="="?t:-1}}function l4(e){return e[0]==='"'&&e[e.length-1]==='"'||e[0]==="'"&&e[e.length-1]==="'"}function wh(e){return l4(e)?e.substr(1,e.length-2):e}Du.parseTag=e4;Du.parseAttr=n4;var s4=is.exports.FilterCSS,rr=jt,iy=Du,i4=iy.parseTag,u4=iy.parseAttr,Pi=If;function ui(e){return e==null}function c4(e){var t=Pi.spaceIndex(e);if(t===-1)return{html:"",closing:e[e.length-2]==="/"};e=Pi.trim(e.slice(t+1,-1));var n=e[e.length-1]==="/";return n&&(e=Pi.trim(e.slice(0,-1))),{html:e,closing:n}}function d4(e){var t={};for(var n in e)t[n]=e[n];return t}function f4(e){var t={};for(var n in e)Array.isArray(e[n])?t[n.toLowerCase()]=e[n].map(function(r){return r.toLowerCase()}):t[n.toLowerCase()]=e[n];return t}function uy(e){e=d4(e||{}),e.stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=rr.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=f4(e.whiteList||e.allowList):e.whiteList=rr.whiteList,e.onTag=e.onTag||rr.onTag,e.onTagAttr=e.onTagAttr||rr.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||rr.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||rr.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||rr.safeAttrValue,e.escapeHtml=e.escapeHtml||rr.escapeHtml,this.options=e,e.css===!1?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new s4(e.css))}uy.prototype.process=function(e){if(e=e||"",e=e.toString(),!e)return"";var t=this,n=t.options,r=n.whiteList,o=n.onTag,a=n.onIgnoreTag,l=n.onTagAttr,s=n.onIgnoreTagAttr,i=n.safeAttrValue,u=n.escapeHtml,d=t.cssFilter;n.stripBlankChar&&(e=rr.stripBlankChar(e)),n.allowCommentTag||(e=rr.stripCommentTag(e));var f=!1;n.stripIgnoreTagBody&&(f=rr.StripTagBody(n.stripIgnoreTagBody,a),a=f.onIgnoreTag);var h=i4(e,function(p,v,g,w,m){var b={sourcePosition:p,position:v,isClosing:m,isWhite:Object.prototype.hasOwnProperty.call(r,g)},_=o(g,w,b);if(!ui(_))return _;if(b.isWhite){if(b.isClosing)return"";var y=c4(w),C=r[g],k=u4(y.html,function(E,S){var R=Pi.indexOf(C,E)!==-1,L=l(g,E,S,R);return ui(L)?R?(S=i(g,E,S,d),S?E+'="'+S+'"':E):(L=s(g,E,S,R),ui(L)?void 0:L):L});return w="<"+g,k&&(w+=" "+k),y.closing&&(w+=" /"),w+=">",w}else return _=a(g,w,b),ui(_)?u(w):_},u);return f&&(h=f.remove(h)),h};var p4=uy;(function(e,t){var n=jt,r=Du,o=p4;function a(s,i){var u=new o(i);return u.process(s)}t=e.exports=a,t.filterXSS=a,t.FilterXSS=o,function(){for(var s in n)t[s]=n[s];for(var i in r)t[i]=r[i]}(),typeof window!="undefined"&&(window.filterXSS=e.exports);function l(){return typeof self!="undefined"&&typeof DedicatedWorkerGlobalScope!="undefined"&&self instanceof DedicatedWorkerGlobalScope}l()&&(self.filterXSS=e.exports)})(jl,jl.exports);var m4=Object.defineProperty,cy=(e,t)=>m4(e,"name",{value:t,configurable:!0}),h4=["address","article","aside","footer","header","h1","h2","h3","h4","h5","h6","hgroup","main","nav","section","blockquote","dd","div","dl","dt","figcaption","figure","hr","li","main","ol","p","pre","ul","a","abbr","b","bdi","bdo","br","cite","code","data","dfn","em","i","kbd","mark","q","rb","rp","rt","rtc","ruby","s","samp","small","span","strong","sub","sup","time","u","var","wbr","caption","col","colgroup","table","tbody","td","tfoot","th","thead","tr"],v4=["img","br","hr","area","base","basefont","input","link","meta"],g4=["http:","https:","mailto:","tel:"];function dy(e){try{const t=new URL(e,location.toString());return g4.includes(t.protocol)}catch{return!1}}cy(dy,"checkUrl");function fy(e){const t={...Object.fromEntries(h4.map(r=>[r,[]]))},n=[];for(e=jl.exports.filterXSS(e,{whiteList:t,stripIgnoreTag:!0,onTag(r,o,a){let l;if(r==="a"&&!a.isClosing){const i={};jl.exports.parseAttr(o.slice(3),(u,d)=>(u==="href"?i[u]=dy(d)?d:"#":u==="title"&&(i[u]=jl.exports.escapeAttrValue(d)),"")),i.rel="noopener noreferrer",i.target="_blank",l=`
    `${u}="${d}"`).join(" ")}>`}if(o.endsWith("/>")||v4.includes(r))return;if(!a.isClosing)return n.push(r),l;let s="";for(;n.length;){const i=n.pop();if(i===r)return s+o;s+=``}return o.replace(//g,">")}});n.length;)e+=``;return e}cy(fy,"sanitize");var b4=se({props:{source:String,inline:Boolean,tag:String,unsafe:Boolean},setup(e){return()=>{let t=e.inline?rt.parseInline(e.source||""):rt.parse(e.source||"");e.unsafe||(t=fy(t));const n=e.tag||(e.inline?"span":"div");return He(n,{class:"markdown",innerHTML:t})}}}),y4=Object.defineProperty,pt=(e,t)=>y4(e,"name",{value:t,configurable:!0});function _4(){}pt(_4,"noop");function Bn(e){return e==null}pt(Bn,"isNullable");function Li(e){return e&&typeof e=="object"&&!Array.isArray(e)}pt(Li,"isPlainObject");function w4(e,t){return Object.fromEntries(Object.entries(e).filter(([n,r])=>t(n,r)))}pt(w4,"filterKeys");function Cr(e,t){return Object.fromEntries(Object.entries(e).map(([n,r])=>[n,t(r,n)]))}pt(Cr,"mapValues");function py(e,t,n){if(!t)return{...e};const r={};for(const o of t)(n||e[o]!==void 0)&&(r[o]=e[o]);return r}pt(py,"pick");function C4(e,t){if(!t)return{...e};const n={...e};for(const r of t)Reflect.deleteProperty(n,r);return n}pt(C4,"omit");function k4(e,t,n){return Object.defineProperty(e,t,{writable:!0,value:n,enumerable:!1})}pt(k4,"defineProperty");function S4(e,t){return t.every(n=>e.includes(n))}pt(S4,"contain");function E4(e,t){return e.filter(n=>t.includes(n))}pt(E4,"intersection");function $4(e,t){return e.filter(n=>!t.includes(n))}pt($4,"difference");function T4(e,t){return Array.from(new Set([...e,...t]))}pt(T4,"union");function x4(e){return[...new Set(e)]}pt(x4,"deduplicate");function O4(e,t){const n=e.indexOf(t);return n>=0?(e.splice(n,1),!0):!1}pt(O4,"remove");function A4(e){return Array.isArray(e)?e:Bn(e)?[]:[e]}pt(A4,"makeArray");function Io(e,t){return arguments.length===1?n=>Io(e,n):e in globalThis&&t instanceof globalThis[e]||Object.prototype.toString.call(t).slice(8,-1)===e}pt(Io,"is");function Ms(e){return Io("ArrayBuffer",e)||Io("SharedArrayBuffer",e)}pt(Ms,"isArrayBufferLike");function my(e){return Ms(e)||ArrayBuffer.isView(e)}pt(my,"isArrayBufferSource");var Za;(e=>{e.is=Ms,e.isSource=my;function t(l){return ArrayBuffer.isView(l)?l.buffer.slice(l.byteOffset,l.byteOffset+l.byteLength):l}e.fromSource=t,pt(t,"fromSource");function n(l){if(typeof Buffer!="undefined")return Buffer.from(l).toString("base64");let s="";const i=new Uint8Array(l);for(let u=0;us.charCodeAt(0))}e.fromBase64=r,pt(r,"fromBase64");function o(l){return typeof Buffer!="undefined"?Buffer.from(l).toString("hex"):Array.from(new Uint8Array(l),s=>s.toString(16).padStart(2,"0")).join("")}e.toHex=o,pt(o,"toHex");function a(l){if(typeof Buffer!="undefined")return t(Buffer.from(l,"hex"));const s=l.length%2===0?l:l.slice(0,l.length-1),i=[];for(let u=0;ui.length===u.length&&i.every((d,f)=>du(d,u[f]))))!=null?o:r(Io("Date"),(i,u)=>i.valueOf()===u.valueOf()))!=null?a:r(Io("RegExp"),(i,u)=>i.source===u.source&&i.flags===u.flags))!=null?l:r(Ms,(i,u)=>{if(i.byteLength!==u.byteLength)return!1;const d=new Uint8Array(i),f=new Uint8Array(u);for(let h=0;hdu(e[i],t[i],n))}pt(du,"deepEqual");function I4(e){return e.charAt(0).toUpperCase()+e.slice(1)}pt(I4,"capitalize");function Pf(e){return e.charAt(0).toLowerCase()+e.slice(1)}pt(Pf,"uncapitalize");function P4(e){return e.replace(/[_-][a-z]/g,t=>t.slice(1).toUpperCase())}pt(P4,"camelCase");function L4(e){return Pf(e).replace(/_/g,"-").replace(/.[A-Z]+/g,t=>t[0]+"-"+t.slice(1).toLowerCase())}pt(L4,"paramCase");function M4(e){return Pf(e).replace(/-/g,"_").replace(/.[A-Z]+/g,t=>t[0]+"_"+t.slice(1).toLowerCase())}pt(M4,"snakeCase");function hy(e){return e.replace(/\/$/,"")}pt(hy,"trimSlash");function R4(e){return e.startsWith("/")||(e="/"+e),hy(e)}pt(R4,"sanitize");var Ch;(e=>{e.millisecond=1,e.second=1e3,e.minute=e.second*60,e.hour=e.minute*60,e.day=e.hour*24,e.week=e.day*7;let t=new Date().getTimezoneOffset();function n(p){t=p}e.setTimezoneOffset=n,pt(n,"setTimezoneOffset");function r(){return t}e.getTimezoneOffset=r,pt(r,"getTimezoneOffset");function o(p=new Date,v){return typeof p=="number"&&(p=new Date(p)),v===void 0&&(v=t),Math.floor((p.valueOf()/e.minute-v)/1440)}e.getDateNumber=o,pt(o,"getDateNumber");function a(p,v){const g=new Date(p*e.day);return v===void 0&&(v=t),new Date(+g+v*e.minute)}e.fromDateNumber=a,pt(a,"fromDateNumber");const l=/\d+(?:\.\d+)?/.source,s=new RegExp(`^${["w(?:eek(?:s)?)?","d(?:ay(?:s)?)?","h(?:our(?:s)?)?","m(?:in(?:ute)?(?:s)?)?","s(?:ec(?:ond)?(?:s)?)?"].map(p=>`(${l}${p})?`).join("")}$`);function i(p){const v=s.exec(p);return v?(parseFloat(v[1])*e.week||0)+(parseFloat(v[2])*e.day||0)+(parseFloat(v[3])*e.hour||0)+(parseFloat(v[4])*e.minute||0)+(parseFloat(v[5])*e.second||0):0}e.parseTime=i,pt(i,"parseTime");function u(p){const v=i(p);return v?p=Date.now()+v:/^\d{1,2}(:\d{1,2}){1,2}$/.test(p)?p=`${new Date().toLocaleDateString()}-${p}`:/^\d{1,2}-\d{1,2}-\d{1,2}(:\d{1,2}){1,2}$/.test(p)&&(p=`${new Date().getFullYear()}-${p}`),p?new Date(p):new Date}e.parseDate=u,pt(u,"parseDate");function d(p){const v=Math.abs(p);return v>=e.day-e.hour/2?Math.round(p/e.day)+"d":v>=e.hour-e.minute/2?Math.round(p/e.hour)+"h":v>=e.minute-e.second/2?Math.round(p/e.minute)+"m":v>=e.second?Math.round(p/e.second)+"s":p+"ms"}e.format=d,pt(d,"format");function f(p,v=2){return p.toString().padStart(v,"0")}e.toDigits=f,pt(f,"toDigits");function h(p,v=new Date){return p.replace("yyyy",v.getFullYear().toString()).replace("yy",v.getFullYear().toString().slice(2)).replace("MM",f(v.getMonth()+1)).replace("dd",f(v.getDate())).replace("hh",f(v.getHours())).replace("mm",f(v.getMinutes())).replace("ss",f(v.getSeconds())).replace("SSS",f(v.getMilliseconds(),3))}e.template=h,pt(h,"template")})(Ch||(Ch={}));var N4=Object.defineProperty,D4=Object.getOwnPropertyNames,Ot=(e,t)=>N4(e,"name",{value:t,configurable:!0}),F4=(e,t)=>function(){return t||(0,e[D4(e)[0]])((t={exports:{}}).exports,t),t.exports},V4=F4({"packages/core/src/index.ts"(e,t){var w;var n=Symbol.for("schemastery");(w=globalThis.__schemastery_index__)!=null||(globalThis.__schemastery_index__=0);var r=Ot(function(m){const b=Ot(function(_,y){return r.resolve(_,b,y)[0]},"schema");if(m.refs){const _=Cr(m.refs,C=>new r(C)),y=Ot(C=>_[C],"getRef");for(const C in _){const k=_[C];k.sKey=y(k.sKey),k.inner=y(k.inner),k.list=k.list&&k.list.map(y),k.dict=k.dict&&Cr(k.dict,y)}return _[m.uid]}if(Object.assign(b,m),typeof b.callback=="string")try{b.callback=new Function("return "+b.callback)()}catch{}return Object.defineProperty(b,"uid",{value:globalThis.__schemastery_index__++}),Object.setPrototypeOf(b,r.prototype),b.meta||(b.meta={}),b.toString=b.toString.bind(b),b},"Schema");r.prototype=Object.create(Function.prototype),r.prototype[n]=!0;var o;r.prototype.toJSON=Ot(function(){var _,y;if(o)return(y=o[_=this.uid])!=null||(o[_]=JSON.parse(JSON.stringify({...this}))),this.uid;o={[this.uid]:{...this}},o[this.uid]=JSON.parse(JSON.stringify({...this}));const b={uid:this.uid,refs:o};return o=void 0,b},"toJSON"),r.prototype.set=Ot(function(b,_){return this.dict[b]=_,this},"set"),r.prototype.push=Ot(function(b){return this.list.push(b),this},"push");function a(m,b){const _=typeof m=="string"?{"":m}:{...m};for(const y in b){const C=b[y];(C==null?void 0:C.$description)||(C==null?void 0:C.$desc)?_[y]=C.$description||C.$desc:typeof C=="string"&&(_[y]=C)}return _}Ot(a,"mergeDesc");function l(m){var b;return(b=m==null?void 0:m.$value)!=null?b:m==null?void 0:m.$inner}Ot(l,"getInner");function s(m){return Object.fromEntries(Object.entries(m!=null?m:{}).filter(([b])=>!b.startsWith("$")))}Ot(s,"extractKeys"),r.prototype.i18n=Ot(function(b){const _=r(this);return _.meta.description=a(_.meta.description,b),_.dict&&(_.dict=Cr(_.dict,(y,C)=>y.i18n(Cr(b,k=>{var E,S;return(S=(E=l(k))==null?void 0:E[C])!=null?S:k==null?void 0:k[C]})))),_.list&&(_.list=_.list.map((y,C)=>y.i18n(Cr(b,(k={})=>Array.isArray(l(k))?l(k)[C]:Array.isArray(k)?k[C]:s(k))))),_.inner&&(_.inner=_.inner.i18n(Cr(b,y=>l(y)?l(y):s(y)))),_.sKey&&(_.sKey=_.sKey.i18n(Cr(b,y=>y==null?void 0:y.$key))),_},"i18n"),r.prototype.extra=Ot(function(b,_){const y=r(this);return y.meta={...y.meta,[b]:_},y},"extra");for(const m of["required","disabled","collapse","hidden","loose"])Object.assign(r.prototype,{[m](b=!0){const _=r(this);return _.meta={..._.meta,[m]:b},_}});r.prototype.deprecated=Ot(function(){var _;const b=r(this);return(_=b.meta).badges||(_.badges=[]),b.meta.badges.push({text:"deprecated",type:"danger"}),b},"deprecated"),r.prototype.experimental=Ot(function(){var _;const b=r(this);return(_=b.meta).badges||(_.badges=[]),b.meta.badges.push({text:"experimental",type:"warning"}),b},"experimental"),r.prototype.pattern=Ot(function(b){const _=r(this),y=py(b,["source","flags"]);return _.meta={..._.meta,pattern:y},_},"pattern"),r.prototype.simplify=Ot(function(b){if(du(b,this.meta.default))return null;if(Bn(b))return b;if(this.type==="object"||this.type==="dict"){const _={};for(const y in b){const C=this.type==="object"?this.dict[y]:this.inner,k=C==null?void 0:C.simplify(b[y]);Bn(k)||(_[y]=k)}return _}else if(this.type==="array"||this.type==="tuple"){const _=[];return b.forEach((y,C)=>{const k=this.type==="array"?this.inner:this.list[C],E=k?k.simplify(y):y;_.push(E)}),_}else if(this.type==="intersect"){const _={};for(const y of this.list)Object.assign(_,y.simplify(b));return _}else if(this.type==="union")for(const _ of this.list)try{return r.resolve(b,_),_.simplify(b)}catch{}return b},"simplify"),r.prototype.toString=Ot(function(b){var _,y;return(y=(_=v[this.type])==null?void 0:_.call(v,this,b))!=null?y:`Schema<${this.type}>`},"toString"),r.prototype.role=Ot(function(m,b){const _=r(this);return _.meta={..._.meta,role:m,extra:b},_},"role");for(const m of["default","link","comment","description","max","min","step"])Object.assign(r.prototype,{[m](b){const _=r(this);return _.meta={..._.meta,[m]:b},_}});var i={};r.extend=Ot(function(b,_){i[b]=_},"extend"),r.resolve=Ot(function(b,_,y={},C=!1){if(!_)return[b];if(Bn(b)){if(_.meta.required)throw new TypeError("missing required value");let E=_,S=_.meta.default;for(;(E==null?void 0:E.type)==="intersect"&&Bn(S);)E=E.list[0],S=E==null?void 0:E.meta.default;if(Bn(S))return[b];b=cu(S)}const k=i[_.type];if(!k)throw new TypeError(`unsupported type "${_.type}"`);try{return k(b,_,y,C)}catch(E){if(!_.meta.loose)throw E;return[_.meta.default]}},"resolve"),r.from=Ot(function(b){if(Bn(b))return r.any();if(["string","number","boolean"].includes(typeof b))return r.const(b).required();if(b[n])return b;if(typeof b=="function")switch(b){case String:return r.string().required();case Number:return r.number().required();case Boolean:return r.boolean().required();case Function:return r.function().required();default:return r.is(b).required()}else throw new TypeError(`cannot infer schema from ${b}`)},"from"),r.natural=Ot(function(){return r.number().step(1).min(0)},"natural"),r.percent=Ot(function(){return r.number().step(.01).min(0).max(1).role("slider")},"percent"),r.date=Ot(function(){return r.union([r.is(Date),r.transform(r.string().role("datetime"),b=>{const _=new Date(b);if(isNaN(+_))throw new TypeError(`invalid date "${b}"`);return _},!0)])},"date"),r.extend("any",m=>[m]),r.extend("never",m=>{throw new TypeError(`expected nullable but got ${m}`)}),r.extend("const",(m,{value:b})=>{if(m===b)return[b];throw new TypeError(`expected ${b} but got ${m}`)});function u(m,b,_){const{max:y=1/0,min:C=-1/0}=b;if(m>y)throw new TypeError(`expected ${_} <= ${y} but got ${m}`);if(m= ${C} but got ${m}`)}Ot(u,"checkWithinRange"),r.extend("string",(m,{meta:b})=>{if(typeof m!="string")throw new TypeError(`expected string but got ${m}`);if(b.pattern){const _=new RegExp(b.pattern.source,b.pattern.flags);if(!_.test(m))throw new TypeError(`expect string to match regexp ${_}`)}return u(m.length,b,"string length"),[m]});function d(m,b){const _=m.toString();if(_.includes("e"))return m*Math.pow(10,b);const y=_.indexOf(".");if(y===-1)return m*Math.pow(10,b);const C=_.slice(y+1),k=_.slice(0,y);return C.length<=b?+(k+C.padEnd(b,"0")):+(k+C.slice(0,b)+"."+C.slice(b))}Ot(d,"decimalShift");function f(m,b,_){if(_=Math.abs(_),!/^\d+\.\d+$/.test(_.toString()))return(m-b)%_===0;const y=_.toString().indexOf("."),C=_.toString().slice(y+1).length;return Math.abs(d(m,C)-d(b,C))%d(_,C)===0}Ot(f,"isMultipleOf"),r.extend("number",(m,{meta:b})=>{var y;if(typeof m!="number")throw new TypeError(`expected number but got ${m}`);u(m,b,"number");const{step:_}=b;if(_&&!f(m,(y=b.min)!=null?y:0,_))throw new TypeError(`expected number multiple of ${_} but got ${m}`);return[m]}),r.extend("boolean",m=>{if(typeof m=="boolean")return[m];throw new TypeError(`expected boolean but got ${m}`)}),r.extend("bitset",(m,{bits:b,meta:_})=>{let y=0,C=[];if(typeof m=="number"){y=m;for(const k in b)m&b[k]&&C.push(k)}else if(Array.isArray(m)){C=m;for(const k of C){if(typeof k!="string")throw new TypeError(`expected string but got ${k}`);k in b&&(y|=b[k])}}else throw new TypeError(`expected number or array but got ${m}`);return y===_.default?[y]:[y,C]}),r.extend("function",m=>{if(typeof m=="function")return[m];throw new TypeError(`expected function but got ${m}`)}),r.extend("is",(m,{callback:b})=>{if(m instanceof b)return[m];throw new TypeError(`expected ${b.name} but got ${m}`)});function h(m,b,_,y){try{const[C,k]=r.resolve(m[b],_,y);return k!==void 0&&(m[b]=k),C}catch(C){if(!(y!=null&&y.autofix))throw C;return delete m[b],_.meta.default}}Ot(h,"property"),r.extend("array",(m,{inner:b,meta:_},y)=>{if(!Array.isArray(m))throw new TypeError(`expected array but got ${m}`);return u(m.length,_,"array length"),[m.map((C,k)=>h(m,k,b,y))]}),r.extend("dict",(m,{inner:b,sKey:_},y,C)=>{if(!Li(m))throw new TypeError(`expected object but got ${m}`);const k={};for(const E in m){let S;try{S=r.resolve(E,_)[0]}catch(R){if(C)continue;throw R}k[S]=h(m,E,b,y),m[S]=m[E],E!==S&&delete m[E]}return[k]}),r.extend("tuple",(m,{list:b},_,y)=>{if(!Array.isArray(m))throw new TypeError(`expected array but got ${m}`);const C=b.map((k,E)=>h(m,E,k,_));return y?[C]:(C.push(...m.slice(b.length)),[C])});function p(m,b){for(const _ in b)_ in m||(m[_]=b[_])}Ot(p,"merge"),r.extend("object",(m,{dict:b},_,y)=>{if(!Li(m))throw new TypeError(`expected object but got ${m}`);const C={};for(const k in b){const E=h(m,k,b[k],_);(!Bn(E)||k in m)&&(C[k]=E)}return y||p(C,m),[C]}),r.extend("union",(m,{list:b,toString:_},y,C)=>{for(const k of b)try{return r.resolve(m,k,y,C)}catch{}throw new TypeError(`expected ${_()} but got ${JSON.stringify(m)}`)}),r.extend("intersect",(m,{list:b,toString:_},y,C)=>{let k;for(const E of b){const S=r.resolve(m,E,y,!0)[0];if(!Bn(S))if(Bn(k))k=S;else{if(typeof k!=typeof S)throw new TypeError(`expected ${_()} but got ${JSON.stringify(m)}`);if(typeof S=="object")p(k!=null?k:k={},S);else if(k!==S)throw new TypeError(`expected ${_()} but got ${JSON.stringify(m)}`)}}return!C&&Li(m)&&p(k,m),[k]}),r.extend("transform",(m,{inner:b,callback:_,preserve:y},C)=>{const[k,E=m]=r.resolve(m,b,C,!0);return y?[_(k)]:[_(k),_(E)]});var v={};function g(m,b,_){v[m]=_,Object.assign(r,{[m](...y){const C=new r({type:m});return b.forEach((k,E)=>{var S,R;switch(k){case"sKey":C.sKey=(S=y[E])!=null?S:r.string();break;case"inner":C.inner=r.from(y[E]);break;case"list":C.list=y[E].map(r.from);break;case"dict":C.dict=Cr(y[E],r.from);break;case"bits":{C.bits={};for(const L in y[E])typeof y[E][L]=="number"&&(C.bits[L]=y[E][L]);break}case"callback":{C.callback=y[E],(R=C.callback).toJSON||(R.toJSON=()=>C.callback.toString());break}default:C[k]=y[E]}}),m==="object"||m==="dict"?C.meta.default={}:m==="array"||m==="tuple"?C.meta.default=[]:m==="bitset"&&(C.meta.default=0),C}})}Ot(g,"defineMethod"),g("is",["callback"],({callback:m})=>m.name),g("any",[],()=>"any"),g("never",[],()=>"never"),g("const",["value"],({value:m})=>typeof m=="string"?JSON.stringify(m):m),g("string",[],()=>"string"),g("number",[],()=>"number"),g("boolean",[],()=>"boolean"),g("bitset",["bits"],()=>"bitset"),g("function",[],()=>"function"),g("array",["inner"],({inner:m})=>`${m.toString(!0)}[]`),g("dict",["inner","sKey"],({inner:m,sKey:b})=>`{ [key: ${b.toString()}]: ${m.toString()} }`),g("tuple",["list"],({list:m})=>`[${m.map(b=>b.toString()).join(", ")}]`),g("object",["dict"],({dict:m})=>Object.keys(m).length===0?"{}":`{ ${Object.entries(m).map(([b,_])=>`${b}${_.meta.required?"":"?"}: ${_.toString()}`).join(", ")} }`),g("union",["list"],({list:m},b)=>{const _=m.map(({toString:y})=>y()).join(" | ");return b?`(${_})`:_}),g("intersect",["list"],({list:m})=>`${m.map(b=>b.toString(!0)).join(" & ")}`),g("transform",["inner","callback","preserve"],({inner:m},b)=>m.toString(b)),t.exports=r}}),Rs=V4(),B4=Object.defineProperty,Et=(e,t)=>B4(e,"name",{value:t,configurable:!0});function z4(){}Et(z4,"noop");function xn(e){return e==null}Et(xn,"isNullable");function H4(e){return e&&typeof e=="object"&&!Array.isArray(e)}Et(H4,"isPlainObject");function Lf(e,t){return Object.fromEntries(Object.entries(e).map(([n,r])=>[n,t(r,n)]))}Et(Lf,"valueMap");function td(e,t){return e in globalThis&&t instanceof globalThis[e]||Object.prototype.toString.call(t).slice(8,-1)===e}Et(td,"is");function us(e){return!e||typeof e!="object"?e:Array.isArray(e)?e.map(us):td("Date",e)?new Date(e.valueOf()):td("RegExp",e)?new RegExp(e.source,e.flags):Lf(e,us)}Et(us,"clone");function sa(e,t,n){return e===t||!n&&xn(e)&&xn(t)?!0:typeof e!=typeof t||typeof e!="object"||!e||!t?!1:Array.isArray(e)?!Array.isArray(t)||e.length!==t.length?!1:e.every((r,o)=>sa(r,t[o])):Array.isArray(t)?!1:Object.keys({...e,...t}).every(r=>sa(e[r],t[r],n))}Et(sa,"deepEqual");function j4(e,t,n){if(!t)return{...e};const r={};for(const o of t)(n||o in e)&&(r[o]=e[o]);return r}Et(j4,"pick");function W4(e,t){if(!t)return{...e};const n={...e};for(const r of t)Reflect.deleteProperty(n,r);return n}Et(W4,"omit");function U4(e,t,n){return Object.defineProperty(e,t,{writable:!0,value:n,enumerable:!1})}Et(U4,"defineProperty");function K4(e,t){return t.every(n=>e.includes(n))}Et(K4,"contain");function q4(e,t){return e.filter(n=>t.includes(n))}Et(q4,"intersection");function vy(e,t){return e.filter(n=>!t.includes(n))}Et(vy,"difference");function gy(e,t){return Array.from(new Set([...e,...t]))}Et(gy,"union");function Y4(e){return[...new Set(e)]}Et(Y4,"deduplicate");function G4(e,t){const n=e.indexOf(t);return n>=0?(e.splice(n,1),!0):!1}Et(G4,"remove");function X4(e){return Array.isArray(e)?e:xn(e)?[]:[e]}Et(X4,"makeArray");function J4(e){if(typeof Buffer!="undefined")return Buffer.from(e).toString("base64");let t="";const n=new Uint8Array(e);for(let r=0;rt.slice(1).toUpperCase())}Et(e3,"camelCase");function t3(e){return Mf(e).replace(/_/g,"-").replace(/.[A-Z]+/g,t=>t[0]+"-"+t.slice(1).toLowerCase())}Et(t3,"paramCase");function n3(e){return Mf(e).replace(/-/g,"_").replace(/.[A-Z]+/g,t=>t[0]+"_"+t.slice(1).toLowerCase())}Et(n3,"snakeCase");function by(e){return e.replace(/\/$/,"")}Et(by,"trimSlash");function r3(e){return e.startsWith("/")||(e="/"+e),by(e)}Et(r3,"sanitize");var kh;(e=>{e.millisecond=1,e.second=1e3,e.minute=e.second*60,e.hour=e.minute*60,e.day=e.hour*24,e.week=e.day*7;let t=new Date().getTimezoneOffset();function n(p){t=p}e.setTimezoneOffset=n,Et(n,"setTimezoneOffset");function r(){return t}e.getTimezoneOffset=r,Et(r,"getTimezoneOffset");function o(p=new Date,v){return typeof p=="number"&&(p=new Date(p)),v===void 0&&(v=t),Math.floor((p.valueOf()/e.minute-v)/1440)}e.getDateNumber=o,Et(o,"getDateNumber");function a(p,v){const g=new Date(p*e.day);return v===void 0&&(v=t),new Date(+g+v*e.minute)}e.fromDateNumber=a,Et(a,"fromDateNumber");const l=/\d+(?:\.\d+)?/.source,s=new RegExp(`^${["w(?:eek(?:s)?)?","d(?:ay(?:s)?)?","h(?:our(?:s)?)?","m(?:in(?:ute)?(?:s)?)?","s(?:ec(?:ond)?(?:s)?)?"].map(p=>`(${l}${p})?`).join("")}$`);function i(p){const v=s.exec(p);return v?(parseFloat(v[1])*e.week||0)+(parseFloat(v[2])*e.day||0)+(parseFloat(v[3])*e.hour||0)+(parseFloat(v[4])*e.minute||0)+(parseFloat(v[5])*e.second||0):0}e.parseTime=i,Et(i,"parseTime");function u(p){const v=i(p);return v?p=Date.now()+v:/^\d{1,2}(:\d{1,2}){1,2}$/.test(p)?p=`${new Date().toLocaleDateString()}-${p}`:/^\d{1,2}-\d{1,2}-\d{1,2}(:\d{1,2}){1,2}$/.test(p)&&(p=`${new Date().getFullYear()}-${p}`),p?new Date(p):new Date}e.parseDate=u,Et(u,"parseDate");function d(p){const v=Math.abs(p);return v>=e.day-e.hour/2?Math.round(p/e.day)+"d":v>=e.hour-e.minute/2?Math.round(p/e.hour)+"h":v>=e.minute-e.second/2?Math.round(p/e.minute)+"m":v>=e.second?Math.round(p/e.second)+"s":p+"ms"}e.format=d,Et(d,"format");function f(p,v=2){return p.toString().padStart(v,"0")}e.toDigits=f,Et(f,"toDigits");function h(p,v=new Date){return p.replace("yyyy",v.getFullYear().toString()).replace("yy",v.getFullYear().toString().slice(2)).replace("MM",f(v.getMonth()+1)).replace("dd",f(v.getDate())).replace("hh",f(v.getHours())).replace("mm",f(v.getMinutes())).replace("ss",f(v.getSeconds())).replace("SSS",f(v.getMilliseconds(),3))}e.template=h,Et(h,"template")})(kh||(kh={}));/*! - * shared v9.3.0 - * (c) 2023 kazuya kawaguchi - * Released under the MIT License. - */const nd=typeof window!="undefined",ro=(e,t=!1)=>t?Symbol.for(e):Symbol(e),o3=(e,t,n)=>a3({l:e,k:t,s:n}),a3=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Qt=e=>typeof e=="number"&&isFinite(e),l3=e=>_y(e)==="[object Date]",Po=e=>_y(e)==="[object RegExp]",Fu=e=>ut(e)&&Object.keys(e).length===0,un=Object.assign;let Sh;const Wr=()=>Sh||(Sh=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function Eh(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const s3=Object.prototype.hasOwnProperty;function Rf(e,t){return s3.call(e,t)}const Vt=Array.isArray,Yt=e=>typeof e=="function",Be=e=>typeof e=="string",_t=e=>typeof e=="boolean",It=e=>e!==null&&typeof e=="object",yy=Object.prototype.toString,_y=e=>yy.call(e),ut=e=>{if(!It(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},i3=e=>e==null?"":Vt(e)||ut(e)&&e.toString===yy?JSON.stringify(e,null,2):String(e);function u3(e,t=""){return e.reduce((n,r,o)=>o===0?n+r:n+t+r,"")}function Nf(e){let t=e;return()=>++t}function c3(e,t){typeof console!="undefined"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}/*! - * message-compiler v9.3.0 - * (c) 2023 kazuya kawaguchi - * Released under the MIT License. - */function d3(e,t,n){return{line:e,column:t,offset:n}}function rd(e,t,n){const r={start:e,end:t};return n!=null&&(r.source=n),r}const f3=/\{([0-9a-zA-Z]+)\}/g;function p3(e,...t){return t.length===1&&m3(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(f3,(n,r)=>t.hasOwnProperty(r)?t[r]:"")}const wy=Object.assign,$h=e=>typeof e=="string",m3=e=>e!==null&&typeof e=="object";function Cy(e,t=""){return e.reduce((n,r,o)=>o===0?n+r:n+t+r,"")}const st={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},h3={[st.EXPECTED_TOKEN]:"Expected token: '{0}'",[st.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[st.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[st.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[st.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[st.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[st.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[st.EMPTY_PLACEHOLDER]:"Empty placeholder",[st.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[st.INVALID_LINKED_FORMAT]:"Invalid linked format",[st.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[st.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[st.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[st.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[st.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[st.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function ml(e,t,n={}){const{domain:r,messages:o,args:a}=n,l=p3((o||h3)[e]||"",...a||[]),s=new SyntaxError(String(l));return s.code=e,t&&(s.location=t),s.domain=r,s}function v3(e){throw e}const Nr=" ",g3="\r",bn=` -`,b3=String.fromCharCode(8232),y3=String.fromCharCode(8233);function _3(e){const t=e;let n=0,r=1,o=1,a=0;const l=E=>t[E]===g3&&t[E+1]===bn,s=E=>t[E]===bn,i=E=>t[E]===y3,u=E=>t[E]===b3,d=E=>l(E)||s(E)||i(E)||u(E),f=()=>n,h=()=>r,p=()=>o,v=()=>a,g=E=>l(E)||i(E)||u(E)?bn:t[E],w=()=>g(n),m=()=>g(n+a);function b(){return a=0,d(n)&&(r++,o=0),l(n)&&n++,n++,o++,t[n]}function _(){return l(n+a)&&a++,a++,t[n+a]}function y(){n=0,r=1,o=1,a=0}function C(E=0){a=E}function k(){const E=n+a;for(;E!==n;)b();a=0}return{index:f,line:h,column:p,peekOffset:v,charAt:g,currentChar:w,currentPeek:m,next:b,peek:_,reset:y,resetPeek:C,skipToPeek:k}}const co=void 0,w3=".",Th="'",C3="tokenizer";function k3(e,t={}){const n=t.location!==!1,r=_3(e),o=()=>r.index(),a=()=>d3(r.line(),r.column(),r.index()),l=a(),s=o(),i={currentType:14,offset:s,startLoc:l,endLoc:l,lastType:14,lastOffset:s,lastStartLoc:l,lastEndLoc:l,braceNest:0,inLinked:!1,text:""},u=()=>i,{onError:d}=t;function f($,T,z,...Z){const oe=u();if(T.column+=z,T.offset+=z,d){const _e=n?rd(oe.startLoc,T):null,we=ml($,_e,{domain:C3,args:Z});d(we)}}function h($,T,z){$.endLoc=a(),$.currentType=T;const Z={type:T};return n&&(Z.loc=rd($.startLoc,$.endLoc)),z!=null&&(Z.value=z),Z}const p=$=>h($,14);function v($,T){return $.currentChar()===T?($.next(),T):(f(st.EXPECTED_TOKEN,a(),0,T),"")}function g($){let T="";for(;$.currentPeek()===Nr||$.currentPeek()===bn;)T+=$.currentPeek(),$.peek();return T}function w($){const T=g($);return $.skipToPeek(),T}function m($){if($===co)return!1;const T=$.charCodeAt(0);return T>=97&&T<=122||T>=65&&T<=90||T===95}function b($){if($===co)return!1;const T=$.charCodeAt(0);return T>=48&&T<=57}function _($,T){const{currentType:z}=T;if(z!==2)return!1;g($);const Z=m($.currentPeek());return $.resetPeek(),Z}function y($,T){const{currentType:z}=T;if(z!==2)return!1;g($);const Z=$.currentPeek()==="-"?$.peek():$.currentPeek(),oe=b(Z);return $.resetPeek(),oe}function C($,T){const{currentType:z}=T;if(z!==2)return!1;g($);const Z=$.currentPeek()===Th;return $.resetPeek(),Z}function k($,T){const{currentType:z}=T;if(z!==8)return!1;g($);const Z=$.currentPeek()===".";return $.resetPeek(),Z}function E($,T){const{currentType:z}=T;if(z!==9)return!1;g($);const Z=m($.currentPeek());return $.resetPeek(),Z}function S($,T){const{currentType:z}=T;if(!(z===8||z===12))return!1;g($);const Z=$.currentPeek()===":";return $.resetPeek(),Z}function R($,T){const{currentType:z}=T;if(z!==10)return!1;const Z=()=>{const _e=$.currentPeek();return _e==="{"?m($.peek()):_e==="@"||_e==="%"||_e==="|"||_e===":"||_e==="."||_e===Nr||!_e?!1:_e===bn?($.peek(),Z()):m(_e)},oe=Z();return $.resetPeek(),oe}function L($){g($);const T=$.currentPeek()==="|";return $.resetPeek(),T}function F($){const T=g($),z=$.currentPeek()==="%"&&$.peek()==="{";return $.resetPeek(),{isModulo:z,hasSpace:T.length>0}}function N($,T=!0){const z=(oe=!1,_e="",we=!1)=>{const he=$.currentPeek();return he==="{"?_e==="%"?!1:oe:he==="@"||!he?_e==="%"?!0:oe:he==="%"?($.peek(),z(oe,"%",!0)):he==="|"?_e==="%"||we?!0:!(_e===Nr||_e===bn):he===Nr?($.peek(),z(!0,Nr,we)):he===bn?($.peek(),z(!0,bn,we)):!0},Z=z();return T&&$.resetPeek(),Z}function A($,T){const z=$.currentChar();return z===co?co:T(z)?($.next(),z):null}function M($){return A($,z=>{const Z=z.charCodeAt(0);return Z>=97&&Z<=122||Z>=65&&Z<=90||Z>=48&&Z<=57||Z===95||Z===36})}function H($){return A($,z=>{const Z=z.charCodeAt(0);return Z>=48&&Z<=57})}function j($){return A($,z=>{const Z=z.charCodeAt(0);return Z>=48&&Z<=57||Z>=65&&Z<=70||Z>=97&&Z<=102})}function V($){let T="",z="";for(;T=H($);)z+=T;return z}function X($){w($);const T=$.currentChar();return T!=="%"&&f(st.EXPECTED_TOKEN,a(),0,T),$.next(),"%"}function I($){let T="";for(;;){const z=$.currentChar();if(z==="{"||z==="}"||z==="@"||z==="|"||!z)break;if(z==="%")if(N($))T+=z,$.next();else break;else if(z===Nr||z===bn)if(N($))T+=z,$.next();else{if(L($))break;T+=z,$.next()}else T+=z,$.next()}return T}function Y($){w($);let T="",z="";for(;T=M($);)z+=T;return $.currentChar()===co&&f(st.UNTERMINATED_CLOSING_BRACE,a(),0),z}function ee($){w($);let T="";return $.currentChar()==="-"?($.next(),T+=`-${V($)}`):T+=V($),$.currentChar()===co&&f(st.UNTERMINATED_CLOSING_BRACE,a(),0),T}function W($){w($),v($,"'");let T="",z="";const Z=_e=>_e!==Th&&_e!==bn;for(;T=A($,Z);)T==="\\"?z+=re($):z+=T;const oe=$.currentChar();return oe===bn||oe===co?(f(st.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),0),oe===bn&&($.next(),v($,"'")),z):(v($,"'"),z)}function re($){const T=$.currentChar();switch(T){case"\\":case"'":return $.next(),`\\${T}`;case"u":return be($,T,4);case"U":return be($,T,6);default:return f(st.UNKNOWN_ESCAPE_SEQUENCE,a(),0,T),""}}function be($,T,z){v($,T);let Z="";for(let oe=0;oeoe!=="{"&&oe!=="}"&&oe!==Nr&&oe!==bn;for(;T=A($,Z);)z+=T;return z}function ge($){let T="",z="";for(;T=M($);)z+=T;return z}function J($){const T=(z=!1,Z)=>{const oe=$.currentChar();return oe==="{"||oe==="%"||oe==="@"||oe==="|"||!oe||oe===Nr?Z:oe===bn||oe===w3?(Z+=oe,$.next(),T(z,Z)):m(oe)?(Z+=oe,$.next(),T(!0,Z)):Z};return T(!1,"")}function te($){w($);const T=v($,"|");return w($),T}function ae($,T){let z=null;switch($.currentChar()){case"{":return T.braceNest>=1&&f(st.NOT_ALLOW_NEST_PLACEHOLDER,a(),0),$.next(),z=h(T,2,"{"),w($),T.braceNest++,z;case"}":return T.braceNest>0&&T.currentType===2&&f(st.EMPTY_PLACEHOLDER,a(),0),$.next(),z=h(T,3,"}"),T.braceNest--,T.braceNest>0&&w($),T.inLinked&&T.braceNest===0&&(T.inLinked=!1),z;case"@":return T.braceNest>0&&f(st.UNTERMINATED_CLOSING_BRACE,a(),0),z=le($,T)||p(T),T.braceNest=0,z;default:let oe=!0,_e=!0,we=!0;if(L($))return T.braceNest>0&&f(st.UNTERMINATED_CLOSING_BRACE,a(),0),z=h(T,1,te($)),T.braceNest=0,T.inLinked=!1,z;if(T.braceNest>0&&(T.currentType===5||T.currentType===6||T.currentType===7))return f(st.UNTERMINATED_CLOSING_BRACE,a(),0),T.braceNest=0,me($,T);if(oe=_($,T))return z=h(T,5,Y($)),w($),z;if(_e=y($,T))return z=h(T,6,ee($)),w($),z;if(we=C($,T))return z=h(T,7,W($)),w($),z;if(!oe&&!_e&&!we)return z=h(T,13,Te($)),f(st.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,z.value),w($),z;break}return z}function le($,T){const{currentType:z}=T;let Z=null;const oe=$.currentChar();switch((z===8||z===9||z===12||z===10)&&(oe===bn||oe===Nr)&&f(st.INVALID_LINKED_FORMAT,a(),0),oe){case"@":return $.next(),Z=h(T,8,"@"),T.inLinked=!0,Z;case".":return w($),$.next(),h(T,9,".");case":":return w($),$.next(),h(T,10,":");default:return L($)?(Z=h(T,1,te($)),T.braceNest=0,T.inLinked=!1,Z):k($,T)||S($,T)?(w($),le($,T)):E($,T)?(w($),h(T,12,ge($))):R($,T)?(w($),oe==="{"?ae($,T)||Z:h(T,11,J($))):(z===8&&f(st.INVALID_LINKED_FORMAT,a(),0),T.braceNest=0,T.inLinked=!1,me($,T))}}function me($,T){let z={type:14};if(T.braceNest>0)return ae($,T)||p(T);if(T.inLinked)return le($,T)||p(T);switch($.currentChar()){case"{":return ae($,T)||p(T);case"}":return f(st.UNBALANCED_CLOSING_BRACE,a(),0),$.next(),h(T,3,"}");case"@":return le($,T)||p(T);default:if(L($))return z=h(T,1,te($)),T.braceNest=0,T.inLinked=!1,z;const{isModulo:oe,hasSpace:_e}=F($);if(oe)return _e?h(T,0,I($)):h(T,4,X($));if(N($))return h(T,0,I($));break}return z}function P(){const{currentType:$,offset:T,startLoc:z,endLoc:Z}=i;return i.lastType=$,i.lastOffset=T,i.lastStartLoc=z,i.lastEndLoc=Z,i.offset=o(),i.startLoc=a(),r.currentChar()===co?h(i,14):me(r,i)}return{nextToken:P,currentOffset:o,currentPosition:a,context:u}}const S3="parser",E3=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function $3(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const r=parseInt(t||n,16);return r<=55295||r>=57344?String.fromCodePoint(r):"\uFFFD"}}}function T3(e={}){const t=e.location!==!1,{onError:n}=e;function r(m,b,_,y,...C){const k=m.currentPosition();if(k.offset+=y,k.column+=y,n){const E=t?rd(_,k):null,S=ml(b,E,{domain:S3,args:C});n(S)}}function o(m,b,_){const y={type:m};return t&&(y.start=b,y.end=b,y.loc={start:_,end:_}),y}function a(m,b,_,y){y&&(m.type=y),t&&(m.end=b,m.loc&&(m.loc.end=_))}function l(m,b){const _=m.context(),y=o(3,_.offset,_.startLoc);return y.value=b,a(y,m.currentOffset(),m.currentPosition()),y}function s(m,b){const _=m.context(),{lastOffset:y,lastStartLoc:C}=_,k=o(5,y,C);return k.index=parseInt(b,10),m.nextToken(),a(k,m.currentOffset(),m.currentPosition()),k}function i(m,b){const _=m.context(),{lastOffset:y,lastStartLoc:C}=_,k=o(4,y,C);return k.key=b,m.nextToken(),a(k,m.currentOffset(),m.currentPosition()),k}function u(m,b){const _=m.context(),{lastOffset:y,lastStartLoc:C}=_,k=o(9,y,C);return k.value=b.replace(E3,$3),m.nextToken(),a(k,m.currentOffset(),m.currentPosition()),k}function d(m){const b=m.nextToken(),_=m.context(),{lastOffset:y,lastStartLoc:C}=_,k=o(8,y,C);return b.type!==12?(r(m,st.UNEXPECTED_EMPTY_LINKED_MODIFIER,_.lastStartLoc,0),k.value="",a(k,y,C),{nextConsumeToken:b,node:k}):(b.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,wr(b)),k.value=b.value||"",a(k,m.currentOffset(),m.currentPosition()),{node:k})}function f(m,b){const _=m.context(),y=o(7,_.offset,_.startLoc);return y.value=b,a(y,m.currentOffset(),m.currentPosition()),y}function h(m){const b=m.context(),_=o(6,b.offset,b.startLoc);let y=m.nextToken();if(y.type===9){const C=d(m);_.modifier=C.node,y=C.nextConsumeToken||m.nextToken()}switch(y.type!==10&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(y)),y=m.nextToken(),y.type===2&&(y=m.nextToken()),y.type){case 11:y.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(y)),_.key=f(m,y.value||"");break;case 5:y.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(y)),_.key=i(m,y.value||"");break;case 6:y.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(y)),_.key=s(m,y.value||"");break;case 7:y.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(y)),_.key=u(m,y.value||"");break;default:r(m,st.UNEXPECTED_EMPTY_LINKED_KEY,b.lastStartLoc,0);const C=m.context(),k=o(7,C.offset,C.startLoc);return k.value="",a(k,C.offset,C.startLoc),_.key=k,a(_,C.offset,C.startLoc),{nextConsumeToken:y,node:_}}return a(_,m.currentOffset(),m.currentPosition()),{node:_}}function p(m){const b=m.context(),_=b.currentType===1?m.currentOffset():b.offset,y=b.currentType===1?b.endLoc:b.startLoc,C=o(2,_,y);C.items=[];let k=null;do{const R=k||m.nextToken();switch(k=null,R.type){case 0:R.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(R)),C.items.push(l(m,R.value||""));break;case 6:R.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(R)),C.items.push(s(m,R.value||""));break;case 5:R.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(R)),C.items.push(i(m,R.value||""));break;case 7:R.value==null&&r(m,st.UNEXPECTED_LEXICAL_ANALYSIS,b.lastStartLoc,0,wr(R)),C.items.push(u(m,R.value||""));break;case 8:const L=h(m);C.items.push(L.node),k=L.nextConsumeToken||null;break}}while(b.currentType!==14&&b.currentType!==1);const E=b.currentType===1?b.lastOffset:m.currentOffset(),S=b.currentType===1?b.lastEndLoc:m.currentPosition();return a(C,E,S),C}function v(m,b,_,y){const C=m.context();let k=y.items.length===0;const E=o(1,b,_);E.cases=[],E.cases.push(y);do{const S=p(m);k||(k=S.items.length===0),E.cases.push(S)}while(C.currentType!==14);return k&&r(m,st.MUST_HAVE_MESSAGES_IN_PLURAL,_,0),a(E,m.currentOffset(),m.currentPosition()),E}function g(m){const b=m.context(),{offset:_,startLoc:y}=b,C=p(m);return b.currentType===14?C:v(m,_,y,C)}function w(m){const b=k3(m,wy({},e)),_=b.context(),y=o(0,_.offset,_.startLoc);return t&&y.loc&&(y.loc.source=m),y.body=g(b),e.onCacheKey&&(y.cacheKey=e.onCacheKey(m)),_.currentType!==14&&r(b,st.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,m[_.offset]||""),a(y,b.currentOffset(),b.currentPosition()),y}return{parse:w}}function wr(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"\u2026":t}function x3(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:a=>(n.helpers.add(a),a)}}function xh(e,t){for(let n=0;nOh(n)),e}function Oh(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;ns;function u(w,m){s.code+=w}function d(w,m=!0){const b=m?o:"";u(a?b+" ".repeat(w):b)}function f(w=!0){const m=++s.indentLevel;w&&d(m)}function h(w=!0){const m=--s.indentLevel;w&&d(m)}function p(){d(s.indentLevel)}return{context:i,push:u,indent:f,deindent:h,newline:p,helper:w=>`_${w}`,needIndent:()=>s.needIndent}}function M3(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),Qa(e,t.key),t.modifier?(e.push(", "),Qa(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function R3(e,t){const{helper:n,needIndent:r}=e;e.push(`${n("normalize")}([`),e.indent(r());const o=t.items.length;for(let a=0;a1){e.push(`${n("plural")}([`),e.indent(r());const o=t.cases.length;for(let a=0;a{const n=$h(t.mode)?t.mode:"normal",r=$h(t.filename)?t.filename:"message.intl",o=!!t.sourceMap,a=t.breakLineCode!=null?t.breakLineCode:n==="arrow"?";":` -`,l=t.needIndent?t.needIndent:n!=="arrow",s=e.helpers||[],i=L3(e,{mode:n,filename:r,sourceMap:o,breakLineCode:a,needIndent:l});i.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),i.indent(l),s.length>0&&(i.push(`const { ${Cy(s.map(f=>`${f}: _${f}`),", ")} } = ctx`),i.newline()),i.push("return "),Qa(i,e),i.deindent(l),i.push("}"),delete e.helpers;const{code:u,map:d}=i.context();return{ast:e,code:u,map:d?d.toJSON():void 0}};function V3(e,t={}){const n=wy({},t),r=!!n.jit,o=!!n.minify,a=n.optimize==null?!0:n.optimize,s=T3(n).parse(e);return r?(a&&A3(s),o&&Ia(s),{ast:s,code:""}):(O3(s,n),F3(s,n))}/*! - * devtools-if v9.3.0 - * (c) 2023 kazuya kawaguchi - * Released under the MIT License. - */const ky={I18nInit:"i18n:init",FunctionTranslate:"function:translate"};/*! - * core-base v9.3.0 - * (c) 2023 kazuya kawaguchi - * Released under the MIT License. - */function B3(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Wr().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Wr().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Wr().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const No=[];No[0]={w:[0],i:[3,0],["["]:[4],o:[7]};No[1]={w:[1],["."]:[2],["["]:[4],o:[7]};No[2]={w:[2],i:[3,0],[0]:[3,0]};No[3]={i:[3,0],[0]:[3,0],w:[1,1],["."]:[2,1],["["]:[4,1],o:[7,1]};No[4]={["'"]:[5,0],['"']:[6,0],["["]:[4,2],["]"]:[1,3],o:8,l:[4,0]};No[5]={["'"]:[4,0],o:8,l:[5,0]};No[6]={['"']:[4,0],o:8,l:[6,0]};const z3=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function H3(e){return z3.test(e)}function j3(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function W3(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function U3(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:H3(t)?j3(t):"*"+t}function K3(e){const t=[];let n=-1,r=0,o=0,a,l,s,i,u,d,f;const h=[];h[0]=()=>{l===void 0?l=s:l+=s},h[1]=()=>{l!==void 0&&(t.push(l),l=void 0)},h[2]=()=>{h[0](),o++},h[3]=()=>{if(o>0)o--,r=4,h[0]();else{if(o=0,l===void 0||(l=U3(l),l===!1))return!1;h[1]()}};function p(){const v=e[n+1];if(r===5&&v==="'"||r===6&&v==='"')return n++,s="\\"+v,h[0](),!0}for(;r!==null;)if(n++,a=e[n],!(a==="\\"&&p())){if(i=W3(a),f=No[r],u=f[i]||f.l||8,u===8||(r=u[0],u[1]!==void 0&&(d=h[u[1]],d&&(s=a,d()===!1))))return;if(r===7)return t}}const Ah=new Map;function q3(e,t){return It(e)?e[t]:null}function Y3(e,t){if(!It(e))return null;let n=Ah.get(t);if(n||(n=K3(t),n&&Ah.set(t,n)),!n)return null;const r=n.length;let o=e,a=0;for(;ae,X3=e=>"",J3="text",Z3=e=>e.length===0?"":u3(e),Q3=i3;function Ih(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function ex(e){const t=Qt(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(Qt(e.named.count)||Qt(e.named.n))?Qt(e.named.count)?e.named.count:Qt(e.named.n)?e.named.n:t:t}function tx(e,t){t.count||(t.count=e),t.n||(t.n=e)}function nx(e={}){const t=e.locale,n=ex(e),r=It(e.pluralRules)&&Be(t)&&Yt(e.pluralRules[t])?e.pluralRules[t]:Ih,o=It(e.pluralRules)&&Be(t)&&Yt(e.pluralRules[t])?Ih:void 0,a=m=>m[r(n,m.length,o)],l=e.list||[],s=m=>l[m],i=e.named||{};Qt(e.pluralIndex)&&tx(n,i);const u=m=>i[m];function d(m){const b=Yt(e.messages)?e.messages(m):It(e.messages)?e.messages[m]:!1;return b||(e.parent?e.parent.message(m):X3)}const f=m=>e.modifiers?e.modifiers[m]:G3,h=ut(e.processor)&&Yt(e.processor.normalize)?e.processor.normalize:Z3,p=ut(e.processor)&&Yt(e.processor.interpolate)?e.processor.interpolate:Q3,v=ut(e.processor)&&Be(e.processor.type)?e.processor.type:J3,w={list:s,named:u,plural:a,linked:(m,...b)=>{const[_,y]=b;let C="text",k="";b.length===1?It(_)?(k=_.modifier||k,C=_.type||C):Be(_)&&(k=_||k):b.length===2&&(Be(_)&&(k=_||k),Be(y)&&(C=y||C));const E=d(m)(w),S=C==="vnode"&&Vt(E)&&k?E[0]:E;return k?f(k)(S,C):S},message:d,type:v,interpolate:p,normalize:h,values:un({},l,i)};return w}let cs=null;function rx(e){cs=e}function ox(e,t,n){cs&&cs.emit(ky.I18nInit,{timestamp:Date.now(),i18n:e,version:t,meta:n})}const ax=lx(ky.FunctionTranslate);function lx(e){return t=>cs&&cs.emit(e,t)}const sx={NOT_FOUND_KEY:1,FALLBACK_TO_TRANSLATE:2,CANNOT_FORMAT_NUMBER:3,FALLBACK_TO_NUMBER_FORMAT:4,CANNOT_FORMAT_DATE:5,FALLBACK_TO_DATE_FORMAT:6,EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:7,__EXTEND_POINT__:8};function ix(e,t,n){return[...new Set([n,...Vt(t)?t:It(t)?Object.keys(t):Be(t)?[t]:[n]])]}function Ff(e,t,n){const r=Be(n)?n:Ns,o=e;o.__localeChainCache||(o.__localeChainCache=new Map);let a=o.__localeChainCache.get(r);if(!a){a=[];let l=[n];for(;Vt(l);)l=Ph(a,l,t);const s=Vt(t)||!ut(t)?t:t.default?t.default:null;l=Be(s)?[s]:s,Vt(l)&&Ph(a,l,!1),o.__localeChainCache.set(r,a)}return a}function Ph(e,t,n){let r=!0;for(let o=0;o`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function fx(){return{upper:(e,t)=>t==="text"&&Be(e)?e.toUpperCase():t==="vnode"&&It(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&Be(e)?e.toLowerCase():t==="vnode"&&It(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&Be(e)?Mh(e):t==="vnode"&&It(e)&&"__v_isVNode"in e?Mh(e.children):e}}let Sy;function Rh(e){Sy=e}let Ey;function px(e){Ey=e}let $y;function mx(e){$y=e}let Ty=null;const Nh=e=>{Ty=e},hx=()=>Ty;let xy=null;const Dh=e=>{xy=e},vx=()=>xy;let Fh=0;function gx(e={}){const t=Yt(e.onWarn)?e.onWarn:c3,n=Be(e.version)?e.version:dx,r=Be(e.locale)?e.locale:Ns,o=Vt(e.fallbackLocale)||ut(e.fallbackLocale)||Be(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:r,a=ut(e.messages)?e.messages:{[r]:{}},l=ut(e.datetimeFormats)?e.datetimeFormats:{[r]:{}},s=ut(e.numberFormats)?e.numberFormats:{[r]:{}},i=un({},e.modifiers||{},fx()),u=e.pluralRules||{},d=Yt(e.missing)?e.missing:null,f=_t(e.missingWarn)||Po(e.missingWarn)?e.missingWarn:!0,h=_t(e.fallbackWarn)||Po(e.fallbackWarn)?e.fallbackWarn:!0,p=!!e.fallbackFormat,v=!!e.unresolving,g=Yt(e.postTranslation)?e.postTranslation:null,w=ut(e.processor)?e.processor:null,m=_t(e.warnHtmlMessage)?e.warnHtmlMessage:!0,b=!!e.escapeParameter,_=Yt(e.messageCompiler)?e.messageCompiler:Sy,y=Yt(e.messageResolver)?e.messageResolver:Ey||q3,C=Yt(e.localeFallbacker)?e.localeFallbacker:$y||ix,k=It(e.fallbackContext)?e.fallbackContext:void 0,E=e,S=It(E.__datetimeFormatters)?E.__datetimeFormatters:new Map,R=It(E.__numberFormatters)?E.__numberFormatters:new Map,L=It(E.__meta)?E.__meta:{};Fh++;const F={version:n,cid:Fh,locale:r,fallbackLocale:o,messages:a,modifiers:i,pluralRules:u,missing:d,missingWarn:f,fallbackWarn:h,fallbackFormat:p,unresolving:v,postTranslation:g,processor:w,warnHtmlMessage:m,escapeParameter:b,messageCompiler:_,messageResolver:y,localeFallbacker:C,fallbackContext:k,onWarn:t,__meta:L};return F.datetimeFormats=l,F.numberFormats=s,F.__datetimeFormatters=S,F.__numberFormatters=R,__INTLIFY_PROD_DEVTOOLS__&&ox(F,n,L),F}function Vf(e,t,n,r,o){const{missing:a,onWarn:l}=e;if(a!==null){const s=a(e,n,t,o);return Be(s)?s:t}else return t}function xl(e,t,n){const r=e;r.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function gc(e){return n=>bx(n,e)}function bx(e,t){const n=t.b||t.body;if((n.t||n.type)===1){const r=n,o=r.c||r.cases;return e.plural(o.reduce((a,l)=>[...a,Vh(e,l)],[]))}else return Vh(e,n)}function Vh(e,t){const n=t.s||t.static;if(n)return e.type==="text"?n:e.normalize([n]);{const r=(t.i||t.items).reduce((o,a)=>[...o,od(e,a)],[]);return e.normalize(r)}}function od(e,t){const n=t.t||t.type;switch(n){case 3:const r=t;return r.v||r.value;case 9:const o=t;return o.v||o.value;case 4:const a=t;return e.interpolate(e.named(a.k||a.key));case 5:const l=t;return e.interpolate(e.list(l.i||l.index));case 6:const s=t,i=s.m||s.modifier;return e.linked(od(e,s.k||s.key),i?od(e,i):void 0,e.type);case 7:const u=t;return u.v||u.value;case 8:const d=t;return d.v||d.value;default:throw new Error(`unhandled node type on format message part: ${n}`)}}const Oy=st.__EXTEND_POINT__,ci=Nf(Oy),Co={INVALID_ARGUMENT:Oy,INVALID_DATE_ARGUMENT:ci(),INVALID_ISO_DATE_ARGUMENT:ci(),NOT_SUPPORT_NON_STRING_MESSAGE:ci(),__EXTEND_POINT__:ci()};function Zo(e){return ml(e,null,void 0)}const Ay=e=>e;let Ma=Object.create(null);const ds=e=>It(e)&&(e.t===0||e.type===0)&&("b"in e||"body"in e);function Iy(e,t={}){let n=!1;const r=t.onError||v3;return t.onError=o=>{n=!0,r(o)},{...V3(e,t),detectError:n}}function yx(e,t){if(!Be(e))throw Zo(Co.NOT_SUPPORT_NON_STRING_MESSAGE);{_t(t.warnHtmlMessage)&&t.warnHtmlMessage;const r=(t.onCacheKey||Ay)(e),o=Ma[r];if(o)return o;const{code:a,detectError:l}=Iy(e,t),s=new Function(`return ${a}`)();return l?s:Ma[r]=s}}function _x(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&Be(e)){_t(t.warnHtmlMessage)&&t.warnHtmlMessage;const r=(t.onCacheKey||Ay)(e),o=Ma[r];if(o)return o;const{ast:a,detectError:l}=Iy(e,{...t,location:!1,jit:!0}),s=gc(a);return l?s:Ma[r]=s}else{const n=e.cacheKey;if(n){const r=Ma[n];return r||(Ma[n]=gc(e))}else return gc(e)}}const Bh=()=>"",ar=e=>Yt(e);function zh(e,...t){const{fallbackFormat:n,postTranslation:r,unresolving:o,messageCompiler:a,fallbackLocale:l,messages:s}=e,[i,u]=ad(...t),d=_t(u.missingWarn)?u.missingWarn:e.missingWarn,f=_t(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,h=_t(u.escapeParameter)?u.escapeParameter:e.escapeParameter,p=!!u.resolvedMessage,v=Be(u.default)||_t(u.default)?_t(u.default)?a?i:()=>i:u.default:n?a?i:()=>i:"",g=n||v!=="",w=Be(u.locale)?u.locale:e.locale;h&&wx(u);let[m,b,_]=p?[i,w,s[w]||{}]:Py(e,i,w,l,f,d),y=m,C=i;if(!p&&!(Be(y)||ds(y)||ar(y))&&g&&(y=v,C=y),!p&&(!(Be(y)||ds(y)||ar(y))||!Be(b)))return o?Vu:i;let k=!1;const E=()=>{k=!0},S=ar(y)?y:Ly(e,i,b,y,C,E);if(k)return y;const R=Sx(e,b,_,u),L=nx(R),F=Cx(e,S,L),N=r?r(F,i):F;if(__INTLIFY_PROD_DEVTOOLS__){const A={timestamp:Date.now(),key:Be(i)?i:ar(y)?y.key:"",locale:b||(ar(y)?y.locale:""),format:Be(y)?y:ar(y)?y.source:"",message:N};A.meta=un({},e.__meta,hx()||{}),ax(A)}return N}function wx(e){Vt(e.list)?e.list=e.list.map(t=>Be(t)?Eh(t):t):It(e.named)&&Object.keys(e.named).forEach(t=>{Be(e.named[t])&&(e.named[t]=Eh(e.named[t]))})}function Py(e,t,n,r,o,a){const{messages:l,onWarn:s,messageResolver:i,localeFallbacker:u}=e,d=u(e,r,n);let f={},h,p=null;const v="translate";for(let g=0;gr;return u.locale=n,u.key=t,u}const i=l(r,kx(e,n,o,r,s,a));return i.locale=n,i.key=t,i.source=r,i}function Cx(e,t,n){return t(n)}function ad(...e){const[t,n,r]=e,o={};if(!Be(t)&&!Qt(t)&&!ar(t)&&!ds(t))throw Zo(Co.INVALID_ARGUMENT);const a=Qt(t)?String(t):(ar(t),t);return Qt(n)?o.plural=n:Be(n)?o.default=n:ut(n)&&!Fu(n)?o.named=n:Vt(n)&&(o.list=n),Qt(r)?o.plural=r:Be(r)?o.default=r:ut(r)&&un(o,r),[a,o]}function kx(e,t,n,r,o,a){return{locale:t,key:n,warnHtmlMessage:o,onError:l=>{throw a&&a(l),l},onCacheKey:l=>o3(t,n,l)}}function Sx(e,t,n,r){const{modifiers:o,pluralRules:a,messageResolver:l,fallbackLocale:s,fallbackWarn:i,missingWarn:u,fallbackContext:d}=e,h={locale:t,modifiers:o,pluralRules:a,messages:p=>{let v=l(n,p);if(v==null&&d){const[,,g]=Py(d,p,t,s,i,u);v=l(g,p)}if(Be(v)||ds(v)){let g=!1;const m=Ly(e,p,t,v,p,()=>{g=!0});return g?Bh:m}else return ar(v)?v:Bh}};return e.processor&&(h.processor=e.processor),r.list&&(h.list=r.list),r.named&&(h.named=r.named),Qt(r.plural)&&(h.pluralIndex=r.plural),h}function Hh(e,...t){const{datetimeFormats:n,unresolving:r,fallbackLocale:o,onWarn:a,localeFallbacker:l}=e,{__datetimeFormatters:s}=e,[i,u,d,f]=ld(...t),h=_t(d.missingWarn)?d.missingWarn:e.missingWarn;_t(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const p=!!d.part,v=Be(d.locale)?d.locale:e.locale,g=l(e,o,v);if(!Be(i)||i==="")return new Intl.DateTimeFormat(v,f).format(u);let w={},m,b=null;const _="datetime format";for(let k=0;k{My.includes(i)?l[i]=n[i]:a[i]=n[i]}),Be(r)?a.locale=r:ut(r)&&(l=r),ut(o)&&(l=o),[a.key||"",s,a,l]}function jh(e,t,n){const r=e;for(const o in n){const a=`${t}__${o}`;!r.__datetimeFormatters.has(a)||r.__datetimeFormatters.delete(a)}}function Wh(e,...t){const{numberFormats:n,unresolving:r,fallbackLocale:o,onWarn:a,localeFallbacker:l}=e,{__numberFormatters:s}=e,[i,u,d,f]=sd(...t),h=_t(d.missingWarn)?d.missingWarn:e.missingWarn;_t(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const p=!!d.part,v=Be(d.locale)?d.locale:e.locale,g=l(e,o,v);if(!Be(i)||i==="")return new Intl.NumberFormat(v,f).format(u);let w={},m,b=null;const _="number format";for(let k=0;k{Ry.includes(i)?l[i]=n[i]:a[i]=n[i]}),Be(r)?a.locale=r:ut(r)&&(l=r),ut(o)&&(l=o),[a.key||"",s,a,l]}function Uh(e,t,n){const r=e;for(const o in n){const a=`${t}__${o}`;!r.__numberFormatters.has(a)||r.__numberFormatters.delete(a)}}B3();/*! - * vue-i18n v9.3.0 - * (c) 2023 kazuya kawaguchi - * Released under the MIT License. - */const Ex="9.3.0";function $x(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Wr().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Wr().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Wr().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Wr().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Wr().__INTLIFY_PROD_DEVTOOLS__=!1)}const Ny=sx.__EXTEND_POINT__,fo=Nf(Ny);fo(),fo(),fo(),fo(),fo(),fo(),fo(),fo();const Dy=Co.__EXTEND_POINT__,Sn=Nf(Dy),Gt={UNEXPECTED_RETURN_TYPE:Dy,INVALID_ARGUMENT:Sn(),MUST_BE_CALL_SETUP_TOP:Sn(),NOT_INSTALLED:Sn(),NOT_AVAILABLE_IN_LEGACY_MODE:Sn(),REQUIRED_VALUE:Sn(),INVALID_VALUE:Sn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Sn(),NOT_INSTALLED_WITH_PROVIDE:Sn(),UNEXPECTED_ERROR:Sn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Sn(),BRIDGE_SUPPORT_VUE_2_ONLY:Sn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Sn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Sn(),__EXTEND_POINT__:Sn()};function tn(e,...t){return ml(e,null,void 0)}const id=ro("__translateVNode"),ud=ro("__datetimeParts"),cd=ro("__numberParts"),Fy=ro("__setPluralRules");ro("__intlifyMeta");const Vy=ro("__injectWithOption"),dd=ro("__dispose");function fd(e){if(!It(e))return e;for(const t in e)if(!!Rf(e,t))if(!t.includes("."))It(e[t])&&fd(e[t]);else{const n=t.split("."),r=n.length-1;let o=e,a=!1;for(let l=0;l{if("locale"in s&&"resource"in s){const{locale:i,resource:u}=s;i?(l[i]=l[i]||{},Wl(u,l[i])):Wl(u,l)}else Be(s)&&Wl(JSON.parse(s),l)}),o==null&&a)for(const s in l)Rf(l,s)&&fd(l[s]);return l}const di=e=>!It(e)||Vt(e);function Wl(e,t){if(di(e)||di(t))throw tn(Gt.INVALID_VALUE);for(const n in e)Rf(e,n)&&(di(e[n])||di(t[n])?t[n]=e[n]:Wl(e[n],t[n]))}function By(e){return e.type}function zy(e,t,n){let r=It(t.messages)?t.messages:{};"__i18nGlobal"in n&&(r=Bu(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const o=Object.keys(r);o.length&&o.forEach(a=>{e.mergeLocaleMessage(a,r[a])});{if(It(t.datetimeFormats)){const a=Object.keys(t.datetimeFormats);a.length&&a.forEach(l=>{e.mergeDateTimeFormat(l,t.datetimeFormats[l])})}if(It(t.numberFormats)){const a=Object.keys(t.numberFormats);a.length&&a.forEach(l=>{e.mergeNumberFormat(l,t.numberFormats[l])})}}}function Kh(e){return Q(Gr,null,e,0)}const qh="__INTLIFY_META__";let Yh=0;function Gh(e){return(t,n,r,o)=>e(n,r,lt()||void 0,o)}const Tx=()=>{const e=lt();let t=null;return e&&(t=By(e)[qh])?{[qh]:t}:null};function Bf(e={},t){const{__root:n,__injectWithOption:r}=e,o=n===void 0;let a=_t(e.inheritLocale)?e.inheritLocale:!0;const l=B(n&&a?n.locale.value:Be(e.locale)?e.locale:Ns),s=B(n&&a?n.fallbackLocale.value:Be(e.fallbackLocale)||Vt(e.fallbackLocale)||ut(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:l.value),i=B(Bu(l.value,e)),u=B(ut(e.datetimeFormats)?e.datetimeFormats:{[l.value]:{}}),d=B(ut(e.numberFormats)?e.numberFormats:{[l.value]:{}});let f=n?n.missingWarn:_t(e.missingWarn)||Po(e.missingWarn)?e.missingWarn:!0,h=n?n.fallbackWarn:_t(e.fallbackWarn)||Po(e.fallbackWarn)?e.fallbackWarn:!0,p=n?n.fallbackRoot:_t(e.fallbackRoot)?e.fallbackRoot:!0,v=!!e.fallbackFormat,g=Yt(e.missing)?e.missing:null,w=Yt(e.missing)?Gh(e.missing):null,m=Yt(e.postTranslation)?e.postTranslation:null,b=n?n.warnHtmlMessage:_t(e.warnHtmlMessage)?e.warnHtmlMessage:!0,_=!!e.escapeParameter;const y=n?n.modifiers:ut(e.modifiers)?e.modifiers:{};let C=e.pluralRules||n&&n.pluralRules,k;k=(()=>{o&&Dh(null);const ne={version:Ex,locale:l.value,fallbackLocale:s.value,messages:i.value,modifiers:y,pluralRules:C,missing:w===null?void 0:w,missingWarn:f,fallbackWarn:h,fallbackFormat:v,unresolving:!0,postTranslation:m===null?void 0:m,warnHtmlMessage:b,escapeParameter:_,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};ne.datetimeFormats=u.value,ne.numberFormats=d.value,ne.__datetimeFormatters=ut(k)?k.__datetimeFormatters:void 0,ne.__numberFormatters=ut(k)?k.__numberFormatters:void 0;const ue=gx(ne);return o&&Dh(ue),ue})(),xl(k,l.value,s.value);function S(){return[l.value,s.value,i.value,u.value,d.value]}const R=O({get:()=>l.value,set:ne=>{l.value=ne,k.locale=l.value}}),L=O({get:()=>s.value,set:ne=>{s.value=ne,k.fallbackLocale=s.value,xl(k,l.value,ne)}}),F=O(()=>i.value),N=O(()=>u.value),A=O(()=>d.value);function M(){return Yt(m)?m:null}function H(ne){m=ne,k.postTranslation=ne}function j(){return g}function V(ne){ne!==null&&(w=Gh(ne)),g=ne,k.missing=w}const X=(ne,ue,ie,Oe,We,Xe)=>{S();let fe;try{__INTLIFY_PROD_DEVTOOLS__&&Nh(Tx()),o||(k.fallbackContext=n?vx():void 0),fe=ne(k)}finally{__INTLIFY_PROD_DEVTOOLS__&&Nh(null),o||(k.fallbackContext=void 0)}if(Qt(fe)&&fe===Vu){const[ve,Ce]=ue();return n&&p?Oe(n):We(ve)}else{if(Xe(fe))return fe;throw tn(Gt.UNEXPECTED_RETURN_TYPE)}};function I(...ne){return X(ue=>Reflect.apply(zh,null,[ue,...ne]),()=>ad(...ne),"translate",ue=>Reflect.apply(ue.t,ue,[...ne]),ue=>ue,ue=>Be(ue))}function Y(...ne){const[ue,ie,Oe]=ne;if(Oe&&!It(Oe))throw tn(Gt.INVALID_ARGUMENT);return I(ue,ie,un({resolvedMessage:!0},Oe||{}))}function ee(...ne){return X(ue=>Reflect.apply(Hh,null,[ue,...ne]),()=>ld(...ne),"datetime format",ue=>Reflect.apply(ue.d,ue,[...ne]),()=>Lh,ue=>Be(ue))}function W(...ne){return X(ue=>Reflect.apply(Wh,null,[ue,...ne]),()=>sd(...ne),"number format",ue=>Reflect.apply(ue.n,ue,[...ne]),()=>Lh,ue=>Be(ue))}function re(ne){return ne.map(ue=>Be(ue)||Qt(ue)||_t(ue)?Kh(String(ue)):ue)}const Te={normalize:re,interpolate:ne=>ne,type:"vnode"};function ge(...ne){return X(ue=>{let ie;const Oe=ue;try{Oe.processor=Te,ie=Reflect.apply(zh,null,[Oe,...ne])}finally{Oe.processor=null}return ie},()=>ad(...ne),"translate",ue=>ue[id](...ne),ue=>[Kh(ue)],ue=>Vt(ue))}function J(...ne){return X(ue=>Reflect.apply(Wh,null,[ue,...ne]),()=>sd(...ne),"number format",ue=>ue[cd](...ne),()=>[],ue=>Be(ue)||Vt(ue))}function te(...ne){return X(ue=>Reflect.apply(Hh,null,[ue,...ne]),()=>ld(...ne),"datetime format",ue=>ue[ud](...ne),()=>[],ue=>Be(ue)||Vt(ue))}function ae(ne){C=ne,k.pluralRules=C}function le(ne,ue){const ie=Be(ue)?ue:l.value,Oe=$(ie);return k.messageResolver(Oe,ne)!==null}function me(ne){let ue=null;const ie=Ff(k,s.value,l.value);for(let Oe=0;Oe{a&&(l.value=ne,k.locale=ne,xl(k,l.value,s.value))}),$e(n.fallbackLocale,ne=>{a&&(s.value=ne,k.fallbackLocale=ne,xl(k,l.value,s.value))}));const Me={id:Yh,locale:R,fallbackLocale:L,get inheritLocale(){return a},set inheritLocale(ne){a=ne,ne&&n&&(l.value=n.locale.value,s.value=n.fallbackLocale.value,xl(k,l.value,s.value))},get availableLocales(){return Object.keys(i.value).sort()},messages:F,get modifiers(){return y},get pluralRules(){return C||{}},get isGlobal(){return o},get missingWarn(){return f},set missingWarn(ne){f=ne,k.missingWarn=f},get fallbackWarn(){return h},set fallbackWarn(ne){h=ne,k.fallbackWarn=h},get fallbackRoot(){return p},set fallbackRoot(ne){p=ne},get fallbackFormat(){return v},set fallbackFormat(ne){v=ne,k.fallbackFormat=v},get warnHtmlMessage(){return b},set warnHtmlMessage(ne){b=ne,k.warnHtmlMessage=ne},get escapeParameter(){return _},set escapeParameter(ne){_=ne,k.escapeParameter=ne},t:I,getLocaleMessage:$,setLocaleMessage:T,mergeLocaleMessage:z,getPostTranslationHandler:M,setPostTranslationHandler:H,getMissingHandler:j,setMissingHandler:V,[Fy]:ae};return Me.datetimeFormats=N,Me.numberFormats=A,Me.rt=Y,Me.te=le,Me.tm=P,Me.d=ee,Me.n=W,Me.getDateTimeFormat=Z,Me.setDateTimeFormat=oe,Me.mergeDateTimeFormat=_e,Me.getNumberFormat=we,Me.setNumberFormat=he,Me.mergeNumberFormat=ke,Me[Vy]=r,Me[id]=ge,Me[ud]=te,Me[cd]=J,Me}function xx(e){const t=Be(e.locale)?e.locale:Ns,n=Be(e.fallbackLocale)||Vt(e.fallbackLocale)||ut(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=Yt(e.missing)?e.missing:void 0,o=_t(e.silentTranslationWarn)||Po(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,a=_t(e.silentFallbackWarn)||Po(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,l=_t(e.fallbackRoot)?e.fallbackRoot:!0,s=!!e.formatFallbackMessages,i=ut(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,d=Yt(e.postTranslation)?e.postTranslation:void 0,f=Be(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,h=!!e.escapeParameterHtml,p=_t(e.sync)?e.sync:!0;let v=e.messages;if(ut(e.sharedMessages)){const C=e.sharedMessages;v=Object.keys(C).reduce((E,S)=>{const R=E[S]||(E[S]={});return un(R,C[S]),E},v||{})}const{__i18n:g,__root:w,__injectWithOption:m}=e,b=e.datetimeFormats,_=e.numberFormats,y=e.flatJson;return{locale:t,fallbackLocale:n,messages:v,flatJson:y,datetimeFormats:b,numberFormats:_,missing:r,missingWarn:o,fallbackWarn:a,fallbackRoot:l,fallbackFormat:s,modifiers:i,pluralRules:u,postTranslation:d,warnHtmlMessage:f,escapeParameter:h,messageResolver:e.messageResolver,inheritLocale:p,__i18n:g,__root:w,__injectWithOption:m}}function pd(e={},t){{const n=Bf(xx(e)),{__extender:r}=e,o={id:n.id,get locale(){return n.locale.value},set locale(a){n.locale.value=a},get fallbackLocale(){return n.fallbackLocale.value},set fallbackLocale(a){n.fallbackLocale.value=a},get messages(){return n.messages.value},get datetimeFormats(){return n.datetimeFormats.value},get numberFormats(){return n.numberFormats.value},get availableLocales(){return n.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(a){},get missing(){return n.getMissingHandler()},set missing(a){n.setMissingHandler(a)},get silentTranslationWarn(){return _t(n.missingWarn)?!n.missingWarn:n.missingWarn},set silentTranslationWarn(a){n.missingWarn=_t(a)?!a:a},get silentFallbackWarn(){return _t(n.fallbackWarn)?!n.fallbackWarn:n.fallbackWarn},set silentFallbackWarn(a){n.fallbackWarn=_t(a)?!a:a},get modifiers(){return n.modifiers},get formatFallbackMessages(){return n.fallbackFormat},set formatFallbackMessages(a){n.fallbackFormat=a},get postTranslation(){return n.getPostTranslationHandler()},set postTranslation(a){n.setPostTranslationHandler(a)},get sync(){return n.inheritLocale},set sync(a){n.inheritLocale=a},get warnHtmlInMessage(){return n.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(a){n.warnHtmlMessage=a!=="off"},get escapeParameterHtml(){return n.escapeParameter},set escapeParameterHtml(a){n.escapeParameter=a},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(a){},get pluralizationRules(){return n.pluralRules||{}},__composer:n,t(...a){const[l,s,i]=a,u={};let d=null,f=null;if(!Be(l))throw tn(Gt.INVALID_ARGUMENT);const h=l;return Be(s)?u.locale=s:Vt(s)?d=s:ut(s)&&(f=s),Vt(i)?d=i:ut(i)&&(f=i),Reflect.apply(n.t,n,[h,d||f||{},u])},rt(...a){return Reflect.apply(n.rt,n,[...a])},tc(...a){const[l,s,i]=a,u={plural:1};let d=null,f=null;if(!Be(l))throw tn(Gt.INVALID_ARGUMENT);const h=l;return Be(s)?u.locale=s:Qt(s)?u.plural=s:Vt(s)?d=s:ut(s)&&(f=s),Be(i)?u.locale=i:Vt(i)?d=i:ut(i)&&(f=i),Reflect.apply(n.t,n,[h,d||f||{},u])},te(a,l){return n.te(a,l)},tm(a){return n.tm(a)},getLocaleMessage(a){return n.getLocaleMessage(a)},setLocaleMessage(a,l){n.setLocaleMessage(a,l)},mergeLocaleMessage(a,l){n.mergeLocaleMessage(a,l)},d(...a){return Reflect.apply(n.d,n,[...a])},getDateTimeFormat(a){return n.getDateTimeFormat(a)},setDateTimeFormat(a,l){n.setDateTimeFormat(a,l)},mergeDateTimeFormat(a,l){n.mergeDateTimeFormat(a,l)},n(...a){return Reflect.apply(n.n,n,[...a])},getNumberFormat(a){return n.getNumberFormat(a)},setNumberFormat(a,l){n.setNumberFormat(a,l)},mergeNumberFormat(a,l){n.mergeNumberFormat(a,l)},getChoiceIndex(a,l){return-1}};return o.__extender=r,o}}const zf={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function Ox({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((r,o)=>[...r,...o.type===Pe?o.children:[o]],[]):t.reduce((n,r)=>{const o=e[r];return o&&(n[r]=o()),n},{})}function Hy(e){return Pe}const Ax=se({name:"i18n-t",props:un({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>Qt(e)||!isNaN(e)}},zf),setup(e,t){const{slots:n,attrs:r}=t,o=e.i18n||kn({useScope:e.scope,__useComponent:!0});return()=>{const a=Object.keys(n).filter(f=>f!=="_"),l={};e.locale&&(l.locale=e.locale),e.plural!==void 0&&(l.plural=Be(e.plural)?+e.plural:e.plural);const s=Ox(t,a),i=o[id](e.keypath,s,l),u=un({},r),d=Be(e.tag)||It(e.tag)?e.tag:Hy();return He(d,u,i)}}}),Xh=Ax;function Ix(e){return Vt(e)&&!Be(e[0])}function jy(e,t,n,r){const{slots:o,attrs:a}=t;return()=>{const l={part:!0};let s={};e.locale&&(l.locale=e.locale),Be(e.format)?l.key=e.format:It(e.format)&&(Be(e.format.key)&&(l.key=e.format.key),s=Object.keys(e.format).reduce((h,p)=>n.includes(p)?un({},h,{[p]:e.format[p]}):h,{}));const i=r(e.value,l,s);let u=[l.key];Vt(i)?u=i.map((h,p)=>{const v=o[h.type],g=v?v({[h.type]:h.value,index:p,parts:i}):[h.value];return Ix(g)&&(g[0].key=`${h.type}-${p}`),g}):Be(i)&&(u=[i]);const d=un({},a),f=Be(e.tag)||It(e.tag)?e.tag:Hy();return He(f,d,u)}}const Px=se({name:"i18n-n",props:un({value:{type:Number,required:!0},format:{type:[String,Object]}},zf),setup(e,t){const n=e.i18n||kn({useScope:"parent",__useComponent:!0});return jy(e,t,Ry,(...r)=>n[cd](...r))}}),Jh=Px,Lx=se({name:"i18n-d",props:un({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},zf),setup(e,t){const n=e.i18n||kn({useScope:"parent",__useComponent:!0});return jy(e,t,My,(...r)=>n[ud](...r))}}),Zh=Lx;function Mx(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return r!=null?r.__composer:e.global.__composer}}function Rx(e){const t=l=>{const{instance:s,modifiers:i,value:u}=l;if(!s||!s.$)throw tn(Gt.UNEXPECTED_ERROR);const d=Mx(e,s.$),f=Qh(u);return[Reflect.apply(d.t,d,[...ev(f)]),d]};return{created:(l,s)=>{const[i,u]=t(s);nd&&e.global===u&&(l.__i18nWatcher=$e(u.locale,()=>{s.instance&&s.instance.$forceUpdate()})),l.__composer=u,l.textContent=i},unmounted:l=>{nd&&l.__i18nWatcher&&(l.__i18nWatcher(),l.__i18nWatcher=void 0,delete l.__i18nWatcher),l.__composer&&(l.__composer=void 0,delete l.__composer)},beforeUpdate:(l,{value:s})=>{if(l.__composer){const i=l.__composer,u=Qh(s);l.textContent=Reflect.apply(i.t,i,[...ev(u)])}},getSSRProps:l=>{const[s]=t(l);return{textContent:s}}}}function Qh(e){if(Be(e))return{path:e};if(ut(e)){if(!("path"in e))throw tn(Gt.REQUIRED_VALUE,"path");return e}else throw tn(Gt.INVALID_VALUE)}function ev(e){const{path:t,locale:n,args:r,choice:o,plural:a}=e,l={},s=r||{};return Be(n)&&(l.locale=n),Qt(o)&&(l.plural=o),Qt(a)&&(l.plural=a),[t,s,l]}function Nx(e,t,...n){const r=ut(n[0])?n[0]:{},o=!!r.useI18nComponentName;(_t(r.globalInstall)?r.globalInstall:!0)&&([o?"i18n":Xh.name,"I18nT"].forEach(l=>e.component(l,Xh)),[Jh.name,"I18nN"].forEach(l=>e.component(l,Jh)),[Zh.name,"I18nD"].forEach(l=>e.component(l,Zh))),e.directive("t",Rx(t))}function Dx(e,t,n){return{beforeCreate(){const r=lt();if(!r)throw tn(Gt.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const a=o.i18n;if(o.__i18n&&(a.__i18n=o.__i18n),a.__root=t,this===this.$root)this.$i18n=tv(e,a);else{a.__injectWithOption=!0,a.__extender=n.__vueI18nExtend,this.$i18n=pd(a);const l=this.$i18n;l.__extender&&(l.__disposer=l.__extender(this.$i18n))}}else if(o.__i18n)if(this===this.$root)this.$i18n=tv(e,o);else{this.$i18n=pd({__i18n:o.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}else this.$i18n=e;o.__i18nGlobal&&zy(t,o,o),this.$t=(...a)=>this.$i18n.t(...a),this.$rt=(...a)=>this.$i18n.rt(...a),this.$tc=(...a)=>this.$i18n.tc(...a),this.$te=(a,l)=>this.$i18n.te(a,l),this.$d=(...a)=>this.$i18n.d(...a),this.$n=(...a)=>this.$i18n.n(...a),this.$tm=a=>this.$i18n.tm(a),n.__setInstance(r,this.$i18n)},mounted(){},unmounted(){const r=lt();if(!r)throw tn(Gt.UNEXPECTED_ERROR);const o=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,o.__disposer&&(o.__disposer(),delete o.__disposer,delete o.__extender),n.__deleteInstance(r),delete this.$i18n}}}function tv(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Fy](t.pluralizationRules||e.pluralizationRules);const n=Bu(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(r=>e.mergeLocaleMessage(r,n[r])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r])),t.numberFormats&&Object.keys(t.numberFormats).forEach(r=>e.mergeNumberFormat(r,t.numberFormats[r])),e}const Fx=ro("global-vue-i18n");function Vx(e={},t){const n=__VUE_I18N_LEGACY_API__&&_t(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,r=_t(e.globalInjection)?e.globalInjection:!0,o=__VUE_I18N_LEGACY_API__&&n?!!e.allowComposition:!0,a=new Map,[l,s]=Bx(e,n),i=ro("");function u(h){return a.get(h)||null}function d(h,p){a.set(h,p)}function f(h){a.delete(h)}{const h={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return o},async install(p,...v){if(p.__VUE_I18N_SYMBOL__=i,p.provide(p.__VUE_I18N_SYMBOL__,h),ut(v[0])){const m=v[0];h.__composerExtend=m.__composerExtend,h.__vueI18nExtend=m.__vueI18nExtend}let g=null;!n&&r&&(g=Gx(p,h.global)),__VUE_I18N_FULL_INSTALL__&&Nx(p,h,...v),__VUE_I18N_LEGACY_API__&&n&&p.mixin(Dx(s,s.__composer,h));const w=p.unmount;p.unmount=()=>{g&&g(),h.dispose(),w()}},get global(){return s},dispose(){l.stop()},__instances:a,__getInstance:u,__setInstance:d,__deleteInstance:f};return h}}function kn(e={}){const t=lt();if(t==null)throw tn(Gt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw tn(Gt.NOT_INSTALLED);const n=zx(t),r=jx(n),o=By(t),a=Hx(e,o);if(__VUE_I18N_LEGACY_API__&&n.mode==="legacy"&&!e.__useComponent){if(!n.allowComposition)throw tn(Gt.NOT_AVAILABLE_IN_LEGACY_MODE);return qx(t,a,r,e)}if(a==="global")return zy(r,e,o),r;if(a==="parent"){let i=Wx(n,t,e.__useComponent);return i==null&&(i=r),i}const l=n;let s=l.__getInstance(t);if(s==null){const i=un({},e);"__i18n"in o&&(i.__i18n=o.__i18n),r&&(i.__root=r),s=Bf(i),l.__composerExtend&&(s[dd]=l.__composerExtend(s)),Kx(l,t,s),l.__setInstance(t,s)}return s}function Bx(e,t,n){const r=L2();{const o=__VUE_I18N_LEGACY_API__&&t?r.run(()=>pd(e)):r.run(()=>Bf(e));if(o==null)throw tn(Gt.UNEXPECTED_ERROR);return[r,o]}}function zx(e){{const t=Re(e.isCE?Fx:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw tn(e.isCE?Gt.NOT_INSTALLED_WITH_PROVIDE:Gt.UNEXPECTED_ERROR);return t}}function Hx(e,t){return Fu(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function jx(e){return e.mode==="composition"?e.global:e.global.__composer}function Wx(e,t,n=!1){let r=null;const o=t.root;let a=Ux(t,n);for(;a!=null;){const l=e;if(e.mode==="composition")r=l.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){const s=l.__getInstance(a);s!=null&&(r=s.__composer,n&&r&&!r[Vy]&&(r=null))}if(r!=null||o===a)break;a=a.parent}return r}function Ux(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Kx(e,t,n){dt(()=>{},t),Mo(()=>{const r=n;e.__deleteInstance(t);const o=r[dd];o&&(o(),delete r[dd])},t)}function qx(e,t,n,r={}){const o=t==="local",a=On(null);if(o&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw tn(Gt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const l=_t(r.inheritLocale)?r.inheritLocale:!Be(r.locale),s=B(!o||l?n.locale.value:Be(r.locale)?r.locale:Ns),i=B(!o||l?n.fallbackLocale.value:Be(r.fallbackLocale)||Vt(r.fallbackLocale)||ut(r.fallbackLocale)||r.fallbackLocale===!1?r.fallbackLocale:s.value),u=B(Bu(s.value,r)),d=B(ut(r.datetimeFormats)?r.datetimeFormats:{[s.value]:{}}),f=B(ut(r.numberFormats)?r.numberFormats:{[s.value]:{}}),h=o?n.missingWarn:_t(r.missingWarn)||Po(r.missingWarn)?r.missingWarn:!0,p=o?n.fallbackWarn:_t(r.fallbackWarn)||Po(r.fallbackWarn)?r.fallbackWarn:!0,v=o?n.fallbackRoot:_t(r.fallbackRoot)?r.fallbackRoot:!0,g=!!r.fallbackFormat,w=Yt(r.missing)?r.missing:null,m=Yt(r.postTranslation)?r.postTranslation:null,b=o?n.warnHtmlMessage:_t(r.warnHtmlMessage)?r.warnHtmlMessage:!0,_=!!r.escapeParameter,y=o?n.modifiers:ut(r.modifiers)?r.modifiers:{},C=r.pluralRules||o&&n.pluralRules;function k(){return[s.value,i.value,u.value,d.value,f.value]}const E=O({get:()=>a.value?a.value.locale.value:s.value,set:T=>{a.value&&(a.value.locale.value=T),s.value=T}}),S=O({get:()=>a.value?a.value.fallbackLocale.value:i.value,set:T=>{a.value&&(a.value.fallbackLocale.value=T),i.value=T}}),R=O(()=>a.value?a.value.messages.value:u.value),L=O(()=>d.value),F=O(()=>f.value);function N(){return a.value?a.value.getPostTranslationHandler():m}function A(T){a.value&&a.value.setPostTranslationHandler(T)}function M(){return a.value?a.value.getMissingHandler():w}function H(T){a.value&&a.value.setMissingHandler(T)}function j(T){return k(),T()}function V(...T){return a.value?j(()=>Reflect.apply(a.value.t,null,[...T])):j(()=>"")}function X(...T){return a.value?Reflect.apply(a.value.rt,null,[...T]):""}function I(...T){return a.value?j(()=>Reflect.apply(a.value.d,null,[...T])):j(()=>"")}function Y(...T){return a.value?j(()=>Reflect.apply(a.value.n,null,[...T])):j(()=>"")}function ee(T){return a.value?a.value.tm(T):{}}function W(T,z){return a.value?a.value.te(T,z):!1}function re(T){return a.value?a.value.getLocaleMessage(T):{}}function be(T,z){a.value&&(a.value.setLocaleMessage(T,z),u.value[T]=z)}function Te(T,z){a.value&&a.value.mergeLocaleMessage(T,z)}function ge(T){return a.value?a.value.getDateTimeFormat(T):{}}function J(T,z){a.value&&(a.value.setDateTimeFormat(T,z),d.value[T]=z)}function te(T,z){a.value&&a.value.mergeDateTimeFormat(T,z)}function ae(T){return a.value?a.value.getNumberFormat(T):{}}function le(T,z){a.value&&(a.value.setNumberFormat(T,z),f.value[T]=z)}function me(T,z){a.value&&a.value.mergeNumberFormat(T,z)}const P={get id(){return a.value?a.value.id:-1},locale:E,fallbackLocale:S,messages:R,datetimeFormats:L,numberFormats:F,get inheritLocale(){return a.value?a.value.inheritLocale:l},set inheritLocale(T){a.value&&(a.value.inheritLocale=T)},get availableLocales(){return a.value?a.value.availableLocales:Object.keys(u.value)},get modifiers(){return a.value?a.value.modifiers:y},get pluralRules(){return a.value?a.value.pluralRules:C},get isGlobal(){return a.value?a.value.isGlobal:!1},get missingWarn(){return a.value?a.value.missingWarn:h},set missingWarn(T){a.value&&(a.value.missingWarn=T)},get fallbackWarn(){return a.value?a.value.fallbackWarn:p},set fallbackWarn(T){a.value&&(a.value.missingWarn=T)},get fallbackRoot(){return a.value?a.value.fallbackRoot:v},set fallbackRoot(T){a.value&&(a.value.fallbackRoot=T)},get fallbackFormat(){return a.value?a.value.fallbackFormat:g},set fallbackFormat(T){a.value&&(a.value.fallbackFormat=T)},get warnHtmlMessage(){return a.value?a.value.warnHtmlMessage:b},set warnHtmlMessage(T){a.value&&(a.value.warnHtmlMessage=T)},get escapeParameter(){return a.value?a.value.escapeParameter:_},set escapeParameter(T){a.value&&(a.value.escapeParameter=T)},t:V,getPostTranslationHandler:N,setPostTranslationHandler:A,getMissingHandler:M,setMissingHandler:H,rt:X,d:I,n:Y,tm:ee,te:W,getLocaleMessage:re,setLocaleMessage:be,mergeLocaleMessage:Te,getDateTimeFormat:ge,setDateTimeFormat:J,mergeDateTimeFormat:te,getNumberFormat:ae,setNumberFormat:le,mergeNumberFormat:me};function $(T){T.locale.value=s.value,T.fallbackLocale.value=i.value,Object.keys(u.value).forEach(z=>{T.mergeLocaleMessage(z,u.value[z])}),Object.keys(d.value).forEach(z=>{T.mergeDateTimeFormat(z,d.value[z])}),Object.keys(f.value).forEach(z=>{T.mergeNumberFormat(z,f.value[z])}),T.escapeParameter=_,T.fallbackFormat=g,T.fallbackRoot=v,T.fallbackWarn=p,T.missingWarn=h,T.warnHtmlMessage=b}return As(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw tn(Gt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const T=a.value=e.proxy.$i18n.__composer;t==="global"?(s.value=T.locale.value,i.value=T.fallbackLocale.value,u.value=T.messages.value,d.value=T.datetimeFormats.value,f.value=T.numberFormats.value):o&&$(T)}),P}const Yx=["locale","fallbackLocale","availableLocales"],nv=["t","rt","d","n","tm","te"];function Gx(e,t){const n=Object.create(null);return Yx.forEach(o=>{const a=Object.getOwnPropertyDescriptor(t,o);if(!a)throw tn(Gt.UNEXPECTED_ERROR);const l=mt(a.value)?{get(){return a.value.value},set(s){a.value.value=s}}:{get(){return a.get&&a.get()}};Object.defineProperty(n,o,l)}),e.config.globalProperties.$i18n=n,nv.forEach(o=>{const a=Object.getOwnPropertyDescriptor(t,o);if(!a||!a.value)throw tn(Gt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${o}`,a)}),()=>{delete e.config.globalProperties.$i18n,nv.forEach(o=>{delete e.config.globalProperties[`$${o}`]})}}$x();__INTLIFY_JIT_COMPILATION__?Rh(_x):Rh(yx);px(Y3);mx(Ff);if(__INTLIFY_PROD_DEVTOOLS__){const e=Wr();e.__INTLIFY__=!0,rx(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const Wy=new Set;function Ir(){const e=kn(),t={};return n=>{if(!n||typeof n=="string")return n;const r=Ff(t,e.fallbackLocale.value,e.locale.value);for(const o of r)if(o in n)return n[o]}}const Xx=["function","transform","is"];function Ds(e){const t=[],n=e.list.filter(r=>{if(!r.meta.hidden)return r.type==="transform"&&t.push(r.inner),!Xx.includes(r.type)});return n.length?n:t}function Mi(e,t=!1){var n;if(!(!e||e.type==="union"&&Ds(e).length===1))return(n=us(e.meta.default))!=null?n:t?Jx(e):void 0}function Jx(e){if(e.type==="string")return"";if(e.type==="number")return 0;if(e.type==="boolean")return!1;if(["dict","object","intersect"].includes(e.type))return{}}function Hr(e){return e.type==="const"?e:e.type==="transform"?Hr(e.inner):(e=new Rs(e).required(!1),e.type==="object"?e.dict=Lf(e.dict,Hr):e.type==="tuple"||e.type==="intersect"||e.type==="union"?e.list=e.list.map(Hr):(e.type==="dict"||e.type==="array")&&(e.inner=Hr(e.inner)),e)}function Zx(e,t){try{return Hr(e)(t),!0}catch{return!1}}function md(e,t){if(!xn(t)&&e.type==="string"&&e.meta.pattern){const{source:n,flags:r}=e.meta.pattern,o=new RegExp(n,r);if(!o.test(t))return["errors.regexp-not-matched",[o.toString()]]}}function Qx(){const{props:e}=lt();return O(()=>{var t,n;return e.disabled||((n=(t=e.schema)==null?void 0:t.meta)==null?void 0:n.disabled)})}function oo(e){let t;const n=B(),{props:r,emit:o}=lt(),a=()=>$e(n,l=>{try{e!=null&&e.output&&(l=e.output(l));const s=Hr(Rs(r.schema));sa(s(l),r.schema.meta.default,e==null?void 0:e.strict)&&(l=null)}catch{return}o("update:modelValue",l)},{deep:!0});return $e(()=>[r.modelValue,r.schema],([l,s])=>{t==null||t(),l!=null||(l=Mi(s)),e!=null&&e.input&&(l=e.input(l)),n.value=l,t=a()},{deep:!0,immediate:!0}),n}function Hf(){const{props:e}=lt(),t=oo({strict:!0,input:n=>Object.entries(n),output:n=>{if(e.schema.type==="array")return n.map(([,o])=>o);const r={};for(const[o,a]of n){if(o in r)throw new Error("duplicate entries");r[o]=a}return r}});return{entries:t,up(n){if(e.schema.type==="dict")t.value.splice(n-1,0,...t.value.splice(n,1));else{const r=t.value[n][1];t.value[n][1]=t.value[n-1][1],t.value[n-1][1]=r}},down(n){if(e.schema.type==="dict")t.value.splice(n+1,0,...t.value.splice(n,1));else{const r=t.value[n][1];t.value[n][1]=t.value[n+1][1],t.value[n+1][1]=r}},del(n){t.value.splice(n,1)},insert(n){t.value.splice(n,0,["",null])}}}function Uy(e){return e.type==="union"&&e.list.every(t=>t.type==="const")}function hd(e){if(e.type==="bitset")return!0;if(e.type==="array")return Uy(e.inner)}function jf(){const{props:e}=lt(),t=O(()=>{if(e.schema.type==="bitset")return Object.keys(e.schema.bits);if(e.schema.type==="array")return e.schema.inner.list.map(o=>o.value)}),n=O(()=>{if(e.schema.type==="bitset")return Object.keys(e.schema.bits).map(o=>Rs.const(o));if(e.schema.type==="array")return e.schema.inner.list}),r=oo({input(o){return hd(e.schema)?xn(o)?[]:Array.isArray(o)?o:Object.entries(e.schema.bits).filter(([a,l])=>o&l).map(([a])=>a):o},output(o){return hd(e.schema)?o.sort((a,l)=>{const s=t.value.indexOf(a),i=t.value.indexOf(l);return s<0?i<0?0:1:i<0?-1:s-i}):o}});return{values:r,items:n,selectAll(){r.value=gy(r.value,t.value)},selectNone(){r.value=vy(r.value,t.value)},toggle(o){r.value.includes(o)?r.value=r.value.filter(a=>a!==o):r.value=[...r.value,o]}}}function Ky(e){return["string","number","boolean"].includes(e.type)||Uy(e)||hd(e)}function rv(e){if(e.every(([,t])=>Ky(t)))return e}function Wf(e){if(Ky(e))return[[null,e]];if(e.type==="tuple")return rv(Object.entries(e.list));if(e.type==="object")return rv(Object.entries(e.dict))}const eO={},tO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512"},nO=K("path",{fill:"currentColor",d:"M377.4 296.6l-168 176C204.8 477.3 198.6 480 192 480s-12.84-2.688-17.38-7.438l-168-176C-2.5 286.1-2.156 271.8 7.438 262.6c9.5-9.156 24.75-8.812 33.94 .8125L168 396.1V56.02c0-13.25 10.75-24.01 23.1-24.01S216 42.77 216 56.02v340.1l126.6-132.7c9.156-9.625 24.41-9.969 33.94-.8125C386.2 271.8 386.5 286.1 377.4 296.6z"},null,-1),rO=[nO];function oO(e,t){return x(),U("svg",tO,rO)}var qy=St(eO,[["render",oO],["__file","arrow-down.vue"]]);const aO={},lO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512"},sO=K("path",{fill:"currentColor",d:"M6.625 215.5l168-176C179.2 34.7 185.4 32.02 192 32.02s12.84 2.688 17.38 7.438l168 176c9.125 9.594 8.781 24.78-.8125 33.94c-9.5 9.156-24.75 8.812-33.94-.8125L216 115.9V456c0 13.25-10.75 23.1-23.1 23.1S168 469.3 168 456V115.9l-126.6 132.7C32.22 258.2 16.97 258.5 7.438 249.4C-2.156 240.2-2.5 225 6.625 215.5z"},null,-1),iO=[sO];function uO(e,t){return x(),U("svg",lO,iO)}var Yy=St(aO,[["render",uO],["__file","arrow-up.vue"]]);const cO={},dO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},fO=K("path",{fill:"currentColor",d:"M207 184.1C209.6 187.5 215.5 192 224 192s14.4-4.461 16.97-7.031l72-72C317.7 108.3 320 102.1 320 96c0-13.71-11.21-24-24-24c-6.141 0-12.28 2.344-16.97 7.031L248 110.1V24C248 10.75 237.3 0 224 0S200 10.75 200 24v86.06L168.1 79.03C164.3 74.34 158.1 72 152 72C138.3 72 128 83.21 128 96c0 6.141 2.344 12.28 7.031 16.97L207 184.1zM240.1 327C234.9 321 227.7 320 224 320c-3.682 0-10.94 .9906-16.97 7.022l-72 72C130.3 403.7 128 409.9 128 416c0 13.71 11.21 24 24 24c6.141 0 12.28-2.344 16.97-7.031L200 401.9V488C200 501.3 210.8 512 224 512s24-10.75 24-24v-86.06l31.03 31.03C283.7 437.7 289.8 440 296 440c18.79 0 24-17.2 24-24c0-6.141-2.344-12.28-7.031-16.97L240.1 327zM424 232H24C10.75 232 0 242.7 0 255.1S10.75 280 24 280h400c13.25 0 24-10.76 24-24.01S437.3 232 424 232z"},null,-1),pO=[fO];function mO(e,t){return x(),U("svg",dO,pO)}var hO=St(cO,[["render",mO],["__file","collapse.vue"]]);const vO={},gO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},bO=K("path",{fill:"currentColor",d:"M160 400C160 408.8 152.8 416 144 416C135.2 416 128 408.8 128 400V192C128 183.2 135.2 176 144 176C152.8 176 160 183.2 160 192V400zM240 400C240 408.8 232.8 416 224 416C215.2 416 208 408.8 208 400V192C208 183.2 215.2 176 224 176C232.8 176 240 183.2 240 192V400zM320 400C320 408.8 312.8 416 304 416C295.2 416 288 408.8 288 400V192C288 183.2 295.2 176 304 176C312.8 176 320 183.2 320 192V400zM317.5 24.94L354.2 80H424C437.3 80 448 90.75 448 104C448 117.3 437.3 128 424 128H416V432C416 476.2 380.2 512 336 512H112C67.82 512 32 476.2 32 432V128H24C10.75 128 0 117.3 0 104C0 90.75 10.75 80 24 80H93.82L130.5 24.94C140.9 9.357 158.4 0 177.1 0H270.9C289.6 0 307.1 9.358 317.5 24.94H317.5zM151.5 80H296.5L277.5 51.56C276 49.34 273.5 48 270.9 48H177.1C174.5 48 171.1 49.34 170.5 51.56L151.5 80zM80 432C80 449.7 94.33 464 112 464H336C353.7 464 368 449.7 368 432V128H80V432z"},null,-1),yO=[bO];function _O(e,t){return x(),U("svg",gO,yO)}var Gy=St(vO,[["render",_O],["__file","delete.vue"]]);const wO={},CO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},kO=K("path",{fill:"currentColor",d:"M352 256C352 238.3 366.3 224 384 224C401.7 224 416 238.3 416 256C416 273.7 401.7 288 384 288C366.3 288 352 273.7 352 256zM192 256C192 238.3 206.3 224 224 224C241.7 224 256 238.3 256 256C256 273.7 241.7 288 224 288C206.3 288 192 273.7 192 256zM96 256C96 273.7 81.67 288 64 288C46.33 288 32 273.7 32 256C32 238.3 46.33 224 64 224C81.67 224 96 238.3 96 256z"},null,-1),SO=[kO];function EO(e,t){return x(),U("svg",CO,SO)}var $O=St(wO,[["render",EO],["__file","ellipsis.vue"]]);const TO={},xO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},OO=K("path",{fill:"currentColor",d:"M296 391.1c-6.141 0-12.28 2.344-16.97 7.031L248 430.1v-86.06c0-13.25-10.75-24-24-24s-24 10.75-24 24v86.06l-31.03-31.03C164.3 394.3 158.1 391.1 152 391.1c-12.82 0-24 10.33-24 24c0 6.141 2.344 12.28 7.031 16.97l72 72.01C209.6 507.5 215.5 512 224 512s14.4-4.461 16.97-7.031l72-72.01C317.7 428.3 320 422.1 320 415.1C320 402.3 308.8 391.1 296 391.1zM152 119.1c6.141 0 12.28-2.344 16.97-7.031L200 81.91v86.07c0 13.25 10.75 24 24 24s24-10.75 24-24V81.91l31.03 31.03C283.7 117.6 289.8 119.1 296 119.1c18.79 0 24-17.2 24-23.1c0-6.141-2.344-12.28-7.031-16.97l-72-72.01C234.9 .9766 227.7 0 223.1 0C220.3 0 213.1 .9687 207 7l-72 72.01C130.3 83.7 128 89.84 128 95.98C128 109.7 139.2 119.1 152 119.1zM424 232H24C10.75 232 0 242.7 0 255.1S10.75 280 24 280h400c13.25 0 24-10.76 24-24.01S437.3 232 424 232z"},null,-1),AO=[OO];function IO(e,t){return x(),U("svg",xO,AO)}var PO=St(TO,[["render",IO],["__file","expand.vue"]]);const LO={},MO={class:"k-icon k-icon-external",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},RO=K("path",{fill:"currentColor",d:"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z"},null,-1),NO=[RO];function DO(e,t){return x(),U("svg",MO,NO)}var FO=St(LO,[["render",DO],["__file","external.vue"]]);const VO={},BO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512"},zO=K("path",{fill:"currentColor",d:"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"},null,-1),HO=[zO];function jO(e,t){return x(),U("svg",BO,HO)}var WO=St(VO,[["render",jO],["__file","eye-slash.vue"]]);const UO={},KO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},qO=K("path",{fill:"currentColor",d:"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"},null,-1),YO=[qO];function GO(e,t){return x(),U("svg",KO,YO)}var XO=St(UO,[["render",GO],["__file","eye.vue"]]);const JO={},ZO={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},QO=K("path",{fill:"currentColor",d:"M280 224V310.1L303 287C312.4 277.7 327.6 277.7 336.1 287C346.3 296.4 346.3 311.6 336.1 320.1L272.1 384.1C263.6 394.3 248.4 394.3 239 384.1L175 320.1C165.7 311.6 165.7 296.4 175 287C184.4 277.7 199.6 277.7 208.1 287L232 310.1V224H64C28.65 224 0 195.3 0 160V96C0 60.65 28.65 32 64 32H448C483.3 32 512 60.65 512 96V160C512 195.3 483.3 224 448 224H280zM64 288H130C125.9 304 128.1 321.3 136.6 336H64C55.16 336 48 343.2 48 352V416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V352C464 343.2 456.8 336 448 336H375.4C383.9 321.3 386.1 304 381.1 288H448C483.3 288 512 316.7 512 352V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V352C0 316.7 28.65 288 64 288z"},null,-1),eA=[QO];function tA(e,t){return x(),U("svg",ZO,eA)}var nA=St(JO,[["render",tA],["__file","insert-after.vue"]]);const rA={},oA={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},aA=K("path",{fill:"currentColor",d:"M232,288v-86.1L209,225c-9.4,9.3-24.6,9.3-33.1,0c-10.2-9.4-10.2-24.6,0-33.1l64-64c8.5-10.2,23.7-10.2,33.1,0l64,64c9.3,8.5,9.3,23.7,0,33.1c-9.4,9.3-24.6,9.3-33.1,0L280,201.9V288h168c35.4,0,64,28.7,64,64v64c0,35.4-28.6,64-64,64H64c-35.3,0-64-28.6-64-64l0-64c0-35.3,28.7-64,64-64H232z M448,224h-66c4.1-16,1.9-33.3-6.6-48H448c8.8,0,16-7.2,16-16V96c0-8.8-7.2-16-16-16H64c-8.8,0-16,7.2-16,16v64c0,8.8,7.2,16,16,16h72.6c-8.5,14.7-10.7,32-5.7,48H64c-35.3,0-64-28.7-64-64l0-64c0-35.3,28.7-64,64-64h384c35.4,0,64,28.7,64,64v64C512,195.3,483.4,224,448,224z"},null,-1),lA=[aA];function sA(e,t){return x(),U("svg",oA,lA)}var iA=St(rA,[["render",sA],["__file","insert-before.vue"]]);const uA={},cA={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},dA=K("path",{fill:"currentColor",d:"M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"},null,-1),fA=[dA];function pA(e,t){return x(),U("svg",cA,fA)}var Xy=St(uA,[["render",pA],["__file","invalid.vue"]]);const mA={},hA={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},vA=K("path",{fill:"currentColor",d:"M264 479.1C263.4 479.1 262.7 480 262.1 480H153.9C134.8 480 116.5 472.4 103 458.9L31.03 386.9C2.912 358.8 2.912 313.2 31.03 285.1L253.1 63.03C281.2 34.91 326.8 34.91 354.9 63.03L480.1 189.1C509.1 217.2 509.1 262.8 480.1 290.9L339.9 432H488C501.3 432 512 442.7 512 456C512 469.3 501.3 480 488 480L264 479.1zM64.97 352.1L136.1 424.1C141.5 429.5 147.6 432 153.9 432H262.1C268.4 432 274.5 429.5 279 424.1L344 360L184 200L64.97 319C55.6 328.4 55.6 343.6 64.97 352.1zM31.03 285.1L64.97 319z"},null,-1),gA=[vA];function bA(e,t){return x(),U("svg",hA,gA)}var yA=St(mA,[["render",bA],["__file","reset.vue"]]);const _A={},wA={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},CA=K("path",{fill:"currentColor",d:"M211.8 339.8C200.9 350.7 183.1 350.7 172.2 339.8L108.2 275.8C97.27 264.9 97.27 247.1 108.2 236.2C119.1 225.3 136.9 225.3 147.8 236.2L192 280.4L300.2 172.2C311.1 161.3 328.9 161.3 339.8 172.2C350.7 183.1 350.7 200.9 339.8 211.8L211.8 339.8zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z"},null,-1),kA=[CA];function SA(e,t){return x(),U("svg",wA,kA)}var Jy=St(_A,[["render",SA],["__file","square-check.vue"]]);const EA={},$A={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 448 512"},TA=K("path",{fill:"currentColor",d:"M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM384 80H64C55.16 80 48 87.16 48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80z"},null,-1),xA=[TA];function OA(e,t){return x(),U("svg",$A,xA)}var Zy=St(EA,[["render",OA],["__file","square-empty.vue"]]);const AA={},IA={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},PA=K("path",{fill:"currentColor",d:"M30.81 49.81c8.969-3.656 19.28-1.656 26.16 5.219l41.1 41.1c41.07-40.38 97.11-64.92 157.1-64.92C379.6 32.11 480 132.5 480 256s-100.4 223.9-223.9 223.9c-52.31 0-103.3-18.33-143.5-51.77c-10.19-8.5-11.56-23.62-3.062-33.81c8.531-10.22 23.62-11.56 33.81-3.062C174.9 417.5 214.9 432 256 432c97.03 0 176-78.97 176-176S353 80 256 80c-47.08 0-90.93 19.29-123.2 50.89l52.14 52.14c6.875 6.875 8.906 17.19 5.219 26.16C186.5 218.2 177.7 224 168 224h-128C26.75 224 16 213.3 16 200v-128C16 62.28 21.84 53.53 30.81 49.81z"},null,-1),LA=[PA];function MA(e,t){return x(),U("svg",IA,LA)}var RA=St(AA,[["render",MA],["__file","undo.vue"]]);const mr={title:"\u57FA\u7840\u8BBE\u7F6E",initial:"\u64A4\u9500\u66F4\u6539",default:"\u6062\u590D\u9ED8\u8BA4\u503C",collapse:"\u6298\u53E0\u5B50\u9879",expand:"\u5C55\u5F00\u4EE5\u7F16\u8F91",badge:{deprecated:"\u5DF2\u5E9F\u5F03",experimental:"\u5B9E\u9A8C\u6027"},entry:{key:"\u952E",value:"\u503C","add-item":"\u6DFB\u52A0\u9879\u76EE","del-item":"\u5220\u9664\u9879\u76EE","add-row":"\u6DFB\u52A0\u884C","del-row":"\u5220\u9664\u884C","move-up":"\u4E0A\u79FB\u9879\u76EE","move-down":"\u4E0B\u79FB\u9879\u76EE","insert-before":"\u5728\u4E0A\u65B9\u63D2\u5165","insert-after":"\u5728\u4E0B\u65B9\u63D2\u5165"},select:{all:"\u5168\u90E8\u9009\u4E2D",none:"\u6E05\u7A7A\u9009\u62E9"},errors:{"duplicate-key":"\u952E\u540D\u91CD\u590D","regexp-not-matched":"\u672A\u80FD\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F {0}"}},hr={title:"Basic Settings",initial:"Undo",default:"Restore to Default",collapse:"Collapse",expand:"Expand to Edit",badge:{deprecated:"deprecated",experimental:"experimental"},entry:{key:"Key",value:"Value","add-item":"Add Item","del-item":"Delete Item","add-row":"Add Row","del-row":"Delete Row","move-up":"Move Up","move-down":"Move Down","insert-before":"Insert Before","insert-after":"Insert After"},select:{all:"Select All",none:"Clear Selection"},errors:{"duplicate-key":"Duplicate key","regexp-not-matched":"Not matched with regexp {0}"}};const NA=K("div",{class:"actions"},null,-1),DA={class:"k-schema-main"},FA={class:"k-schema-left"},VA={class:"k-schema-right"},BA={class:"k-schema-menu"},zA=K("div",{class:"k-menu-separator"},null,-1),HA={class:"k-menu-icon"},jA={class:"k-menu-icon"},WA=se({__name:"base",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{},extra:{},collapsible:{}},emits:["update:modelValue"],setup(e){var l;const n=B((l=e.collapsible)==null?void 0:l.initial),r=B(null),{t:o,setLocaleMessage:a}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(s,i)=>{const u=Ve("el-button"),d=Ve("el-tooltip"),f=Ve("el-collapse-transition");return x(),U(Pe,null,[K("div",Ht({class:"k-schema-item"},s.$attrs),[NA,K("div",DA,[K("div",FA,[K("h3",null,[pe(s.$slots,"title")]),pe(s.$slots,"desc")]),K("div",VA,[n.value?ye("",!0):(x(),U(Pe,{key:0},[pe(s.$slots,"prefix"),pe(s.$slots,"control"),pe(s.$slots,"suffix")],64)),e.collapsible?(x(),U(Pe,{key:1},[n.value?(x(),ce(u,{key:0,onClick:i[0]||(i[0]=h=>n.value=!1)},{default:G(()=>[Je(Ee(c(o)("expand")),1)]),_:1})):ye("",!0)],64)):ye("",!0)]),K("div",BA,[Q(d,{ref_key:"tooltip",ref:r,placement:"bottom-end","popper-class":"k-menu",effect:"light"},{content:G(()=>[K("div",{onClick:i[3]||(i[3]=h=>{var p;return(p=r.value)==null?void 0:p.hide()})},[pe(s.$slots,"menu"),e.collapsible?(x(),U(Pe,{key:0},[zA,n.value?(x(),U("div",{key:0,class:"k-menu-item",onClick:i[1]||(i[1]=h=>n.value=!1)},[K("span",HA,[Q(c(PO))]),Je(" "+Ee(c(o)("expand")),1)])):(x(),U("div",{key:1,class:"k-menu-item",onClick:i[2]||(i[2]=h=>n.value=!0)},[K("span",jA,[Q(c(hO))]),Je(" "+Ee(c(o)("collapse")),1)]))],64)):ye("",!0)])]),default:G(()=>[Q(u,{class:"ellipsis"},{default:G(()=>[Q(c($O))]),_:1})]),_:3},512)])]),pe(s.$slots,"default")],16),e.collapsible?(x(),ce(f,{key:1},{default:G(()=>[vt(K("div",{class:D(["k-schema-group",{collapsed:n.value}])},[pe(s.$slots,"collapse")],2),[[qt,!n.value]])]),_:3})):pe(s.$slots,"collapse",{key:0})],64)}}});var vr=St(WA,[["__file","base.vue"]]);const UA={key:0,class:"suffix-icon"},KA={key:1,class:"suffix-icon"},qA={class:"suffix-icon"},YA=se({__name:"primitive",props:{schema:{},modelValue:{},disabled:Boolean,minimal:Boolean},emits:["update:modelValue","focus","blur"],setup(e,{emit:t}){const n=e,r=B(!1),o=oo(),{values:a,items:l}=jf(),s=Ir(),i=O(()=>xn(o.value)),u=O(()=>md(n.schema,o.value)),d=O(()=>["url","link"].includes(n.schema.meta.role)),f=O(()=>{const{type:m,meta:b}=n.schema;return m==="number"?"number":b.role==="secret"&&!r.value?"password":"text"}),h=O({get(){if(!!n.modelValue){if(["date","datetime"].includes(n.schema.meta.role))return new Date(o.value);if(n.schema.meta.role==="time")return new Date("1970-01-01 "+o.value)}},set(m){n.schema.meta.role==="datetime"?t("update:modelValue",m.toLocaleString()):n.schema.meta.role==="date"?t("update:modelValue",m.toLocaleDateString()):n.schema.meta.role==="time"&&t("update:modelValue",m.toLocaleTimeString())}}),p=O({get(){const m=n.schema.list.find(b=>b.value===o.value);if(!!m)return s(m.meta.description)||m.value},set(m){o.value=n.schema.list[m].value}});function v(m){!m||open(m,"_blank")}const{t:g,setLocaleMessage:w}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(m,b)=>{const _=Ve("el-checkbox"),y=Ve("el-switch"),C=Ve("el-slider"),k=Ve("el-input-number"),E=Ve("el-color-picker"),S=Ve("el-time-picker"),R=Ve("el-date-picker"),L=Ve("el-tooltip"),F=Ve("el-input"),N=Ve("k-badge"),A=Ve("el-option"),M=Ve("el-select");return e.schema.type==="boolean"?(x(),U(Pe,{key:0},[e.minimal?(x(),ce(_,{key:0,modelValue:c(o),"onUpdate:modelValue":b[0]||(b[0]=H=>mt(o)?o.value=H:null),class:D({nullable:i.value}),disabled:e.disabled},null,8,["modelValue","class","disabled"])):(x(),ce(y,{key:1,modelValue:c(o),"onUpdate:modelValue":b[1]||(b[1]=H=>mt(o)?o.value=H:null),class:D({nullable:i.value}),disabled:e.disabled},null,8,["modelValue","class","disabled"]))],64)):e.schema.type==="number"?(x(),U(Pe,{key:1},[e.schema.meta.role==="slider"?(x(),ce(C,{key:0,style:{width:"200px"},modelValue:c(o),"onUpdate:modelValue":b[2]||(b[2]=H=>mt(o)?o.value=H:null),disabled:e.disabled,max:e.schema.meta.max,min:e.schema.meta.min,step:e.schema.meta.step},null,8,["modelValue","disabled","max","min","step"])):(x(),ce(k,{key:1,modelValue:c(o),"onUpdate:modelValue":b[3]||(b[3]=H=>mt(o)?o.value=H:null),disabled:e.disabled,max:e.schema.meta.max,min:e.schema.meta.min,step:e.schema.meta.step,onFocus:b[4]||(b[4]=H=>m.$emit("focus",H)),onBlur:b[5]||(b[5]=H=>m.$emit("blur",H))},null,8,["modelValue","disabled","max","min","step"]))],64)):e.schema.type==="string"?(x(),U(Pe,{key:2},[e.schema.meta.role==="color"?(x(),ce(E,{key:0,disabled:e.disabled,modelValue:c(o),"onUpdate:modelValue":b[6]||(b[6]=H=>mt(o)?o.value=H:null),"show-alpha":""},null,8,["disabled","modelValue"])):e.schema.meta.role==="time"?(x(),ce(S,{key:1,disabled:e.disabled,modelValue:h.value,"onUpdate:modelValue":b[7]||(b[7]=H=>h.value=H),onFocus:b[8]||(b[8]=H=>m.$emit("focus",H)),onBlur:b[9]||(b[9]=H=>m.$emit("blur",H))},null,8,["disabled","modelValue"])):["date","datetime"].includes(e.schema.meta.role)?(x(),ce(R,{key:2,disabled:e.disabled,type:e.schema.meta.role,modelValue:h.value,"onUpdate:modelValue":b[10]||(b[10]=H=>h.value=H),onFocus:b[11]||(b[11]=H=>m.$emit("focus",H)),onBlur:b[12]||(b[12]=H=>m.$emit("blur",H))},null,8,["disabled","type","modelValue"])):(x(),ce(F,{key:3,modelValue:c(o),"onUpdate:modelValue":b[16]||(b[16]=H=>mt(o)?o.value=H:null),disabled:e.disabled,class:D({minimal:e.minimal,nullable:i.value,invalid:u.value}),style:Qe({width:e.minimal?"100%":d.value?"16rem":"12rem"}),type:f.value,onFocus:b[17]||(b[17]=H=>m.$emit("focus",H)),onBlur:b[18]||(b[18]=H=>m.$emit("blur",H))},Is({suffix:G(()=>[d.value?(x(),U("span",UA,[Q(c(FO),{onClick:b[13]||(b[13]=H=>v(c(o)))})])):e.schema.meta.role==="secret"?(x(),U("span",KA,[r.value?(x(),ce(c(XO),{key:0,onClick:b[14]||(b[14]=H=>r.value=!r.value)})):(x(),ce(c(WO),{key:1,onClick:b[15]||(b[15]=H=>r.value=!r.value)}))])):ye("",!0),u.value?(x(),ce(L,{key:2,content:c(g)(...u.value)},{default:G(()=>[K("span",qA,[Q(c(Xy),{class:"invalid"})])]),_:1},8,["content"])):ye("",!0)]),_:2},[i.value?{name:"prefix",fn:G(()=>[]),key:"0"}:void 0]),1032,["modelValue","disabled","class","style","type"]))],64)):e.schema.type==="union"?(x(),ce(M,{key:3,modelValue:p.value,"onUpdate:modelValue":b[19]||(b[19]=H=>p.value=H),filterable:"",disabled:e.disabled,onFocus:b[20]||(b[20]=H=>m.$emit("focus",H)),onBlur:b[21]||(b[21]=H=>m.$emit("blur",H))},{default:G(()=>[(x(!0),U(Pe,null,it(e.schema.list,(H,j)=>(x(),ce(A,{key:j,value:j,disabled:H.meta.disabled},{default:G(()=>[Je(Ee(c(s)(H.meta.description)||H.value)+" ",1),(x(!0),U(Pe,null,it(H.meta.badges||[],({text:V,type:X})=>(x(),ce(N,{type:X},{default:G(()=>[Je(Ee(c(g)("badge."+V)),1)]),_:2},1032,["type"]))),256))]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])):e.schema.type==="array"||e.schema.type==="bitset"?(x(),ce(M,{key:4,multiple:"","collapse-tags":"",modelValue:c(a),"onUpdate:modelValue":b[22]||(b[22]=H=>mt(a)?a.value=H:null),disabled:e.disabled},{default:G(()=>[(x(!0),U(Pe,null,it(c(l),H=>(x(),ce(A,{key:H.value,value:H.value,disabled:H.meta.disabled},{default:G(()=>[Je(Ee(c(s)(H.meta.description)||H.value)+" ",1),(x(!0),U(Pe,null,it(H.meta.badges||[],({text:j,type:V})=>(x(),ce(N,{type:V},{default:G(()=>[Je(Ee(c(g)("badge."+j)),1)]),_:2},1032,["type"]))),256))]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])):ye("",!0)}}});var Uf=St(YA,[["__file","primitive.vue"]]);const GA=K("div",{class:"k-menu-separator"},null,-1),XA={class:"k-menu-icon"},JA={class:"k-menu-icon"},ZA={class:"bottom"},QA=se({__name:"checkbox",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{}},emits:["update:modelValue"],setup(e){const t=Ir(),{values:n,items:r,toggle:o,selectAll:a,selectNone:l}=jf(),{t:s,setLocaleMessage:i}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(u,d)=>{const f=Ve("k-badge"),h=Ve("el-checkbox");return x(),ce(vr,null,{title:G(()=>[pe(u.$slots,"title")]),desc:G(()=>[pe(u.$slots,"desc")]),menu:G(()=>[pe(u.$slots,"menu"),GA,K("div",{class:D(["k-menu-item",{disabled:e.disabled}]),onClick:d[0]||(d[0]=(...p)=>c(a)&&c(a)(...p))},[K("span",XA,[Q(c(Jy))]),Je(" "+Ee(c(s)("select.all")),1)],2),K("div",{class:D(["k-menu-item",{disabled:e.disabled}]),onClick:d[1]||(d[1]=(...p)=>c(l)&&c(l)(...p))},[K("span",JA,[Q(c(Zy))]),Je(" "+Ee(c(s)("select.none")),1)],2)]),prefix:G(()=>[pe(u.$slots,"prefix")]),suffix:G(()=>[pe(u.$slots,"suffix")]),default:G(()=>[K("ul",ZA,[(x(!0),U(Pe,null,it(c(r),p=>(x(),U("li",{key:p.value},[Q(h,{disabled:e.disabled||p.meta.disabled,modelValue:c(n).includes(p.value),"onUpdate:modelValue":v=>c(o)(p.value)},{default:G(()=>[Je(Ee(c(t)(p.meta.description)||p.value)+" ",1),(x(!0),U(Pe,null,it(p.meta.badges||[],({text:v,type:g})=>(x(),ce(f,{type:g},{default:G(()=>[Je(Ee(c(s)("badge."+v)),1)]),_:2},1032,["type"]))),256))]),_:2},1032,["disabled","modelValue","onUpdate:modelValue"])]))),128))])]),_:3})}}});var Qy=St(QA,[["__file","checkbox.vue"]]);const eI=e=>(_C("data-v-22a919f3"),e=e(),wC(),e),tI=eI(()=>K("div",{class:"k-menu-separator"},null,-1)),nI=["onClick"],rI={class:"k-menu-icon"},oI=["onClick"],aI={class:"k-menu-icon"},lI=["onClick"],sI={class:"k-menu-icon"},iI=["onClick"],uI={class:"k-menu-icon"},cI=["onClick"],dI={class:"k-menu-icon"},fI={class:"prefix"},pI={class:"entry-input"},mI={key:0,class:"shadow"},hI={key:1,class:"placeholder"},vI=["onUpdate:modelValue"],gI=se({__name:"group",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{},extra:{}},emits:["update:modelValue"],setup(e){const{entries:t,up:n,down:r,insert:o,del:a}=Hf(),{t:l,setLocaleMessage:s}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(i,u)=>{const d=Ve("el-button"),f=Ve("k-schema");return x(),ce(vr,Ht(i.$attrs,{collapsible:{initial:e.schema.meta.collapse}}),{title:G(()=>[pe(i.$slots,"title",{},void 0,!0)]),desc:G(()=>[pe(i.$slots,"desc",{},void 0,!0)]),menu:G(()=>[pe(i.$slots,"menu",{},void 0,!0)]),prefix:G(()=>[pe(i.$slots,"prefix",{},void 0,!0)]),suffix:G(()=>[pe(i.$slots,"suffix",{},void 0,!0)]),control:G(()=>[Q(d,{onClick:u[0]||(u[0]=h=>c(o)(c(t).length)),disabled:e.disabled},{default:G(()=>[Je(Ee(c(l)("entry.add-item")),1)]),_:1},8,["disabled"])]),collapse:G(()=>[(x(!0),U(Pe,null,it(c(t),([h,p],v)=>{var g,w;return x(),ce(f,{key:v,modelValue:c(t)[v][1],"onUpdate:modelValue":m=>c(t)[v][1]=m,initial:((g=e.initial)!=null?g:e.schema.meta.default)[h],schema:e.schema.inner,disabled:e.disabled,prefix:e.schema.type==="array"?`${e.prefix.slice(0,-1)}[${h}].`:e.prefix+h+".",extra:{foldable:!0,changed:h in((w=e.initial)!=null?w:e.schema.meta.default)?void 0:!0,invalid:c(t).filter(m=>m[0]===h).length>1}},{menu:G(()=>[tI,K("div",{class:D(["k-menu-item",{disabled:e.disabled||!v}]),onClick:m=>c(n)(v)},[K("span",rI,[Q(c(Yy))]),Je(" "+Ee(c(l)("entry.move-up")),1)],10,nI),K("div",{class:D(["k-menu-item",{disabled:e.disabled||v===c(t).length-1}]),onClick:m=>c(r)(v)},[K("span",aI,[Q(c(qy))]),Je(" "+Ee(c(l)("entry.move-down")),1)],10,oI),K("div",{class:D(["k-menu-item",{disabled:e.disabled}]),onClick:m=>c(a)(v)},[K("span",sI,[Q(c(Gy))]),Je(" "+Ee(c(l)("entry.del-item")),1)],10,lI),K("div",{class:D(["k-menu-item",{disabled:e.disabled}]),onClick:m=>c(o)(v)},[K("span",uI,[Q(c(iA))]),Je(" "+Ee(c(l)("entry.insert-before")),1)],10,iI),K("div",{class:D(["k-menu-item",{disabled:e.disabled}]),onClick:m=>c(o)(v+1)},[K("span",dI,[Q(c(nA))]),Je(" "+Ee(c(l)("entry.insert-after")),1)],10,cI)]),title:G(()=>[K("span",fI,Ee(e.prefix.slice(0,-1)),1),e.schema.type==="array"?(x(),U(Pe,{key:0},[Je("["+Ee(h)+"]",1)],64)):(x(),U(Pe,{key:1},[Je(" [' "),K("span",pI,[c(t)[v][0]?(x(),U("span",mI,Ee(c(t)[v][0]),1)):(x(),U("span",hI,"\xA0")),vt(K("input",{"onUpdate:modelValue":m=>c(t)[v][0]=m},null,8,vI),[[t0,c(t)[v][0]]])]),Je(" '] ")],64))]),_:2},1032,["modelValue","onUpdate:modelValue","initial","schema","disabled","prefix","extra"])}),128))]),_:3},16,["collapsible"])}}});var e1=St(gI,[["__scopeId","data-v-22a919f3"],["__file","group.vue"]]);const bI={key:0,class:"k-schema-header"},yI=se({inheritAttrs:!1,__name:"intersect",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{},extra:{}},emits:["update:modelValue"],setup(e){const t=e,[n,r]=R0(),o=Ir(),a=O(()=>o(t.schema.meta.description));return(l,s)=>{var d,f;const i=Ve("k-schema"),u=Ve("k-markdown");return x(),U(Pe,null,[Q(c(n),null,{default:G(()=>[(x(!0),U(Pe,null,it(c(Ds)(e.schema),(h,p)=>{var v;return x(),ce(i,{key:p,modelValue:e.modelValue,"onUpdate:modelValue":s[0]||(s[0]=g=>l.$emit("update:modelValue",g)),schema:(v=e.extra)!=null&&v.foldable?h:{...h,meta:{...e.schema.meta,...h.meta}},initial:e.initial,disabled:e.disabled,prefix:e.prefix,extra:{foldable:!1}},{title:G(()=>[pe(l.$slots,"title")]),prefix:G(()=>[pe(l.$slots,"prefix")]),suffix:G(()=>[pe(l.$slots,"suffix")]),_:2},1032,["modelValue","schema","initial","disabled","prefix"])}),128))]),_:3}),((f=(d=e.extra)==null?void 0:d.foldable)!=null?f:e.schema.meta.collapse)?(x(),ce(vr,Ht({key:0},l.$attrs,{collapsible:{initial:e.schema.meta.collapse}}),{title:G(()=>[pe(l.$slots,"title")]),desc:G(()=>[pe(l.$slots,"desc",{},()=>[Q(u,{source:a.value},null,8,["source"])])]),menu:G(()=>[pe(l.$slots,"menu")]),prefix:G(()=>[pe(l.$slots,"prefix")]),suffix:G(()=>[pe(l.$slots,"suffix")]),collapse:G(()=>[Q(c(r))]),_:3},16,["collapsible"])):(x(),U(Pe,{key:1},[a.value?(x(),U("h2",bI,Ee(a.value),1)):ye("",!0),Q(c(r))],64))],64)}}});var _I=St(yI,[["__file","intersect.vue"]]);const wI={class:"prefix"},CI={key:0,class:"k-schema-header"},kI=se({inheritAttrs:!1,__name:"object",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{},extra:{}},emits:["update:modelValue"],setup(e){const t=e,[n,r]=R0(),o=Ir(),a=oo(),l=O(()=>o(t.schema.meta.description)),{t:s,setLocaleMessage:i}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(u,d)=>{var v,g;const f=Ve("k-badge"),h=Ve("k-schema"),p=Ve("k-markdown");return x(),U(Pe,null,[Q(c(n),null,{default:G(()=>[(x(!0),U(Pe,null,it(e.schema.dict,(w,m)=>{var b;return x(),ce(h,{key:m,modelValue:c(a)[m],"onUpdate:modelValue":_=>c(a)[m]=_!=null?_:void 0,schema:w,initial:(b=e.initial)==null?void 0:b[m],disabled:e.disabled,prefix:e.prefix+m+"."},{title:G(()=>[K("span",wI,Ee(e.prefix),1),K("span",null,Ee(m),1),(x(!0),U(Pe,null,it(w.meta.badges||[],({text:_,type:y})=>(x(),ce(f,{type:y},{default:G(()=>[Je(Ee(c(s)("badge."+_)),1)]),_:2},1032,["type"]))),256))]),_:2},1032,["modelValue","onUpdate:modelValue","schema","initial","disabled","prefix"])}),128))]),_:1}),((g=(v=e.extra)==null?void 0:v.foldable)!=null?g:e.schema.meta.collapse)?(x(),ce(vr,Ht({key:0},u.$attrs,{collapsible:{initial:e.schema.meta.collapse}}),{title:G(()=>[pe(u.$slots,"title")]),desc:G(()=>[pe(u.$slots,"desc",{},()=>[Q(p,{source:l.value},null,8,["source"])])]),menu:G(()=>[pe(u.$slots,"menu")]),prefix:G(()=>[pe(u.$slots,"prefix")]),suffix:G(()=>[pe(u.$slots,"suffix")]),collapse:G(()=>[Q(c(r))]),_:3},16,["collapsible"])):(x(),U(Pe,{key:1},[l.value?(x(),U("h2",CI,Ee(l.value),1)):ye("",!0),Q(c(r))],64))],64)}}});var SI=St(kI,[["__file","object.vue"]]);const EI={class:"bottom"},$I=se({__name:"radio",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{}},emits:["update:modelValue"],setup(e){const t=Ir(),n=oo(),{t:r,setLocaleMessage:o}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(a,l)=>{const s=Ve("k-badge"),i=Ve("el-radio");return x(),ce(vr,null,{title:G(()=>[pe(a.$slots,"title")]),desc:G(()=>[pe(a.$slots,"desc")]),menu:G(()=>[pe(a.$slots,"menu")]),prefix:G(()=>[pe(a.$slots,"prefix")]),suffix:G(()=>[pe(a.$slots,"suffix")]),default:G(()=>[K("ul",EI,[(x(!0),U(Pe,null,it(c(Ds)(e.schema),u=>(x(),U("li",{key:u.value},[Q(i,{label:u.value,disabled:e.disabled||u.meta.disabled,modelValue:c(n),"onUpdate:modelValue":l[0]||(l[0]=d=>mt(n)?n.value=d:null)},{default:G(()=>[Je(Ee(c(t)(u.meta.description)||u.value)+" ",1),(x(!0),U(Pe,null,it(u.meta.badges||[],({text:d,type:f})=>(x(),ce(s,{type:f},{default:G(()=>[Je(Ee(c(r)("badge."+d)),1)]),_:2},1032,["type"]))),256))]),_:2},1032,["label","disabled","modelValue"])]))),128))])]),_:3})}}});var TI=St($I,[["__file","radio.vue"]]);const xI=K("div",{class:"k-menu-separator"},null,-1),OI={class:"k-menu-icon"},AI={class:"k-menu-icon"},II=se({__name:"multiselect",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{}},emits:["update:modelValue"],setup(e){const t=Ir(),{values:n,items:r,selectAll:o,selectNone:a}=jf(),{t:l,setLocaleMessage:s}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(i,u)=>{const d=Ve("k-badge"),f=Ve("el-option"),h=Ve("el-select");return x(),ce(vr,null,{title:G(()=>[pe(i.$slots,"title")]),desc:G(()=>[pe(i.$slots,"desc")]),menu:G(()=>[pe(i.$slots,"menu"),xI,K("div",{class:D(["k-menu-item",{disabled:e.disabled}]),onClick:u[0]||(u[0]=(...p)=>c(o)&&c(o)(...p))},[K("span",OI,[Q(c(Jy))]),Je(" "+Ee(c(l)("select.all")),1)],2),K("div",{class:D(["k-menu-item",{disabled:e.disabled}]),onClick:u[1]||(u[1]=(...p)=>c(a)&&c(a)(...p))},[K("span",AI,[Q(c(Zy))]),Je(" "+Ee(c(l)("select.none")),1)],2)]),prefix:G(()=>[pe(i.$slots,"prefix")]),suffix:G(()=>[pe(i.$slots,"suffix")]),control:G(()=>[Q(h,{multiple:"","collapse-tags":"",modelValue:c(n),"onUpdate:modelValue":u[2]||(u[2]=p=>mt(n)?n.value=p:null),disabled:e.disabled},{default:G(()=>[(x(!0),U(Pe,null,it(c(r),p=>(x(),ce(f,{key:p.value,value:p.value,disabled:p.meta.disabled},{default:G(()=>[Je(Ee(c(t)(p.meta.description)||p.value)+" ",1),(x(!0),U(Pe,null,it(p.meta.badges||[],({text:v,type:g})=>(x(),ce(d,{type:g},{default:G(()=>[Je(Ee(c(l)("badge."+v)),1)]),_:2},1032,["type"]))),256))]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])]),_:3})}}});var t1=St(II,[["__file","multiselect.vue"]]);const PI={class:"k-schema-table"},LI={key:0},MI={key:0},RI=K("th",{colspan:"3"},null,-1),NI=["onMouseenter","onMouseleave"],DI={class:"suffix-icon"},FI=["onMouseenter","onMouseleave"],VI=["onClick"],BI=["onClick"],zI=["onClick"],HI=se({__name:"table",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{}},emits:["update:modelValue"],setup(e){const t=e,n=O(()=>Wf(t.schema.inner)),{entries:r,insert:o,del:a,up:l,down:s}=Hf(),i=B(),u=B(),d=B();function f(y,C){const k=y.getBoundingClientRect(),E=i.value.getBoundingClientRect();return{el:y,invalid:!!C,top:k.top-E.top,left:k.left-E.left,width:k.width,height:k.height}}function h(y,C){if(y===null)return;if(C>=0)return md(n.value[C][1],r.value[y][1]);const k=md(t.schema.sKey,r.value[y][0]);if(k)return k;if(C===-1&&r.value.filter(([E])=>E===r.value[y][0]).length>1)return["errors.duplicate-key"]}function p(y,C,k){var S;const E=y.target;E!==((S=u.value)==null?void 0:S.el)&&(u.value=f(E,h(C,k)))}function v(y,C,k){u.value=void 0}function g(y,C,k){var S;let E=y.target;for(;E&&E.tagName!=="TD";)E=E.parentElement;!E||E===((S=d.value)==null?void 0:S.el)||(d.value=f(E,h(C,k)))}function w(y,C,k){d.value=void 0}const m=Ir(),{t:b,setLocaleMessage:_}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(y,C)=>{const k=Ve("el-button"),E=Ve("el-tooltip"),S=Ve("el-input");return x(),ce(vr,null,{title:G(()=>[pe(y.$slots,"title")]),desc:G(()=>[pe(y.$slots,"desc")]),menu:G(()=>[pe(y.$slots,"menu")]),prefix:G(()=>[pe(y.$slots,"prefix")]),suffix:G(()=>[pe(y.$slots,"suffix")]),control:G(()=>[Q(k,{onClick:C[0]||(C[0]=R=>c(o)(c(r).length)),disabled:e.disabled},{default:G(()=>[Je(Ee(c(b)("entry.add-row")),1)]),_:1},8,["disabled"])]),default:G(()=>{var R;return[n.value&&c(r).length?(x(),U("div",{key:0,class:"bottom k-schema-table-container",ref_key:"container",ref:i},[K("table",PI,[e.schema.type==="dict"||n.value[0][0]!==null?(x(),U("tr",LI,[e.schema.type==="dict"?(x(),U("th",MI,Ee(c(m)((R=e.schema.sKey)==null?void 0:R.meta.description)||c(b)("entry.key")),1)):ye("",!0),(x(!0),U(Pe,null,it(n.value,([L,F])=>(x(),U("th",{key:L},[K("span",null,Ee(L===null?c(b)("entry.value"):c(m)(F.meta.description)||L),1)]))),128)),RI])):ye("",!0),(x(!0),U(Pe,null,it(c(r),(L,F)=>(x(),U("tr",null,[e.schema.type==="dict"?(x(),U("td",{key:0,class:"key",onMouseenter:N=>p(N,F,-1),onMouseleave:N=>v(N,F,-1)},[Q(S,{modelValue:c(r)[F][0],"onUpdate:modelValue":N=>c(r)[F][0]=N,disabled:e.disabled,onFocus:N=>g(N,F,-1),onBlur:N=>w(N,F,-1)},{suffix:G(()=>[h(F,-1)?(x(),ce(E,{key:0,content:c(b)(...h(F,-1))},{default:G(()=>[K("span",DI,[Q(c(Xy),{class:"invalid"})])]),_:2},1032,["content"])):ye("",!0)]),_:2},1032,["modelValue","onUpdate:modelValue","disabled","onFocus","onBlur"])],40,NI)):ye("",!0),(x(!0),U(Pe,null,it(n.value,([N,A],M)=>{var H;return x(),U("td",{key:N,class:D("k-schema-column-"+A.type),onMouseenter:j=>p(j,F,M),onMouseleave:j=>v(j,F,M)},[Q(Uf,{minimal:"",schema:A,disabled:e.disabled,modelValue:N===null?c(r)[F][1]:(H=c(r)[F][1])==null?void 0:H[N],"onUpdate:modelValue":j=>{var V;return N===null?c(r)[F][1]=j:((V=c(r)[F])[1]||(V[1]={}))[N]=j},onFocus:j=>g(j,F,M),onBlur:j=>w(j,F,M)},null,8,["schema","disabled","modelValue","onUpdate:modelValue","onFocus","onBlur"])],42,FI)}),128)),e.disabled?ye("",!0):(x(),U("td",{key:1,class:D(["button",{disabled:!F}]),onMouseenter:C[1]||(C[1]=N=>p(N,null)),onMouseleave:C[2]||(C[2]=N=>v(N,null))},[K("div",{class:"inner",onClick:$t(N=>c(l)(F),["stop"])},[Q(c(Yy))],8,VI)],34)),e.disabled?ye("",!0):(x(),U("td",{key:2,class:D(["button",{disabled:F===c(r).length-1}]),onMouseenter:C[3]||(C[3]=N=>p(N,null)),onMouseleave:C[4]||(C[4]=N=>v(N,null))},[K("div",{class:"inner",onClick:$t(N=>c(s)(F),["stop"])},[Q(c(qy))],8,BI)],34)),e.disabled?ye("",!0):(x(),U("td",{key:3,class:"button",onMouseenter:C[5]||(C[5]=N=>p(N,null)),onMouseleave:C[6]||(C[6]=N=>v(N,null))},[K("div",{class:"inner",onClick:$t(N=>c(a)(F),["stop"])},[Q(c(Gy))],8,zI)],32))]))),256))]),(x(!0),U(Pe,null,it({hover:u.value,focus:d.value},L=>(x(),U(Pe,null,[L?(x(),U("div",{key:0,class:D(["outline",{invalid:L.invalid}]),style:Qe({top:L.top+"px",left:L.left+"px",width:L.width+"px",height:L.height+"px"})},null,6)):ye("",!0)],64))),256))],512)):ye("",!0)]}),_:3})}}});var n1=St(HI,[["__file","table.vue"]]);const jI={class:"bottom"},WI=se({__name:"textarea",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{}},emits:["update:modelValue"],setup(e){const t=e,n=oo(),r=O(()=>{const{rows:o}=t.schema.meta.extra||{};return typeof o=="number"?{minRows:o,maxRows:o}:Array.isArray(o)?{minRows:o[0],maxRows:o[1]}:!0});return(o,a)=>{const l=Ve("el-input");return x(),ce(vr,null,{title:G(()=>[pe(o.$slots,"title")]),desc:G(()=>[pe(o.$slots,"desc")]),menu:G(()=>[pe(o.$slots,"menu")]),prefix:G(()=>[pe(o.$slots,"prefix")]),suffix:G(()=>[pe(o.$slots,"suffix")]),default:G(()=>[K("div",jI,[Q(l,{type:"textarea",modelValue:c(n),"onUpdate:modelValue":a[0]||(a[0]=s=>mt(n)?n.value=s:null),autosize:r.value,disabled:e.disabled},null,8,["modelValue","autosize","disabled"])])]),_:3})}}});var UI=St(WI,[["__file","textarea.vue"]]);const KI=se({__name:"tuple",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{}},emits:["update:modelValue"],setup(e){const t=e,n=oo(),r=O(()=>t.schema.list.every(o=>["string","number","boolean"].includes(o.type)));return(o,a)=>(x(),ce(vr,null,Is({title:G(()=>[pe(o.$slots,"title")]),desc:G(()=>[pe(o.$slots,"desc")]),menu:G(()=>[pe(o.$slots,"menu")]),_:2},[r.value?{name:"prefix",fn:G(()=>[pe(o.$slots,"prefix")]),key:"0"}:void 0,r.value?{name:"suffix",fn:G(()=>[pe(o.$slots,"suffix")]),key:"1"}:void 0,r.value?{name:"control",fn:G(()=>[(x(!0),U(Pe,null,it(e.schema.list,(l,s)=>(x(),ce(Uf,{key:s,schema:l,disabled:e.disabled,modelValue:c(n)[s],"onUpdate:modelValue":i=>c(n)[s]=i},null,8,["schema","disabled","modelValue","onUpdate:modelValue"]))),128))]),key:"2"}:void 0]),1024))}});var qI=St(KI,[["__file","tuple.vue"]]);const YI=se({__name:"union",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{},extra:{}},emits:["update:modelValue"],setup(e){const t=e,n=Ir(),r=B(),o=B(),a=B();$e(()=>t.schema,d=>{r.value=Ds(t.schema),o.value=r.value.map(f=>f.type==="const"?f.value:Mi(f,!0))},{immediate:!0});const l=oo({input(d){a.value=null;let f=!0,h=0;for(;!a.value&&f&&++h<10;){f=!1;for(const[p,v]of t.schema.list.entries())if(!v.meta.hidden&&!!Zx(v,d)){if(v.type==="transform"){if(!v.callback)continue;try{d=v.callback(d)}catch(g){console.error(g);continue}f=!0,d!=null||(d=Mi(t.schema))}else a.value=v,o.value[p]=d;break}}return sa(d,Mi(t.schema))&&(d=null),d}}),s=O({get(){var d,f;if(a.value!==t.schema)return n((d=a.value)==null?void 0:d.meta.description)||((f=a.value)==null?void 0:f.value)},set(d){a.value!==r.value[d]&&(l.value=o.value[d],a.value=r.value[d])}}),{t:i,setLocaleMessage:u}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(d,f)=>{var m,b;const h=Ve("k-markdown"),p=Ve("k-badge"),v=Ve("el-option"),g=Ve("el-select"),w=Ve("k-schema");return x(),ce(w,{modelValue:c(l),"onUpdate:modelValue":f[1]||(f[1]=_=>mt(l)?l.value=_:null),schema:a.value,initial:e.initial,disabled:e.disabled,prefix:e.prefix,extra:{foldable:(b=(m=e.extra)==null?void 0:m.foldable)!=null?b:!0,required:!!e.schema.meta.required&&c(xn)(e.schema.meta.default)&&c(xn)(e.modelValue)}},{title:G(()=>[pe(d.$slots,"title")]),desc:G(()=>[pe(d.$slots,"desc",{},()=>[Q(h,{source:c(n)(e.schema.meta.description)},null,8,["source"])])]),prefix:G(()=>[r.value.length>1?(x(),ce(g,{key:0,modelValue:s.value,"onUpdate:modelValue":f[0]||(f[0]=_=>s.value=_),filterable:"",disabled:e.disabled},{default:G(()=>[(x(!0),U(Pe,null,it(r.value,(_,y)=>(x(),ce(v,{key:y,value:y,disabled:_.meta.disabled},{default:G(()=>[Je(Ee(c(n)(_.meta.description)||_.value)+" ",1),(x(!0),U(Pe,null,it(_.meta.badges||[],({text:C,type:k})=>(x(),ce(p,{type:k},{default:G(()=>[Je(Ee(c(i)("badge."+C)),1)]),_:2},1032,["type"]))),256))]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])):ye("",!0)]),suffix:G(()=>[pe(d.$slots,"suffix")]),_:3},8,["modelValue","schema","initial","disabled","prefix","extra"])}}});var GI=St(YI,[["__file","union.vue"]]);const XI=se({__name:"badge",props:{type:{}},setup(e){return(t,n)=>(x(),U("span",{class:D(["k-badge",t.type])},[pe(t.$slots,"default")],2))}});var ov=St(XI,[["__file","badge.vue"]]);const JI={class:"k-menu-icon"},ZI={class:"k-menu-icon"},QI=se({__name:"schema",props:{schema:{},initial:{},modelValue:{},extra:{},disabled:Boolean,branch:Boolean,prefix:{type:String,default:""}},emits:["update:modelValue"],setup(e){const t=e,n=Ir(),r=O(()=>{var i;return t.disabled||((i=t.schema)==null?void 0:i.meta.disabled)}),o=O(()=>{var i;return["string","number","boolean"].includes((i=t.schema)==null?void 0:i.type)&&(xn(t.modelValue)||typeof t.modelValue===t.schema.type)}),a=O(()=>{const i=[...Wy].map(u=>{var d,f;if(!(u.type&&((d=t.schema)==null?void 0:d.type)!==u.type)&&!(u.role&&((f=t.schema)==null?void 0:f.meta.role)!==u.role)&&!(u.validate&&!(xn(t.modelValue)||u.validate(t.modelValue,t.schema))))return[u.component,+!!u.type+ +!!u.role]}).filter(Boolean).sort((u,d)=>d[1]-u[1]);return i.push([vr,0]),i[0][0]}),{t:l,setLocaleMessage:s}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(i,u)=>{var f,h,p,v,g,w,m,b,_;const d=Ve("k-markdown");return!((f=e.schema)!=null&&f.meta.hidden)&&(((h=e.extra)==null?void 0:h.foldable)||e.schema&&e.schema.type!=="const")?(x(),ce(c(a),{key:0,schema:e.schema,prefix:e.prefix,initial:e.initial,disabled:r.value,extra:e.extra,modelValue:e.modelValue,"onUpdate:modelValue":u[3]||(u[3]=y=>i.$emit("update:modelValue",y)),class:D({changed:(v=(p=e.extra)==null?void 0:p.changed)!=null?v:!c(sa)(e.initial,e.modelValue),required:(b=(g=e.extra)==null?void 0:g.required)!=null?b:((w=e.schema)==null?void 0:w.meta.required)&&c(xn)((m=e.schema)==null?void 0:m.meta.default)&&c(xn)(e.modelValue),invalid:(_=e.extra)==null?void 0:_.invalid})},{title:G(()=>[pe(i.$slots,"title")]),menu:G(()=>[K("div",{class:D(["k-menu-item",{disabled:r.value||c(sa)(e.initial,e.modelValue)}]),onClick:u[0]||(u[0]=y=>i.$emit("update:modelValue",c(us)(e.initial)))},[K("span",JI,[Q(c(RA))]),Je(" "+Ee(c(l)("initial")),1)],2),K("div",{class:D(["k-menu-item",{disabled:r.value||c(xn)(e.modelValue)}]),onClick:u[1]||(u[1]=y=>i.$emit("update:modelValue",null))},[K("span",ZI,[Q(c(yA))]),Je(" "+Ee(c(l)("default")),1)],2),pe(i.$slots,"menu")]),desc:G(()=>[pe(i.$slots,"desc",{},()=>{var y;return[Q(d,{source:c(n)((y=e.schema)==null?void 0:y.meta.description)},null,8,["source"])]})]),collapse:G(()=>[pe(i.$slots,"collapse")]),prefix:G(()=>[pe(i.$slots,"prefix")]),suffix:G(()=>[pe(i.$slots,"suffix")]),control:G(()=>[o.value?(x(),ce(Uf,{key:0,schema:e.schema,disabled:r.value,modelValue:e.modelValue,"onUpdate:modelValue":u[2]||(u[2]=y=>i.$emit("update:modelValue",y))},null,8,["schema","disabled","modelValue"])):ye("",!0)]),_:3},8,["schema","prefix","initial","disabled","extra","modelValue","class"])):ye("",!0)}}});var av=St(QI,[["__file","schema.vue"]]);const e8={class:"k-form"},t8={key:0,class:"k-schema-header"},n8=se({__name:"form",props:{schema:{},initial:{},modelValue:{},disabled:Boolean,showHeader:Boolean},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,r=Ir(),o=O(()=>n.schema&&new Rs(n.schema));function a(d){for(const f of d){const[h,p]=l(f);if(!h)return[!1,!1];if(!p)return[!0,!1]}return[!0,!0]}function l(d){if(!d)return[!0,!0];if(d.meta.hidden)return[!0,!0];if(d.type==="object")return r(d.meta.description)?[!0,!1]:a(Object.entries(d.dict).filter(([,f])=>!f.meta.hidden).map(([,f])=>f));if(d.type==="intersect")return a(d.list);if(d.type==="union"){const f=Ds(d);return f.length===1?l(f[0]):[!1,!1]}else return[!1,!1]}const s=O({get:()=>n.modelValue,set:t.bind(null,"update:modelValue")}),{t:i,setLocaleMessage:u}=kn({messages:{"zh-CN":mr,"en-US":hr}});return(d,f)=>{const h=Ve("k-schema");return x(),U("form",e8,[pe(d.$slots,"prolog"),e.showHeader||!l(o.value)[0]?(x(),U("h2",t8,[pe(d.$slots,"title",{},()=>[Je(Ee(c(i)("title")),1)])])):ye("",!0),Q(h,{modelValue:s.value,"onUpdate:modelValue":f[0]||(f[0]=p=>s.value=p),initial:e.initial,schema:o.value,disabled:e.disabled},null,8,["modelValue","initial","schema","disabled"]),pe(d.$slots,"epilog")])}}});var lv=St(n8,[["__file","form.vue"]]);const an=Object.assign(vr,{Form:lv,Badge:ov,Schema:av,useModel:oo,useEntries:Hf,useDisabled:Qx,extensions:Wy,install(e){e.component("k-form",lv),e.component("k-badge",ov),e.component("k-schema",av)}});an.extensions.add({type:"bitset",role:"select",component:t1,validate:e=>typeof e=="number"||Array.isArray(e)&&e.every(t=>typeof t=="string")});an.extensions.add({type:"array",role:"select",component:t1,validate:e=>Array.isArray(e)&&e.every(t=>typeof t=="string")});an.extensions.add({type:"bitset",component:Qy,validate:e=>typeof e=="number"||Array.isArray(e)&&e.every(t=>typeof t=="string")});an.extensions.add({type:"array",role:"checkbox",component:Qy,validate:e=>Array.isArray(e)&&e.every(t=>typeof t=="string")});an.extensions.add({type:"array",component:e1,validate:e=>Array.isArray(e)});an.extensions.add({type:"dict",component:e1,validate:e=>typeof e=="object"});an.extensions.add({type:"object",component:SI,validate:e=>typeof e=="object"});an.extensions.add({type:"intersect",component:_I,validate:e=>typeof e=="object"});an.extensions.add({type:"union",role:"radio",component:TI});an.extensions.add({type:"array",role:"table",component:n1,validate:(e,t)=>Array.isArray(e)&&!!Wf(t.inner)});an.extensions.add({type:"dict",role:"table",component:n1,validate:(e,t)=>typeof e=="object"&&!!Wf(t.inner)});an.extensions.add({type:"string",role:"textarea",component:UI,validate:e=>typeof e=="string"});an.extensions.add({type:"tuple",component:qI,validate:e=>Array.isArray(e)});an.extensions.add({type:"union",component:GI});const r8={},o8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",svg:"",class:"k-icon"},a8=K("path",{fill:"currentColor",d:"M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32z"},null,-1),l8=[a8];function s8(e,t){return x(),U("svg",o8,l8)}var i8=St(r8,[["render",s8],["__file","file-icon.vue"]]);const u8={},c8={viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg",svg:"",class:"k-icon"},d8=K("path",{fill:"currentColor",d:"M88 48C101.3 48 112 58.75 112 72V120C112 133.3 101.3 144 88 144H40C26.75 144 16 133.3 16 120V72C16 58.75 26.75 48 40 48H88zM488 72C501.3 72 512 82.75 512 96C512 109.3 501.3 120 488 120H184C170.7 120 160 109.3 160 96C160 82.75 170.7 72 184 72H488zM488 232C501.3 232 512 242.7 512 256C512 269.3 501.3 280 488 280H184C170.7 280 160 269.3 160 256C160 242.7 170.7 232 184 232H488zM488 392C501.3 392 512 402.7 512 416C512 429.3 501.3 440 488 440H184C170.7 440 160 429.3 160 416C160 402.7 170.7 392 184 392H488zM16 232C16 218.7 26.75 208 40 208H88C101.3 208 112 218.7 112 232V280C112 293.3 101.3 304 88 304H40C26.75 304 16 293.3 16 280V232zM88 368C101.3 368 112 378.7 112 392V440C112 453.3 101.3 464 88 464H40C26.75 464 16 453.3 16 440V392C16 378.7 26.75 368 40 368H88z"},null,-1),f8=[d8];function p8(e,t){return x(),U("svg",c8,f8)}var m8=St(u8,[["render",p8],["__file","window-flip-icon.vue"]]);const Kt=(e,t,{checkForDefaultPrevented:n=!0}={})=>o=>{const a=e==null?void 0:e(o);if(n===!1||!a)return t==null?void 0:t(o)},sv=e=>t=>t.pointerType==="mouse"?e(t):void 0,h8=()=>xt&&/firefox/i.test(window.navigator.userAgent),Kf=e=>{let t,n;return e.type==="touchend"?(n=e.changedTouches[0].clientY,t=e.changedTouches[0].clientX):e.type.startsWith("touch")?(n=e.touches[0].clientY,t=e.touches[0].clientX):(n=e.clientY,t=e.clientX),{clientX:t,clientY:n}};var v8=typeof global=="object"&&global&&global.Object===Object&&global,r1=v8,g8=typeof self=="object"&&self&&self.Object===Object&&self,b8=r1||g8||Function("return this")(),gr=b8,y8=gr.Symbol,Xn=y8,o1=Object.prototype,_8=o1.hasOwnProperty,w8=o1.toString,Ol=Xn?Xn.toStringTag:void 0;function C8(e){var t=_8.call(e,Ol),n=e[Ol];try{e[Ol]=void 0;var r=!0}catch{}var o=w8.call(e);return r&&(t?e[Ol]=n:delete e[Ol]),o}var k8=Object.prototype,S8=k8.toString;function E8(e){return S8.call(e)}var $8="[object Null]",T8="[object Undefined]",iv=Xn?Xn.toStringTag:void 0;function va(e){return e==null?e===void 0?T8:$8:iv&&iv in Object(e)?C8(e):E8(e)}function xr(e){return e!=null&&typeof e=="object"}var x8="[object Symbol]";function zu(e){return typeof e=="symbol"||xr(e)&&va(e)==x8}function a1(e,t){for(var n=-1,r=e==null?0:e.length,o=Array(r);++n0){if(++t>=sP)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function dP(e){return function(){return e}}var fP=function(){try{var e=ba(Object,"defineProperty");return e({},"",{}),e}catch{}}(),fu=fP,pP=fu?function(e,t){return fu(e,"toString",{configurable:!0,enumerable:!1,value:dP(t),writable:!0})}:qf,mP=pP,hP=cP(mP),i1=hP;function vP(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var CP=9007199254740991,kP=/^(?:0|[1-9]\d*)$/;function Hu(e,t){var n=typeof e;return t=t==null?CP:t,!!t&&(n=="number"||n!="symbol"&&kP.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=$P}function hl(e){return e!=null&&Jf(e.length)&&!Yf(e)}function TP(e,t,n){if(!Rn(n))return!1;var r=typeof t;return(r=="number"?hl(n)&&Hu(t,n.length):r=="string"&&t in n)?Fs(n[t],e):!1}function xP(e){return c1(function(t,n){var r=-1,o=n.length,a=o>1?n[o-1]:void 0,l=o>2?n[2]:void 0;for(a=e.length>3&&typeof a=="function"?(o--,a):void 0,l&&TP(n[0],n[1],l)&&(a=o<3?void 0:a,o=1),t=Object(t);++r-1}function WL(e,t){var n=this.__data__,r=ju(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function ao(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(s)?t>1?Ku(s,t-1,n,r,o):op(o,s):r||(o[o.length]=s)}return o}function v1(e){var t=e==null?0:e.length;return t?Ku(e,1):[]}function i6(e){return i1(u1(e,void 0,v1),e+"")}var u6=h1(Object.getPrototypeOf,Object),ap=u6,c6="[object Object]",d6=Function.prototype,f6=Object.prototype,g1=d6.toString,p6=f6.hasOwnProperty,m6=g1.call(Object);function h6(e){if(!xr(e)||va(e)!=c6)return!1;var t=ap(e);if(t===null)return!0;var n=p6.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&g1.call(n)==m6}function gd(){if(!arguments.length)return[];var e=arguments[0];return wn(e)?e:[e]}function v6(){this.__data__=new ao,this.size=0}function g6(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function b6(e){return this.__data__.get(e)}function y6(e){return this.__data__.has(e)}var _6=200;function w6(e,t){var n=this.__data__;if(n instanceof ao){var r=n.__data__;if(!hs||r.length<_6-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new lo(r)}return n.set(e,t),this.size=n.size,this}function ur(e){var t=this.__data__=new ao(e);this.size=t.size}ur.prototype.clear=v6;ur.prototype.delete=g6;ur.prototype.get=b6;ur.prototype.has=y6;ur.prototype.set=w6;function C6(e,t){return e&&Vs(t,Bs(t),e)}function k6(e,t){return e&&Vs(t,zs(t),e)}var b1=typeof exports=="object"&&exports&&!exports.nodeType&&exports,wv=b1&&typeof module=="object"&&module&&!module.nodeType&&module,S6=wv&&wv.exports===b1,Cv=S6?gr.Buffer:void 0,kv=Cv?Cv.allocUnsafe:void 0;function y1(e,t){if(t)return e.slice();var n=e.length,r=kv?kv(n):new e.constructor(n);return e.copy(r),r}function E6(e,t){for(var n=-1,r=e==null?0:e.length,o=0,a=[];++ns))return!1;var u=a.get(e),d=a.get(t);if(u&&d)return u==t&&d==e;var f=-1,h=!0,p=n&rR?new gs:void 0;for(a.set(e,t),a.set(t,e);++f=t||E<0||f&&S>=a}function m(){var k=wc();if(w(k))return b(k);s=setTimeout(m,g(k))}function b(k){return s=void 0,h&&r?p(k):(r=o=void 0,l)}function _(){s!==void 0&&clearTimeout(s),u=0,r=i=o=s=void 0}function y(){return s===void 0?l:b(wc())}function C(){var k=wc(),E=w(k);if(r=arguments,o=this,i=k,E){if(s===void 0)return v(i);if(f)return clearTimeout(s),s=setTimeout(m,t),p(i)}return s===void 0&&(s=setTimeout(m,t)),l}return C.cancel=_,C.flush=y,C}function wd(e,t,n){(n!==void 0&&!Fs(e[t],n)||n===void 0&&!(t in e))&&Gf(e,t,n)}function M1(e){return xr(e)&&hl(e)}function Cd(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}function XR(e){return Vs(e,zs(e))}function JR(e,t,n,r,o,a,l){var s=Cd(e,n),i=Cd(t,n),u=l.get(i);if(u){wd(e,n,u);return}var d=a?a(s,i,n+"",e,t,l):void 0,f=d===void 0;if(f){var h=wn(i),p=!h&&ps(i),v=!h&&!p&&ep(i);d=i,h||p||v?wn(s)?d=s:M1(s)?d=s1(s):p?(f=!1,d=y1(i,!0)):v?(f=!1,d=k1(i,!0)):d=[]:h6(i)||fs(i)?(d=s,fs(s)?d=XR(s):(!Rn(s)||Yf(s))&&(d=S1(i))):f=!1}f&&(l.set(i,d),o(d,i,r,a,l),l.delete(i)),wd(e,n,d)}function R1(e,t,n,r,o){e!==t&&L1(t,function(a,l){if(o||(o=new ur),Rn(a))JR(e,t,l,n,R1,r,o);else{var s=r?r(Cd(e,l),a,l+"",e,t,o):void 0;s===void 0&&(s=a),wd(e,l,s)}},zs)}function ZR(e,t,n){for(var r=-1,o=e==null?0:e.length;++r=fN){var u=t?null:dN(e);if(u)return ip(u);l=!1,o=x1,i=new gs}else i=t?[]:s;e:for(;++re===void 0,_n=e=>typeof e=="boolean",ct=e=>typeof e=="number",F1=e=>!e&&e!==0||De(e)&&e.length===0||ht(e)&&!Object.keys(e).length,ua=e=>typeof Element=="undefined"?!1:e instanceof Element,hN=e=>Ge(e)?!Number.isNaN(Number(e)):!1,vN=(e="")=>e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),kd=e=>Object.keys(e),Ni=(e,t,n)=>({get value(){return fn(e,t,n)},set value(r){iN(e,t,r)}});class gN extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function ya(e,t){throw new gN(`[${e}] ${t}`)}const V1=(e="")=>e.split(" ").filter(t=>!!t.trim()),$o=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},up=(e,t)=>{!e||!t.trim()||e.classList.add(...V1(t))},hu=(e,t)=>{!e||!t.trim()||e.classList.remove(...V1(t))},B1=(e,t)=>{var n;if(!xt||!e||!t)return"";let r=cr(t);r==="float"&&(r="cssFloat");try{const o=e.style[r];if(o)return o;const a=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return a?a[r]:""}catch{return e.style[r]}};function Jn(e,t="px"){if(!e)return"";if(ct(e)||hN(e))return`${e}${t}`;if(Ge(e))return e}let pi;const bN=e=>{var t;if(!xt)return 0;if(pi!==void 0)return pi;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 r=n.offsetWidth;n.style.overflow="scroll";const o=document.createElement("div");o.style.width="100%",n.appendChild(o);const a=o.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),pi=r-a,pi};function yN(e,t){if(!xt)return;if(!t){e.scrollTop=0;return}const n=[];let r=t.offsetParent;for(;r!==null&&e!==r&&e.contains(r);)n.push(r),r=r.offsetParent;const o=t.offsetTop+n.reduce((i,u)=>i+u.offsetTop,0),a=o+t.offsetHeight,l=e.scrollTop,s=l+e.clientHeight;os&&(e.scrollTop=a-e.clientHeight)}/*! Element Plus Icons Vue v2.1.0 */var Ut=(e,t)=>{let n=e.__vccOpts||e;for(let[r,o]of t)n[r]=o;return n},_N={name:"ArrowDown"},wN={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},CN=K("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 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.592 30.592 0 0 0-42.752 0z"},null,-1),kN=[CN];function SN(e,t,n,r,o,a){return x(),U("svg",wN,kN)}var vl=Ut(_N,[["render",SN],["__file","arrow-down.vue"]]),EN={name:"ArrowLeft"},$N={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},TN=K("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.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"},null,-1),xN=[TN];function ON(e,t,n,r,o,a){return x(),U("svg",$N,xN)}var vu=Ut(EN,[["render",ON],["__file","arrow-left.vue"]]),AN={name:"ArrowRight"},IN={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},PN=K("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 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"},null,-1),LN=[PN];function MN(e,t,n,r,o,a){return x(),U("svg",IN,LN)}var oa=Ut(AN,[["render",MN],["__file","arrow-right.vue"]]),RN={name:"ArrowUp"},NN={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},DN=K("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 0z"},null,-1),FN=[DN];function VN(e,t,n,r,o,a){return x(),U("svg",NN,FN)}var cp=Ut(RN,[["render",VN],["__file","arrow-up.vue"]]),BN={name:"Calendar"},zN={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},HN=K("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64H128zm192-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 0v32zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64z"},null,-1),jN=[HN];function WN(e,t,n,r,o,a){return x(),U("svg",zN,jN)}var UN=Ut(BN,[["render",WN],["__file","calendar.vue"]]),KN={name:"CircleCheck"},qN={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},YN=K("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),GN=K("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.752l265.344-265.408z"},null,-1),XN=[YN,GN];function JN(e,t,n,r,o,a){return x(),U("svg",qN,XN)}var ZN=Ut(KN,[["render",JN],["__file","circle-check.vue"]]),QN={name:"CircleCloseFilled"},eD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},tD=K("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 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.336L512 457.664z"},null,-1),nD=[tD];function rD(e,t,n,r,o,a){return x(),U("svg",eD,nD)}var z1=Ut(QN,[["render",rD],["__file","circle-close-filled.vue"]]),oD={name:"CircleClose"},aD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},lD=K("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.248L466.752 512z"},null,-1),sD=K("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),iD=[lD,sD];function uD(e,t,n,r,o,a){return x(),U("svg",aD,iD)}var Yu=Ut(oD,[["render",uD],["__file","circle-close.vue"]]),cD={name:"Clock"},dD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},fD=K("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),pD=K("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z"},null,-1),mD=K("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32z"},null,-1),hD=[fD,pD,mD];function vD(e,t,n,r,o,a){return x(),U("svg",dD,hD)}var gD=Ut(cD,[["render",vD],["__file","clock.vue"]]),bD={name:"Close"},yD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},_D=K("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"},null,-1),wD=[_D];function CD(e,t,n,r,o,a){return x(),U("svg",yD,wD)}var ys=Ut(bD,[["render",CD],["__file","close.vue"]]),kD={name:"DArrowLeft"},SD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},ED=K("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 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.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 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.672l331.648-340.224z"},null,-1),$D=[ED];function TD(e,t,n,r,o,a){return x(),U("svg",SD,$D)}var tl=Ut(kD,[["render",TD],["__file","d-arrow-left.vue"]]),xD={name:"DArrowRight"},OD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},AD=K("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.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688zm-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.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"},null,-1),ID=[AD];function PD(e,t,n,r,o,a){return x(),U("svg",OD,ID)}var nl=Ut(xD,[["render",PD],["__file","d-arrow-right.vue"]]),LD={name:"Hide"},MD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},RD=K("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-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 176C44.8 438.4 0 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.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 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.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2L371.2 588.8ZM889.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.6-28.8 48-80 105.6-153.6 172.8-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-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"},null,-1),ND=K("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 112-32 28.8-67.2 48-112 48Z"},null,-1),DD=[RD,ND];function FD(e,t,n,r,o,a){return x(),U("svg",MD,DD)}var VD=Ut(LD,[["render",FD],["__file","hide.vue"]]),BD={name:"InfoFilled"},zD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},HD=K("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64zm67.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.344zM590.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.992 12.992 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"},null,-1),jD=[HD];function WD(e,t,n,r,o,a){return x(),U("svg",zD,jD)}var H1=Ut(BD,[["render",WD],["__file","info-filled.vue"]]),UD={name:"Loading"},KD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},qD=K("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.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.248zm452.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.248zM828.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 0zm-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 0z"},null,-1),YD=[qD];function GD(e,t,n,r,o,a){return x(),U("svg",KD,YD)}var Gu=Ut(UD,[["render",GD],["__file","loading.vue"]]),XD={name:"Minus"},JD={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},ZD=K("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64z"},null,-1),QD=[ZD];function e5(e,t,n,r,o,a){return x(),U("svg",JD,QD)}var t5=Ut(XD,[["render",e5],["__file","minus.vue"]]),n5={name:"MoreFilled"},r5={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},o5=K("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224z"},null,-1),a5=[o5];function l5(e,t,n,r,o,a){return x(),U("svg",r5,a5)}var Vv=Ut(n5,[["render",l5],["__file","more-filled.vue"]]),s5={name:"Plus"},i5={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},u5=K("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-64h352z"},null,-1),c5=[u5];function d5(e,t,n,r,o,a){return x(),U("svg",i5,c5)}var f5=Ut(s5,[["render",d5],["__file","plus.vue"]]),p5={name:"SuccessFilled"},m5={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},h5=K("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z"},null,-1),v5=[h5];function g5(e,t,n,r,o,a){return x(),U("svg",m5,v5)}var j1=Ut(p5,[["render",g5],["__file","success-filled.vue"]]),b5={name:"View"},y5={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},_5=K("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352zm0 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-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448zm0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160z"},null,-1),w5=[_5];function C5(e,t,n,r,o,a){return x(),U("svg",y5,w5)}var k5=Ut(b5,[["render",C5],["__file","view.vue"]]),S5={name:"WarningFilled"},E5={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},$5=K("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256zm0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4z"},null,-1),T5=[$5];function x5(e,t,n,r,o,a){return x(),U("svg",E5,T5)}var W1=Ut(S5,[["render",x5],["__file","warning-filled.vue"]]);const U1="__epPropKey",Le=e=>e,O5=e=>ht(e)&&!!e[U1],Xu=(e,t)=>{if(!ht(e)||O5(e))return e;const{values:n,required:r,default:o,type:a,validator:l}=e,i={type:a,required:!!r,validator:n||l?u=>{let d=!1,f=[];if(n&&(f=Array.from(n),ft(e,"default")&&f.push(o),d||(d=f.includes(u))),l&&(d||(d=l(u))),!d&&f.length>0){const h=[...new Set(f)].map(p=>JSON.stringify(p)).join(", ");pC(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${h}], got value ${JSON.stringify(u)}.`)}return d}:void 0,[U1]:!0};return ft(e,"default")&&(i.default=o),i},je=e=>mu(Object.entries(e).map(([t,n])=>[t,Xu(n,t)])),Cn=Le([String,Object,Function]),A5={Close:ys},K1={Close:ys,SuccessFilled:j1,InfoFilled:H1,WarningFilled:W1,CircleCloseFilled:z1},gu={success:j1,warning:W1,error:z1,info:H1},I5={validating:Gu,success:ZN,error:Yu},Bt=(e,t)=>{if(e.install=n=>{for(const r of[e,...Object.values(t!=null?t:{})])n.component(r.name,r)},t)for(const[n,r]of Object.entries(t))e[n]=r;return e},P5=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),br=e=>(e.install=en,e),dp=(...e)=>t=>{e.forEach(n=>{Ke(n)?n(t):n.value=t})},at={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"},L5=["year","month","date","dates","week","datetime","datetimerange","daterange","monthrange"],Ct="update:modelValue",pr="change",$r="input",_a=["","default","small","large"],M5={large:40,default:32,small:24},R5=e=>M5[e||"default"],q1=e=>["",..._a].includes(e);var Di=(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))(Di||{});const aa=e=>!e&&e!==0?[]:Array.isArray(e)?e:[e],Y1=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e),Ur=e=>e,N5=["class","style"],D5=/^on[A-Z]/,F5=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,r=O(()=>((n==null?void 0:n.value)||[]).concat(N5)),o=lt();return O(o?()=>{var a;return mu(Object.entries((a=o.proxy)==null?void 0:a.$attrs).filter(([l])=>!r.value.includes(l)&&!(t&&D5.test(l))))}:()=>({}))},_s=({from:e,replacement:t,scope:n,version:r,ref:o,type:a="API"},l)=>{$e(()=>c(l),s=>{},{immediate:!0})},V5=(e,t,n)=>{let r={offsetX:0,offsetY:0};const o=s=>{const i=s.clientX,u=s.clientY,{offsetX:d,offsetY:f}=r,h=e.value.getBoundingClientRect(),p=h.left,v=h.top,g=h.width,w=h.height,m=document.documentElement.clientWidth,b=document.documentElement.clientHeight,_=-p+d,y=-v+f,C=m-p-g+d,k=b-v-w+f,E=R=>{const L=Math.min(Math.max(d+R.clientX-i,_),C),F=Math.min(Math.max(f+R.clientY-u,y),k);r={offsetX:L,offsetY:F},e.value.style.transform=`translate(${Jn(L)}, ${Jn(F)})`},S=()=>{document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",S)};document.addEventListener("mousemove",E),document.addEventListener("mouseup",S)},a=()=>{t.value&&e.value&&t.value.addEventListener("mousedown",o)},l=()=>{t.value&&e.value&&t.value.removeEventListener("mousedown",o)};dt(()=>{qr(()=>{n.value?a():l()})}),rn(()=>{l()})},B5=e=>({focus:()=>{var t,n;(n=(t=e.value)==null?void 0:t.focus)==null||n.call(t)}});var z5={name:"en",el:{colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},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",week:"week",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"},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"},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"}}};const H5=e=>(t,n)=>j5(t,n,c(e)),j5=(e,t,n)=>fn(n,e,e).replace(/\{(\w+)\}/g,(r,o)=>{var a;return`${(a=t==null?void 0:t[o])!=null?a:`{${o}}`}`}),W5=e=>{const t=O(()=>c(e).name),n=mt(e)?e:B(e);return{lang:t,locale:n,t:H5(e)}},G1=Symbol("localeContextKey"),Pt=e=>{const t=e||Re(G1,B());return W5(O(()=>t.value||z5))},bu="el",U5="is-",Ho=(e,t,n,r,o)=>{let a=`${e}-${t}`;return n&&(a+=`-${n}`),r&&(a+=`__${r}`),o&&(a+=`--${o}`),a},X1=Symbol("namespaceContextKey"),fp=e=>{const t=e||Re(X1,B(bu));return O(()=>c(t)||bu)},Fe=(e,t)=>{const n=fp(t);return{namespace:n,b:(g="")=>Ho(n.value,e,g,"",""),e:g=>g?Ho(n.value,e,"",g,""):"",m:g=>g?Ho(n.value,e,"","",g):"",be:(g,w)=>g&&w?Ho(n.value,e,g,w,""):"",em:(g,w)=>g&&w?Ho(n.value,e,"",g,w):"",bm:(g,w)=>g&&w?Ho(n.value,e,g,"",w):"",bem:(g,w,m)=>g&&w&&m?Ho(n.value,e,g,w,m):"",is:(g,...w)=>{const m=w.length>=1?w[0]:!0;return g&&m?`${U5}${g}`:""},cssVar:g=>{const w={};for(const m in g)g[m]&&(w[`--${n.value}-${m}`]=g[m]);return w},cssVarName:g=>`--${n.value}-${g}`,cssVarBlock:g=>{const w={};for(const m in g)g[m]&&(w[`--${n.value}-${e}-${m}`]=g[m]);return w},cssVarBlockName:g=>`--${n.value}-${e}-${g}`}},K5=(e,t={})=>{mt(e)||ya("[useLockscreen]","You need to pass a ref param to this function");const n=t.ns||Fe("popup"),r=vb(()=>n.bm("parent","hidden"));if(!xt||$o(document.body,r.value))return;let o=0,a=!1,l="0";const s=()=>{setTimeout(()=>{hu(document==null?void 0:document.body,r.value),a&&document&&(document.body.style.width=l)},200)};$e(e,i=>{if(!i){s();return}a=!$o(document.body,r.value),a&&(l=document.body.style.width),o=bN(n.namespace.value);const u=document.documentElement.clientHeight0&&(u||d==="scroll")&&a&&(document.body.style.width=`calc(100% - ${o}px)`),up(document.body,r.value)}),Qg(()=>s())},q5=Xu({type:Le(Boolean),default:null}),Y5=Xu({type:Le(Function)}),G5=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,r=[t],o={[e]:q5,[n]:Y5};return{useModelToggle:({indicator:l,toggleReason:s,shouldHideWhenRouteChanges:i,shouldProceed:u,onShow:d,onHide:f})=>{const h=lt(),{emit:p}=h,v=h.props,g=O(()=>Ke(v[n])),w=O(()=>v[e]===null),m=E=>{l.value!==!0&&(l.value=!0,s&&(s.value=E),Ke(d)&&d(E))},b=E=>{l.value!==!1&&(l.value=!1,s&&(s.value=E),Ke(f)&&f(E))},_=E=>{if(v.disabled===!0||Ke(u)&&!u())return;const S=g.value&&xt;S&&p(t,!0),(w.value||!S)&&m(E)},y=E=>{if(v.disabled===!0||!xt)return;const S=g.value&&xt;S&&p(t,!1),(w.value||!S)&&b(E)},C=E=>{!_n(E)||(v.disabled&&E?g.value&&p(t,!1):l.value!==E&&(E?m():b()))},k=()=>{l.value?y():_()};return $e(()=>v[e],C),i&&h.appContext.config.globalProperties.$route!==void 0&&$e(()=>({...h.proxy.$route}),()=>{i.value&&l.value&&y()}),dt(()=>{C(v[e])}),{hide:y,show:_,toggle:k,hasUpdateHandler:g}},useModelToggleProps:o,useModelToggleEmits:r}},J1=e=>{const t=lt();return O(()=>{var n,r;return(r=(n=t==null?void 0:t.proxy)==null?void 0:n.$props)==null?void 0:r[e]})};var In="top",Zn="bottom",Qn="right",Pn="left",pp="auto",js=[In,Zn,Qn,Pn],rl="start",ws="end",X5="clippingParents",Z1="viewport",Al="popper",J5="reference",Bv=js.reduce(function(e,t){return e.concat([t+"-"+rl,t+"-"+ws])},[]),gl=[].concat(js,[pp]).reduce(function(e,t){return e.concat([t,t+"-"+rl,t+"-"+ws])},[]),Z5="beforeRead",Q5="read",eF="afterRead",tF="beforeMain",nF="main",rF="afterMain",oF="beforeWrite",aF="write",lF="afterWrite",sF=[Z5,Q5,eF,tF,nF,rF,oF,aF,lF];function Ar(e){return e?(e.nodeName||"").toLowerCase():null}function yr(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ol(e){var t=yr(e).Element;return e instanceof t||e instanceof Element}function Gn(e){var t=yr(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function mp(e){if(typeof ShadowRoot=="undefined")return!1;var t=yr(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function iF(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},o=t.attributes[n]||{},a=t.elements[n];!Gn(a)||!Ar(a)||(Object.assign(a.style,r),Object.keys(o).forEach(function(l){var s=o[l];s===!1?a.removeAttribute(l):a.setAttribute(l,s===!0?"":s)}))})}function uF(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 o=t.elements[r],a=t.attributes[r]||{},l=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),s=l.reduce(function(i,u){return i[u]="",i},{});!Gn(o)||!Ar(o)||(Object.assign(o.style,s),Object.keys(a).forEach(function(i){o.removeAttribute(i)}))})}}var Q1={name:"applyStyles",enabled:!0,phase:"write",fn:iF,effect:uF,requires:["computeStyles"]};function Tr(e){return e.split("-")[0]}var la=Math.max,yu=Math.min,al=Math.round;function ll(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),r=1,o=1;if(Gn(e)&&t){var a=e.offsetHeight,l=e.offsetWidth;l>0&&(r=al(n.width)/l||1),a>0&&(o=al(n.height)/a||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function hp(e){var t=ll(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 e_(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&mp(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Zr(e){return yr(e).getComputedStyle(e)}function cF(e){return["table","td","th"].indexOf(Ar(e))>=0}function Do(e){return((ol(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ju(e){return Ar(e)==="html"?e:e.assignedSlot||e.parentNode||(mp(e)?e.host:null)||Do(e)}function zv(e){return!Gn(e)||Zr(e).position==="fixed"?null:e.offsetParent}function dF(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&Gn(e)){var r=Zr(e);if(r.position==="fixed")return null}var o=Ju(e);for(mp(o)&&(o=o.host);Gn(o)&&["html","body"].indexOf(Ar(o))<0;){var a=Zr(o);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return o;o=o.parentNode}return null}function Ws(e){for(var t=yr(e),n=zv(e);n&&cF(n)&&Zr(n).position==="static";)n=zv(n);return n&&(Ar(n)==="html"||Ar(n)==="body"&&Zr(n).position==="static")?t:n||dF(e)||t}function vp(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Kl(e,t,n){return la(e,yu(t,n))}function fF(e,t,n){var r=Kl(e,t,n);return r>n?n:r}function t_(){return{top:0,right:0,bottom:0,left:0}}function n_(e){return Object.assign({},t_(),e)}function r_(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var pF=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,n_(typeof e!="number"?e:r_(e,js))};function mF(e){var t,n=e.state,r=e.name,o=e.options,a=n.elements.arrow,l=n.modifiersData.popperOffsets,s=Tr(n.placement),i=vp(s),u=[Pn,Qn].indexOf(s)>=0,d=u?"height":"width";if(!(!a||!l)){var f=pF(o.padding,n),h=hp(a),p=i==="y"?In:Pn,v=i==="y"?Zn:Qn,g=n.rects.reference[d]+n.rects.reference[i]-l[i]-n.rects.popper[d],w=l[i]-n.rects.reference[i],m=Ws(a),b=m?i==="y"?m.clientHeight||0:m.clientWidth||0:0,_=g/2-w/2,y=f[p],C=b-h[d]-f[v],k=b/2-h[d]/2+_,E=Kl(y,k,C),S=i;n.modifiersData[r]=(t={},t[S]=E,t.centerOffset=E-k,t)}}function hF(e){var t=e.state,n=e.options,r=n.element,o=r===void 0?"[data-popper-arrow]":r;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||!e_(t.elements.popper,o)||(t.elements.arrow=o))}var vF={name:"arrow",enabled:!0,phase:"main",fn:mF,effect:hF,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function sl(e){return e.split("-")[1]}var gF={top:"auto",right:"auto",bottom:"auto",left:"auto"};function bF(e){var t=e.x,n=e.y,r=window,o=r.devicePixelRatio||1;return{x:al(t*o)/o||0,y:al(n*o)/o||0}}function Hv(e){var t,n=e.popper,r=e.popperRect,o=e.placement,a=e.variation,l=e.offsets,s=e.position,i=e.gpuAcceleration,u=e.adaptive,d=e.roundOffsets,f=e.isFixed,h=l.x,p=h===void 0?0:h,v=l.y,g=v===void 0?0:v,w=typeof d=="function"?d({x:p,y:g}):{x:p,y:g};p=w.x,g=w.y;var m=l.hasOwnProperty("x"),b=l.hasOwnProperty("y"),_=Pn,y=In,C=window;if(u){var k=Ws(n),E="clientHeight",S="clientWidth";if(k===yr(n)&&(k=Do(n),Zr(k).position!=="static"&&s==="absolute"&&(E="scrollHeight",S="scrollWidth")),k=k,o===In||(o===Pn||o===Qn)&&a===ws){y=Zn;var R=f&&k===C&&C.visualViewport?C.visualViewport.height:k[E];g-=R-r.height,g*=i?1:-1}if(o===Pn||(o===In||o===Zn)&&a===ws){_=Qn;var L=f&&k===C&&C.visualViewport?C.visualViewport.width:k[S];p-=L-r.width,p*=i?1:-1}}var F=Object.assign({position:s},u&&gF),N=d===!0?bF({x:p,y:g}):{x:p,y:g};if(p=N.x,g=N.y,i){var A;return Object.assign({},F,(A={},A[y]=b?"0":"",A[_]=m?"0":"",A.transform=(C.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A))}return Object.assign({},F,(t={},t[y]=b?g+"px":"",t[_]=m?p+"px":"",t.transform="",t))}function yF(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=r===void 0?!0:r,a=n.adaptive,l=a===void 0?!0:a,s=n.roundOffsets,i=s===void 0?!0:s,u={placement:Tr(t.placement),variation:sl(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Hv(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:l,roundOffsets:i})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Hv(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:i})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var o_={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:yF,data:{}},mi={passive:!0};function _F(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,a=o===void 0?!0:o,l=r.resize,s=l===void 0?!0:l,i=yr(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&u.forEach(function(d){d.addEventListener("scroll",n.update,mi)}),s&&i.addEventListener("resize",n.update,mi),function(){a&&u.forEach(function(d){d.removeEventListener("scroll",n.update,mi)}),s&&i.removeEventListener("resize",n.update,mi)}}var a_={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:_F,data:{}},wF={left:"right",right:"left",bottom:"top",top:"bottom"};function Fi(e){return e.replace(/left|right|bottom|top/g,function(t){return wF[t]})}var CF={start:"end",end:"start"};function jv(e){return e.replace(/start|end/g,function(t){return CF[t]})}function gp(e){var t=yr(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function bp(e){return ll(Do(e)).left+gp(e).scrollLeft}function kF(e){var t=yr(e),n=Do(e),r=t.visualViewport,o=n.clientWidth,a=n.clientHeight,l=0,s=0;return r&&(o=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=r.offsetLeft,s=r.offsetTop)),{width:o,height:a,x:l+bp(e),y:s}}function SF(e){var t,n=Do(e),r=gp(e),o=(t=e.ownerDocument)==null?void 0:t.body,a=la(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),l=la(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+bp(e),i=-r.scrollTop;return Zr(o||n).direction==="rtl"&&(s+=la(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:l,x:s,y:i}}function yp(e){var t=Zr(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function l_(e){return["html","body","#document"].indexOf(Ar(e))>=0?e.ownerDocument.body:Gn(e)&&yp(e)?e:l_(Ju(e))}function ql(e,t){var n;t===void 0&&(t=[]);var r=l_(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),a=yr(r),l=o?[a].concat(a.visualViewport||[],yp(r)?r:[]):r,s=t.concat(l);return o?s:s.concat(ql(Ju(l)))}function Sd(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function EF(e){var t=ll(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 Wv(e,t){return t===Z1?Sd(kF(e)):ol(t)?EF(t):Sd(SF(Do(e)))}function $F(e){var t=ql(Ju(e)),n=["absolute","fixed"].indexOf(Zr(e).position)>=0,r=n&&Gn(e)?Ws(e):e;return ol(r)?t.filter(function(o){return ol(o)&&e_(o,r)&&Ar(o)!=="body"}):[]}function TF(e,t,n){var r=t==="clippingParents"?$F(e):[].concat(t),o=[].concat(r,[n]),a=o[0],l=o.reduce(function(s,i){var u=Wv(e,i);return s.top=la(u.top,s.top),s.right=yu(u.right,s.right),s.bottom=yu(u.bottom,s.bottom),s.left=la(u.left,s.left),s},Wv(e,a));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function s_(e){var t=e.reference,n=e.element,r=e.placement,o=r?Tr(r):null,a=r?sl(r):null,l=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,i;switch(o){case In:i={x:l,y:t.y-n.height};break;case Zn:i={x:l,y:t.y+t.height};break;case Qn:i={x:t.x+t.width,y:s};break;case Pn:i={x:t.x-n.width,y:s};break;default:i={x:t.x,y:t.y}}var u=o?vp(o):null;if(u!=null){var d=u==="y"?"height":"width";switch(a){case rl:i[u]=i[u]-(t[d]/2-n[d]/2);break;case ws:i[u]=i[u]+(t[d]/2-n[d]/2);break}}return i}function Cs(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=r===void 0?e.placement:r,a=n.boundary,l=a===void 0?X5:a,s=n.rootBoundary,i=s===void 0?Z1:s,u=n.elementContext,d=u===void 0?Al:u,f=n.altBoundary,h=f===void 0?!1:f,p=n.padding,v=p===void 0?0:p,g=n_(typeof v!="number"?v:r_(v,js)),w=d===Al?J5:Al,m=e.rects.popper,b=e.elements[h?w:d],_=TF(ol(b)?b:b.contextElement||Do(e.elements.popper),l,i),y=ll(e.elements.reference),C=s_({reference:y,element:m,strategy:"absolute",placement:o}),k=Sd(Object.assign({},m,C)),E=d===Al?k:y,S={top:_.top-E.top+g.top,bottom:E.bottom-_.bottom+g.bottom,left:_.left-E.left+g.left,right:E.right-_.right+g.right},R=e.modifiersData.offset;if(d===Al&&R){var L=R[o];Object.keys(S).forEach(function(F){var N=[Qn,Zn].indexOf(F)>=0?1:-1,A=[In,Zn].indexOf(F)>=0?"y":"x";S[F]+=L[A]*N})}return S}function xF(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=n.boundary,a=n.rootBoundary,l=n.padding,s=n.flipVariations,i=n.allowedAutoPlacements,u=i===void 0?gl:i,d=sl(r),f=d?s?Bv:Bv.filter(function(v){return sl(v)===d}):js,h=f.filter(function(v){return u.indexOf(v)>=0});h.length===0&&(h=f);var p=h.reduce(function(v,g){return v[g]=Cs(e,{placement:g,boundary:o,rootBoundary:a,padding:l})[Tr(g)],v},{});return Object.keys(p).sort(function(v,g){return p[v]-p[g]})}function OF(e){if(Tr(e)===pp)return[];var t=Fi(e);return[jv(e),t,jv(t)]}function AF(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,a=o===void 0?!0:o,l=n.altAxis,s=l===void 0?!0:l,i=n.fallbackPlacements,u=n.padding,d=n.boundary,f=n.rootBoundary,h=n.altBoundary,p=n.flipVariations,v=p===void 0?!0:p,g=n.allowedAutoPlacements,w=t.options.placement,m=Tr(w),b=m===w,_=i||(b||!v?[Fi(w)]:OF(w)),y=[w].concat(_).reduce(function(be,Te){return be.concat(Tr(Te)===pp?xF(t,{placement:Te,boundary:d,rootBoundary:f,padding:u,flipVariations:v,allowedAutoPlacements:g}):Te)},[]),C=t.rects.reference,k=t.rects.popper,E=new Map,S=!0,R=y[0],L=0;L=0,H=M?"width":"height",j=Cs(t,{placement:F,boundary:d,rootBoundary:f,altBoundary:h,padding:u}),V=M?A?Qn:Pn:A?Zn:In;C[H]>k[H]&&(V=Fi(V));var X=Fi(V),I=[];if(a&&I.push(j[N]<=0),s&&I.push(j[V]<=0,j[X]<=0),I.every(function(be){return be})){R=F,S=!1;break}E.set(F,I)}if(S)for(var Y=v?3:1,ee=function(be){var Te=y.find(function(ge){var J=E.get(ge);if(J)return J.slice(0,be).every(function(te){return te})});if(Te)return R=Te,"break"},W=Y;W>0;W--){var re=ee(W);if(re==="break")break}t.placement!==R&&(t.modifiersData[r]._skip=!0,t.placement=R,t.reset=!0)}}var IF={name:"flip",enabled:!0,phase:"main",fn:AF,requiresIfExists:["offset"],data:{_skip:!1}};function Uv(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 Kv(e){return[In,Qn,Zn,Pn].some(function(t){return e[t]>=0})}function PF(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,l=Cs(t,{elementContext:"reference"}),s=Cs(t,{altBoundary:!0}),i=Uv(l,r),u=Uv(s,o,a),d=Kv(i),f=Kv(u);t.modifiersData[n]={referenceClippingOffsets:i,popperEscapeOffsets:u,isReferenceHidden:d,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":f})}var LF={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:PF};function MF(e,t,n){var r=Tr(e),o=[Pn,In].indexOf(r)>=0?-1:1,a=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,l=a[0],s=a[1];return l=l||0,s=(s||0)*o,[Pn,Qn].indexOf(r)>=0?{x:s,y:l}:{x:l,y:s}}function RF(e){var t=e.state,n=e.options,r=e.name,o=n.offset,a=o===void 0?[0,0]:o,l=gl.reduce(function(d,f){return d[f]=MF(f,t.rects,a),d},{}),s=l[t.placement],i=s.x,u=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=l}var NF={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:RF};function DF(e){var t=e.state,n=e.name;t.modifiersData[n]=s_({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var i_={name:"popperOffsets",enabled:!0,phase:"read",fn:DF,data:{}};function FF(e){return e==="x"?"y":"x"}function VF(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,a=o===void 0?!0:o,l=n.altAxis,s=l===void 0?!1:l,i=n.boundary,u=n.rootBoundary,d=n.altBoundary,f=n.padding,h=n.tether,p=h===void 0?!0:h,v=n.tetherOffset,g=v===void 0?0:v,w=Cs(t,{boundary:i,rootBoundary:u,padding:f,altBoundary:d}),m=Tr(t.placement),b=sl(t.placement),_=!b,y=vp(m),C=FF(y),k=t.modifiersData.popperOffsets,E=t.rects.reference,S=t.rects.popper,R=typeof g=="function"?g(Object.assign({},t.rects,{placement:t.placement})):g,L=typeof R=="number"?{mainAxis:R,altAxis:R}:Object.assign({mainAxis:0,altAxis:0},R),F=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,N={x:0,y:0};if(k){if(a){var A,M=y==="y"?In:Pn,H=y==="y"?Zn:Qn,j=y==="y"?"height":"width",V=k[y],X=V+w[M],I=V-w[H],Y=p?-S[j]/2:0,ee=b===rl?E[j]:S[j],W=b===rl?-S[j]:-E[j],re=t.elements.arrow,be=p&&re?hp(re):{width:0,height:0},Te=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:t_(),ge=Te[M],J=Te[H],te=Kl(0,E[j],be[j]),ae=_?E[j]/2-Y-te-ge-L.mainAxis:ee-te-ge-L.mainAxis,le=_?-E[j]/2+Y+te+J+L.mainAxis:W+te+J+L.mainAxis,me=t.elements.arrow&&Ws(t.elements.arrow),P=me?y==="y"?me.clientTop||0:me.clientLeft||0:0,$=(A=F==null?void 0:F[y])!=null?A:0,T=V+ae-$-P,z=V+le-$,Z=Kl(p?yu(X,T):X,V,p?la(I,z):I);k[y]=Z,N[y]=Z-V}if(s){var oe,_e=y==="x"?In:Pn,we=y==="x"?Zn:Qn,he=k[C],ke=C==="y"?"height":"width",Me=he+w[_e],ne=he-w[we],ue=[In,Pn].indexOf(m)!==-1,ie=(oe=F==null?void 0:F[C])!=null?oe:0,Oe=ue?Me:he-E[ke]-S[ke]-ie+L.altAxis,We=ue?he+E[ke]+S[ke]-ie-L.altAxis:ne,Xe=p&&ue?fF(Oe,he,We):Kl(p?Oe:Me,he,p?We:ne);k[C]=Xe,N[C]=Xe-he}t.modifiersData[r]=N}}var BF={name:"preventOverflow",enabled:!0,phase:"main",fn:VF,requiresIfExists:["offset"]};function zF(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function HF(e){return e===yr(e)||!Gn(e)?gp(e):zF(e)}function jF(e){var t=e.getBoundingClientRect(),n=al(t.width)/e.offsetWidth||1,r=al(t.height)/e.offsetHeight||1;return n!==1||r!==1}function WF(e,t,n){n===void 0&&(n=!1);var r=Gn(t),o=Gn(t)&&jF(t),a=Do(t),l=ll(e,o),s={scrollLeft:0,scrollTop:0},i={x:0,y:0};return(r||!r&&!n)&&((Ar(t)!=="body"||yp(a))&&(s=HF(t)),Gn(t)?(i=ll(t,!0),i.x+=t.clientLeft,i.y+=t.clientTop):a&&(i.x=bp(a))),{x:l.left+s.scrollLeft-i.x,y:l.top+s.scrollTop-i.y,width:l.width,height:l.height}}function UF(e){var t=new Map,n=new Set,r=[];e.forEach(function(a){t.set(a.name,a)});function o(a){n.add(a.name);var l=[].concat(a.requires||[],a.requiresIfExists||[]);l.forEach(function(s){if(!n.has(s)){var i=t.get(s);i&&o(i)}}),r.push(a)}return e.forEach(function(a){n.has(a.name)||o(a)}),r}function KF(e){var t=UF(e);return sF.reduce(function(n,r){return n.concat(t.filter(function(o){return o.phase===r}))},[])}function qF(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function YF(e){var t=e.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var qv={placement:"bottom",modifiers:[],strategy:"absolute"};function Yv(){for(var e=arguments.length,t=new Array(e),n=0;n{const r={name:"updateState",enabled:!0,phase:"write",fn:({state:i})=>{const u=ZF(i);Object.assign(l.value,u)},requires:["computeStyles"]},o=O(()=>{const{onFirstUpdate:i,placement:u,strategy:d,modifiers:f}=c(n);return{onFirstUpdate:i,placement:u||"bottom",strategy:d||"absolute",modifiers:[...f||[],r,{name:"applyStyles",enabled:!1}]}}),a=On(),l=B({styles:{popper:{position:c(o).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),s=()=>{!a.value||(a.value.destroy(),a.value=void 0)};return $e(o,i=>{const u=c(a);u&&u.setOptions(i)},{deep:!0}),$e([e,t],([i,u])=>{s(),!(!i||!u)&&(a.value=u_(i,u,c(o)))}),rn(()=>{s()}),{state:O(()=>{var i;return{...((i=c(a))==null?void 0:i.state)||{}}}),styles:O(()=>c(l).styles),attributes:O(()=>c(l).attributes),update:()=>{var i;return(i=c(a))==null?void 0:i.update()},forceUpdate:()=>{var i;return(i=c(a))==null?void 0:i.forceUpdate()},instanceRef:O(()=>c(a))}};function ZF(e){const t=Object.keys(e.elements),n=mu(t.map(o=>[o,e.styles[o]||{}])),r=mu(t.map(o=>[o,e.attributes[o]]));return{styles:n,attributes:r}}const c_=e=>{if(!e)return{onClick:en,onMousedown:en,onMouseup:en};let t=!1,n=!1;return{onClick:l=>{t&&n&&e(l),t=n=!1},onMousedown:l=>{t=l.target===l.currentTarget},onMouseup:l=>{n=l.target===l.currentTarget}}};function Gv(){let e;const t=(r,o)=>{n(),e=window.setTimeout(r,o)},n=()=>window.clearTimeout(e);return Ls(()=>n()),{registerTimeout:t,cancelTimeout:n}}const Xv={prefix:Math.floor(Math.random()*1e4),current:0},QF=Symbol("elIdInjection"),d_=()=>lt()?Re(QF,Xv):Xv,Lo=e=>{const t=d_(),n=fp();return O(()=>c(e)||`${n.value}-id-${t.prefix}-${t.current++}`)};let Pa=[];const Jv=e=>{const t=e;t.key===at.esc&&Pa.forEach(n=>n(t))},eV=e=>{dt(()=>{Pa.length===0&&document.addEventListener("keydown",Jv),xt&&Pa.push(e)}),rn(()=>{Pa=Pa.filter(t=>t!==e),Pa.length===0&&xt&&document.removeEventListener("keydown",Jv)})};let Zv;const f_=()=>{const e=fp(),t=d_(),n=O(()=>`${e.value}-popper-container-${t.prefix}`),r=O(()=>`#${n.value}`);return{id:n,selector:r}},tV=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},nV=()=>{const{id:e,selector:t}=f_();return As(()=>{!xt||!Zv&&!document.body.querySelector(t.value)&&(Zv=tV(e.value))}),{id:e,selector:t}},rV=je({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),p_=({showAfter:e,hideAfter:t,autoClose:n,open:r,close:o})=>{const{registerTimeout:a}=Gv(),{registerTimeout:l,cancelTimeout:s}=Gv();return{onOpen:d=>{a(()=>{r(d);const f=c(n);ct(f)&&f>0&&l(()=>{o(d)},f)},c(e))},onClose:d=>{s(),a(()=>{o(d)},c(t))}}},m_=Symbol("elForwardRef"),oV=e=>{yt(m_,{setForwardRef:n=>{e.value=n}})},aV=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),Qv=B(0),h_=2e3,v_=Symbol("zIndexContextKey"),Zu=e=>{const t=e||Re(v_,void 0),n=O(()=>{const a=c(t);return ct(a)?a:h_}),r=O(()=>n.value+Qv.value);return{initialZIndex:n,currentZIndex:r,nextZIndex:()=>(Qv.value++,r.value)}};function lV(e){const t=B();function n(){if(e.value==null)return;const{selectionStart:o,selectionEnd:a,value:l}=e.value;if(o==null||a==null)return;const s=l.slice(0,Math.max(0,o)),i=l.slice(Math.max(0,a));t.value={selectionStart:o,selectionEnd:a,value:l,beforeTxt:s,afterTxt:i}}function r(){if(e.value==null||t.value==null)return;const{value:o}=e.value,{beforeTxt:a,afterTxt:l,selectionStart:s}=t.value;if(a==null||l==null||s==null)return;let i=o.length;if(o.endsWith(l))i=o.length-l.length;else if(o.startsWith(a))i=a.length;else{const u=a[s-1],d=o.indexOf(u,s-1);d!==-1&&(i=d+1)}e.value.setSelectionRange(i,i)}return[n,r]}const Hn=Xu({type:String,values:_a,required:!1}),g_=Symbol("size"),sV=()=>{const e=Re(g_,{});return O(()=>c(e.size)||"")};function iV(e,{afterFocus:t,afterBlur:n}={}){const r=lt(),{emit:o}=r,a=On(),l=B(!1),s=d=>{l.value||(l.value=!0,o("focus",d),t==null||t())},i=d=>{var f;d.relatedTarget&&((f=a.value)==null?void 0:f.contains(d.relatedTarget))||(l.value=!1,o("blur",d),n==null||n())},u=()=>{var d;(d=e.value)==null||d.focus()};return $e(a,d=>{d&&(d.setAttribute("role","button"),d.setAttribute("tabindex","-1"))}),An(a,"click",u),{wrapperRef:a,isFocused:l,handleFocus:s,handleBlur:i}}const b_=Symbol(),_u=B();function Qu(e,t=void 0){const n=lt()?Re(b_,_u):_u;return e?O(()=>{var r,o;return(o=(r=n.value)==null?void 0:r[e])!=null?o:t}):n}function uV(e,t){const n=Qu(),r=Fe(e,O(()=>{var s;return((s=n.value)==null?void 0:s.namespace)||bu})),o=Pt(O(()=>{var s;return(s=n.value)==null?void 0:s.locale})),a=Zu(O(()=>{var s;return((s=n.value)==null?void 0:s.zIndex)||h_})),l=O(()=>{var s;return c(t)||((s=n.value)==null?void 0:s.size)||""});return y_(O(()=>c(n)||{})),{ns:r,locale:o,zIndex:a,size:l}}const y_=(e,t,n=!1)=>{var r;const o=!!lt(),a=o?Qu():void 0,l=(r=t==null?void 0:t.provide)!=null?r:o?yt:void 0;if(!l)return;const s=O(()=>{const i=c(e);return a!=null&&a.value?cV(a.value,i):i});return l(b_,s),l(G1,O(()=>s.value.locale)),l(X1,O(()=>s.value.namespace)),l(v_,O(()=>s.value.zIndex)),l(g_,{size:O(()=>s.value.size||"")}),(n||!_u.value)&&(_u.value=s.value),s},cV=(e,t)=>{var n;const r=[...new Set([...kd(e),...kd(t)])],o={};for(const a of r)o[a]=(n=t[a])!=null?n:e[a];return o},dV=je({a11y:{type:Boolean,default:!0},locale:{type:Le(Object)},size:Hn,button:{type:Le(Object)},experimentalFeatures:{type:Le(Object)},keyboardNavigation:{type:Boolean,default:!0},message:{type:Le(Object)},zIndex:Number,namespace:{type:String,default:"el"}}),Ed={};se({name:"ElConfigProvider",props:dV,setup(e,{slots:t}){$e(()=>e.message,r=>{Object.assign(Ed,r!=null?r:{})},{immediate:!0,deep:!0});const n=y_(e);return()=>pe(t,"default",{config:n==null?void 0:n.value})}});var ze=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};const fV=je({size:{type:Le([Number,String])},color:{type:String}}),pV=se({name:"ElIcon",inheritAttrs:!1}),mV=se({...pV,props:fV,setup(e){const t=e,n=Fe("icon"),r=O(()=>{const{size:o,color:a}=t;return!o&&!a?{}:{fontSize:Er(o)?void 0:Jn(o),"--color":a}});return(o,a)=>(x(),U("i",Ht({class:c(n).b(),style:c(r)},o.$attrs),[pe(o.$slots,"default")],16))}});var hV=ze(mV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/icon/src/icon.vue"]]);const nt=Bt(hV),vV=["light","dark"],gV=je({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:kd(gu),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:vV,default:"light"}}),bV={close:e=>e instanceof MouseEvent},yV=se({name:"ElAlert"}),_V=se({...yV,props:gV,emits:bV,setup(e,{emit:t}){const n=e,{Close:r}=K1,o=to(),a=Fe("alert"),l=B(!0),s=O(()=>gu[n.type]),i=O(()=>[a.e("icon"),{[a.is("big")]:!!n.description||!!o.default}]),u=O(()=>({[a.is("bold")]:n.description||o.default})),d=f=>{l.value=!1,t("close",f)};return(f,h)=>(x(),ce(Mn,{name:c(a).b("fade"),persisted:""},{default:G(()=>[vt(K("div",{class:D([c(a).b(),c(a).m(f.type),c(a).is("center",f.center),c(a).is(f.effect)]),role:"alert"},[f.showIcon&&c(s)?(x(),ce(c(nt),{key:0,class:D(c(i))},{default:G(()=>[(x(),ce(Lt(c(s))))]),_:1},8,["class"])):ye("v-if",!0),K("div",{class:D(c(a).e("content"))},[f.title||f.$slots.title?(x(),U("span",{key:0,class:D([c(a).e("title"),c(u)])},[pe(f.$slots,"title",{},()=>[Je(Ee(f.title),1)])],2)):ye("v-if",!0),f.$slots.default||f.description?(x(),U("p",{key:1,class:D(c(a).e("description"))},[pe(f.$slots,"default",{},()=>[Je(Ee(f.description),1)])],2)):ye("v-if",!0),f.closable?(x(),U(Pe,{key:2},[f.closeText?(x(),U("div",{key:0,class:D([c(a).e("close-btn"),c(a).is("customed")]),onClick:d},Ee(f.closeText),3)):(x(),ce(c(nt),{key:1,class:D(c(a).e("close-btn")),onClick:d},{default:G(()=>[Q(c(r))]),_:1},8,["class"]))],64)):ye("v-if",!0)],2)],2),[[qt,l.value]])]),_:3},8,["name"]))}});var wV=ze(_V,[["__file","/home/runner/work/element-plus/element-plus/packages/components/alert/src/alert.vue"]]);const CV=Bt(wV),bl=Symbol("formContextKey"),ca=Symbol("formItemContextKey"),mn=(e,t={})=>{const n=B(void 0),r=t.prop?n:J1("size"),o=t.global?n:sV(),a=t.form?{size:void 0}:Re(bl,void 0),l=t.formItem?{size:void 0}:Re(ca,void 0);return O(()=>r.value||c(e)||(l==null?void 0:l.size)||(a==null?void 0:a.size)||o.value||"")},Fo=e=>{const t=J1("disabled"),n=Re(bl,void 0);return O(()=>t.value||c(e)||(n==null?void 0:n.disabled)||!1)},er=()=>{const e=Re(bl,void 0),t=Re(ca,void 0);return{form:e,formItem:t}},wa=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:r})=>{n||(n=B(!1)),r||(r=B(!1));const o=B();let a;const l=O(()=>{var s;return!!(!e.label&&t&&t.inputIds&&((s=t.inputIds)==null?void 0:s.length)<=1)});return dt(()=>{a=$e([zt(e,"id"),n],([s,i])=>{const u=s!=null?s:i?void 0:Lo().value;u!==o.value&&(t!=null&&t.removeInputId&&(o.value&&t.removeInputId(o.value),!(r!=null&&r.value)&&!i&&u&&t.addInputId(u)),o.value=u)},{immediate:!0})}),Mo(()=>{a&&a(),t!=null&&t.removeInputId&&o.value&&t.removeInputId(o.value)}),{isLabeledByFormItem:l,inputId:o}},kV=je({size:{type:String,values:_a},disabled:Boolean}),SV=je({...kV,model:Object,rules:{type:Le(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},requireAsteriskPosition:{type:String,values:["left","right"],default:"left"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:[Object,Boolean]}}),EV={validate:(e,t,n)=>(De(e)||Ge(e))&&_n(t)&&Ge(n)};function $V(){const e=B([]),t=O(()=>{if(!e.value.length)return"0";const a=Math.max(...e.value);return a?`${a}px`:""});function n(a){const l=e.value.indexOf(a);return l===-1&&t.value,l}function r(a,l){if(a&&l){const s=n(l);e.value.splice(s,1,a)}else a&&e.value.push(a)}function o(a){const l=n(a);l>-1&&e.value.splice(l,1)}return{autoLabelWidth:t,registerLabelWidth:r,deregisterLabelWidth:o}}const hi=(e,t)=>{const n=gd(t);return n.length>0?e.filter(r=>r.prop&&n.includes(r.prop)):e},TV="ElForm",xV=se({name:TV}),OV=se({...xV,props:SV,emits:EV,setup(e,{expose:t,emit:n}){const r=e,o=[],a=mn(),l=Fe("form"),s=O(()=>{const{labelPosition:b,inline:_}=r;return[l.b(),l.m(a.value||"default"),{[l.m(`label-${b}`)]:b,[l.m("inline")]:_}]}),i=b=>{o.push(b)},u=b=>{b.prop&&o.splice(o.indexOf(b),1)},d=(b=[])=>{!r.model||hi(o,b).forEach(_=>_.resetField())},f=(b=[])=>{hi(o,b).forEach(_=>_.clearValidate())},h=O(()=>!!r.model),p=b=>{if(o.length===0)return[];const _=hi(o,b);return _.length?_:[]},v=async b=>w(void 0,b),g=async(b=[])=>{if(!h.value)return!1;const _=p(b);if(_.length===0)return!0;let y={};for(const C of _)try{await C.validate("")}catch(k){y={...y,...k}}return Object.keys(y).length===0?!0:Promise.reject(y)},w=async(b=[],_)=>{const y=!Ke(_);try{const C=await g(b);return C===!0&&(_==null||_(C)),C}catch(C){if(C instanceof Error)throw C;const k=C;return r.scrollToError&&m(Object.keys(k)[0]),_==null||_(!1,k),y&&Promise.reject(k)}},m=b=>{var _;const y=hi(o,b)[0];y&&((_=y.$el)==null||_.scrollIntoView(r.scrollIntoViewOptions))};return $e(()=>r.rules,()=>{r.validateOnRuleChange&&v().catch(b=>void 0)},{deep:!0}),yt(bl,Xt({...dr(r),emit:n,resetFields:d,clearValidate:f,validateField:w,addField:i,removeField:u,...$V()})),t({validate:v,validateField:w,resetFields:d,clearValidate:f,scrollToField:m}),(b,_)=>(x(),U("form",{class:D(c(s))},[pe(b.$slots,"default")],2))}});var AV=ze(OV,[["__file","/home/runner/work/element-plus/element-plus/packages/components/form/src/form.vue"]]);function Qo(){return Qo=Object.assign?Object.assign.bind():function(e){for(var t=1;t1?t-1:0),r=1;r=a)return s;switch(s){case"%s":return String(n[o++]);case"%d":return Number(n[o++]);case"%j":try{return JSON.stringify(n[o++])}catch{return"[Circular]"}break;default:return s}});return l}return e}function NV(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function nn(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||NV(t)&&typeof e=="string"&&!e)}function DV(e,t,n){var r=[],o=0,a=e.length;function l(s){r.push.apply(r,s||[]),o++,o===a&&n(r)}e.forEach(function(s){t(s,l)})}function eg(e,t,n){var r=0,o=e.length;function a(l){if(l&&l.length){n(l);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},Ml={integer:function(t){return Ml.number(t)&&parseInt(t,10)===t},float:function(t){return Ml.number(t)&&!Ml.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"&&!Ml.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(og.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(jV())},hex:function(t){return typeof t=="string"&&!!t.match(og.hex)}},WV=function(t,n,r,o,a){if(t.required&&n===void 0){__(t,n,r,o,a);return}var l=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=t.type;l.indexOf(s)>-1?Ml[s](n)||o.push(zn(a.messages.types[s],t.fullField,t.type)):s&&typeof n!==t.type&&o.push(zn(a.messages.types[s],t.fullField,t.type))},UV=function(t,n,r,o,a){var l=typeof t.len=="number",s=typeof t.min=="number",i=typeof t.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,d=n,f=null,h=typeof n=="number",p=typeof n=="string",v=Array.isArray(n);if(h?f="number":p?f="string":v&&(f="array"),!f)return!1;v&&(d=n.length),p&&(d=n.replace(u,"_").length),l?d!==t.len&&o.push(zn(a.messages[f].len,t.fullField,t.len)):s&&!i&&dt.max?o.push(zn(a.messages[f].max,t.fullField,t.max)):s&&i&&(dt.max)&&o.push(zn(a.messages[f].range,t.fullField,t.min,t.max))},$a="enum",KV=function(t,n,r,o,a){t[$a]=Array.isArray(t[$a])?t[$a]:[],t[$a].indexOf(n)===-1&&o.push(zn(a.messages[$a],t.fullField,t[$a].join(", ")))},qV=function(t,n,r,o,a){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||o.push(zn(a.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern=="string"){var l=new RegExp(t.pattern);l.test(n)||o.push(zn(a.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},kt={required:__,whitespace:HV,type:WV,range:UV,enum:KV,pattern:qV},YV=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n,"string")&&!t.required)return r();kt.required(t,n,o,l,a,"string"),nn(n,"string")||(kt.type(t,n,o,l,a),kt.range(t,n,o,l,a),kt.pattern(t,n,o,l,a),t.whitespace===!0&&kt.whitespace(t,n,o,l,a))}r(l)},GV=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n)&&!t.required)return r();kt.required(t,n,o,l,a),n!==void 0&&kt.type(t,n,o,l,a)}r(l)},XV=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(n===""&&(n=void 0),nn(n)&&!t.required)return r();kt.required(t,n,o,l,a),n!==void 0&&(kt.type(t,n,o,l,a),kt.range(t,n,o,l,a))}r(l)},JV=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n)&&!t.required)return r();kt.required(t,n,o,l,a),n!==void 0&&kt.type(t,n,o,l,a)}r(l)},ZV=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n)&&!t.required)return r();kt.required(t,n,o,l,a),nn(n)||kt.type(t,n,o,l,a)}r(l)},QV=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n)&&!t.required)return r();kt.required(t,n,o,l,a),n!==void 0&&(kt.type(t,n,o,l,a),kt.range(t,n,o,l,a))}r(l)},eB=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n)&&!t.required)return r();kt.required(t,n,o,l,a),n!==void 0&&(kt.type(t,n,o,l,a),kt.range(t,n,o,l,a))}r(l)},tB=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(n==null&&!t.required)return r();kt.required(t,n,o,l,a,"array"),n!=null&&(kt.type(t,n,o,l,a),kt.range(t,n,o,l,a))}r(l)},nB=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n)&&!t.required)return r();kt.required(t,n,o,l,a),n!==void 0&&kt.type(t,n,o,l,a)}r(l)},rB="enum",oB=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n)&&!t.required)return r();kt.required(t,n,o,l,a),n!==void 0&&kt[rB](t,n,o,l,a)}r(l)},aB=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n,"string")&&!t.required)return r();kt.required(t,n,o,l,a),nn(n,"string")||kt.pattern(t,n,o,l,a)}r(l)},lB=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n,"date")&&!t.required)return r();if(kt.required(t,n,o,l,a),!nn(n,"date")){var i;n instanceof Date?i=n:i=new Date(n),kt.type(t,i,o,l,a),i&&kt.range(t,i.getTime(),o,l,a)}}r(l)},sB=function(t,n,r,o,a){var l=[],s=Array.isArray(n)?"array":typeof n;kt.required(t,n,o,l,a,s),r(l)},kc=function(t,n,r,o,a){var l=t.type,s=[],i=t.required||!t.required&&o.hasOwnProperty(t.field);if(i){if(nn(n,l)&&!t.required)return r();kt.required(t,n,o,s,a,l),nn(n,l)||kt.type(t,n,o,s,a)}r(s)},iB=function(t,n,r,o,a){var l=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(nn(n)&&!t.required)return r();kt.required(t,n,o,l,a)}r(l)},Yl={string:YV,method:GV,number:XV,boolean:JV,regexp:ZV,integer:QV,float:eB,array:tB,object:nB,enum:oB,pattern:aB,date:lB,url:kc,hex:kc,email:kc,required:sB,any:iB};function Od(){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 Ad=Od(),Us=function(){function e(n){this.rules=null,this._messages=Ad,this.define(n)}var t=e.prototype;return t.define=function(r){var o=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(a){var l=r[a];o.rules[a]=Array.isArray(l)?l:[l]})},t.messages=function(r){return r&&(this._messages=rg(Od(),r)),this._messages},t.validate=function(r,o,a){var l=this;o===void 0&&(o={}),a===void 0&&(a=function(){});var s=r,i=o,u=a;if(typeof i=="function"&&(u=i,i={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,s),Promise.resolve(s);function d(g){var w=[],m={};function b(y){if(Array.isArray(y)){var C;w=(C=w).concat.apply(C,y)}else w.push(y)}for(var _=0;_");const o=Fe("form"),a=B(),l=B(0),s=()=>{var d;if((d=a.value)!=null&&d.firstElementChild){const f=window.getComputedStyle(a.value.firstElementChild).width;return Math.ceil(Number.parseFloat(f))}else return 0},i=(d="update")=>{qe(()=>{t.default&&e.isAutoWidth&&(d==="update"?l.value=s():d==="remove"&&(n==null||n.deregisterLabelWidth(l.value)))})},u=()=>i("update");return dt(()=>{u()}),rn(()=>{i("remove")}),pl(()=>u()),$e(l,(d,f)=>{e.updateAll&&(n==null||n.registerLabelWidth(d,f))}),xo(O(()=>{var d,f;return(f=(d=a.value)==null?void 0:d.firstElementChild)!=null?f:null}),u),()=>{var d,f;if(!t)return null;const{isAutoWidth:h}=e;if(h){const p=n==null?void 0:n.autoLabelWidth,v=r==null?void 0:r.hasLabel,g={};if(v&&p&&p!=="auto"){const w=Math.max(0,Number.parseInt(p,10)-l.value),m=n.labelPosition==="left"?"marginRight":"marginLeft";w&&(g[m]=`${w}px`)}return Q("div",{ref:a,class:[o.be("item","label-wrap")],style:g},[(d=t.default)==null?void 0:d.call(t)])}else return Q(Pe,{ref:a},[(f=t.default)==null?void 0:f.call(t)])}}});const fB=["role","aria-labelledby"],pB=se({name:"ElFormItem"}),mB=se({...pB,props:cB,setup(e,{expose:t}){const n=e,r=to(),o=Re(bl,void 0),a=Re(ca,void 0),l=mn(void 0,{formItem:!1}),s=Fe("form-item"),i=Lo().value,u=B([]),d=B(""),f=h$(d,100),h=B(""),p=B();let v,g=!1;const w=O(()=>{if((o==null?void 0:o.labelPosition)==="top")return{};const J=Jn(n.labelWidth||(o==null?void 0:o.labelWidth)||"");return J?{width:J}:{}}),m=O(()=>{if((o==null?void 0:o.labelPosition)==="top"||(o==null?void 0:o.inline))return{};if(!n.label&&!n.labelWidth&&R)return{};const J=Jn(n.labelWidth||(o==null?void 0:o.labelWidth)||"");return!n.label&&!r.label?{marginLeft:J}:{}}),b=O(()=>[s.b(),s.m(l.value),s.is("error",d.value==="error"),s.is("validating",d.value==="validating"),s.is("success",d.value==="success"),s.is("required",M.value||n.required),s.is("no-asterisk",o==null?void 0:o.hideRequiredAsterisk),(o==null?void 0:o.requireAsteriskPosition)==="right"?"asterisk-right":"asterisk-left",{[s.m("feedback")]:o==null?void 0:o.statusIcon}]),_=O(()=>_n(n.inlineMessage)?n.inlineMessage:(o==null?void 0:o.inlineMessage)||!1),y=O(()=>[s.e("error"),{[s.em("error","inline")]:_.value}]),C=O(()=>n.prop?Ge(n.prop)?n.prop:n.prop.join("."):""),k=O(()=>!!(n.label||r.label)),E=O(()=>n.for||u.value.length===1?u.value[0]:void 0),S=O(()=>!E.value&&k.value),R=!!a,L=O(()=>{const J=o==null?void 0:o.model;if(!(!J||!n.prop))return Ni(J,n.prop).value}),F=O(()=>{const{required:J}=n,te=[];n.rules&&te.push(...gd(n.rules));const ae=o==null?void 0:o.rules;if(ae&&n.prop){const le=Ni(ae,n.prop).value;le&&te.push(...gd(le))}if(J!==void 0){const le=te.map((me,P)=>[me,P]).filter(([me])=>Object.keys(me).includes("required"));if(le.length>0)for(const[me,P]of le)me.required!==J&&(te[P]={...me,required:J});else te.push({required:J})}return te}),N=O(()=>F.value.length>0),A=J=>F.value.filter(ae=>!ae.trigger||!J?!0:Array.isArray(ae.trigger)?ae.trigger.includes(J):ae.trigger===J).map(({trigger:ae,...le})=>le),M=O(()=>F.value.some(J=>J.required)),H=O(()=>{var J;return f.value==="error"&&n.showMessage&&((J=o==null?void 0:o.showMessage)!=null?J:!0)}),j=O(()=>`${n.label||""}${(o==null?void 0:o.labelSuffix)||""}`),V=J=>{d.value=J},X=J=>{var te,ae;const{errors:le,fields:me}=J;(!le||!me)&&console.error(J),V("error"),h.value=le?(ae=(te=le==null?void 0:le[0])==null?void 0:te.message)!=null?ae:`${n.prop} is required`:"",o==null||o.emit("validate",n.prop,!1,h.value)},I=()=>{V("success"),o==null||o.emit("validate",n.prop,!0,"")},Y=async J=>{const te=C.value;return new Us({[te]:J}).validate({[te]:L.value},{firstFields:!0}).then(()=>(I(),!0)).catch(le=>(X(le),Promise.reject(le)))},ee=async(J,te)=>{if(g||!n.prop)return!1;const ae=Ke(te);if(!N.value)return te==null||te(!1),!1;const le=A(J);return le.length===0?(te==null||te(!0),!0):(V("validating"),Y(le).then(()=>(te==null||te(!0),!0)).catch(me=>{const{fields:P}=me;return te==null||te(!1,P),ae?!1:Promise.reject(P)}))},W=()=>{V(""),h.value="",g=!1},re=async()=>{const J=o==null?void 0:o.model;if(!J||!n.prop)return;const te=Ni(J,n.prop);g=!0,te.value=Mv(v),await qe(),W(),g=!1},be=J=>{u.value.includes(J)||u.value.push(J)},Te=J=>{u.value=u.value.filter(te=>te!==J)};$e(()=>n.error,J=>{h.value=J||"",V(J?"error":"")},{immediate:!0}),$e(()=>n.validateStatus,J=>V(J||""));const ge=Xt({...dr(n),$el:p,size:l,validateState:d,labelId:i,inputIds:u,isGroup:S,hasLabel:k,addInputId:be,removeInputId:Te,resetField:re,clearValidate:W,validate:ee});return yt(ca,ge),dt(()=>{n.prop&&(o==null||o.addField(ge),v=Mv(L.value))}),rn(()=>{o==null||o.removeField(ge)}),t({size:l,validateMessage:h,validateState:d,validate:ee,clearValidate:W,resetField:re}),(J,te)=>{var ae;return x(),U("div",{ref_key:"formItemRef",ref:p,class:D(c(b)),role:c(S)?"group":void 0,"aria-labelledby":c(S)?c(i):void 0},[Q(c(dB),{"is-auto-width":c(w).width==="auto","update-all":((ae=c(o))==null?void 0:ae.labelWidth)==="auto"},{default:G(()=>[c(k)?(x(),ce(Lt(c(E)?"label":"div"),{key:0,id:c(i),for:c(E),class:D(c(s).e("label")),style:Qe(c(w))},{default:G(()=>[pe(J.$slots,"label",{label:c(j)},()=>[Je(Ee(c(j)),1)])]),_:3},8,["id","for","class","style"])):ye("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),K("div",{class:D(c(s).e("content")),style:Qe(c(m))},[pe(J.$slots,"default"),Q(Dk,{name:`${c(s).namespace.value}-zoom-in-top`},{default:G(()=>[c(H)?pe(J.$slots,"error",{key:0,error:h.value},()=>[K("div",{class:D(c(y))},Ee(h.value),3)]):ye("v-if",!0)]),_:3},8,["name"])],6)],10,fB)}}});var w_=ze(mB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/form/src/form-item.vue"]]);const hB=Bt(AV,{FormItem:w_}),vB=br(w_);let tr;const gB=` - height:0 !important; - visibility:hidden !important; - ${h8()?"":"overflow:hidden !important;"} - position:absolute !important; - z-index:-1000 !important; - top:0 !important; - right:0 !important; -`,bB=["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"];function yB(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),r=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:bB.map(l=>`${l}:${t.getPropertyValue(l)}`).join(";"),paddingSize:r,borderSize:o,boxSizing:n}}function lg(e,t=1,n){var r;tr||(tr=document.createElement("textarea"),document.body.appendChild(tr));const{paddingSize:o,borderSize:a,boxSizing:l,contextStyle:s}=yB(e);tr.setAttribute("style",`${s};${gB}`),tr.value=e.value||e.placeholder||"";let i=tr.scrollHeight;const u={};l==="border-box"?i=i+a:l==="content-box"&&(i=i-o),tr.value="";const d=tr.scrollHeight-o;if(ct(t)){let f=d*t;l==="border-box"&&(f=f+o+a),i=Math.max(f,i),u.minHeight=`${f}px`}if(ct(n)){let f=d*n;l==="border-box"&&(f=f+o+a),i=Math.min(f,i)}return u.height=`${i}px`,(r=tr.parentNode)==null||r.removeChild(tr),tr=void 0,u}const _B=je({id:{type:String,default:void 0},size:Hn,disabled:Boolean,modelValue:{type:Le([String,Number,Object]),default:""},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:Le([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},suffixIcon:{type:Cn},prefixIcon:{type:Cn},containerRole:{type:String,default:void 0},label:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:Le([Object,Array,String]),default:()=>Ur({})}}),wB={[Ct]:e=>Ge(e),input:e=>Ge(e),change:e=>Ge(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},CB=["role"],kB=["id","type","disabled","formatter","parser","readonly","autocomplete","tabindex","aria-label","placeholder","form"],SB=["id","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form"],EB=se({name:"ElInput",inheritAttrs:!1}),$B=se({...EB,props:_B,emits:wB,setup(e,{expose:t,emit:n}){const r=e,o=Pu(),a=to(),l=O(()=>{const ie={};return r.containerRole==="combobox"&&(ie["aria-haspopup"]=o["aria-haspopup"],ie["aria-owns"]=o["aria-owns"],ie["aria-expanded"]=o["aria-expanded"]),ie}),s=O(()=>[r.type==="textarea"?w.b():g.b(),g.m(p.value),g.is("disabled",v.value),g.is("exceed",be.value),{[g.b("group")]:a.prepend||a.append,[g.bm("group","append")]:a.append,[g.bm("group","prepend")]:a.prepend,[g.m("prefix")]:a.prefix||r.prefixIcon,[g.m("suffix")]:a.suffix||r.suffixIcon||r.clearable||r.showPassword,[g.bm("suffix","password-clear")]:Y.value&&ee.value},o.class]),i=O(()=>[g.e("wrapper"),g.is("focus",L.value)]),u=F5({excludeKeys:O(()=>Object.keys(l.value))}),{form:d,formItem:f}=er(),{inputId:h}=wa(r,{formItemContext:f}),p=mn(),v=Fo(),g=Fe("input"),w=Fe("textarea"),m=On(),b=On(),_=B(!1),y=B(!1),C=B(!1),k=B(),E=On(r.inputStyle),S=O(()=>m.value||b.value),{wrapperRef:R,isFocused:L,handleFocus:F,handleBlur:N}=iV(S,{afterBlur(){var ie;r.validateEvent&&((ie=f==null?void 0:f.validate)==null||ie.call(f,"blur").catch(Oe=>void 0))}}),A=O(()=>{var ie;return(ie=d==null?void 0:d.statusIcon)!=null?ie:!1}),M=O(()=>(f==null?void 0:f.validateState)||""),H=O(()=>M.value&&I5[M.value]),j=O(()=>C.value?k5:VD),V=O(()=>[o.style,r.inputStyle]),X=O(()=>[r.inputStyle,E.value,{resize:r.resize}]),I=O(()=>Yn(r.modelValue)?"":String(r.modelValue)),Y=O(()=>r.clearable&&!v.value&&!r.readonly&&!!I.value&&(L.value||_.value)),ee=O(()=>r.showPassword&&!v.value&&!r.readonly&&!!I.value&&(!!I.value||L.value)),W=O(()=>r.showWordLimit&&!!u.value.maxlength&&(r.type==="text"||r.type==="textarea")&&!v.value&&!r.readonly&&!r.showPassword),re=O(()=>I.value.length),be=O(()=>!!W.value&&re.value>Number(u.value.maxlength)),Te=O(()=>!!a.suffix||!!r.suffixIcon||Y.value||r.showPassword||W.value||!!M.value&&A.value),[ge,J]=lV(m);xo(b,ie=>{if(le(),!W.value||r.resize!=="both")return;const Oe=ie[0],{width:We}=Oe.contentRect;k.value={right:`calc(100% - ${We+15+6}px)`}});const te=()=>{const{type:ie,autosize:Oe}=r;if(!(!xt||ie!=="textarea"||!b.value))if(Oe){const We=ht(Oe)?Oe.minRows:void 0,Xe=ht(Oe)?Oe.maxRows:void 0,fe=lg(b.value,We,Xe);E.value={overflowY:"hidden",...fe},qe(()=>{b.value.offsetHeight,E.value=fe})}else E.value={minHeight:lg(b.value).minHeight}},le=(ie=>{let Oe=!1;return()=>{var We;if(Oe||!r.autosize)return;((We=b.value)==null?void 0:We.offsetParent)===null||(ie(),Oe=!0)}})(te),me=()=>{const ie=S.value,Oe=r.formatter?r.formatter(I.value):I.value;!ie||ie.value===Oe||(ie.value=Oe)},P=async ie=>{ge();let{value:Oe}=ie.target;if(r.formatter&&(Oe=r.parser?r.parser(Oe):Oe),!y.value){if(Oe===I.value){me();return}n(Ct,Oe),n("input",Oe),await qe(),me(),J()}},$=ie=>{n("change",ie.target.value)},T=ie=>{n("compositionstart",ie),y.value=!0},z=ie=>{var Oe;n("compositionupdate",ie);const We=(Oe=ie.target)==null?void 0:Oe.value,Xe=We[We.length-1]||"";y.value=!Y1(Xe)},Z=ie=>{n("compositionend",ie),y.value&&(y.value=!1,P(ie))},oe=()=>{C.value=!C.value,_e()},_e=async()=>{var ie;await qe(),(ie=S.value)==null||ie.focus()},we=()=>{var ie;return(ie=S.value)==null?void 0:ie.blur()},he=ie=>{_.value=!1,n("mouseleave",ie)},ke=ie=>{_.value=!0,n("mouseenter",ie)},Me=ie=>{n("keydown",ie)},ne=()=>{var ie;(ie=S.value)==null||ie.select()},ue=()=>{n(Ct,""),n("change",""),n("clear"),n("input","")};return $e(()=>r.modelValue,()=>{var ie;qe(()=>te()),r.validateEvent&&((ie=f==null?void 0:f.validate)==null||ie.call(f,"change").catch(Oe=>void 0))}),$e(I,()=>me()),$e(()=>r.type,async()=>{await qe(),me(),te()}),dt(()=>{!r.formatter&&r.parser,me(),qe(te)}),t({input:m,textarea:b,ref:S,textareaStyle:X,autosize:zt(r,"autosize"),focus:_e,blur:we,select:ne,clear:ue,resizeTextarea:te}),(ie,Oe)=>vt((x(),U("div",Ht(c(l),{class:c(s),style:c(V),role:ie.containerRole,onMouseenter:ke,onMouseleave:he}),[ye(" input "),ie.type!=="textarea"?(x(),U(Pe,{key:0},[ye(" prepend slot "),ie.$slots.prepend?(x(),U("div",{key:0,class:D(c(g).be("group","prepend"))},[pe(ie.$slots,"prepend")],2)):ye("v-if",!0),K("div",{ref_key:"wrapperRef",ref:R,class:D(c(i))},[ye(" prefix slot "),ie.$slots.prefix||ie.prefixIcon?(x(),U("span",{key:0,class:D(c(g).e("prefix"))},[K("span",{class:D(c(g).e("prefix-inner"))},[pe(ie.$slots,"prefix"),ie.prefixIcon?(x(),ce(c(nt),{key:0,class:D(c(g).e("icon"))},{default:G(()=>[(x(),ce(Lt(ie.prefixIcon)))]),_:1},8,["class"])):ye("v-if",!0)],2)],2)):ye("v-if",!0),K("input",Ht({id:c(h),ref_key:"input",ref:m,class:c(g).e("inner")},c(u),{type:ie.showPassword?C.value?"text":"password":ie.type,disabled:c(v),formatter:ie.formatter,parser:ie.parser,readonly:ie.readonly,autocomplete:ie.autocomplete,tabindex:ie.tabindex,"aria-label":ie.label,placeholder:ie.placeholder,style:ie.inputStyle,form:r.form,onCompositionstart:T,onCompositionupdate:z,onCompositionend:Z,onInput:P,onFocus:Oe[0]||(Oe[0]=(...We)=>c(F)&&c(F)(...We)),onBlur:Oe[1]||(Oe[1]=(...We)=>c(N)&&c(N)(...We)),onChange:$,onKeydown:Me}),null,16,kB),ye(" suffix slot "),c(Te)?(x(),U("span",{key:1,class:D(c(g).e("suffix"))},[K("span",{class:D(c(g).e("suffix-inner"))},[!c(Y)||!c(ee)||!c(W)?(x(),U(Pe,{key:0},[pe(ie.$slots,"suffix"),ie.suffixIcon?(x(),ce(c(nt),{key:0,class:D(c(g).e("icon"))},{default:G(()=>[(x(),ce(Lt(ie.suffixIcon)))]),_:1},8,["class"])):ye("v-if",!0)],64)):ye("v-if",!0),c(Y)?(x(),ce(c(nt),{key:1,class:D([c(g).e("icon"),c(g).e("clear")]),onMousedown:$t(c(en),["prevent"]),onClick:ue},{default:G(()=>[Q(c(Yu))]),_:1},8,["class","onMousedown"])):ye("v-if",!0),c(ee)?(x(),ce(c(nt),{key:2,class:D([c(g).e("icon"),c(g).e("password")]),onClick:oe},{default:G(()=>[(x(),ce(Lt(c(j))))]),_:1},8,["class"])):ye("v-if",!0),c(W)?(x(),U("span",{key:3,class:D(c(g).e("count"))},[K("span",{class:D(c(g).e("count-inner"))},Ee(c(re))+" / "+Ee(c(u).maxlength),3)],2)):ye("v-if",!0),c(M)&&c(H)&&c(A)?(x(),ce(c(nt),{key:4,class:D([c(g).e("icon"),c(g).e("validateIcon"),c(g).is("loading",c(M)==="validating")])},{default:G(()=>[(x(),ce(Lt(c(H))))]),_:1},8,["class"])):ye("v-if",!0)],2)],2)):ye("v-if",!0)],2),ye(" append slot "),ie.$slots.append?(x(),U("div",{key:1,class:D(c(g).be("group","append"))},[pe(ie.$slots,"append")],2)):ye("v-if",!0)],64)):(x(),U(Pe,{key:1},[ye(" textarea "),K("textarea",Ht({id:c(h),ref_key:"textarea",ref:b,class:c(w).e("inner")},c(u),{tabindex:ie.tabindex,disabled:c(v),readonly:ie.readonly,autocomplete:ie.autocomplete,style:c(X),"aria-label":ie.label,placeholder:ie.placeholder,form:r.form,onCompositionstart:T,onCompositionupdate:z,onCompositionend:Z,onInput:P,onFocus:Oe[2]||(Oe[2]=(...We)=>c(F)&&c(F)(...We)),onBlur:Oe[3]||(Oe[3]=(...We)=>c(N)&&c(N)(...We)),onChange:$,onKeydown:Me}),null,16,SB),c(W)?(x(),U("span",{key:0,style:Qe(k.value),class:D(c(g).e("count"))},Ee(c(re))+" / "+Ee(c(u).maxlength),7)):ye("v-if",!0)],64))],16,CB)),[[qt,ie.type!=="hidden"]])}});var TB=ze($B,[["__file","/home/runner/work/element-plus/element-plus/packages/components/input/src/input.vue"]]);const Kn=Bt(TB),Ra=4,xB={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"}},OB=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),C_=Symbol("scrollbarContextKey"),AB=je({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),IB="Thumb",PB=se({__name:"thumb",props:AB,setup(e){const t=e,n=Re(C_),r=Fe("scrollbar");n||ya(IB,"can not inject scrollbar context");const o=B(),a=B(),l=B({}),s=B(!1);let i=!1,u=!1,d=xt?document.onselectstart:null;const f=O(()=>xB[t.vertical?"vertical":"horizontal"]),h=O(()=>OB({size:t.size,move:t.move,bar:f.value})),p=O(()=>o.value[f.value.offset]**2/n.wrapElement[f.value.scrollSize]/t.ratio/a.value[f.value.offset]),v=k=>{var E;if(k.stopPropagation(),k.ctrlKey||[1,2].includes(k.button))return;(E=window.getSelection())==null||E.removeAllRanges(),w(k);const S=k.currentTarget;!S||(l.value[f.value.axis]=S[f.value.offset]-(k[f.value.client]-S.getBoundingClientRect()[f.value.direction]))},g=k=>{if(!a.value||!o.value||!n.wrapElement)return;const E=Math.abs(k.target.getBoundingClientRect()[f.value.direction]-k[f.value.client]),S=a.value[f.value.offset]/2,R=(E-S)*100*p.value/o.value[f.value.offset];n.wrapElement[f.value.scroll]=R*n.wrapElement[f.value.scrollSize]/100},w=k=>{k.stopImmediatePropagation(),i=!0,document.addEventListener("mousemove",m),document.addEventListener("mouseup",b),d=document.onselectstart,document.onselectstart=()=>!1},m=k=>{if(!o.value||!a.value||i===!1)return;const E=l.value[f.value.axis];if(!E)return;const S=(o.value.getBoundingClientRect()[f.value.direction]-k[f.value.client])*-1,R=a.value[f.value.offset]-E,L=(S-R)*100*p.value/o.value[f.value.offset];n.wrapElement[f.value.scroll]=L*n.wrapElement[f.value.scrollSize]/100},b=()=>{i=!1,l.value[f.value.axis]=0,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",b),C(),u&&(s.value=!1)},_=()=>{u=!1,s.value=!!t.size},y=()=>{u=!0,s.value=i};rn(()=>{C(),document.removeEventListener("mouseup",b)});const C=()=>{document.onselectstart!==d&&(document.onselectstart=d)};return An(zt(n,"scrollbarElement"),"mousemove",_),An(zt(n,"scrollbarElement"),"mouseleave",y),(k,E)=>(x(),ce(Mn,{name:c(r).b("fade"),persisted:""},{default:G(()=>[vt(K("div",{ref_key:"instance",ref:o,class:D([c(r).e("bar"),c(r).is(c(f).key)]),onMousedown:g},[K("div",{ref_key:"thumb",ref:a,class:D(c(r).e("thumb")),style:Qe(c(h)),onMousedown:v},null,38)],34),[[qt,k.always||s.value]])]),_:1},8,["name"]))}});var sg=ze(PB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/thumb.vue"]]);const LB=je({always:{type:Boolean,default:!0},width:String,height:String,ratioX:{type:Number,default:1},ratioY:{type:Number,default:1}}),MB=se({__name:"bar",props:LB,setup(e,{expose:t}){const n=e,r=B(0),o=B(0);return t({handleScroll:l=>{if(l){const s=l.offsetHeight-Ra,i=l.offsetWidth-Ra;o.value=l.scrollTop*100/s*n.ratioY,r.value=l.scrollLeft*100/i*n.ratioX}}}),(l,s)=>(x(),U(Pe,null,[Q(sg,{move:r.value,ratio:l.ratioX,size:l.width,always:l.always},null,8,["move","ratio","size","always"]),Q(sg,{move:o.value,ratio:l.ratioY,size:l.height,vertical:"",always:l.always},null,8,["move","ratio","size","always"])],64))}});var RB=ze(MB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/bar.vue"]]);const NB=je({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:Le([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}}),DB={scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(ct)},FB="ElScrollbar",VB=se({name:FB}),BB=se({...VB,props:NB,emits:DB,setup(e,{expose:t,emit:n}){const r=e,o=Fe("scrollbar");let a,l;const s=B(),i=B(),u=B(),d=B("0"),f=B("0"),h=B(),p=B(1),v=B(1),g=O(()=>{const E={};return r.height&&(E.height=Jn(r.height)),r.maxHeight&&(E.maxHeight=Jn(r.maxHeight)),[r.wrapStyle,E]}),w=O(()=>[r.wrapClass,o.e("wrap"),{[o.em("wrap","hidden-default")]:!r.native}]),m=O(()=>[o.e("view"),r.viewClass]),b=()=>{var E;i.value&&((E=h.value)==null||E.handleScroll(i.value),n("scroll",{scrollTop:i.value.scrollTop,scrollLeft:i.value.scrollLeft}))};function _(E,S){ht(E)?i.value.scrollTo(E):ct(E)&&ct(S)&&i.value.scrollTo(E,S)}const y=E=>{!ct(E)||(i.value.scrollTop=E)},C=E=>{!ct(E)||(i.value.scrollLeft=E)},k=()=>{if(!i.value)return;const E=i.value.offsetHeight-Ra,S=i.value.offsetWidth-Ra,R=E**2/i.value.scrollHeight,L=S**2/i.value.scrollWidth,F=Math.max(R,r.minSize),N=Math.max(L,r.minSize);p.value=R/(E-R)/(F/(E-F)),v.value=L/(S-L)/(N/(S-N)),f.value=F+Rar.noresize,E=>{E?(a==null||a(),l==null||l()):({stop:a}=xo(u,k),l=An("resize",k))},{immediate:!0}),$e(()=>[r.maxHeight,r.height],()=>{r.native||qe(()=>{var E;k(),i.value&&((E=h.value)==null||E.handleScroll(i.value))})}),yt(C_,Xt({scrollbarElement:s,wrapElement:i})),dt(()=>{r.native||qe(()=>{k()})}),pl(()=>k()),t({wrapRef:i,update:k,scrollTo:_,setScrollTop:y,setScrollLeft:C,handleScroll:b}),(E,S)=>(x(),U("div",{ref_key:"scrollbarRef",ref:s,class:D(c(o).b())},[K("div",{ref_key:"wrapRef",ref:i,class:D(c(w)),style:Qe(c(g)),onScroll:b},[(x(),ce(Lt(E.tag),{ref_key:"resizeRef",ref:u,class:D(c(m)),style:Qe(E.viewStyle)},{default:G(()=>[pe(E.$slots,"default")]),_:3},8,["class","style"]))],38),E.native?ye("v-if",!0):(x(),ce(RB,{key:0,ref_key:"barRef",ref:h,height:f.value,width:d.value,always:E.always,"ratio-x":v.value,"ratio-y":p.value},null,8,["height","width","always","ratio-x","ratio-y"]))],2))}});var zB=ze(BB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/scrollbar.vue"]]);const yl=Bt(zB),wp=Symbol("popper"),k_=Symbol("popperContent"),HB=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],S_=je({role:{type:String,values:HB,default:"tooltip"}}),jB=se({name:"ElPopper",inheritAttrs:!1}),WB=se({...jB,props:S_,setup(e,{expose:t}){const n=e,r=B(),o=B(),a=B(),l=B(),s=O(()=>n.role),i={triggerRef:r,popperInstanceRef:o,contentRef:a,referenceRef:l,role:s};return t(i),yt(wp,i),(u,d)=>pe(u.$slots,"default")}});var UB=ze(WB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/popper.vue"]]);const E_=je({arrowOffset:{type:Number,default:5}}),KB=se({name:"ElPopperArrow",inheritAttrs:!1}),qB=se({...KB,props:E_,setup(e,{expose:t}){const n=e,r=Fe("popper"),{arrowOffset:o,arrowRef:a,arrowStyle:l}=Re(k_,void 0);return $e(()=>n.arrowOffset,s=>{o.value=s}),rn(()=>{a.value=void 0}),t({arrowRef:a}),(s,i)=>(x(),U("span",{ref_key:"arrowRef",ref:a,class:D(c(r).e("arrow")),style:Qe(c(l)),"data-popper-arrow":""},null,6))}});var YB=ze(qB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/arrow.vue"]]);const GB="ElOnlyChild",$_=se({name:GB,setup(e,{slots:t,attrs:n}){var r;const o=Re(m_),a=aV((r=o==null?void 0:o.setForwardRef)!=null?r:en);return()=>{var l;const s=(l=t.default)==null?void 0:l.call(t,n);if(!s||s.length>1)return null;const i=T_(s);return i?vt(Xr(i,n),[[a]]):null}}});function T_(e){if(!e)return null;const t=e;for(const n of t){if(ht(n))switch(n.type){case yn:continue;case Gr:case"svg":return ig(n);case Pe:return T_(n.children);default:return n}return ig(n)}return null}function ig(e){const t=Fe("only-child");return Q("span",{class:t.e("content")},[e])}const x_=je({virtualRef:{type:Le(Object)},virtualTriggering:Boolean,onMouseenter:{type:Le(Function)},onMouseleave:{type:Le(Function)},onClick:{type:Le(Function)},onKeydown:{type:Le(Function)},onFocus:{type:Le(Function)},onBlur:{type:Le(Function)},onContextmenu:{type:Le(Function)},id:String,open:Boolean}),XB=se({name:"ElPopperTrigger",inheritAttrs:!1}),JB=se({...XB,props:x_,setup(e,{expose:t}){const n=e,{role:r,triggerRef:o}=Re(wp,void 0);oV(o);const a=O(()=>s.value?n.id:void 0),l=O(()=>{if(r&&r.value==="tooltip")return n.open&&n.id?n.id:void 0}),s=O(()=>{if(r&&r.value!=="tooltip")return r.value}),i=O(()=>s.value?`${n.open}`:void 0);let u;return dt(()=>{$e(()=>n.virtualRef,d=>{d&&(o.value=Kr(d))},{immediate:!0}),$e(o,(d,f)=>{u==null||u(),u=void 0,ua(d)&&(["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"].forEach(h=>{var p;const v=n[h];v&&(d.addEventListener(h.slice(2).toLowerCase(),v),(p=f==null?void 0:f.removeEventListener)==null||p.call(f,h.slice(2).toLowerCase(),v))}),u=$e([a,l,s,i],h=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((p,v)=>{Yn(h[v])?d.removeAttribute(p):d.setAttribute(p,h[v])})},{immediate:!0})),ua(f)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(h=>f.removeAttribute(h))},{immediate:!0})}),rn(()=>{u==null||u(),u=void 0}),t({triggerRef:o}),(d,f)=>d.virtualTriggering?ye("v-if",!0):(x(),ce(c($_),Ht({key:0},d.$attrs,{"aria-controls":c(a),"aria-describedby":c(l),"aria-expanded":c(i),"aria-haspopup":c(s)}),{default:G(()=>[pe(d.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var ZB=ze(JB,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/trigger.vue"]]);const Sc="focus-trap.focus-after-trapped",Ec="focus-trap.focus-after-released",QB="focus-trap.focusout-prevented",ug={cancelable:!0,bubbles:!1},e9={cancelable:!0,bubbles:!1},cg="focusAfterTrapped",dg="focusAfterReleased",Cp=Symbol("elFocusTrap"),kp=B(),ec=B(0),Sp=B(0);let gi=0;const O_=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0||r===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},fg=(e,t)=>{for(const n of e)if(!t9(n,t))return n},t9=(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},n9=e=>{const t=O_(e),n=fg(t,e),r=fg(t.reverse(),e);return[n,r]},r9=e=>e instanceof HTMLInputElement&&"select"in e,ho=(e,t)=>{if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),Sp.value=window.performance.now(),e!==n&&r9(e)&&t&&e.select()}};function pg(e,t){const n=[...e],r=e.indexOf(t);return r!==-1&&n.splice(r,1),n}const o9=()=>{let e=[];return{push:r=>{const o=e[0];o&&r!==o&&o.pause(),e=pg(e,r),e.unshift(r)},remove:r=>{var o,a;e=pg(e,r),(a=(o=e[0])==null?void 0:o.resume)==null||a.call(o)}}},a9=(e,t=!1)=>{const n=document.activeElement;for(const r of e)if(ho(r,t),document.activeElement!==n)return},mg=o9(),l9=()=>ec.value>Sp.value,bi=()=>{kp.value="pointer",ec.value=window.performance.now()},hg=()=>{kp.value="keyboard",ec.value=window.performance.now()},s9=()=>(dt(()=>{gi===0&&(document.addEventListener("mousedown",bi),document.addEventListener("touchstart",bi),document.addEventListener("keydown",hg)),gi++}),rn(()=>{gi--,gi<=0&&(document.removeEventListener("mousedown",bi),document.removeEventListener("touchstart",bi),document.removeEventListener("keydown",hg))}),{focusReason:kp,lastUserFocusTimestamp:ec,lastAutomatedFocusTimestamp:Sp}),yi=e=>new CustomEvent(QB,{...e9,detail:e}),i9=se({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[cg,dg,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=B();let r,o;const{focusReason:a}=s9();eV(v=>{e.trapped&&!l.paused&&t("release-requested",v)});const l={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},s=v=>{if(!e.loop&&!e.trapped||l.paused)return;const{key:g,altKey:w,ctrlKey:m,metaKey:b,currentTarget:_,shiftKey:y}=v,{loop:C}=e,k=g===at.tab&&!w&&!m&&!b,E=document.activeElement;if(k&&E){const S=_,[R,L]=n9(S);if(R&&L){if(!y&&E===L){const N=yi({focusReason:a.value});t("focusout-prevented",N),N.defaultPrevented||(v.preventDefault(),C&&ho(R,!0))}else if(y&&[R,S].includes(E)){const N=yi({focusReason:a.value});t("focusout-prevented",N),N.defaultPrevented||(v.preventDefault(),C&&ho(L,!0))}}else if(E===S){const N=yi({focusReason:a.value});t("focusout-prevented",N),N.defaultPrevented||v.preventDefault()}}};yt(Cp,{focusTrapRef:n,onKeydown:s}),$e(()=>e.focusTrapEl,v=>{v&&(n.value=v)},{immediate:!0}),$e([n],([v],[g])=>{v&&(v.addEventListener("keydown",s),v.addEventListener("focusin",d),v.addEventListener("focusout",f)),g&&(g.removeEventListener("keydown",s),g.removeEventListener("focusin",d),g.removeEventListener("focusout",f))});const i=v=>{t(cg,v)},u=v=>t(dg,v),d=v=>{const g=c(n);if(!g)return;const w=v.target,m=v.relatedTarget,b=w&&g.contains(w);e.trapped||m&&g.contains(m)||(r=m),b&&t("focusin",v),!l.paused&&e.trapped&&(b?o=w:ho(o,!0))},f=v=>{const g=c(n);if(!(l.paused||!g))if(e.trapped){const w=v.relatedTarget;!Yn(w)&&!g.contains(w)&&setTimeout(()=>{if(!l.paused&&e.trapped){const m=yi({focusReason:a.value});t("focusout-prevented",m),m.defaultPrevented||ho(o,!0)}},0)}else{const w=v.target;w&&g.contains(w)||t("focusout",v)}};async function h(){await qe();const v=c(n);if(v){mg.push(l);const g=v.contains(document.activeElement)?r:document.activeElement;if(r=g,!v.contains(g)){const m=new Event(Sc,ug);v.addEventListener(Sc,i),v.dispatchEvent(m),m.defaultPrevented||qe(()=>{let b=e.focusStartEl;Ge(b)||(ho(b),document.activeElement!==b&&(b="first")),b==="first"&&a9(O_(v),!0),(document.activeElement===g||b==="container")&&ho(v)})}}}function p(){const v=c(n);if(v){v.removeEventListener(Sc,i);const g=new CustomEvent(Ec,{...ug,detail:{focusReason:a.value}});v.addEventListener(Ec,u),v.dispatchEvent(g),!g.defaultPrevented&&(a.value=="keyboard"||!l9()||v.contains(document.activeElement))&&ho(r!=null?r:document.body),v.removeEventListener(Ec,i),mg.remove(l)}}return dt(()=>{e.trapped&&h(),$e(()=>e.trapped,v=>{v?h():p()})}),rn(()=>{e.trapped&&p()}),{onKeydown:s}}});function u9(e,t,n,r,o,a){return pe(e.$slots,"default",{handleKeydown:e.onKeydown})}var A_=ze(i9,[["render",u9],["__file","/home/runner/work/element-plus/element-plus/packages/components/focus-trap/src/focus-trap.vue"]]);const c9=["fixed","absolute"],d9=je({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:Le(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:gl,default:"bottom"},popperOptions:{type:Le(Object),default:()=>({})},strategy:{type:String,values:c9,default:"absolute"}}),I_=je({...d9,id:String,style:{type:Le([String,Array,Object])},className:{type:Le([String,Array,Object])},effect:{type:String,default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:{type:Boolean,default:!1},trapping:{type:Boolean,default:!1},popperClass:{type:Le([String,Array,Object])},popperStyle:{type:Le([String,Array,Object])},referenceEl:{type:Le(Object)},triggerTargetEl:{type:Le(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},ariaLabel:{type:String,default:void 0},virtualTriggering:Boolean,zIndex:Number}),f9={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},p9=(e,t=[])=>{const{placement:n,strategy:r,popperOptions:o}=e,a={placement:n,strategy:r,...o,modifiers:[...h9(e),...t]};return v9(a,o==null?void 0:o.modifiers),a},m9=e=>{if(!!xt)return Kr(e)};function h9(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:r}=e;return[{name:"offset",options:{offset:[0,t!=null?t:12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:r}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function v9(e,t){t&&(e.modifiers=[...e.modifiers,...t!=null?t:[]])}const g9=0,b9=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:r,role:o}=Re(wp,void 0),a=B(),l=B(),s=O(()=>({name:"eventListeners",enabled:!!e.visible})),i=O(()=>{var m;const b=c(a),_=(m=c(l))!=null?m:g9;return{name:"arrow",enabled:!nN(b),options:{element:b,padding:_}}}),u=O(()=>({onFirstUpdate:()=>{v()},...p9(e,[c(i),c(s)])})),d=O(()=>m9(e.referenceEl)||c(r)),{attributes:f,state:h,styles:p,update:v,forceUpdate:g,instanceRef:w}=JF(d,n,u);return $e(w,m=>t.value=m),dt(()=>{$e(()=>{var m;return(m=c(d))==null?void 0:m.getBoundingClientRect()},()=>{v()})}),{attributes:f,arrowRef:a,contentRef:n,instanceRef:w,state:h,styles:p,role:o,forceUpdate:g,update:v}},y9=(e,{attributes:t,styles:n,role:r})=>{const{nextZIndex:o}=Zu(),a=Fe("popper"),l=O(()=>c(t).popper),s=B(e.zIndex||o()),i=O(()=>[a.b(),a.is("pure",e.pure),a.is(e.effect),e.popperClass]),u=O(()=>[{zIndex:c(s)},c(n).popper,e.popperStyle||{}]),d=O(()=>r.value==="dialog"?"false":void 0),f=O(()=>c(n).arrow||{});return{ariaModal:d,arrowStyle:f,contentAttrs:l,contentClass:i,contentStyle:u,contentZIndex:s,updateZIndex:()=>{s.value=e.zIndex||o()}}},_9=(e,t)=>{const n=B(!1),r=B();return{focusStartRef:r,trapped:n,onFocusAfterReleased:u=>{var d;((d=u.detail)==null?void 0:d.focusReason)!=="pointer"&&(r.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:u=>{e.visible&&!n.value&&(u.target&&(r.value=u.target),n.value=!0)},onFocusoutPrevented:u=>{e.trapping||(u.detail.focusReason==="pointer"&&u.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}},w9=se({name:"ElPopperContent"}),C9=se({...w9,props:I_,emits:f9,setup(e,{expose:t,emit:n}){const r=e,{focusStartRef:o,trapped:a,onFocusAfterReleased:l,onFocusAfterTrapped:s,onFocusInTrap:i,onFocusoutPrevented:u,onReleaseRequested:d}=_9(r,n),{attributes:f,arrowRef:h,contentRef:p,styles:v,instanceRef:g,role:w,update:m}=b9(r),{ariaModal:b,arrowStyle:_,contentAttrs:y,contentClass:C,contentStyle:k,updateZIndex:E}=y9(r,{styles:v,attributes:f,role:w}),S=Re(ca,void 0),R=B();yt(k_,{arrowStyle:_,arrowRef:h,arrowOffset:R}),S&&(S.addInputId||S.removeInputId)&&yt(ca,{...S,addInputId:en,removeInputId:en});let L;const F=(A=!0)=>{m(),A&&E()},N=()=>{F(!1),r.visible&&r.focusOnShow?a.value=!0:r.visible===!1&&(a.value=!1)};return dt(()=>{$e(()=>r.triggerTargetEl,(A,M)=>{L==null||L(),L=void 0;const H=c(A||p.value),j=c(M||p.value);ua(H)&&(L=$e([w,()=>r.ariaLabel,b,()=>r.id],V=>{["role","aria-label","aria-modal","id"].forEach((X,I)=>{Yn(V[I])?H.removeAttribute(X):H.setAttribute(X,V[I])})},{immediate:!0})),j!==H&&ua(j)&&["role","aria-label","aria-modal","id"].forEach(V=>{j.removeAttribute(V)})},{immediate:!0}),$e(()=>r.visible,N,{immediate:!0})}),rn(()=>{L==null||L(),L=void 0}),t({popperContentRef:p,popperInstanceRef:g,updatePopper:F,contentStyle:k}),(A,M)=>(x(),U("div",Ht({ref_key:"contentRef",ref:p},c(y),{style:c(k),class:c(C),tabindex:"-1",onMouseenter:M[0]||(M[0]=H=>A.$emit("mouseenter",H)),onMouseleave:M[1]||(M[1]=H=>A.$emit("mouseleave",H))}),[Q(c(A_),{trapped:c(a),"trap-on-focus-in":!0,"focus-trap-el":c(p),"focus-start-el":c(o),onFocusAfterTrapped:c(s),onFocusAfterReleased:c(l),onFocusin:c(i),onFocusoutPrevented:c(u),onReleaseRequested:c(d)},{default:G(()=>[pe(A.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16))}});var k9=ze(C9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popper/src/content.vue"]]);const S9=Bt(UB),tc=Symbol("elTooltip"),Ss=je({...rV,...I_,appendTo:{type:Le([String,Object])},content:{type:String,default:""},rawContent:{type:Boolean,default:!1},persistent:Boolean,ariaLabel:String,visible:{type:Le(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean}),Ep=je({...x_,disabled:Boolean,trigger:{type:Le([String,Array]),default:"hover"},triggerKeys:{type:Le(Array),default:()=>[at.enter,at.space]}}),{useModelToggleProps:E9,useModelToggleEmits:$9,useModelToggle:T9}=G5("visible"),x9=je({...S_,...E9,...Ss,...Ep,...E_,showArrow:{type:Boolean,default:!0}}),O9=[...$9,"before-show","before-hide","show","hide","open","close"],A9=(e,t)=>De(e)?e.includes(t):e===t,Ta=(e,t,n)=>r=>{A9(c(e),t)&&n(r)},I9=se({name:"ElTooltipTrigger"}),P9=se({...I9,props:Ep,setup(e,{expose:t}){const n=e,r=Fe("tooltip"),{controlled:o,id:a,open:l,onOpen:s,onClose:i,onToggle:u}=Re(tc,void 0),d=B(null),f=()=>{if(c(o)||n.disabled)return!0},h=zt(n,"trigger"),p=Kt(f,Ta(h,"hover",s)),v=Kt(f,Ta(h,"hover",i)),g=Kt(f,Ta(h,"click",y=>{y.button===0&&u(y)})),w=Kt(f,Ta(h,"focus",s)),m=Kt(f,Ta(h,"focus",i)),b=Kt(f,Ta(h,"contextmenu",y=>{y.preventDefault(),u(y)})),_=Kt(f,y=>{const{code:C}=y;n.triggerKeys.includes(C)&&(y.preventDefault(),u(y))});return t({triggerRef:d}),(y,C)=>(x(),ce(c(ZB),{id:c(a),"virtual-ref":y.virtualRef,open:c(l),"virtual-triggering":y.virtualTriggering,class:D(c(r).e("trigger")),onBlur:c(m),onClick:c(g),onContextmenu:c(b),onFocus:c(w),onMouseenter:c(p),onMouseleave:c(v),onKeydown:c(_)},{default:G(()=>[pe(y.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var L9=ze(P9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/trigger.vue"]]);const M9=se({name:"ElTooltipContent",inheritAttrs:!1}),R9=se({...M9,props:Ss,setup(e,{expose:t}){const n=e,{selector:r}=f_(),o=Fe("tooltip"),a=B(null),l=B(!1),{controlled:s,id:i,open:u,trigger:d,onClose:f,onOpen:h,onShow:p,onHide:v,onBeforeShow:g,onBeforeHide:w}=Re(tc,void 0),m=O(()=>n.transition||`${o.namespace.value}-fade-in-linear`),b=O(()=>n.persistent);rn(()=>{l.value=!0});const _=O(()=>c(b)?!0:c(u)),y=O(()=>n.disabled?!1:c(u)),C=O(()=>n.appendTo||r.value),k=O(()=>{var V;return(V=n.style)!=null?V:{}}),E=O(()=>!c(u)),S=()=>{v()},R=()=>{if(c(s))return!0},L=Kt(R,()=>{n.enterable&&c(d)==="hover"&&h()}),F=Kt(R,()=>{c(d)==="hover"&&f()}),N=()=>{var V,X;(X=(V=a.value)==null?void 0:V.updatePopper)==null||X.call(V),g==null||g()},A=()=>{w==null||w()},M=()=>{p(),j=N0(O(()=>{var V;return(V=a.value)==null?void 0:V.popperContentRef}),()=>{if(c(s))return;c(d)!=="hover"&&f()})},H=()=>{n.virtualTriggering||f()};let j;return $e(()=>c(u),V=>{V||j==null||j()},{flush:"post"}),$e(()=>n.content,()=>{var V,X;(X=(V=a.value)==null?void 0:V.updatePopper)==null||X.call(V)}),t({contentRef:a}),(V,X)=>(x(),ce(Vb,{disabled:!V.teleported,to:c(C)},[Q(Mn,{name:c(m),onAfterLeave:S,onBeforeEnter:N,onAfterEnter:M,onBeforeLeave:A},{default:G(()=>[c(_)?vt((x(),ce(c(k9),Ht({key:0,id:c(i),ref_key:"contentRef",ref:a},V.$attrs,{"aria-label":V.ariaLabel,"aria-hidden":c(E),"boundaries-padding":V.boundariesPadding,"fallback-placements":V.fallbackPlacements,"gpu-acceleration":V.gpuAcceleration,offset:V.offset,placement:V.placement,"popper-options":V.popperOptions,strategy:V.strategy,effect:V.effect,enterable:V.enterable,pure:V.pure,"popper-class":V.popperClass,"popper-style":[V.popperStyle,c(k)],"reference-el":V.referenceEl,"trigger-target-el":V.triggerTargetEl,visible:c(y),"z-index":V.zIndex,onMouseenter:c(L),onMouseleave:c(F),onBlur:H,onClose:c(f)}),{default:G(()=>[l.value?ye("v-if",!0):pe(V.$slots,"default",{key:0})]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[qt,c(y)]]):ye("v-if",!0)]),_:3},8,["name"])],8,["disabled","to"]))}});var N9=ze(R9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/content.vue"]]);const D9=["innerHTML"],F9={key:1},V9=se({name:"ElTooltip"}),B9=se({...V9,props:x9,emits:O9,setup(e,{expose:t,emit:n}){const r=e;nV();const o=Lo(),a=B(),l=B(),s=()=>{var m;const b=c(a);b&&((m=b.popperInstanceRef)==null||m.update())},i=B(!1),u=B(),{show:d,hide:f,hasUpdateHandler:h}=T9({indicator:i,toggleReason:u}),{onOpen:p,onClose:v}=p_({showAfter:zt(r,"showAfter"),hideAfter:zt(r,"hideAfter"),autoClose:zt(r,"autoClose"),open:d,close:f}),g=O(()=>_n(r.visible)&&!h.value);yt(tc,{controlled:g,id:o,open:pa(i),trigger:zt(r,"trigger"),onOpen:m=>{p(m)},onClose:m=>{v(m)},onToggle:m=>{c(i)?v(m):p(m)},onShow:()=>{n("show",u.value)},onHide:()=>{n("hide",u.value)},onBeforeShow:()=>{n("before-show",u.value)},onBeforeHide:()=>{n("before-hide",u.value)},updatePopper:s}),$e(()=>r.disabled,m=>{m&&i.value&&(i.value=!1)});const w=()=>{var m,b;const _=(b=(m=l.value)==null?void 0:m.contentRef)==null?void 0:b.popperContentRef;return _&&_.contains(document.activeElement)};return $b(()=>i.value&&f()),t({popperRef:a,contentRef:l,isFocusInsideContent:w,updatePopper:s,onOpen:p,onClose:v,hide:f}),(m,b)=>(x(),ce(c(S9),{ref_key:"popperRef",ref:a,role:m.role},{default:G(()=>[Q(L9,{disabled:m.disabled,trigger:m.trigger,"trigger-keys":m.triggerKeys,"virtual-ref":m.virtualRef,"virtual-triggering":m.virtualTriggering},{default:G(()=>[m.$slots.default?pe(m.$slots,"default",{key:0}):ye("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),Q(N9,{ref_key:"contentRef",ref:l,"aria-label":m.ariaLabel,"boundaries-padding":m.boundariesPadding,content:m.content,disabled:m.disabled,effect:m.effect,enterable:m.enterable,"fallback-placements":m.fallbackPlacements,"hide-after":m.hideAfter,"gpu-acceleration":m.gpuAcceleration,offset:m.offset,persistent:m.persistent,"popper-class":m.popperClass,"popper-style":m.popperStyle,placement:m.placement,"popper-options":m.popperOptions,pure:m.pure,"raw-content":m.rawContent,"reference-el":m.referenceEl,"trigger-target-el":m.triggerTargetEl,"show-after":m.showAfter,strategy:m.strategy,teleported:m.teleported,transition:m.transition,"virtual-triggering":m.virtualTriggering,"z-index":m.zIndex,"append-to":m.appendTo},{default:G(()=>[pe(m.$slots,"content",{},()=>[m.rawContent?(x(),U("span",{key:0,innerHTML:m.content},null,8,D9)):(x(),U("span",F9,Ee(m.content),1))]),m.showArrow?(x(),ce(c(YB),{key:0,"arrow-offset":m.arrowOffset},null,8,["arrow-offset"])):ye("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","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var z9=ze(B9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/tooltip.vue"]]);const Ca=Bt(z9),H9=je({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"}}),j9=["textContent"],W9=se({name:"ElBadge"}),U9=se({...W9,props:H9,setup(e,{expose:t}){const n=e,r=Fe("badge"),o=O(()=>n.isDot?"":ct(n.value)&&ct(n.max)?n.max(x(),U("div",{class:D(c(r).b())},[pe(a.$slots,"default"),Q(Mn,{name:`${c(r).namespace.value}-zoom-in-center`,persisted:""},{default:G(()=>[vt(K("sup",{class:D([c(r).e("content"),c(r).em("content",a.type),c(r).is("fixed",!!a.$slots.default),c(r).is("dot",a.isDot)]),textContent:Ee(c(o))},null,10,j9),[[qt,!a.hidden&&(c(o)||a.isDot)]])]),_:1},8,["name"])],2))}});var K9=ze(U9,[["__file","/home/runner/work/element-plus/element-plus/packages/components/badge/src/badge.vue"]]);const q9=Bt(K9),P_=Symbol("buttonGroupContextKey"),Y9=(e,t)=>{_s({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},O(()=>e.type==="text"));const n=Re(P_,void 0),r=Qu("button"),{form:o}=er(),a=mn(O(()=>n==null?void 0:n.size)),l=Fo(),s=B(),i=to(),u=O(()=>e.type||(n==null?void 0:n.type)||""),d=O(()=>{var v,g,w;return(w=(g=e.autoInsertSpace)!=null?g:(v=r.value)==null?void 0:v.autoInsertSpace)!=null?w:!1}),f=O(()=>e.tag==="button"?{ariaDisabled:l.value||e.loading,disabled:l.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),h=O(()=>{var v;const g=(v=i.default)==null?void 0:v.call(i);if(d.value&&(g==null?void 0:g.length)===1){const w=g[0];if((w==null?void 0:w.type)===Gr){const m=w.children;return/^\p{Unified_Ideograph}{2}$/u.test(m.trim())}}return!1});return{_disabled:l,_size:a,_type:u,_ref:s,_props:f,shouldAddSpace:h,handleClick:v=>{e.nativeType==="reset"&&(o==null||o.resetFields()),t("click",v)}}},G9=["default","primary","success","warning","info","danger","text",""],X9=["button","submit","reset"],Id=je({size:Hn,disabled:Boolean,type:{type:String,values:G9,default:""},icon:{type:Cn},nativeType:{type:String,values:X9,default:"button"},loading:Boolean,loadingIcon:{type:Cn,default:()=>Gu},plain:Boolean,text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:Le([String,Object]),default:"button"}}),J9={click:e=>e instanceof MouseEvent};function cn(e,t){Z9(e)&&(e="100%");var n=Q9(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function _i(e){return Math.min(1,Math.max(0,e))}function Z9(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function Q9(e){return typeof e=="string"&&e.indexOf("%")!==-1}function L_(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function wi(e){return e<=1?"".concat(Number(e)*100,"%"):e}function ea(e){return e.length===1?"0"+e:String(e)}function e7(e,t,n){return{r:cn(e,255)*255,g:cn(t,255)*255,b:cn(n,255)*255}}function vg(e,t,n){e=cn(e,255),t=cn(t,255),n=cn(n,255);var r=Math.max(e,t,n),o=Math.min(e,t,n),a=0,l=0,s=(r+o)/2;if(r===o)l=0,a=0;else{var i=r-o;switch(l=s>.5?i/(2-r-o):i/(r+o),r){case e:a=(t-n)/i+(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 t7(e,t,n){var r,o,a;if(e=cn(e,360),t=cn(t,100),n=cn(n,100),t===0)o=n,a=n,r=n;else{var l=n<.5?n*(1+t):n+t-n*t,s=2*n-l;r=$c(s,l,e+1/3),o=$c(s,l,e),a=$c(s,l,e-1/3)}return{r:r*255,g:o*255,b:a*255}}function gg(e,t,n){e=cn(e,255),t=cn(t,255),n=cn(n,255);var r=Math.max(e,t,n),o=Math.min(e,t,n),a=0,l=r,s=r-o,i=r===0?0:s/r;if(r===o)a=0;else{switch(r){case e:a=(t-n)/s+(t>16,g:(e&65280)>>8,b:e&255}}var Pd={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 l7(e){var t={r:0,g:0,b:0},n=1,r=null,o=null,a=null,l=!1,s=!1;return typeof e=="string"&&(e=u7(e)),typeof e=="object"&&(Dr(e.r)&&Dr(e.g)&&Dr(e.b)?(t=e7(e.r,e.g,e.b),l=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):Dr(e.h)&&Dr(e.s)&&Dr(e.v)?(r=wi(e.s),o=wi(e.v),t=n7(e.h,r,o),l=!0,s="hsv"):Dr(e.h)&&Dr(e.s)&&Dr(e.l)&&(r=wi(e.s),a=wi(e.l),t=t7(e.h,r,a),l=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=L_(n),{ok:l,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 s7="[-\\+]?\\d+%?",i7="[-\\+]?\\d*\\.\\d+%?",ko="(?:".concat(i7,")|(?:").concat(s7,")"),Tc="[\\s|\\(]+(".concat(ko,")[,|\\s]+(").concat(ko,")[,|\\s]+(").concat(ko,")\\s*\\)?"),xc="[\\s|\\(]+(".concat(ko,")[,|\\s]+(").concat(ko,")[,|\\s]+(").concat(ko,")[,|\\s]+(").concat(ko,")\\s*\\)?"),nr={CSS_UNIT:new RegExp(ko),rgb:new RegExp("rgb"+Tc),rgba:new RegExp("rgba"+xc),hsl:new RegExp("hsl"+Tc),hsla:new RegExp("hsla"+xc),hsv:new RegExp("hsv"+Tc),hsva:new RegExp("hsva"+xc),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 u7(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(Pd[e])e=Pd[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=nr.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=nr.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=nr.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=nr.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=nr.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=nr.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=nr.hex8.exec(e),n?{r:Fn(n[1]),g:Fn(n[2]),b:Fn(n[3]),a:yg(n[4]),format:t?"name":"hex8"}:(n=nr.hex6.exec(e),n?{r:Fn(n[1]),g:Fn(n[2]),b:Fn(n[3]),format:t?"name":"hex"}:(n=nr.hex4.exec(e),n?{r:Fn(n[1]+n[1]),g:Fn(n[2]+n[2]),b:Fn(n[3]+n[3]),a:yg(n[4]+n[4]),format:t?"name":"hex8"}:(n=nr.hex3.exec(e),n?{r:Fn(n[1]+n[1]),g:Fn(n[2]+n[2]),b:Fn(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function Dr(e){return Boolean(nr.CSS_UNIT.exec(String(e)))}var c7=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=a7(t)),this.originalInput=t;var o=l7(t);this.originalInput=t,this.r=o.r,this.g=o.g,this.b=o.b,this.a=o.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:o.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=o.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,o,a=t.r/255,l=t.g/255,s=t.b/255;return a<=.03928?n=a/12.92:n=Math.pow((a+.055)/1.055,2.4),l<=.03928?r=l/12.92:r=Math.pow((l+.055)/1.055,2.4),s<=.03928?o=s/12.92:o=Math.pow((s+.055)/1.055,2.4),.2126*n+.7152*r+.0722*o},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=L_(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=gg(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=gg(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),o=Math.round(t.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(o,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(o,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=vg(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=vg(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),o=Math.round(t.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(o,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(o,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),bg(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),r7(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(cn(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(cn(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="#"+bg(this.r,this.g,this.b,!1),n=0,r=Object.entries(Pd);n=0,a=!n&&o&&(t.startsWith("hex")||t==="name");return a?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=_i(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=_i(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=_i(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=_i(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(),o=new e(t).toRgb(),a=n/100,l={r:(o.r-r.r)*a+r.r,g:(o.g-r.g)*a+r.g,b:(o.b-r.b)*a+r.b,a:(o.a-r.a)*a+r.a};return new e(l)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var r=this.toHsl(),o=360/n,a=[this];for(r.h=(r.h-(o*t>>1)+720)%360;--t;)r.h=(r.h+o)%360,a.push(new e(r));return a},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,o=n.s,a=n.v,l=[],s=1/t;t--;)l.push(new e({h:r,s:o,v:a})),a=(a+s)%1;return l},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(),o=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/o,g:(n.g*n.a+r.g*r.a*(1-n.a))/o,b:(n.b*n.a+r.b*r.a*(1-n.a))/o,a:o})},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,o=[this],a=360/t,l=1;l{let r={};const o=e.color;if(o){const a=new c7(o),l=e.dark?a.tint(20).toString():po(a,20);if(e.plain)r=n.cssVarBlock({"bg-color":e.dark?po(a,90):a.tint(90).toString(),"text-color":o,"border-color":e.dark?po(a,50):a.tint(50).toString(),"hover-text-color":`var(${n.cssVarName("color-white")})`,"hover-bg-color":o,"hover-border-color":o,"active-bg-color":l,"active-text-color":`var(${n.cssVarName("color-white")})`,"active-border-color":l}),t.value&&(r[n.cssVarBlockName("disabled-bg-color")]=e.dark?po(a,90):a.tint(90).toString(),r[n.cssVarBlockName("disabled-text-color")]=e.dark?po(a,50):a.tint(50).toString(),r[n.cssVarBlockName("disabled-border-color")]=e.dark?po(a,80):a.tint(80).toString());else{const s=e.dark?po(a,30):a.tint(30).toString(),i=a.isDark()?`var(${n.cssVarName("color-white")})`:`var(${n.cssVarName("color-black")})`;if(r=n.cssVarBlock({"bg-color":o,"text-color":i,"border-color":o,"hover-bg-color":s,"hover-text-color":i,"hover-border-color":s,"active-bg-color":l,"active-border-color":l}),t.value){const u=e.dark?po(a,50):a.tint(50).toString();r[n.cssVarBlockName("disabled-bg-color")]=u,r[n.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${n.cssVarName("color-white")})`,r[n.cssVarBlockName("disabled-border-color")]=u}}}return r})}const f7=se({name:"ElButton"}),p7=se({...f7,props:Id,emits:J9,setup(e,{expose:t,emit:n}){const r=e,o=d7(r),a=Fe("button"),{_ref:l,_size:s,_type:i,_disabled:u,_props:d,shouldAddSpace:f,handleClick:h}=Y9(r,n);return t({ref:l,size:s,type:i,disabled:u,shouldAddSpace:f}),(p,v)=>(x(),ce(Lt(p.tag),Ht({ref_key:"_ref",ref:l},c(d),{class:[c(a).b(),c(a).m(c(i)),c(a).m(c(s)),c(a).is("disabled",c(u)),c(a).is("loading",p.loading),c(a).is("plain",p.plain),c(a).is("round",p.round),c(a).is("circle",p.circle),c(a).is("text",p.text),c(a).is("link",p.link),c(a).is("has-bg",p.bg)],style:c(o),onClick:c(h)}),{default:G(()=>[p.loading?(x(),U(Pe,{key:0},[p.$slots.loading?pe(p.$slots,"loading",{key:0}):(x(),ce(c(nt),{key:1,class:D(c(a).is("loading"))},{default:G(()=>[(x(),ce(Lt(p.loadingIcon)))]),_:1},8,["class"]))],64)):p.icon||p.$slots.icon?(x(),ce(c(nt),{key:1},{default:G(()=>[p.icon?(x(),ce(Lt(p.icon),{key:0})):pe(p.$slots,"icon",{key:1})]),_:3})):ye("v-if",!0),p.$slots.default?(x(),U("span",{key:2,class:D({[c(a).em("text","expand")]:c(f)})},[pe(p.$slots,"default")],2)):ye("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var m7=ze(p7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/button/src/button.vue"]]);const h7={size:Id.size,type:Id.type},v7=se({name:"ElButtonGroup"}),g7=se({...v7,props:h7,setup(e){const t=e;yt(P_,Xt({size:zt(t,"size"),type:zt(t,"type")}));const n=Fe("button");return(r,o)=>(x(),U("div",{class:D(`${c(n).b("group")}`)},[pe(r.$slots,"default")],2))}});var M_=ze(g7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/button/src/button-group.vue"]]);const Qr=Bt(m7,{ButtonGroup:M_});br(M_);var R_={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(no,function(){var n=1e3,r=6e4,o=36e5,a="millisecond",l="second",s="minute",i="hour",u="day",d="week",f="month",h="quarter",p="year",v="date",g="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(A){var M=["th","st","nd","rd"],H=A%100;return"["+A+(M[(H-20)%10]||M[H]||M[0])+"]"}},_=function(A,M,H){var j=String(A);return!j||j.length>=M?A:""+Array(M+1-j.length).join(H)+A},y={s:_,z:function(A){var M=-A.utcOffset(),H=Math.abs(M),j=Math.floor(H/60),V=H%60;return(M<=0?"+":"-")+_(j,2,"0")+":"+_(V,2,"0")},m:function A(M,H){if(M.date()1)return A(I[0])}else{var Y=M.name;k[Y]=M,V=Y}return!j&&V&&(C=V),V||!j&&C},R=function(A,M){if(E(A))return A.clone();var H=typeof M=="object"?M:{};return H.date=A,H.args=arguments,new F(H)},L=y;L.l=S,L.i=E,L.w=function(A,M){return R(A,{locale:M.$L,utc:M.$u,x:M.$x,$offset:M.$offset})};var F=function(){function A(H){this.$L=S(H.locale,null,!0),this.parse(H)}var M=A.prototype;return M.parse=function(H){this.$d=function(j){var V=j.date,X=j.utc;if(V===null)return new Date(NaN);if(L.u(V))return new Date;if(V instanceof Date)return new Date(V);if(typeof V=="string"&&!/Z$/i.test(V)){var I=V.match(w);if(I){var Y=I[2]-1||0,ee=(I[7]||"0").substring(0,3);return X?new Date(Date.UTC(I[1],Y,I[3]||1,I[4]||0,I[5]||0,I[6]||0,ee)):new Date(I[1],Y,I[3]||1,I[4]||0,I[5]||0,I[6]||0,ee)}}return new Date(V)}(H),this.$x=H.x||{},this.init()},M.init=function(){var H=this.$d;this.$y=H.getFullYear(),this.$M=H.getMonth(),this.$D=H.getDate(),this.$W=H.getDay(),this.$H=H.getHours(),this.$m=H.getMinutes(),this.$s=H.getSeconds(),this.$ms=H.getMilliseconds()},M.$utils=function(){return L},M.isValid=function(){return this.$d.toString()!==g},M.isSame=function(H,j){var V=R(H);return this.startOf(j)<=V&&V<=this.endOf(j)},M.isAfter=function(H,j){return R(H)68?1900:2e3)},u=function(g){return function(w){this[g]=+w}},d=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(w){if(!w||w==="Z")return 0;var m=w.match(/([+-]|\d\d)/g),b=60*m[1]+(+m[2]||0);return b===0?0:m[0]==="+"?-b:b}(g)}],f=function(g){var w=s[g];return w&&(w.indexOf?w:w.s.concat(w.f))},h=function(g,w){var m,b=s.meridiem;if(b){for(var _=1;_<=24;_+=1)if(g.indexOf(b(_,0,w))>-1){m=_>12;break}}else m=g===(w?"pm":"PM");return m},p={A:[l,function(g){this.afternoon=h(g,!1)}],a:[l,function(g){this.afternoon=h(g,!0)}],S:[/\d/,function(g){this.milliseconds=100*+g}],SS:[o,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[a,u("seconds")],ss:[a,u("seconds")],m:[a,u("minutes")],mm:[a,u("minutes")],H:[a,u("hours")],h:[a,u("hours")],HH:[a,u("hours")],hh:[a,u("hours")],D:[a,u("day")],DD:[o,u("day")],Do:[l,function(g){var w=s.ordinal,m=g.match(/\d+/);if(this.day=m[0],w)for(var b=1;b<=31;b+=1)w(b).replace(/\[|\]/g,"")===g&&(this.day=b)}],M:[a,u("month")],MM:[o,u("month")],MMM:[l,function(g){var w=f("months"),m=(f("monthsShort")||w.map(function(b){return b.slice(0,3)})).indexOf(g)+1;if(m<1)throw new Error;this.month=m%12||m}],MMMM:[l,function(g){var w=f("months").indexOf(g)+1;if(w<1)throw new Error;this.month=w%12||w}],Y:[/[+-]?\d+/,u("year")],YY:[o,function(g){this.year=i(g)}],YYYY:[/\d{4}/,u("year")],Z:d,ZZ:d};function v(g){var w,m;w=g,m=s&&s.formats;for(var b=(g=w.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(R,L,F){var N=F&&F.toUpperCase();return L||m[F]||n[F]||m[N].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(A,M,H){return M||H.slice(1)})})).match(r),_=b.length,y=0;y<_;y+=1){var C=b[y],k=p[C],E=k&&k[0],S=k&&k[1];b[y]=S?{regex:E,parser:S}:C.replace(/^\[|\]$/g,"")}return function(R){for(var L={},F=0,N=0;F<_;F+=1){var A=b[F];if(typeof A=="string")N+=A.length;else{var M=A.regex,H=A.parser,j=R.slice(N),V=M.exec(j)[0];H.call(L,V),R=R.replace(V,"")}}return function(X){var I=X.afternoon;if(I!==void 0){var Y=X.hours;I?Y<12&&(X.hours+=12):Y===12&&(X.hours=0),delete X.afternoon}}(L),L}}return function(g,w,m){m.p.customParseFormat=!0,g&&g.parseTwoDigitYear&&(i=g.parseTwoDigitYear);var b=w.prototype,_=b.parse;b.parse=function(y){var C=y.date,k=y.utc,E=y.args;this.$u=k;var S=E[1];if(typeof S=="string"){var R=E[2]===!0,L=E[3]===!0,F=R||L,N=E[2];L&&(N=E[2]),s=this.$locale(),!R&&N&&(s=m.Ls[N]),this.$d=function(j,V,X){try{if(["x","X"].indexOf(V)>-1)return new Date((V==="X"?1e3:1)*j);var I=v(V)(j),Y=I.year,ee=I.month,W=I.day,re=I.hours,be=I.minutes,Te=I.seconds,ge=I.milliseconds,J=I.zone,te=new Date,ae=W||(Y||ee?1:te.getDate()),le=Y||te.getFullYear(),me=0;Y&&!ee||(me=ee>0?ee-1:te.getMonth());var P=re||0,$=be||0,T=Te||0,z=ge||0;return J?new Date(Date.UTC(le,me,ae,P,$,T,z+60*J.offset*1e3)):X?new Date(Date.UTC(le,me,ae,P,$,T,z)):new Date(le,me,ae,P,$,T,z)}catch{return new Date("")}}(C,S,k),this.init(),N&&N!==!0&&(this.$L=this.locale(N).$L),F&&C!=this.format(S)&&(this.$d=new Date("")),s={}}else if(S instanceof Array)for(var A=S.length,M=1;M<=A;M+=1){E[1]=S[M-1];var H=m.apply(this,E);if(H.isValid()){this.$d=H.$d,this.$L=H.$L,this.init();break}M===A&&(this.$d=new Date(""))}else _.call(this,y)}}})})(N_);var D_=N_.exports;const _g=["hours","minutes","seconds"],Ld="HH:mm:ss",La="YYYY-MM-DD",b7={date:La,dates:La,week:"gggg[w]ww",year:"YYYY",month:"YYYY-MM",datetime:`${La} ${Ld}`,monthrange:"YYYY-MM",daterange:La,datetimerange:`${La} ${Ld}`},Oc=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),V_=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),B_=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),wg=function(e,t){const n=Yi(e),r=Yi(t);return n&&r?e.getTime()===t.getTime():!n&&!r?e===t:!1},Cg=function(e,t){const n=De(e),r=De(t);return n&&r?e.length!==t.length?!1:e.every((o,a)=>wg(o,t[a])):!n&&!r?wg(e,t):!1},kg=function(e,t,n){const r=F1(t)||t==="x"?Ze(e).locale(n):Ze(e,t).locale(n);return r.isValid()?r:void 0},Sg=function(e,t,n){return F1(t)?e:t==="x"?+e:Ze(e).locale(n).format(t)},Ac=(e,t)=>{var n;const r=[],o=t==null?void 0:t();for(let a=0;a({})},modelValue:{type:Le([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:Le([Date,Array])},defaultTime:{type:Le([Date,Array])},isRange:{type:Boolean,default:!1},...z_,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:{type:Boolean,default:!1},label:{type:String,default:void 0},tabindex:{type:Le([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean}),y7=["id","name","placeholder","value","disabled","readonly"],_7=["id","name","placeholder","value","disabled","readonly"],w7=se({name:"Picker"}),C7=se({...w7,props:$p,emits:["update:modelValue","change","focus","blur","calendar-change","panel-change","visible-change","keydown"],setup(e,{expose:t,emit:n}){const r=e,o=Pu(),{lang:a}=Pt(),l=Fe("date"),s=Fe("input"),i=Fe("range"),{form:u,formItem:d}=er(),f=Re("ElPopperOptions",{}),h=B(),p=B(),v=B(!1),g=B(!1),w=B(null);let m=!1,b=!1;const _=O(()=>[l.b("editor"),l.bm("editor",r.type),s.e("wrapper"),l.is("disabled",W.value),l.is("active",v.value),i.b("editor"),oe?i.bm("editor",oe.value):"",o.class]),y=O(()=>[s.e("icon"),i.e("close-icon"),ae.value?"":i.e("close-icon--hidden")]);$e(v,q=>{q?qe(()=>{q&&(w.value=r.modelValue)}):(he.value=null,qe(()=>{C(r.modelValue)}))});const C=(q,Ie)=>{(Ie||!Cg(q,w.value))&&(n("change",q),r.validateEvent&&(d==null||d.validate("change").catch(et=>void 0)))},k=q=>{if(!Cg(r.modelValue,q)){let Ie;De(q)?Ie=q.map(et=>Sg(et,r.valueFormat,a.value)):q&&(Ie=Sg(q,r.valueFormat,a.value)),n("update:modelValue",q&&Ie,a.value)}},E=q=>{n("keydown",q)},S=O(()=>{if(p.value){const q=Z.value?p.value:p.value.$el;return Array.from(q.querySelectorAll("input"))}return[]}),R=(q,Ie,et)=>{const bt=S.value;!bt.length||(!et||et==="min"?(bt[0].setSelectionRange(q,Ie),bt[0].focus()):et==="max"&&(bt[1].setSelectionRange(q,Ie),bt[1].focus()))},L=()=>{X(!0,!0),qe(()=>{b=!1})},F=(q="",Ie=!1)=>{Ie||(b=!0),v.value=Ie;let et;De(q)?et=q.map(bt=>bt.toDate()):et=q&&q.toDate(),he.value=null,k(et)},N=()=>{g.value=!0},A=()=>{n("visible-change",!0)},M=q=>{(q==null?void 0:q.key)===at.esc&&X(!0,!0)},H=()=>{g.value=!1,v.value=!1,b=!1,n("visible-change",!1)},j=()=>{v.value=!0},V=()=>{v.value=!1},X=(q=!0,Ie=!1)=>{b=Ie;const[et,bt]=c(S);let de=et;!q&&Z.value&&(de=bt),de&&de.focus()},I=q=>{r.readonly||W.value||v.value||b||(v.value=!0,n("focus",q))};let Y;const ee=q=>{const Ie=async()=>{setTimeout(()=>{var et;Y===Ie&&(!(((et=h.value)==null?void 0:et.isFocusInsideContent())&&!m)&&S.value.filter(bt=>bt.contains(document.activeElement)).length===0&&(ke(),v.value=!1,n("blur",q),r.validateEvent&&(d==null||d.validate("blur").catch(bt=>void 0))),m=!1)},0)};Y=Ie,Ie()},W=O(()=>r.disabled||(u==null?void 0:u.disabled)),re=O(()=>{let q;if(me.value?Ce.value.getDefaultValue&&(q=Ce.value.getDefaultValue()):De(r.modelValue)?q=r.modelValue.map(Ie=>kg(Ie,r.valueFormat,a.value)):q=kg(r.modelValue,r.valueFormat,a.value),Ce.value.getRangeAvailableTime){const Ie=Ce.value.getRangeAvailableTime(q);bs(Ie,q)||(q=Ie,k(De(q)?q.map(et=>et.toDate()):q.toDate()))}return De(q)&&q.some(Ie=>!Ie)&&(q=[]),q}),be=O(()=>{if(!Ce.value.panelReady)return"";const q=ne(re.value);return De(he.value)?[he.value[0]||q&&q[0]||"",he.value[1]||q&&q[1]||""]:he.value!==null?he.value:!ge.value&&me.value||!v.value&&me.value?"":q?J.value?q.join(", "):q:""}),Te=O(()=>r.type.includes("time")),ge=O(()=>r.type.startsWith("time")),J=O(()=>r.type==="dates"),te=O(()=>r.prefixIcon||(Te.value?gD:UN)),ae=B(!1),le=q=>{r.readonly||W.value||ae.value&&(q.stopPropagation(),L(),k(null),C(null,!0),ae.value=!1,v.value=!1,Ce.value.handleClear&&Ce.value.handleClear())},me=O(()=>{const{modelValue:q}=r;return!q||De(q)&&!q.filter(Boolean).length}),P=async q=>{var Ie;r.readonly||W.value||(((Ie=q.target)==null?void 0:Ie.tagName)!=="INPUT"||S.value.includes(document.activeElement))&&(v.value=!0)},$=()=>{r.readonly||W.value||!me.value&&r.clearable&&(ae.value=!0)},T=()=>{ae.value=!1},z=q=>{var Ie;r.readonly||W.value||(((Ie=q.touches[0].target)==null?void 0:Ie.tagName)!=="INPUT"||S.value.includes(document.activeElement))&&(v.value=!0)},Z=O(()=>r.type.includes("range")),oe=mn(),_e=O(()=>{var q,Ie;return(Ie=(q=c(h))==null?void 0:q.popperRef)==null?void 0:Ie.contentRef}),we=O(()=>{var q;return c(Z)?c(p):(q=c(p))==null?void 0:q.$el});N0(we,q=>{const Ie=c(_e),et=c(we);Ie&&(q.target===Ie||q.composedPath().includes(Ie))||q.target===et||q.composedPath().includes(et)||(v.value=!1)});const he=B(null),ke=()=>{if(he.value){const q=Me(be.value);q&&ue(q)&&(k(De(q)?q.map(Ie=>Ie.toDate()):q.toDate()),he.value=null)}he.value===""&&(k(null),C(null),he.value=null)},Me=q=>q?Ce.value.parseUserInput(q):null,ne=q=>q?Ce.value.formatToString(q):null,ue=q=>Ce.value.isValidValue(q),ie=async q=>{if(r.readonly||W.value)return;const{code:Ie}=q;if(E(q),Ie===at.esc){v.value===!0&&(v.value=!1,q.preventDefault(),q.stopPropagation());return}if(Ie===at.down&&(Ce.value.handleFocusPicker&&(q.preventDefault(),q.stopPropagation()),v.value===!1&&(v.value=!0,await qe()),Ce.value.handleFocusPicker)){Ce.value.handleFocusPicker();return}if(Ie===at.tab){m=!0;return}if(Ie===at.enter||Ie===at.numpadEnter){(he.value===null||he.value===""||ue(Me(be.value)))&&(ke(),v.value=!1),q.stopPropagation();return}if(he.value){q.stopPropagation();return}Ce.value.handleKeydownInput&&Ce.value.handleKeydownInput(q)},Oe=q=>{he.value=q,v.value||(v.value=!0)},We=q=>{const Ie=q.target;he.value?he.value=[Ie.value,he.value[1]]:he.value=[Ie.value,null]},Xe=q=>{const Ie=q.target;he.value?he.value=[he.value[0],Ie.value]:he.value=[null,Ie.value]},fe=()=>{var q;const Ie=he.value,et=Me(Ie&&Ie[0]),bt=c(re);if(et&&et.isValid()){he.value=[ne(et),((q=be.value)==null?void 0:q[1])||null];const de=[et,bt&&(bt[1]||null)];ue(de)&&(k(de),he.value=null)}},ve=()=>{var q;const Ie=c(he),et=Me(Ie&&Ie[1]),bt=c(re);if(et&&et.isValid()){he.value=[((q=c(be))==null?void 0:q[0])||null,ne(et)];const de=[bt&&bt[0],et];ue(de)&&(k(de),he.value=null)}},Ce=B({}),Ye=q=>{Ce.value[q[0]]=q[1],Ce.value.panelReady=!0},Se=q=>{n("calendar-change",q)},Ae=(q,Ie,et)=>{n("panel-change",q,Ie,et)};return yt("EP_PICKER_BASE",{props:r}),t({focus:X,handleFocusInput:I,handleBlurInput:ee,handleOpen:j,handleClose:V,onPick:F}),(q,Ie)=>(x(),ce(c(Ca),Ht({ref_key:"refPopper",ref:h,visible:v.value,effect:"light",pure:"",trigger:"click"},q.$attrs,{role:"dialog",teleported:"",transition:`${c(l).namespace.value}-zoom-in-top`,"popper-class":[`${c(l).namespace.value}-picker__popper`,q.popperClass],"popper-options":c(f),"fallback-placements":["bottom","top","right","left"],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:N,onShow:A,onHide:H}),{default:G(()=>[c(Z)?(x(),U("div",{key:1,ref_key:"inputRef",ref:p,class:D(c(_)),style:Qe(q.$attrs.style),onClick:I,onMouseenter:$,onMouseleave:T,onTouchstart:z,onKeydown:ie},[c(te)?(x(),ce(c(nt),{key:0,class:D([c(s).e("icon"),c(i).e("icon")]),onMousedown:$t(P,["prevent"]),onTouchstart:z},{default:G(()=>[(x(),ce(Lt(c(te))))]),_:1},8,["class","onMousedown"])):ye("v-if",!0),K("input",{id:q.id&&q.id[0],autocomplete:"off",name:q.name&&q.name[0],placeholder:q.startPlaceholder,value:c(be)&&c(be)[0],disabled:c(W),readonly:!q.editable||q.readonly,class:D(c(i).b("input")),onMousedown:P,onInput:We,onChange:fe,onFocus:I,onBlur:ee},null,42,y7),pe(q.$slots,"range-separator",{},()=>[K("span",{class:D(c(i).b("separator"))},Ee(q.rangeSeparator),3)]),K("input",{id:q.id&&q.id[1],autocomplete:"off",name:q.name&&q.name[1],placeholder:q.endPlaceholder,value:c(be)&&c(be)[1],disabled:c(W),readonly:!q.editable||q.readonly,class:D(c(i).b("input")),onMousedown:P,onFocus:I,onBlur:ee,onInput:Xe,onChange:ve},null,42,_7),q.clearIcon?(x(),ce(c(nt),{key:1,class:D(c(y)),onClick:le},{default:G(()=>[(x(),ce(Lt(q.clearIcon)))]),_:1},8,["class"])):ye("v-if",!0)],38)):(x(),ce(c(Kn),{key:0,id:q.id,ref_key:"inputRef",ref:p,"container-role":"combobox","model-value":c(be),name:q.name,size:c(oe),disabled:c(W),placeholder:q.placeholder,class:D([c(l).b("editor"),c(l).bm("editor",q.type),q.$attrs.class]),style:Qe(q.$attrs.style),readonly:!q.editable||q.readonly||c(J)||q.type==="week",label:q.label,tabindex:q.tabindex,"validate-event":!1,onInput:Oe,onFocus:I,onBlur:ee,onKeydown:ie,onChange:ke,onMousedown:P,onMouseenter:$,onMouseleave:T,onTouchstart:z,onClick:Ie[0]||(Ie[0]=$t(()=>{},["stop"]))},{prefix:G(()=>[c(te)?(x(),ce(c(nt),{key:0,class:D(c(s).e("icon")),onMousedown:$t(P,["prevent"]),onTouchstart:z},{default:G(()=>[(x(),ce(Lt(c(te))))]),_:1},8,["class","onMousedown"])):ye("v-if",!0)]),suffix:G(()=>[ae.value&&q.clearIcon?(x(),ce(c(nt),{key:0,class:D(`${c(s).e("icon")} clear-icon`),onClick:$t(le,["stop"])},{default:G(()=>[(x(),ce(Lt(q.clearIcon)))]),_:1},8,["class","onClick"])):ye("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","label","tabindex","onKeydown"]))]),content:G(()=>[pe(q.$slots,"default",{visible:v.value,actualVisible:g.value,parsedValue:c(re),format:q.format,unlinkPanels:q.unlinkPanels,type:q.type,defaultValue:q.defaultValue,onPick:F,onSelectRange:R,onSetPickerOption:Ye,onCalendarChange:Se,onPanelChange:Ae,onKeydown:M,onMousedown:Ie[1]||(Ie[1]=$t(()=>{},["stop"]))})]),_:3},16,["visible","transition","popper-class","popper-options"]))}});var j_=ze(C7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/common/picker.vue"]]);const k7=je({...H_,datetimeRole:String,parsedValue:{type:Le(Object)}}),W_=({getAvailableHours:e,getAvailableMinutes:t,getAvailableSeconds:n})=>{const r=(l,s,i,u)=>{const d={hour:e,minute:t,second:n};let f=l;return["hour","minute","second"].forEach(h=>{if(d[h]){let p;const v=d[h];switch(h){case"minute":{p=v(f.hour(),s,u);break}case"second":{p=v(f.hour(),f.minute(),s,u);break}default:{p=v(s,u);break}}if((p==null?void 0:p.length)&&!p.includes(f[h]())){const g=i?0:p.length-1;f=f[h](p[g])}}}),f},o={};return{timePickerOptions:o,getAvailableTime:r,onSetOption:([l,s])=>{o[l]=s}}},Ic=e=>{const t=(r,o)=>r||o,n=r=>r!==!0;return e.map(t).filter(n)},U_=(e,t,n)=>({getHoursList:(l,s)=>Ac(24,e&&(()=>e==null?void 0:e(l,s))),getMinutesList:(l,s,i)=>Ac(60,t&&(()=>t==null?void 0:t(l,s,i))),getSecondsList:(l,s,i,u)=>Ac(60,n&&(()=>n==null?void 0:n(l,s,i,u)))}),K_=(e,t,n)=>{const{getHoursList:r,getMinutesList:o,getSecondsList:a}=U_(e,t,n);return{getAvailableHours:(u,d)=>Ic(r(u,d)),getAvailableMinutes:(u,d,f)=>Ic(o(u,d,f)),getAvailableSeconds:(u,d,f,h)=>Ic(a(u,d,f,h))}},q_=e=>{const t=B(e.parsedValue);return $e(()=>e.visible,n=>{n||(t.value=e.parsedValue)}),t},vo=new Map;let Eg;xt&&(document.addEventListener("mousedown",e=>Eg=e),document.addEventListener("mouseup",e=>{for(const t of vo.values())for(const{documentHandler:n}of t)n(e,Eg)}));function $g(e,t){let n=[];return Array.isArray(t.arg)?n=t.arg:ua(t.arg)&&n.push(t.arg),function(r,o){const a=t.instance.popperRef,l=r.target,s=o==null?void 0:o.target,i=!t||!t.instance,u=!l||!s,d=e.contains(l)||e.contains(s),f=e===l,h=n.length&&n.some(v=>v==null?void 0:v.contains(l))||n.length&&n.includes(s),p=a&&(a.contains(l)||a.contains(s));i||u||d||f||h||p||t.value(r,o)}}const il={beforeMount(e,t){vo.has(e)||vo.set(e,[]),vo.get(e).push({documentHandler:$g(e,t),bindingFn:t.value})},updated(e,t){vo.has(e)||vo.set(e,[]);const n=vo.get(e),r=n.findIndex(a=>a.bindingFn===t.oldValue),o={documentHandler:$g(e,t),bindingFn:t.value};r>=0?n.splice(r,1,o):n.push(o)},unmounted(e){vo.delete(e)}},S7=100,E7=600,wu={beforeMount(e,t){const n=t.value,{interval:r=S7,delay:o=E7}=Ke(n)?{}:n;let a,l;const s=()=>Ke(n)?n():n.handler(),i=()=>{l&&(clearTimeout(l),l=void 0),a&&(clearInterval(a),a=void 0)};e.addEventListener("mousedown",u=>{u.button===0&&(i(),s(),document.addEventListener("mouseup",()=>i(),{once:!0}),l=setTimeout(()=>{a=setInterval(()=>{s()},r)},o))})}};var Tg=!1,Xo,Md,Rd,Bi,zi,Y_,Hi,Nd,Dd,Fd,G_,Vd,Bd,X_,J_;function En(){if(!Tg){Tg=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),n=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(Vd=/\b(iPhone|iP[ao]d)/.exec(e),Bd=/\b(iP[ao]d)/.exec(e),Fd=/Android/i.exec(e),X_=/FBAN\/\w+;/i.exec(e),J_=/Mobile/i.exec(e),G_=!!/Win64/.exec(e),t){Xo=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,Xo&&document&&document.documentMode&&(Xo=document.documentMode);var r=/(?:Trident\/(\d+.\d+))/.exec(e);Y_=r?parseFloat(r[1])+4:Xo,Md=t[2]?parseFloat(t[2]):NaN,Rd=t[3]?parseFloat(t[3]):NaN,Bi=t[4]?parseFloat(t[4]):NaN,Bi?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),zi=t&&t[1]?parseFloat(t[1]):NaN):zi=NaN}else Xo=Md=Rd=zi=Bi=NaN;if(n){if(n[1]){var o=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);Hi=o?parseFloat(o[1].replace("_",".")):!0}else Hi=!1;Nd=!!n[2],Dd=!!n[3]}else Hi=Nd=Dd=!1}}var zd={ie:function(){return En()||Xo},ieCompatibilityMode:function(){return En()||Y_>Xo},ie64:function(){return zd.ie()&&G_},firefox:function(){return En()||Md},opera:function(){return En()||Rd},webkit:function(){return En()||Bi},safari:function(){return zd.webkit()},chrome:function(){return En()||zi},windows:function(){return En()||Nd},osx:function(){return En()||Hi},linux:function(){return En()||Dd},iphone:function(){return En()||Vd},mobile:function(){return En()||Vd||Bd||Fd||J_},nativeApp:function(){return En()||X_},android:function(){return En()||Fd},ipad:function(){return En()||Bd}},$7=zd,Ci=!!(typeof window<"u"&&window.document&&window.document.createElement),T7={canUseDOM:Ci,canUseWorkers:typeof Worker<"u",canUseEventListeners:Ci&&!!(window.addEventListener||window.attachEvent),canUseViewport:Ci&&!!window.screen,isInWorker:!Ci},Z_=T7,Q_;Z_.canUseDOM&&(Q_=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function x7(e,t){if(!Z_.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var o=document.createElement("div");o.setAttribute(n,"return;"),r=typeof o[n]=="function"}return!r&&Q_&&e==="wheel"&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var O7=x7,xg=10,Og=40,Ag=800;function ew(e){var t=0,n=0,r=0,o=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*xg,o=n*xg,"deltaY"in e&&(o=e.deltaY),"deltaX"in e&&(r=e.deltaX),(r||o)&&e.deltaMode&&(e.deltaMode==1?(r*=Og,o*=Og):(r*=Ag,o*=Ag)),r&&!t&&(t=r<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:o}}ew.getEventType=function(){return $7.firefox()?"DOMMouseScroll":O7("wheel")?"wheel":"mousewheel"};var A7=ew;/** -* Checks if an event is supported in the current execution environment. -* -* NOTE: This will not work correctly for non-generic events such as `change`, -* `reset`, `load`, `error`, and `select`. -* -* Borrows from Modernizr. -* -* @param {string} eventNameSuffix Event name, e.g. "click". -* @param {?boolean} capture Check if the capture phase is supported. -* @return {boolean} True if the event is supported. -* @internal -* @license Modernizr 3.0.0pre (Custom Build) | MIT -*/const I7=function(e,t){if(e&&e.addEventListener){const n=function(r){const o=A7(r);t&&Reflect.apply(t,this,[r,o])};e.addEventListener("wheel",n,{passive:!0})}},P7={beforeMount(e,t){I7(e,t.value)}},L7=je({role:{type:String,required:!0},spinnerDate:{type:Le(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:Le(String),default:""},...z_}),M7=["onClick"],R7=["onMouseenter"],N7=se({__name:"basic-time-spinner",props:L7,emits:["change","select-range","set-option"],setup(e,{emit:t}){const n=e,r=Fe("time"),{getHoursList:o,getMinutesList:a,getSecondsList:l}=U_(n.disabledHours,n.disabledMinutes,n.disabledSeconds);let s=!1;const i=B(),u=B(),d=B(),f=B(),h={hours:u,minutes:d,seconds:f},p=O(()=>n.showSeconds?_g:_g.slice(0,2)),v=O(()=>{const{spinnerDate:I}=n,Y=I.hour(),ee=I.minute(),W=I.second();return{hours:Y,minutes:ee,seconds:W}}),g=O(()=>{const{hours:I,minutes:Y}=c(v);return{hours:o(n.role),minutes:a(I,n.role),seconds:l(I,Y,n.role)}}),w=O(()=>{const{hours:I,minutes:Y,seconds:ee}=c(v);return{hours:Oc(I,23),minutes:Oc(Y,59),seconds:Oc(ee,59)}}),m=Or(I=>{s=!1,y(I)},200),b=I=>{if(!!!n.amPmMode)return"";const ee=n.amPmMode==="A";let W=I<12?" am":" pm";return ee&&(W=W.toUpperCase()),W},_=I=>{let Y;switch(I){case"hours":Y=[0,2];break;case"minutes":Y=[3,5];break;case"seconds":Y=[6,8];break}const[ee,W]=Y;t("select-range",ee,W),i.value=I},y=I=>{E(I,c(v)[I])},C=()=>{y("hours"),y("minutes"),y("seconds")},k=I=>I.querySelector(`.${r.namespace.value}-scrollbar__wrap`),E=(I,Y)=>{if(n.arrowControl)return;const ee=c(h[I]);ee&&ee.$el&&(k(ee.$el).scrollTop=Math.max(0,Y*S(I)))},S=I=>{const Y=c(h[I]),ee=Y==null?void 0:Y.$el.querySelector("li");return ee&&Number.parseFloat(B1(ee,"height"))||0},R=()=>{F(1)},L=()=>{F(-1)},F=I=>{i.value||_("hours");const Y=i.value,ee=c(v)[Y],W=i.value==="hours"?24:60,re=N(Y,ee,I,W);A(Y,re),E(Y,re),qe(()=>_(Y))},N=(I,Y,ee,W)=>{let re=(Y+ee+W)%W;const be=c(g)[I];for(;be[re]&&re!==Y;)re=(re+ee+W)%W;return re},A=(I,Y)=>{if(c(g)[I][Y])return;const{hours:re,minutes:be,seconds:Te}=c(v);let ge;switch(I){case"hours":ge=n.spinnerDate.hour(Y).minute(be).second(Te);break;case"minutes":ge=n.spinnerDate.hour(re).minute(Y).second(Te);break;case"seconds":ge=n.spinnerDate.hour(re).minute(be).second(Y);break}t("change",ge)},M=(I,{value:Y,disabled:ee})=>{ee||(A(I,Y),_(I),E(I,Y))},H=I=>{s=!0,m(I);const Y=Math.min(Math.round((k(c(h[I]).$el).scrollTop-(j(I)*.5-10)/S(I)+3)/S(I)),I==="hours"?23:59);A(I,Y)},j=I=>c(h[I]).$el.offsetHeight,V=()=>{const I=Y=>{const ee=c(h[Y]);ee&&ee.$el&&(k(ee.$el).onscroll=()=>{H(Y)})};I("hours"),I("minutes"),I("seconds")};dt(()=>{qe(()=>{!n.arrowControl&&V(),C(),n.role==="start"&&_("hours")})});const X=(I,Y)=>{h[Y].value=I};return t("set-option",[`${n.role}_scrollDown`,F]),t("set-option",[`${n.role}_emitSelectRange`,_]),$e(()=>n.spinnerDate,()=>{s||C()}),(I,Y)=>(x(),U("div",{class:D([c(r).b("spinner"),{"has-seconds":I.showSeconds}])},[I.arrowControl?ye("v-if",!0):(x(!0),U(Pe,{key:0},it(c(p),ee=>(x(),ce(c(yl),{key:ee,ref_for:!0,ref:W=>X(W,ee),class:D(c(r).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":c(r).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:W=>_(ee),onMousemove:W=>y(ee)},{default:G(()=>[(x(!0),U(Pe,null,it(c(g)[ee],(W,re)=>(x(),U("li",{key:re,class:D([c(r).be("spinner","item"),c(r).is("active",re===c(v)[ee]),c(r).is("disabled",W)]),onClick:be=>M(ee,{value:re,disabled:W})},[ee==="hours"?(x(),U(Pe,{key:0},[Je(Ee(("0"+(I.amPmMode?re%12||12:re)).slice(-2))+Ee(b(re)),1)],64)):(x(),U(Pe,{key:1},[Je(Ee(("0"+re).slice(-2)),1)],64))],10,M7))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),I.arrowControl?(x(!0),U(Pe,{key:1},it(c(p),ee=>(x(),U("div",{key:ee,class:D([c(r).be("spinner","wrapper"),c(r).is("arrow")]),onMouseenter:W=>_(ee)},[vt((x(),ce(c(nt),{class:D(["arrow-up",c(r).be("spinner","arrow")])},{default:G(()=>[Q(c(cp))]),_:1},8,["class"])),[[c(wu),L]]),vt((x(),ce(c(nt),{class:D(["arrow-down",c(r).be("spinner","arrow")])},{default:G(()=>[Q(c(vl))]),_:1},8,["class"])),[[c(wu),R]]),K("ul",{class:D(c(r).be("spinner","list"))},[(x(!0),U(Pe,null,it(c(w)[ee],(W,re)=>(x(),U("li",{key:re,class:D([c(r).be("spinner","item"),c(r).is("active",W===c(v)[ee]),c(r).is("disabled",c(g)[ee][W])])},[typeof W=="number"?(x(),U(Pe,{key:0},[ee==="hours"?(x(),U(Pe,{key:0},[Je(Ee(("0"+(I.amPmMode?W%12||12:W)).slice(-2))+Ee(b(W)),1)],64)):(x(),U(Pe,{key:1},[Je(Ee(("0"+W).slice(-2)),1)],64))],64)):ye("v-if",!0)],2))),128))],2)],42,R7))),128)):ye("v-if",!0)],2))}});var Hd=ze(N7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue"]]);const D7=se({__name:"panel-time-pick",props:k7,emits:["pick","select-range","set-picker-option"],setup(e,{emit:t}){const n=e,r=Re("EP_PICKER_BASE"),{arrowControl:o,disabledHours:a,disabledMinutes:l,disabledSeconds:s,defaultValue:i}=r.props,{getAvailableHours:u,getAvailableMinutes:d,getAvailableSeconds:f}=K_(a,l,s),h=Fe("time"),{t:p,lang:v}=Pt(),g=B([0,2]),w=q_(n),m=O(()=>Er(n.actualVisible)?`${h.namespace.value}-zoom-in-top`:""),b=O(()=>n.format.includes("ss")),_=O(()=>n.format.includes("A")?"A":n.format.includes("a")?"a":""),y=X=>{const I=Ze(X).locale(v.value),Y=M(I);return I.isSame(Y)},C=()=>{t("pick",w.value,!1)},k=(X=!1,I=!1)=>{I||t("pick",n.parsedValue,X)},E=X=>{if(!n.visible)return;const I=M(X).millisecond(0);t("pick",I,!0)},S=(X,I)=>{t("select-range",X,I),g.value=[X,I]},R=X=>{const I=[0,3].concat(b.value?[6]:[]),Y=["hours","minutes"].concat(b.value?["seconds"]:[]),W=(I.indexOf(g.value[0])+X+I.length)%I.length;F.start_emitSelectRange(Y[W])},L=X=>{const I=X.code,{left:Y,right:ee,up:W,down:re}=at;if([Y,ee].includes(I)){R(I===Y?-1:1),X.preventDefault();return}if([W,re].includes(I)){const be=I===W?-1:1;F.start_scrollDown(be),X.preventDefault();return}},{timePickerOptions:F,onSetOption:N,getAvailableTime:A}=W_({getAvailableHours:u,getAvailableMinutes:d,getAvailableSeconds:f}),M=X=>A(X,n.datetimeRole||"",!0),H=X=>X?Ze(X,n.format).locale(v.value):null,j=X=>X?X.format(n.format):null,V=()=>Ze(i).locale(v.value);return t("set-picker-option",["isValidValue",y]),t("set-picker-option",["formatToString",j]),t("set-picker-option",["parseUserInput",H]),t("set-picker-option",["handleKeydownInput",L]),t("set-picker-option",["getRangeAvailableTime",M]),t("set-picker-option",["getDefaultValue",V]),(X,I)=>(x(),ce(Mn,{name:c(m)},{default:G(()=>[X.actualVisible||X.visible?(x(),U("div",{key:0,class:D(c(h).b("panel"))},[K("div",{class:D([c(h).be("panel","content"),{"has-seconds":c(b)}])},[Q(Hd,{ref:"spinner",role:X.datetimeRole||"start","arrow-control":c(o),"show-seconds":c(b),"am-pm-mode":c(_),"spinner-date":X.parsedValue,"disabled-hours":c(a),"disabled-minutes":c(l),"disabled-seconds":c(s),onChange:E,onSetOption:c(N),onSelectRange:S},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),K("div",{class:D(c(h).be("panel","footer"))},[K("button",{type:"button",class:D([c(h).be("panel","btn"),"cancel"]),onClick:C},Ee(c(p)("el.datepicker.cancel")),3),K("button",{type:"button",class:D([c(h).be("panel","btn"),"confirm"]),onClick:I[0]||(I[0]=Y=>k())},Ee(c(p)("el.datepicker.confirm")),3)],2)],2)):ye("v-if",!0)]),_:1},8,["name"]))}});var Cu=ze(D7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"]]);const F7=je({...H_,parsedValue:{type:Le(Array)}}),V7=["disabled"],B7=se({__name:"panel-time-range",props:F7,emits:["pick","select-range","set-picker-option"],setup(e,{emit:t}){const n=e,r=(me,P)=>{const $=[];for(let T=me;T<=P;T++)$.push(T);return $},{t:o,lang:a}=Pt(),l=Fe("time"),s=Fe("picker"),i=Re("EP_PICKER_BASE"),{arrowControl:u,disabledHours:d,disabledMinutes:f,disabledSeconds:h,defaultValue:p}=i.props,v=O(()=>[l.be("range-picker","body"),l.be("panel","content"),l.is("arrow",u),y.value?"has-seconds":""]),g=O(()=>[l.be("range-picker","body"),l.be("panel","content"),l.is("arrow",u),y.value?"has-seconds":""]),w=O(()=>n.parsedValue[0]),m=O(()=>n.parsedValue[1]),b=q_(n),_=()=>{t("pick",b.value,!1)},y=O(()=>n.format.includes("ss")),C=O(()=>n.format.includes("A")?"A":n.format.includes("a")?"a":""),k=(me=!1)=>{t("pick",[w.value,m.value],me)},E=me=>{L(me.millisecond(0),m.value)},S=me=>{L(w.value,me.millisecond(0))},R=me=>{const P=me.map(T=>Ze(T).locale(a.value)),$=ee(P);return P[0].isSame($[0])&&P[1].isSame($[1])},L=(me,P)=>{t("pick",[me,P],!0)},F=O(()=>w.value>m.value),N=B([0,2]),A=(me,P)=>{t("select-range",me,P,"min"),N.value=[me,P]},M=O(()=>y.value?11:8),H=(me,P)=>{t("select-range",me,P,"max");const $=c(M);N.value=[me+$,P+$]},j=me=>{const P=y.value?[0,3,6,11,14,17]:[0,3,8,11],$=["hours","minutes"].concat(y.value?["seconds"]:[]),z=(P.indexOf(N.value[0])+me+P.length)%P.length,Z=P.length/2;z{const P=me.code,{left:$,right:T,up:z,down:Z}=at;if([$,T].includes(P)){j(P===$?-1:1),me.preventDefault();return}if([z,Z].includes(P)){const oe=P===z?-1:1,_e=N.value[0]{const $=d?d(me):[],T=me==="start",Z=(P||(T?m.value:w.value)).hour(),oe=T?r(Z+1,23):r(0,Z-1);return Cc($,oe)},I=(me,P,$)=>{const T=f?f(me,P):[],z=P==="start",Z=$||(z?m.value:w.value),oe=Z.hour();if(me!==oe)return T;const _e=Z.minute(),we=z?r(_e+1,59):r(0,_e-1);return Cc(T,we)},Y=(me,P,$,T)=>{const z=h?h(me,P,$):[],Z=$==="start",oe=T||(Z?m.value:w.value),_e=oe.hour(),we=oe.minute();if(me!==_e||P!==we)return z;const he=oe.second(),ke=Z?r(he+1,59):r(0,he-1);return Cc(z,ke)},ee=([me,P])=>[ge(me,"start",!0,P),ge(P,"end",!1,me)],{getAvailableHours:W,getAvailableMinutes:re,getAvailableSeconds:be}=K_(X,I,Y),{timePickerOptions:Te,getAvailableTime:ge,onSetOption:J}=W_({getAvailableHours:W,getAvailableMinutes:re,getAvailableSeconds:be}),te=me=>me?De(me)?me.map(P=>Ze(P,n.format).locale(a.value)):Ze(me,n.format).locale(a.value):null,ae=me=>me?De(me)?me.map(P=>P.format(n.format)):me.format(n.format):null,le=()=>{if(De(p))return p.map(P=>Ze(P).locale(a.value));const me=Ze(p).locale(a.value);return[me,me.add(60,"m")]};return t("set-picker-option",["formatToString",ae]),t("set-picker-option",["parseUserInput",te]),t("set-picker-option",["isValidValue",R]),t("set-picker-option",["handleKeydownInput",V]),t("set-picker-option",["getDefaultValue",le]),t("set-picker-option",["getRangeAvailableTime",ee]),(me,P)=>me.actualVisible?(x(),U("div",{key:0,class:D([c(l).b("range-picker"),c(s).b("panel")])},[K("div",{class:D(c(l).be("range-picker","content"))},[K("div",{class:D(c(l).be("range-picker","cell"))},[K("div",{class:D(c(l).be("range-picker","header"))},Ee(c(o)("el.datepicker.startTime")),3),K("div",{class:D(c(v))},[Q(Hd,{ref:"minSpinner",role:"start","show-seconds":c(y),"am-pm-mode":c(C),"arrow-control":c(u),"spinner-date":c(w),"disabled-hours":X,"disabled-minutes":I,"disabled-seconds":Y,onChange:E,onSetOption:c(J),onSelectRange:A},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),K("div",{class:D(c(l).be("range-picker","cell"))},[K("div",{class:D(c(l).be("range-picker","header"))},Ee(c(o)("el.datepicker.endTime")),3),K("div",{class:D(c(g))},[Q(Hd,{ref:"maxSpinner",role:"end","show-seconds":c(y),"am-pm-mode":c(C),"arrow-control":c(u),"spinner-date":c(m),"disabled-hours":X,"disabled-minutes":I,"disabled-seconds":Y,onChange:S,onSetOption:c(J),onSelectRange:H},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),K("div",{class:D(c(l).be("panel","footer"))},[K("button",{type:"button",class:D([c(l).be("panel","btn"),"cancel"]),onClick:P[0]||(P[0]=$=>_())},Ee(c(o)("el.datepicker.cancel")),3),K("button",{type:"button",class:D([c(l).be("panel","btn"),"confirm"]),disabled:c(F),onClick:P[1]||(P[1]=$=>k())},Ee(c(o)("el.datepicker.confirm")),11,V7)],2)],2)):ye("v-if",!0)}});var z7=ze(B7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-range.vue"]]);Ze.extend(D_);var H7=se({name:"ElTimePicker",install:null,props:{...$p,isRange:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,t){const n=B(),[r,o]=e.isRange?["timerange",z7]:["time",Cu],a=l=>t.emit("update:modelValue",l);return yt("ElPopperOptions",e.popperOptions),t.expose({focus:l=>{var s;(s=n.value)==null||s.handleFocusInput(l)},blur:l=>{var s;(s=n.value)==null||s.handleBlurInput(l)},handleOpen:()=>{var l;(l=n.value)==null||l.handleOpen()},handleClose:()=>{var l;(l=n.value)==null||l.handleClose()}}),()=>{var l;const s=(l=e.format)!=null?l:Ld;return Q(j_,Ht(e,{ref:n,type:r,format:s,"onUpdate:modelValue":a}),{default:i=>Q(o,i,null)})}}});const ji=H7;ji.install=e=>{e.component(ji.name,ji)};const j7=ji;var tw={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(no,function(){return function(n,r,o){var a=r.prototype,l=function(f){return f&&(f.indexOf?f:f.s)},s=function(f,h,p,v,g){var w=f.name?f:f.$locale(),m=l(w[h]),b=l(w[p]),_=m||b.map(function(C){return C.slice(0,v)});if(!g)return _;var y=w.weekStart;return _.map(function(C,k){return _[(k+(y||0))%7]})},i=function(){return o.Ls[o.locale()]},u=function(f,h){return f.formats[h]||function(p){return p.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(v,g,w){return g||w.slice(1)})}(f.formats[h.toUpperCase()])},d=function(){var f=this;return{months:function(h){return h?h.format("MMMM"):s(f,"months")},monthsShort:function(h){return h?h.format("MMM"):s(f,"monthsShort","months",3)},firstDayOfWeek:function(){return f.$locale().weekStart||0},weekdays:function(h){return h?h.format("dddd"):s(f,"weekdays")},weekdaysMin:function(h){return h?h.format("dd"):s(f,"weekdaysMin","weekdays",2)},weekdaysShort:function(h){return h?h.format("ddd"):s(f,"weekdaysShort","weekdays",3)},longDateFormat:function(h){return u(f.$locale(),h)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};a.localeData=function(){return d.bind(this)()},o.localeData=function(){var f=i();return{firstDayOfWeek:function(){return f.weekStart||0},weekdays:function(){return o.weekdays()},weekdaysShort:function(){return o.weekdaysShort()},weekdaysMin:function(){return o.weekdaysMin()},months:function(){return o.months()},monthsShort:function(){return o.monthsShort()},longDateFormat:function(h){return u(f,h)},meridiem:f.meridiem,ordinal:f.ordinal}},o.months=function(){return s(i(),"months")},o.monthsShort=function(){return s(i(),"monthsShort","months",3)},o.weekdays=function(f){return s(i(),"weekdays",null,null,f)},o.weekdaysShort=function(f){return s(i(),"weekdaysShort","weekdays",3,f)},o.weekdaysMin=function(f){return s(i(),"weekdaysMin","weekdays",2,f)}}})})(tw);var W7=tw.exports;const U7=je({header:{type:String,default:""},bodyStyle:{type:Le([String,Object,Array]),default:""},shadow:{type:String,values:["always","hover","never"],default:"always"}}),K7=se({name:"ElCard"}),q7=se({...K7,props:U7,setup(e){const t=Fe("card");return(n,r)=>(x(),U("div",{class:D([c(t).b(),c(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?(x(),U("div",{key:0,class:D(c(t).e("header"))},[pe(n.$slots,"header",{},()=>[Je(Ee(n.header),1)])],2)):ye("v-if",!0),K("div",{class:D(c(t).e("body")),style:Qe(n.bodyStyle)},[pe(n.$slots,"default")],6)],2))}});var Y7=ze(q7,[["__file","/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue"]]);const G7=Bt(Y7),nw={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object]},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},controls:{type:String,default:void 0},border:Boolean,size:Hn,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0}},rw={[Ct]:e=>Ge(e)||ct(e)||_n(e),change:e=>Ge(e)||ct(e)||_n(e)},_l=Symbol("checkboxGroupContextKey"),X7=({model:e,isChecked:t})=>{const n=Re(_l,void 0),r=O(()=>{var a,l;const s=(a=n==null?void 0:n.max)==null?void 0:a.value,i=(l=n==null?void 0:n.min)==null?void 0:l.value;return!Er(s)&&e.value.length>=s&&!t.value||!Er(i)&&e.value.length<=i&&t.value});return{isDisabled:Fo(O(()=>(n==null?void 0:n.disabled.value)||r.value)),isLimitDisabled:r}},J7=(e,{model:t,isLimitExceeded:n,hasOwnLabel:r,isDisabled:o,isLabeledByFormItem:a})=>{const l=Re(_l,void 0),{formItem:s}=er(),{emit:i}=lt();function u(v){var g,w;return v===e.trueLabel||v===!0?(g=e.trueLabel)!=null?g:!0:(w=e.falseLabel)!=null?w:!1}function d(v,g){i("change",u(v),g)}function f(v){if(n.value)return;const g=v.target;i("change",u(g.checked),v)}async function h(v){n.value||!r.value&&!o.value&&a.value&&(v.composedPath().some(m=>m.tagName==="LABEL")||(t.value=u([!1,e.falseLabel].includes(t.value)),await qe(),d(t.value,v)))}const p=O(()=>(l==null?void 0:l.validateEvent)||e.validateEvent);return $e(()=>e.modelValue,()=>{p.value&&(s==null||s.validate("change").catch(v=>void 0))}),{handleChange:f,onClickRoot:h}},Z7=e=>{const t=B(!1),{emit:n}=lt(),r=Re(_l,void 0),o=O(()=>Er(r)===!1),a=B(!1);return{model:O({get(){var s,i;return o.value?(s=r==null?void 0:r.modelValue)==null?void 0:s.value:(i=e.modelValue)!=null?i:t.value},set(s){var i,u;o.value&&De(s)?(a.value=((i=r==null?void 0:r.max)==null?void 0:i.value)!==void 0&&s.length>(r==null?void 0:r.max.value),a.value===!1&&((u=r==null?void 0:r.changeEvent)==null||u.call(r,s))):(n(Ct,s),t.value=s)}}),isGroup:o,isLimitExceeded:a}},Q7=(e,t,{model:n})=>{const r=Re(_l,void 0),o=B(!1),a=O(()=>{const u=n.value;return _n(u)?u:De(u)?ht(e.label)?u.map(gt).some(d=>bs(d,e.label)):u.map(gt).includes(e.label):u!=null?u===e.trueLabel:!!u}),l=mn(O(()=>{var u;return(u=r==null?void 0:r.size)==null?void 0:u.value}),{prop:!0}),s=mn(O(()=>{var u;return(u=r==null?void 0:r.size)==null?void 0:u.value})),i=O(()=>!!(t.default||e.label));return{checkboxButtonSize:l,isChecked:a,isFocused:o,checkboxSize:s,hasOwnLabel:i}},ez=(e,{model:t})=>{function n(){De(t.value)&&!t.value.includes(e.label)?t.value.push(e.label):t.value=e.trueLabel||!0}e.checked&&n()},ow=(e,t)=>{const{formItem:n}=er(),{model:r,isGroup:o,isLimitExceeded:a}=Z7(e),{isFocused:l,isChecked:s,checkboxButtonSize:i,checkboxSize:u,hasOwnLabel:d}=Q7(e,t,{model:r}),{isDisabled:f}=X7({model:r,isChecked:s}),{inputId:h,isLabeledByFormItem:p}=wa(e,{formItemContext:n,disableIdGeneration:d,disableIdManagement:o}),{handleChange:v,onClickRoot:g}=J7(e,{model:r,isLimitExceeded:a,hasOwnLabel:d,isDisabled:f,isLabeledByFormItem:p});return ez(e,{model:r}),{inputId:h,isLabeledByFormItem:p,isChecked:s,isDisabled:f,isFocused:l,checkboxButtonSize:i,checkboxSize:u,hasOwnLabel:d,model:r,handleChange:v,onClickRoot:g}},tz=["tabindex","role","aria-checked"],nz=["id","aria-hidden","name","tabindex","disabled","true-value","false-value"],rz=["id","aria-hidden","disabled","value","name","tabindex"],oz=se({name:"ElCheckbox"}),az=se({...oz,props:nw,emits:rw,setup(e){const t=e,n=to(),{inputId:r,isLabeledByFormItem:o,isChecked:a,isDisabled:l,isFocused:s,checkboxSize:i,hasOwnLabel:u,model:d,handleChange:f,onClickRoot:h}=ow(t,n),p=Fe("checkbox"),v=O(()=>[p.b(),p.m(i.value),p.is("disabled",l.value),p.is("bordered",t.border),p.is("checked",a.value)]),g=O(()=>[p.e("input"),p.is("disabled",l.value),p.is("checked",a.value),p.is("indeterminate",t.indeterminate),p.is("focus",s.value)]);return(w,m)=>(x(),ce(Lt(!c(u)&&c(o)?"span":"label"),{class:D(c(v)),"aria-controls":w.indeterminate?w.controls:null,onClick:c(h)},{default:G(()=>[K("span",{class:D(c(g)),tabindex:w.indeterminate?0:void 0,role:w.indeterminate?"checkbox":void 0,"aria-checked":w.indeterminate?"mixed":void 0},[w.trueLabel||w.falseLabel?vt((x(),U("input",{key:0,id:c(r),"onUpdate:modelValue":m[0]||(m[0]=b=>mt(d)?d.value=b:null),class:D(c(p).e("original")),type:"checkbox","aria-hidden":w.indeterminate?"true":"false",name:w.name,tabindex:w.tabindex,disabled:c(l),"true-value":w.trueLabel,"false-value":w.falseLabel,onChange:m[1]||(m[1]=(...b)=>c(f)&&c(f)(...b)),onFocus:m[2]||(m[2]=b=>s.value=!0),onBlur:m[3]||(m[3]=b=>s.value=!1)},null,42,nz)),[[ou,c(d)]]):vt((x(),U("input",{key:1,id:c(r),"onUpdate:modelValue":m[4]||(m[4]=b=>mt(d)?d.value=b:null),class:D(c(p).e("original")),type:"checkbox","aria-hidden":w.indeterminate?"true":"false",disabled:c(l),value:w.label,name:w.name,tabindex:w.tabindex,onChange:m[5]||(m[5]=(...b)=>c(f)&&c(f)(...b)),onFocus:m[6]||(m[6]=b=>s.value=!0),onBlur:m[7]||(m[7]=b=>s.value=!1)},null,42,rz)),[[ou,c(d)]]),K("span",{class:D(c(p).e("inner"))},null,2)],10,tz),c(u)?(x(),U("span",{key:0,class:D(c(p).e("label"))},[pe(w.$slots,"default"),w.$slots.default?ye("v-if",!0):(x(),U(Pe,{key:0},[Je(Ee(w.label),1)],64))],2)):ye("v-if",!0)]),_:3},8,["class","aria-controls","onClick"]))}});var lz=ze(az,[["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox.vue"]]);const sz=["name","tabindex","disabled","true-value","false-value"],iz=["name","tabindex","disabled","value"],uz=se({name:"ElCheckboxButton"}),cz=se({...uz,props:nw,emits:rw,setup(e){const t=e,n=to(),{isFocused:r,isChecked:o,isDisabled:a,checkboxButtonSize:l,model:s,handleChange:i}=ow(t,n),u=Re(_l,void 0),d=Fe("checkbox"),f=O(()=>{var p,v,g,w;const m=(v=(p=u==null?void 0:u.fill)==null?void 0:p.value)!=null?v:"";return{backgroundColor:m,borderColor:m,color:(w=(g=u==null?void 0:u.textColor)==null?void 0:g.value)!=null?w:"",boxShadow:m?`-1px 0 0 0 ${m}`:void 0}}),h=O(()=>[d.b("button"),d.bm("button",l.value),d.is("disabled",a.value),d.is("checked",o.value),d.is("focus",r.value)]);return(p,v)=>(x(),U("label",{class:D(c(h))},[p.trueLabel||p.falseLabel?vt((x(),U("input",{key:0,"onUpdate:modelValue":v[0]||(v[0]=g=>mt(s)?s.value=g:null),class:D(c(d).be("button","original")),type:"checkbox",name:p.name,tabindex:p.tabindex,disabled:c(a),"true-value":p.trueLabel,"false-value":p.falseLabel,onChange:v[1]||(v[1]=(...g)=>c(i)&&c(i)(...g)),onFocus:v[2]||(v[2]=g=>r.value=!0),onBlur:v[3]||(v[3]=g=>r.value=!1)},null,42,sz)),[[ou,c(s)]]):vt((x(),U("input",{key:1,"onUpdate:modelValue":v[4]||(v[4]=g=>mt(s)?s.value=g:null),class:D(c(d).be("button","original")),type:"checkbox",name:p.name,tabindex:p.tabindex,disabled:c(a),value:p.label,onChange:v[5]||(v[5]=(...g)=>c(i)&&c(i)(...g)),onFocus:v[6]||(v[6]=g=>r.value=!0),onBlur:v[7]||(v[7]=g=>r.value=!1)},null,42,iz)),[[ou,c(s)]]),p.$slots.default||p.label?(x(),U("span",{key:2,class:D(c(d).be("button","inner")),style:Qe(c(o)?c(f):void 0)},[pe(p.$slots,"default",{},()=>[Je(Ee(p.label),1)])],6)):ye("v-if",!0)],2))}});var aw=ze(cz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-button.vue"]]);const dz=je({modelValue:{type:Le(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Hn,label:String,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0}}),fz={[Ct]:e=>De(e),change:e=>De(e)},pz=se({name:"ElCheckboxGroup"}),mz=se({...pz,props:dz,emits:fz,setup(e,{emit:t}){const n=e,r=Fe("checkbox"),{formItem:o}=er(),{inputId:a,isLabeledByFormItem:l}=wa(n,{formItemContext:o}),s=async u=>{t(Ct,u),await qe(),t("change",u)},i=O({get(){return n.modelValue},set(u){s(u)}});return yt(_l,{...sN(dr(n),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:i,changeEvent:s}),$e(()=>n.modelValue,()=>{n.validateEvent&&(o==null||o.validate("change").catch(u=>void 0))}),(u,d)=>{var f;return x(),ce(Lt(u.tag),{id:c(a),class:D(c(r).b("group")),role:"group","aria-label":c(l)?void 0:u.label||"checkbox-group","aria-labelledby":c(l)?(f=c(o))==null?void 0:f.labelId:void 0},{default:G(()=>[pe(u.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var lw=ze(mz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-group.vue"]]);const da=Bt(lz,{CheckboxButton:aw,CheckboxGroup:lw});br(aw);br(lw);const sw=je({size:Hn,disabled:Boolean,label:{type:[String,Number,Boolean],default:""}}),hz=je({...sw,modelValue:{type:[String,Number,Boolean],default:""},name:{type:String,default:""},border:Boolean}),iw={[Ct]:e=>Ge(e)||ct(e)||_n(e),[pr]:e=>Ge(e)||ct(e)||_n(e)},uw=Symbol("radioGroupKey"),cw=(e,t)=>{const n=B(),r=Re(uw,void 0),o=O(()=>!!r),a=O({get(){return o.value?r.modelValue:e.modelValue},set(d){o.value?r.changeEvent(d):t&&t(Ct,d),n.value.checked=e.modelValue===e.label}}),l=mn(O(()=>r==null?void 0:r.size)),s=Fo(O(()=>r==null?void 0:r.disabled)),i=B(!1),u=O(()=>s.value||o.value&&a.value!==e.label?-1:0);return{radioRef:n,isGroup:o,radioGroup:r,focus:i,size:l,disabled:s,tabIndex:u,modelValue:a}},vz=["value","name","disabled"],gz=se({name:"ElRadio"}),bz=se({...gz,props:hz,emits:iw,setup(e,{emit:t}){const n=e,r=Fe("radio"),{radioRef:o,radioGroup:a,focus:l,size:s,disabled:i,modelValue:u}=cw(n,t);function d(){qe(()=>t("change",u.value))}return(f,h)=>{var p;return x(),U("label",{class:D([c(r).b(),c(r).is("disabled",c(i)),c(r).is("focus",c(l)),c(r).is("bordered",f.border),c(r).is("checked",c(u)===f.label),c(r).m(c(s))])},[K("span",{class:D([c(r).e("input"),c(r).is("disabled",c(i)),c(r).is("checked",c(u)===f.label)])},[vt(K("input",{ref_key:"radioRef",ref:o,"onUpdate:modelValue":h[0]||(h[0]=v=>mt(u)?u.value=v:null),class:D(c(r).e("original")),value:f.label,name:f.name||((p=c(a))==null?void 0:p.name),disabled:c(i),type:"radio",onFocus:h[1]||(h[1]=v=>l.value=!0),onBlur:h[2]||(h[2]=v=>l.value=!1),onChange:d},null,42,vz),[[n0,c(u)]]),K("span",{class:D(c(r).e("inner"))},null,2)],2),K("span",{class:D(c(r).e("label")),onKeydown:h[3]||(h[3]=$t(()=>{},["stop"]))},[pe(f.$slots,"default",{},()=>[Je(Ee(f.label),1)])],34)],2)}}});var yz=ze(bz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio.vue"]]);const _z=je({...sw,name:{type:String,default:""}}),wz=["value","name","disabled"],Cz=se({name:"ElRadioButton"}),kz=se({...Cz,props:_z,setup(e){const t=e,n=Fe("radio"),{radioRef:r,focus:o,size:a,disabled:l,modelValue:s,radioGroup:i}=cw(t),u=O(()=>({backgroundColor:(i==null?void 0:i.fill)||"",borderColor:(i==null?void 0:i.fill)||"",boxShadow:i!=null&&i.fill?`-1px 0 0 0 ${i.fill}`:"",color:(i==null?void 0:i.textColor)||""}));return(d,f)=>{var h;return x(),U("label",{class:D([c(n).b("button"),c(n).is("active",c(s)===d.label),c(n).is("disabled",c(l)),c(n).is("focus",c(o)),c(n).bm("button",c(a))])},[vt(K("input",{ref_key:"radioRef",ref:r,"onUpdate:modelValue":f[0]||(f[0]=p=>mt(s)?s.value=p:null),class:D(c(n).be("button","original-radio")),value:d.label,type:"radio",name:d.name||((h=c(i))==null?void 0:h.name),disabled:c(l),onFocus:f[1]||(f[1]=p=>o.value=!0),onBlur:f[2]||(f[2]=p=>o.value=!1)},null,42,wz),[[n0,c(s)]]),K("span",{class:D(c(n).be("button","inner")),style:Qe(c(s)===d.label?c(u):{}),onKeydown:f[3]||(f[3]=$t(()=>{},["stop"]))},[pe(d.$slots,"default",{},()=>[Je(Ee(d.label),1)])],38)],2)}}});var dw=ze(kz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-button.vue"]]);const Sz=je({id:{type:String,default:void 0},size:Hn,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:""},fill:{type:String,default:""},label:{type:String,default:void 0},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0}}),Ez=iw,$z=["id","aria-label","aria-labelledby"],Tz=se({name:"ElRadioGroup"}),xz=se({...Tz,props:Sz,emits:Ez,setup(e,{emit:t}){const n=e,r=Fe("radio"),o=Lo(),a=B(),{formItem:l}=er(),{inputId:s,isLabeledByFormItem:i}=wa(n,{formItemContext:l}),u=f=>{t(Ct,f),qe(()=>t("change",f))};dt(()=>{const f=a.value.querySelectorAll("[type=radio]"),h=f[0];!Array.from(f).some(p=>p.checked)&&h&&(h.tabIndex=0)});const d=O(()=>n.name||o.value);return yt(uw,Xt({...dr(n),changeEvent:u,name:d})),$e(()=>n.modelValue,()=>{n.validateEvent&&(l==null||l.validate("change").catch(f=>void 0))}),(f,h)=>(x(),U("div",{id:c(s),ref_key:"radioGroupRef",ref:a,class:D(c(r).b("group")),role:"radiogroup","aria-label":c(i)?void 0:f.label||"radio-group","aria-labelledby":c(i)?c(l).labelId:void 0},[pe(f.$slots,"default")],10,$z))}});var fw=ze(xz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-group.vue"]]);const Oz=Bt(yz,{RadioButton:dw,RadioGroup:fw});br(fw);br(dw);const pw=je({type:{type:String,values:["success","info","warning","danger",""],default:""},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:{type:String,default:""},size:{type:String,values:_a,default:""},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),Az={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},Iz=se({name:"ElTag"}),Pz=se({...Iz,props:pw,emits:Az,setup(e,{emit:t}){const n=e,r=mn(),o=Fe("tag"),a=O(()=>{const{type:i,hit:u,effect:d,closable:f,round:h}=n;return[o.b(),o.is("closable",f),o.m(i),o.m(r.value),o.m(d),o.is("hit",u),o.is("round",h)]}),l=i=>{t("close",i)},s=i=>{t("click",i)};return(i,u)=>i.disableTransitions?(x(),U("span",{key:0,class:D(c(a)),style:Qe({backgroundColor:i.color}),onClick:s},[K("span",{class:D(c(o).e("content"))},[pe(i.$slots,"default")],2),i.closable?(x(),ce(c(nt),{key:0,class:D(c(o).e("close")),onClick:$t(l,["stop"])},{default:G(()=>[Q(c(ys))]),_:1},8,["class","onClick"])):ye("v-if",!0)],6)):(x(),ce(Mn,{key:1,name:`${c(o).namespace.value}-zoom-in-center`,appear:""},{default:G(()=>[K("span",{class:D(c(a)),style:Qe({backgroundColor:i.color}),onClick:s},[K("span",{class:D(c(o).e("content"))},[pe(i.$slots,"default")],2),i.closable?(x(),ce(c(nt),{key:0,class:D(c(o).e("close")),onClick:$t(l,["stop"])},{default:G(()=>[Q(c(ys))]),_:1},8,["class","onClick"])):ye("v-if",!0)],6)]),_:3},8,["name"]))}});var Lz=ze(Pz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tag/src/tag.vue"]]);const mw=Bt(Lz),hw=Symbol("rowContextKey"),Mz=["start","center","end","space-around","space-between","space-evenly"],Rz=["top","middle","bottom"],Nz=je({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:Mz,default:"start"},align:{type:String,values:Rz,default:"top"}}),Dz=se({name:"ElRow"}),Fz=se({...Dz,props:Nz,setup(e){const t=e,n=Fe("row"),r=O(()=>t.gutter);yt(hw,{gutter:r});const o=O(()=>{const l={};return t.gutter&&(l.marginRight=l.marginLeft=`-${t.gutter/2}px`),l}),a=O(()=>[n.b(),n.is(`justify-${t.justify}`,t.justify!=="start"),n.is(`align-${t.align}`,t.align!=="top")]);return(l,s)=>(x(),ce(Lt(l.tag),{class:D(c(a)),style:Qe(c(o))},{default:G(()=>[pe(l.$slots,"default")]),_:3},8,["class","style"]))}});var Vz=ze(Fz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/row/src/row.vue"]]);const Bz=Bt(Vz),zz=je({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:Le([Number,Object]),default:()=>Ur({})},sm:{type:Le([Number,Object]),default:()=>Ur({})},md:{type:Le([Number,Object]),default:()=>Ur({})},lg:{type:Le([Number,Object]),default:()=>Ur({})},xl:{type:Le([Number,Object]),default:()=>Ur({})}}),Hz=se({name:"ElCol"}),jz=se({...Hz,props:zz,setup(e){const t=e,{gutter:n}=Re(hw,{gutter:O(()=>0)}),r=Fe("col"),o=O(()=>{const l={};return n.value&&(l.paddingLeft=l.paddingRight=`${n.value/2}px`),l}),a=O(()=>{const l=[];return["span","offset","pull","push"].forEach(u=>{const d=t[u];ct(d)&&(u==="span"?l.push(r.b(`${t[u]}`)):d>0&&l.push(r.b(`${u}-${t[u]}`)))}),["xs","sm","md","lg","xl"].forEach(u=>{ct(t[u])?l.push(r.b(`${u}-${t[u]}`)):ht(t[u])&&Object.entries(t[u]).forEach(([d,f])=>{l.push(d!=="span"?r.b(`${u}-${d}-${f}`):r.b(`${u}-${f}`))})}),n.value&&l.push(r.is("guttered")),[r.b(),l]});return(l,s)=>(x(),ce(Lt(l.tag),{class:D(c(a)),style:Qe(c(o))},{default:G(()=>[pe(l.$slots,"default")]),_:3},8,["class","style"]))}});var Wz=ze(jz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/col/src/col.vue"]]);const Uz=Bt(Wz),Kz=se({name:"ElCollapseTransition"}),qz=se({...Kz,setup(e){const t=Fe("collapse-transition"),n={beforeEnter(r){r.dataset||(r.dataset={}),r.dataset.oldPaddingTop=r.style.paddingTop,r.dataset.oldPaddingBottom=r.style.paddingBottom,r.style.maxHeight=0,r.style.paddingTop=0,r.style.paddingBottom=0},enter(r){r.dataset.oldOverflow=r.style.overflow,r.scrollHeight!==0?(r.style.maxHeight=`${r.scrollHeight}px`,r.style.paddingTop=r.dataset.oldPaddingTop,r.style.paddingBottom=r.dataset.oldPaddingBottom):(r.style.maxHeight=0,r.style.paddingTop=r.dataset.oldPaddingTop,r.style.paddingBottom=r.dataset.oldPaddingBottom),r.style.overflow="hidden"},afterEnter(r){r.style.maxHeight="",r.style.overflow=r.dataset.oldOverflow},beforeLeave(r){r.dataset||(r.dataset={}),r.dataset.oldPaddingTop=r.style.paddingTop,r.dataset.oldPaddingBottom=r.style.paddingBottom,r.dataset.oldOverflow=r.style.overflow,r.style.maxHeight=`${r.scrollHeight}px`,r.style.overflow="hidden"},leave(r){r.scrollHeight!==0&&(r.style.maxHeight=0,r.style.paddingTop=0,r.style.paddingBottom=0)},afterLeave(r){r.style.maxHeight="",r.style.overflow=r.dataset.oldOverflow,r.style.paddingTop=r.dataset.oldPaddingTop,r.style.paddingBottom=r.dataset.oldPaddingBottom}};return(r,o)=>(x(),ce(Mn,Ht({name:c(t).b()},FC(n)),{default:G(()=>[pe(r.$slots,"default")]),_:3},16,["name"]))}});var Wi=ze(qz,[["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse-transition/src/collapse-transition.vue"]]);Wi.install=e=>{e.component(Wi.name,Wi)};const Yz=Wi,Gz=Yz,Xz=je({color:{type:Le(Object),required:!0},vertical:{type:Boolean,default:!1}});let Pc=!1;function Es(e,t){if(!xt)return;const n=function(a){var l;(l=t.drag)==null||l.call(t,a)},r=function(a){var l;document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",r),document.removeEventListener("touchmove",n),document.removeEventListener("touchend",r),document.onselectstart=null,document.ondragstart=null,Pc=!1,(l=t.end)==null||l.call(t,a)},o=function(a){var l;Pc||(a.preventDefault(),document.onselectstart=()=>!1,document.ondragstart=()=>!1,document.addEventListener("mousemove",n),document.addEventListener("mouseup",r),document.addEventListener("touchmove",n),document.addEventListener("touchend",r),Pc=!0,(l=t.start)==null||l.call(t,a))};e.addEventListener("mousedown",o),e.addEventListener("touchstart",o)}const Jz=e=>{const t=lt(),n=On(),r=On();function o(l){l.target!==n.value&&a(l)}function a(l){if(!r.value||!n.value)return;const i=t.vnode.el.getBoundingClientRect(),{clientX:u,clientY:d}=Kf(l);if(e.vertical){let f=d-i.top;f=Math.max(n.value.offsetHeight/2,f),f=Math.min(f,i.height-n.value.offsetHeight/2),e.color.set("alpha",Math.round((f-n.value.offsetHeight/2)/(i.height-n.value.offsetHeight)*100))}else{let f=u-i.left;f=Math.max(n.value.offsetWidth/2,f),f=Math.min(f,i.width-n.value.offsetWidth/2),e.color.set("alpha",Math.round((f-n.value.offsetWidth/2)/(i.width-n.value.offsetWidth)*100))}}return{thumb:n,bar:r,handleDrag:a,handleClick:o}},Zz=(e,{bar:t,thumb:n,handleDrag:r})=>{const o=lt(),a=Fe("color-alpha-slider"),l=B(0),s=B(0),i=B();function u(){if(!n.value||e.vertical)return 0;const b=o.vnode.el,_=e.color.get("alpha");return b?Math.round(_*(b.offsetWidth-n.value.offsetWidth/2)/100):0}function d(){if(!n.value)return 0;const b=o.vnode.el;if(!e.vertical)return 0;const _=e.color.get("alpha");return b?Math.round(_*(b.offsetHeight-n.value.offsetHeight/2)/100):0}function f(){if(e.color&&e.color.value){const{r:b,g:_,b:y}=e.color.toRgb();return`linear-gradient(to right, rgba(${b}, ${_}, ${y}, 0) 0%, rgba(${b}, ${_}, ${y}, 1) 100%)`}return""}function h(){l.value=u(),s.value=d(),i.value=f()}dt(()=>{if(!t.value||!n.value)return;const b={drag:_=>{r(_)},end:_=>{r(_)}};Es(t.value,b),Es(n.value,b),h()}),$e(()=>e.color.get("alpha"),()=>h()),$e(()=>e.color.value,()=>h());const p=O(()=>[a.b(),a.is("vertical",e.vertical)]),v=O(()=>a.e("bar")),g=O(()=>a.e("thumb")),w=O(()=>({background:i.value})),m=O(()=>({left:Jn(l.value),top:Jn(s.value)}));return{rootKls:p,barKls:v,barStyle:w,thumbKls:g,thumbStyle:m,update:h}},Qz="ElColorAlphaSlider",eH=se({name:Qz}),tH=se({...eH,props:Xz,setup(e,{expose:t}){const n=e,{bar:r,thumb:o,handleDrag:a,handleClick:l}=Jz(n),{rootKls:s,barKls:i,barStyle:u,thumbKls:d,thumbStyle:f,update:h}=Zz(n,{bar:r,thumb:o,handleDrag:a});return t({update:h,bar:r,thumb:o}),(p,v)=>(x(),U("div",{class:D(c(s))},[K("div",{ref_key:"bar",ref:r,class:D(c(i)),style:Qe(c(u)),onClick:v[0]||(v[0]=(...g)=>c(l)&&c(l)(...g))},null,6),K("div",{ref_key:"thumb",ref:o,class:D(c(d)),style:Qe(c(f))},null,6)],2))}});var nH=ze(tH,[["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/alpha-slider.vue"]]);const rH=se({name:"ElColorHueSlider",props:{color:{type:Object,required:!0},vertical:Boolean},setup(e){const t=Fe("color-hue-slider"),n=lt(),r=B(),o=B(),a=B(0),l=B(0),s=O(()=>e.color.get("hue"));$e(()=>s.value,()=>{h()});function i(p){p.target!==r.value&&u(p)}function u(p){if(!o.value||!r.value)return;const g=n.vnode.el.getBoundingClientRect(),{clientX:w,clientY:m}=Kf(p);let b;if(e.vertical){let _=m-g.top;_=Math.min(_,g.height-r.value.offsetHeight/2),_=Math.max(r.value.offsetHeight/2,_),b=Math.round((_-r.value.offsetHeight/2)/(g.height-r.value.offsetHeight)*360)}else{let _=w-g.left;_=Math.min(_,g.width-r.value.offsetWidth/2),_=Math.max(r.value.offsetWidth/2,_),b=Math.round((_-r.value.offsetWidth/2)/(g.width-r.value.offsetWidth)*360)}e.color.set("hue",b)}function d(){if(!r.value)return 0;const p=n.vnode.el;if(e.vertical)return 0;const v=e.color.get("hue");return p?Math.round(v*(p.offsetWidth-r.value.offsetWidth/2)/360):0}function f(){if(!r.value)return 0;const p=n.vnode.el;if(!e.vertical)return 0;const v=e.color.get("hue");return p?Math.round(v*(p.offsetHeight-r.value.offsetHeight/2)/360):0}function h(){a.value=d(),l.value=f()}return dt(()=>{if(!o.value||!r.value)return;const p={drag:v=>{u(v)},end:v=>{u(v)}};Es(o.value,p),Es(r.value,p),h()}),{bar:o,thumb:r,thumbLeft:a,thumbTop:l,hueValue:s,handleClick:i,update:h,ns:t}}});function oH(e,t,n,r,o,a){return x(),U("div",{class:D([e.ns.b(),e.ns.is("vertical",e.vertical)])},[K("div",{ref:"bar",class:D(e.ns.e("bar")),onClick:t[0]||(t[0]=(...l)=>e.handleClick&&e.handleClick(...l))},null,2),K("div",{ref:"thumb",class:D(e.ns.e("thumb")),style:Qe({left:e.thumbLeft+"px",top:e.thumbTop+"px"})},null,6)],2)}var aH=ze(rH,[["render",oH],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/hue-slider.vue"]]);const lH=je({modelValue:String,id:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:Hn,popperClass:{type:String,default:""},label:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},predefine:{type:Le(Array)},validateEvent:{type:Boolean,default:!0}}),sH={[Ct]:e=>Ge(e)||Yn(e),[pr]:e=>Ge(e)||Yn(e),activeChange:e=>Ge(e)||Yn(e)},vw=Symbol("colorPickerContextKey"),Ig=function(e,t,n){return[e,t*n/((e=(2-t)*n)<1?e:2-e)||0,e/2]},iH=function(e){return typeof e=="string"&&e.includes(".")&&Number.parseFloat(e)===1},uH=function(e){return typeof e=="string"&&e.includes("%")},Ha=function(e,t){iH(e)&&(e="100%");const n=uH(e);return e=Math.min(t,Math.max(0,Number.parseFloat(`${e}`))),n&&(e=Number.parseInt(`${e*t}`,10)/100),Math.abs(e-t)<1e-6?1:e%t/Number.parseFloat(t)},Pg={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},Ui=e=>{e=Math.min(Math.round(e),255);const t=Math.floor(e/16),n=e%16;return`${Pg[t]||t}${Pg[n]||n}`},Lg=function({r:e,g:t,b:n}){return Number.isNaN(+e)||Number.isNaN(+t)||Number.isNaN(+n)?"":`#${Ui(e)}${Ui(t)}${Ui(n)}`},Lc={A:10,B:11,C:12,D:13,E:14,F:15},jo=function(e){return e.length===2?(Lc[e[0].toUpperCase()]||+e[0])*16+(Lc[e[1].toUpperCase()]||+e[1]):Lc[e[1].toUpperCase()]||+e[1]},cH=function(e,t,n){t=t/100,n=n/100;let r=t;const o=Math.max(n,.01);n*=2,t*=n<=1?n:2-n,r*=o<=1?o:2-o;const a=(n+t)/2,l=n===0?2*r/(o+r):2*t/(n+t);return{h:e,s:l*100,v:a*100}},Mg=(e,t,n)=>{e=Ha(e,255),t=Ha(t,255),n=Ha(n,255);const r=Math.max(e,t,n),o=Math.min(e,t,n);let a;const l=r,s=r-o,i=r===0?0:s/r;if(r===o)a=0;else{switch(r){case e:{a=(t-n)/s+(t{this._hue=Math.max(0,Math.min(360,r)),this._saturation=Math.max(0,Math.min(100,o)),this._value=Math.max(0,Math.min(100,a)),this.doOnChange()};if(t.includes("hsl")){const r=t.replace(/hsla|hsl|\(|\)/gm,"").split(/\s|,/g).filter(o=>o!=="").map((o,a)=>a>2?Number.parseFloat(o):Number.parseInt(o,10));if(r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3){const{h:o,s:a,v:l}=cH(r[0],r[1],r[2]);n(o,a,l)}}else if(t.includes("hsv")){const r=t.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(o=>o!=="").map((o,a)=>a>2?Number.parseFloat(o):Number.parseInt(o,10));r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3&&n(r[0],r[1],r[2])}else if(t.includes("rgb")){const r=t.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(o=>o!=="").map((o,a)=>a>2?Number.parseFloat(o):Number.parseInt(o,10));if(r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3){const{h:o,s:a,v:l}=Mg(r[0],r[1],r[2]);n(o,a,l)}}else if(t.includes("#")){const r=t.replace("#","").trim();if(!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(r))return;let o,a,l;r.length===3?(o=jo(r[0]+r[0]),a=jo(r[1]+r[1]),l=jo(r[2]+r[2])):(r.length===6||r.length===8)&&(o=jo(r.slice(0,2)),a=jo(r.slice(2,4)),l=jo(r.slice(4,6))),r.length===8?this._alpha=jo(r.slice(6))/255*100:(r.length===3||r.length===6)&&(this._alpha=100);const{h:s,s:i,v:u}=Mg(o,a,l);n(s,i,u)}}compare(t){return Math.abs(t._hue-this._hue)<2&&Math.abs(t._saturation-this._saturation)<1&&Math.abs(t._value-this._value)<1&&Math.abs(t._alpha-this._alpha)<1}doOnChange(){const{_hue:t,_saturation:n,_value:r,_alpha:o,format:a}=this;if(this.enableAlpha)switch(a){case"hsl":{const l=Ig(t,n/100,r/100);this.value=`hsla(${t}, ${Math.round(l[1]*100)}%, ${Math.round(l[2]*100)}%, ${this.get("alpha")/100})`;break}case"hsv":{this.value=`hsva(${t}, ${Math.round(n)}%, ${Math.round(r)}%, ${this.get("alpha")/100})`;break}case"hex":{this.value=`${Lg(Il(t,n,r))}${Ui(o*255/100)}`;break}default:{const{r:l,g:s,b:i}=Il(t,n,r);this.value=`rgba(${l}, ${s}, ${i}, ${this.get("alpha")/100})`}}else switch(a){case"hsl":{const l=Ig(t,n/100,r/100);this.value=`hsl(${t}, ${Math.round(l[1]*100)}%, ${Math.round(l[2]*100)}%)`;break}case"hsv":{this.value=`hsv(${t}, ${Math.round(n)}%, ${Math.round(r)}%)`;break}case"rgb":{const{r:l,g:s,b:i}=Il(t,n,r);this.value=`rgb(${l}, ${s}, ${i})`;break}default:this.value=Lg(Il(t,n,r))}}}const dH=se({props:{colors:{type:Array,required:!0},color:{type:Object,required:!0}},setup(e){const t=Fe("color-predefine"),{currentColor:n}=Re(vw),r=B(a(e.colors,e.color));$e(()=>n.value,l=>{const s=new Gl;s.fromString(l),r.value.forEach(i=>{i.selected=s.compare(i)})}),qr(()=>{r.value=a(e.colors,e.color)});function o(l){e.color.fromString(e.colors[l])}function a(l,s){return l.map(i=>{const u=new Gl;return u.enableAlpha=!0,u.format="rgba",u.fromString(i),u.selected=u.value===s.value,u})}return{rgbaColors:r,handleSelect:o,ns:t}}}),fH=["onClick"];function pH(e,t,n,r,o,a){return x(),U("div",{class:D(e.ns.b())},[K("div",{class:D(e.ns.e("colors"))},[(x(!0),U(Pe,null,it(e.rgbaColors,(l,s)=>(x(),U("div",{key:e.colors[s],class:D([e.ns.e("color-selector"),e.ns.is("alpha",l._alpha<100),{selected:l.selected}]),onClick:i=>e.handleSelect(s)},[K("div",{style:Qe({backgroundColor:l.value})},null,4)],10,fH))),128))],2)],2)}var mH=ze(dH,[["render",pH],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/predefine.vue"]]);const hH=se({name:"ElSlPanel",props:{color:{type:Object,required:!0}},setup(e){const t=Fe("color-svpanel"),n=lt(),r=B(0),o=B(0),a=B("hsl(0, 100%, 50%)"),l=O(()=>{const u=e.color.get("hue"),d=e.color.get("value");return{hue:u,value:d}});function s(){const u=e.color.get("saturation"),d=e.color.get("value"),f=n.vnode.el,{clientWidth:h,clientHeight:p}=f;o.value=u*h/100,r.value=(100-d)*p/100,a.value=`hsl(${e.color.get("hue")}, 100%, 50%)`}function i(u){const f=n.vnode.el.getBoundingClientRect(),{clientX:h,clientY:p}=Kf(u);let v=h-f.left,g=p-f.top;v=Math.max(0,v),v=Math.min(v,f.width),g=Math.max(0,g),g=Math.min(g,f.height),o.value=v,r.value=g,e.color.set({saturation:v/f.width*100,value:100-g/f.height*100})}return $e(()=>l.value,()=>{s()}),dt(()=>{Es(n.vnode.el,{drag:u=>{i(u)},end:u=>{i(u)}}),s()}),{cursorTop:r,cursorLeft:o,background:a,colorValue:l,handleDrag:i,update:s,ns:t}}}),vH=K("div",null,null,-1),gH=[vH];function bH(e,t,n,r,o,a){return x(),U("div",{class:D(e.ns.b()),style:Qe({backgroundColor:e.background})},[K("div",{class:D(e.ns.e("white"))},null,2),K("div",{class:D(e.ns.e("black"))},null,2),K("div",{class:D(e.ns.e("cursor")),style:Qe({top:e.cursorTop+"px",left:e.cursorLeft+"px"})},gH,6)],6)}var yH=ze(hH,[["render",bH],["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/sv-panel.vue"]]);const _H=["id","aria-label","aria-labelledby","aria-description","tabindex","onKeydown"],wH=se({name:"ElColorPicker"}),CH=se({...wH,props:lH,emits:sH,setup(e,{expose:t,emit:n}){const r=e,{t:o}=Pt(),a=Fe("color"),{formItem:l}=er(),s=mn(),i=Fo(),{inputId:u,isLabeledByFormItem:d}=wa(r,{formItemContext:l}),f=B(),h=B(),p=B(),v=B();let g=!0;const w=Xt(new Gl({enableAlpha:r.showAlpha,format:r.colorFormat||"",value:r.modelValue})),m=B(!1),b=B(!1),_=B(""),y=O(()=>!r.modelValue&&!b.value?"transparent":R(w,r.showAlpha)),C=O(()=>!r.modelValue&&!b.value?"":w.value),k=O(()=>d.value?void 0:r.label||o("el.colorpicker.defaultLabel")),E=O(()=>d.value?l==null?void 0:l.labelId:void 0),S=O(()=>[a.b("picker"),a.is("disabled",i.value),a.bm("picker",s.value)]);function R(I,Y){if(!(I instanceof Gl))throw new TypeError("color should be instance of _color Class");const{r:ee,g:W,b:re}=I.toRgb();return Y?`rgba(${ee}, ${W}, ${re}, ${I.get("alpha")/100})`:`rgb(${ee}, ${W}, ${re})`}function L(I){m.value=I}const F=Or(L,100);function N(){i.value||L(!0)}function A(){F(!1),M()}function M(){qe(()=>{r.modelValue?w.fromString(r.modelValue):(w.value="",qe(()=>{b.value=!1}))})}function H(){i.value||F(!m.value)}function j(){w.fromString(_.value)}function V(){const I=w.value;n(Ct,I),n("change",I),r.validateEvent&&(l==null||l.validate("change").catch(Y=>void 0)),F(!1),qe(()=>{const Y=new Gl({enableAlpha:r.showAlpha,format:r.colorFormat||"",value:r.modelValue});w.compare(Y)||M()})}function X(){F(!1),n(Ct,null),n("change",null),r.modelValue!==null&&r.validateEvent&&(l==null||l.validate("change").catch(I=>void 0)),M()}return dt(()=>{r.modelValue&&(_.value=C.value)}),$e(()=>r.modelValue,I=>{I?I&&I!==w.value&&(g=!1,w.fromString(I)):b.value=!1}),$e(()=>C.value,I=>{_.value=I,g&&n("activeChange",I),g=!0}),$e(()=>w.value,()=>{!r.modelValue&&!b.value&&(b.value=!0)}),$e(()=>m.value,()=>{qe(()=>{var I,Y,ee;(I=f.value)==null||I.update(),(Y=h.value)==null||Y.update(),(ee=p.value)==null||ee.update()})}),yt(vw,{currentColor:C}),t({color:w,show:N,hide:A}),(I,Y)=>(x(),ce(c(Ca),{ref_key:"popper",ref:v,visible:m.value,"show-arrow":!1,"fallback-placements":["bottom","top","right","left"],offset:0,"gpu-acceleration":!1,"popper-class":[c(a).be("picker","panel"),c(a).b("dropdown"),I.popperClass],"stop-popper-mouse-event":!1,effect:"light",trigger:"click",transition:`${c(a).namespace.value}-zoom-in-top`,persistent:""},{content:G(()=>[vt((x(),U("div",null,[K("div",{class:D(c(a).be("dropdown","main-wrapper"))},[Q(aH,{ref_key:"hue",ref:f,class:"hue-slider",color:c(w),vertical:""},null,8,["color"]),Q(yH,{ref_key:"sv",ref:h,color:c(w)},null,8,["color"])],2),I.showAlpha?(x(),ce(nH,{key:0,ref_key:"alpha",ref:p,color:c(w)},null,8,["color"])):ye("v-if",!0),I.predefine?(x(),ce(mH,{key:1,ref:"predefine",color:c(w),colors:I.predefine},null,8,["color","colors"])):ye("v-if",!0),K("div",{class:D(c(a).be("dropdown","btns"))},[K("span",{class:D(c(a).be("dropdown","value"))},[Q(c(Kn),{modelValue:_.value,"onUpdate:modelValue":Y[0]||(Y[0]=ee=>_.value=ee),"validate-event":!1,size:"small",onKeyup:Dt(j,["enter"]),onBlur:j},null,8,["modelValue","onKeyup"])],2),Q(c(Qr),{class:D(c(a).be("dropdown","link-btn")),text:"",size:"small",onClick:X},{default:G(()=>[Je(Ee(c(o)("el.colorpicker.clear")),1)]),_:1},8,["class"]),Q(c(Qr),{plain:"",size:"small",class:D(c(a).be("dropdown","btn")),onClick:V},{default:G(()=>[Je(Ee(c(o)("el.colorpicker.confirm")),1)]),_:1},8,["class"])],2)])),[[c(il),A]])]),default:G(()=>[K("div",{id:c(u),class:D(c(S)),role:"button","aria-label":c(k),"aria-labelledby":c(E),"aria-description":c(o)("el.colorpicker.description",{color:I.modelValue||""}),tabindex:I.tabindex,onKeydown:Dt(H,["enter"])},[c(i)?(x(),U("div",{key:0,class:D(c(a).be("picker","mask"))},null,2)):ye("v-if",!0),K("div",{class:D(c(a).be("picker","trigger")),onClick:H},[K("span",{class:D([c(a).be("picker","color"),c(a).is("alpha",I.showAlpha)])},[K("span",{class:D(c(a).be("picker","color-inner")),style:Qe({backgroundColor:c(y)})},[vt(Q(c(nt),{class:D([c(a).be("picker","icon"),c(a).is("icon-arrow-down")])},{default:G(()=>[Q(c(vl))]),_:1},8,["class"]),[[qt,I.modelValue||b.value]]),!I.modelValue&&!b.value?(x(),ce(c(nt),{key:0,class:D([c(a).be("picker","empty"),c(a).is("icon-close")])},{default:G(()=>[Q(c(ys))]),_:1},8,["class"])):ye("v-if",!0)],6)],2)],2)],42,_H)]),_:1},8,["visible","popper-class","transition"]))}});var kH=ze(CH,[["__file","/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/color-picker.vue"]]);const SH=Bt(kH);var gw={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(no,function(){return function(n,r){var o=r.prototype,a=o.format;o.format=function(l){var s=this,i=this.$locale();if(!this.isValid())return a.bind(this)(l);var u=this.$utils(),d=(l||"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(f){switch(f){case"Q":return Math.ceil((s.$M+1)/3);case"Do":return i.ordinal(s.$D);case"gggg":return s.weekYear();case"GGGG":return s.isoWeekYear();case"wo":return i.ordinal(s.week(),"W");case"w":case"ww":return u.s(s.week(),f==="w"?1:2,"0");case"W":case"WW":return u.s(s.isoWeek(),f==="W"?1:2,"0");case"k":case"kk":return u.s(String(s.$H===0?24:s.$H),f==="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 f}});return a.bind(this)(d)}}})})(gw);var EH=gw.exports,bw={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(no,function(){var n="week",r="year";return function(o,a,l){var s=a.prototype;s.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var d=l(this).startOf(r).add(1,r).date(u),f=l(this).endOf(n);if(d.isBefore(f))return 1}var h=l(this).startOf(r).date(u).startOf(n).subtract(1,"millisecond"),p=this.diff(h,n,!0);return p<0?l(this).startOf("week").week():Math.ceil(p)},s.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(bw);var $H=bw.exports,yw={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(no,function(){return function(n,r){r.prototype.weekYear=function(){var o=this.month(),a=this.week(),l=this.year();return a===1&&o===11?l+1:o===0&&a>=52?l-1:l}}})})(yw);var TH=yw.exports,_w={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(no,function(){return function(n,r,o){r.prototype.dayOfYear=function(a){var l=Math.round((o(this).startOf("day")-o(this).startOf("year"))/864e5)+1;return a==null?l:this.add(a-l,"day")}}})})(_w);var xH=_w.exports,ww={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(no,function(){return function(n,r){r.prototype.isSameOrAfter=function(o,a){return this.isSame(o,a)||this.isAfter(o,a)}}})})(ww);var OH=ww.exports,Cw={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(no,function(){return function(n,r){r.prototype.isSameOrBefore=function(o,a){return this.isSame(o,a)||this.isBefore(o,a)}}})})(Cw);var AH=Cw.exports;const Tp=Symbol(),IH=je({...$p,type:{type:Le(String),default:"date"}}),PH=["date","dates","year","month","week","range"],xp=je({disabledDate:{type:Le(Function)},date:{type:Le(Object),required:!0},minDate:{type:Le(Object)},maxDate:{type:Le(Object)},parsedValue:{type:Le([Object,Array])},rangeState:{type:Le(Object),default:()=>({endDate:null,selecting:!1})}}),kw=je({type:{type:Le(String),required:!0,values:L5}}),Sw=je({unlinkPanels:Boolean,parsedValue:{type:Le(Array)}}),Ew=e=>({type:String,values:PH,default:e}),LH=je({...kw,parsedValue:{type:Le([Object,Array])},visible:{type:Boolean},format:{type:String,default:""}}),MH=je({...xp,cellClassName:{type:Le(Function)},showWeekNumber:Boolean,selectionMode:Ew("date")}),jd=e=>{if(!De(e))return!1;const[t,n]=e;return Ze.isDayjs(t)&&Ze.isDayjs(n)&&t.isSameOrBefore(n)},$w=(e,{lang:t,unit:n,unlinkPanels:r})=>{let o;if(De(e)){let[a,l]=e.map(s=>Ze(s).locale(t));return r||(l=a.add(1,n)),[a,l]}else e?o=Ze(e):o=Ze();return o=o.locale(t),[o,o.add(1,n)]},RH=(e,t,{columnIndexOffset:n,startDate:r,nextEndDate:o,now:a,unit:l,relativeDateGetter:s,setCellMetadata:i,setRowMetadata:u})=>{for(let d=0;d{const{cell:r}=e;if(n.default){const o=n.default(r).filter(a=>a.patchFlag!==-2&&a.type.toString()!=="Symbol(Comment)");if(o.length)return o}return Q("div",{class:t.b()},[Q("span",{class:t.e("text")},[r==null?void 0:r.text])])}}});const FH=["aria-label","onMousedown"],VH={key:0,scope:"col"},BH=["aria-label"],zH=["aria-current","aria-selected","tabindex"],HH=se({__name:"basic-date-table",props:MH,emits:["changerange","pick","select"],setup(e,{expose:t,emit:n}){const r=e,o=Fe("date-table"),{t:a,lang:l}=Pt(),s=B(),i=B(),u=B(),d=B(),f=B([[],[],[],[],[],[]]);let h=!1;const p=r.date.$locale().weekStart||7,v=r.date.locale("en").localeData().weekdaysShort().map(W=>W.toLowerCase()),g=O(()=>p>3?7-p:-p),w=O(()=>{const W=r.date.startOf("month");return W.subtract(W.day()||7,"day")}),m=O(()=>v.concat(v).slice(p,p+7)),b=O(()=>v1(S.value).some(W=>W.isCurrent)),_=O(()=>{const W=r.date.startOf("month"),re=W.day()||7,be=W.daysInMonth(),Te=W.subtract(1,"month").daysInMonth();return{startOfMonthDay:re,dateCountOfMonth:be,dateCountOfLastMonth:Te}}),y=O(()=>r.selectionMode==="dates"?aa(r.parsedValue):[]),C=(W,{count:re,rowIndex:be,columnIndex:Te})=>{const{startOfMonthDay:ge,dateCountOfMonth:J,dateCountOfLastMonth:te}=c(_),ae=c(g);if(be>=0&&be<=1){const le=ge+ae<0?7+ge+ae:ge+ae;if(Te+be*7>=le)return W.text=re,!0;W.text=te-(le-Te%7)+1+be*7,W.type="prev-month"}else return re<=J?W.text=re:(W.text=re-J,W.type="next-month"),!0;return!1},k=(W,{columnIndex:re,rowIndex:be},Te)=>{const{disabledDate:ge,cellClassName:J}=r,te=c(y),ae=C(W,{count:Te,rowIndex:be,columnIndex:re}),le=W.dayjs.toDate();return W.selected=te.find(me=>me.valueOf()===W.dayjs.valueOf()),W.isSelected=!!W.selected,W.isCurrent=F(W),W.disabled=ge==null?void 0:ge(le),W.customClass=J==null?void 0:J(le),ae},E=W=>{if(r.selectionMode==="week"){const[re,be]=r.showWeekNumber?[1,7]:[0,6],Te=ee(W[re+1]);W[re].inRange=Te,W[re].start=Te,W[be].inRange=Te,W[be].end=Te}},S=O(()=>{const{minDate:W,maxDate:re,rangeState:be,showWeekNumber:Te}=r,ge=g.value,J=f.value,te="day";let ae=1;if(Te)for(let le=0;le<6;le++)J[le][0]||(J[le][0]={type:"week",text:w.value.add(le*7+1,te).week()});return RH({row:6,column:7},J,{startDate:W,columnIndexOffset:Te?1:0,nextEndDate:be.endDate||re||be.selecting&&W||null,now:Ze().locale(c(l)).startOf(te),unit:te,relativeDateGetter:le=>w.value.add(le-ge,te),setCellMetadata:(...le)=>{k(...le,ae)&&(ae+=1)},setRowMetadata:E}),J});$e(()=>r.date,async()=>{var W,re;(W=s.value)!=null&&W.contains(document.activeElement)&&(await qe(),(re=i.value)==null||re.focus())});const R=async()=>{var W;(W=i.value)==null||W.focus()},L=(W="")=>["normal","today"].includes(W),F=W=>r.selectionMode==="date"&&L(W.type)&&N(W,r.parsedValue),N=(W,re)=>re?Ze(re).locale(l.value).isSame(r.date.date(Number(W.text)),"day"):!1,A=W=>{const re=[];return L(W.type)&&!W.disabled?(re.push("available"),W.type==="today"&&re.push("today")):re.push(W.type),F(W)&&re.push("current"),W.inRange&&(L(W.type)||r.selectionMode==="week")&&(re.push("in-range"),W.start&&re.push("start-date"),W.end&&re.push("end-date")),W.disabled&&re.push("disabled"),W.selected&&re.push("selected"),W.customClass&&re.push(W.customClass),re.join(" ")},M=(W,re)=>{const be=W*7+(re-(r.showWeekNumber?1:0))-g.value;return w.value.add(be,"day")},H=W=>{var re;if(!r.rangeState.selecting)return;let be=W.target;if(be.tagName==="SPAN"&&(be=(re=be.parentNode)==null?void 0:re.parentNode),be.tagName==="DIV"&&(be=be.parentNode),be.tagName!=="TD")return;const Te=be.parentNode.rowIndex-1,ge=be.cellIndex;S.value[Te][ge].disabled||(Te!==u.value||ge!==d.value)&&(u.value=Te,d.value=ge,n("changerange",{selecting:!0,endDate:M(Te,ge)}))},j=W=>!b.value&&(W==null?void 0:W.text)===1&&W.type==="normal"||W.isCurrent,V=W=>{h||b.value||r.selectionMode!=="date"||Y(W,!0)},X=W=>{!W.target.closest("td")||(h=!0)},I=W=>{!W.target.closest("td")||(h=!1)},Y=(W,re=!1)=>{const be=W.target.closest("td");if(!be)return;const Te=be.parentNode.rowIndex-1,ge=be.cellIndex,J=S.value[Te][ge];if(J.disabled||J.type==="week")return;const te=M(Te,ge);if(r.selectionMode==="range")!r.rangeState.selecting||!r.minDate?(n("pick",{minDate:te,maxDate:null}),n("select",!0)):(te>=r.minDate?n("pick",{minDate:r.minDate,maxDate:te}):n("pick",{minDate:te,maxDate:r.minDate}),n("select",!1));else if(r.selectionMode==="date")n("pick",te,re);else if(r.selectionMode==="week"){const ae=te.week(),le=`${te.year()}w${ae}`;n("pick",{year:te.year(),week:ae,value:le,date:te.startOf("week")})}else if(r.selectionMode==="dates"){const ae=J.selected?aa(r.parsedValue).filter(le=>(le==null?void 0:le.valueOf())!==te.valueOf()):aa(r.parsedValue).concat([te]);n("pick",ae)}},ee=W=>{if(r.selectionMode!=="week")return!1;let re=r.date.startOf("day");if(W.type==="prev-month"&&(re=re.subtract(1,"month")),W.type==="next-month"&&(re=re.add(1,"month")),re=re.date(Number.parseInt(W.text,10)),r.parsedValue&&!Array.isArray(r.parsedValue)){const be=(r.parsedValue.day()-p+7)%7-1;return r.parsedValue.subtract(be,"day").isSame(re,"day")}return!1};return t({focus:R}),(W,re)=>(x(),U("table",{role:"grid","aria-label":c(a)("el.datepicker.dateTablePrompt"),cellspacing:"0",cellpadding:"0",class:D([c(o).b(),{"is-week-mode":W.selectionMode==="week"}]),onClick:Y,onMousemove:H,onMousedown:$t(X,["prevent"]),onMouseup:I},[K("tbody",{ref_key:"tbodyRef",ref:s},[K("tr",null,[W.showWeekNumber?(x(),U("th",VH,Ee(c(a)("el.datepicker.week")),1)):ye("v-if",!0),(x(!0),U(Pe,null,it(c(m),(be,Te)=>(x(),U("th",{key:Te,scope:"col","aria-label":c(a)("el.datepicker.weeksFull."+be)},Ee(c(a)("el.datepicker.weeks."+be)),9,BH))),128))]),(x(!0),U(Pe,null,it(c(S),(be,Te)=>(x(),U("tr",{key:Te,class:D([c(o).e("row"),{current:ee(be[1])}])},[(x(!0),U(Pe,null,it(be,(ge,J)=>(x(),U("td",{key:`${Te}.${J}`,ref_for:!0,ref:te=>j(ge)&&(i.value=te),class:D(A(ge)),"aria-current":ge.isCurrent?"date":void 0,"aria-selected":ge.isCurrent,tabindex:j(ge)?0:-1,onFocus:V},[Q(c(DH),{cell:ge},null,8,["cell"])],42,zH))),128))],2))),128))],512)],42,FH))}});var Wd=ze(HH,[["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-date-table.vue"]]);const jH=je({...xp,selectionMode:Ew("month")}),WH=["aria-label"],UH=["aria-selected","aria-label","tabindex","onKeydown"],KH={class:"cell"},qH=se({__name:"basic-month-table",props:jH,emits:["changerange","pick","select"],setup(e,{expose:t,emit:n}){const r=e,o=(y,C,k)=>{const E=Ze().locale(k).startOf("month").month(C).year(y),S=E.daysInMonth();return F_(S).map(R=>E.add(R,"day").toDate())},a=Fe("month-table"),{t:l,lang:s}=Pt(),i=B(),u=B(),d=B(r.date.locale("en").localeData().monthsShort().map(y=>y.toLowerCase())),f=B([[],[],[]]),h=B(),p=B(),v=O(()=>{var y,C;const k=f.value,E=Ze().locale(s.value).startOf("month");for(let S=0;S<3;S++){const R=k[S];for(let L=0;L<4;L++){const F=R[L]||(R[L]={row:S,column:L,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1});F.type="normal";const N=S*4+L,A=r.date.startOf("year").month(N),M=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;F.inRange=!!(r.minDate&&A.isSameOrAfter(r.minDate,"month")&&M&&A.isSameOrBefore(M,"month"))||!!(r.minDate&&A.isSameOrBefore(r.minDate,"month")&&M&&A.isSameOrAfter(M,"month")),(y=r.minDate)!=null&&y.isSameOrAfter(M)?(F.start=!!(M&&A.isSame(M,"month")),F.end=r.minDate&&A.isSame(r.minDate,"month")):(F.start=!!(r.minDate&&A.isSame(r.minDate,"month")),F.end=!!(M&&A.isSame(M,"month"))),E.isSame(A)&&(F.type="today"),F.text=N,F.disabled=((C=r.disabledDate)==null?void 0:C.call(r,A.toDate()))||!1}}return k}),g=()=>{var y;(y=u.value)==null||y.focus()},w=y=>{const C={},k=r.date.year(),E=new Date,S=y.text;return C.disabled=r.disabledDate?o(k,S,s.value).every(r.disabledDate):!1,C.current=aa(r.parsedValue).findIndex(R=>Ze.isDayjs(R)&&R.year()===k&&R.month()===S)>=0,C.today=E.getFullYear()===k&&E.getMonth()===S,y.inRange&&(C["in-range"]=!0,y.start&&(C["start-date"]=!0),y.end&&(C["end-date"]=!0)),C},m=y=>{const C=r.date.year(),k=y.text;return aa(r.date).findIndex(E=>E.year()===C&&E.month()===k)>=0},b=y=>{var C;if(!r.rangeState.selecting)return;let k=y.target;if(k.tagName==="A"&&(k=(C=k.parentNode)==null?void 0:C.parentNode),k.tagName==="DIV"&&(k=k.parentNode),k.tagName!=="TD")return;const E=k.parentNode.rowIndex,S=k.cellIndex;v.value[E][S].disabled||(E!==h.value||S!==p.value)&&(h.value=E,p.value=S,n("changerange",{selecting:!0,endDate:r.date.startOf("year").month(E*4+S)}))},_=y=>{var C;const k=(C=y.target)==null?void 0:C.closest("td");if((k==null?void 0:k.tagName)!=="TD"||$o(k,"disabled"))return;const E=k.cellIndex,R=k.parentNode.rowIndex*4+E,L=r.date.startOf("year").month(R);r.selectionMode==="range"?r.rangeState.selecting?(r.minDate&&L>=r.minDate?n("pick",{minDate:r.minDate,maxDate:L}):n("pick",{minDate:L,maxDate:r.minDate}),n("select",!1)):(n("pick",{minDate:L,maxDate:null}),n("select",!0)):n("pick",R)};return $e(()=>r.date,async()=>{var y,C;(y=i.value)!=null&&y.contains(document.activeElement)&&(await qe(),(C=u.value)==null||C.focus())}),t({focus:g}),(y,C)=>(x(),U("table",{role:"grid","aria-label":c(l)("el.datepicker.monthTablePrompt"),class:D(c(a).b()),onClick:_,onMousemove:b},[K("tbody",{ref_key:"tbodyRef",ref:i},[(x(!0),U(Pe,null,it(c(v),(k,E)=>(x(),U("tr",{key:E},[(x(!0),U(Pe,null,it(k,(S,R)=>(x(),U("td",{key:R,ref_for:!0,ref:L=>m(S)&&(u.value=L),class:D(w(S)),"aria-selected":`${m(S)}`,"aria-label":c(l)(`el.datepicker.month${+S.text+1}`),tabindex:m(S)?0:-1,onKeydown:[Dt($t(_,["prevent","stop"]),["space"]),Dt($t(_,["prevent","stop"]),["enter"])]},[K("div",null,[K("span",KH,Ee(c(l)("el.datepicker.months."+d.value[S.text])),1)])],42,UH))),128))]))),128))],512)],42,WH))}});var Ud=ze(qH,[["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-month-table.vue"]]);const{date:YH,disabledDate:GH,parsedValue:XH}=xp,JH=je({date:YH,disabledDate:GH,parsedValue:XH}),ZH=["aria-label"],QH=["aria-selected","tabindex","onKeydown"],ej={class:"cell"},tj={key:1},nj=se({__name:"basic-year-table",props:JH,emits:["pick"],setup(e,{expose:t,emit:n}){const r=e,o=(g,w)=>{const m=Ze(String(g)).locale(w).startOf("year"),_=m.endOf("year").dayOfYear();return F_(_).map(y=>m.add(y,"day").toDate())},a=Fe("year-table"),{t:l,lang:s}=Pt(),i=B(),u=B(),d=O(()=>Math.floor(r.date.year()/10)*10),f=()=>{var g;(g=u.value)==null||g.focus()},h=g=>{const w={},m=Ze().locale(s.value);return w.disabled=r.disabledDate?o(g,s.value).every(r.disabledDate):!1,w.current=aa(r.parsedValue).findIndex(b=>b.year()===g)>=0,w.today=m.year()===g,w},p=g=>g===d.value&&r.date.year()d.value+9||aa(r.date).findIndex(w=>w.year()===g)>=0,v=g=>{const m=g.target.closest("td");if(m&&m.textContent){if($o(m,"disabled"))return;const b=m.textContent||m.innerText;n("pick",Number(b))}};return $e(()=>r.date,async()=>{var g,w;(g=i.value)!=null&&g.contains(document.activeElement)&&(await qe(),(w=u.value)==null||w.focus())}),t({focus:f}),(g,w)=>(x(),U("table",{role:"grid","aria-label":c(l)("el.datepicker.yearTablePrompt"),class:D(c(a).b()),onClick:v},[K("tbody",{ref_key:"tbodyRef",ref:i},[(x(),U(Pe,null,it(3,(m,b)=>K("tr",{key:b},[(x(),U(Pe,null,it(4,(_,y)=>(x(),U(Pe,{key:b+"_"+y},[b*4+y<10?(x(),U("td",{key:0,ref_for:!0,ref:C=>p(c(d)+b*4+y)&&(u.value=C),class:D(["available",h(c(d)+b*4+y)]),"aria-selected":`${p(c(d)+b*4+y)}`,tabindex:p(c(d)+b*4+y)?0:-1,onKeydown:[Dt($t(v,["prevent","stop"]),["space"]),Dt($t(v,["prevent","stop"]),["enter"])]},[K("span",ej,Ee(c(d)+b*4+y),1)],42,QH)):(x(),U("td",tj))],64))),64))])),64))],512)],10,ZH))}});var rj=ze(nj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-year-table.vue"]]);const oj=["onClick"],aj=["aria-label"],lj=["aria-label"],sj=["aria-label"],ij=["aria-label"],uj=se({__name:"panel-date-pick",props:LH,emits:["pick","set-picker-option","panel-change"],setup(e,{emit:t}){const n=e,r=(fe,ve,Ce)=>!0,o=Fe("picker-panel"),a=Fe("date-picker"),l=Pu(),s=to(),{t:i,lang:u}=Pt(),d=Re("EP_PICKER_BASE"),f=Re(tc),{shortcuts:h,disabledDate:p,cellClassName:v,defaultTime:g,arrowControl:w}=d.props,m=zt(d.props,"defaultValue"),b=B(),_=B(Ze().locale(u.value)),y=B(!1),C=O(()=>Ze(g).locale(u.value)),k=O(()=>_.value.month()),E=O(()=>_.value.year()),S=B([]),R=B(null),L=B(null),F=fe=>S.value.length>0?r(fe,S.value,n.format||"HH:mm:ss"):!0,N=fe=>g&&!P.value&&!y.value?C.value.year(fe.year()).month(fe.month()).date(fe.date()):ge.value?fe.millisecond(0):fe.startOf("day"),A=(fe,...ve)=>{if(!fe)t("pick",fe,...ve);else if(De(fe)){const Ce=fe.map(N);t("pick",Ce,...ve)}else t("pick",N(fe),...ve);R.value=null,L.value=null,y.value=!1},M=(fe,ve)=>{if(Y.value==="date"){fe=fe;let Ce=n.parsedValue?n.parsedValue.year(fe.year()).month(fe.month()).date(fe.date()):fe;F(Ce)||(Ce=S.value[0][0].year(fe.year()).month(fe.month()).date(fe.date())),_.value=Ce,A(Ce,ge.value||ve)}else Y.value==="week"?A(fe.date):Y.value==="dates"&&A(fe,!0)},H=fe=>{const ve=fe?"add":"subtract";_.value=_.value[ve](1,"month"),Xe("month")},j=fe=>{const ve=_.value,Ce=fe?"add":"subtract";_.value=V.value==="year"?ve[Ce](10,"year"):ve[Ce](1,"year"),Xe("year")},V=B("date"),X=O(()=>{const fe=i("el.datepicker.year");if(V.value==="year"){const ve=Math.floor(E.value/10)*10;return fe?`${ve} ${fe} - ${ve+9} ${fe}`:`${ve} - ${ve+9}`}return`${E.value} ${fe}`}),I=fe=>{const ve=Ke(fe.value)?fe.value():fe.value;if(ve){A(Ze(ve).locale(u.value));return}fe.onClick&&fe.onClick({attrs:l,slots:s,emit:t})},Y=O(()=>{const{type:fe}=n;return["week","month","year","dates"].includes(fe)?fe:"date"}),ee=O(()=>Y.value==="date"?V.value:Y.value),W=O(()=>!!h.length),re=async fe=>{_.value=_.value.startOf("month").month(fe),Y.value==="month"?A(_.value,!1):(V.value="date",["month","year","date","week"].includes(Y.value)&&(A(_.value,!0),await qe(),ie())),Xe("month")},be=async fe=>{Y.value==="year"?(_.value=_.value.startOf("year").year(fe),A(_.value,!1)):(_.value=_.value.year(fe),V.value="month",["month","year","date","week"].includes(Y.value)&&(A(_.value,!0),await qe(),ie())),Xe("year")},Te=async fe=>{V.value=fe,await qe(),ie()},ge=O(()=>n.type==="datetime"||n.type==="datetimerange"),J=O(()=>ge.value||Y.value==="dates"),te=()=>{if(Y.value==="dates")A(n.parsedValue);else{let fe=n.parsedValue;if(!fe){const ve=Ze(g).locale(u.value),Ce=ue();fe=ve.year(Ce.year()).month(Ce.month()).date(Ce.date())}_.value=fe,A(fe)}},ae=()=>{const ve=Ze().locale(u.value).toDate();y.value=!0,(!p||!p(ve))&&F(ve)&&(_.value=Ze().locale(u.value),A(_.value))},le=O(()=>B_(n.format)),me=O(()=>V_(n.format)),P=O(()=>{if(L.value)return L.value;if(!(!n.parsedValue&&!m.value))return(n.parsedValue||_.value).format(le.value)}),$=O(()=>{if(R.value)return R.value;if(!(!n.parsedValue&&!m.value))return(n.parsedValue||_.value).format(me.value)}),T=B(!1),z=()=>{T.value=!0},Z=()=>{T.value=!1},oe=fe=>({hour:fe.hour(),minute:fe.minute(),second:fe.second(),year:fe.year(),month:fe.month(),date:fe.date()}),_e=(fe,ve,Ce)=>{const{hour:Ye,minute:Se,second:Ae}=oe(fe),q=n.parsedValue?n.parsedValue.hour(Ye).minute(Se).second(Ae):fe;_.value=q,A(_.value,!0),Ce||(T.value=ve)},we=fe=>{const ve=Ze(fe,le.value).locale(u.value);if(ve.isValid()&&F(ve)){const{year:Ce,month:Ye,date:Se}=oe(_.value);_.value=ve.year(Ce).month(Ye).date(Se),L.value=null,T.value=!1,A(_.value,!0)}},he=fe=>{const ve=Ze(fe,me.value).locale(u.value);if(ve.isValid()){if(p&&p(ve.toDate()))return;const{hour:Ce,minute:Ye,second:Se}=oe(_.value);_.value=ve.hour(Ce).minute(Ye).second(Se),R.value=null,A(_.value,!0)}},ke=fe=>Ze.isDayjs(fe)&&fe.isValid()&&(p?!p(fe.toDate()):!0),Me=fe=>Y.value==="dates"?fe.map(ve=>ve.format(n.format)):fe.format(n.format),ne=fe=>Ze(fe,n.format).locale(u.value),ue=()=>{const fe=Ze(m.value).locale(u.value);if(!m.value){const ve=C.value;return Ze().hour(ve.hour()).minute(ve.minute()).second(ve.second()).locale(u.value)}return fe},ie=async()=>{var fe;["week","month","year","date"].includes(Y.value)&&((fe=b.value)==null||fe.focus(),Y.value==="week"&&We(at.down))},Oe=fe=>{const{code:ve}=fe;[at.up,at.down,at.left,at.right,at.home,at.end,at.pageUp,at.pageDown].includes(ve)&&(We(ve),fe.stopPropagation(),fe.preventDefault()),[at.enter,at.space,at.numpadEnter].includes(ve)&&R.value===null&&L.value===null&&(fe.preventDefault(),A(_.value,!1))},We=fe=>{var ve;const{up:Ce,down:Ye,left:Se,right:Ae,home:q,end:Ie,pageUp:et,pageDown:bt}=at,de={year:{[Ce]:-4,[Ye]:4,[Se]:-1,[Ae]:1,offset:(Ne,tt)=>Ne.setFullYear(Ne.getFullYear()+tt)},month:{[Ce]:-4,[Ye]:4,[Se]:-1,[Ae]:1,offset:(Ne,tt)=>Ne.setMonth(Ne.getMonth()+tt)},week:{[Ce]:-1,[Ye]:1,[Se]:-1,[Ae]:1,offset:(Ne,tt)=>Ne.setDate(Ne.getDate()+tt*7)},date:{[Ce]:-7,[Ye]:7,[Se]:-1,[Ae]:1,[q]:Ne=>-Ne.getDay(),[Ie]:Ne=>-Ne.getDay()+6,[et]:Ne=>-new Date(Ne.getFullYear(),Ne.getMonth(),0).getDate(),[bt]:Ne=>new Date(Ne.getFullYear(),Ne.getMonth()+1,0).getDate(),offset:(Ne,tt)=>Ne.setDate(Ne.getDate()+tt)}},xe=_.value.toDate();for(;Math.abs(_.value.diff(xe,"year",!0))<1;){const Ne=de[ee.value];if(!Ne)return;if(Ne.offset(xe,Ke(Ne[fe])?Ne[fe](xe):(ve=Ne[fe])!=null?ve:0),p&&p(xe))break;const tt=Ze(xe).locale(u.value);_.value=tt,t("pick",tt,!0);break}},Xe=fe=>{t("panel-change",_.value.toDate(),fe,V.value)};return $e(()=>Y.value,fe=>{if(["month","year"].includes(fe)){V.value=fe;return}V.value="date"},{immediate:!0}),$e(()=>V.value,()=>{f==null||f.updatePopper()}),$e(()=>m.value,fe=>{fe&&(_.value=ue())},{immediate:!0}),$e(()=>n.parsedValue,fe=>{if(fe){if(Y.value==="dates"||Array.isArray(fe))return;_.value=fe}else _.value=ue()},{immediate:!0}),t("set-picker-option",["isValidValue",ke]),t("set-picker-option",["formatToString",Me]),t("set-picker-option",["parseUserInput",ne]),t("set-picker-option",["handleFocusPicker",ie]),(fe,ve)=>(x(),U("div",{class:D([c(o).b(),c(a).b(),{"has-sidebar":fe.$slots.sidebar||c(W),"has-time":c(ge)}])},[K("div",{class:D(c(o).e("body-wrapper"))},[pe(fe.$slots,"sidebar",{class:D(c(o).e("sidebar"))}),c(W)?(x(),U("div",{key:0,class:D(c(o).e("sidebar"))},[(x(!0),U(Pe,null,it(c(h),(Ce,Ye)=>(x(),U("button",{key:Ye,type:"button",class:D(c(o).e("shortcut")),onClick:Se=>I(Ce)},Ee(Ce.text),11,oj))),128))],2)):ye("v-if",!0),K("div",{class:D(c(o).e("body"))},[c(ge)?(x(),U("div",{key:0,class:D(c(a).e("time-header"))},[K("span",{class:D(c(a).e("editor-wrap"))},[Q(c(Kn),{placeholder:c(i)("el.datepicker.selectDate"),"model-value":c($),size:"small","validate-event":!1,onInput:ve[0]||(ve[0]=Ce=>R.value=Ce),onChange:he},null,8,["placeholder","model-value"])],2),vt((x(),U("span",{class:D(c(a).e("editor-wrap"))},[Q(c(Kn),{placeholder:c(i)("el.datepicker.selectTime"),"model-value":c(P),size:"small","validate-event":!1,onFocus:z,onInput:ve[1]||(ve[1]=Ce=>L.value=Ce),onChange:we},null,8,["placeholder","model-value"]),Q(c(Cu),{visible:T.value,format:c(le),"time-arrow-control":c(w),"parsed-value":_.value,onPick:_e},null,8,["visible","format","time-arrow-control","parsed-value"])],2)),[[c(il),Z]])],2)):ye("v-if",!0),vt(K("div",{class:D([c(a).e("header"),(V.value==="year"||V.value==="month")&&c(a).e("header--bordered")])},[K("span",{class:D(c(a).e("prev-btn"))},[K("button",{type:"button","aria-label":c(i)("el.datepicker.prevYear"),class:D(["d-arrow-left",c(o).e("icon-btn")]),onClick:ve[2]||(ve[2]=Ce=>j(!1))},[Q(c(nt),null,{default:G(()=>[Q(c(tl))]),_:1})],10,aj),vt(K("button",{type:"button","aria-label":c(i)("el.datepicker.prevMonth"),class:D([c(o).e("icon-btn"),"arrow-left"]),onClick:ve[3]||(ve[3]=Ce=>H(!1))},[Q(c(nt),null,{default:G(()=>[Q(c(vu))]),_:1})],10,lj),[[qt,V.value==="date"]])],2),K("span",{role:"button",class:D(c(a).e("header-label")),"aria-live":"polite",tabindex:"0",onKeydown:ve[4]||(ve[4]=Dt(Ce=>Te("year"),["enter"])),onClick:ve[5]||(ve[5]=Ce=>Te("year"))},Ee(c(X)),35),vt(K("span",{role:"button","aria-live":"polite",tabindex:"0",class:D([c(a).e("header-label"),{active:V.value==="month"}]),onKeydown:ve[6]||(ve[6]=Dt(Ce=>Te("month"),["enter"])),onClick:ve[7]||(ve[7]=Ce=>Te("month"))},Ee(c(i)(`el.datepicker.month${c(k)+1}`)),35),[[qt,V.value==="date"]]),K("span",{class:D(c(a).e("next-btn"))},[vt(K("button",{type:"button","aria-label":c(i)("el.datepicker.nextMonth"),class:D([c(o).e("icon-btn"),"arrow-right"]),onClick:ve[8]||(ve[8]=Ce=>H(!0))},[Q(c(nt),null,{default:G(()=>[Q(c(oa))]),_:1})],10,sj),[[qt,V.value==="date"]]),K("button",{type:"button","aria-label":c(i)("el.datepicker.nextYear"),class:D([c(o).e("icon-btn"),"d-arrow-right"]),onClick:ve[9]||(ve[9]=Ce=>j(!0))},[Q(c(nt),null,{default:G(()=>[Q(c(nl))]),_:1})],10,ij)],2)],2),[[qt,V.value!=="time"]]),K("div",{class:D(c(o).e("content")),onKeydown:Oe},[V.value==="date"?(x(),ce(Wd,{key:0,ref_key:"currentViewRef",ref:b,"selection-mode":c(Y),date:_.value,"parsed-value":fe.parsedValue,"disabled-date":c(p),"cell-class-name":c(v),onPick:M},null,8,["selection-mode","date","parsed-value","disabled-date","cell-class-name"])):ye("v-if",!0),V.value==="year"?(x(),ce(rj,{key:1,ref_key:"currentViewRef",ref:b,date:_.value,"disabled-date":c(p),"parsed-value":fe.parsedValue,onPick:be},null,8,["date","disabled-date","parsed-value"])):ye("v-if",!0),V.value==="month"?(x(),ce(Ud,{key:2,ref_key:"currentViewRef",ref:b,date:_.value,"parsed-value":fe.parsedValue,"disabled-date":c(p),onPick:re},null,8,["date","parsed-value","disabled-date"])):ye("v-if",!0)],34)],2)],2),vt(K("div",{class:D(c(o).e("footer"))},[vt(Q(c(Qr),{text:"",size:"small",class:D(c(o).e("link-btn")),onClick:ae},{default:G(()=>[Je(Ee(c(i)("el.datepicker.now")),1)]),_:1},8,["class"]),[[qt,c(Y)!=="dates"]]),Q(c(Qr),{plain:"",size:"small",class:D(c(o).e("link-btn")),onClick:te},{default:G(()=>[Je(Ee(c(i)("el.datepicker.confirm")),1)]),_:1},8,["class"])],2),[[qt,c(J)&&V.value==="date"]])],2))}});var cj=ze(uj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-pick.vue"]]);const dj=je({...kw,...Sw}),fj=e=>{const{emit:t}=lt(),n=Pu(),r=to();return a=>{const l=Ke(a.value)?a.value():a.value;if(l){t("pick",[Ze(l[0]).locale(e.value),Ze(l[1]).locale(e.value)]);return}a.onClick&&a.onClick({attrs:n,slots:r,emit:t})}},Tw=(e,{defaultValue:t,leftDate:n,rightDate:r,unit:o,onParsedValueChanged:a})=>{const{emit:l}=lt(),{pickerNs:s}=Re(Tp),i=Fe("date-range-picker"),{t:u,lang:d}=Pt(),f=fj(d),h=B(),p=B(),v=B({endDate:null,selecting:!1}),g=_=>{v.value=_},w=(_=!1)=>{const y=c(h),C=c(p);jd([y,C])&&l("pick",[y,C],_)},m=_=>{v.value.selecting=_,_||(v.value.endDate=null)},b=()=>{const[_,y]=$w(c(t),{lang:c(d),unit:o,unlinkPanels:e.unlinkPanels});h.value=void 0,p.value=void 0,n.value=_,r.value=y};return $e(t,_=>{_&&b()},{immediate:!0}),$e(()=>e.parsedValue,_=>{if(De(_)&&_.length===2){const[y,C]=_;h.value=y,n.value=y,p.value=C,a(c(h),c(p))}else b()},{immediate:!0}),{minDate:h,maxDate:p,rangeState:v,lang:d,ppNs:s,drpNs:i,handleChangeRange:g,handleRangeConfirm:w,handleShortcutClick:f,onSelect:m,t:u}},pj=["onClick"],mj=["disabled"],hj=["disabled"],vj=["disabled"],gj=["disabled"],ki="month",bj=se({__name:"panel-date-range",props:dj,emits:["pick","set-picker-option","calendar-change","panel-change"],setup(e,{emit:t}){const n=e,r=Re("EP_PICKER_BASE"),{disabledDate:o,cellClassName:a,format:l,defaultTime:s,arrowControl:i,clearable:u}=r.props,d=zt(r.props,"shortcuts"),f=zt(r.props,"defaultValue"),{lang:h}=Pt(),p=B(Ze().locale(h.value)),v=B(Ze().locale(h.value).add(1,ki)),{minDate:g,maxDate:w,rangeState:m,ppNs:b,drpNs:_,handleChangeRange:y,handleRangeConfirm:C,handleShortcutClick:k,onSelect:E,t:S}=Tw(n,{defaultValue:f,leftDate:p,rightDate:v,unit:ki,onParsedValueChanged:Ye}),R=B({min:null,max:null}),L=B({min:null,max:null}),F=O(()=>`${p.value.year()} ${S("el.datepicker.year")} ${S(`el.datepicker.month${p.value.month()+1}`)}`),N=O(()=>`${v.value.year()} ${S("el.datepicker.year")} ${S(`el.datepicker.month${v.value.month()+1}`)}`),A=O(()=>p.value.year()),M=O(()=>p.value.month()),H=O(()=>v.value.year()),j=O(()=>v.value.month()),V=O(()=>!!d.value.length),X=O(()=>R.value.min!==null?R.value.min:g.value?g.value.format(re.value):""),I=O(()=>R.value.max!==null?R.value.max:w.value||g.value?(w.value||g.value).format(re.value):""),Y=O(()=>L.value.min!==null?L.value.min:g.value?g.value.format(W.value):""),ee=O(()=>L.value.max!==null?L.value.max:w.value||g.value?(w.value||g.value).format(W.value):""),W=O(()=>B_(l)),re=O(()=>V_(l)),be=()=>{p.value=p.value.subtract(1,"year"),n.unlinkPanels||(v.value=p.value.add(1,"month")),P("year")},Te=()=>{p.value=p.value.subtract(1,"month"),n.unlinkPanels||(v.value=p.value.add(1,"month")),P("month")},ge=()=>{n.unlinkPanels?v.value=v.value.add(1,"year"):(p.value=p.value.add(1,"year"),v.value=p.value.add(1,"month")),P("year")},J=()=>{n.unlinkPanels?v.value=v.value.add(1,"month"):(p.value=p.value.add(1,"month"),v.value=p.value.add(1,"month")),P("month")},te=()=>{p.value=p.value.add(1,"year"),P("year")},ae=()=>{p.value=p.value.add(1,"month"),P("month")},le=()=>{v.value=v.value.subtract(1,"year"),P("year")},me=()=>{v.value=v.value.subtract(1,"month"),P("month")},P=Se=>{t("panel-change",[p.value.toDate(),v.value.toDate()],Se)},$=O(()=>{const Se=(M.value+1)%12,Ae=M.value+1>=12?1:0;return n.unlinkPanels&&new Date(A.value+Ae,Se)n.unlinkPanels&&H.value*12+j.value-(A.value*12+M.value+1)>=12),z=O(()=>!(g.value&&w.value&&!m.value.selecting&&jd([g.value,w.value]))),Z=O(()=>n.type==="datetime"||n.type==="datetimerange"),oe=(Se,Ae)=>{if(!!Se)return s?Ze(s[Ae]||s).locale(h.value).year(Se.year()).month(Se.month()).date(Se.date()):Se},_e=(Se,Ae=!0)=>{const q=Se.minDate,Ie=Se.maxDate,et=oe(q,0),bt=oe(Ie,1);w.value===bt&&g.value===et||(t("calendar-change",[q.toDate(),Ie&&Ie.toDate()]),w.value=bt,g.value=et,!(!Ae||Z.value)&&C())},we=B(!1),he=B(!1),ke=()=>{we.value=!1},Me=()=>{he.value=!1},ne=(Se,Ae)=>{R.value[Ae]=Se;const q=Ze(Se,re.value).locale(h.value);if(q.isValid()){if(o&&o(q.toDate()))return;Ae==="min"?(p.value=q,g.value=(g.value||p.value).year(q.year()).month(q.month()).date(q.date()),!n.unlinkPanels&&(!w.value||w.value.isBefore(g.value))&&(v.value=q.add(1,"month"),w.value=g.value.add(1,"month"))):(v.value=q,w.value=(w.value||v.value).year(q.year()).month(q.month()).date(q.date()),!n.unlinkPanels&&(!g.value||g.value.isAfter(w.value))&&(p.value=q.subtract(1,"month"),g.value=w.value.subtract(1,"month")))}},ue=(Se,Ae)=>{R.value[Ae]=null},ie=(Se,Ae)=>{L.value[Ae]=Se;const q=Ze(Se,W.value).locale(h.value);q.isValid()&&(Ae==="min"?(we.value=!0,g.value=(g.value||p.value).hour(q.hour()).minute(q.minute()).second(q.second()),(!w.value||w.value.isBefore(g.value))&&(w.value=g.value)):(he.value=!0,w.value=(w.value||v.value).hour(q.hour()).minute(q.minute()).second(q.second()),v.value=w.value,w.value&&w.value.isBefore(g.value)&&(g.value=w.value)))},Oe=(Se,Ae)=>{L.value[Ae]=null,Ae==="min"?(p.value=g.value,we.value=!1):(v.value=w.value,he.value=!1)},We=(Se,Ae,q)=>{L.value.min||(Se&&(p.value=Se,g.value=(g.value||p.value).hour(Se.hour()).minute(Se.minute()).second(Se.second())),q||(we.value=Ae),(!w.value||w.value.isBefore(g.value))&&(w.value=g.value,v.value=Se))},Xe=(Se,Ae,q)=>{L.value.max||(Se&&(v.value=Se,w.value=(w.value||v.value).hour(Se.hour()).minute(Se.minute()).second(Se.second())),q||(he.value=Ae),w.value&&w.value.isBefore(g.value)&&(g.value=w.value))},fe=()=>{p.value=$w(c(f),{lang:c(h),unit:"month",unlinkPanels:n.unlinkPanels})[0],v.value=p.value.add(1,"month"),t("pick",null)},ve=Se=>De(Se)?Se.map(Ae=>Ae.format(l)):Se.format(l),Ce=Se=>De(Se)?Se.map(Ae=>Ze(Ae,l).locale(h.value)):Ze(Se,l).locale(h.value);function Ye(Se,Ae){if(n.unlinkPanels&&Ae){const q=(Se==null?void 0:Se.year())||0,Ie=(Se==null?void 0:Se.month())||0,et=Ae.year(),bt=Ae.month();v.value=q===et&&Ie===bt?Ae.add(1,ki):Ae}else v.value=p.value.add(1,ki),Ae&&(v.value=v.value.hour(Ae.hour()).minute(Ae.minute()).second(Ae.second()))}return t("set-picker-option",["isValidValue",jd]),t("set-picker-option",["parseUserInput",Ce]),t("set-picker-option",["formatToString",ve]),t("set-picker-option",["handleClear",fe]),(Se,Ae)=>(x(),U("div",{class:D([c(b).b(),c(_).b(),{"has-sidebar":Se.$slots.sidebar||c(V),"has-time":c(Z)}])},[K("div",{class:D(c(b).e("body-wrapper"))},[pe(Se.$slots,"sidebar",{class:D(c(b).e("sidebar"))}),c(V)?(x(),U("div",{key:0,class:D(c(b).e("sidebar"))},[(x(!0),U(Pe,null,it(c(d),(q,Ie)=>(x(),U("button",{key:Ie,type:"button",class:D(c(b).e("shortcut")),onClick:et=>c(k)(q)},Ee(q.text),11,pj))),128))],2)):ye("v-if",!0),K("div",{class:D(c(b).e("body"))},[c(Z)?(x(),U("div",{key:0,class:D(c(_).e("time-header"))},[K("span",{class:D(c(_).e("editors-wrap"))},[K("span",{class:D(c(_).e("time-picker-wrap"))},[Q(c(Kn),{size:"small",disabled:c(m).selecting,placeholder:c(S)("el.datepicker.startDate"),class:D(c(_).e("editor")),"model-value":c(X),"validate-event":!1,onInput:Ae[0]||(Ae[0]=q=>ne(q,"min")),onChange:Ae[1]||(Ae[1]=q=>ue(q,"min"))},null,8,["disabled","placeholder","class","model-value"])],2),vt((x(),U("span",{class:D(c(_).e("time-picker-wrap"))},[Q(c(Kn),{size:"small",class:D(c(_).e("editor")),disabled:c(m).selecting,placeholder:c(S)("el.datepicker.startTime"),"model-value":c(Y),"validate-event":!1,onFocus:Ae[2]||(Ae[2]=q=>we.value=!0),onInput:Ae[3]||(Ae[3]=q=>ie(q,"min")),onChange:Ae[4]||(Ae[4]=q=>Oe(q,"min"))},null,8,["class","disabled","placeholder","model-value"]),Q(c(Cu),{visible:we.value,format:c(W),"datetime-role":"start","time-arrow-control":c(i),"parsed-value":p.value,onPick:We},null,8,["visible","format","time-arrow-control","parsed-value"])],2)),[[c(il),ke]])],2),K("span",null,[Q(c(nt),null,{default:G(()=>[Q(c(oa))]),_:1})]),K("span",{class:D([c(_).e("editors-wrap"),"is-right"])},[K("span",{class:D(c(_).e("time-picker-wrap"))},[Q(c(Kn),{size:"small",class:D(c(_).e("editor")),disabled:c(m).selecting,placeholder:c(S)("el.datepicker.endDate"),"model-value":c(I),readonly:!c(g),"validate-event":!1,onInput:Ae[5]||(Ae[5]=q=>ne(q,"max")),onChange:Ae[6]||(Ae[6]=q=>ue(q,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"])],2),vt((x(),U("span",{class:D(c(_).e("time-picker-wrap"))},[Q(c(Kn),{size:"small",class:D(c(_).e("editor")),disabled:c(m).selecting,placeholder:c(S)("el.datepicker.endTime"),"model-value":c(ee),readonly:!c(g),"validate-event":!1,onFocus:Ae[7]||(Ae[7]=q=>c(g)&&(he.value=!0)),onInput:Ae[8]||(Ae[8]=q=>ie(q,"max")),onChange:Ae[9]||(Ae[9]=q=>Oe(q,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"]),Q(c(Cu),{"datetime-role":"end",visible:he.value,format:c(W),"time-arrow-control":c(i),"parsed-value":v.value,onPick:Xe},null,8,["visible","format","time-arrow-control","parsed-value"])],2)),[[c(il),Me]])],2)],2)):ye("v-if",!0),K("div",{class:D([[c(b).e("content"),c(_).e("content")],"is-left"])},[K("div",{class:D(c(_).e("header"))},[K("button",{type:"button",class:D([c(b).e("icon-btn"),"d-arrow-left"]),onClick:be},[Q(c(nt),null,{default:G(()=>[Q(c(tl))]),_:1})],2),K("button",{type:"button",class:D([c(b).e("icon-btn"),"arrow-left"]),onClick:Te},[Q(c(nt),null,{default:G(()=>[Q(c(vu))]),_:1})],2),Se.unlinkPanels?(x(),U("button",{key:0,type:"button",disabled:!c(T),class:D([[c(b).e("icon-btn"),{"is-disabled":!c(T)}],"d-arrow-right"]),onClick:te},[Q(c(nt),null,{default:G(()=>[Q(c(nl))]),_:1})],10,mj)):ye("v-if",!0),Se.unlinkPanels?(x(),U("button",{key:1,type:"button",disabled:!c($),class:D([[c(b).e("icon-btn"),{"is-disabled":!c($)}],"arrow-right"]),onClick:ae},[Q(c(nt),null,{default:G(()=>[Q(c(oa))]),_:1})],10,hj)):ye("v-if",!0),K("div",null,Ee(c(F)),1)],2),Q(Wd,{"selection-mode":"range",date:p.value,"min-date":c(g),"max-date":c(w),"range-state":c(m),"disabled-date":c(o),"cell-class-name":c(a),onChangerange:c(y),onPick:_e,onSelect:c(E)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])],2),K("div",{class:D([[c(b).e("content"),c(_).e("content")],"is-right"])},[K("div",{class:D(c(_).e("header"))},[Se.unlinkPanels?(x(),U("button",{key:0,type:"button",disabled:!c(T),class:D([[c(b).e("icon-btn"),{"is-disabled":!c(T)}],"d-arrow-left"]),onClick:le},[Q(c(nt),null,{default:G(()=>[Q(c(tl))]),_:1})],10,vj)):ye("v-if",!0),Se.unlinkPanels?(x(),U("button",{key:1,type:"button",disabled:!c($),class:D([[c(b).e("icon-btn"),{"is-disabled":!c($)}],"arrow-left"]),onClick:me},[Q(c(nt),null,{default:G(()=>[Q(c(vu))]),_:1})],10,gj)):ye("v-if",!0),K("button",{type:"button",class:D([c(b).e("icon-btn"),"d-arrow-right"]),onClick:ge},[Q(c(nt),null,{default:G(()=>[Q(c(nl))]),_:1})],2),K("button",{type:"button",class:D([c(b).e("icon-btn"),"arrow-right"]),onClick:J},[Q(c(nt),null,{default:G(()=>[Q(c(oa))]),_:1})],2),K("div",null,Ee(c(N)),1)],2),Q(Wd,{"selection-mode":"range",date:v.value,"min-date":c(g),"max-date":c(w),"range-state":c(m),"disabled-date":c(o),"cell-class-name":c(a),onChangerange:c(y),onPick:_e,onSelect:c(E)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])],2)],2)],2),c(Z)?(x(),U("div",{key:0,class:D(c(b).e("footer"))},[c(u)?(x(),ce(c(Qr),{key:0,text:"",size:"small",class:D(c(b).e("link-btn")),onClick:fe},{default:G(()=>[Je(Ee(c(S)("el.datepicker.clear")),1)]),_:1},8,["class"])):ye("v-if",!0),Q(c(Qr),{plain:"",size:"small",class:D(c(b).e("link-btn")),disabled:c(z),onClick:Ae[10]||(Ae[10]=q=>c(C)(!1))},{default:G(()=>[Je(Ee(c(S)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])],2)):ye("v-if",!0)],2))}});var yj=ze(bj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-range.vue"]]);const _j=je({...Sw}),wj=["pick","set-picker-option"],Cj=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const{t:r}=Pt(),o=()=>{t.value=t.value.subtract(1,"year"),e.value||(n.value=n.value.subtract(1,"year"))},a=()=>{e.value||(t.value=t.value.add(1,"year")),n.value=n.value.add(1,"year")},l=()=>{t.value=t.value.add(1,"year")},s=()=>{n.value=n.value.subtract(1,"year")},i=O(()=>`${t.value.year()} ${r("el.datepicker.year")}`),u=O(()=>`${n.value.year()} ${r("el.datepicker.year")}`),d=O(()=>t.value.year()),f=O(()=>n.value.year()===t.value.year()?t.value.year()+1:n.value.year());return{leftPrevYear:o,rightNextYear:a,leftNextYear:l,rightPrevYear:s,leftLabel:i,rightLabel:u,leftYear:d,rightYear:f}},kj=["onClick"],Sj=["disabled"],Ej=["disabled"],Si="year",$j=se({name:"DatePickerMonthRange"}),Tj=se({...$j,props:_j,emits:wj,setup(e,{emit:t}){const n=e,{lang:r}=Pt(),o=Re("EP_PICKER_BASE"),{shortcuts:a,disabledDate:l,format:s}=o.props,i=zt(o.props,"defaultValue"),u=B(Ze().locale(r.value)),d=B(Ze().locale(r.value).add(1,Si)),{minDate:f,maxDate:h,rangeState:p,ppNs:v,drpNs:g,handleChangeRange:w,handleRangeConfirm:m,handleShortcutClick:b,onSelect:_}=Tw(n,{defaultValue:i,leftDate:u,rightDate:d,unit:Si,onParsedValueChanged:j}),y=O(()=>!!a.length),{leftPrevYear:C,rightNextYear:k,leftNextYear:E,rightPrevYear:S,leftLabel:R,rightLabel:L,leftYear:F,rightYear:N}=Cj({unlinkPanels:zt(n,"unlinkPanels"),leftDate:u,rightDate:d}),A=O(()=>n.unlinkPanels&&N.value>F.value+1),M=(V,X=!0)=>{const I=V.minDate,Y=V.maxDate;h.value===Y&&f.value===I||(h.value=Y,f.value=I,X&&m())},H=V=>V.map(X=>X.format(s));function j(V,X){if(n.unlinkPanels&&X){const I=(V==null?void 0:V.year())||0,Y=X.year();d.value=I===Y?X.add(1,Si):X}else d.value=u.value.add(1,Si)}return t("set-picker-option",["formatToString",H]),(V,X)=>(x(),U("div",{class:D([c(v).b(),c(g).b(),{"has-sidebar":Boolean(V.$slots.sidebar)||c(y)}])},[K("div",{class:D(c(v).e("body-wrapper"))},[pe(V.$slots,"sidebar",{class:D(c(v).e("sidebar"))}),c(y)?(x(),U("div",{key:0,class:D(c(v).e("sidebar"))},[(x(!0),U(Pe,null,it(c(a),(I,Y)=>(x(),U("button",{key:Y,type:"button",class:D(c(v).e("shortcut")),onClick:ee=>c(b)(I)},Ee(I.text),11,kj))),128))],2)):ye("v-if",!0),K("div",{class:D(c(v).e("body"))},[K("div",{class:D([[c(v).e("content"),c(g).e("content")],"is-left"])},[K("div",{class:D(c(g).e("header"))},[K("button",{type:"button",class:D([c(v).e("icon-btn"),"d-arrow-left"]),onClick:X[0]||(X[0]=(...I)=>c(C)&&c(C)(...I))},[Q(c(nt),null,{default:G(()=>[Q(c(tl))]),_:1})],2),V.unlinkPanels?(x(),U("button",{key:0,type:"button",disabled:!c(A),class:D([[c(v).e("icon-btn"),{[c(v).is("disabled")]:!c(A)}],"d-arrow-right"]),onClick:X[1]||(X[1]=(...I)=>c(E)&&c(E)(...I))},[Q(c(nt),null,{default:G(()=>[Q(c(nl))]),_:1})],10,Sj)):ye("v-if",!0),K("div",null,Ee(c(R)),1)],2),Q(Ud,{"selection-mode":"range",date:u.value,"min-date":c(f),"max-date":c(h),"range-state":c(p),"disabled-date":c(l),onChangerange:c(w),onPick:M,onSelect:c(_)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2),K("div",{class:D([[c(v).e("content"),c(g).e("content")],"is-right"])},[K("div",{class:D(c(g).e("header"))},[V.unlinkPanels?(x(),U("button",{key:0,type:"button",disabled:!c(A),class:D([[c(v).e("icon-btn"),{"is-disabled":!c(A)}],"d-arrow-left"]),onClick:X[2]||(X[2]=(...I)=>c(S)&&c(S)(...I))},[Q(c(nt),null,{default:G(()=>[Q(c(tl))]),_:1})],10,Ej)):ye("v-if",!0),K("button",{type:"button",class:D([c(v).e("icon-btn"),"d-arrow-right"]),onClick:X[3]||(X[3]=(...I)=>c(k)&&c(k)(...I))},[Q(c(nt),null,{default:G(()=>[Q(c(nl))]),_:1})],2),K("div",null,Ee(c(L)),1)],2),Q(Ud,{"selection-mode":"range",date:d.value,"min-date":c(f),"max-date":c(h),"range-state":c(p),"disabled-date":c(l),onChangerange:c(w),onPick:M,onSelect:c(_)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2)],2)],2)],2))}});var xj=ze(Tj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-month-range.vue"]]);const Oj=function(e){switch(e){case"daterange":case"datetimerange":return yj;case"monthrange":return xj;default:return cj}};Ze.extend(W7);Ze.extend(EH);Ze.extend(D_);Ze.extend($H);Ze.extend(TH);Ze.extend(xH);Ze.extend(OH);Ze.extend(AH);var Aj=se({name:"ElDatePicker",install:null,props:IH,emits:["update:modelValue"],setup(e,{expose:t,emit:n,slots:r}){const o=Fe("picker-panel");yt("ElPopperOptions",Xt(zt(e,"popperOptions"))),yt(Tp,{slots:r,pickerNs:o});const a=B();t({focus:(i=!0)=>{var u;(u=a.value)==null||u.focus(i)},handleOpen:()=>{var i;(i=a.value)==null||i.handleOpen()},handleClose:()=>{var i;(i=a.value)==null||i.handleClose()}});const s=i=>{n("update:modelValue",i)};return()=>{var i;const u=(i=e.format)!=null?i:b7[e.type]||La,d=Oj(e.type);return Q(j_,Ht(e,{format:u,type:e.type,ref:a,"onUpdate:modelValue":s}),{default:f=>Q(d,f,null),"range-separator":r["range-separator"]})}}});const Ki=Aj;Ki.install=e=>{e.component(Ki.name,Ki)};const Ij=Ki,Pj=je({mask:{type:Boolean,default:!0},customMaskEvent:{type:Boolean,default:!1},overlayClass:{type:Le([String,Array,Object])},zIndex:{type:Le([String,Number])}}),Lj={click:e=>e instanceof MouseEvent},Mj="overlay";var Rj=se({name:"ElOverlay",props:Pj,emits:Lj,setup(e,{slots:t,emit:n}){const r=Fe(Mj),o=i=>{n("click",i)},{onClick:a,onMousedown:l,onMouseup:s}=c_(e.customMaskEvent?void 0:o);return()=>e.mask?Q("div",{class:[r.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:a,onMousedown:l,onMouseup:s},[pe(t,"default")],Di.STYLE|Di.CLASS|Di.PROPS,["onClick","onMouseup","onMousedown"]):He("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[pe(t,"default")])}});const Nj=Rj,xw=Symbol("dialogInjectionKey"),Ow=je({center:{type:Boolean,default:!1},alignCenter:{type:Boolean,default:!1},closeIcon:{type:Cn},customClass:{type:String,default:""},draggable:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},showClose:{type:Boolean,default:!0},title:{type:String,default:""}}),Dj={close:()=>!0},Fj=["aria-label"],Vj=["id"],Bj=se({name:"ElDialogContent"}),zj=se({...Bj,props:Ow,emits:Dj,setup(e){const t=e,{t:n}=Pt(),{Close:r}=A5,{dialogRef:o,headerRef:a,bodyId:l,ns:s,style:i}=Re(xw),{focusTrapRef:u}=Re(Cp),d=dp(u,o),f=O(()=>t.draggable);return V5(o,a,f),(h,p)=>(x(),U("div",{ref:c(d),class:D([c(s).b(),c(s).is("fullscreen",h.fullscreen),c(s).is("draggable",c(f)),c(s).is("align-center",h.alignCenter),{[c(s).m("center")]:h.center},h.customClass]),style:Qe(c(i)),tabindex:"-1"},[K("header",{ref_key:"headerRef",ref:a,class:D(c(s).e("header"))},[pe(h.$slots,"header",{},()=>[K("span",{role:"heading",class:D(c(s).e("title"))},Ee(h.title),3)]),h.showClose?(x(),U("button",{key:0,"aria-label":c(n)("el.dialog.close"),class:D(c(s).e("headerbtn")),type:"button",onClick:p[0]||(p[0]=v=>h.$emit("close"))},[Q(c(nt),{class:D(c(s).e("close"))},{default:G(()=>[(x(),ce(Lt(h.closeIcon||c(r))))]),_:1},8,["class"])],10,Fj)):ye("v-if",!0)],2),K("div",{id:c(l),class:D(c(s).e("body"))},[pe(h.$slots,"default")],10,Vj),h.$slots.footer?(x(),U("footer",{key:0,class:D(c(s).e("footer"))},[pe(h.$slots,"footer")],2)):ye("v-if",!0)],6))}});var Hj=ze(zj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog-content.vue"]]);const jj=je({...Ow,appendToBody:{type:Boolean,default:!1},beforeClose:{type:Le(Function)},destroyOnClose:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:{type:Boolean,default:!1},modalClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:{type:Boolean,default:!1}}),Wj={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[Ct]:e=>_n(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},Uj=(e,t)=>{const r=lt().emit,{nextZIndex:o}=Zu();let a="";const l=Lo(),s=Lo(),i=B(!1),u=B(!1),d=B(!1),f=B(e.zIndex||o());let h,p;const v=Qu("namespace",bu),g=O(()=>{const M={},H=`--${v.value}-dialog`;return e.fullscreen||(e.top&&(M[`${H}-margin-top`]=e.top),e.width&&(M[`${H}-width`]=Jn(e.width))),M}),w=O(()=>e.alignCenter?{display:"flex"}:{});function m(){r("opened")}function b(){r("closed"),r(Ct,!1),e.destroyOnClose&&(d.value=!1)}function _(){r("close")}function y(){p==null||p(),h==null||h(),e.openDelay&&e.openDelay>0?{stop:h}=ed(()=>S(),e.openDelay):S()}function C(){h==null||h(),p==null||p(),e.closeDelay&&e.closeDelay>0?{stop:p}=ed(()=>R(),e.closeDelay):R()}function k(){function M(H){H||(u.value=!0,i.value=!1)}e.beforeClose?e.beforeClose(M):C()}function E(){e.closeOnClickModal&&k()}function S(){!xt||(i.value=!0)}function R(){i.value=!1}function L(){r("openAutoFocus")}function F(){r("closeAutoFocus")}function N(M){var H;((H=M.detail)==null?void 0:H.focusReason)==="pointer"&&M.preventDefault()}e.lockScroll&&K5(i);function A(){e.closeOnPressEscape&&k()}return $e(()=>e.modelValue,M=>{M?(u.value=!1,y(),d.value=!0,f.value=e.zIndex?f.value++:o(),qe(()=>{r("open"),t.value&&(t.value.scrollTop=0)})):i.value&&C()}),$e(()=>e.fullscreen,M=>{!t.value||(M?(a=t.value.style.transform,t.value.style.transform=""):t.value.style.transform=a)}),dt(()=>{e.modelValue&&(i.value=!0,d.value=!0,y())}),{afterEnter:m,afterLeave:b,beforeLeave:_,handleClose:k,onModalClick:E,close:C,doClose:R,onOpenAutoFocus:L,onCloseAutoFocus:F,onCloseRequested:A,onFocusoutPrevented:N,titleId:l,bodyId:s,closed:u,style:g,overlayDialogStyle:w,rendered:d,visible:i,zIndex:f}},Kj=["aria-label","aria-labelledby","aria-describedby"],qj=se({name:"ElDialog",inheritAttrs:!1}),Yj=se({...qj,props:jj,emits:Wj,setup(e,{expose:t}){const n=e,r=to();_s({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},O(()=>!!r.title)),_s({scope:"el-dialog",from:"custom-class",replacement:"class",version:"2.3.0",ref:"https://element-plus.org/en-US/component/dialog.html#attributes",type:"Attribute"},O(()=>!!n.customClass));const o=Fe("dialog"),a=B(),l=B(),s=B(),{visible:i,titleId:u,bodyId:d,style:f,overlayDialogStyle:h,rendered:p,zIndex:v,afterEnter:g,afterLeave:w,beforeLeave:m,handleClose:b,onModalClick:_,onOpenAutoFocus:y,onCloseAutoFocus:C,onCloseRequested:k,onFocusoutPrevented:E}=Uj(n,a);yt(xw,{dialogRef:a,headerRef:l,bodyId:d,ns:o,rendered:p,style:f});const S=c_(_),R=O(()=>n.draggable&&!n.fullscreen);return t({visible:i,dialogContentRef:s}),(L,F)=>(x(),ce(Vb,{to:"body",disabled:!L.appendToBody},[Q(Mn,{name:"dialog-fade",onAfterEnter:c(g),onAfterLeave:c(w),onBeforeLeave:c(m),persisted:""},{default:G(()=>[vt(Q(c(Nj),{"custom-mask-event":"",mask:L.modal,"overlay-class":L.modalClass,"z-index":c(v)},{default:G(()=>[K("div",{role:"dialog","aria-modal":"true","aria-label":L.title||void 0,"aria-labelledby":L.title?void 0:c(u),"aria-describedby":c(d),class:D(`${c(o).namespace.value}-overlay-dialog`),style:Qe(c(h)),onClick:F[0]||(F[0]=(...N)=>c(S).onClick&&c(S).onClick(...N)),onMousedown:F[1]||(F[1]=(...N)=>c(S).onMousedown&&c(S).onMousedown(...N)),onMouseup:F[2]||(F[2]=(...N)=>c(S).onMouseup&&c(S).onMouseup(...N))},[Q(c(A_),{loop:"",trapped:c(i),"focus-start-el":"container",onFocusAfterTrapped:c(y),onFocusAfterReleased:c(C),onFocusoutPrevented:c(E),onReleaseRequested:c(k)},{default:G(()=>[c(p)?(x(),ce(Hj,Ht({key:0,ref_key:"dialogContentRef",ref:s},L.$attrs,{"custom-class":L.customClass,center:L.center,"align-center":L.alignCenter,"close-icon":L.closeIcon,draggable:c(R),fullscreen:L.fullscreen,"show-close":L.showClose,title:L.title,onClose:c(b)}),Is({header:G(()=>[L.$slots.title?pe(L.$slots,"title",{key:1}):pe(L.$slots,"header",{key:0,close:c(b),titleId:c(u),titleClass:c(o).e("title")})]),default:G(()=>[pe(L.$slots,"default")]),_:2},[L.$slots.footer?{name:"footer",fn:G(()=>[pe(L.$slots,"footer")])}:void 0]),1040,["custom-class","center","align-center","close-icon","draggable","fullscreen","show-close","title","onClose"])):ye("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,Kj)]),_:3},8,["mask","overlay-class","z-index"]),[[qt,c(i)]])]),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"]))}});var Gj=ze(Yj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog.vue"]]);const Xj=Bt(Gj),Jj=je({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:Le(String),default:"solid"}}),Zj=se({name:"ElDivider"}),Qj=se({...Zj,props:Jj,setup(e){const t=e,n=Fe("divider"),r=O(()=>n.cssVar({"border-style":t.borderStyle}));return(o,a)=>(x(),U("div",{class:D([c(n).b(),c(n).m(o.direction)]),style:Qe(c(r)),role:"separator"},[o.$slots.default&&o.direction!=="vertical"?(x(),U("div",{key:0,class:D([c(n).e("text"),c(n).is(o.contentPosition)])},[pe(o.$slots,"default")],2)):ye("v-if",!0)],6))}});var eW=ze(Qj,[["__file","/home/runner/work/element-plus/element-plus/packages/components/divider/src/divider.vue"]]);const tW=Bt(eW),nW=se({inheritAttrs:!1});function rW(e,t,n,r,o,a){return pe(e.$slots,"default")}var oW=ze(nW,[["render",rW],["__file","/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection.vue"]]);const aW=se({name:"ElCollectionItem",inheritAttrs:!1});function lW(e,t,n,r,o,a){return pe(e.$slots,"default")}var sW=ze(aW,[["render",lW],["__file","/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection-item.vue"]]);const Aw="data-el-collection-item",Iw=e=>{const t=`El${e}Collection`,n=`${t}Item`,r=Symbol(t),o=Symbol(n),a={...oW,name:t,setup(){const s=B(null),i=new Map;yt(r,{itemMap:i,getItems:()=>{const d=c(s);if(!d)return[];const f=Array.from(d.querySelectorAll(`[${Aw}]`));return[...i.values()].sort((p,v)=>f.indexOf(p.ref)-f.indexOf(v.ref))},collectionRef:s})}},l={...sW,name:n,setup(s,{attrs:i}){const u=B(null),d=Re(r,void 0);yt(o,{collectionItemRef:u}),dt(()=>{const f=c(u);f&&d.itemMap.set(f,{ref:f,...i})}),rn(()=>{const f=c(u);d.itemMap.delete(f)})}};return{COLLECTION_INJECTION_KEY:r,COLLECTION_ITEM_INJECTION_KEY:o,ElCollection:a,ElCollectionItem:l}},iW=je({style:{type:Le([String,Array,Object])},currentTabId:{type:Le(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:Le(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:uW,ElCollectionItem:cW,COLLECTION_INJECTION_KEY:Op,COLLECTION_ITEM_INJECTION_KEY:dW}=Iw("RovingFocusGroup"),Ap=Symbol("elRovingFocusGroup"),Pw=Symbol("elRovingFocusGroupItem"),fW={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},pW=(e,t)=>{if(t!=="rtl")return e;switch(e){case at.right:return at.left;case at.left:return at.right;default:return e}},mW=(e,t,n)=>{const r=pW(e.key,n);if(!(t==="vertical"&&[at.left,at.right].includes(r))&&!(t==="horizontal"&&[at.up,at.down].includes(r)))return fW[r]},hW=(e,t)=>e.map((n,r)=>e[(r+t)%e.length]),Ip=e=>{const{activeElement:t}=document;for(const n of e)if(n===t||(n.focus(),t!==document.activeElement))return},Rg="currentTabIdChange",Ng="rovingFocusGroup.entryFocus",vW={bubbles:!1,cancelable:!0},gW=se({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:iW,emits:[Rg,"entryFocus"],setup(e,{emit:t}){var n;const r=B((n=e.currentTabId||e.defaultCurrentTabId)!=null?n:null),o=B(!1),a=B(!1),l=B(null),{getItems:s}=Re(Op,void 0),i=O(()=>[{outline:"none"},e.style]),u=g=>{t(Rg,g)},d=()=>{o.value=!0},f=Kt(g=>{var w;(w=e.onMousedown)==null||w.call(e,g)},()=>{a.value=!0}),h=Kt(g=>{var w;(w=e.onFocus)==null||w.call(e,g)},g=>{const w=!c(a),{target:m,currentTarget:b}=g;if(m===b&&w&&!c(o)){const _=new Event(Ng,vW);if(b==null||b.dispatchEvent(_),!_.defaultPrevented){const y=s().filter(R=>R.focusable),C=y.find(R=>R.active),k=y.find(R=>R.id===c(r)),S=[C,k,...y].filter(Boolean).map(R=>R.ref);Ip(S)}}a.value=!1}),p=Kt(g=>{var w;(w=e.onBlur)==null||w.call(e,g)},()=>{o.value=!1}),v=(...g)=>{t("entryFocus",...g)};yt(Ap,{currentTabbedId:pa(r),loop:zt(e,"loop"),tabIndex:O(()=>c(o)?-1:0),rovingFocusGroupRef:l,rovingFocusGroupRootStyle:i,orientation:zt(e,"orientation"),dir:zt(e,"dir"),onItemFocus:u,onItemShiftTab:d,onBlur:p,onFocus:h,onMousedown:f}),$e(()=>e.currentTabId,g=>{r.value=g!=null?g:null}),An(l,Ng,v)}});function bW(e,t,n,r,o,a){return pe(e.$slots,"default")}var yW=ze(gW,[["render",bW],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-group-impl.vue"]]);const _W=se({name:"ElRovingFocusGroup",components:{ElFocusGroupCollection:uW,ElRovingFocusGroupImpl:yW}});function wW(e,t,n,r,o,a){const l=Ve("el-roving-focus-group-impl"),s=Ve("el-focus-group-collection");return x(),ce(s,null,{default:G(()=>[Q(l,O2(jb(e.$attrs)),{default:G(()=>[pe(e.$slots,"default")]),_:3},16)]),_:3})}var CW=ze(_W,[["render",wW],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-group.vue"]]);const kW=se({components:{ElRovingFocusCollectionItem:cW},props:{focusable:{type:Boolean,default:!0},active:{type:Boolean,default:!1}},emits:["mousedown","focus","keydown"],setup(e,{emit:t}){const{currentTabbedId:n,loop:r,onItemFocus:o,onItemShiftTab:a}=Re(Ap,void 0),{getItems:l}=Re(Op,void 0),s=Lo(),i=B(null),u=Kt(p=>{t("mousedown",p)},p=>{e.focusable?o(c(s)):p.preventDefault()}),d=Kt(p=>{t("focus",p)},()=>{o(c(s))}),f=Kt(p=>{t("keydown",p)},p=>{const{key:v,shiftKey:g,target:w,currentTarget:m}=p;if(v===at.tab&&g){a();return}if(w!==m)return;const b=mW(p);if(b){p.preventDefault();let y=l().filter(C=>C.focusable).map(C=>C.ref);switch(b){case"last":{y.reverse();break}case"prev":case"next":{b==="prev"&&y.reverse();const C=y.indexOf(m);y=r.value?hW(y,C+1):y.slice(C+1);break}}qe(()=>{Ip(y)})}}),h=O(()=>n.value===c(s));return yt(Pw,{rovingFocusGroupItemRef:i,tabIndex:O(()=>c(h)?0:-1),handleMousedown:u,handleFocus:d,handleKeydown:f}),{id:s,handleKeydown:f,handleFocus:d,handleMousedown:u}}});function SW(e,t,n,r,o,a){const l=Ve("el-roving-focus-collection-item");return x(),ce(l,{id:e.id,focusable:e.focusable,active:e.active},{default:G(()=>[pe(e.$slots,"default")]),_:3},8,["id","focusable","active"])}var EW=ze(kW,[["render",SW],["__file","/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-item.vue"]]);const $W=je({trigger:Ep.trigger,effect:{...Ss.effect,default:"light"},type:{type:Le(String)},placement:{type:Le(String),default:"bottom"},popperOptions:{type:Le(Object),default:()=>({})},id:String,size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:Le([Number,String]),default:0},maxHeight:{type:Le([Number,String]),default:""},popperClass:{type:String,default:""},disabled:{type:Boolean,default:!1},role:{type:String,default:"menu"},buttonProps:{type:Le(Object)},teleported:Ss.teleported}),Lw=je({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:Cn}}),TW=je({onKeydown:{type:Le(Function)}}),xW=[at.down,at.pageDown,at.home],Mw=[at.up,at.pageUp,at.end],OW=[...xW,...Mw],{ElCollection:AW,ElCollectionItem:IW,COLLECTION_INJECTION_KEY:PW,COLLECTION_ITEM_INJECTION_KEY:LW}=Iw("Dropdown"),nc=Symbol("elDropdown"),{ButtonGroup:MW}=Qr,RW=se({name:"ElDropdown",components:{ElButton:Qr,ElButtonGroup:MW,ElScrollbar:yl,ElDropdownCollection:AW,ElTooltip:Ca,ElRovingFocusGroup:CW,ElOnlyChild:$_,ElIcon:nt,ArrowDown:vl},props:$W,emits:["visible-change","click","command"],setup(e,{emit:t}){const n=lt(),r=Fe("dropdown"),{t:o}=Pt(),a=B(),l=B(),s=B(null),i=B(null),u=B(null),d=B(null),f=B(!1),h=[at.enter,at.space,at.down],p=O(()=>({maxHeight:Jn(e.maxHeight)})),v=O(()=>[r.m(y.value)]),g=Lo().value,w=O(()=>e.id||g);$e([a,zt(e,"trigger")],([j,V],[X])=>{var I,Y,ee;const W=De(V)?V:[V];(I=X==null?void 0:X.$el)!=null&&I.removeEventListener&&X.$el.removeEventListener("pointerenter",k),(Y=j==null?void 0:j.$el)!=null&&Y.removeEventListener&&j.$el.removeEventListener("pointerenter",k),((ee=j==null?void 0:j.$el)==null?void 0:ee.addEventListener)&&W.includes("hover")&&j.$el.addEventListener("pointerenter",k)},{immediate:!0}),rn(()=>{var j,V;(V=(j=a.value)==null?void 0:j.$el)!=null&&V.removeEventListener&&a.value.$el.removeEventListener("pointerenter",k)});function m(){b()}function b(){var j;(j=s.value)==null||j.onClose()}function _(){var j;(j=s.value)==null||j.onOpen()}const y=mn();function C(...j){t("command",...j)}function k(){var j,V;(V=(j=a.value)==null?void 0:j.$el)==null||V.focus()}function E(){}function S(){const j=c(i);j==null||j.focus(),d.value=null}function R(j){d.value=j}function L(j){f.value||(j.preventDefault(),j.stopImmediatePropagation())}function F(){t("visible-change",!0)}function N(j){(j==null?void 0:j.type)==="keydown"&&i.value.focus()}function A(){t("visible-change",!1)}return yt(nc,{contentRef:i,role:O(()=>e.role),triggerId:w,isUsingKeyboard:f,onItemEnter:E,onItemLeave:S}),yt("elDropdown",{instance:n,dropdownSize:y,handleClick:m,commandHandler:C,trigger:zt(e,"trigger"),hideOnClick:zt(e,"hideOnClick")}),{t:o,ns:r,scrollbar:u,wrapStyle:p,dropdownTriggerKls:v,dropdownSize:y,triggerId:w,triggerKeys:h,currentTabId:d,handleCurrentTabIdChange:R,handlerMainButtonClick:j=>{t("click",j)},handleEntryFocus:L,handleClose:b,handleOpen:_,handleBeforeShowTooltip:F,handleShowTooltip:N,handleBeforeHideTooltip:A,onFocusAfterTrapped:j=>{var V,X;j.preventDefault(),(X=(V=i.value)==null?void 0:V.focus)==null||X.call(V,{preventScroll:!0})},popperRef:s,contentRef:i,triggeringElementRef:a,referenceElementRef:l}}});function NW(e,t,n,r,o,a){var l;const s=Ve("el-dropdown-collection"),i=Ve("el-roving-focus-group"),u=Ve("el-scrollbar"),d=Ve("el-only-child"),f=Ve("el-tooltip"),h=Ve("el-button"),p=Ve("arrow-down"),v=Ve("el-icon"),g=Ve("el-button-group");return x(),U("div",{class:D([e.ns.b(),e.ns.is("disabled",e.disabled)])},[Q(f,{ref:"popperRef",role:e.role,effect:e.effect,"fallback-placements":["bottom","top"],"popper-options":e.popperOptions,"gpu-acceleration":!1,"hide-after":e.trigger==="hover"?e.hideTimeout:0,"manual-mode":!0,placement:e.placement,"popper-class":[e.ns.e("popper"),e.popperClass],"reference-element":(l=e.referenceElementRef)==null?void 0:l.$el,trigger:e.trigger,"trigger-keys":e.triggerKeys,"trigger-target-el":e.contentRef,"show-after":e.trigger==="hover"?e.showTimeout:0,"stop-popper-mouse-event":!1,"virtual-ref":e.triggeringElementRef,"virtual-triggering":e.splitButton,disabled:e.disabled,transition:`${e.ns.namespace.value}-zoom-in-top`,teleported:e.teleported,pure:"",persistent:"",onBeforeShow:e.handleBeforeShowTooltip,onShow:e.handleShowTooltip,onBeforeHide:e.handleBeforeHideTooltip},Is({content:G(()=>[Q(u,{ref:"scrollbar","wrap-style":e.wrapStyle,tag:"div","view-class":e.ns.e("list")},{default:G(()=>[Q(i,{loop:e.loop,"current-tab-id":e.currentTabId,orientation:"horizontal",onCurrentTabIdChange:e.handleCurrentTabIdChange,onEntryFocus:e.handleEntryFocus},{default:G(()=>[Q(s,null,{default:G(()=>[pe(e.$slots,"dropdown")]),_:3})]),_:3},8,["loop","current-tab-id","onCurrentTabIdChange","onEntryFocus"])]),_:3},8,["wrap-style","view-class"])]),_:2},[e.splitButton?void 0:{name:"default",fn:G(()=>[Q(d,{id:e.triggerId,ref:"triggeringElementRef",role:"button",tabindex:e.tabindex},{default:G(()=>[pe(e.$slots,"default")]),_:3},8,["id","tabindex"])])}]),1032,["role","effect","popper-options","hide-after","placement","popper-class","reference-element","trigger","trigger-keys","trigger-target-el","show-after","virtual-ref","virtual-triggering","disabled","transition","teleported","onBeforeShow","onShow","onBeforeHide"]),e.splitButton?(x(),ce(g,{key:0},{default:G(()=>[Q(h,Ht({ref:"referenceElementRef"},e.buttonProps,{size:e.dropdownSize,type:e.type,disabled:e.disabled,tabindex:e.tabindex,onClick:e.handlerMainButtonClick}),{default:G(()=>[pe(e.$slots,"default")]),_:3},16,["size","type","disabled","tabindex","onClick"]),Q(h,Ht({id:e.triggerId,ref:"triggeringElementRef"},e.buttonProps,{role:"button",size:e.dropdownSize,type:e.type,class:e.ns.e("caret-button"),disabled:e.disabled,tabindex:e.tabindex,"aria-label":e.t("el.dropdown.toggleDropdown")}),{default:G(()=>[Q(v,{class:D(e.ns.e("icon"))},{default:G(()=>[Q(p)]),_:1},8,["class"])]),_:1},16,["id","size","type","class","disabled","tabindex","aria-label"])]),_:3})):ye("v-if",!0)],2)}var DW=ze(RW,[["render",NW],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown.vue"]]);const FW=se({name:"DropdownItemImpl",components:{ElIcon:nt},props:Lw,emits:["pointermove","pointerleave","click","clickimpl"],setup(e,{emit:t}){const n=Fe("dropdown"),{role:r}=Re(nc,void 0),{collectionItemRef:o}=Re(LW,void 0),{collectionItemRef:a}=Re(dW,void 0),{rovingFocusGroupItemRef:l,tabIndex:s,handleFocus:i,handleKeydown:u,handleMousedown:d}=Re(Pw,void 0),f=dp(o,a,l),h=O(()=>r.value==="menu"?"menuitem":r.value==="navigation"?"link":"button"),p=Kt(v=>{const{code:g}=v;if(g===at.enter||g===at.space)return v.preventDefault(),v.stopImmediatePropagation(),t("clickimpl",v),!0},u);return{ns:n,itemRef:f,dataset:{[Aw]:""},role:h,tabIndex:s,handleFocus:i,handleKeydown:p,handleMousedown:d}}}),VW=["aria-disabled","tabindex","role"];function BW(e,t,n,r,o,a){const l=Ve("el-icon");return x(),U(Pe,null,[e.divided?(x(),U("li",Ht({key:0,role:"separator",class:e.ns.bem("menu","item","divided")},e.$attrs),null,16)):ye("v-if",!0),K("li",Ht({ref:e.itemRef},{...e.dataset,...e.$attrs},{"aria-disabled":e.disabled,class:[e.ns.be("menu","item"),e.ns.is("disabled",e.disabled)],tabindex:e.tabIndex,role:e.role,onClick:t[0]||(t[0]=s=>e.$emit("clickimpl",s)),onFocus:t[1]||(t[1]=(...s)=>e.handleFocus&&e.handleFocus(...s)),onKeydown:t[2]||(t[2]=$t((...s)=>e.handleKeydown&&e.handleKeydown(...s),["self"])),onMousedown:t[3]||(t[3]=(...s)=>e.handleMousedown&&e.handleMousedown(...s)),onPointermove:t[4]||(t[4]=s=>e.$emit("pointermove",s)),onPointerleave:t[5]||(t[5]=s=>e.$emit("pointerleave",s))}),[e.icon?(x(),ce(l,{key:0},{default:G(()=>[(x(),ce(Lt(e.icon)))]),_:1})):ye("v-if",!0),pe(e.$slots,"default")],16,VW)],64)}var zW=ze(FW,[["render",BW],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-item-impl.vue"]]);const Rw=()=>{const e=Re("elDropdown",{}),t=O(()=>e==null?void 0:e.dropdownSize);return{elDropdown:e,_elDropdownSize:t}},HW=se({name:"ElDropdownItem",components:{ElDropdownCollectionItem:IW,ElRovingFocusItem:EW,ElDropdownItemImpl:zW},inheritAttrs:!1,props:Lw,emits:["pointermove","pointerleave","click"],setup(e,{emit:t,attrs:n}){const{elDropdown:r}=Rw(),o=lt(),a=B(null),l=O(()=>{var p,v;return(v=(p=c(a))==null?void 0:p.textContent)!=null?v:""}),{onItemEnter:s,onItemLeave:i}=Re(nc,void 0),u=Kt(p=>(t("pointermove",p),p.defaultPrevented),sv(p=>{if(e.disabled){i(p);return}const v=p.currentTarget;v===document.activeElement||v.contains(document.activeElement)||(s(p),p.defaultPrevented||v==null||v.focus())})),d=Kt(p=>(t("pointerleave",p),p.defaultPrevented),sv(p=>{i(p)})),f=Kt(p=>{if(!e.disabled)return t("click",p),p.type!=="keydown"&&p.defaultPrevented},p=>{var v,g,w;if(e.disabled){p.stopImmediatePropagation();return}(v=r==null?void 0:r.hideOnClick)!=null&&v.value&&((g=r.handleClick)==null||g.call(r)),(w=r.commandHandler)==null||w.call(r,e.command,o,p)}),h=O(()=>({...e,...n}));return{handleClick:f,handlePointerMove:u,handlePointerLeave:d,textContent:l,propsAndAttrs:h}}});function jW(e,t,n,r,o,a){var l;const s=Ve("el-dropdown-item-impl"),i=Ve("el-roving-focus-item"),u=Ve("el-dropdown-collection-item");return x(),ce(u,{disabled:e.disabled,"text-value":(l=e.textValue)!=null?l:e.textContent},{default:G(()=>[Q(i,{focusable:!e.disabled},{default:G(()=>[Q(s,Ht(e.propsAndAttrs,{onPointerleave:e.handlePointerLeave,onPointermove:e.handlePointerMove,onClickimpl:e.handleClick}),{default:G(()=>[pe(e.$slots,"default")]),_:3},16,["onPointerleave","onPointermove","onClickimpl"])]),_:3},8,["focusable"])]),_:3},8,["disabled","text-value"])}var Nw=ze(HW,[["render",jW],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-item.vue"]]);const WW=se({name:"ElDropdownMenu",props:TW,setup(e){const t=Fe("dropdown"),{_elDropdownSize:n}=Rw(),r=n.value,{focusTrapRef:o,onKeydown:a}=Re(Cp,void 0),{contentRef:l,role:s,triggerId:i}=Re(nc,void 0),{collectionRef:u,getItems:d}=Re(PW,void 0),{rovingFocusGroupRef:f,rovingFocusGroupRootStyle:h,tabIndex:p,onBlur:v,onFocus:g,onMousedown:w}=Re(Ap,void 0),{collectionRef:m}=Re(Op,void 0),b=O(()=>[t.b("menu"),t.bm("menu",r==null?void 0:r.value)]),_=dp(l,u,o,f,m),y=Kt(k=>{var E;(E=e.onKeydown)==null||E.call(e,k)},k=>{const{currentTarget:E,code:S,target:R}=k;if(E.contains(R),at.tab===S&&k.stopImmediatePropagation(),k.preventDefault(),R!==c(l)||!OW.includes(S))return;const F=d().filter(N=>!N.disabled).map(N=>N.ref);Mw.includes(S)&&F.reverse(),Ip(F)});return{size:r,rovingFocusGroupRootStyle:h,tabIndex:p,dropdownKls:b,role:s,triggerId:i,dropdownListWrapperRef:_,handleKeydown:k=>{y(k),a(k)},onBlur:v,onFocus:g,onMousedown:w}}}),UW=["role","aria-labelledby"];function KW(e,t,n,r,o,a){return x(),U("ul",{ref:e.dropdownListWrapperRef,class:D(e.dropdownKls),style:Qe(e.rovingFocusGroupRootStyle),tabindex:-1,role:e.role,"aria-labelledby":e.triggerId,onBlur:t[0]||(t[0]=(...l)=>e.onBlur&&e.onBlur(...l)),onFocus:t[1]||(t[1]=(...l)=>e.onFocus&&e.onFocus(...l)),onKeydown:t[2]||(t[2]=$t((...l)=>e.handleKeydown&&e.handleKeydown(...l),["self"])),onMousedown:t[3]||(t[3]=$t((...l)=>e.onMousedown&&e.onMousedown(...l),["self"]))},[pe(e.$slots,"default")],46,UW)}var Dw=ze(WW,[["render",KW],["__file","/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-menu.vue"]]);const qW=Bt(DW,{DropdownItem:Nw,DropdownMenu:Dw}),YW=br(Nw),GW=br(Dw),XW=je({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:Number,readonly:Boolean,disabled:Boolean,size:Hn,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:[String,Number,null],validator:e=>e===null||ct(e)||["min","max"].includes(e),default:null},name:String,label:String,placeholder:String,precision:{type:Number,validator:e=>e>=0&&e===Number.parseInt(`${e}`,10)},validateEvent:{type:Boolean,default:!0}}),JW={[pr]:(e,t)=>t!==e,blur:e=>e instanceof FocusEvent,focus:e=>e instanceof FocusEvent,[$r]:e=>ct(e)||Yn(e),[Ct]:e=>ct(e)||Yn(e)},ZW=["aria-label","onKeydown"],QW=["aria-label","onKeydown"],eU=se({name:"ElInputNumber"}),tU=se({...eU,props:XW,emits:JW,setup(e,{expose:t,emit:n}){const r=e,{t:o}=Pt(),a=Fe("input-number"),l=B(),s=Xt({currentValue:r.modelValue,userInput:null}),{formItem:i}=er(),u=O(()=>ct(r.modelValue)&&r.modelValue<=r.min),d=O(()=>ct(r.modelValue)&&r.modelValue>=r.max),f=O(()=>{const A=m(r.step);return Er(r.precision)?Math.max(m(r.modelValue),A):(A>r.precision,r.precision)}),h=O(()=>r.controls&&r.controlsPosition==="right"),p=mn(),v=Fo(),g=O(()=>{if(s.userInput!==null)return s.userInput;let A=s.currentValue;if(Yn(A))return"";if(ct(A)){if(Number.isNaN(A))return"";Er(r.precision)||(A=A.toFixed(r.precision))}return A}),w=(A,M)=>{if(Er(M)&&(M=f.value),M===0)return Math.round(A);let H=String(A);const j=H.indexOf(".");if(j===-1||!H.replace(".","").split("")[j+M])return A;const I=H.length;return H.charAt(I-1)==="5"&&(H=`${H.slice(0,Math.max(0,I-1))}6`),Number.parseFloat(Number(H).toFixed(M))},m=A=>{if(Yn(A))return 0;const M=A.toString(),H=M.indexOf(".");let j=0;return H!==-1&&(j=M.length-H-1),j},b=(A,M=1)=>ct(A)?w(A+r.step*M):s.currentValue,_=()=>{if(r.readonly||v.value||d.value)return;const A=Number(g.value)||0,M=b(A);k(M),n($r,s.currentValue)},y=()=>{if(r.readonly||v.value||u.value)return;const A=Number(g.value)||0,M=b(A,-1);k(M),n($r,s.currentValue)},C=(A,M)=>{const{max:H,min:j,step:V,precision:X,stepStrictly:I,valueOnClear:Y}=r;HH||eeH?H:j,M&&n(Ct,ee)),ee},k=(A,M=!0)=>{var H;const j=s.currentValue,V=C(A);if(!M){n(Ct,V);return}j!==V&&(s.userInput=null,n(Ct,V),n(pr,V,j),r.validateEvent&&((H=i==null?void 0:i.validate)==null||H.call(i,"change").catch(X=>void 0)),s.currentValue=V)},E=A=>{s.userInput=A;const M=A===""?null:Number(A);n($r,M),k(M,!1)},S=A=>{const M=A!==""?Number(A):"";(ct(M)&&!Number.isNaN(M)||A==="")&&k(M),s.userInput=null},R=()=>{var A,M;(M=(A=l.value)==null?void 0:A.focus)==null||M.call(A)},L=()=>{var A,M;(M=(A=l.value)==null?void 0:A.blur)==null||M.call(A)},F=A=>{n("focus",A)},N=A=>{var M;n("blur",A),r.validateEvent&&((M=i==null?void 0:i.validate)==null||M.call(i,"blur").catch(H=>void 0))};return $e(()=>r.modelValue,A=>{const M=C(s.userInput),H=C(A,!0);!ct(M)&&(!M||M!==H)&&(s.currentValue=H,s.userInput=null)},{immediate:!0}),dt(()=>{var A;const{min:M,max:H,modelValue:j}=r,V=(A=l.value)==null?void 0:A.input;if(V.setAttribute("role","spinbutton"),Number.isFinite(H)?V.setAttribute("aria-valuemax",String(H)):V.removeAttribute("aria-valuemax"),Number.isFinite(M)?V.setAttribute("aria-valuemin",String(M)):V.removeAttribute("aria-valuemin"),V.setAttribute("aria-valuenow",String(s.currentValue)),V.setAttribute("aria-disabled",String(v.value)),!ct(j)&&j!=null){let X=Number(j);Number.isNaN(X)&&(X=null),n(Ct,X)}}),pl(()=>{var A;const M=(A=l.value)==null?void 0:A.input;M==null||M.setAttribute("aria-valuenow",`${s.currentValue}`)}),t({focus:R,blur:L}),(A,M)=>(x(),U("div",{class:D([c(a).b(),c(a).m(c(p)),c(a).is("disabled",c(v)),c(a).is("without-controls",!A.controls),c(a).is("controls-right",c(h))]),onDragstart:M[1]||(M[1]=$t(()=>{},["prevent"]))},[A.controls?vt((x(),U("span",{key:0,role:"button","aria-label":c(o)("el.inputNumber.decrease"),class:D([c(a).e("decrease"),c(a).is("disabled",c(u))]),onKeydown:Dt(y,["enter"])},[Q(c(nt),null,{default:G(()=>[c(h)?(x(),ce(c(vl),{key:0})):(x(),ce(c(t5),{key:1}))]),_:1})],42,ZW)),[[c(wu),y]]):ye("v-if",!0),A.controls?vt((x(),U("span",{key:1,role:"button","aria-label":c(o)("el.inputNumber.increase"),class:D([c(a).e("increase"),c(a).is("disabled",c(d))]),onKeydown:Dt(_,["enter"])},[Q(c(nt),null,{default:G(()=>[c(h)?(x(),ce(c(cp),{key:0})):(x(),ce(c(f5),{key:1}))]),_:1})],42,QW)),[[c(wu),_]]):ye("v-if",!0),Q(c(Kn),{id:A.id,ref_key:"input",ref:l,type:"number",step:A.step,"model-value":c(g),placeholder:A.placeholder,readonly:A.readonly,disabled:c(v),size:c(p),max:A.max,min:A.min,name:A.name,label:A.label,"validate-event":!1,onWheel:M[0]||(M[0]=$t(()=>{},["prevent"])),onKeydown:[Dt($t(_,["prevent"]),["up"]),Dt($t(y,["prevent"]),["down"])],onBlur:N,onFocus:F,onInput:E,onChange:S},null,8,["id","step","model-value","placeholder","readonly","disabled","size","max","min","name","label","onKeydown"])],34))}});var nU=ze(tU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue"]]);const Fw=Bt(nU),Vw=Symbol("elPaginationKey"),rU=je({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String},prevIcon:{type:Cn}}),oU={click:e=>e instanceof MouseEvent},aU=["disabled","aria-label","aria-disabled"],lU={key:0},sU=se({name:"ElPaginationPrev"}),iU=se({...sU,props:rU,emits:oU,setup(e){const t=e,{t:n}=Pt(),r=O(()=>t.disabled||t.currentPage<=1);return(o,a)=>(x(),U("button",{type:"button",class:"btn-prev",disabled:c(r),"aria-label":o.prevText||c(n)("el.pagination.prev"),"aria-disabled":c(r),onClick:a[0]||(a[0]=l=>o.$emit("click",l))},[o.prevText?(x(),U("span",lU,Ee(o.prevText),1)):(x(),ce(c(nt),{key:1},{default:G(()=>[(x(),ce(Lt(o.prevIcon)))]),_:1}))],8,aU))}});var uU=ze(iU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/prev.vue"]]);const cU=je({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String},nextIcon:{type:Cn}}),dU=["disabled","aria-label","aria-disabled"],fU={key:0},pU=se({name:"ElPaginationNext"}),mU=se({...pU,props:cU,emits:["click"],setup(e){const t=e,{t:n}=Pt(),r=O(()=>t.disabled||t.currentPage===t.pageCount||t.pageCount===0);return(o,a)=>(x(),U("button",{type:"button",class:"btn-next",disabled:c(r),"aria-label":o.nextText||c(n)("el.pagination.next"),"aria-disabled":c(r),onClick:a[0]||(a[0]=l=>o.$emit("click",l))},[o.nextText?(x(),U("span",fU,Ee(o.nextText),1)):(x(),ce(c(nt),{key:1},{default:G(()=>[(x(),ce(Lt(o.nextIcon)))]),_:1}))],8,dU))}});var hU=ze(mU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/next.vue"]]);const Bw=Symbol("ElSelectGroup"),rc=Symbol("ElSelect");function vU(e,t){const n=Re(rc),r=Re(Bw,{disabled:!1}),o=O(()=>Object.prototype.toString.call(e.value).toLowerCase()==="[object object]"),a=O(()=>n.props.multiple?f(n.props.modelValue,e.value):h(e.value,n.props.modelValue)),l=O(()=>{if(n.props.multiple){const g=n.props.modelValue||[];return!a.value&&g.length>=n.props.multipleLimit&&n.props.multipleLimit>0}else return!1}),s=O(()=>e.label||(o.value?"":e.value)),i=O(()=>e.value||e.label||""),u=O(()=>e.disabled||t.groupDisabled||l.value),d=lt(),f=(g=[],w)=>{if(o.value){const m=n.props.valueKey;return g&&g.some(b=>gt(fn(b,m))===fn(w,m))}else return g&&g.includes(w)},h=(g,w)=>{if(o.value){const{valueKey:m}=n.props;return fn(g,m)===fn(w,m)}else return g===w},p=()=>{!e.disabled&&!r.disabled&&(n.hoverIndex=n.optionsArray.indexOf(d.proxy))};$e(()=>s.value,()=>{!e.created&&!n.props.remote&&n.setSelected()}),$e(()=>e.value,(g,w)=>{const{remote:m,valueKey:b}=n.props;if(Object.is(g,w)||(n.onOptionDestroy(w,d.proxy),n.onOptionCreate(d.proxy)),!e.created&&!m){if(b&&typeof g=="object"&&typeof w=="object"&&g[b]===w[b])return;n.setSelected()}}),$e(()=>r.disabled,()=>{t.groupDisabled=r.disabled},{immediate:!0});const{queryChange:v}=gt(n);return $e(v,g=>{const{query:w}=c(g),m=new RegExp(vN(w),"i");t.visible=m.test(s.value)||e.created,t.visible||n.filteredOptionsCount--},{immediate:!0}),{select:n,currentLabel:s,currentValue:i,itemSelected:a,isDisabled:u,hoverItem:p}}const gU=se({name:"ElOption",componentName:"ElOption",props:{value:{required:!0,type:[String,Number,Boolean,Object]},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},setup(e){const t=Fe("select"),n=O(()=>[t.be("dropdown","item"),t.is("disabled",c(l)),{selected:c(a),hover:c(d)}]),r=Xt({index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}),{currentLabel:o,itemSelected:a,isDisabled:l,select:s,hoverItem:i}=vU(e,r),{visible:u,hover:d}=dr(r),f=lt().proxy;s.onOptionCreate(f),rn(()=>{const p=f.value,{selected:v}=s,w=(s.props.multiple?v:[v]).some(m=>m.value===f.value);qe(()=>{s.cachedOptions.get(p)===f&&!w&&s.cachedOptions.delete(p)}),s.onOptionDestroy(p,f)});function h(){e.disabled!==!0&&r.groupDisabled!==!0&&s.handleOptionSelect(f)}return{ns:t,containerKls:n,currentLabel:o,itemSelected:a,isDisabled:l,select:s,hoverItem:i,visible:u,hover:d,selectOptionClick:h,states:r}}});function bU(e,t,n,r,o,a){return vt((x(),U("li",{class:D(e.containerKls),onMouseenter:t[0]||(t[0]=(...l)=>e.hoverItem&&e.hoverItem(...l)),onClick:t[1]||(t[1]=$t((...l)=>e.selectOptionClick&&e.selectOptionClick(...l),["stop"]))},[pe(e.$slots,"default",{},()=>[K("span",null,Ee(e.currentLabel),1)])],34)),[[qt,e.visible]])}var Pp=ze(gU,[["render",bU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/option.vue"]]);const yU=se({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const e=Re(rc),t=Fe("select"),n=O(()=>e.props.popperClass),r=O(()=>e.props.multiple),o=O(()=>e.props.fitInputWidth),a=B("");function l(){var s;a.value=`${(s=e.selectWrapper)==null?void 0:s.offsetWidth}px`}return dt(()=>{l(),xo(e.selectWrapper,l)}),{ns:t,minWidth:a,popperClass:n,isMultiple:r,isFitInputWidth:o}}});function _U(e,t,n,r,o,a){return x(),U("div",{class:D([e.ns.b("dropdown"),e.ns.is("multiple",e.isMultiple),e.popperClass]),style:Qe({[e.isFitInputWidth?"width":"minWidth"]:e.minWidth})},[pe(e.$slots,"default")],6)}var wU=ze(yU,[["render",_U],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/select-dropdown.vue"]]);function CU(e){const{t}=Pt();return Xt({options:new Map,cachedOptions:new Map,createdLabel:null,createdSelected:!1,selected:e.multiple?[]:{},inputLength:20,inputWidth:0,optionsCount:0,filteredOptionsCount:0,visible:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,cachedPlaceHolder:"",currentPlaceholder:t("el.select.placeholder"),menuVisibleOnFocus:!1,isOnComposition:!1,prefixWidth:11,mouseEnter:!1})}let Mc=!1;const kU=(e,t,n)=>{const{t:r}=Pt(),o=Fe("select");_s({from:"suffixTransition",replacement:"override style scheme",version:"2.3.0",scope:"props",ref:"https://element-plus.org/en-US/component/select.html#select-attributes"},O(()=>e.suffixTransition===!1));const a=B(null),l=B(null),s=B(null),i=B(null),u=B(null),d=B(null),f=B(null),h=B(null),p=B(-1),v=On({query:""}),g=On(""),w=B([]);let m=0;const{form:b,formItem:_}=er(),y=O(()=>!e.filterable||e.multiple||!t.visible),C=O(()=>e.disabled||(b==null?void 0:b.disabled)),k=O(()=>{const de=e.multiple?Array.isArray(e.modelValue)&&e.modelValue.length>0:e.modelValue!==void 0&&e.modelValue!==null&&e.modelValue!=="";return e.clearable&&!C.value&&t.inputHovering&&de}),E=O(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon),S=O(()=>o.is("reverse",E.value&&t.visible&&e.suffixTransition)),R=O(()=>e.remote?300:0),L=O(()=>e.loading?e.loadingText||r("el.select.loading"):e.remote&&t.query===""&&t.options.size===0?!1:e.filterable&&t.query&&t.options.size>0&&t.filteredOptionsCount===0?e.noMatchText||r("el.select.noMatch"):t.options.size===0?e.noDataText||r("el.select.noData"):null),F=O(()=>{const de=Array.from(t.options.values()),xe=[];return w.value.forEach(Ne=>{const tt=de.findIndex(on=>on.currentLabel===Ne);tt>-1&&xe.push(de[tt])}),xe.length?xe:de}),N=O(()=>Array.from(t.cachedOptions.values())),A=O(()=>{const de=F.value.filter(xe=>!xe.created).some(xe=>xe.currentLabel===t.query);return e.filterable&&e.allowCreate&&t.query!==""&&!de}),M=mn(),H=O(()=>["small"].includes(M.value)?"small":"default"),j=O({get(){return t.visible&&L.value!==!1},set(de){t.visible=de}});$e([()=>C.value,()=>M.value,()=>b==null?void 0:b.size],()=>{qe(()=>{V()})}),$e(()=>e.placeholder,de=>{t.cachedPlaceHolder=t.currentPlaceholder=de,e.multiple&&Array.isArray(e.modelValue)&&e.modelValue.length>0&&(t.currentPlaceholder="")}),$e(()=>e.modelValue,(de,xe)=>{e.multiple&&(V(),de&&de.length>0||l.value&&t.query!==""?t.currentPlaceholder="":t.currentPlaceholder=t.cachedPlaceHolder,e.filterable&&!e.reserveKeyword&&(t.query="",X(t.query))),ee(),e.filterable&&!e.multiple&&(t.inputLength=20),!bs(de,xe)&&e.validateEvent&&(_==null||_.validate("change").catch(Ne=>void 0))},{flush:"post",deep:!0}),$e(()=>t.visible,de=>{var xe,Ne,tt,on,hn;de?((Ne=(xe=i.value)==null?void 0:xe.updatePopper)==null||Ne.call(xe),e.filterable&&(t.filteredOptionsCount=t.optionsCount,t.query=e.remote?"":t.selectedLabel,(on=(tt=s.value)==null?void 0:tt.focus)==null||on.call(tt),e.multiple?(hn=l.value)==null||hn.focus():t.selectedLabel&&(t.currentPlaceholder=`${t.selectedLabel}`,t.selectedLabel=""),X(t.query),!e.multiple&&!e.remote&&(v.value.query="",Cl(v),Cl(g)))):(e.filterable&&(Ke(e.filterMethod)&&e.filterMethod(""),Ke(e.remoteMethod)&&e.remoteMethod("")),l.value&&l.value.blur(),t.query="",t.previousQuery=null,t.selectedLabel="",t.inputLength=20,t.menuVisibleOnFocus=!1,re(),qe(()=>{l.value&&l.value.value===""&&t.selected.length===0&&(t.currentPlaceholder=t.cachedPlaceHolder)}),e.multiple||(t.selected&&(e.filterable&&e.allowCreate&&t.createdSelected&&t.createdLabel?t.selectedLabel=t.createdLabel:t.selectedLabel=t.selected.currentLabel,e.filterable&&(t.query=t.selectedLabel)),e.filterable&&(t.currentPlaceholder=t.cachedPlaceHolder))),n.emit("visible-change",de)}),$e(()=>t.options.entries(),()=>{var de,xe,Ne;if(!xt)return;(xe=(de=i.value)==null?void 0:de.updatePopper)==null||xe.call(de),e.multiple&&V();const tt=((Ne=f.value)==null?void 0:Ne.querySelectorAll("input"))||[];Array.from(tt).includes(document.activeElement)||ee(),e.defaultFirstOption&&(e.filterable||e.remote)&&t.filteredOptionsCount&&Y()},{flush:"post"}),$e(()=>t.hoverIndex,de=>{ct(de)&&de>-1?p.value=F.value[de]||{}:p.value={},F.value.forEach(xe=>{xe.hover=p.value===xe})});const V=()=>{qe(()=>{var de,xe;if(!a.value)return;const Ne=a.value.$el.querySelector("input");m=m||(Ne.clientHeight>0?Ne.clientHeight+2:0);const tt=d.value,on=R5(M.value||(b==null?void 0:b.size)),hn=M.value||on===m||m<=0?on:m;!(Ne.offsetParent===null)&&(Ne.style.height=`${(t.selected.length===0?hn:Math.max(tt?tt.clientHeight+(tt.clientHeight>hn?6:0):0,hn))-2}px`),t.visible&&L.value!==!1&&((xe=(de=i.value)==null?void 0:de.updatePopper)==null||xe.call(de))})},X=async de=>{if(!(t.previousQuery===de||t.isOnComposition)){if(t.previousQuery===null&&(Ke(e.filterMethod)||Ke(e.remoteMethod))){t.previousQuery=de;return}t.previousQuery=de,qe(()=>{var xe,Ne;t.visible&&((Ne=(xe=i.value)==null?void 0:xe.updatePopper)==null||Ne.call(xe))}),t.hoverIndex=-1,e.multiple&&e.filterable&&qe(()=>{const xe=l.value.value.length*15+20;t.inputLength=e.collapseTags?Math.min(50,xe):xe,I(),V()}),e.remote&&Ke(e.remoteMethod)?(t.hoverIndex=-1,e.remoteMethod(de)):Ke(e.filterMethod)?(e.filterMethod(de),Cl(g)):(t.filteredOptionsCount=t.optionsCount,v.value.query=de,Cl(v),Cl(g)),e.defaultFirstOption&&(e.filterable||e.remote)&&t.filteredOptionsCount&&(await qe(),Y())}},I=()=>{t.currentPlaceholder!==""&&(t.currentPlaceholder=l.value.value?"":t.cachedPlaceHolder)},Y=()=>{const de=F.value.filter(tt=>tt.visible&&!tt.disabled&&!tt.states.groupDisabled),xe=de.find(tt=>tt.created),Ne=de[0];t.hoverIndex=T(F.value,xe||Ne)},ee=()=>{var de;if(e.multiple)t.selectedLabel="";else{const Ne=W(e.modelValue);(de=Ne.props)!=null&&de.created?(t.createdLabel=Ne.props.value,t.createdSelected=!0):t.createdSelected=!1,t.selectedLabel=Ne.currentLabel,t.selected=Ne,e.filterable&&(t.query=t.selectedLabel);return}const xe=[];Array.isArray(e.modelValue)&&e.modelValue.forEach(Ne=>{xe.push(W(Ne))}),t.selected=xe,qe(()=>{V()})},W=de=>{let xe;const Ne=$i(de).toLowerCase()==="object",tt=$i(de).toLowerCase()==="null",on=$i(de).toLowerCase()==="undefined";for(let Mr=t.cachedOptions.size-1;Mr>=0;Mr--){const jn=N.value[Mr];if(Ne?fn(jn.value,e.valueKey)===fn(de,e.valueKey):jn.value===de){xe={value:de,currentLabel:jn.currentLabel,isDisabled:jn.isDisabled};break}}if(xe)return xe;const hn=Ne?de.label:!tt&&!on?de:"",Lr={value:de,currentLabel:hn};return e.multiple&&(Lr.hitState=!1),Lr},re=()=>{setTimeout(()=>{const de=e.valueKey;e.multiple?t.selected.length>0?t.hoverIndex=Math.min.apply(null,t.selected.map(xe=>F.value.findIndex(Ne=>fn(Ne,de)===fn(xe,de)))):t.hoverIndex=-1:t.hoverIndex=F.value.findIndex(xe=>Ce(xe)===Ce(t.selected))},300)},be=()=>{var de,xe;Te(),(xe=(de=i.value)==null?void 0:de.updatePopper)==null||xe.call(de),e.multiple&&V()},Te=()=>{var de;t.inputWidth=(de=a.value)==null?void 0:de.$el.offsetWidth},ge=()=>{e.filterable&&t.query!==t.selectedLabel&&(t.query=t.selectedLabel,X(t.query))},J=Or(()=>{ge()},R.value),te=Or(de=>{X(de.target.value)},R.value),ae=de=>{bs(e.modelValue,de)||n.emit(pr,de)},le=de=>{if(de.code!==at.delete){if(de.target.value.length<=0&&!he()){const xe=e.modelValue.slice();xe.pop(),n.emit(Ct,xe),ae(xe)}de.target.value.length===1&&e.modelValue.length===0&&(t.currentPlaceholder=t.cachedPlaceHolder)}},me=(de,xe)=>{const Ne=t.selected.indexOf(xe);if(Ne>-1&&!C.value){const tt=e.modelValue.slice();tt.splice(Ne,1),n.emit(Ct,tt),ae(tt),n.emit("remove-tag",xe.value)}de.stopPropagation()},P=de=>{de.stopPropagation();const xe=e.multiple?[]:"";if(!Ge(xe))for(const Ne of t.selected)Ne.isDisabled&&xe.push(Ne.value);n.emit(Ct,xe),ae(xe),t.hoverIndex=-1,t.visible=!1,n.emit("clear")},$=de=>{var xe;if(e.multiple){const Ne=(e.modelValue||[]).slice(),tt=T(Ne,de.value);tt>-1?Ne.splice(tt,1):(e.multipleLimit<=0||Ne.length{Z(de)})},T=(de=[],xe)=>{if(!ht(xe))return de.indexOf(xe);const Ne=e.valueKey;let tt=-1;return de.some((on,hn)=>gt(fn(on,Ne))===fn(xe,Ne)?(tt=hn,!0):!1),tt},z=()=>{const de=l.value||a.value;de&&(de==null||de.focus())},Z=de=>{var xe,Ne,tt,on,hn;const Lr=Array.isArray(de)?de[0]:de;let Mr=null;if(Lr!=null&&Lr.value){const jn=F.value.filter(Ks=>Ks.value===Lr.value);jn.length>0&&(Mr=jn[0].$el)}if(i.value&&Mr){const jn=(on=(tt=(Ne=(xe=i.value)==null?void 0:xe.popperRef)==null?void 0:Ne.contentRef)==null?void 0:tt.querySelector)==null?void 0:on.call(tt,`.${o.be("dropdown","wrap")}`);jn&&yN(jn,Mr)}(hn=h.value)==null||hn.handleScroll()},oe=de=>{t.optionsCount++,t.filteredOptionsCount++,t.options.set(de.value,de),t.cachedOptions.set(de.value,de)},_e=(de,xe)=>{t.options.get(de)===xe&&(t.optionsCount--,t.filteredOptionsCount--,t.options.delete(de))},we=de=>{de.code!==at.backspace&&he(!1),t.inputLength=l.value.value.length*15+20,V()},he=de=>{if(!Array.isArray(t.selected))return;const xe=t.selected[t.selected.length-1];if(!!xe)return de===!0||de===!1?(xe.hitState=de,de):(xe.hitState=!xe.hitState,xe.hitState)},ke=de=>{const xe=de.target.value;if(de.type==="compositionend")t.isOnComposition=!1,qe(()=>X(xe));else{const Ne=xe[xe.length-1]||"";t.isOnComposition=!Y1(Ne)}},Me=()=>{qe(()=>Z(t.selected))},ne=de=>{Mc?Mc=!1:((e.automaticDropdown||e.filterable)&&(e.filterable&&!t.visible&&(t.menuVisibleOnFocus=!0),t.visible=!0),n.emit("focus",de))},ue=()=>{var de,xe,Ne;t.visible=!1,(de=a.value)==null||de.blur(),(Ne=(xe=s.value)==null?void 0:xe.blur)==null||Ne.call(xe)},ie=de=>{setTimeout(()=>{var xe;if((xe=i.value)!=null&&xe.isFocusInsideContent()){Mc=!0;return}t.visible&&We(),n.emit("blur",de)})},Oe=de=>{P(de)},We=()=>{t.visible=!1},Xe=de=>{t.visible&&(de.preventDefault(),de.stopPropagation(),t.visible=!1)},fe=de=>{var xe;de&&!t.mouseEnter||C.value||(t.menuVisibleOnFocus?t.menuVisibleOnFocus=!1:(!i.value||!i.value.isFocusInsideContent())&&(t.visible=!t.visible),t.visible&&((xe=l.value||a.value)==null||xe.focus()))},ve=()=>{t.visible?F.value[t.hoverIndex]&&$(F.value[t.hoverIndex]):fe()},Ce=de=>ht(de.value)?fn(de.value,e.valueKey):de.value,Ye=O(()=>F.value.filter(de=>de.visible).every(de=>de.disabled)),Se=O(()=>t.selected.slice(0,e.maxCollapseTags)),Ae=O(()=>t.selected.slice(e.maxCollapseTags)),q=de=>{if(!t.visible){t.visible=!0;return}if(!(t.options.size===0||t.filteredOptionsCount===0)&&!t.isOnComposition&&!Ye.value){de==="next"?(t.hoverIndex++,t.hoverIndex===t.options.size&&(t.hoverIndex=0)):de==="prev"&&(t.hoverIndex--,t.hoverIndex<0&&(t.hoverIndex=t.options.size-1));const xe=F.value[t.hoverIndex];(xe.disabled===!0||xe.states.groupDisabled===!0||!xe.visible)&&q(de),qe(()=>Z(p.value))}};return{optionList:w,optionsArray:F,selectSize:M,handleResize:be,debouncedOnInputChange:J,debouncedQueryChange:te,deletePrevTag:le,deleteTag:me,deleteSelected:P,handleOptionSelect:$,scrollToOption:Z,readonly:y,resetInputHeight:V,showClose:k,iconComponent:E,iconReverse:S,showNewOption:A,collapseTagSize:H,setSelected:ee,managePlaceholder:I,selectDisabled:C,emptyText:L,toggleLastOptionHitState:he,resetInputState:we,handleComposition:ke,onOptionCreate:oe,onOptionDestroy:_e,handleMenuEnter:Me,handleFocus:ne,blur:ue,handleBlur:ie,handleClearClick:Oe,handleClose:We,handleKeydownEscape:Xe,toggleMenu:fe,selectOption:ve,getValueKey:Ce,navigateOptions:q,handleDeleteTooltipTag:(de,xe)=>{var Ne,tt;me(de,xe),(tt=(Ne=u.value)==null?void 0:Ne.updatePopper)==null||tt.call(Ne)},dropMenuVisible:j,queryChange:v,groupQueryChange:g,showTagList:Se,collapseTagList:Ae,reference:a,input:l,iOSInput:s,tooltipRef:i,tagTooltipRef:u,tags:d,selectWrapper:f,scrollbar:h,handleMouseEnter:()=>{t.mouseEnter=!0},handleMouseLeave:()=>{t.mouseEnter=!1}}};var SU=se({name:"ElOptions",emits:["update-options"],setup(e,{slots:t,emit:n}){let r=[];function o(a,l){if(a.length!==l.length)return!1;for(const[s]of a.entries())if(a[s]!=l[s])return!1;return!0}return()=>{var a,l;const s=(a=t.default)==null?void 0:a.call(t),i=[];function u(d){!Array.isArray(d)||d.forEach(f=>{var h,p,v,g;const w=(h=(f==null?void 0:f.type)||{})==null?void 0:h.name;w==="ElOptionGroup"?u(!Ge(f.children)&&!Array.isArray(f.children)&&Ke((p=f.children)==null?void 0:p.default)?(v=f.children)==null?void 0:v.default():f.children):w==="ElOption"?i.push((g=f.props)==null?void 0:g.label):Array.isArray(f.children)&&u(f.children)})}return s.length&&u((l=s[0])==null?void 0:l.children),o(i,r)||(r=i,n("update-options",i)),s}}});const Dg="ElSelect",EU=se({name:Dg,componentName:Dg,components:{ElInput:Kn,ElSelectMenu:wU,ElOption:Pp,ElOptions:SU,ElTag:mw,ElScrollbar:yl,ElTooltip:Ca,ElIcon:nt},directives:{ClickOutside:il},props:{name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:{type:String,validator:q1},effect:{type:String,default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperOptions:{type:Object,default:()=>({})},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},maxCollapseTags:{type:Number,default:1},teleported:Ss.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:Cn,default:Yu},fitInputWidth:{type:Boolean,default:!1},suffixIcon:{type:Cn,default:vl},tagType:{...pw.type,default:"info"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:{type:Boolean,default:!1},suffixTransition:{type:Boolean,default:!0},placement:{type:String,values:gl,default:"bottom-start"}},emits:[Ct,pr,"remove-tag","clear","visible-change","focus","blur"],setup(e,t){const n=Fe("select"),r=Fe("input"),{t:o}=Pt(),a=CU(e),{optionList:l,optionsArray:s,selectSize:i,readonly:u,handleResize:d,collapseTagSize:f,debouncedOnInputChange:h,debouncedQueryChange:p,deletePrevTag:v,deleteTag:g,deleteSelected:w,handleOptionSelect:m,scrollToOption:b,setSelected:_,resetInputHeight:y,managePlaceholder:C,showClose:k,selectDisabled:E,iconComponent:S,iconReverse:R,showNewOption:L,emptyText:F,toggleLastOptionHitState:N,resetInputState:A,handleComposition:M,onOptionCreate:H,onOptionDestroy:j,handleMenuEnter:V,handleFocus:X,blur:I,handleBlur:Y,handleClearClick:ee,handleClose:W,handleKeydownEscape:re,toggleMenu:be,selectOption:Te,getValueKey:ge,navigateOptions:J,handleDeleteTooltipTag:te,dropMenuVisible:ae,reference:le,input:me,iOSInput:P,tooltipRef:$,tagTooltipRef:T,tags:z,selectWrapper:Z,scrollbar:oe,queryChange:_e,groupQueryChange:we,handleMouseEnter:he,handleMouseLeave:ke,showTagList:Me,collapseTagList:ne}=kU(e,a,t),{focus:ue}=B5(le),{inputWidth:ie,selected:Oe,inputLength:We,filteredOptionsCount:Xe,visible:fe,selectedLabel:ve,hoverIndex:Ce,query:Ye,inputHovering:Se,currentPlaceholder:Ae,menuVisibleOnFocus:q,isOnComposition:Ie,options:et,cachedOptions:bt,optionsCount:de,prefixWidth:xe}=dr(a),Ne=O(()=>{const Dn=[n.b()],Vo=c(i);return Vo&&Dn.push(n.m(Vo)),e.disabled&&Dn.push(n.m("disabled")),Dn}),tt=O(()=>[n.e("tags"),n.is("disabled",c(E))]),on=O(()=>[n.b("tags-wrapper"),{"has-prefix":c(xe)&&c(Oe).length}]),hn=O(()=>[n.e("input"),n.is(c(i)),n.is("disabled",c(E))]),Lr=O(()=>[n.e("input"),n.is(c(i)),n.em("input","iOS")]),Mr=O(()=>[n.is("empty",!e.allowCreate&&Boolean(c(Ye))&&c(Xe)===0)]),jn=O(()=>({maxWidth:`${c(ie)-32}px`,width:"100%"})),Ks=O(()=>({maxWidth:`${c(ie)>123?c(ie)-123:c(ie)-75}px`})),f2=O(()=>({marginLeft:`${c(xe)}px`,flexGrow:1,width:`${c(We)/(c(ie)-32)}%`,maxWidth:`${c(ie)-42}px`}));yt(rc,Xt({props:e,options:et,optionsArray:s,cachedOptions:bt,optionsCount:de,filteredOptionsCount:Xe,hoverIndex:Ce,handleOptionSelect:m,onOptionCreate:H,onOptionDestroy:j,selectWrapper:Z,selected:Oe,setSelected:_,queryChange:_e,groupQueryChange:we})),dt(()=>{a.cachedPlaceHolder=Ae.value=e.placeholder||(()=>o("el.select.placeholder")),e.multiple&&Array.isArray(e.modelValue)&&e.modelValue.length>0&&(Ae.value=""),xo(Z,d),e.remote&&e.multiple&&y(),qe(()=>{const Dn=le.value&&le.value.$el;if(!!Dn&&(ie.value=Dn.getBoundingClientRect().width,t.slots.prefix)){const Vo=Dn.querySelector(`.${r.e("prefix")}`);xe.value=Math.max(Vo.getBoundingClientRect().width+11,30)}}),_()}),e.multiple&&!Array.isArray(e.modelValue)&&t.emit(Ct,[]),!e.multiple&&Array.isArray(e.modelValue)&&t.emit(Ct,"");const p2=O(()=>{var Dn,Vo;return(Vo=(Dn=$.value)==null?void 0:Dn.popperRef)==null?void 0:Vo.contentRef});return{isIOS:A0,onOptionsRendered:Dn=>{l.value=Dn},prefixWidth:xe,selectSize:i,readonly:u,handleResize:d,collapseTagSize:f,debouncedOnInputChange:h,debouncedQueryChange:p,deletePrevTag:v,deleteTag:g,handleDeleteTooltipTag:te,deleteSelected:w,handleOptionSelect:m,scrollToOption:b,inputWidth:ie,selected:Oe,inputLength:We,filteredOptionsCount:Xe,visible:fe,selectedLabel:ve,hoverIndex:Ce,query:Ye,inputHovering:Se,currentPlaceholder:Ae,menuVisibleOnFocus:q,isOnComposition:Ie,options:et,resetInputHeight:y,managePlaceholder:C,showClose:k,selectDisabled:E,iconComponent:S,iconReverse:R,showNewOption:L,emptyText:F,toggleLastOptionHitState:N,resetInputState:A,handleComposition:M,handleMenuEnter:V,handleFocus:X,blur:I,handleBlur:Y,handleClearClick:ee,handleClose:W,handleKeydownEscape:re,toggleMenu:be,selectOption:Te,getValueKey:ge,navigateOptions:J,dropMenuVisible:ae,focus:ue,reference:le,input:me,iOSInput:P,tooltipRef:$,popperPaneRef:p2,tags:z,selectWrapper:Z,scrollbar:oe,wrapperKls:Ne,tagsKls:tt,tagWrapperKls:on,inputKls:hn,iOSInputKls:Lr,scrollbarKls:Mr,selectTagsStyle:jn,nsSelect:n,tagTextStyle:Ks,inputStyle:f2,handleMouseEnter:he,handleMouseLeave:ke,showTagList:Me,collapseTagList:ne,tagTooltipRef:T}}}),$U=["disabled","autocomplete"],TU=["disabled"],xU={style:{height:"100%",display:"flex","justify-content":"center","align-items":"center"}};function OU(e,t,n,r,o,a){const l=Ve("el-tag"),s=Ve("el-tooltip"),i=Ve("el-icon"),u=Ve("el-input"),d=Ve("el-option"),f=Ve("el-options"),h=Ve("el-scrollbar"),p=Ve("el-select-menu"),v=hf("click-outside");return vt((x(),U("div",{ref:"selectWrapper",class:D(e.wrapperKls),onMouseenter:t[21]||(t[21]=(...g)=>e.handleMouseEnter&&e.handleMouseEnter(...g)),onMouseleave:t[22]||(t[22]=(...g)=>e.handleMouseLeave&&e.handleMouseLeave(...g)),onClick:t[23]||(t[23]=$t((...g)=>e.toggleMenu&&e.toggleMenu(...g),["stop"]))},[Q(s,{ref:"tooltipRef",visible:e.dropMenuVisible,placement:e.placement,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-options":e.popperOptions,"fallback-placements":["bottom-start","top-start","right","left"],effect:e.effect,pure:"",trigger:"click",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:e.persistent,onShow:e.handleMenuEnter},{default:G(()=>[K("div",{class:"select-trigger",onMouseenter:t[19]||(t[19]=g=>e.inputHovering=!0),onMouseleave:t[20]||(t[20]=g=>e.inputHovering=!1)},[e.multiple?(x(),U("div",{key:0,ref:"tags",class:D(e.tagsKls),style:Qe(e.selectTagsStyle)},[e.collapseTags&&e.selected.length?(x(),ce(Mn,{key:0,onAfterLeave:e.resetInputHeight},{default:G(()=>[K("span",{class:D(e.tagWrapperKls)},[(x(!0),U(Pe,null,it(e.showTagList,g=>(x(),ce(l,{key:e.getValueKey(g),closable:!e.selectDisabled&&!g.isDisabled,size:e.collapseTagSize,hit:g.hitState,type:e.tagType,"disable-transitions":"",onClose:w=>e.deleteTag(w,g)},{default:G(()=>[K("span",{class:D(e.nsSelect.e("tags-text")),style:Qe(e.tagTextStyle)},Ee(g.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"]))),128)),e.selected.length>e.maxCollapseTags?(x(),ce(l,{key:0,closable:!1,size:e.collapseTagSize,type:e.tagType,"disable-transitions":""},{default:G(()=>[e.collapseTagsTooltip?(x(),ce(s,{key:0,ref:"tagTooltipRef",disabled:e.dropMenuVisible,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom",teleported:e.teleported},{default:G(()=>[K("span",{class:D(e.nsSelect.e("tags-text"))},"+ "+Ee(e.selected.length-e.maxCollapseTags),3)]),content:G(()=>[K("div",{class:D(e.nsSelect.e("collapse-tags"))},[(x(!0),U(Pe,null,it(e.collapseTagList,g=>(x(),U("div",{key:e.getValueKey(g),class:D(e.nsSelect.e("collapse-tag"))},[Q(l,{class:"in-tooltip",closable:!e.selectDisabled&&!g.isDisabled,size:e.collapseTagSize,hit:g.hitState,type:e.tagType,"disable-transitions":"",style:{margin:"2px"},onClose:w=>e.handleDeleteTooltipTag(w,g)},{default:G(()=>[K("span",{class:D(e.nsSelect.e("tags-text")),style:Qe({maxWidth:e.inputWidth-75+"px"})},Ee(g.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"])],2))),128))],2)]),_:1},8,["disabled","effect","teleported"])):(x(),U("span",{key:1,class:D(e.nsSelect.e("tags-text"))},"+ "+Ee(e.selected.length-e.maxCollapseTags),3))]),_:1},8,["size","type"])):ye("v-if",!0)],2)]),_:1},8,["onAfterLeave"])):ye("v-if",!0),e.collapseTags?ye("v-if",!0):(x(),ce(Mn,{key:1,onAfterLeave:e.resetInputHeight},{default:G(()=>[K("span",{class:D(e.tagWrapperKls),style:Qe(e.prefixWidth&&e.selected.length?{marginLeft:`${e.prefixWidth}px`}:"")},[(x(!0),U(Pe,null,it(e.selected,g=>(x(),ce(l,{key:e.getValueKey(g),closable:!e.selectDisabled&&!g.isDisabled,size:e.collapseTagSize,hit:g.hitState,type:e.tagType,"disable-transitions":"",onClose:w=>e.deleteTag(w,g)},{default:G(()=>[K("span",{class:D(e.nsSelect.e("tags-text")),style:Qe({maxWidth:e.inputWidth-75+"px"})},Ee(g.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"]))),128))],6)]),_:1},8,["onAfterLeave"])),e.filterable&&!e.selectDisabled?vt((x(),U("input",{key:2,ref:"input","onUpdate:modelValue":t[0]||(t[0]=g=>e.query=g),type:"text",class:D(e.inputKls),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:Qe(e.inputStyle),onFocus:t[1]||(t[1]=(...g)=>e.handleFocus&&e.handleFocus(...g)),onBlur:t[2]||(t[2]=(...g)=>e.handleBlur&&e.handleBlur(...g)),onKeyup:t[3]||(t[3]=(...g)=>e.managePlaceholder&&e.managePlaceholder(...g)),onKeydown:[t[4]||(t[4]=(...g)=>e.resetInputState&&e.resetInputState(...g)),t[5]||(t[5]=Dt($t(g=>e.navigateOptions("next"),["prevent"]),["down"])),t[6]||(t[6]=Dt($t(g=>e.navigateOptions("prev"),["prevent"]),["up"])),t[7]||(t[7]=Dt((...g)=>e.handleKeydownEscape&&e.handleKeydownEscape(...g),["esc"])),t[8]||(t[8]=Dt($t((...g)=>e.selectOption&&e.selectOption(...g),["stop","prevent"]),["enter"])),t[9]||(t[9]=Dt((...g)=>e.deletePrevTag&&e.deletePrevTag(...g),["delete"])),t[10]||(t[10]=Dt(g=>e.visible=!1,["tab"]))],onCompositionstart:t[11]||(t[11]=(...g)=>e.handleComposition&&e.handleComposition(...g)),onCompositionupdate:t[12]||(t[12]=(...g)=>e.handleComposition&&e.handleComposition(...g)),onCompositionend:t[13]||(t[13]=(...g)=>e.handleComposition&&e.handleComposition(...g)),onInput:t[14]||(t[14]=(...g)=>e.debouncedQueryChange&&e.debouncedQueryChange(...g))},null,46,$U)),[[t0,e.query]]):ye("v-if",!0)],6)):ye("v-if",!0),ye(" fix: https://github.com/element-plus/element-plus/issues/11415 "),e.isIOS&&!e.multiple&&e.filterable&&e.readonly?(x(),U("input",{key:1,ref:"iOSInput",class:D(e.iOSInputKls),disabled:e.selectDisabled,type:"text"},null,10,TU)):ye("v-if",!0),Q(u,{id:e.id,ref:"reference",modelValue:e.selectedLabel,"onUpdate:modelValue":t[15]||(t[15]=g=>e.selectedLabel=g),type:"text",placeholder:typeof e.currentPlaceholder=="function"?e.currentPlaceholder():e.currentPlaceholder,name:e.name,autocomplete:e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,class:D([e.nsSelect.is("focus",e.visible)]),tabindex:e.multiple&&e.filterable?-1:void 0,onFocus:e.handleFocus,onBlur:e.handleBlur,onInput:e.debouncedOnInputChange,onPaste:e.debouncedOnInputChange,onCompositionstart:e.handleComposition,onCompositionupdate:e.handleComposition,onCompositionend:e.handleComposition,onKeydown:[t[16]||(t[16]=Dt($t(g=>e.navigateOptions("next"),["stop","prevent"]),["down"])),t[17]||(t[17]=Dt($t(g=>e.navigateOptions("prev"),["stop","prevent"]),["up"])),Dt($t(e.selectOption,["stop","prevent"]),["enter"]),Dt(e.handleKeydownEscape,["esc"]),t[18]||(t[18]=Dt(g=>e.visible=!1,["tab"]))]},Is({suffix:G(()=>[e.iconComponent&&!e.showClose?(x(),ce(i,{key:0,class:D([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.iconReverse])},{default:G(()=>[(x(),ce(Lt(e.iconComponent)))]),_:1},8,["class"])):ye("v-if",!0),e.showClose&&e.clearIcon?(x(),ce(i,{key:1,class:D([e.nsSelect.e("caret"),e.nsSelect.e("icon")]),onClick:e.handleClearClick},{default:G(()=>[(x(),ce(Lt(e.clearIcon)))]),_:1},8,["class","onClick"])):ye("v-if",!0)]),_:2},[e.$slots.prefix?{name:"prefix",fn:G(()=>[K("div",xU,[pe(e.$slots,"prefix")])])}:void 0]),1032,["id","modelValue","placeholder","name","autocomplete","size","disabled","readonly","class","tabindex","onFocus","onBlur","onInput","onPaste","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown"])],32)]),content:G(()=>[Q(p,null,{default:G(()=>[vt(Q(h,{ref:"scrollbar",tag:"ul","wrap-class":e.nsSelect.be("dropdown","wrap"),"view-class":e.nsSelect.be("dropdown","list"),class:D(e.scrollbarKls)},{default:G(()=>[e.showNewOption?(x(),ce(d,{key:0,value:e.query,created:!0},null,8,["value"])):ye("v-if",!0),Q(f,{onUpdateOptions:e.onOptionsRendered},{default:G(()=>[pe(e.$slots,"default")]),_:3},8,["onUpdateOptions"])]),_:3},8,["wrap-class","view-class","class"]),[[qt,e.options.size>0&&!e.loading]]),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&e.options.size===0)?(x(),U(Pe,{key:0},[e.$slots.empty?pe(e.$slots,"empty",{key:0}):(x(),U("p",{key:1,class:D(e.nsSelect.be("dropdown","empty"))},Ee(e.emptyText),3))],64)):ye("v-if",!0)]),_:3})]),_:3},8,["visible","placement","teleported","popper-class","popper-options","effect","transition","persistent","onShow"])],34)),[[v,e.handleClose,e.popperPaneRef]])}var AU=ze(EU,[["render",OU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/select.vue"]]);const IU=se({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},setup(e){const t=Fe("select"),n=B(!0),r=lt(),o=B([]);yt(Bw,Xt({...dr(e)}));const a=Re(rc);dt(()=>{o.value=l(r.subTree)});const l=i=>{const u=[];return Array.isArray(i.children)&&i.children.forEach(d=>{var f;d.type&&d.type.name==="ElOption"&&d.component&&d.component.proxy?u.push(d.component.proxy):(f=d.children)!=null&&f.length&&u.push(...l(d))}),u},{groupQueryChange:s}=gt(a);return $e(s,()=>{n.value=o.value.some(i=>i.visible===!0)},{flush:"post"}),{visible:n,ns:t}}});function PU(e,t,n,r,o,a){return vt((x(),U("ul",{class:D(e.ns.be("group","wrap"))},[K("li",{class:D(e.ns.be("group","title"))},Ee(e.label),3),K("li",null,[K("ul",{class:D(e.ns.b("group"))},[pe(e.$slots,"default")],2)])],2)),[[qt,e.visible]])}var zw=ze(IU,[["render",PU],["__file","/home/runner/work/element-plus/element-plus/packages/components/select/src/option-group.vue"]]);const Hw=Bt(AU,{Option:Pp,OptionGroup:zw}),LU=br(Pp);br(zw);const Lp=()=>Re(Vw,{}),MU=je({pageSize:{type:Number,required:!0},pageSizes:{type:Le(Array),default:()=>Ur([10,20,30,40,50,100])},popperClass:{type:String},disabled:Boolean,size:{type:String,values:_a}}),RU=se({name:"ElPaginationSizes"}),NU=se({...RU,props:MU,emits:["page-size-change"],setup(e,{emit:t}){const n=e,{t:r}=Pt(),o=Fe("pagination"),a=Lp(),l=B(n.pageSize);$e(()=>n.pageSizes,(u,d)=>{if(!bs(u,d)&&Array.isArray(u)){const f=u.includes(n.pageSize)?n.pageSize:n.pageSizes[0];t("page-size-change",f)}}),$e(()=>n.pageSize,u=>{l.value=u});const s=O(()=>n.pageSizes);function i(u){var d;u!==l.value&&(l.value=u,(d=a.handleSizeChange)==null||d.call(a,Number(u)))}return(u,d)=>(x(),U("span",{class:D(c(o).e("sizes"))},[Q(c(Hw),{"model-value":l.value,disabled:u.disabled,"popper-class":u.popperClass,size:u.size,"validate-event":!1,onChange:i},{default:G(()=>[(x(!0),U(Pe,null,it(c(s),f=>(x(),ce(c(LU),{key:f,value:f,label:f+c(r)("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","size"])],2))}});var DU=ze(NU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/sizes.vue"]]);const FU=je({size:{type:String,values:_a}}),VU=["disabled"],BU=se({name:"ElPaginationJumper"}),zU=se({...BU,props:FU,setup(e){const{t}=Pt(),n=Fe("pagination"),{pageCount:r,disabled:o,currentPage:a,changeEvent:l}=Lp(),s=B(),i=O(()=>{var f;return(f=s.value)!=null?f:a==null?void 0:a.value});function u(f){s.value=f?+f:""}function d(f){f=Math.trunc(+f),l==null||l(f),s.value=void 0}return(f,h)=>(x(),U("span",{class:D(c(n).e("jump")),disabled:c(o)},[K("span",{class:D([c(n).e("goto")])},Ee(c(t)("el.pagination.goto")),3),Q(c(Kn),{size:f.size,class:D([c(n).e("editor"),c(n).is("in-pagination")]),min:1,max:c(r),disabled:c(o),"model-value":c(i),"validate-event":!1,label:c(t)("el.pagination.page"),type:"number","onUpdate:modelValue":u,onChange:d},null,8,["size","class","max","disabled","model-value","label"]),K("span",{class:D([c(n).e("classifier")])},Ee(c(t)("el.pagination.pageClassifier")),3)],10,VU))}});var HU=ze(zU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/jumper.vue"]]);const jU=je({total:{type:Number,default:1e3}}),WU=["disabled"],UU=se({name:"ElPaginationTotal"}),KU=se({...UU,props:jU,setup(e){const{t}=Pt(),n=Fe("pagination"),{disabled:r}=Lp();return(o,a)=>(x(),U("span",{class:D(c(n).e("total")),disabled:c(r)},Ee(c(t)("el.pagination.total",{total:o.total})),11,WU))}});var qU=ze(KU,[["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/total.vue"]]);const YU=je({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),GU=["onKeyup"],XU=["aria-current","aria-label","tabindex"],JU=["tabindex","aria-label"],ZU=["aria-current","aria-label","tabindex"],QU=["tabindex","aria-label"],eK=["aria-current","aria-label","tabindex"],tK=se({name:"ElPaginationPager"}),nK=se({...tK,props:YU,emits:["change"],setup(e,{emit:t}){const n=e,r=Fe("pager"),o=Fe("icon"),{t:a}=Pt(),l=B(!1),s=B(!1),i=B(!1),u=B(!1),d=B(!1),f=B(!1),h=O(()=>{const y=n.pagerCount,C=(y-1)/2,k=Number(n.currentPage),E=Number(n.pageCount);let S=!1,R=!1;E>y&&(k>y-C&&(S=!0),k["more","btn-quickprev",o.b(),r.is("disabled",n.disabled)]),v=O(()=>["more","btn-quicknext",o.b(),r.is("disabled",n.disabled)]),g=O(()=>n.disabled?-1:0);qr(()=>{const y=(n.pagerCount-1)/2;l.value=!1,s.value=!1,n.pageCount>n.pagerCount&&(n.currentPage>n.pagerCount-y&&(l.value=!0),n.currentPageE&&(k=E)),k!==S&&t("change",k)}return(y,C)=>(x(),U("ul",{class:D(c(r).b()),onClick:_,onKeyup:Dt(b,["enter"])},[y.pageCount>0?(x(),U("li",{key:0,class:D([[c(r).is("active",y.currentPage===1),c(r).is("disabled",y.disabled)],"number"]),"aria-current":y.currentPage===1,"aria-label":c(a)("el.pagination.currentPage",{pager:1}),tabindex:c(g)}," 1 ",10,XU)):ye("v-if",!0),l.value?(x(),U("li",{key:1,class:D(c(p)),tabindex:c(g),"aria-label":c(a)("el.pagination.prevPages",{pager:y.pagerCount-2}),onMouseenter:C[0]||(C[0]=k=>w(!0)),onMouseleave:C[1]||(C[1]=k=>i.value=!1),onFocus:C[2]||(C[2]=k=>m(!0)),onBlur:C[3]||(C[3]=k=>d.value=!1)},[(i.value||d.value)&&!y.disabled?(x(),ce(c(tl),{key:0})):(x(),ce(c(Vv),{key:1}))],42,JU)):ye("v-if",!0),(x(!0),U(Pe,null,it(c(h),k=>(x(),U("li",{key:k,class:D([[c(r).is("active",y.currentPage===k),c(r).is("disabled",y.disabled)],"number"]),"aria-current":y.currentPage===k,"aria-label":c(a)("el.pagination.currentPage",{pager:k}),tabindex:c(g)},Ee(k),11,ZU))),128)),s.value?(x(),U("li",{key:2,class:D(c(v)),tabindex:c(g),"aria-label":c(a)("el.pagination.nextPages",{pager:y.pagerCount-2}),onMouseenter:C[4]||(C[4]=k=>w()),onMouseleave:C[5]||(C[5]=k=>u.value=!1),onFocus:C[6]||(C[6]=k=>m()),onBlur:C[7]||(C[7]=k=>f.value=!1)},[(u.value||f.value)&&!y.disabled?(x(),ce(c(nl),{key:0})):(x(),ce(c(Vv),{key:1}))],42,QU)):ye("v-if",!0),y.pageCount>1?(x(),U("li",{key:3,class:D([[c(r).is("active",y.currentPage===y.pageCount),c(r).is("disabled",y.disabled)],"number"]),"aria-current":y.currentPage===y.pageCount,"aria-label":c(a)("el.pagination.currentPage",{pager:y.pageCount}),tabindex:c(g)},Ee(y.pageCount),11,eK)):ye("v-if",!0)],42,GU))}});var rK=ze(nK,[["__file","/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/pager.vue"]]);const vn=e=>typeof e!="number",oK=je({pageSize:Number,defaultPageSize:Number,total:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>ct(e)&&Math.trunc(e)===e&&e>4&&e<22&&e%2===1,default:7},currentPage:Number,defaultCurrentPage:Number,layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:Le(Array),default:()=>Ur([10,20,30,40,50,100])},popperClass:{type:String,default:""},prevText:{type:String,default:""},prevIcon:{type:Cn,default:()=>vu},nextText:{type:String,default:""},nextIcon:{type:Cn,default:()=>oa},small:Boolean,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean}),aK={"update:current-page":e=>ct(e),"update:page-size":e=>ct(e),"size-change":e=>ct(e),"current-change":e=>ct(e),"prev-click":e=>ct(e),"next-click":e=>ct(e)},Fg="ElPagination";var lK=se({name:Fg,props:oK,emits:aK,setup(e,{emit:t,slots:n}){const{t:r}=Pt(),o=Fe("pagination"),a=lt().vnode.props||{},l="onUpdate:currentPage"in a||"onUpdate:current-page"in a||"onCurrentChange"in a,s="onUpdate:pageSize"in a||"onUpdate:page-size"in a||"onSizeChange"in a,i=O(()=>{if(vn(e.total)&&vn(e.pageCount)||!vn(e.currentPage)&&!l)return!1;if(e.layout.includes("sizes")){if(vn(e.pageCount)){if(!vn(e.total)&&!vn(e.pageSize)&&!s)return!1}else if(!s)return!1}return!0}),u=B(vn(e.defaultPageSize)?10:e.defaultPageSize),d=B(vn(e.defaultCurrentPage)?1:e.defaultCurrentPage),f=O({get(){return vn(e.pageSize)?u.value:e.pageSize},set(_){vn(e.pageSize)&&(u.value=_),s&&(t("update:page-size",_),t("size-change",_))}}),h=O(()=>{let _=0;return vn(e.pageCount)?vn(e.total)||(_=Math.max(1,Math.ceil(e.total/f.value))):_=e.pageCount,_}),p=O({get(){return vn(e.currentPage)?d.value:e.currentPage},set(_){let y=_;_<1?y=1:_>h.value&&(y=h.value),vn(e.currentPage)&&(d.value=y),l&&(t("update:current-page",y),t("current-change",y))}});$e(h,_=>{p.value>_&&(p.value=_)});function v(_){p.value=_}function g(_){f.value=_;const y=h.value;p.value>y&&(p.value=y)}function w(){e.disabled||(p.value-=1,t("prev-click",p.value))}function m(){e.disabled||(p.value+=1,t("next-click",p.value))}function b(_,y){_&&(_.props||(_.props={}),_.props.class=[_.props.class,y].join(" "))}return yt(Vw,{pageCount:h,disabled:O(()=>e.disabled),currentPage:p,changeEvent:v,handleSizeChange:g}),()=>{var _,y;if(!i.value)return r("el.pagination.deprecationWarning"),null;if(!e.layout||e.hideOnSinglePage&&h.value<=1)return null;const C=[],k=[],E=He("div",{class:o.e("rightwrapper")},k),S={prev:He(uU,{disabled:e.disabled,currentPage:p.value,prevText:e.prevText,prevIcon:e.prevIcon,onClick:w}),jumper:He(HU,{size:e.small?"small":"default"}),pager:He(rK,{currentPage:p.value,pageCount:h.value,pagerCount:e.pagerCount,onChange:v,disabled:e.disabled}),next:He(hU,{disabled:e.disabled,currentPage:p.value,pageCount:h.value,nextText:e.nextText,nextIcon:e.nextIcon,onClick:m}),sizes:He(DU,{pageSize:f.value,pageSizes:e.pageSizes,popperClass:e.popperClass,disabled:e.disabled,size:e.small?"small":"default"}),slot:(y=(_=n==null?void 0:n.default)==null?void 0:_.call(n))!=null?y:null,total:He(qU,{total:vn(e.total)?0:e.total})},R=e.layout.split(",").map(F=>F.trim());let L=!1;return R.forEach(F=>{if(F==="->"){L=!0;return}L?k.push(S[F]):C.push(S[F])}),b(C[0],o.is("first")),b(C[C.length-1],o.is("last")),L&&k.length>0&&(b(k[0],o.is("first")),b(k[k.length-1],o.is("last")),C.push(E)),He("div",{class:[o.b(),o.is("background",e.background),{[o.m("small")]:e.small}]},C)}}});const sK=Bt(lK),jw=Symbol("sliderContextKey"),iK=je({modelValue:{type:Le([Number,Array]),default:0},id:{type:String,default:void 0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},showInput:Boolean,showInputControls:{type:Boolean,default:!0},size:Hn,inputSize:Hn,showStops:Boolean,showTooltip:{type:Boolean,default:!0},formatTooltip:{type:Le(Function),default:void 0},disabled:Boolean,range:Boolean,vertical:Boolean,height:String,debounce:{type:Number,default:300},label:{type:String,default:void 0},rangeStartLabel:{type:String,default:void 0},rangeEndLabel:{type:String,default:void 0},formatValueText:{type:Le(Function),default:void 0},tooltipClass:{type:String,default:void 0},placement:{type:String,values:gl,default:"top"},marks:{type:Le(Object)},validateEvent:{type:Boolean,default:!0}}),Rc=e=>ct(e)||De(e)&&e.every(ct),uK={[Ct]:Rc,[$r]:Rc,[pr]:Rc},cK=(e,t,n)=>{const r=B();return dt(async()=>{e.range?(Array.isArray(e.modelValue)?(t.firstValue=Math.max(e.min,e.modelValue[0]),t.secondValue=Math.min(e.max,e.modelValue[1])):(t.firstValue=e.min,t.secondValue=e.max),t.oldValue=[t.firstValue,t.secondValue]):(typeof e.modelValue!="number"||Number.isNaN(e.modelValue)?t.firstValue=e.min:t.firstValue=Math.min(e.max,Math.max(e.min,e.modelValue)),t.oldValue=t.firstValue),An(window,"resize",n),await qe(),n()}),{sliderWrapper:r}},dK=e=>O(()=>e.marks?Object.keys(e.marks).map(Number.parseFloat).sort((n,r)=>n-r).filter(n=>n<=e.max&&n>=e.min).map(n=>({point:n,position:(n-e.min)*100/(e.max-e.min),mark:e.marks[n]})):[]),fK=(e,t,n)=>{const{form:r,formItem:o}=er(),a=On(),l=B(),s=B(),i={firstButton:l,secondButton:s},u=O(()=>e.disabled||(r==null?void 0:r.disabled)||!1),d=O(()=>Math.min(t.firstValue,t.secondValue)),f=O(()=>Math.max(t.firstValue,t.secondValue)),h=O(()=>e.range?`${100*(f.value-d.value)/(e.max-e.min)}%`:`${100*(t.firstValue-e.min)/(e.max-e.min)}%`),p=O(()=>e.range?`${100*(d.value-e.min)/(e.max-e.min)}%`:"0%"),v=O(()=>e.vertical?{height:e.height}:{}),g=O(()=>e.vertical?{height:h.value,bottom:p.value}:{width:h.value,left:p.value}),w=()=>{a.value&&(t.sliderSize=a.value[`client${e.vertical?"Height":"Width"}`])},m=F=>{const N=e.min+F*(e.max-e.min)/100;if(!e.range)return l;let A;return Math.abs(d.value-N)t.secondValue?"firstButton":"secondButton",i[A]},b=F=>{const N=m(F);return N.value.setPosition(F),N},_=F=>{t.firstValue=F,C(e.range?[d.value,f.value]:F)},y=F=>{t.secondValue=F,e.range&&C([d.value,f.value])},C=F=>{n(Ct,F),n($r,F)},k=async()=>{await qe(),n(pr,e.range?[d.value,f.value]:e.modelValue)},E=F=>{var N,A,M,H,j,V;if(u.value||t.dragging)return;w();let X=0;if(e.vertical){const I=(M=(A=(N=F.touches)==null?void 0:N.item(0))==null?void 0:A.clientY)!=null?M:F.clientY;X=(a.value.getBoundingClientRect().bottom-I)/t.sliderSize*100}else{const I=(V=(j=(H=F.touches)==null?void 0:H.item(0))==null?void 0:j.clientX)!=null?V:F.clientX,Y=a.value.getBoundingClientRect().left;X=(I-Y)/t.sliderSize*100}if(!(X<0||X>100))return b(X)};return{elFormItem:o,slider:a,firstButton:l,secondButton:s,sliderDisabled:u,minValue:d,maxValue:f,runwayStyle:v,barStyle:g,resetSize:w,setPosition:b,emitChange:k,onSliderWrapperPrevent:F=>{var N,A;(((N=i.firstButton.value)==null?void 0:N.dragging)||((A=i.secondButton.value)==null?void 0:A.dragging))&&F.preventDefault()},onSliderClick:F=>{E(F)&&k()},onSliderDown:async F=>{const N=E(F);N&&(await qe(),N.value.onButtonDown(F))},setFirstValue:_,setSecondValue:y}},{left:pK,down:mK,right:hK,up:vK,home:gK,end:bK,pageUp:yK,pageDown:_K}=at,wK=(e,t,n)=>{const r=B(),o=B(!1),a=O(()=>t.value instanceof Function),l=O(()=>a.value&&t.value(e.modelValue)||e.modelValue),s=Or(()=>{n.value&&(o.value=!0)},50),i=Or(()=>{n.value&&(o.value=!1)},50);return{tooltip:r,tooltipVisible:o,formatValue:l,displayTooltip:s,hideTooltip:i}},CK=(e,t,n)=>{const{disabled:r,min:o,max:a,step:l,showTooltip:s,precision:i,sliderSize:u,formatTooltip:d,emitChange:f,resetSize:h,updateDragging:p}=Re(jw),{tooltip:v,tooltipVisible:g,formatValue:w,displayTooltip:m,hideTooltip:b}=wK(e,d,s),_=B(),y=O(()=>`${(e.modelValue-o.value)/(a.value-o.value)*100}%`),C=O(()=>e.vertical?{bottom:y.value}:{left:y.value}),k=()=>{t.hovering=!0,m()},E=()=>{t.hovering=!1,t.dragging||b()},S=W=>{r.value||(W.preventDefault(),X(W),window.addEventListener("mousemove",I),window.addEventListener("touchmove",I),window.addEventListener("mouseup",Y),window.addEventListener("touchend",Y),window.addEventListener("contextmenu",Y),_.value.focus())},R=W=>{r.value||(t.newPosition=Number.parseFloat(y.value)+W/(a.value-o.value)*100,ee(t.newPosition),f())},L=()=>{R(-l.value)},F=()=>{R(l.value)},N=()=>{R(-l.value*4)},A=()=>{R(l.value*4)},M=()=>{r.value||(ee(0),f())},H=()=>{r.value||(ee(100),f())},j=W=>{let re=!0;[pK,mK].includes(W.key)?L():[hK,vK].includes(W.key)?F():W.key===gK?M():W.key===bK?H():W.key===_K?N():W.key===yK?A():re=!1,re&&W.preventDefault()},V=W=>{let re,be;return W.type.startsWith("touch")?(be=W.touches[0].clientY,re=W.touches[0].clientX):(be=W.clientY,re=W.clientX),{clientX:re,clientY:be}},X=W=>{t.dragging=!0,t.isClick=!0;const{clientX:re,clientY:be}=V(W);e.vertical?t.startY=be:t.startX=re,t.startPosition=Number.parseFloat(y.value),t.newPosition=t.startPosition},I=W=>{if(t.dragging){t.isClick=!1,m(),h();let re;const{clientX:be,clientY:Te}=V(W);e.vertical?(t.currentY=Te,re=(t.startY-t.currentY)/u.value*100):(t.currentX=be,re=(t.currentX-t.startX)/u.value*100),t.newPosition=t.startPosition+re,ee(t.newPosition)}},Y=()=>{t.dragging&&(setTimeout(()=>{t.dragging=!1,t.hovering||b(),t.isClick||ee(t.newPosition),f()},0),window.removeEventListener("mousemove",I),window.removeEventListener("touchmove",I),window.removeEventListener("mouseup",Y),window.removeEventListener("touchend",Y),window.removeEventListener("contextmenu",Y))},ee=async W=>{if(W===null||Number.isNaN(+W))return;W<0?W=0:W>100&&(W=100);const re=100/((a.value-o.value)/l.value);let Te=Math.round(W/re)*re*(a.value-o.value)*.01+o.value;Te=Number.parseFloat(Te.toFixed(i.value)),Te!==e.modelValue&&n(Ct,Te),!t.dragging&&e.modelValue!==t.oldValue&&(t.oldValue=e.modelValue),await qe(),t.dragging&&m(),v.value.updatePopper()};return $e(()=>t.dragging,W=>{p(W)}),{disabled:r,button:_,tooltip:v,tooltipVisible:g,showTooltip:s,wrapperStyle:C,formatValue:w,handleMouseEnter:k,handleMouseLeave:E,onButtonDown:S,onKeyDown:j,setPosition:ee}},kK=(e,t,n,r)=>({stops:O(()=>{if(!e.showStops||e.min>e.max)return[];if(e.step===0)return[];const l=(e.max-e.min)/e.step,s=100*e.step/(e.max-e.min),i=Array.from({length:l-1}).map((u,d)=>(d+1)*s);return e.range?i.filter(u=>u<100*(n.value-e.min)/(e.max-e.min)||u>100*(r.value-e.min)/(e.max-e.min)):i.filter(u=>u>100*(t.firstValue-e.min)/(e.max-e.min))}),getStopStyle:l=>e.vertical?{bottom:`${l}%`}:{left:`${l}%`}}),SK=(e,t,n,r,o,a)=>{const l=u=>{o(Ct,u),o($r,u)},s=()=>e.range?![n.value,r.value].every((u,d)=>u===t.oldValue[d]):e.modelValue!==t.oldValue,i=()=>{var u,d;e.min>e.max&&ya("Slider","min should not be greater than max.");const f=e.modelValue;e.range&&Array.isArray(f)?f[1]e.max?l([e.max,e.max]):f[0]e.max?l([f[0],e.max]):(t.firstValue=f[0],t.secondValue=f[1],s()&&(e.validateEvent&&((u=a==null?void 0:a.validate)==null||u.call(a,"change").catch(h=>void 0)),t.oldValue=f.slice())):!e.range&&typeof f=="number"&&!Number.isNaN(f)&&(fe.max?l(e.max):(t.firstValue=f,s()&&(e.validateEvent&&((d=a==null?void 0:a.validate)==null||d.call(a,"change").catch(h=>void 0)),t.oldValue=f)))};i(),$e(()=>t.dragging,u=>{u||i()}),$e(()=>e.modelValue,(u,d)=>{t.dragging||Array.isArray(u)&&Array.isArray(d)&&u.every((f,h)=>f===d[h])&&t.firstValue===u[0]&&t.secondValue===u[1]||i()},{deep:!0}),$e(()=>[e.min,e.max],()=>{i()})},EK=je({modelValue:{type:Number,default:0},vertical:Boolean,tooltipClass:String,placement:{type:String,values:gl,default:"top"}}),$K={[Ct]:e=>ct(e)},TK=["tabindex"],xK=se({name:"ElSliderButton"}),OK=se({...xK,props:EK,emits:$K,setup(e,{expose:t,emit:n}){const r=e,o=Fe("slider"),a=Xt({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:r.modelValue}),{disabled:l,button:s,tooltip:i,showTooltip:u,tooltipVisible:d,wrapperStyle:f,formatValue:h,handleMouseEnter:p,handleMouseLeave:v,onButtonDown:g,onKeyDown:w,setPosition:m}=CK(r,a,n),{hovering:b,dragging:_}=dr(a);return t({onButtonDown:g,onKeyDown:w,setPosition:m,hovering:b,dragging:_}),(y,C)=>(x(),U("div",{ref_key:"button",ref:s,class:D([c(o).e("button-wrapper"),{hover:c(b),dragging:c(_)}]),style:Qe(c(f)),tabindex:c(l)?-1:0,onMouseenter:C[0]||(C[0]=(...k)=>c(p)&&c(p)(...k)),onMouseleave:C[1]||(C[1]=(...k)=>c(v)&&c(v)(...k)),onMousedown:C[2]||(C[2]=(...k)=>c(g)&&c(g)(...k)),onTouchstart:C[3]||(C[3]=(...k)=>c(g)&&c(g)(...k)),onFocus:C[4]||(C[4]=(...k)=>c(p)&&c(p)(...k)),onBlur:C[5]||(C[5]=(...k)=>c(v)&&c(v)(...k)),onKeydown:C[6]||(C[6]=(...k)=>c(w)&&c(w)(...k))},[Q(c(Ca),{ref_key:"tooltip",ref:i,visible:c(d),placement:y.placement,"fallback-placements":["top","bottom","right","left"],"stop-popper-mouse-event":!1,"popper-class":y.tooltipClass,disabled:!c(u),persistent:""},{content:G(()=>[K("span",null,Ee(c(h)),1)]),default:G(()=>[K("div",{class:D([c(o).e("button"),{hover:c(b),dragging:c(_)}])},null,2)]),_:1},8,["visible","placement","popper-class","disabled"])],46,TK))}});var Vg=ze(OK,[["__file","/home/runner/work/element-plus/element-plus/packages/components/slider/src/button.vue"]]);const AK=je({mark:{type:Le([String,Object]),default:void 0}});var IK=se({name:"ElSliderMarker",props:AK,setup(e){const t=Fe("slider"),n=O(()=>Ge(e.mark)?e.mark:e.mark.label),r=O(()=>Ge(e.mark)?void 0:e.mark.style);return()=>He("div",{class:t.e("marks-text"),style:r.value},n.value)}});const PK=["id","role","aria-label","aria-labelledby"],LK={key:1},MK=se({name:"ElSlider"}),RK=se({...MK,props:iK,emits:uK,setup(e,{expose:t,emit:n}){const r=e,o=Fe("slider"),{t:a}=Pt(),l=Xt({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:s,slider:i,firstButton:u,secondButton:d,sliderDisabled:f,minValue:h,maxValue:p,runwayStyle:v,barStyle:g,resetSize:w,emitChange:m,onSliderWrapperPrevent:b,onSliderClick:_,onSliderDown:y,setFirstValue:C,setSecondValue:k}=fK(r,l,n),{stops:E,getStopStyle:S}=kK(r,l,h,p),{inputId:R,isLabeledByFormItem:L}=wa(r,{formItemContext:s}),F=mn(),N=O(()=>r.inputSize||F.value),A=O(()=>r.label||a("el.slider.defaultLabel",{min:r.min,max:r.max})),M=O(()=>r.range?r.rangeStartLabel||a("el.slider.defaultRangeStartLabel"):A.value),H=O(()=>r.formatValueText?r.formatValueText(W.value):`${W.value}`),j=O(()=>r.rangeEndLabel||a("el.slider.defaultRangeEndLabel")),V=O(()=>r.formatValueText?r.formatValueText(re.value):`${re.value}`),X=O(()=>[o.b(),o.m(F.value),o.is("vertical",r.vertical),{[o.m("with-input")]:r.showInput}]),I=dK(r);SK(r,l,h,p,n,s);const Y=O(()=>{const ge=[r.min,r.max,r.step].map(J=>{const te=`${J}`.split(".")[1];return te?te.length:0});return Math.max.apply(null,ge)}),{sliderWrapper:ee}=cK(r,l,w),{firstValue:W,secondValue:re,sliderSize:be}=dr(l),Te=ge=>{l.dragging=ge};return yt(jw,{...dr(r),sliderSize:be,disabled:f,precision:Y,emitChange:m,resetSize:w,updateDragging:Te}),t({onSliderClick:_}),(ge,J)=>{var te,ae;return x(),U("div",{id:ge.range?c(R):void 0,ref_key:"sliderWrapper",ref:ee,class:D(c(X)),role:ge.range?"group":void 0,"aria-label":ge.range&&!c(L)?c(A):void 0,"aria-labelledby":ge.range&&c(L)?(te=c(s))==null?void 0:te.labelId:void 0,onTouchstart:J[2]||(J[2]=(...le)=>c(b)&&c(b)(...le)),onTouchmove:J[3]||(J[3]=(...le)=>c(b)&&c(b)(...le))},[K("div",{ref_key:"slider",ref:i,class:D([c(o).e("runway"),{"show-input":ge.showInput&&!ge.range},c(o).is("disabled",c(f))]),style:Qe(c(v)),onMousedown:J[0]||(J[0]=(...le)=>c(y)&&c(y)(...le)),onTouchstart:J[1]||(J[1]=(...le)=>c(y)&&c(y)(...le))},[K("div",{class:D(c(o).e("bar")),style:Qe(c(g))},null,6),Q(Vg,{id:ge.range?void 0:c(R),ref_key:"firstButton",ref:u,"model-value":c(W),vertical:ge.vertical,"tooltip-class":ge.tooltipClass,placement:ge.placement,role:"slider","aria-label":ge.range||!c(L)?c(M):void 0,"aria-labelledby":!ge.range&&c(L)?(ae=c(s))==null?void 0:ae.labelId:void 0,"aria-valuemin":ge.min,"aria-valuemax":ge.range?c(re):ge.max,"aria-valuenow":c(W),"aria-valuetext":c(H),"aria-orientation":ge.vertical?"vertical":"horizontal","aria-disabled":c(f),"onUpdate:modelValue":c(C)},null,8,["id","model-value","vertical","tooltip-class","placement","aria-label","aria-labelledby","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"]),ge.range?(x(),ce(Vg,{key:0,ref_key:"secondButton",ref:d,"model-value":c(re),vertical:ge.vertical,"tooltip-class":ge.tooltipClass,placement:ge.placement,role:"slider","aria-label":c(j),"aria-valuemin":c(W),"aria-valuemax":ge.max,"aria-valuenow":c(re),"aria-valuetext":c(V),"aria-orientation":ge.vertical?"vertical":"horizontal","aria-disabled":c(f),"onUpdate:modelValue":c(k)},null,8,["model-value","vertical","tooltip-class","placement","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"])):ye("v-if",!0),ge.showStops?(x(),U("div",LK,[(x(!0),U(Pe,null,it(c(E),(le,me)=>(x(),U("div",{key:me,class:D(c(o).e("stop")),style:Qe(c(S)(le))},null,6))),128))])):ye("v-if",!0),c(I).length>0?(x(),U(Pe,{key:2},[K("div",null,[(x(!0),U(Pe,null,it(c(I),(le,me)=>(x(),U("div",{key:me,style:Qe(c(S)(le.position)),class:D([c(o).e("stop"),c(o).e("marks-stop")])},null,6))),128))]),K("div",{class:D(c(o).e("marks"))},[(x(!0),U(Pe,null,it(c(I),(le,me)=>(x(),ce(c(IK),{key:me,mark:le.mark,style:Qe(c(S)(le.position))},null,8,["mark","style"]))),128))],2)],64)):ye("v-if",!0)],38),ge.showInput&&!ge.range?(x(),ce(c(Fw),{key:0,ref:"input","model-value":c(W),class:D(c(o).e("input")),step:ge.step,disabled:c(f),controls:ge.showInputControls,min:ge.min,max:ge.max,debounce:ge.debounce,size:c(N),"onUpdate:modelValue":c(C),onChange:c(m)},null,8,["model-value","class","step","disabled","controls","min","max","debounce","size","onUpdate:modelValue","onChange"])):ye("v-if",!0)],42,PK)}}});var NK=ze(RK,[["__file","/home/runner/work/element-plus/element-plus/packages/components/slider/src/slider.vue"]]);const DK=Bt(NK),FK=je({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},size:{type:String,validator:q1},width:{type:[String,Number],default:""},inlinePrompt:{type:Boolean,default:!1},activeIcon:{type:Cn},inactiveIcon:{type:Cn},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},borderColor:{type:String,default:""},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:Le(Function)},id:String,tabindex:{type:[String,Number]},value:{type:[Boolean,String,Number],default:!1}}),VK={[Ct]:e=>_n(e)||Ge(e)||ct(e),[pr]:e=>_n(e)||Ge(e)||ct(e),[$r]:e=>_n(e)||Ge(e)||ct(e)},BK=["onClick"],zK=["id","aria-checked","aria-disabled","name","true-value","false-value","disabled","tabindex","onKeydown"],HK=["aria-hidden"],jK=["aria-hidden"],WK=["aria-hidden"],Kd="ElSwitch",UK=se({name:Kd}),KK=se({...UK,props:FK,emits:VK,setup(e,{expose:t,emit:n}){const r=e,o=lt(),{formItem:a}=er(),l=mn(),s=Fe("switch");(S=>{S.forEach(R=>{_s({from:R[0],replacement:R[1],scope:Kd,version:"2.3.0",ref:"https://element-plus.org/en-US/component/switch.html#attributes",type:"Attribute"},O(()=>{var L;return!!((L=o.vnode.props)!=null&&L[R[2]])}))})})([['"value"','"model-value" or "v-model"',"value"],['"active-color"',"CSS var `--el-switch-on-color`","activeColor"],['"inactive-color"',"CSS var `--el-switch-off-color`","inactiveColor"],['"border-color"',"CSS var `--el-switch-border-color`","borderColor"]]);const{inputId:u}=wa(r,{formItemContext:a}),d=Fo(O(()=>r.loading)),f=B(r.modelValue!==!1),h=B(),p=B(),v=O(()=>[s.b(),s.m(l.value),s.is("disabled",d.value),s.is("checked",_.value)]),g=O(()=>[s.e("label"),s.em("label","left"),s.is("active",!_.value)]),w=O(()=>[s.e("label"),s.em("label","right"),s.is("active",_.value)]),m=O(()=>({width:Jn(r.width)}));$e(()=>r.modelValue,()=>{f.value=!0}),$e(()=>r.value,()=>{f.value=!1});const b=O(()=>f.value?r.modelValue:r.value),_=O(()=>b.value===r.activeValue);[r.activeValue,r.inactiveValue].includes(b.value)||(n(Ct,r.inactiveValue),n(pr,r.inactiveValue),n($r,r.inactiveValue)),$e(_,S=>{var R;h.value.checked=S,r.validateEvent&&((R=a==null?void 0:a.validate)==null||R.call(a,"change").catch(L=>void 0))});const y=()=>{const S=_.value?r.inactiveValue:r.activeValue;n(Ct,S),n(pr,S),n($r,S),qe(()=>{h.value.checked=_.value})},C=()=>{if(d.value)return;const{beforeChange:S}=r;if(!S){y();return}const R=S();[Gi(R),_n(R)].includes(!0)||ya(Kd,"beforeChange must return type `Promise` or `boolean`"),Gi(R)?R.then(F=>{F&&y()}).catch(F=>{}):R&&y()},k=O(()=>s.cssVarBlock({...r.activeColor?{"on-color":r.activeColor}:null,...r.inactiveColor?{"off-color":r.inactiveColor}:null,...r.borderColor?{"border-color":r.borderColor}:null})),E=()=>{var S,R;(R=(S=h.value)==null?void 0:S.focus)==null||R.call(S)};return dt(()=>{h.value.checked=_.value}),t({focus:E,checked:_}),(S,R)=>(x(),U("div",{class:D(c(v)),style:Qe(c(k)),onClick:$t(C,["prevent"])},[K("input",{id:c(u),ref_key:"input",ref:h,class:D(c(s).e("input")),type:"checkbox",role:"switch","aria-checked":c(_),"aria-disabled":c(d),name:S.name,"true-value":S.activeValue,"false-value":S.inactiveValue,disabled:c(d),tabindex:S.tabindex,onChange:y,onKeydown:Dt(C,["enter"])},null,42,zK),!S.inlinePrompt&&(S.inactiveIcon||S.inactiveText)?(x(),U("span",{key:0,class:D(c(g))},[S.inactiveIcon?(x(),ce(c(nt),{key:0},{default:G(()=>[(x(),ce(Lt(S.inactiveIcon)))]),_:1})):ye("v-if",!0),!S.inactiveIcon&&S.inactiveText?(x(),U("span",{key:1,"aria-hidden":c(_)},Ee(S.inactiveText),9,HK)):ye("v-if",!0)],2)):ye("v-if",!0),K("span",{ref_key:"core",ref:p,class:D(c(s).e("core")),style:Qe(c(m))},[S.inlinePrompt?(x(),U("div",{key:0,class:D(c(s).e("inner"))},[S.activeIcon||S.inactiveIcon?(x(),ce(c(nt),{key:0,class:D(c(s).is("icon"))},{default:G(()=>[(x(),ce(Lt(c(_)?S.activeIcon:S.inactiveIcon)))]),_:1},8,["class"])):S.activeText||S.inactiveText?(x(),U("span",{key:1,class:D(c(s).is("text")),"aria-hidden":!c(_)},Ee(c(_)?S.activeText:S.inactiveText),11,jK)):ye("v-if",!0)],2)):ye("v-if",!0),K("div",{class:D(c(s).e("action"))},[S.loading?(x(),ce(c(nt),{key:0,class:D(c(s).is("loading"))},{default:G(()=>[Q(c(Gu))]),_:1},8,["class"])):ye("v-if",!0)],2)],6),!S.inlinePrompt&&(S.activeIcon||S.activeText)?(x(),U("span",{key:1,class:D(c(w))},[S.activeIcon?(x(),ce(c(nt),{key:0},{default:G(()=>[(x(),ce(Lt(S.activeIcon)))]),_:1})):ye("v-if",!0),!S.activeIcon&&S.activeText?(x(),U("span",{key:1,"aria-hidden":!c(_)},Ee(S.activeText),9,WK)):ye("v-if",!0)],2)):ye("v-if",!0)],14,BK))}});var qK=ze(KK,[["__file","/home/runner/work/element-plus/element-plus/packages/components/switch/src/switch.vue"]]);const YK=Bt(qK);/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */var GK=/["'&<>]/,XK=JK;function JK(e){var t=""+e,n=GK.exec(t);if(!n)return t;var r,o="",a=0,l=0;for(a=n.index;atypeof u=="string"?fn(s,u):u(s,i,e))):(t!=="$key"&&ht(s)&&"$value"in s&&(s=s.$value),[ht(s)?fn(s,t):s])},l=function(s,i){if(r)return r(s.value,i.value);for(let u=0,d=s.key.length;ui.key[u])return 1}return 0};return e.map((s,i)=>({value:s,index:i,key:a?a(s,i):null})).sort((s,i)=>{let u=l(s,i);return u||(u=s.index-i.index),u*+n}).map(s=>s.value)},Ww=function(e,t){let n=null;return e.columns.forEach(r=>{r.id===t&&(n=r)}),n},QK=function(e,t){let n=null;for(let r=0;r{if(!e)throw new Error("Row is required when get row identity");if(typeof t=="string"){if(!t.includes("."))return`${e[t]}`;const n=t.split(".");let r=e;for(const o of n)r=r[o];return`${r}`}else if(typeof t=="function")return t.call(null,e)},ta=function(e,t){const n={};return(e||[]).forEach((r,o)=>{n[ln(r,t)]={row:r,index:o}}),n};function eq(e,t){const n={};let r;for(r in e)n[r]=e[r];for(r in t)if(ft(t,r)){const o=t[r];typeof o!="undefined"&&(n[r]=o)}return n}function Mp(e){return e===""||e!==void 0&&(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function Uw(e){return e===""||e!==void 0&&(e=Mp(e),Number.isNaN(e)&&(e=80)),e}function tq(e){return typeof e=="number"?e:typeof e=="string"?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function nq(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,n)=>(...r)=>t(n(...r)))}function Xl(e,t,n){let r=!1;const o=e.indexOf(t),a=o!==-1,l=s=>{s==="add"?e.push(t):e.splice(o,1),r=!0,De(t.children)&&t.children.forEach(i=>{Xl(e,i,n!=null?n:!a)})};return _n(n)?n&&!a?l("add"):!n&&a&&l("remove"):l(a?"remove":"add"),r}function rq(e,t,n="children",r="hasChildren"){const o=l=>!(Array.isArray(l)&&l.length);function a(l,s,i){t(l,s,i),s.forEach(u=>{if(u[r]){t(u,null,i+1);return}const d=u[n];o(d)||a(u,d,i+1)})}e.forEach(l=>{if(l[r]){t(l,null,0);return}const s=l[n];o(s)||a(l,s,0)})}let Br;function oq(e,t,n,r,o){o=N1({enterable:!0,showArrow:!0},o);const a=e==null?void 0:e.dataset.prefix,l=e==null?void 0:e.querySelector(`.${a}-scrollbar__wrap`);function s(){const w=o.effect==="light",m=document.createElement("div");return m.className=[`${a}-popper`,w?"is-light":"is-dark",o.popperClass||""].join(" "),n=XK(n),m.innerHTML=n,m.style.zIndex=String(r()),e==null||e.appendChild(m),m}function i(){const w=document.createElement("div");return w.className=`${a}-popper__arrow`,w}function u(){d&&d.update()}Br==null||Br(),Br=()=>{try{d&&d.destroy(),p&&(e==null||e.removeChild(p)),t.removeEventListener("mouseenter",f),t.removeEventListener("mouseleave",h),l==null||l.removeEventListener("scroll",Br),Br=void 0}catch{}};let d=null,f=u,h=Br;o.enterable&&({onOpen:f,onClose:h}=p_({showAfter:o.showAfter,hideAfter:o.hideAfter,open:u,close:Br}));const p=s();p.onmouseenter=f,p.onmouseleave=h;const v=[];if(o.offset&&v.push({name:"offset",options:{offset:[0,o.offset]}}),o.showArrow){const w=p.appendChild(i());v.push({name:"arrow",options:{element:w,padding:10}})}const g=o.popperOptions||{};return d=u_(t,p,{placement:o.placement||"top",strategy:"fixed",...g,modifiers:g.modifiers?v.concat(g.modifiers):v}),t.addEventListener("mouseenter",f),t.addEventListener("mouseleave",h),l==null||l.addEventListener("scroll",Br),d}function Kw(e){return e.children?tN(e.children,Kw):[e]}function zg(e,t){return e+t.colSpan}const qw=(e,t,n,r)=>{let o=0,a=e;const l=n.states.columns.value;if(r){const i=Kw(r[e]);o=l.slice(0,l.indexOf(i[0])).reduce(zg,0),a=o+i.reduce(zg,0)-1}else o=e;let s;switch(t){case"left":a=l.length-n.states.rightFixedLeafColumnsLength.value&&(s="right");break;default:a=l.length-n.states.rightFixedLeafColumnsLength.value&&(s="right")}return s?{direction:s,start:o,after:a}:{}},Rp=(e,t,n,r,o,a=0)=>{const l=[],{direction:s,start:i,after:u}=qw(t,n,r,o);if(s){const d=s==="left";l.push(`${e}-fixed-column--${s}`),d&&u+a===r.states.fixedLeafColumnsLength.value-1?l.push("is-last-column"):!d&&i-a===r.states.columns.value.length-r.states.rightFixedLeafColumnsLength.value&&l.push("is-first-column")}return l};function Hg(e,t){return e+(t.realWidth===null||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const Np=(e,t,n,r)=>{const{direction:o,start:a=0,after:l=0}=qw(e,t,n,r);if(!o)return;const s={},i=o==="left",u=n.states.columns.value;return i?s.left=u.slice(0,a).reduce(Hg,0):s.right=u.slice(l+1).reverse().reduce(Hg,0),s},ul=(e,t)=>{!e||Number.isNaN(e[t])||(e[t]=`${e[t]}px`)};function aq(e){const t=lt(),n=B(!1),r=B([]);return{updateExpandRows:()=>{const i=e.data.value||[],u=e.rowKey.value;if(n.value)r.value=i.slice();else if(u){const d=ta(r.value,u);r.value=i.reduce((f,h)=>{const p=ln(h,u);return d[p]&&f.push(h),f},[])}else r.value=[]},toggleRowExpansion:(i,u)=>{Xl(r.value,i,u)&&t.emit("expand-change",i,r.value.slice())},setExpandRowKeys:i=>{t.store.assertRowKey();const u=e.data.value||[],d=e.rowKey.value,f=ta(u,d);r.value=i.reduce((h,p)=>{const v=f[p];return v&&h.push(v.row),h},[])},isRowExpanded:i=>{const u=e.rowKey.value;return u?!!ta(r.value,u)[ln(i,u)]:r.value.includes(i)},states:{expandRows:r,defaultExpandAll:n}}}function lq(e){const t=lt(),n=B(null),r=B(null),o=u=>{t.store.assertRowKey(),n.value=u,l(u)},a=()=>{n.value=null},l=u=>{const{data:d,rowKey:f}=e;let h=null;f.value&&(h=(c(d)||[]).find(p=>ln(p,f.value)===u)),r.value=h,t.emit("current-change",r.value,null)};return{setCurrentRowKey:o,restoreCurrentRowKey:a,setCurrentRowByKey:l,updateCurrentRow:u=>{const d=r.value;if(u&&u!==d){r.value=u,t.emit("current-change",r.value,d);return}!u&&d&&(r.value=null,t.emit("current-change",null,d))},updateCurrentRowData:()=>{const u=e.rowKey.value,d=e.data.value||[],f=r.value;if(!d.includes(f)&&f){if(u){const h=ln(f,u);l(h)}else r.value=null;r.value===null&&t.emit("current-change",null,f)}else n.value&&(l(n.value),a())},states:{_currentRowKey:n,currentRow:r}}}function sq(e){const t=B([]),n=B({}),r=B(16),o=B(!1),a=B({}),l=B("hasChildren"),s=B("children"),i=lt(),u=O(()=>{if(!e.rowKey.value)return{};const m=e.data.value||[];return f(m)}),d=O(()=>{const m=e.rowKey.value,b=Object.keys(a.value),_={};return b.length&&b.forEach(y=>{if(a.value[y].length){const C={children:[]};a.value[y].forEach(k=>{const E=ln(k,m);C.children.push(E),k[l.value]&&!_[E]&&(_[E]={children:[]})}),_[y]=C}}),_}),f=m=>{const b=e.rowKey.value,_={};return rq(m,(y,C,k)=>{const E=ln(y,b);Array.isArray(C)?_[E]={children:C.map(S=>ln(S,b)),level:k}:o.value&&(_[E]={children:[],lazy:!0,level:k})},s.value,l.value),_},h=(m=!1,b=(_=>(_=i.store)==null?void 0:_.states.defaultExpandAll.value)())=>{var _;const y=u.value,C=d.value,k=Object.keys(y),E={};if(k.length){const S=c(n),R=[],L=(N,A)=>{if(m)return t.value?b||t.value.includes(A):!!(b||(N==null?void 0:N.expanded));{const M=b||t.value&&t.value.includes(A);return!!((N==null?void 0:N.expanded)||M)}};k.forEach(N=>{const A=S[N],M={...y[N]};if(M.expanded=L(A,N),M.lazy){const{loaded:H=!1,loading:j=!1}=A||{};M.loaded=!!H,M.loading=!!j,R.push(N)}E[N]=M});const F=Object.keys(C);o.value&&F.length&&R.length&&F.forEach(N=>{const A=S[N],M=C[N].children;if(R.includes(N)){if(E[N].children.length!==0)throw new Error("[ElTable]children must be an empty array.");E[N].children=M}else{const{loaded:H=!1,loading:j=!1}=A||{};E[N]={lazy:!0,loaded:!!H,loading:!!j,expanded:L(A,N),children:M,level:""}}})}n.value=E,(_=i.store)==null||_.updateTableScrollY()};$e(()=>t.value,()=>{h(!0)}),$e(()=>u.value,()=>{h()}),$e(()=>d.value,()=>{h()});const p=m=>{t.value=m,h()},v=(m,b)=>{i.store.assertRowKey();const _=e.rowKey.value,y=ln(m,_),C=y&&n.value[y];if(y&&C&&"expanded"in C){const k=C.expanded;b=typeof b=="undefined"?!C.expanded:b,n.value[y].expanded=b,k!==b&&i.emit("expand-change",m,b),i.store.updateTableScrollY()}},g=m=>{i.store.assertRowKey();const b=e.rowKey.value,_=ln(m,b),y=n.value[_];o.value&&y&&"loaded"in y&&!y.loaded?w(m,_,y):v(m,void 0)},w=(m,b,_)=>{const{load:y}=i.props;y&&!n.value[b].loaded&&(n.value[b].loading=!0,y(m,_,C=>{if(!Array.isArray(C))throw new TypeError("[ElTable] data must be an array");n.value[b].loading=!1,n.value[b].loaded=!0,n.value[b].expanded=!0,C.length&&(a.value[b]=C),i.emit("expand-change",m,!0)}))};return{loadData:w,loadOrToggle:g,toggleTreeExpansion:v,updateTreeExpandKeys:p,updateTreeData:h,normalize:f,states:{expandRowKeys:t,treeData:n,indent:r,lazy:o,lazyTreeNodeMap:a,lazyColumnIdentifier:l,childrenColumnName:s}}}const iq=(e,t)=>{const n=t.sortingColumn;return!n||typeof n.sortable=="string"?e:ZK(e,t.sortProp,t.sortOrder,n.sortMethod,n.sortBy)},qi=e=>{const t=[];return e.forEach(n=>{n.children&&n.children.length>0?t.push.apply(t,qi(n.children)):t.push(n)}),t};function uq(){var e;const t=lt(),{size:n}=dr((e=t.proxy)==null?void 0:e.$props),r=B(null),o=B([]),a=B([]),l=B(!1),s=B([]),i=B([]),u=B([]),d=B([]),f=B([]),h=B([]),p=B([]),v=B([]),g=[],w=B(0),m=B(0),b=B(0),_=B(!1),y=B([]),C=B(!1),k=B(!1),E=B(null),S=B({}),R=B(null),L=B(null),F=B(null),N=B(null),A=B(null);$e(o,()=>t.state&&V(!1),{deep:!0});const M=()=>{if(!r.value)throw new Error("[ElTable] prop row-key is required")},H=ve=>{var Ce;(Ce=ve.children)==null||Ce.forEach(Ye=>{Ye.fixed=ve.fixed,H(Ye)})},j=()=>{s.value.forEach(Ae=>{H(Ae)}),d.value=s.value.filter(Ae=>Ae.fixed===!0||Ae.fixed==="left"),f.value=s.value.filter(Ae=>Ae.fixed==="right"),d.value.length>0&&s.value[0]&&s.value[0].type==="selection"&&!s.value[0].fixed&&(s.value[0].fixed=!0,d.value.unshift(s.value[0]));const ve=s.value.filter(Ae=>!Ae.fixed);i.value=[].concat(d.value).concat(ve).concat(f.value);const Ce=qi(ve),Ye=qi(d.value),Se=qi(f.value);w.value=Ce.length,m.value=Ye.length,b.value=Se.length,u.value=[].concat(Ye).concat(Ce).concat(Se),l.value=d.value.length>0||f.value.length>0},V=(ve,Ce=!1)=>{ve&&j(),Ce?t.state.doLayout():t.state.debouncedUpdateLayout()},X=ve=>y.value.includes(ve),I=()=>{_.value=!1,y.value.length&&(y.value=[],t.emit("selection-change",[]))},Y=()=>{let ve;if(r.value){ve=[];const Ce=ta(y.value,r.value),Ye=ta(o.value,r.value);for(const Se in Ce)ft(Ce,Se)&&!Ye[Se]&&ve.push(Ce[Se].row)}else ve=y.value.filter(Ce=>!o.value.includes(Ce));if(ve.length){const Ce=y.value.filter(Ye=>!ve.includes(Ye));y.value=Ce,t.emit("selection-change",Ce.slice())}},ee=()=>(y.value||[]).slice(),W=(ve,Ce=void 0,Ye=!0)=>{if(Xl(y.value,ve,Ce)){const Ae=(y.value||[]).slice();Ye&&t.emit("select",Ae,ve),t.emit("selection-change",Ae)}},re=()=>{var ve,Ce;const Ye=k.value?!_.value:!(_.value||y.value.length);_.value=Ye;let Se=!1,Ae=0;const q=(Ce=(ve=t==null?void 0:t.store)==null?void 0:ve.states)==null?void 0:Ce.rowKey.value;o.value.forEach((Ie,et)=>{const bt=et+Ae;E.value?E.value.call(null,Ie,bt)&&Xl(y.value,Ie,Ye)&&(Se=!0):Xl(y.value,Ie,Ye)&&(Se=!0),Ae+=ge(ln(Ie,q))}),Se&&t.emit("selection-change",y.value?y.value.slice():[]),t.emit("select-all",y.value)},be=()=>{const ve=ta(y.value,r.value);o.value.forEach(Ce=>{const Ye=ln(Ce,r.value),Se=ve[Ye];Se&&(y.value[Se.index]=Ce)})},Te=()=>{var ve,Ce,Ye;if(((ve=o.value)==null?void 0:ve.length)===0){_.value=!1;return}let Se;r.value&&(Se=ta(y.value,r.value));const Ae=function(bt){return Se?!!Se[ln(bt,r.value)]:y.value.includes(bt)};let q=!0,Ie=0,et=0;for(let bt=0,de=(o.value||[]).length;bt{var Ce;if(!t||!t.store)return 0;const{treeData:Ye}=t.store.states;let Se=0;const Ae=(Ce=Ye.value[ve])==null?void 0:Ce.children;return Ae&&(Se+=Ae.length,Ae.forEach(q=>{Se+=ge(q)})),Se},J=(ve,Ce)=>{Array.isArray(ve)||(ve=[ve]);const Ye={};return ve.forEach(Se=>{S.value[Se.id]=Ce,Ye[Se.columnKey||Se.id]=Ce}),Ye},te=(ve,Ce,Ye)=>{L.value&&L.value!==ve&&(L.value.order=null),L.value=ve,F.value=Ce,N.value=Ye},ae=()=>{let ve=c(a);Object.keys(S.value).forEach(Ce=>{const Ye=S.value[Ce];if(!Ye||Ye.length===0)return;const Se=Ww({columns:u.value},Ce);Se&&Se.filterMethod&&(ve=ve.filter(Ae=>Ye.some(q=>Se.filterMethod.call(null,q,Ae,Se))))}),R.value=ve},le=()=>{o.value=iq(R.value,{sortingColumn:L.value,sortProp:F.value,sortOrder:N.value})},me=(ve=void 0)=>{ve&&ve.filter||ae(),le()},P=ve=>{const{tableHeaderRef:Ce}=t.refs;if(!Ce)return;const Ye=Object.assign({},Ce.filterPanels),Se=Object.keys(Ye);if(!!Se.length)if(typeof ve=="string"&&(ve=[ve]),Array.isArray(ve)){const Ae=ve.map(q=>QK({columns:u.value},q));Se.forEach(q=>{const Ie=Ae.find(et=>et.id===q);Ie&&(Ie.filteredValue=[])}),t.store.commit("filterChange",{column:Ae,values:[],silent:!0,multi:!0})}else Se.forEach(Ae=>{const q=u.value.find(Ie=>Ie.id===Ae);q&&(q.filteredValue=[])}),S.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},$=()=>{!L.value||(te(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:T,toggleRowExpansion:z,updateExpandRows:Z,states:oe,isRowExpanded:_e}=aq({data:o,rowKey:r}),{updateTreeExpandKeys:we,toggleTreeExpansion:he,updateTreeData:ke,loadOrToggle:Me,states:ne}=sq({data:o,rowKey:r}),{updateCurrentRowData:ue,updateCurrentRow:ie,setCurrentRowKey:Oe,states:We}=lq({data:o,rowKey:r});return{assertRowKey:M,updateColumns:j,scheduleLayout:V,isSelected:X,clearSelection:I,cleanSelection:Y,getSelectionRows:ee,toggleRowSelection:W,_toggleAllSelection:re,toggleAllSelection:null,updateSelectionByRowKey:be,updateAllSelected:Te,updateFilters:J,updateCurrentRow:ie,updateSort:te,execFilter:ae,execSort:le,execQuery:me,clearFilter:P,clearSort:$,toggleRowExpansion:z,setExpandRowKeysAdapter:ve=>{T(ve),we(ve)},setCurrentRowKey:Oe,toggleRowExpansionAdapter:(ve,Ce)=>{u.value.some(({type:Se})=>Se==="expand")?z(ve,Ce):he(ve,Ce)},isRowExpanded:_e,updateExpandRows:Z,updateCurrentRowData:ue,loadOrToggle:Me,updateTreeData:ke,states:{tableSize:n,rowKey:r,data:o,_data:a,isComplex:l,_columns:s,originColumns:i,columns:u,fixedColumns:d,rightFixedColumns:f,leafColumns:h,fixedLeafColumns:p,rightFixedLeafColumns:v,updateOrderFns:g,leafColumnsLength:w,fixedLeafColumnsLength:m,rightFixedLeafColumnsLength:b,isAllSelected:_,selection:y,reserveSelection:C,selectOnIndeterminate:k,selectable:E,filters:S,filteredData:R,sortingColumn:L,sortProp:F,sortOrder:N,hoverRow:A,...oe,...ne,...We}}}function qd(e,t){return e.map(n=>{var r;return n.id===t.id?t:((r=n.children)!=null&&r.length&&(n.children=qd(n.children,t)),n)})}function Yd(e){e.forEach(t=>{var n,r;t.no=(n=t.getColumnIndex)==null?void 0:n.call(t),(r=t.children)!=null&&r.length&&Yd(t.children)}),e.sort((t,n)=>t.no-n.no)}function cq(){const e=lt(),t=uq();return{ns:Fe("table"),...t,mutations:{setData(l,s){const i=c(l._data)!==s;l.data.value=s,l._data.value=s,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),c(l.reserveSelection)?(e.store.assertRowKey(),e.store.updateSelectionByRowKey()):i?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(l,s,i,u){const d=c(l._columns);let f=[];i?(i&&!i.children&&(i.children=[]),i.children.push(s),f=qd(d,i)):(d.push(s),f=d),Yd(f),l._columns.value=f,l.updateOrderFns.push(u),s.type==="selection"&&(l.selectable.value=s.selectable,l.reserveSelection.value=s.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(l,s){var i;((i=s.getColumnIndex)==null?void 0:i.call(s))!==s.no&&(Yd(l._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(l,s,i,u){const d=c(l._columns)||[];if(i)i.children.splice(i.children.findIndex(h=>h.id===s.id),1),qe(()=>{var h;((h=i.children)==null?void 0:h.length)===0&&delete i.children}),l._columns.value=qd(d,i);else{const h=d.indexOf(s);h>-1&&(d.splice(h,1),l._columns.value=d)}const f=l.updateOrderFns.indexOf(u);f>-1&&l.updateOrderFns.splice(f,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(l,s){const{prop:i,order:u,init:d}=s;if(i){const f=c(l.columns).find(h=>h.property===i);f&&(f.order=u,e.store.updateSort(f,i,u),e.store.commit("changeSortCondition",{init:d}))}},changeSortCondition(l,s){const{sortingColumn:i,sortProp:u,sortOrder:d}=l,f=c(i),h=c(u),p=c(d);p===null&&(l.sortingColumn.value=null,l.sortProp.value=null);const v={filter:!0};e.store.execQuery(v),(!s||!(s.silent||s.init))&&e.emit("sort-change",{column:f,prop:h,order:p}),e.store.updateTableScrollY()},filterChange(l,s){const{column:i,values:u,silent:d}=s,f=e.store.updateFilters(i,u);e.store.execQuery(),d||e.emit("filter-change",f),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection()},rowSelectedChanged(l,s){e.store.toggleRowSelection(s),e.store.updateAllSelected()},setHoverRow(l,s){l.hoverRow.value=s},setCurrentRow(l,s){e.store.updateCurrentRow(s)}},commit:function(l,...s){const i=e.store.mutations;if(i[l])i[l].apply(e,[e.store.states].concat(s));else throw new Error(`Action not found: ${l}`)},updateTableScrollY:function(){qe(()=>e.layout.updateScrollY.apply(e.layout))}}}const Jl={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data",["treeProps.hasChildren"]:{key:"lazyColumnIdentifier",default:"hasChildren"},["treeProps.children"]:{key:"childrenColumnName",default:"children"}};function dq(e,t){if(!e)throw new Error("Table is required.");const n=cq();return n.toggleAllSelection=Or(n._toggleAllSelection,10),Object.keys(Jl).forEach(r=>{Yw(Gw(t,r),r,n)}),fq(n,t),n}function fq(e,t){Object.keys(Jl).forEach(n=>{$e(()=>Gw(t,n),r=>{Yw(r,n,e)})})}function Yw(e,t,n){let r=e,o=Jl[t];typeof Jl[t]=="object"&&(o=o.key,r=r||Jl[t].default),n.states[o].value=r}function Gw(e,t){if(t.includes(".")){const n=t.split(".");let r=e;return n.forEach(o=>{r=r[o]}),r}else return e[t]}class pq{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=B(null),this.scrollX=B(!1),this.scrollY=B(!1),this.bodyWidth=B(null),this.fixedWidth=B(null),this.rightFixedWidth=B(null),this.gutterWidth=0;for(const n in t)ft(t,n)&&(mt(this[n])?this[n].value=t[n]:this[n]=t[n]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){if(this.height.value===null)return!1;const n=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(n==null?void 0:n.wrapRef)){let r=!0;const o=this.scrollY.value;return r=n.wrapRef.scrollHeight>n.wrapRef.clientHeight,this.scrollY.value=r,o!==r}return!1}setHeight(t,n="height"){if(!xt)return;const r=this.table.vnode.el;if(t=tq(t),this.height.value=Number(t),!r&&(t||t===0))return qe(()=>this.setHeight(t,n));typeof t=="number"?(r.style[n]=`${t}px`,this.updateElsHeight()):typeof t=="string"&&(r.style[n]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(r=>{r.isColumnGroup?t.push.apply(t,r.columns):t.push(r)}),t}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let n=t;for(;n.tagName!=="DIV";){if(getComputedStyle(n).display==="none")return!0;n=n.parentElement}return!1}updateColumnsWidth(){if(!xt)return;const t=this.fit,n=this.table.vnode.el.clientWidth;let r=0;const o=this.getFlattenColumns(),a=o.filter(i=>typeof i.width!="number");if(o.forEach(i=>{typeof i.width=="number"&&i.realWidth&&(i.realWidth=null)}),a.length>0&&t){if(o.forEach(i=>{r+=Number(i.width||i.minWidth||80)}),r<=n){this.scrollX.value=!1;const i=n-r;if(a.length===1)a[0].realWidth=Number(a[0].minWidth||80)+i;else{const u=a.reduce((h,p)=>h+Number(p.minWidth||80),0),d=i/u;let f=0;a.forEach((h,p)=>{if(p===0)return;const v=Math.floor(Number(h.minWidth||80)*d);f+=v,h.realWidth=Number(h.minWidth||80)+v}),a[0].realWidth=Number(a[0].minWidth||80)+i-f}}else this.scrollX.value=!0,a.forEach(i=>{i.realWidth=Number(i.minWidth)});this.bodyWidth.value=Math.max(r,n),this.table.state.resizeState.value.width=this.bodyWidth.value}else o.forEach(i=>{!i.width&&!i.minWidth?i.realWidth=80:i.realWidth=Number(i.width||i.minWidth),r+=i.realWidth}),this.scrollX.value=r>n,this.bodyWidth.value=r;const l=this.store.states.fixedColumns.value;if(l.length>0){let i=0;l.forEach(u=>{i+=Number(u.realWidth||u.width)}),this.fixedWidth.value=i}const s=this.store.states.rightFixedColumns.value;if(s.length>0){let i=0;s.forEach(u=>{i+=Number(u.realWidth||u.width)}),this.rightFixedWidth.value=i}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const n=this.observers.indexOf(t);n!==-1&&this.observers.splice(n,1)}notifyObservers(t){this.observers.forEach(r=>{var o,a;switch(t){case"columns":(o=r.state)==null||o.onColumnsChange(this);break;case"scrollable":(a=r.state)==null||a.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const{CheckboxGroup:mq}=da,hq=se({name:"ElTableFilterPanel",components:{ElCheckbox:da,ElCheckboxGroup:mq,ElScrollbar:yl,ElTooltip:Ca,ElIcon:nt,ArrowDown:vl,ArrowUp:cp},directives:{ClickOutside:il},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function}},setup(e){const t=lt(),{t:n}=Pt(),r=Fe("table-filter"),o=t==null?void 0:t.parent;o.filterPanels.value[e.column.id]||(o.filterPanels.value[e.column.id]=t);const a=B(!1),l=B(null),s=O(()=>e.column&&e.column.filters),i=O({get:()=>{var y;return(((y=e.column)==null?void 0:y.filteredValue)||[])[0]},set:y=>{u.value&&(typeof y!="undefined"&&y!==null?u.value.splice(0,1,y):u.value.splice(0,1))}}),u=O({get(){return e.column?e.column.filteredValue||[]:[]},set(y){e.column&&e.upDataColumn("filteredValue",y)}}),d=O(()=>e.column?e.column.filterMultiple:!0),f=y=>y.value===i.value,h=()=>{a.value=!1},p=y=>{y.stopPropagation(),a.value=!a.value},v=()=>{a.value=!1},g=()=>{b(u.value),h()},w=()=>{u.value=[],b(u.value),h()},m=y=>{i.value=y,b(typeof y!="undefined"&&y!==null?u.value:[]),h()},b=y=>{e.store.commit("filterChange",{column:e.column,values:y}),e.store.updateAllSelected()};$e(a,y=>{e.column&&e.upDataColumn("filterOpened",y)},{immediate:!0});const _=O(()=>{var y,C;return(C=(y=l.value)==null?void 0:y.popperRef)==null?void 0:C.contentRef});return{tooltipVisible:a,multiple:d,filteredValue:u,filterValue:i,filters:s,handleConfirm:g,handleReset:w,handleSelect:m,isActive:f,t:n,ns:r,showFilterPanel:p,hideFilterPanel:v,popperPaneRef:_,tooltip:l}}}),vq={key:0},gq=["disabled"],bq=["label","onClick"];function yq(e,t,n,r,o,a){const l=Ve("el-checkbox"),s=Ve("el-checkbox-group"),i=Ve("el-scrollbar"),u=Ve("arrow-up"),d=Ve("arrow-down"),f=Ve("el-icon"),h=Ve("el-tooltip"),p=hf("click-outside");return x(),ce(h,{ref:"tooltip",visible:e.tooltipVisible,offset:0,placement:e.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,teleported:"",effect:"light",pure:"","popper-class":e.ns.b(),persistent:""},{content:G(()=>[e.multiple?(x(),U("div",vq,[K("div",{class:D(e.ns.e("content"))},[Q(i,{"wrap-class":e.ns.e("wrap")},{default:G(()=>[Q(s,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=v=>e.filteredValue=v),class:D(e.ns.e("checkbox-group"))},{default:G(()=>[(x(!0),U(Pe,null,it(e.filters,v=>(x(),ce(l,{key:v.value,label:v.value},{default:G(()=>[Je(Ee(v.text),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),K("div",{class:D(e.ns.e("bottom"))},[K("button",{class:D({[e.ns.is("disabled")]:e.filteredValue.length===0}),disabled:e.filteredValue.length===0,type:"button",onClick:t[1]||(t[1]=(...v)=>e.handleConfirm&&e.handleConfirm(...v))},Ee(e.t("el.table.confirmFilter")),11,gq),K("button",{type:"button",onClick:t[2]||(t[2]=(...v)=>e.handleReset&&e.handleReset(...v))},Ee(e.t("el.table.resetFilter")),1)],2)])):(x(),U("ul",{key:1,class:D(e.ns.e("list"))},[K("li",{class:D([e.ns.e("list-item"),{[e.ns.is("active")]:e.filterValue===void 0||e.filterValue===null}]),onClick:t[3]||(t[3]=v=>e.handleSelect(null))},Ee(e.t("el.table.clearFilter")),3),(x(!0),U(Pe,null,it(e.filters,v=>(x(),U("li",{key:v.value,class:D([e.ns.e("list-item"),e.ns.is("active",e.isActive(v))]),label:v.value,onClick:g=>e.handleSelect(v.value)},Ee(v.text),11,bq))),128))],2))]),default:G(()=>[vt((x(),U("span",{class:D([`${e.ns.namespace.value}-table__column-filter-trigger`,`${e.ns.namespace.value}-none-outline`]),onClick:t[4]||(t[4]=(...v)=>e.showFilterPanel&&e.showFilterPanel(...v))},[Q(f,null,{default:G(()=>[e.column.filterOpened?(x(),ce(u,{key:0})):(x(),ce(d,{key:1}))]),_:1})],2)),[[p,e.hideFilterPanel,e.popperPaneRef]])]),_:1},8,["visible","placement","popper-class"])}var _q=ze(hq,[["render",yq],["__file","/home/runner/work/element-plus/element-plus/packages/components/table/src/filter-panel.vue"]]);function Xw(e){const t=lt();As(()=>{n.value.addObserver(t)}),dt(()=>{r(n.value),o(n.value)}),pl(()=>{r(n.value),o(n.value)}),Mo(()=>{n.value.removeObserver(t)});const n=O(()=>{const a=e.layout;if(!a)throw new Error("Can not find table layout.");return a}),r=a=>{var l;const s=((l=e.vnode.el)==null?void 0:l.querySelectorAll("colgroup > col"))||[];if(!s.length)return;const i=a.getFlattenColumns(),u={};i.forEach(d=>{u[d.id]=d});for(let d=0,f=s.length;d{var l,s;const i=((l=e.vnode.el)==null?void 0:l.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let d=0,f=i.length;d{g.stopPropagation()},a=(g,w)=>{!w.filters&&w.sortable?v(g,w,!1):w.filterable&&!w.sortable&&o(g),r==null||r.emit("header-click",w,g)},l=(g,w)=>{r==null||r.emit("header-contextmenu",w,g)},s=B(null),i=B(!1),u=B({}),d=(g,w)=>{if(!!xt&&!(w.children&&w.children.length>0)&&s.value&&e.border){i.value=!0;const m=r;t("set-drag-visible",!0);const _=(m==null?void 0:m.vnode.el).getBoundingClientRect().left,y=n.vnode.el.querySelector(`th.${w.id}`),C=y.getBoundingClientRect(),k=C.left-_+30;up(y,"noclick"),u.value={startMouseLeft:g.clientX,startLeft:C.right-_,startColumnLeft:C.left-_,tableLeft:_};const E=m==null?void 0:m.refs.resizeProxy;E.style.left=`${u.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const S=L=>{const F=L.clientX-u.value.startMouseLeft,N=u.value.startLeft+F;E.style.left=`${Math.max(k,N)}px`},R=()=>{if(i.value){const{startColumnLeft:L,startLeft:F}=u.value,A=Number.parseInt(E.style.left,10)-L;w.width=w.realWidth=A,m==null||m.emit("header-dragend",w.width,F-L,w,g),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",i.value=!1,s.value=null,u.value={},t("set-drag-visible",!1)}document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",R),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{hu(y,"noclick")},0)};document.addEventListener("mousemove",S),document.addEventListener("mouseup",R)}},f=(g,w)=>{if(w.children&&w.children.length>0)return;const m=g.target;if(!ua(m))return;const b=m==null?void 0:m.closest("th");if(!(!w||!w.resizable)&&!i.value&&e.border){const _=b.getBoundingClientRect(),y=document.body.style;_.width>12&&_.right-g.pageX<8?(y.cursor="col-resize",$o(b,"is-sortable")&&(b.style.cursor="col-resize"),s.value=w):i.value||(y.cursor="",$o(b,"is-sortable")&&(b.style.cursor="pointer"),s.value=null)}},h=()=>{!xt||(document.body.style.cursor="")},p=({order:g,sortOrders:w})=>{if(g==="")return w[0];const m=w.indexOf(g||null);return w[m>w.length-2?0:m+1]},v=(g,w,m)=>{var b;g.stopPropagation();const _=w.order===m?null:m||p(w),y=(b=g.target)==null?void 0:b.closest("th");if(y&&$o(y,"noclick")){hu(y,"noclick");return}if(!w.sortable)return;const C=e.store.states;let k=C.sortProp.value,E;const S=C.sortingColumn.value;(S!==w||S===w&&S.order===null)&&(S&&(S.order=null),C.sortingColumn.value=w,k=w.property),_?E=w.order=_:E=w.order=null,C.sortProp.value=k,C.sortOrder.value=E,r==null||r.store.commit("changeSortCondition")};return{handleHeaderClick:a,handleHeaderContextMenu:l,handleMouseDown:d,handleMouseMove:f,handleMouseOut:h,handleSortClick:v,handleFilterClick:o}}function Cq(e){const t=Re(Pr),n=Fe("table");return{getHeaderRowStyle:s=>{const i=t==null?void 0:t.props.headerRowStyle;return typeof i=="function"?i.call(null,{rowIndex:s}):i},getHeaderRowClass:s=>{const i=[],u=t==null?void 0:t.props.headerRowClassName;return typeof u=="string"?i.push(u):typeof u=="function"&&i.push(u.call(null,{rowIndex:s})),i.join(" ")},getHeaderCellStyle:(s,i,u,d)=>{var f;let h=(f=t==null?void 0:t.props.headerCellStyle)!=null?f:{};typeof h=="function"&&(h=h.call(null,{rowIndex:s,columnIndex:i,row:u,column:d}));const p=Np(i,d.fixed,e.store,u);return ul(p,"left"),ul(p,"right"),Object.assign({},h,p)},getHeaderCellClass:(s,i,u,d)=>{const f=Rp(n.b(),i,d.fixed,e.store,u),h=[d.id,d.order,d.headerAlign,d.className,d.labelClassName,...f];d.children||h.push("is-leaf"),d.sortable&&h.push("is-sortable");const p=t==null?void 0:t.props.headerCellClassName;return typeof p=="string"?h.push(p):typeof p=="function"&&h.push(p.call(null,{rowIndex:s,columnIndex:i,row:u,column:d})),h.push(n.e("cell")),h.filter(v=>Boolean(v)).join(" ")}}}const Jw=e=>{const t=[];return e.forEach(n=>{n.children?(t.push(n),t.push.apply(t,Jw(n.children))):t.push(n)}),t},kq=e=>{let t=1;const n=(a,l)=>{if(l&&(a.level=l.level+1,t{n(i,a),s+=i.colSpan}),a.colSpan=s}else a.colSpan=1};e.forEach(a=>{a.level=1,n(a,void 0)});const r=[];for(let a=0;a{a.children?(a.rowSpan=1,a.children.forEach(l=>l.isSubColumn=!0)):a.rowSpan=t-a.level+1,r[a.level-1].push(a)}),r};function Sq(e){const t=Re(Pr),n=O(()=>kq(e.store.states.originColumns.value));return{isGroup:O(()=>{const a=n.value.length>1;return a&&t&&(t.state.isGroup.value=!0),a}),toggleAllSelection:a=>{a.stopPropagation(),t==null||t.store.commit("toggleAllSelection")},columnRows:n}}var Eq=se({name:"ElTableHeader",components:{ElCheckbox:da},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e,{emit:t}){const n=lt(),r=Re(Pr),o=Fe("table"),a=B({}),{onColumnsChange:l,onScrollableChange:s}=Xw(r);dt(async()=>{await qe(),await qe();const{prop:k,order:E}=e.defaultSort;r==null||r.store.commit("sort",{prop:k,order:E,init:!0})});const{handleHeaderClick:i,handleHeaderContextMenu:u,handleMouseDown:d,handleMouseMove:f,handleMouseOut:h,handleSortClick:p,handleFilterClick:v}=wq(e,t),{getHeaderRowStyle:g,getHeaderRowClass:w,getHeaderCellStyle:m,getHeaderCellClass:b}=Cq(e),{isGroup:_,toggleAllSelection:y,columnRows:C}=Sq(e);return n.state={onColumnsChange:l,onScrollableChange:s},n.filterPanels=a,{ns:o,filterPanels:a,onColumnsChange:l,onScrollableChange:s,columnRows:C,getHeaderRowClass:w,getHeaderRowStyle:g,getHeaderCellClass:b,getHeaderCellStyle:m,handleHeaderClick:i,handleHeaderContextMenu:u,handleMouseDown:d,handleMouseMove:f,handleMouseOut:h,handleSortClick:p,handleFilterClick:v,isGroup:_,toggleAllSelection:y}},render(){const{ns:e,isGroup:t,columnRows:n,getHeaderCellStyle:r,getHeaderCellClass:o,getHeaderRowClass:a,getHeaderRowStyle:l,handleHeaderClick:s,handleHeaderContextMenu:i,handleMouseDown:u,handleMouseMove:d,handleSortClick:f,handleMouseOut:h,store:p,$parent:v}=this;let g=1;return He("thead",{class:{[e.is("group")]:t}},n.map((w,m)=>He("tr",{class:a(m),key:m,style:l(m)},w.map((b,_)=>(b.rowSpan>g&&(g=b.rowSpan),He("th",{class:o(m,_,w,b),colspan:b.colSpan,key:`${b.id}-thead`,rowspan:b.rowSpan,style:r(m,_,w,b),onClick:y=>s(y,b),onContextmenu:y=>i(y,b),onMousedown:y=>u(y,b),onMousemove:y=>d(y,b),onMouseout:h},[He("div",{class:["cell",b.filteredValue&&b.filteredValue.length>0?"highlight":""]},[b.renderHeader?b.renderHeader({column:b,$index:_,store:p,_self:v}):b.label,b.sortable&&He("span",{onClick:y=>f(y,b),class:"caret-wrapper"},[He("i",{onClick:y=>f(y,b,"ascending"),class:"sort-caret ascending"}),He("i",{onClick:y=>f(y,b,"descending"),class:"sort-caret descending"})]),b.filterable&&He(_q,{store:p,placement:b.filterPlacement||"bottom-start",column:b,upDataColumn:(y,C)=>{b[y]=C}})])]))))))}});function $q(e){const t=Re(Pr),n=B(""),r=B(He("div")),{nextZIndex:o}=Zu(),a=(v,g,w)=>{var m;const b=t,_=Nc(v);let y;const C=(m=b==null?void 0:b.vnode.el)==null?void 0:m.dataset.prefix;_&&(y=Bg({columns:e.store.states.columns.value},_,C),y&&(b==null||b.emit(`cell-${w}`,g,y,_,v))),b==null||b.emit(`row-${w}`,g,y,v)},l=(v,g)=>{a(v,g,"dblclick")},s=(v,g)=>{e.store.commit("setCurrentRow",g),a(v,g,"click")},i=(v,g)=>{a(v,g,"contextmenu")},u=Or(v=>{e.store.commit("setHoverRow",v)},30),d=Or(()=>{e.store.commit("setHoverRow",null)},30),f=v=>{const g=window.getComputedStyle(v,null),w=Number.parseInt(g.paddingLeft,10)||0,m=Number.parseInt(g.paddingRight,10)||0,b=Number.parseInt(g.paddingTop,10)||0,_=Number.parseInt(g.paddingBottom,10)||0;return{left:w,right:m,top:b,bottom:_}};return{handleDoubleClick:l,handleClick:s,handleContextMenu:i,handleMouseEnter:u,handleMouseLeave:d,handleCellMouseEnter:(v,g,w)=>{var m;const b=t,_=Nc(v),y=(m=b==null?void 0:b.vnode.el)==null?void 0:m.dataset.prefix;if(_){const H=Bg({columns:e.store.states.columns.value},_,y),j=b.hoverState={cell:_,column:H,row:g};b==null||b.emit("cell-mouse-enter",j.row,j.column,j.cell,v)}if(!w)return;const C=v.target.querySelector(".cell");if(!($o(C,`${y}-tooltip`)&&C.childNodes.length))return;const k=document.createRange();k.setStart(C,0),k.setEnd(C,C.childNodes.length);const E=Math.round(k.getBoundingClientRect().width),S=Math.round(k.getBoundingClientRect().height),{top:R,left:L,right:F,bottom:N}=f(C),A=L+F,M=R+N;(E+A>C.offsetWidth||S+M>C.offsetHeight||C.scrollWidth>C.offsetWidth)&&oq(t==null?void 0:t.refs.tableWrapper,_,_.innerText||_.textContent,o,w)},handleCellMouseLeave:v=>{if(!Nc(v))return;const w=t==null?void 0:t.hoverState;t==null||t.emit("cell-mouse-leave",w==null?void 0:w.row,w==null?void 0:w.column,w==null?void 0:w.cell,v)},tooltipContent:n,tooltipTrigger:r}}function Tq(e){const t=Re(Pr),n=Fe("table");return{getRowStyle:(u,d)=>{const f=t==null?void 0:t.props.rowStyle;return typeof f=="function"?f.call(null,{row:u,rowIndex:d}):f||null},getRowClass:(u,d)=>{const f=[n.e("row")];(t==null?void 0:t.props.highlightCurrentRow)&&u===e.store.states.currentRow.value&&f.push("current-row"),e.stripe&&d%2===1&&f.push(n.em("row","striped"));const h=t==null?void 0:t.props.rowClassName;return typeof h=="string"?f.push(h):typeof h=="function"&&f.push(h.call(null,{row:u,rowIndex:d})),f},getCellStyle:(u,d,f,h)=>{const p=t==null?void 0:t.props.cellStyle;let v=p!=null?p:{};typeof p=="function"&&(v=p.call(null,{rowIndex:u,columnIndex:d,row:f,column:h}));const g=Np(d,e==null?void 0:e.fixed,e.store);return ul(g,"left"),ul(g,"right"),Object.assign({},v,g)},getCellClass:(u,d,f,h,p)=>{const v=Rp(n.b(),d,e==null?void 0:e.fixed,e.store,void 0,p),g=[h.id,h.align,h.className,...v],w=t==null?void 0:t.props.cellClassName;return typeof w=="string"?g.push(w):typeof w=="function"&&g.push(w.call(null,{rowIndex:u,columnIndex:d,row:f,column:h})),g.push(n.e("cell")),g.filter(m=>Boolean(m)).join(" ")},getSpan:(u,d,f,h)=>{let p=1,v=1;const g=t==null?void 0:t.props.spanMethod;if(typeof g=="function"){const w=g({row:u,column:d,rowIndex:f,columnIndex:h});Array.isArray(w)?(p=w[0],v=w[1]):typeof w=="object"&&(p=w.rowspan,v=w.colspan)}return{rowspan:p,colspan:v}},getColspanRealWidth:(u,d,f)=>{if(d<1)return u[f].realWidth;const h=u.map(({realWidth:p,width:v})=>p||v).slice(f,f+d);return Number(h.reduce((p,v)=>Number(p)+Number(v),-1))}}}function xq(e){const t=Re(Pr),n=Fe("table"),{handleDoubleClick:r,handleClick:o,handleContextMenu:a,handleMouseEnter:l,handleMouseLeave:s,handleCellMouseEnter:i,handleCellMouseLeave:u,tooltipContent:d,tooltipTrigger:f}=$q(e),{getRowStyle:h,getRowClass:p,getCellStyle:v,getCellClass:g,getSpan:w,getColspanRealWidth:m}=Tq(e),b=O(()=>e.store.states.columns.value.findIndex(({type:E})=>E==="default")),_=(E,S)=>{const R=t.props.rowKey;return R?ln(E,R):S},y=(E,S,R,L=!1)=>{const{tooltipEffect:F,tooltipOptions:N,store:A}=e,{indent:M,columns:H}=A.states,j=p(E,S);let V=!0;return R&&(j.push(n.em("row",`level-${R.level}`)),V=R.display),He("tr",{style:[V?null:{display:"none"},h(E,S)],class:j,key:_(E,S),onDblclick:I=>r(I,E),onClick:I=>o(I,E),onContextmenu:I=>a(I,E),onMouseenter:()=>l(S),onMouseleave:s},H.value.map((I,Y)=>{const{rowspan:ee,colspan:W}=w(E,I,S,Y);if(!ee||!W)return null;const re={...I};re.realWidth=m(H.value,W,Y);const be={store:e.store,_self:e.context||t,column:re,row:E,$index:S,cellIndex:Y,expanded:L};Y===b.value&&R&&(be.treeNode={indent:R.level*M.value,level:R.level},typeof R.expanded=="boolean"&&(be.treeNode.expanded=R.expanded,"loading"in R&&(be.treeNode.loading=R.loading),"noLazyChildren"in R&&(be.treeNode.noLazyChildren=R.noLazyChildren)));const Te=`${S},${Y}`,ge=re.columnKey||re.rawColumnKey||"",J=C(Y,I,be),te=I.showOverflowTooltip&&N1({effect:F},N,I.showOverflowTooltip);return He("td",{style:v(S,Y,E,I),class:g(S,Y,E,I,W-1),key:`${ge}${Te}`,rowspan:ee,colspan:W,onMouseenter:ae=>i(ae,E,te),onMouseleave:u},[J])}))},C=(E,S,R)=>S.renderCell(R);return{wrappedRowRender:(E,S)=>{const R=e.store,{isRowExpanded:L,assertRowKey:F}=R,{treeData:N,lazyTreeNodeMap:A,childrenColumnName:M,rowKey:H}=R.states,j=R.states.columns.value;if(j.some(({type:X})=>X==="expand")){const X=L(E),I=y(E,S,void 0,X),Y=t.renderExpanded;return X?Y?[[I,He("tr",{key:`expanded-row__${I.key}`},[He("td",{colspan:j.length,class:`${n.e("cell")} ${n.e("expanded-cell")}`},[Y({row:E,$index:S,store:R,expanded:X})])])]]:(console.error("[Element Error]renderExpanded is required."),I):[[I]]}else if(Object.keys(N.value).length){F();const X=ln(E,H.value);let I=N.value[X],Y=null;I&&(Y={expanded:I.expanded,level:I.level,display:!0},typeof I.lazy=="boolean"&&(typeof I.loaded=="boolean"&&I.loaded&&(Y.noLazyChildren=!(I.children&&I.children.length)),Y.loading=I.loading));const ee=[y(E,S,Y)];if(I){let W=0;const re=(Te,ge)=>{!(Te&&Te.length&&ge)||Te.forEach(J=>{const te={display:ge.display&&ge.expanded,level:ge.level+1,expanded:!1,noLazyChildren:!1,loading:!1},ae=ln(J,H.value);if(ae==null)throw new Error("For nested data item, row-key is required.");if(I={...N.value[ae]},I&&(te.expanded=I.expanded,I.level=I.level||te.level,I.display=!!(I.expanded&&te.display),typeof I.lazy=="boolean"&&(typeof I.loaded=="boolean"&&I.loaded&&(te.noLazyChildren=!(I.children&&I.children.length)),te.loading=I.loading)),W++,ee.push(y(J,S+W,te)),I){const le=A.value[ae]||J[M.value];re(le,I)}})};I.display=!0;const be=A.value[X]||E[M.value];re(be,I)}return ee}else return y(E,S,void 0)},tooltipContent:d,tooltipTrigger:f}}const Oq={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var Aq=se({name:"ElTableBody",props:Oq,setup(e){const t=lt(),n=Re(Pr),r=Fe("table"),{wrappedRowRender:o,tooltipContent:a,tooltipTrigger:l}=xq(e),{onColumnsChange:s,onScrollableChange:i}=Xw(n);return $e(e.store.states.hoverRow,(u,d)=>{if(!e.store.states.isComplex.value||!xt)return;let f=window.requestAnimationFrame;f||(f=h=>window.setTimeout(h,16)),f(()=>{const h=t==null?void 0:t.vnode.el,p=Array.from((h==null?void 0:h.children)||[]).filter(w=>w==null?void 0:w.classList.contains(`${r.e("row")}`)),v=p[d],g=p[u];v&&hu(v,"hover-row"),g&&up(g,"hover-row")})}),Mo(()=>{var u;(u=Br)==null||u()}),{ns:r,onColumnsChange:s,onScrollableChange:i,wrappedRowRender:o,tooltipContent:a,tooltipTrigger:l}},render(){const{wrappedRowRender:e,store:t}=this,n=t.states.data.value||[];return He("tbody",{},[n.reduce((r,o)=>r.concat(e(o,r.length)),[])])}});function Dp(e){const t=e.tableLayout==="auto";let n=e.columns||[];t&&n.every(o=>o.width===void 0)&&(n=[]);const r=o=>{const a={key:`${e.tableLayout}_${o.id}`,style:{},name:void 0};return t?a.style={width:`${o.width}px`}:a.name=o.id,a};return He("colgroup",{},n.map(o=>He("col",r(o))))}Dp.props=["columns","tableLayout"];function Iq(){const e=Re(Pr),t=e==null?void 0:e.store,n=O(()=>t.states.fixedLeafColumnsLength.value),r=O(()=>t.states.rightFixedColumns.value.length),o=O(()=>t.states.columns.value.length),a=O(()=>t.states.fixedColumns.value.length),l=O(()=>t.states.rightFixedColumns.value.length);return{leftFixedLeafCount:n,rightFixedLeafCount:r,columnsCount:o,leftFixedCount:a,rightFixedCount:l,columns:t.states.columns}}function Pq(e){const{columns:t}=Iq(),n=Fe("table");return{getCellClasses:(a,l)=>{const s=a[l],i=[n.e("cell"),s.id,s.align,s.labelClassName,...Rp(n.b(),l,s.fixed,e.store)];return s.className&&i.push(s.className),s.children||i.push(n.is("leaf")),i},getCellStyles:(a,l)=>{const s=Np(l,a.fixed,e.store);return ul(s,"left"),ul(s,"right"),s},columns:t}}var Lq=se({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const{getCellClasses:t,getCellStyles:n,columns:r}=Pq(e);return{ns:Fe("table"),getCellClasses:t,getCellStyles:n,columns:r}},render(){const{columns:e,getCellStyles:t,getCellClasses:n,summaryMethod:r,sumText:o,ns:a}=this,l=this.store.states.data.value;let s=[];return r?s=r({columns:e,data:l}):e.forEach((i,u)=>{if(u===0){s[u]=o;return}const d=l.map(v=>Number(v[i.property])),f=[];let h=!0;d.forEach(v=>{if(!Number.isNaN(+v)){h=!1;const g=`${v}`.split(".")[1];f.push(g?g.length:0)}});const p=Math.max.apply(null,f);h?s[u]="":s[u]=d.reduce((v,g)=>{const w=Number(g);return Number.isNaN(+w)?v:Number.parseFloat((v+g).toFixed(Math.min(p,20)))},0)}),He("table",{class:a.e("footer"),cellspacing:"0",cellpadding:"0",border:"0"},[Dp({columns:e}),He("tbody",[He("tr",{},[...e.map((i,u)=>He("td",{key:u,colspan:i.colSpan,rowspan:i.rowSpan,class:n(e,u),style:t(i,u)},[He("div",{class:["cell",i.labelClassName]},[s[u]])]))])])])}});function Mq(e){return{setCurrentRow:d=>{e.commit("setCurrentRow",d)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(d,f)=>{e.toggleRowSelection(d,f,!1),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:d=>{e.clearFilter(d)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(d,f)=>{e.toggleRowExpansionAdapter(d,f)},clearSort:()=>{e.clearSort()},sort:(d,f)=>{e.commit("sort",{prop:d,order:f})}}}function Rq(e,t,n,r){const o=B(!1),a=B(null),l=B(!1),s=I=>{l.value=I},i=B({width:null,height:null,headerHeight:null}),u=B(!1),d={display:"inline-block",verticalAlign:"middle"},f=B(),h=B(0),p=B(0),v=B(0),g=B(0),w=B(0);qr(()=>{t.setHeight(e.height)}),qr(()=>{t.setMaxHeight(e.maxHeight)}),$e(()=>[e.currentRowKey,n.states.rowKey],([I,Y])=>{!c(Y)||!c(I)||n.setCurrentRowKey(`${I}`)},{immediate:!0}),$e(()=>e.data,I=>{r.store.commit("setData",I)},{immediate:!0,deep:!0}),qr(()=>{e.expandRowKeys&&n.setExpandRowKeysAdapter(e.expandRowKeys)});const m=()=>{r.store.commit("setHoverRow",null),r.hoverState&&(r.hoverState=null)},b=(I,Y)=>{const{pixelX:ee,pixelY:W}=Y;Math.abs(ee)>=Math.abs(W)&&(r.refs.bodyWrapper.scrollLeft+=Y.pixelX/5)},_=O(()=>e.height||e.maxHeight||n.states.fixedColumns.value.length>0||n.states.rightFixedColumns.value.length>0),y=O(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),C=()=>{_.value&&t.updateElsHeight(),t.updateColumnsWidth(),requestAnimationFrame(R)};dt(async()=>{await qe(),n.updateColumns(),L(),requestAnimationFrame(C);const I=r.vnode.el,Y=r.refs.headerWrapper;e.flexible&&I&&I.parentElement&&(I.parentElement.style.minWidth="0"),i.value={width:f.value=I.offsetWidth,height:I.offsetHeight,headerHeight:e.showHeader&&Y?Y.offsetHeight:null},n.states.columns.value.forEach(ee=>{ee.filteredValue&&ee.filteredValue.length&&r.store.commit("filterChange",{column:ee,values:ee.filteredValue,silent:!0})}),r.$ready=!0});const k=(I,Y)=>{if(!I)return;const ee=Array.from(I.classList).filter(W=>!W.startsWith("is-scrolling-"));ee.push(t.scrollX.value?Y:"is-scrolling-none"),I.className=ee.join(" ")},E=I=>{const{tableWrapper:Y}=r.refs;k(Y,I)},S=I=>{const{tableWrapper:Y}=r.refs;return!!(Y&&Y.classList.contains(I))},R=function(){if(!r.refs.scrollBarRef)return;if(!t.scrollX.value){const ge="is-scrolling-none";S(ge)||E(ge);return}const I=r.refs.scrollBarRef.wrapRef;if(!I)return;const{scrollLeft:Y,offsetWidth:ee,scrollWidth:W}=I,{headerWrapper:re,footerWrapper:be}=r.refs;re&&(re.scrollLeft=Y),be&&(be.scrollLeft=Y);const Te=W-ee-1;Y>=Te?E("is-scrolling-right"):E(Y===0?"is-scrolling-left":"is-scrolling-middle")},L=()=>{!r.refs.scrollBarRef||(r.refs.scrollBarRef.wrapRef&&An(r.refs.scrollBarRef.wrapRef,"scroll",R,{passive:!0}),e.fit?xo(r.vnode.el,F):An(window,"resize",F),xo(r.refs.bodyWrapper,()=>{var I,Y;F(),(Y=(I=r.refs)==null?void 0:I.scrollBarRef)==null||Y.update()}))},F=()=>{var I,Y,ee,W;const re=r.vnode.el;if(!r.$ready||!re)return;let be=!1;const{width:Te,height:ge,headerHeight:J}=i.value,te=f.value=re.offsetWidth;Te!==te&&(be=!0);const ae=re.offsetHeight;(e.height||_.value)&&ge!==ae&&(be=!0);const le=e.tableLayout==="fixed"?r.refs.headerWrapper:(I=r.refs.tableHeaderRef)==null?void 0:I.$el;e.showHeader&&(le==null?void 0:le.offsetHeight)!==J&&(be=!0),h.value=((Y=r.refs.tableWrapper)==null?void 0:Y.scrollHeight)||0,v.value=(le==null?void 0:le.scrollHeight)||0,g.value=((ee=r.refs.footerWrapper)==null?void 0:ee.offsetHeight)||0,w.value=((W=r.refs.appendWrapper)==null?void 0:W.offsetHeight)||0,p.value=h.value-v.value-g.value-w.value,be&&(i.value={width:te,height:ae,headerHeight:e.showHeader&&(le==null?void 0:le.offsetHeight)||0},C())},N=mn(),A=O(()=>{const{bodyWidth:I,scrollY:Y,gutterWidth:ee}=t;return I.value?`${I.value-(Y.value?ee:0)}px`:""}),M=O(()=>e.maxHeight?"fixed":e.tableLayout),H=O(()=>{if(e.data&&e.data.length)return null;let I="100%";e.height&&p.value&&(I=`${p.value}px`);const Y=f.value;return{width:Y?`${Y}px`:"",height:I}}),j=O(()=>e.height?{height:Number.isNaN(Number(e.height))?e.height:`${e.height}px`}:e.maxHeight?{maxHeight:Number.isNaN(Number(e.maxHeight))?e.maxHeight:`${e.maxHeight}px`}:{}),V=O(()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${v.value+g.value}px)`}:{maxHeight:`${e.maxHeight-v.value-g.value}px`}:{});return{isHidden:o,renderExpanded:a,setDragVisible:s,isGroup:u,handleMouseLeave:m,handleHeaderFooterMousewheel:b,tableSize:N,emptyBlockStyle:H,handleFixedMousewheel:(I,Y)=>{const ee=r.refs.bodyWrapper;if(Math.abs(Y.spinY)>0){const W=ee.scrollTop;Y.pixelY<0&&W!==0&&I.preventDefault(),Y.pixelY>0&&ee.scrollHeight-ee.clientHeight>W&&I.preventDefault(),ee.scrollTop+=Math.ceil(Y.pixelY/5)}else ee.scrollLeft+=Math.ceil(Y.pixelX/5)},resizeProxyVisible:l,bodyWidth:A,resizeState:i,doLayout:C,tableBodyStyles:y,tableLayout:M,scrollbarViewStyle:d,tableInnerStyle:j,scrollbarStyle:V}}function Nq(e){const t=B(),n=()=>{const o=e.vnode.el.querySelector(".hidden-columns"),a={childList:!0,subtree:!0},l=e.store.states.updateOrderFns;t.value=new MutationObserver(()=>{l.forEach(s=>s())}),t.value.observe(o,a)};dt(()=>{n()}),Mo(()=>{var r;(r=t.value)==null||r.disconnect()})}var Dq={data:{type:Array,default:()=>[]},size:Hn,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children"})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:{type:Boolean,default:!1},flexible:Boolean,showOverflowTooltip:[Boolean,Object]};const Fq=()=>{const e=B(),t=(a,l)=>{const s=e.value;s&&s.scrollTo(a,l)},n=(a,l)=>{const s=e.value;s&&ct(l)&&["Top","Left"].includes(a)&&s[`setScroll${a}`](l)};return{scrollBarRef:e,scrollTo:t,setScrollTop:a=>n("Top",a),setScrollLeft:a=>n("Left",a)}};let Vq=1;const Bq=se({name:"ElTable",directives:{Mousewheel:P7},components:{TableHeader:Eq,TableBody:Aq,TableFooter:Lq,ElScrollbar:yl,hColgroup:Dp},props:Dq,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change"],setup(e){const{t}=Pt(),n=Fe("table"),r=lt();yt(Pr,r);const o=dq(r,e);r.store=o;const a=new pq({store:r.store,table:r,fit:e.fit,showHeader:e.showHeader});r.layout=a;const l=O(()=>(o.states.data.value||[]).length===0),{setCurrentRow:s,getSelectionRows:i,toggleRowSelection:u,clearSelection:d,clearFilter:f,toggleAllSelection:h,toggleRowExpansion:p,clearSort:v,sort:g}=Mq(o),{isHidden:w,renderExpanded:m,setDragVisible:b,isGroup:_,handleMouseLeave:y,handleHeaderFooterMousewheel:C,tableSize:k,emptyBlockStyle:E,handleFixedMousewheel:S,resizeProxyVisible:R,bodyWidth:L,resizeState:F,doLayout:N,tableBodyStyles:A,tableLayout:M,scrollbarViewStyle:H,tableInnerStyle:j,scrollbarStyle:V}=Rq(e,a,o,r),{scrollBarRef:X,scrollTo:I,setScrollLeft:Y,setScrollTop:ee}=Fq(),W=Or(N,50),re=`${n.namespace.value}-table_${Vq++}`;r.tableId=re,r.state={isGroup:_,resizeState:F,doLayout:N,debouncedUpdateLayout:W};const be=O(()=>e.sumText||t("el.table.sumText")),Te=O(()=>e.emptyText||t("el.table.emptyText"));return Nq(r),{ns:n,layout:a,store:o,handleHeaderFooterMousewheel:C,handleMouseLeave:y,tableId:re,tableSize:k,isHidden:w,isEmpty:l,renderExpanded:m,resizeProxyVisible:R,resizeState:F,isGroup:_,bodyWidth:L,tableBodyStyles:A,emptyBlockStyle:E,debouncedUpdateLayout:W,handleFixedMousewheel:S,setCurrentRow:s,getSelectionRows:i,toggleRowSelection:u,clearSelection:d,clearFilter:f,toggleAllSelection:h,toggleRowExpansion:p,clearSort:v,doLayout:N,sort:g,t,setDragVisible:b,context:r,computedSumText:be,computedEmptyText:Te,tableLayout:M,scrollbarViewStyle:H,tableInnerStyle:j,scrollbarStyle:V,scrollBarRef:X,scrollTo:I,setScrollLeft:Y,setScrollTop:ee}}}),zq=["data-prefix"],Hq={ref:"hiddenColumns",class:"hidden-columns"};function jq(e,t,n,r,o,a){const l=Ve("hColgroup"),s=Ve("table-header"),i=Ve("table-body"),u=Ve("el-scrollbar"),d=Ve("table-footer"),f=hf("mousewheel");return x(),U("div",{ref:"tableWrapper",class:D([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:Qe(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:t[0]||(t[0]=(...h)=>e.handleMouseLeave&&e.handleMouseLeave(...h))},[K("div",{class:D(e.ns.e("inner-wrapper")),style:Qe(e.tableInnerStyle)},[K("div",Hq,[pe(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?vt((x(),U("div",{key:0,ref:"headerWrapper",class:D(e.ns.e("header-wrapper"))},[K("table",{ref:"tableHeader",class:D(e.ns.e("header")),style:Qe(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[Q(l,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Q(s,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])],6)],2)),[[f,e.handleHeaderFooterMousewheel]]):ye("v-if",!0),K("div",{ref:"bodyWrapper",class:D(e.ns.e("body-wrapper"))},[Q(u,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn},{default:G(()=>[K("table",{ref:"tableBody",class:D(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:Qe({width:e.bodyWidth,tableLayout:e.tableLayout})},[Q(l,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(x(),ce(s,{key:0,ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])):ye("v-if",!0),Q(i,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"])],6),e.isEmpty?(x(),U("div",{key:0,ref:"emptyBlock",style:Qe(e.emptyBlockStyle),class:D(e.ns.e("empty-block"))},[K("span",{class:D(e.ns.e("empty-text"))},[pe(e.$slots,"empty",{},()=>[Je(Ee(e.computedEmptyText),1)])],2)],6)):ye("v-if",!0),e.$slots.append?(x(),U("div",{key:1,ref:"appendWrapper",class:D(e.ns.e("append-wrapper"))},[pe(e.$slots,"append")],2)):ye("v-if",!0)]),_:3},8,["view-style","wrap-style","always"])],2),e.showSummary?vt((x(),U("div",{key:1,ref:"footerWrapper",class:D(e.ns.e("footer-wrapper"))},[Q(d,{border:e.border,"default-sort":e.defaultSort,store:e.store,style:Qe(e.tableBodyStyles),"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","style","sum-text","summary-method"])],2)),[[qt,!e.isEmpty],[f,e.handleHeaderFooterMousewheel]]):ye("v-if",!0),e.border||e.isGroup?(x(),U("div",{key:2,class:D(e.ns.e("border-left-patch"))},null,2)):ye("v-if",!0)],6),vt(K("div",{ref:"resizeProxy",class:D(e.ns.e("column-resize-proxy"))},null,2),[[qt,e.resizeProxyVisible]])],46,zq)}var Wq=ze(Bq,[["render",jq],["__file","/home/runner/work/element-plus/element-plus/packages/components/table/src/table.vue"]]);const Uq={selection:"table-column--selection",expand:"table__expand-column"},Kq={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},qq=e=>Uq[e]||"",Yq={selection:{renderHeader({store:e}){function t(){return e.states.data.value&&e.states.data.value.length===0}return He(da,{disabled:t(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection,modelValue:e.states.isAllSelected.value})},renderCell({row:e,column:t,store:n,$index:r}){return He(da,{disabled:t.selectable?!t.selectable.call(null,e,r):!1,size:n.states.tableSize.value,onChange:()=>{n.commit("rowSelectedChanged",e)},onClick:o=>o.stopPropagation(),modelValue:n.isSelected(e)})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let n=t+1;const r=e.index;return typeof r=="number"?n=t+r:typeof r=="function"&&(n=r(t)),He("div",{},[n])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({row:e,store:t,expanded:n}){const{ns:r}=t,o=[r.e("expand-icon")];return n&&o.push(r.em("expand-icon","expanded")),He("div",{class:o,onClick:function(l){l.stopPropagation(),t.toggleRowExpansion(e)}},{default:()=>[He(nt,null,{default:()=>[He(oa)]})]})},sortable:!1,resizable:!1}};function Gq({row:e,column:t,$index:n}){var r;const o=t.property,a=o&&Ni(e,o).value;return t&&t.formatter?t.formatter(e,t,a,n):((r=a==null?void 0:a.toString)==null?void 0:r.call(a))||""}function Xq({row:e,treeNode:t,store:n},r=!1){const{ns:o}=n;if(!t)return r?[He("span",{class:o.e("placeholder")})]:null;const a=[],l=function(s){s.stopPropagation(),!t.loading&&n.loadOrToggle(e)};if(t.indent&&a.push(He("span",{class:o.e("indent"),style:{"padding-left":`${t.indent}px`}})),typeof t.expanded=="boolean"&&!t.noLazyChildren){const s=[o.e("expand-icon"),t.expanded?o.em("expand-icon","expanded"):""];let i=oa;t.loading&&(i=Gu),a.push(He("div",{class:s,onClick:l},{default:()=>[He(nt,{class:{[o.is("loading")]:t.loading}},{default:()=>[He(i)]})]}))}else a.push(He("span",{class:o.e("placeholder")}));return a}function jg(e,t){return e.reduce((n,r)=>(n[r]=r,n),t)}function Jq(e,t){const n=lt();return{registerComplexWatchers:()=>{const a=["fixed"],l={realWidth:"width",realMinWidth:"minWidth"},s=jg(a,l);Object.keys(s).forEach(i=>{const u=l[i];ft(t,u)&&$e(()=>t[u],d=>{let f=d;u==="width"&&i==="realWidth"&&(f=Mp(d)),u==="minWidth"&&i==="realMinWidth"&&(f=Uw(d)),n.columnConfig.value[u]=f,n.columnConfig.value[i]=f;const h=u==="fixed";e.value.store.scheduleLayout(h)})})},registerNormalWatchers:()=>{const a=["label","filters","filterMultiple","sortable","index","formatter","className","labelClassName","showOverflowTooltip"],l={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},s=jg(a,l);Object.keys(s).forEach(i=>{const u=l[i];ft(t,u)&&$e(()=>t[u],d=>{n.columnConfig.value[i]=d})})}}}function Zq(e,t,n){const r=lt(),o=B(""),a=B(!1),l=B(),s=B(),i=Fe("table");qr(()=>{l.value=e.align?`is-${e.align}`:null,l.value}),qr(()=>{s.value=e.headerAlign?`is-${e.headerAlign}`:l.value,s.value});const u=O(()=>{let y=r.vnode.vParent||r.parent;for(;y&&!y.tableId&&!y.columnId;)y=y.vnode.vParent||y.parent;return y}),d=O(()=>{const{store:y}=r.parent;if(!y)return!1;const{treeData:C}=y.states,k=C.value;return k&&Object.keys(k).length>0}),f=B(Mp(e.width)),h=B(Uw(e.minWidth)),p=y=>(f.value&&(y.width=f.value),h.value&&(y.minWidth=h.value),!f.value&&h.value&&(y.width=void 0),y.minWidth||(y.minWidth=80),y.realWidth=Number(y.width===void 0?y.minWidth:y.width),y),v=y=>{const C=y.type,k=Yq[C]||{};Object.keys(k).forEach(S=>{const R=k[S];S!=="className"&&R!==void 0&&(y[S]=R)});const E=qq(C);if(E){const S=`${c(i.namespace)}-${E}`;y.className=y.className?`${y.className} ${S}`:S}return y},g=y=>{Array.isArray(y)?y.forEach(k=>C(k)):C(y);function C(k){var E;((E=k==null?void 0:k.type)==null?void 0:E.name)==="ElTableColumn"&&(k.vParent=r)}};return{columnId:o,realAlign:l,isSubColumn:a,realHeaderAlign:s,columnOrTableParent:u,setColumnWidth:p,setColumnForcedProps:v,setColumnRenders:y=>{e.renderHeader||y.type!=="selection"&&(y.renderHeader=k=>{r.columnConfig.value.label;const E=t.header;return E?E(k):y.label});let C=y.renderCell;return y.type==="expand"?(y.renderCell=k=>He("div",{class:"cell"},[C(k)]),n.value.renderExpanded=k=>t.default?t.default(k):t.default):(C=C||Gq,y.renderCell=k=>{let E=null;if(t.default){const A=t.default(k);E=A.some(M=>M.type!==yn)?A:C(k)}else E=C(k);const{columns:S}=n.value.store.states,R=S.value.findIndex(A=>A.type==="default"),L=d.value&&k.cellIndex===R,F=Xq(k,L),N={class:"cell",style:{}};return y.showOverflowTooltip&&(N.class=`${N.class} ${c(i.namespace)}-tooltip`,N.style={width:`${(k.column.realWidth||Number(k.column.width))-1}px`}),g(E),He("div",N,[F,E])}),y},getPropsData:(...y)=>y.reduce((C,k)=>(Array.isArray(k)&&k.forEach(E=>{C[E]=e[E]}),C),{}),getColumnElIndex:(y,C)=>Array.prototype.indexOf.call(y,C),updateColumnOrder:()=>{n.value.store.commit("updateColumnOrder",r.columnConfig.value)}}}var Qq={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let eY=1;var Zw=se({name:"ElTableColumn",components:{ElCheckbox:da},props:Qq,setup(e,{slots:t}){const n=lt(),r=B({}),o=O(()=>{let _=n.parent;for(;_&&!_.tableId;)_=_.parent;return _}),{registerNormalWatchers:a,registerComplexWatchers:l}=Jq(o,e),{columnId:s,isSubColumn:i,realHeaderAlign:u,columnOrTableParent:d,setColumnWidth:f,setColumnForcedProps:h,setColumnRenders:p,getPropsData:v,getColumnElIndex:g,realAlign:w,updateColumnOrder:m}=Zq(e,t,o),b=d.value;s.value=`${b.tableId||b.columnId}_column_${eY++}`,As(()=>{i.value=o.value!==b;const _=e.type||"default",y=e.sortable===""?!0:e.sortable,C=Er(e.showOverflowTooltip)?b.props.showOverflowTooltip:e.showOverflowTooltip,k={...Kq[_],id:s.value,type:_,property:e.prop||e.property,align:w,headerAlign:u,showOverflowTooltip:C,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:y,index:e.index,rawColumnKey:n.vnode.key};let F=v(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement"]);F=eq(k,F),F=nq(p,f,h)(F),r.value=F,a(),l()}),dt(()=>{var _;const y=d.value,C=i.value?y.vnode.el.children:(_=y.refs.hiddenColumns)==null?void 0:_.children,k=()=>g(C||[],n.vnode.el);r.value.getColumnIndex=k,k()>-1&&o.value.store.commit("insertColumn",r.value,i.value?y.columnConfig.value:null,m)}),rn(()=>{o.value.store.commit("removeColumn",r.value,i.value?b.columnConfig.value:null,m)}),n.columnId=s.value,n.columnConfig=r},render(){var e,t,n;try{const r=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),o=[];if(Array.isArray(r))for(const l of r)((n=l.type)==null?void 0:n.name)==="ElTableColumn"||l.shapeFlag&2?o.push(l):l.type===Pe&&Array.isArray(l.children)&&l.children.forEach(s=>{(s==null?void 0:s.patchFlag)!==1024&&!Ge(s==null?void 0:s.children)&&o.push(s)});return He("div",o)}catch{return He("div",[])}}});const tY=Bt(Wq,{TableColumn:Zw}),nY=br(Zw),Qw=["success","info","warning","error"],$n=Ur({customClass:"",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:xt?document.body:void 0}),rY=je({customClass:{type:String,default:$n.customClass},center:{type:Boolean,default:$n.center},dangerouslyUseHTMLString:{type:Boolean,default:$n.dangerouslyUseHTMLString},duration:{type:Number,default:$n.duration},icon:{type:Cn,default:$n.icon},id:{type:String,default:$n.id},message:{type:Le([String,Object,Function]),default:$n.message},onClose:{type:Le(Function),required:!1},showClose:{type:Boolean,default:$n.showClose},type:{type:String,values:Qw,default:$n.type},offset:{type:Number,default:$n.offset},zIndex:{type:Number,default:$n.zIndex},grouping:{type:Boolean,default:$n.grouping},repeatNum:{type:Number,default:$n.repeatNum}}),oY={destroy:()=>!0},ir=lf([]),aY=e=>{const t=ir.findIndex(o=>o.id===e),n=ir[t];let r;return t>0&&(r=ir[t-1]),{current:n,prev:r}},lY=e=>{const{prev:t}=aY(e);return t?t.vm.exposed.bottom.value:0},sY=(e,t)=>ir.findIndex(r=>r.id===e)>0?20:t,iY=["id"],uY=["innerHTML"],cY=se({name:"ElMessage"}),dY=se({...cY,props:rY,emits:oY,setup(e,{expose:t}){const n=e,{Close:r}=K1,{ns:o,zIndex:a}=uV("message"),{currentZIndex:l,nextZIndex:s}=a,i=B(),u=B(!1),d=B(0);let f;const h=O(()=>n.type?n.type==="error"?"danger":n.type:"info"),p=O(()=>{const E=n.type;return{[o.bm("icon",E)]:E&&gu[E]}}),v=O(()=>n.icon||gu[n.type]||""),g=O(()=>lY(n.id)),w=O(()=>sY(n.id,n.offset)+g.value),m=O(()=>d.value+w.value),b=O(()=>({top:`${w.value}px`,zIndex:l.value}));function _(){n.duration!==0&&({stop:f}=ed(()=>{C()},n.duration))}function y(){f==null||f()}function C(){u.value=!1}function k({code:E}){E===at.esc&&C()}return dt(()=>{_(),s(),u.value=!0}),$e(()=>n.repeatNum,()=>{y(),_()}),An(document,"keydown",k),xo(i,()=>{d.value=i.value.getBoundingClientRect().height}),t({visible:u,bottom:m,close:C}),(E,S)=>(x(),ce(Mn,{name:c(o).b("fade"),onBeforeLeave:E.onClose,onAfterLeave:S[0]||(S[0]=R=>E.$emit("destroy")),persisted:""},{default:G(()=>[vt(K("div",{id:E.id,ref_key:"messageRef",ref:i,class:D([c(o).b(),{[c(o).m(E.type)]:E.type&&!E.icon},c(o).is("center",E.center),c(o).is("closable",E.showClose),E.customClass]),style:Qe(c(b)),role:"alert",onMouseenter:y,onMouseleave:_},[E.repeatNum>1?(x(),ce(c(q9),{key:0,value:E.repeatNum,type:c(h),class:D(c(o).e("badge"))},null,8,["value","type","class"])):ye("v-if",!0),c(v)?(x(),ce(c(nt),{key:1,class:D([c(o).e("icon"),c(p)])},{default:G(()=>[(x(),ce(Lt(c(v))))]),_:1},8,["class"])):ye("v-if",!0),pe(E.$slots,"default",{},()=>[E.dangerouslyUseHTMLString?(x(),U(Pe,{key:1},[ye(" Caution here, message could've been compromised, never use user's input as message "),K("p",{class:D(c(o).e("content")),innerHTML:E.message},null,10,uY)],2112)):(x(),U("p",{key:0,class:D(c(o).e("content"))},Ee(E.message),3))]),E.showClose?(x(),ce(c(nt),{key:2,class:D(c(o).e("closeBtn")),onClick:$t(C,["stop"])},{default:G(()=>[Q(c(r))]),_:1},8,["class","onClick"])):ye("v-if",!0)],46,iY),[[qt,u.value]])]),_:3},8,["name","onBeforeLeave"]))}});var fY=ze(dY,[["__file","/home/runner/work/element-plus/element-plus/packages/components/message/src/message.vue"]]);let pY=1;const e2=e=>{const t=!e||Ge(e)||Ua(e)||Ke(e)?{message:e}:e,n={...$n,...t};if(!n.appendTo)n.appendTo=document.body;else if(Ge(n.appendTo)){let r=document.querySelector(n.appendTo);ua(r)||(r=document.body),n.appendTo=r}return n},mY=e=>{const t=ir.indexOf(e);if(t===-1)return;ir.splice(t,1);const{handler:n}=e;n.close()},hY=({appendTo:e,...t},n)=>{const r=`message_${pY++}`,o=t.onClose,a=document.createElement("div"),l={...t,id:r,onClose:()=>{o==null||o(),mY(d)},onDestroy:()=>{Om(null,a)}},s=Q(fY,l,Ke(l.message)||Ua(l.message)?{default:Ke(l.message)?l.message:()=>l.message}:null);s.appContext=n||cl._context,Om(s,a),e.appendChild(a.firstElementChild);const i=s.component,d={id:r,vnode:s,vm:i,handler:{close:()=>{i.exposed.visible.value=!1}},props:s.component.props};return d},cl=(e={},t)=>{if(!xt)return{close:()=>{}};if(ct(Ed.max)&&ir.length>=Ed.max)return{close:()=>{}};const n=e2(e);if(n.grouping&&ir.length){const o=ir.find(({vnode:a})=>{var l;return((l=a.props)==null?void 0:l.message)===n.message});if(o)return o.props.repeatNum+=1,o.props.type=n.type,o.handler}const r=hY(n,t);return ir.push(r),r.handler};Qw.forEach(e=>{cl[e]=(t={},n)=>{const r=e2(t);return cl({...r,type:e},n)}});function vY(e){for(const t of ir)(!e||e===t.props.type)&&t.handler.close()}cl.closeAll=vY;cl._context=null;const Ei=P5(cl,"$message"),gY=async e=>await fetch(e),bG=async(e,t,n)=>await fetch(e,{method:"POST",body:t,headers:n});const bY={class:"bottom"},yY={key:0,class:"suffix-icon"},_Y={class:"suffix-icon"},wY={slot:"footer",class:"dialog-footer-right"},CY=se({__name:"filepicker",props:{schema:{},modelValue:{},disabled:{},prefix:{},initial:{}},emits:["update:modelValue"],setup(e){const t=e,n=B([]),r=B(!1),o=(()=>{var g;let{type:p,internal:v}=((g=t.schema)==null?void 0:g.meta.extra)||{};return v!=null&&(p=v),p!=null&&p!=null})(),a=(()=>{var g;let{type:p,internal:v}=((g=t.schema)==null?void 0:g.meta.extra)||{};return v!=null&&(p=v),p==null&&(p="model-file"),p})(),l=(p=>p==null?"\u8BF7\u9009\u62E9":p.indexOf("model")!=-1?"\u8BF7\u9009\u62E9\u6A21\u578B\u6587\u4EF6":p.indexOf("dir")!=-1?"\u8BF7\u9009\u62E9\u76EE\u5F55":"\u8BF7\u9009\u62E9")(a),s=a.indexOf("dir")==-1,i=an.useModel(),u=O(()=>{var v;const{rows:p}=((v=t.schema)==null?void 0:v.meta.extra)||{};return typeof p=="number"?{minRows:p,maxRows:p}:Array.isArray(p)?{minRows:p[0],maxRows:p[1]}:!0});async function d(){var w;let p,{type:v}=((w=t.schema)==null?void 0:w.meta.extra)||{};v==null&&(v="model-file");try{p=await gY(`/api/pick_file?picker_type=${v}`)}catch(m){Ei.error("\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25"),console.error("There was a problem with the fetch operation:",m);return}let g=await p.json();g.status=="success"?(i.value=g.data.path,Ei.success("\u9009\u53D6\u6210\u529F")):Ei.error("\u9009\u53D6\u5931\u8D25")}const f=async()=>{try{const p=await fetch(`/api/get_files?pick_type=${a}`);if(!p.ok)throw new Error("Failed to fetch");n.value=(await p.json()).data.files,r.value=!0}catch(p){Ei.error("\u83B7\u53D6\u6587\u4EF6\u5217\u8868\u5931\u8D25"),console.error("Error fetching files:",p)}},h=p=>{i.value=p.path,r.value=!1};return(p,v)=>{const g=Ve("el-tooltip"),w=Ve("el-input"),m=Ve("el-table-column"),b=Ve("el-table"),_=Ve("el-button"),y=Ve("el-dialog");return x(),ce(c(an),null,{title:G(()=>[pe(p.$slots,"title",{},void 0,!0)]),desc:G(()=>[pe(p.$slots,"desc",{},void 0,!0)]),menu:G(()=>[pe(p.$slots,"menu",{},void 0,!0)]),prefix:G(()=>[pe(p.$slots,"prefix",{},void 0,!0)]),suffix:G(()=>[pe(p.$slots,"suffix",{},void 0,!0)]),default:G(()=>[K("div",bY,[Q(w,{type:"",modelValue:c(i),"onUpdate:modelValue":v[2]||(v[2]=C=>mt(i)?i.value=C:null),autosize:u.value,disabled:e.disabled},{suffix:G(()=>[Q(g,{content:"\u5185\u7F6E\u6587\u4EF6\u9009\u62E9\u5668",effect:"light"},{default:G(()=>[c(o)?(x(),U("span",yY,[Q(m8,{onClick:v[0]||(v[0]=C=>f())})])):ye("",!0)]),_:1}),Q(g,{content:"\u6587\u4EF6\u9009\u62E9\u5668\uFF08\u4EC5\u672C\u5730\u53EF\u7528\uFF09",effect:"light"},{default:G(()=>[K("span",_Y,[Q(i8,{onClick:v[1]||(v[1]=C=>d())})])]),_:1})]),_:1},8,["modelValue","autosize","disabled"])]),K("div",null,[Q(y,{modelValue:r.value,"onUpdate:modelValue":v[4]||(v[4]=C=>r.value=C),"append-to-body":!0,title:c(l)},{default:G(()=>[Q(b,{data:n.value,height:"500",style:{width:"100%","margin-bottom":"10px"},onRowClick:h},{default:G(()=>[Q(m,{prop:"name",label:"\u540D\u79F0"}),s?(x(),ce(m,{key:0,prop:"size",label:"\u5927\u5C0F"})):ye("",!0)]),_:1},8,["data"]),K("span",wY,[Q(_,{onClick:v[3]||(v[3]=C=>r.value=!1)},{default:G(()=>[Je("\u53D6\u6D88")]),_:1})])]),_:1},8,["modelValue","title"])])]),_:3})}}});var kY=St(CY,[["__scopeId","data-v-578aa7a9"],["__file","filepicker.vue"]]);an.extensions.add({type:"string",role:"filepicker",component:kY,validate:e=>typeof e=="string"});function SY(){return t2().__VUE_DEVTOOLS_GLOBAL_HOOK__}function t2(){return typeof navigator!="undefined"&&typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:{}}const EY=typeof Proxy=="function",$Y="devtools-plugin:setup",TY="plugin:settings:set";let xa,Gd;function xY(){var e;return xa!==void 0||(typeof window!="undefined"&&window.performance?(xa=!0,Gd=window.performance):typeof globalThis!="undefined"&&((e=globalThis.perf_hooks)===null||e===void 0?void 0:e.performance)?(xa=!0,Gd=globalThis.perf_hooks.performance):xa=!1),xa}function OY(){return xY()?Gd.now():Date.now()}class AY{constructor(t,n){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=n;const r={};if(t.settings)for(const l in t.settings){const s=t.settings[l];r[l]=s.defaultValue}const o=`__vue-devtools-plugin-settings__${t.id}`;let a=Object.assign({},r);try{const l=localStorage.getItem(o),s=JSON.parse(l);Object.assign(a,s)}catch{}this.fallbacks={getSettings(){return a},setSettings(l){try{localStorage.setItem(o,JSON.stringify(l))}catch{}a=l},now(){return OY()}},n&&n.on(TY,(l,s)=>{l===this.plugin.id&&this.fallbacks.setSettings(s)}),this.proxiedOn=new Proxy({},{get:(l,s)=>this.target?this.target.on[s]:(...i)=>{this.onQueue.push({method:s,args:i})}}),this.proxiedTarget=new Proxy({},{get:(l,s)=>this.target?this.target[s]:s==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(s)?(...i)=>(this.targetQueue.push({method:s,args:i,resolve:()=>{}}),this.fallbacks[s](...i)):(...i)=>new Promise(u=>{this.targetQueue.push({method:s,args:i,resolve:u})})})}async setRealTarget(t){this.target=t;for(const n of this.onQueue)this.target.on[n.method](...n.args);for(const n of this.targetQueue)n.resolve(await this.target[n.method](...n.args))}}function IY(e,t){const n=e,r=t2(),o=SY(),a=EY&&n.enableEarlyProxy;if(o&&(r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!a))o.emit($Y,e,t);else{const l=a?new AY(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:l}),l&&t(l.proxiedTarget)}}/*! - * vuex v4.0.2 - * (c) 2021 Evan You - * @license MIT - */var PY="store";function wl(e,t){Object.keys(e).forEach(function(n){return t(e[n],n)})}function LY(e){return e!==null&&typeof e=="object"}function MY(e){return e&&typeof e.then=="function"}function RY(e,t){return function(){return e(t)}}function n2(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}function r2(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;oc(e,n,[],e._modules.root,!0),Fp(e,n,t)}function Fp(e,t,n){var r=e._state;e.getters={},e._makeLocalGettersCache=Object.create(null);var o=e._wrappedGetters,a={};wl(o,function(l,s){a[s]=RY(l,e),Object.defineProperty(e.getters,s,{get:function(){return a[s]()},enumerable:!0})}),e._state=Xt({data:t}),e.strict&&BY(e),r&&n&&e._withCommit(function(){r.data=null})}function oc(e,t,n,r,o){var a=!n.length,l=e._modules.getNamespace(n);if(r.namespaced&&(e._modulesNamespaceMap[l],e._modulesNamespaceMap[l]=r),!a&&!o){var s=Vp(t,n.slice(0,-1)),i=n[n.length-1];e._withCommit(function(){s[i]=r.state})}var u=r.context=NY(e,l,n);r.forEachMutation(function(d,f){var h=l+f;DY(e,h,d,u)}),r.forEachAction(function(d,f){var h=d.root?f:l+f,p=d.handler||d;FY(e,h,p,u)}),r.forEachGetter(function(d,f){var h=l+f;VY(e,h,d,u)}),r.forEachChild(function(d,f){oc(e,t,n.concat(f),d,o)})}function NY(e,t,n){var r=t==="",o={dispatch:r?e.dispatch:function(a,l,s){var i=ku(a,l,s),u=i.payload,d=i.options,f=i.type;return(!d||!d.root)&&(f=t+f),e.dispatch(f,u)},commit:r?e.commit:function(a,l,s){var i=ku(a,l,s),u=i.payload,d=i.options,f=i.type;(!d||!d.root)&&(f=t+f),e.commit(f,u,d)}};return Object.defineProperties(o,{getters:{get:r?function(){return e.getters}:function(){return o2(e,t)}},state:{get:function(){return Vp(e.state,n)}}}),o}function o2(e,t){if(!e._makeLocalGettersCache[t]){var n={},r=t.length;Object.keys(e.getters).forEach(function(o){if(o.slice(0,r)===t){var a=o.slice(r);Object.defineProperty(n,a,{get:function(){return e.getters[o]},enumerable:!0})}}),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}function DY(e,t,n,r){var o=e._mutations[t]||(e._mutations[t]=[]);o.push(function(l){n.call(e,r.state,l)})}function FY(e,t,n,r){var o=e._actions[t]||(e._actions[t]=[]);o.push(function(l){var s=n.call(e,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:e.getters,rootState:e.state},l);return MY(s)||(s=Promise.resolve(s)),e._devtoolHook?s.catch(function(i){throw e._devtoolHook.emit("vuex:error",i),i}):s})}function VY(e,t,n,r){e._wrappedGetters[t]||(e._wrappedGetters[t]=function(a){return n(r.state,r.getters,a.state,a.getters)})}function BY(e){$e(function(){return e._state.data},function(){},{deep:!0,flush:"sync"})}function Vp(e,t){return t.reduce(function(n,r){return n[r]},e)}function ku(e,t,n){return LY(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}var zY="vuex bindings",Wg="vuex:mutations",Dc="vuex:actions",Oa="vuex",HY=0;function jY(e,t){IY({id:"org.vuejs.vuex",app:e,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[zY]},function(n){n.addTimelineLayer({id:Wg,label:"Vuex Mutations",color:Ug}),n.addTimelineLayer({id:Dc,label:"Vuex Actions",color:Ug}),n.addInspector({id:Oa,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),n.on.getInspectorTree(function(r){if(r.app===e&&r.inspectorId===Oa)if(r.filter){var o=[];i2(o,t._modules.root,r.filter,""),r.rootNodes=o}else r.rootNodes=[s2(t._modules.root,"")]}),n.on.getInspectorState(function(r){if(r.app===e&&r.inspectorId===Oa){var o=r.nodeId;o2(t,o),r.state=KY(YY(t._modules,o),o==="root"?t.getters:t._makeLocalGettersCache,o)}}),n.on.editInspectorState(function(r){if(r.app===e&&r.inspectorId===Oa){var o=r.nodeId,a=r.path;o!=="root"&&(a=o.split("/").filter(Boolean).concat(a)),t._withCommit(function(){r.set(t._state.data,a,r.state.value)})}}),t.subscribe(function(r,o){var a={};r.payload&&(a.payload=r.payload),a.state=o,n.notifyComponentUpdate(),n.sendInspectorTree(Oa),n.sendInspectorState(Oa),n.addTimelineEvent({layerId:Wg,event:{time:Date.now(),title:r.type,data:a}})}),t.subscribeAction({before:function(r,o){var a={};r.payload&&(a.payload=r.payload),r._id=HY++,r._time=Date.now(),a.state=o,n.addTimelineEvent({layerId:Dc,event:{time:r._time,title:r.type,groupId:r._id,subtitle:"start",data:a}})},after:function(r,o){var a={},l=Date.now()-r._time;a.duration={_custom:{type:"duration",display:l+"ms",tooltip:"Action duration",value:l}},r.payload&&(a.payload=r.payload),a.state=o,n.addTimelineEvent({layerId:Dc,event:{time:Date.now(),title:r.type,groupId:r._id,subtitle:"end",data:a}})}})})}var Ug=8702998,WY=6710886,UY=16777215,a2={label:"namespaced",textColor:UY,backgroundColor:WY};function l2(e){return e&&e!=="root"?e.split("/").slice(-2,-1)[0]:"Root"}function s2(e,t){return{id:t||"root",label:l2(t),tags:e.namespaced?[a2]:[],children:Object.keys(e._children).map(function(n){return s2(e._children[n],t+n+"/")})}}function i2(e,t,n,r){r.includes(n)&&e.push({id:r||"root",label:r.endsWith("/")?r.slice(0,r.length-1):r||"Root",tags:t.namespaced?[a2]:[]}),Object.keys(t._children).forEach(function(o){i2(e,t._children[o],n,r+o+"/")})}function KY(e,t,n){t=n==="root"?t:t[n];var r=Object.keys(t),o={state:Object.keys(e.state).map(function(l){return{key:l,editable:!0,value:e.state[l]}})};if(r.length){var a=qY(t);o.getters=Object.keys(a).map(function(l){return{key:l.endsWith("/")?l2(l):l,editable:!1,value:Xd(function(){return a[l]})}})}return o}function qY(e){var t={};return Object.keys(e).forEach(function(n){var r=n.split("/");if(r.length>1){var o=t,a=r.pop();r.forEach(function(l){o[l]||(o[l]={_custom:{value:{},display:l,tooltip:"Module",abstract:!0}}),o=o[l]._custom.value}),o[a]=Xd(function(){return e[n]})}else t[n]=Xd(function(){return e[n]})}),t}function YY(e,t){var n=t.split("/").filter(function(r){return r});return n.reduce(function(r,o,a){var l=r[o];if(!l)throw new Error('Missing module "'+o+'" for path "'+t+'".');return a===n.length-1?l:l._children},t==="root"?e:e.root._children)}function Xd(e){try{return e()}catch(t){return t}}var _r=function(t,n){this.runtime=n,this._children=Object.create(null),this._rawModule=t;var r=t.state;this.state=(typeof r=="function"?r():r)||{}},u2={namespaced:{configurable:!0}};u2.namespaced.get=function(){return!!this._rawModule.namespaced};_r.prototype.addChild=function(t,n){this._children[t]=n};_r.prototype.removeChild=function(t){delete this._children[t]};_r.prototype.getChild=function(t){return this._children[t]};_r.prototype.hasChild=function(t){return t in this._children};_r.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)};_r.prototype.forEachChild=function(t){wl(this._children,t)};_r.prototype.forEachGetter=function(t){this._rawModule.getters&&wl(this._rawModule.getters,t)};_r.prototype.forEachAction=function(t){this._rawModule.actions&&wl(this._rawModule.actions,t)};_r.prototype.forEachMutation=function(t){this._rawModule.mutations&&wl(this._rawModule.mutations,t)};Object.defineProperties(_r.prototype,u2);var ka=function(t){this.register([],t,!1)};ka.prototype.get=function(t){return t.reduce(function(n,r){return n.getChild(r)},this.root)};ka.prototype.getNamespace=function(t){var n=this.root;return t.reduce(function(r,o){return n=n.getChild(o),r+(n.namespaced?o+"/":"")},"")};ka.prototype.update=function(t){c2([],this.root,t)};ka.prototype.register=function(t,n,r){var o=this;r===void 0&&(r=!0);var a=new _r(n,r);if(t.length===0)this.root=a;else{var l=this.get(t.slice(0,-1));l.addChild(t[t.length-1],a)}n.modules&&wl(n.modules,function(s,i){o.register(t.concat(i),s,r)})};ka.prototype.unregister=function(t){var n=this.get(t.slice(0,-1)),r=t[t.length-1],o=n.getChild(r);!o||!o.runtime||n.removeChild(r)};ka.prototype.isRegistered=function(t){var n=this.get(t.slice(0,-1)),r=t[t.length-1];return n?n.hasChild(r):!1};function c2(e,t,n){if(t.update(n),n.modules)for(var r in n.modules){if(!t.getChild(r))return;c2(e.concat(r),t.getChild(r),n.modules[r])}}function GY(e){return new Nn(e)}var Nn=function(t){var n=this;t===void 0&&(t={});var r=t.plugins;r===void 0&&(r=[]);var o=t.strict;o===void 0&&(o=!1);var a=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new ka(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._devtools=a;var l=this,s=this,i=s.dispatch,u=s.commit;this.dispatch=function(h,p){return i.call(l,h,p)},this.commit=function(h,p,v){return u.call(l,h,p,v)},this.strict=o;var d=this._modules.root.state;oc(this,d,[],this._modules.root),Fp(this,d),r.forEach(function(f){return f(n)})},Bp={state:{configurable:!0}};Nn.prototype.install=function(t,n){t.provide(n||PY,this),t.config.globalProperties.$store=this;var r=this._devtools!==void 0?this._devtools:!1;r&&jY(t,this)};Bp.state.get=function(){return this._state.data};Bp.state.set=function(e){};Nn.prototype.commit=function(t,n,r){var o=this,a=ku(t,n,r),l=a.type,s=a.payload,i={type:l,payload:s},u=this._mutations[l];!u||(this._withCommit(function(){u.forEach(function(f){f(s)})}),this._subscribers.slice().forEach(function(d){return d(i,o.state)}))};Nn.prototype.dispatch=function(t,n){var r=this,o=ku(t,n),a=o.type,l=o.payload,s={type:a,payload:l},i=this._actions[a];if(!!i){try{this._actionSubscribers.slice().filter(function(d){return d.before}).forEach(function(d){return d.before(s,r.state)})}catch{}var u=i.length>1?Promise.all(i.map(function(d){return d(l)})):i[0](l);return new Promise(function(d,f){u.then(function(h){try{r._actionSubscribers.filter(function(p){return p.after}).forEach(function(p){return p.after(s,r.state)})}catch{}d(h)},function(h){try{r._actionSubscribers.filter(function(p){return p.error}).forEach(function(p){return p.error(s,r.state,h)})}catch{}f(h)})})}};Nn.prototype.subscribe=function(t,n){return n2(t,this._subscribers,n)};Nn.prototype.subscribeAction=function(t,n){var r=typeof t=="function"?{before:t}:t;return n2(r,this._actionSubscribers,n)};Nn.prototype.watch=function(t,n,r){var o=this;return $e(function(){return t(o.state,o.getters)},n,Object.assign({},r))};Nn.prototype.replaceState=function(t){var n=this;this._withCommit(function(){n._state.data=t})};Nn.prototype.registerModule=function(t,n,r){r===void 0&&(r={}),typeof t=="string"&&(t=[t]),this._modules.register(t,n),oc(this,this.state,t,this._modules.get(t),r.preserveState),Fp(this,this.state)};Nn.prototype.unregisterModule=function(t){var n=this;typeof t=="string"&&(t=[t]),this._modules.unregister(t),this._withCommit(function(){var r=Vp(n.state,t.slice(0,-1));delete r[t[t.length-1]]}),r2(this)};Nn.prototype.hasModule=function(t){return typeof t=="string"&&(t=[t]),this._modules.isRegistered(t)};Nn.prototype.hotUpdate=function(t){this._modules.update(t),r2(this,!0)};Nn.prototype._withCommit=function(t){var n=this._committing;this._committing=!0,t(),this._committing=n};Object.defineProperties(Nn.prototype,Bp);const d2=Vx({legacy:!1,locale:"zh-CN",fallbackLocale:""}),XY=GY({state:{filePickerOpened:!1}});globalThis.Schema=Rs;globalThis.i18n=d2;var JY=Ro({enhance({app:e,router:t,siteData:n}){e.use(XY),e.use(CV),e.use(tY),e.use(hB),e.use(vB),e.use(nY),e.use(Bz),e.use(Uz),e.use(Qr),e.use(da),e.use(Gz),e.use(SH),e.use(Ij),e.use(Xj),e.use(qW),e.use(YW),e.use(GW),e.use(Kn),e.use(Fw),e.use(sK),e.use(Oz),e.use(yl),e.use(Hw),e.use(DK),e.use(YK),e.use(j7),e.use(mw),e.use(Ca),e.use(G7),e.use(tW),e.use(d2),e.use(an),e.component("k-markdown",b4)},setup(){}});const Fc=[_E,kE,TE,VE,jE,YE,lT,JY],ZY=[["v-8daa1a0e","/",{title:"SD-Trainer"},["/index.html","/index.md"]],["v-6983ba2a","/tageditor.html",{title:""},["/tageditor","/tageditor.md"]],["v-native-tageditor","/native-tageditor.html",{title:""},["/native-tageditor","/native-tageditor.md"]],["v-51615306","/tagger.html",{title:"Tagger \u6807\u6CE8\u5DE5\u5177"},["/tagger","/tagger.md"]],["v-06850b9b","/task.html",{title:""},["/task","/task.md"]],["v-13efe3c5","/tensorboard.html",{title:""},["/tensorboard","/tensorboard.md"]],["v-33a23463","/dreambooth/",{title:"Dreambooth \u8BAD\u7EC3 \u4E13\u5BB6\u6A21\u5F0F"},["/dreambooth/index.html","/dreambooth/index.md"]],["v-b5471278","/other/about.html",{title:""},["/other/about","/other/about.md"]],["v-a1c9e4f2","/other/changelog.html",{title:"\u66F4\u65B0\u65E5\u5FD7"},["/other/changelog","/other/changelog.md"]],["v-b8e2d701","/help/guide.html",{title:"\u65b0\u624b\u4e0a\u8def"},["/help/guide","/help/guide.md"]],["v-72e1da3e","/other/settings.html",{title:"\u8BAD\u7EC3 UI \u8BBE\u7F6E"},["/other/settings","/other/settings.md"]],["v-3e43d6e2","/lora/basic.html",{title:"LoRA \u8BAD\u7EC3 \u65B0\u624B\u6A21\u5F0F"},["/lora/basic","/lora/basic.md"]],["v-fdbe4e28","/lora/flux.html",{title:"Flux LoRA \u8BAD\u7EC3 \u4E13\u5BB6\u6A21\u5F0F"},["/lora/flux","/lora/flux.md"]],["v-14e91824","/lora/",{title:"LoRA \u8BAD\u7EC3"},["/lora/index.html","/lora/index.md"]],["v-1bf725da","/lora/master.html",{title:"LoRA \u8BAD\u7EC3 \u4E13\u5BB6\u6A21\u5F0F"},["/lora/master","/lora/master.md"]],["v-0f9e746f","/lora/params.html",{title:"\u8BAD\u7EC3\u53C2\u6570\u8C03\u8282"},["/lora/params","/lora/params.md"]],["v-0dc76a3b","/lora/sd3.html",{title:"SD3 \u8BAD\u7EC3 \u4E13\u5BB6\u6A21\u5F0F"},["/lora/sd3","/lora/sd3.md"]],["v-a1f1ne2e","/lora/anima-finetune.html",{title:"Anima \u5168\u91cf\u5FAE\u8C03 \u4E13\u5BB6\u6A21\u5F0F"},["/lora/anima-finetune","/lora/anima-finetune.md"]],["v-53c99f50","/lora/sdxl.html",{title:"SDXL LoRA \u8BAD\u7EC3 \u4E13\u5BB6\u6A21\u5F0F"},["/lora/sdxl","/lora/sdxl.md"]],["v-4441a302","/lora/tools.html",{title:"LoRA \u76F8\u5173\u5DE5\u5177"},["/lora/tools","/lora/tools.md"]],["v-3706649a","/404.html",{title:""},["/404"]]];var QY=()=>ZY.reduce((e,[t,n,r,o])=>(e.push({name:t,path:n,component:Am,meta:r},...o.map(a=>({path:a,redirect:n}))),e),[{name:"404",path:"/:catchAll(.*)",component:Am}]),eG=AS,tG=()=>{const e=pE({history:eG(eS(wo.value.base)),routes:QY(),scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{var r;(t.path!==n.path||n===Vr)&&([jr.value]=await Promise.all([Wo.resolvePageData(t.name),(r=i0[t.name])==null?void 0:r.__asyncLoader()]))}),e},nG=e=>{e.component("ClientOnly",cS),e.component("Content",dS)},rG=(e,t)=>{const n=O(()=>Wo.resolveRouteLocale(wo.value.locales,t.currentRoute.value.path)),r=O(()=>Wo.resolveSiteLocaleData(wo.value,n.value)),o=O(()=>Wo.resolvePageFrontmatter(jr.value)),a=O(()=>Wo.resolvePageHeadTitle(jr.value,r.value)),l=O(()=>Wo.resolvePageHead(a.value,o.value,r.value)),s=O(()=>Wo.resolvePageLang(jr.value));return e.provide(Cf,n),e.provide(m0,r),e.provide(d0,o),e.provide(aS,a),e.provide(f0,l),e.provide(p0,s),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>o.value},$head:{get:()=>l.value},$headTitle:{get:()=>a.value},$lang:{get:()=>s.value},$page:{get:()=>jr.value},$routeLocale:{get:()=>n.value},$site:{get:()=>wo.value},$siteLocale:{get:()=>r.value},$withBase:{get:()=>fS}}),{pageData:jr,pageFrontmatter:o,pageHead:l,pageHeadTitle:a,pageLang:s,routeLocale:n,siteData:wo,siteLocaleData:r}},oG=()=>{const e=$f(),t=oS(),n=lS(),r=B([]),o=()=>{t.value.forEach(l=>{const s=aG(l);s&&r.value.push(s)})},a=()=>{document.documentElement.lang=n.value,r.value.forEach(l=>{l.parentNode===document.head&&document.head.removeChild(l)}),r.value.splice(0,r.value.length),t.value.forEach(l=>{const s=lG(l);s!==null&&(document.head.appendChild(s),r.value.push(s))})};yt(uS,a),dt(()=>{o(),a(),$e(()=>e.path,()=>a())})},aG=([e,t,n=""])=>{const r=Object.entries(t).map(([s,i])=>Ge(i)?`[${s}="${i}"]`:i===!0?`[${s}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(s=>s.innerText===n)||null},lG=([e,t,n])=>{if(!Ge(e))return null;const r=document.createElement(e);return l0(t)&&Object.entries(t).forEach(([o,a])=>{Ge(a)?r.setAttribute(o,a):a===!0&&r.setAttribute(o,"")}),Ge(n)&&r.appendChild(document.createTextNode(n)),r},sG=Yk,iG=async()=>{var n;const e=sG({name:"VuepressApp",setup(){var r;oG();for(const o of Fc)(r=o.setup)==null||r.call(o);return()=>[He($0),...Fc.flatMap(({rootComponents:o=[]})=>o.map(a=>He(a)))]}}),t=tG();nG(e),rG(e,t);for(const r of Fc)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:wo}));return e.use(t),{app:e,router:t}};iG().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{ht as $,$e as A,V5 as B,dt as C,rn as D,at as E,K5 as F,dr as G,ze as H,c_ as I,ce as J,vt as K,D as L,Qe as M,$t as N,Lt as O,ye as P,Dt as Q,pe as R,qt as S,K1 as T,Mn as U,xt as V,Ge as W,Ua as X,Om as Y,ft as Z,St as _,K as a,Er as a0,Ke as a1,ua as a2,rS as a3,Pe as a4,it as a5,De as a6,$f as a7,Ht as a8,Qk as a9,CV as aA,bG as aB,xn as aC,Is as aD,fG as aa,pG as ab,iS as ac,mG as ad,vG as ae,He as af,fS as ag,cS as ah,tS as ai,eS as aj,Ef as ak,Z$ as al,Ps as am,gG as an,l0 as ao,hG as ap,Ei as aq,_C as ar,wC as as,Mo as at,eT as au,us as av,Rs as aw,gY as ax,kn as ay,As as az,Je as b,U as c,iG as createVueApp,Q as d,dG as e,se as f,H0 as g,c as h,Qr as i,A_ as j,Kn as k,Nj as l,nt as m,qe as n,x as o,q1 as p,uV as q,Ve as r,O as s,Ee as t,sS as u,B as v,G as w,Xt as x,gu as y,Lo as z}; - - - diff --git a/frontend/dist/assets/back-to-top.8efcbe56.svg b/frontend/dist/assets/back-to-top.8efcbe56.svg deleted file mode 100644 index 83236781..00000000 --- a/frontend/dist/assets/back-to-top.8efcbe56.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/dist/assets/basic.html.48955584.js b/frontend/dist/assets/basic.html.48955584.js deleted file mode 100644 index 0a653b6c..00000000 --- a/frontend/dist/assets/basic.html.48955584.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-3e43d6e2","path":"/lora/basic.html","title":"LoRA \u8BAD\u7EC3 \u65B0\u624B\u6A21\u5F0F","lang":"en-US","frontmatter":{"example":true,"trainType":"lora-basic"},"excerpt":"","headers":[],"filePathRelative":"lora/basic.md"}');export{e as data}; diff --git a/frontend/dist/assets/basic.html.eb26832d.js b/frontend/dist/assets/basic.html.eb26832d.js deleted file mode 100644 index e3184f6b..00000000 --- a/frontend/dist/assets/basic.html.eb26832d.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,o as t,c as s,a as e,b as a}from"./app.547295de.js";const c={},r=e("h1",{id:"lora-\u8BAD\u7EC3-\u65B0\u624B\u6A21\u5F0F",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#lora-\u8BAD\u7EC3-\u65B0\u624B\u6A21\u5F0F","aria-hidden":"true"},"#"),a(" LoRA \u8BAD\u7EC3 \u65B0\u624B\u6A21\u5F0F")],-1),l=e("p",null,"\u9ED8\u8BA4\u8BBE\u7F6E\u4E3A\u4F60\u51C6\u5907\u597D\u4E86\u6240\u6709\u9700\u8981\u7684\u53C2\u6570\uFF0C\u53EA\u9700\u8981\u4F60\u4FEE\u6539\u5E95\u6A21\u8DEF\u5F84\u3001\u8BAD\u7EC3\u96C6\u8DEF\u5F84\u3001\u8BAD\u7EC3\u8F6E\u6570\u5373\u53EF\u4E00\u952E\u8BAD\u7EC3\u6A21\u578B\u3002",-1),n=e("p",null,[a("\u8BAD\u7EC3 SDXL \u6A21\u578B\u7684 LoRA \u8BF7\u524D\u5F80\u4E13\u5BB6\u6A21\u5F0F\uFF0C\u8BAD\u7EC3\u79CD\u7C7B\u9009\u62E9 "),e("code",null,"sdxl-lora")],-1),_=[r,l,n];function d(i,h){return t(),s("div",null,_)}var f=o(c,[["render",d],["__file","basic.html.vue"]]);export{f as default}; diff --git a/frontend/dist/assets/changelog-banner.webp b/frontend/dist/assets/changelog-banner.webp deleted file mode 100644 index d914e2f9..00000000 Binary files a/frontend/dist/assets/changelog-banner.webp and /dev/null differ diff --git a/frontend/dist/assets/changelog.html.a1b2c3d4.js b/frontend/dist/assets/changelog.html.a1b2c3d4.js deleted file mode 100644 index f5d6c78a..00000000 --- a/frontend/dist/assets/changelog.html.a1b2c3d4.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse("{\"key\": \"v-a1c9e4f2\", \"path\": \"/other/changelog.html\", \"title\": \"\u66f4\u65b0\u65e5\u5fd7\", \"lang\": \"en-US\", \"frontmatter\": {}, \"excerpt\": \"\", \"headers\": [], \"filePathRelative\": \"other/changelog.md\"}");export{t as data}; \ No newline at end of file diff --git a/frontend/dist/assets/changelog.html.e5f6a7b8.js b/frontend/dist/assets/changelog.html.e5f6a7b8.js deleted file mode 100644 index 669aefb4..00000000 --- a/frontend/dist/assets/changelog.html.e5f6a7b8.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,r as o,o as s,c,a as e,b as r,e as i}from"./app.547295de.js";const _={},h=i(`

    GitHub Repo starsGitHub forkslicenserelease

    版本记录

    v2.6.0

    • Anima 全量微调:侧栏「全量微调 → Anima Finetune」,路由 anima-finetuneanima_train.py
    • 训练监控正确显示 Anima Finetune(不再误标为 LoRA)
    • 文档与示例:docs/anima-backend.mddocs/examples/anima-full-finetune.toml
    • 显存参考:4090 实测专用显存约 23–24 GB(与 LoRA 的 12GB 档不同)

    v2.5.3

    • 便携包依赖健康检查、侧栏版本号(#54

    v2.5.0

    • UI 焕新:侧栏导航重构,训练 / 工具 / 帮助分区清晰
    • 首页传送门:卡片式入口快速跳转训练、监控、新手上路
    • 训练监控仪表盘:GPU 实时指标、总步数、训练参数速查
    • CSS 去重清理(~1660 行冗余代码)

    v2.4.0

    • 训练子进程环境隔离,NaN 过滤,采样保护,attn_mode 降级
    • 路径规范化;整合包 tkinter 修复

    v2.3.0

    • TensorBoard 同源 Loss 曲线;训练参数速查;日志同步到监控页
    • 整合包:跳过 triton-windows;run_gui 启动日志;跨盘监控修复

    v2.1.0

    • Flash Attention 2 预构建 Wheel(Windows 免编译)
    • 按步数保存;LoKr 显示修复;跨盘监控修复

    v2.0.0

    • Windows 便携包首发;Flash Attention 自动加速;AMD 提示;bf16 修复

    基于原版的改进

    • Anima 训练(LoRA / LoKr / T-LoRA)
    • 交互式 Loss 曲线;实时训练监控(端口 6008)
    • Anima 后端迁移至 kohya-ss/sd-scripts

    原版更新日志

    本项目 Fork 自 Akegarasu/lora-scripts,完整记录见仓库根目录 CHANGELOG.md

    `);function u(g,p){return s(),c("div",null,[e("h2",{id:"\u66F4\u65B0\u65E5\u5FD7",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u66F4\u65B0\u65E5\u5FD7","aria-hidden":"true"},"#"),r(" \u66F4\u65B0\u65E5\u5FD7")],-1),h])}var x=n(_,[["render",u],["__file","changelog.html.vue"]]);export{x as default}; \ No newline at end of file diff --git a/frontend/dist/assets/dataset-editor-entry.js b/frontend/dist/assets/dataset-editor-entry.js deleted file mode 100644 index 3a9c3e50..00000000 --- a/frontend/dist/assets/dataset-editor-entry.js +++ /dev/null @@ -1,281 +0,0 @@ -(function () { - const EDITOR_SCRIPT_ID = "sd-native-dataset-editor-script"; - - function editorMarkup() { - return ` -
    -
    - - - - - -
    -
    `; - } - - function mountEditor() { - if (document.getElementById("sd-native-editor-entry")) return true; - const content = document.querySelector(".theme-default-content"); - const theme = document.querySelector(".theme-container"); - const container = content || theme; - if (!container) return false; - - const entry = document.createElement("section"); - entry.id = "sd-native-editor-entry"; - entry.className = "sd-native-editor-entry sd-native-editor-entry--embedded"; - entry.innerHTML = editorMarkup(); - if (content) { - content.replaceChildren(entry); - return true; - } - - const stale = theme.querySelector(":scope > .sd-native-editor-entry"); - if (stale) stale.remove(); - theme.appendChild(entry); - return true; - } - - function loadEditorScript() { - if (document.getElementById(EDITOR_SCRIPT_ID)) return; - if ([...document.scripts].some((script) => script.src.includes("/assets/dataset-editor.js"))) return; - const configured = document.querySelector('meta[name="sd-dataset-editor-script"]')?.content; - const script = document.createElement("script"); - script.id = EDITOR_SCRIPT_ID; - script.src = configured || "/assets/dataset-editor.js?v=2.6.0"; - script.defer = true; - document.body.appendChild(script); - } - - function boot() { - const root = document.querySelector("#app"); - let mounted = false; - let stableTimer = 0; - let started = false; - - function scheduleMount() { - window.clearTimeout(stableTimer); - stableTimer = window.setTimeout(() => { - if (mounted && document.getElementById("sd-native-editor-entry")) return; - if (mountEditor()) { - mounted = true; - loadEditorScript(); - } - }, 120); - } - - const observer = root - ? new MutationObserver(scheduleMount) - : null; - - if (observer) { - observer.observe(root, { childList: true, subtree: true }); - } - - function startAfterShellSettles() { - if (started) return; - started = true; - window.setTimeout(scheduleMount, 500); - window.setTimeout(() => { - if (observer) observer.disconnect(); - }, 5000); - } - - if (document.readyState === "complete") { - startAfterShellSettles(); - } else { - window.addEventListener("load", startAfterShellSettles, { once: true }); - } - } - - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", boot); - } else { - boot(); - } -})(); diff --git a/frontend/dist/assets/flux.html.6fefc131.js b/frontend/dist/assets/flux.html.6fefc131.js deleted file mode 100644 index cd1ad3fe..00000000 --- a/frontend/dist/assets/flux.html.6fefc131.js +++ /dev/null @@ -1 +0,0 @@ -const e=JSON.parse('{"key":"v-fdbe4e28","path":"/lora/flux.html","title":"Flux LoRA \u8BAD\u7EC3 \u4E13\u5BB6\u6A21\u5F0F","lang":"en-US","frontmatter":{"example":true,"trainType":"flux-lora"},"excerpt":"","headers":[],"filePathRelative":"lora/flux.md"}');export{e as data}; diff --git a/frontend/dist/assets/flux.html.f22f5932.js b/frontend/dist/assets/flux.html.f22f5932.js deleted file mode 100644 index 0e7c1540..00000000 --- a/frontend/dist/assets/flux.html.f22f5932.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,o as t,c as a,a as e,b as l}from"./app.547295de.js";const r={},s=e("h1",{id:"flux-lora-\u8BAD\u7EC3-\u4E13\u5BB6\u6A21\u5F0F",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#flux-lora-\u8BAD\u7EC3-\u4E13\u5BB6\u6A21\u5F0F","aria-hidden":"true"},"#"),l(" Flux LoRA \u8BAD\u7EC3 \u4E13\u5BB6\u6A21\u5F0F")],-1),c=e("p",null,"Flux.1 \u6A21\u578B LoRA \u8BAD\u7EC3 \u4E13\u5BB6\u6A21\u5F0F",-1),_=e("p",null,"\u522B\u95EE\u4E3A\u4EC0\u4E48\u65B0\u624B\u6A21\u5F0F\u4E0D\u884C\uFF0C\u95EE\u5C31\u662F\u4F60\u90FD\u7528 FLUX \u4E86\u8FD8\u60F3\u5F53\u65B0\u624B\uFF1F",-1),n=[s,c,_];function d(u,i){return t(),a("div",null,n)}var h=o(r,[["render",d],["__file","flux.html.vue"]]);export{h as default}; diff --git a/frontend/dist/assets/guide-mascot.webp b/frontend/dist/assets/guide-mascot.webp deleted file mode 100644 index ac440284..00000000 Binary files a/frontend/dist/assets/guide-mascot.webp and /dev/null differ diff --git a/frontend/dist/assets/guide.html.b8e2d701.js b/frontend/dist/assets/guide.html.b8e2d701.js deleted file mode 100644 index 8278a808..00000000 --- a/frontend/dist/assets/guide.html.b8e2d701.js +++ /dev/null @@ -1 +0,0 @@ -const t=JSON.parse("{\"key\": \"v-b8e2d701\", \"path\": \"/help/guide.html\", \"title\": \"\u65b0\u624b\u4e0a\u8def\", \"lang\": \"en-US\", \"frontmatter\": {}, \"excerpt\": \"\", \"headers\": [], \"filePathRelative\": \"help/guide.md\"}");export{t as data}; \ No newline at end of file diff --git a/frontend/dist/assets/guide.html.c3f4a902.js b/frontend/dist/assets/guide.html.c3f4a902.js deleted file mode 100644 index 6029b138..00000000 --- a/frontend/dist/assets/guide.html.c3f4a902.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as n,o as s,c as a,e as i}from"./app.547295de.js";const _={},h=i(`

    新手上路

    1. 准备数据:训练图片 + 同名 .txt 标签;可用「工具与调试 → 数据集打标」。
    2. 选择训练类型(侧栏「训练」):
    3. 填写参数并开训:中栏表单 → 右栏「开始训练」。
    4. 查看进度训练监控Tensorboard

    从秋叶版迁移

    若你使用过 Akegarasu/lora-scripts(秋叶一键包),本版主要变化:

    • 品牌:项目名 lora-scripts-next / Next Trainer,侧栏按「训练 / 工具 / 帮助 / 其他」分组。
    • 导航:LoRA 与全量微调分栏;原「新手 / 专家」不再平铺(SD1.5 精简页:/lora/basic.html)。
    • Anima:LoRA 与 Finetune 分入口(Qwen + T5 + DiT)。
    • 监控:独立 训练监控页、Loss 曲线、/train-log 日志流。
    • 更多版本说明见 更新日志
    `);function u(){return s(),a("div",null,[h])}var x=n(_,[["render",u],["__file","guide.html.vue"]]);export{x as default}; \ No newline at end of file diff --git a/frontend/dist/assets/home-logo.webp b/frontend/dist/assets/home-logo.webp deleted file mode 100644 index 4ab65ad7..00000000 Binary files a/frontend/dist/assets/home-logo.webp and /dev/null differ diff --git a/frontend/dist/assets/icon.65fd68ba.webp b/frontend/dist/assets/icon.65fd68ba.webp deleted file mode 100644 index 75db34de..00000000 Binary files a/frontend/dist/assets/icon.65fd68ba.webp and /dev/null differ diff --git a/frontend/dist/assets/icon.png b/frontend/dist/assets/icon.png deleted file mode 100644 index e3ca6ef2..00000000 Binary files a/frontend/dist/assets/icon.png and /dev/null differ diff --git a/frontend/dist/assets/index-CUAupED9.js b/frontend/dist/assets/index-CUAupED9.js new file mode 100644 index 00000000..8d39d138 --- /dev/null +++ b/frontend/dist/assets/index-CUAupED9.js @@ -0,0 +1,214 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();/** +* @vue/shared v3.5.35 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function qn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const K={},yt=[],ce=()=>{},cr=()=>!1,an=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),on=e=>e.startsWith("onUpdate:"),Z=Object.assign,Kn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},_s=Object.prototype.hasOwnProperty,V=(e,t)=>_s.call(e,t),L=Array.isArray,vt=e=>It(e)==="[object Map]",bs=e=>It(e)==="[object Set]",ki=e=>It(e)==="[object Date]",F=e=>typeof e=="function",J=e=>typeof e=="string",qe=e=>typeof e=="symbol",B=e=>e!==null&&typeof e=="object",dr=e=>(B(e)||F(e))&&F(e.then)&&F(e.catch),ys=Object.prototype.toString,It=e=>ys.call(e),vs=e=>It(e).slice(8,-1),ks=e=>It(e)==="[object Object]",Bn=e=>J(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,kt=qn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ln=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ws=/-\w/g,de=ln(e=>e.replace(ws,t=>t.slice(1).toUpperCase())),xs=/\B([A-Z])/g,it=ln(e=>e.replace(xs,"-$1").toLowerCase()),ur=ln(e=>e.charAt(0).toUpperCase()+e.slice(1)),mn=ln(e=>e?`on${ur(e)}`:""),Te=(e,t)=>!Object.is(e,t),gn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:n})},Ss=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let wi;const et=()=>wi||(wi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function zn(e){if(L(e)){const t={};for(let n=0;n{if(n){const i=n.split(Os);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function Gn(e){let t="";if(J(e))t=e;else if(L(e))for(let n=0;n0&&--this._on===0){if(X===this)X=this.prevScope;else{let t=X;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,i;for(n=0,i=this.effects.length;n0)return;if(xt){let t=xt;for(xt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;wt;){let t=wt;for(wt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=n}}if(e)throw e}function gr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function _r(e){let t,n=e.depsTail,i=n;for(;i;){const r=i.prevDep;i.version===-1?(i===n&&(n=r),Xn(i),Ls(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=r}e.deps=t,e.depsTail=n}function En(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(br(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function br(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===At)||(e.globalVersion=At,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!En(e))))return;e.flags|=2;const t=e.dep,n=q,i=ue;q=e,ue=!0;try{gr(e);const r=e.fn(e._value);(t.version===0||Te(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{q=n,ue=i,_r(e),e.flags&=-3}}function Xn(e,t=!1){const{dep:n,prevSub:i,nextSub:r}=e;if(i&&(i.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=i,e.nextSub=void 0),n.subs===e&&(n.subs=i,!i&&n.computed)){n.computed.flags&=-5;for(let s=n.computed.deps;s;s=s.nextDep)Xn(s,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ls(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ue=!0;const yr=[];function De(){yr.push(ue),ue=!1}function Le(){const e=yr.pop();ue=e===void 0?!0:e}function xi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=q;q=void 0;try{t()}finally{q=n}}}let At=0;class Fs{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Zn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!q||!ue||q===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==q)n=this.activeLink=new Fs(q,this),q.deps?(n.prevDep=q.depsTail,q.depsTail.nextDep=n,q.depsTail=n):q.deps=q.depsTail=n,vr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const i=n.nextDep;i.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=i),n.prevDep=q.depsTail,n.nextDep=void 0,q.depsTail.nextDep=n,q.depsTail=n,q.deps===n&&(q.deps=i)}return n}trigger(t){this.version++,At++,this.notify(t)}notify(t){Yn();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Qn()}}}function vr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)vr(i)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cn=new WeakMap,tt=Symbol(""),Rn=Symbol(""),Pt=Symbol("");function ee(e,t,n){if(ue&&q){let i=Cn.get(e);i||Cn.set(e,i=new Map);let r=i.get(n);r||(i.set(n,r=new Zn),r.map=i,r.key=n),r.track()}}function Re(e,t,n,i,r,s){const o=Cn.get(e);if(!o){At++;return}const l=d=>{d&&d.trigger()};if(Yn(),t==="clear")o.forEach(l);else{const d=L(e),p=d&&Bn(n);if(d&&n==="length"){const f=Number(i);o.forEach((m,x)=>{(x==="length"||x===Pt||!qe(x)&&x>=f)&&l(m)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),p&&l(o.get(Pt)),t){case"add":d?p&&l(o.get("length")):(l(o.get(tt)),vt(e)&&l(o.get(Rn)));break;case"delete":d||(l(o.get(tt)),vt(e)&&l(o.get(Rn)));break;case"set":vt(e)&&l(o.get(tt));break}}Qn()}function rt(e){const t=j(e);return t===e?t:(ee(t,"iterate",Pt),fe(e)?t:t.map(Fe))}function ei(e){return ee(e=j(e),"iterate",Pt),e}function we(e,t){return Ke(e)?Et(at(e)?Fe(t):t):Fe(t)}const Ms={__proto__:null,[Symbol.iterator](){return bn(this,Symbol.iterator,e=>we(this,e))},concat(...e){return rt(this).concat(...e.map(t=>L(t)?rt(t):t))},entries(){return bn(this,"entries",e=>(e[1]=we(this,e[1]),e))},every(e,t){return Pe(this,"every",e,t,void 0,arguments)},filter(e,t){return Pe(this,"filter",e,t,n=>n.map(i=>we(this,i)),arguments)},find(e,t){return Pe(this,"find",e,t,n=>we(this,n),arguments)},findIndex(e,t){return Pe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Pe(this,"findLast",e,t,n=>we(this,n),arguments)},findLastIndex(e,t){return Pe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Pe(this,"forEach",e,t,void 0,arguments)},includes(...e){return yn(this,"includes",e)},indexOf(...e){return yn(this,"indexOf",e)},join(e){return rt(this).join(e)},lastIndexOf(...e){return yn(this,"lastIndexOf",e)},map(e,t){return Pe(this,"map",e,t,void 0,arguments)},pop(){return ht(this,"pop")},push(...e){return ht(this,"push",e)},reduce(e,...t){return Si(this,"reduce",e,t)},reduceRight(e,...t){return Si(this,"reduceRight",e,t)},shift(){return ht(this,"shift")},some(e,t){return Pe(this,"some",e,t,void 0,arguments)},splice(...e){return ht(this,"splice",e)},toReversed(){return rt(this).toReversed()},toSorted(e){return rt(this).toSorted(e)},toSpliced(...e){return rt(this).toSpliced(...e)},unshift(...e){return ht(this,"unshift",e)},values(){return bn(this,"values",e=>we(this,e))}};function bn(e,t,n){const i=ei(e),r=i[t]();return i!==e&&!fe(e)&&(r._next=r.next,r.next=()=>{const s=r._next();return s.done||(s.value=n(s.value)),s}),r}const Ns=Array.prototype;function Pe(e,t,n,i,r,s){const o=ei(e),l=o!==e&&!fe(e),d=o[t];if(d!==Ns[t]){const m=d.apply(e,s);return l?Fe(m):m}let p=n;o!==e&&(l?p=function(m,x){return n.call(this,we(e,m),x,e)}:n.length>2&&(p=function(m,x){return n.call(this,m,x,e)}));const f=d.call(o,p,i);return l&&r?r(f):f}function Si(e,t,n,i){const r=ei(e),s=r!==e&&!fe(e);let o=n,l=!1;r!==e&&(s?(l=i.length===0,o=function(p,f,m){return l&&(l=!1,p=we(e,p)),n.call(this,p,we(e,f),m,e)}):n.length>3&&(o=function(p,f,m){return n.call(this,p,f,m,e)}));const d=r[t](o,...i);return l?we(e,d):d}function yn(e,t,n){const i=j(e);ee(i,"iterate",Pt);const r=i[t](...n);return(r===-1||r===!1)&&ii(n[0])?(n[0]=j(n[0]),i[t](...n)):r}function ht(e,t,n=[]){De(),Yn();const i=j(e)[t].apply(e,n);return Qn(),Le(),i}const Us=qn("__proto__,__v_isRef,__isVue"),kr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(qe));function js(e){qe(e)||(e=String(e));const t=j(this);return ee(t,"has",e),t.hasOwnProperty(e)}class wr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,i){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,s=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return s;if(n==="__v_raw")return i===(r?s?Js:Or:s?Tr:Sr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const o=L(t);if(!r){let d;if(o&&(d=Ms[n]))return d;if(n==="hasOwnProperty")return js}const l=Reflect.get(t,n,te(t)?t:i);if((qe(n)?kr.has(n):Us(n))||(r||ee(t,"get",n),s))return l;if(te(l)){const d=o&&Bn(n)?l:l.value;return r&&B(d)?Dn(d):d}return B(l)?r?Dn(l):Ie(l):l}}class xr extends wr{constructor(t=!1){super(!1,t)}set(t,n,i,r){let s=t[n];const o=L(t)&&Bn(n);if(!this._isShallow){const p=Ke(s);if(!fe(i)&&!Ke(i)&&(s=j(s),i=j(i)),!o&&te(s)&&!te(i))return p||(s.value=i),!0}const l=o?Number(n)e,Wt=e=>Reflect.getPrototypeOf(e);function qs(e,t,n){return function(...i){const r=this.__v_raw,s=j(r),o=vt(s),l=e==="entries"||e===Symbol.iterator&&o,d=e==="keys"&&o,p=r[e](...i),f=n?In:t?Et:Fe;return!t&&ee(s,"iterate",d?Rn:tt),Z(Object.create(p),{next(){const{value:m,done:x}=p.next();return x?{value:m,done:x}:{value:l?[f(m[0]),f(m[1])]:f(m),done:x}}})}}function Ht(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ks(e,t){const n={get(r){const s=this.__v_raw,o=j(s),l=j(r);e||(Te(r,l)&&ee(o,"get",r),ee(o,"get",l));const{has:d}=Wt(o),p=t?In:e?Et:Fe;if(d.call(o,r))return p(s.get(r));if(d.call(o,l))return p(s.get(l));s!==o&&s.get(r)},get size(){const r=this.__v_raw;return!e&&ee(j(r),"iterate",tt),r.size},has(r){const s=this.__v_raw,o=j(s),l=j(r);return e||(Te(r,l)&&ee(o,"has",r),ee(o,"has",l)),r===l?s.has(r):s.has(r)||s.has(l)},forEach(r,s){const o=this,l=o.__v_raw,d=j(l),p=t?In:e?Et:Fe;return!e&&ee(d,"iterate",tt),l.forEach((f,m)=>r.call(s,p(f),p(m),o))}};return Z(n,e?{add:Ht("add"),set:Ht("set"),delete:Ht("delete"),clear:Ht("clear")}:{add(r){const s=j(this),o=Wt(s),l=j(r),d=!t&&!fe(r)&&!Ke(r)?l:r;return o.has.call(s,d)||Te(r,d)&&o.has.call(s,r)||Te(l,d)&&o.has.call(s,l)||(s.add(d),Re(s,"add",d,d)),this},set(r,s){!t&&!fe(s)&&!Ke(s)&&(s=j(s));const o=j(this),{has:l,get:d}=Wt(o);let p=l.call(o,r);p||(r=j(r),p=l.call(o,r));const f=d.call(o,r);return o.set(r,s),p?Te(s,f)&&Re(o,"set",r,s):Re(o,"add",r,s),this},delete(r){const s=j(this),{has:o,get:l}=Wt(s);let d=o.call(s,r);d||(r=j(r),d=o.call(s,r)),l&&l.call(s,r);const p=s.delete(r);return d&&Re(s,"delete",r,void 0),p},clear(){const r=j(this),s=r.size!==0,o=r.clear();return s&&Re(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=qs(r,e,t)}),n}function ti(e,t){const n=Ks(e,t);return(i,r,s)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?i:Reflect.get(V(n,r)&&r in i?n:i,r,s)}const Bs={get:ti(!1,!1)},zs={get:ti(!1,!0)},Gs={get:ti(!0,!1)};const Sr=new WeakMap,Tr=new WeakMap,Or=new WeakMap,Js=new WeakMap;function Ys(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ie(e){return Ke(e)?e:ni(e,!1,$s,Bs,Sr)}function Qs(e){return ni(e,!1,Hs,zs,Tr)}function Dn(e){return ni(e,!0,Ws,Gs,Or)}function ni(e,t,n,i,r){if(!B(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const s=r.get(e);if(s)return s;const o=Ys(vs(e));if(o===0)return e;const l=new Proxy(e,o===2?i:n);return r.set(e,l),l}function at(e){return Ke(e)?at(e.__v_raw):!!(e&&e.__v_isReactive)}function Ke(e){return!!(e&&e.__v_isReadonly)}function fe(e){return!!(e&&e.__v_isShallow)}function ii(e){return e?!!e.__v_raw:!1}function j(e){const t=e&&e.__v_raw;return t?j(t):e}function Xs(e){return!V(e,"__v_skip")&&Object.isExtensible(e)&&Jt(e,"__v_skip",!0),e}const Fe=e=>B(e)?Ie(e):e,Et=e=>B(e)?Dn(e):e;function te(e){return e?e.__v_isRef===!0:!1}function Ze(e){return Zs(e,!1)}function Zs(e,t){return te(e)?e:new ea(e,t)}class ea{constructor(t,n){this.dep=new Zn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:j(t),this._value=n?t:Fe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,i=this.__v_isShallow||fe(t)||Ke(t);t=i?t:j(t),Te(t,n)&&(this._rawValue=t,this._value=i?t:Fe(t),this.dep.trigger())}}function ta(e){return te(e)?e.value:e}const na={get:(e,t,n)=>t==="__v_raw"?e:ta(Reflect.get(e,t,n)),set:(e,t,n,i)=>{const r=e[t];return te(r)&&!te(n)?(r.value=n,!0):Reflect.set(e,t,n,i)}};function Ar(e){return at(e)?e:new Proxy(e,na)}class ia{constructor(t,n,i){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Zn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=At-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&q!==this)return mr(this,!0),!0}get value(){const t=this.dep.track();return br(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ra(e,t,n=!1){let i,r;return F(e)?i=e:(i=e.get,r=e.set),new ia(i,r,n)}const qt={},Yt=new WeakMap;let Qe;function sa(e,t=!1,n=Qe){if(n){let i=Yt.get(n);i||Yt.set(n,i=[]),i.push(e)}}function aa(e,t,n=K){const{immediate:i,deep:r,once:s,scheduler:o,augmentJob:l,call:d}=n,p=I=>r?I:fe(I)||r===!1||r===0?We(I,1):We(I);let f,m,x,S,E=!1,v=!1;if(te(e)?(m=()=>e.value,E=fe(e)):at(e)?(m=()=>p(e),E=!0):L(e)?(v=!0,E=e.some(I=>at(I)||fe(I)),m=()=>e.map(I=>{if(te(I))return I.value;if(at(I))return p(I);if(F(I))return d?d(I,2):I()})):F(e)?t?m=d?()=>d(e,2):e:m=()=>{if(x){De();try{x()}finally{Le()}}const I=Qe;Qe=f;try{return d?d(e,3,[S]):e(S)}finally{Qe=I}}:m=ce,t&&r){const I=m,Y=r===!0?1/0:r;m=()=>We(I(),Y)}const M=Ds(),D=()=>{f.stop(),M&&M.active&&Kn(M.effects,f)};if(s&&t){const I=t;t=(...Y)=>{I(...Y),D()}}let R=v?new Array(e.length).fill(qt):qt;const U=I=>{if(!(!(f.flags&1)||!f.dirty&&!I))if(t){const Y=f.run();if(r||E||(v?Y.some((Ne,me)=>Te(Ne,R[me])):Te(Y,R))){x&&x();const Ne=Qe;Qe=f;try{const me=[Y,R===qt?void 0:v&&R[0]===qt?[]:R,S];R=Y,d?d(t,3,me):t(...me)}finally{Qe=Ne}}}else f.run()};return l&&l(U),f=new pr(m),f.scheduler=o?()=>o(U,!1):U,S=I=>sa(I,!1,f),x=f.onStop=()=>{const I=Yt.get(f);if(I){if(d)d(I,4);else for(const Y of I)Y();Yt.delete(f)}},t?i?U(!0):R=f.run():o?o(U.bind(null,!0),!0):f.run(),D.pause=f.pause.bind(f),D.resume=f.resume.bind(f),D.stop=D,D}function We(e,t=1/0,n){if(t<=0||!B(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,te(e))We(e.value,t,n);else if(L(e))for(let i=0;i{We(i,t,n)});else if(ks(e)){for(const i in e)We(e[i],t,n);for(const i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&We(e[i],t,n)}return e}/** +* @vue/runtime-core v3.5.35 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Dt(e,t,n,i){try{return i?e(...i):e()}catch(r){cn(r,t,n)}}function pe(e,t,n,i){if(F(e)){const r=Dt(e,t,n,i);return r&&dr(r)&&r.catch(s=>{cn(s,t,n)}),r}if(L(e)){const r=[];for(let s=0;s>>1,r=re[i],s=Ct(r);s=Ct(n)?re.push(e):re.splice(ca(t),0,e),e.flags|=1,Er()}}function Er(){Qt||(Qt=Pr.then(Rr))}function da(e){L(e)?ot.push(...e):$e&&e.id===-1?$e.splice(st+1,0,e):e.flags&1||(ot.push(e),e.flags|=1),Er()}function Ti(e,t,n=ke+1){for(;nCt(n)-Ct(i));if(ot.length=0,$e){$e.push(...t);return}for($e=t,st=0;st<$e.length;st++){const n=$e[st];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}$e=null,st=0}}const Ct=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Rr(e){try{for(ke=0;keOe.emit(r,...s)),gt=[]):typeof window<"u"&&window.HTMLElement&&!((i=(n=window.navigator)==null?void 0:n.userAgent)!=null&&i.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(s=>{Ir(s,t)}),setTimeout(()=>{Oe||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Ln=!0,gt=[])},3e3)):(Ln=!0,gt=[])}function ua(e,t){dn("app:init",e,t,{Fragment:xe,Text:Ft,Comment:nt,Static:zt})}function fa(e){dn("app:unmount",e)}const pa=si("component:added"),Dr=si("component:updated"),ha=si("component:removed"),ma=e=>{Oe&&typeof Oe.cleanupBuffer=="function"&&!Oe.cleanupBuffer(e)&&ha(e)};function si(e){return t=>{dn(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}function ga(e,t,n){dn("component:emit",e.appContext.app,e,t,n)}let Ae=null,Lr=null;function Xt(e){const t=Ae;return Ae=e,Lr=e&&e.type.__scopeId||null,t}function _a(e,t=Ae,n){if(!t||e._n)return e;const i=(...r)=>{i._d&&tn(-1);const s=Xt(t);let o;try{o=e(...r)}finally{Xt(s),i._d&&tn(1)}return __VUE_PROD_DEVTOOLS__&&Dr(t),o};return i._n=!0,i._c=!0,i._d=!0,i}function Je(e,t,n,i){const r=e.dirs,s=t&&t.dirs;for(let o=0;o1)return n&&F(t)?t.call(i&&i.proxy):t}}const ya=Symbol.for("v-scx"),va=()=>Bt(ya);function vn(e,t,n){return Fr(e,t,n)}function Fr(e,t,n=K){const{immediate:i,deep:r,flush:s,once:o}=n,l=Z({},n),d=t&&i||!t&&s!=="post";let p;if(Rt){if(s==="sync"){const S=va();p=S.__watcherHandles||(S.__watcherHandles=[])}else if(!d){const S=()=>{};return S.stop=ce,S.resume=ce,S.pause=ce,S}}const f=se;l.call=(S,E,v)=>pe(S,f,E,v);let m=!1;s==="post"?l.scheduler=S=>{ae(S,f&&f.suspense)}:s!=="sync"&&(m=!0,l.scheduler=(S,E)=>{E?S():ri(S)}),l.augmentJob=S=>{t&&(S.flags|=4),m&&(S.flags|=2,f&&(S.id=f.uid,S.i=f))};const x=aa(e,t,l);return Rt&&(p?p.push(x):d&&x()),x}function ka(e,t,n){const i=this.proxy,r=J(e)?e.includes(".")?Mr(i,e):()=>i[e]:e.bind(i,i);let s;F(t)?s=t:(s=t.handler,n=t);const o=Mt(this),l=Fr(r,s.bind(i),n);return o(),l}function Mr(e,t){const n=t.split(".");return()=>{let i=e;for(let r=0;re.__isTeleport,kn=Symbol("_leaveCb");function ai(e,t){e.shapeFlag&6&&e.component?(e.transition=t,ai(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function he(e,t){return F(e)?Z({name:e.name},t,{setup:e}):e}function Nr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Oi(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const Zt=new WeakMap;function St(e,t,n,i,r=!1){if(L(e)){e.forEach((v,M)=>St(v,t&&(L(t)?t[M]:t),n,i,r));return}if(Tt(i)&&!r){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&St(e,t,n,i.component.subTree);return}const s=i.shapeFlag&4?fi(i.component):i.el,o=r?null:s,{i:l,r:d}=e,p=t&&t.r,f=l.refs===K?l.refs={}:l.refs,m=l.setupState,x=j(m),S=m===K?cr:v=>Oi(f,v)?!1:V(x,v),E=(v,M)=>!(M&&Oi(f,M));if(p!=null&&p!==d){if(Ai(t),J(p))f[p]=null,S(p)&&(m[p]=null);else if(te(p)){const v=t;E(p,v.k)&&(p.value=null),v.k&&(f[v.k]=null)}}if(F(d))Dt(d,l,12,[o,f]);else{const v=J(d),M=te(d);if(v||M){const D=()=>{if(e.f){const R=v?S(d)?m[d]:f[d]:E()||!e.k?d.value:f[e.k];if(r)L(R)&&Kn(R,s);else if(L(R))R.includes(s)||R.push(s);else if(v)f[d]=[s],S(d)&&(m[d]=f[d]);else{const U=[s];E(d,e.k)&&(d.value=U),e.k&&(f[e.k]=U)}}else v?(f[d]=o,S(d)&&(m[d]=o)):M&&(E(d,e.k)&&(d.value=o),e.k&&(f[e.k]=o))};if(o){const R=()=>{D(),Zt.delete(e)};R.id=-1,Zt.set(e,R),ae(R,n)}else Ai(e),D()}}}function Ai(e){const t=Zt.get(e);t&&(t.flags|=8,Zt.delete(e))}et().requestIdleCallback;et().cancelIdleCallback;const Tt=e=>!!e.type.__asyncLoader,Ur=e=>e.type.__isKeepAlive;function Sa(e,t){jr(e,"a",t)}function Ta(e,t){jr(e,"da",t)}function jr(e,t,n=se){const i=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(un(t,i,n),n){let r=n.parent;for(;r&&r.parent;)Ur(r.parent.vnode)&&Oa(i,t,n,r),r=r.parent}}function Oa(e,t,n,i){const r=un(t,e,i,!0);oi(()=>{Kn(i[t],r)},n)}function un(e,t,n=se,i=!1){if(n){const r=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{De();const l=Mt(n),d=pe(t,n,e,o);return l(),Le(),d});return i?r.unshift(s):r.push(s),s}}const Me=e=>(t,n=se)=>{(!Rt||e==="sp")&&un(e,(...i)=>t(...i),n)},Aa=Me("bm"),Lt=Me("m"),Pa=Me("bu"),Ea=Me("u"),Vr=Me("bum"),oi=Me("um"),Ca=Me("sp"),Ra=Me("rtg"),Ia=Me("rtc");function Da(e,t=se){un("ec",e,t)}const La=Symbol.for("v-ndc"),Fn=e=>e?ss(e)?fi(e):Fn(e.parent):null,Ot=Z(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Fn(e.parent),$root:e=>Fn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>__VUE_OPTIONS_API__?Wr(e):e.type,$forceUpdate:e=>e.f||(e.f=()=>{ri(e.update)}),$nextTick:e=>e.n||(e.n=la.bind(e.proxy)),$watch:e=>__VUE_OPTIONS_API__?ka.bind(e):ce}),wn=(e,t)=>e!==K&&!e.__isScriptSetup&&V(e,t),Fa={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:i,data:r,props:s,accessCache:o,type:l,appContext:d}=e;if(t[0]!=="$"){const x=o[t];if(x!==void 0)switch(x){case 1:return i[t];case 2:return r[t];case 4:return n[t];case 3:return s[t]}else{if(wn(i,t))return o[t]=1,i[t];if(__VUE_OPTIONS_API__&&r!==K&&V(r,t))return o[t]=2,r[t];if(V(s,t))return o[t]=3,s[t];if(n!==K&&V(n,t))return o[t]=4,n[t];(!__VUE_OPTIONS_API__||Mn)&&(o[t]=0)}}const p=Ot[t];let f,m;if(p)return t==="$attrs"&&ee(e.attrs,"get",""),p(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==K&&V(n,t))return o[t]=4,n[t];if(m=d.config.globalProperties,V(m,t))return m[t]},set({_:e},t,n){const{data:i,setupState:r,ctx:s}=e;return wn(r,t)?(r[t]=n,!0):__VUE_OPTIONS_API__&&i!==K&&V(i,t)?(i[t]=n,!0):V(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:r,props:s,type:o}},l){let d;return!!(n[l]||__VUE_OPTIONS_API__&&e!==K&&l[0]!=="$"&&V(e,l)||wn(t,l)||V(s,l)||V(i,l)||V(Ot,l)||V(r.config.globalProperties,l)||(d=o.__cssModules)&&d[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:V(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Pi(e){return L(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Mn=!0;function Ma(e){const t=Wr(e),n=e.proxy,i=e.ctx;Mn=!1,t.beforeCreate&&Ei(t.beforeCreate,e,"bc");const{data:r,computed:s,methods:o,watch:l,provide:d,inject:p,created:f,beforeMount:m,mounted:x,beforeUpdate:S,updated:E,activated:v,deactivated:M,beforeDestroy:D,beforeUnmount:R,destroyed:U,unmounted:I,render:Y,renderTracked:Ne,renderTriggered:me,errorCaptured:Ue,serverPrefetch:Nt,expose:Be,inheritAttrs:dt,components:Ut,directives:jt,filters:pn}=t;if(p&&Na(p,i,null),o)for(const z in o){const H=o[z];F(H)&&(i[z]=H.bind(n))}if(r){const z=r.call(n,n);B(z)&&(e.data=Ie(z))}if(Mn=!0,s)for(const z in s){const H=s[z],ze=F(H)?H.bind(n,n):F(H.get)?H.get.bind(n,n):ce,Vt=!F(H)&&F(H.set)?H.set.bind(n):ce,Ge=xo({get:ze,set:Vt});Object.defineProperty(i,z,{enumerable:!0,configurable:!0,get:()=>Ge.value,set:ge=>Ge.value=ge})}if(l)for(const z in l)$r(l[z],i,n,z);if(d){const z=F(d)?d.call(n):d;Reflect.ownKeys(z).forEach(H=>{ba(H,z[H])})}f&&Ei(f,e,"c");function ne(z,H){L(H)?H.forEach(ze=>z(ze.bind(n))):H&&z(H.bind(n))}if(ne(Aa,m),ne(Lt,x),ne(Pa,S),ne(Ea,E),ne(Sa,v),ne(Ta,M),ne(Da,Ue),ne(Ia,Ne),ne(Ra,me),ne(Vr,R),ne(oi,I),ne(Ca,Nt),L(Be))if(Be.length){const z=e.exposed||(e.exposed={});Be.forEach(H=>{Object.defineProperty(z,H,{get:()=>n[H],set:ze=>n[H]=ze,enumerable:!0})})}else e.exposed||(e.exposed={});Y&&e.render===ce&&(e.render=Y),dt!=null&&(e.inheritAttrs=dt),Ut&&(e.components=Ut),jt&&(e.directives=jt),Nt&&Nr(e)}function Na(e,t,n=ce){L(e)&&(e=Nn(e));for(const i in e){const r=e[i];let s;B(r)?"default"in r?s=Bt(r.from||i,r.default,!0):s=Bt(r.from||i):s=Bt(r),te(s)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>s.value,set:o=>s.value=o}):t[i]=s}}function Ei(e,t,n){pe(L(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,n)}function $r(e,t,n,i){let r=i.includes(".")?Mr(n,i):()=>n[i];if(J(e)){const s=t[e];F(s)&&vn(r,s)}else if(F(e))vn(r,e.bind(n));else if(B(e))if(L(e))e.forEach(s=>$r(s,t,n,i));else{const s=F(e.handler)?e.handler.bind(n):t[e.handler];F(s)&&vn(r,s,e)}}function Wr(e){const t=e.type,{mixins:n,extends:i}=t,{mixins:r,optionsCache:s,config:{optionMergeStrategies:o}}=e.appContext,l=s.get(t);let d;return l?d=l:!r.length&&!n&&!i?d=t:(d={},r.length&&r.forEach(p=>en(d,p,o,!0)),en(d,t,o)),B(t)&&s.set(t,d),d}function en(e,t,n,i=!1){const{mixins:r,extends:s}=t;s&&en(e,s,n,!0),r&&r.forEach(o=>en(e,o,n,!0));for(const o in t)if(!(i&&o==="expose")){const l=Ua[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Ua={data:Ci,props:Ri,emits:Ri,methods:_t,computed:_t,beforeCreate:ie,created:ie,beforeMount:ie,mounted:ie,beforeUpdate:ie,updated:ie,beforeDestroy:ie,beforeUnmount:ie,destroyed:ie,unmounted:ie,activated:ie,deactivated:ie,errorCaptured:ie,serverPrefetch:ie,components:_t,directives:_t,watch:Va,provide:Ci,inject:ja};function Ci(e,t){return t?e?function(){return Z(F(e)?e.call(this,this):e,F(t)?t.call(this,this):t)}:t:e}function ja(e,t){return _t(Nn(e),Nn(t))}function Nn(e){if(L(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${de(t)}Modifiers`]||e[`${it(t)}Modifiers`];function qa(e,t,...n){if(e.isUnmounted)return;const i=e.vnode.props||K;let r=n;const s=t.startsWith("update:"),o=s&&Ha(i,t.slice(7));o&&(o.trim&&(r=n.map(f=>J(f)?f.trim():f)),o.number&&(r=n.map(Ss))),__VUE_PROD_DEVTOOLS__&&ga(e,t,r);let l,d=i[l=mn(t)]||i[l=mn(de(t))];!d&&s&&(d=i[l=mn(it(t))]),d&&pe(d,e,6,r);const p=i[l+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,pe(p,e,6,r)}}const Ka=new WeakMap;function qr(e,t,n=!1){const i=__VUE_OPTIONS_API__&&n?Ka:t.emitsCache,r=i.get(e);if(r!==void 0)return r;const s=e.emits;let o={},l=!1;if(__VUE_OPTIONS_API__&&!F(e)){const d=p=>{const f=qr(p,t,!0);f&&(l=!0,Z(o,f))};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!s&&!l?(B(e)&&i.set(e,null),null):(L(s)?s.forEach(d=>o[d]=null):Z(o,s),B(e)&&i.set(e,o),o)}function fn(e,t){return!e||!an(t)?!1:(t=t.slice(2).replace(/Once$/,""),V(e,t[0].toLowerCase()+t.slice(1))||V(e,it(t))||V(e,t))}function Ii(e){const{type:t,vnode:n,proxy:i,withProxy:r,propsOptions:[s],slots:o,attrs:l,emit:d,render:p,renderCache:f,props:m,data:x,setupState:S,ctx:E,inheritAttrs:v}=e,M=Xt(e);let D,R;try{if(n.shapeFlag&4){const I=r||i,Y=I;D=Se(p.call(Y,I,f,m,S,x,E)),R=l}else{const I=t;D=Se(I.length>1?I(m,{attrs:l,slots:o,emit:d}):I(m,null)),R=t.props?l:Ba(l)}}catch(I){cn(I,e,1),D=le(nt)}let U=D;if(R&&v!==!1){const I=Object.keys(R),{shapeFlag:Y}=U;I.length&&Y&7&&(s&&I.some(on)&&(R=za(R,s)),U=ct(U,R,!1,!0))}return n.dirs&&(U=ct(U,null,!1,!0),U.dirs=U.dirs?U.dirs.concat(n.dirs):n.dirs),n.transition&&ai(U,n.transition),D=U,Xt(M),D}const Ba=e=>{let t;for(const n in e)(n==="class"||n==="style"||an(n))&&((t||(t={}))[n]=e[n]);return t},za=(e,t)=>{const n={};for(const i in e)(!on(i)||!(i.slice(9)in t))&&(n[i]=e[i]);return n};function Ga(e,t,n){const{props:i,children:r,component:s}=e,{props:o,children:l,patchFlag:d}=t,p=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&d>=0){if(d&1024)return!0;if(d&16)return i?Di(i,o,p):!!o;if(d&8){const f=t.dynamicProps;for(let m=0;mObject.create(Br),Gr=e=>Object.getPrototypeOf(e)===Br;function Ya(e,t,n,i=!1){const r={},s=zr();e.propsDefaults=Object.create(null),Jr(e,t,r,s);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=i?r:Qs(r):e.type.props?e.props=r:e.props=s,e.attrs=s}function Qa(e,t,n,i){const{props:r,attrs:s,vnode:{patchFlag:o}}=e,l=j(r),[d]=e.propsOptions;let p=!1;if((i||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let m=0;m{d=!0;const[x,S]=Yr(m,t,!0);Z(o,x),S&&l.push(...S)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!s&&!d)return B(e)&&i.set(e,yt),yt;if(L(s))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",ci=e=>L(e)?e.map(Se):[Se(e)],Za=(e,t,n)=>{if(t._n)return t;const i=_a((...r)=>ci(t(...r)),n);return i._c=!1,i},Qr=(e,t,n)=>{const i=e._ctx;for(const r in e){if(li(r))continue;const s=e[r];if(F(s))t[r]=Za(r,s,i);else if(s!=null){const o=ci(s);t[r]=()=>o}}},Xr=(e,t)=>{const n=ci(t);e.slots.default=()=>n},Zr=(e,t,n)=>{for(const i in t)(n||!li(i))&&(e[i]=t[i])},eo=(e,t,n)=>{const i=e.slots=zr();if(e.vnode.shapeFlag&32){const r=t._;r?(Zr(i,t,n),n&&Jt(i,"_",r,!0)):Qr(t,i)}else t&&Xr(e,t)},to=(e,t,n)=>{const{vnode:i,slots:r}=e;let s=!0,o=K;if(i.shapeFlag&32){const l=t._;l?n&&l===1?s=!1:Zr(r,t,n):(s=!t.$stable,Qr(t,r)),o=t}else t&&(Xr(e,t),o={default:1});if(s)for(const l in r)!li(l)&&o[l]==null&&delete r[l]};function no(){typeof __VUE_OPTIONS_API__!="boolean"&&(et().__VUE_OPTIONS_API__=!0),typeof __VUE_PROD_DEVTOOLS__!="boolean"&&(et().__VUE_PROD_DEVTOOLS__=!1),typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__!="boolean"&&(et().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=!1)}const ae=oo;function io(e){return ro(e)}function ro(e,t){no();const n=et();n.__VUE__=!0,__VUE_PROD_DEVTOOLS__&&Ir(n.__VUE_DEVTOOLS_GLOBAL_HOOK__,n);const{insert:i,remove:r,patchProp:s,createElement:o,createText:l,createComment:d,setText:p,setElementText:f,parentNode:m,nextSibling:x,setScopeId:S=ce,insertStaticContent:E}=e,v=(c,u,h,y=null,_=null,g=null,T=void 0,w=null,k=!!u.dynamicChildren)=>{if(c===u)return;c&&!mt(c,u)&&(y=$t(c),ge(c,_,g,!0),c=null),u.patchFlag===-2&&(k=!1,u.dynamicChildren=null);const{type:b,ref:P,shapeFlag:O}=u;switch(b){case Ft:M(c,u,h,y);break;case nt:D(c,u,h,y);break;case zt:c==null&&R(u,h,y,T);break;case xe:Ut(c,u,h,y,_,g,T,w,k);break;default:O&1?Y(c,u,h,y,_,g,T,w,k):O&6?jt(c,u,h,y,_,g,T,w,k):(O&64||O&128)&&b.process(c,u,h,y,_,g,T,w,k,ft)}P!=null&&_?St(P,c&&c.ref,g,u||c,!u):P==null&&c&&c.ref!=null&&St(c.ref,null,g,c,!0)},M=(c,u,h,y)=>{if(c==null)i(u.el=l(u.children),h,y);else{const _=u.el=c.el;u.children!==c.children&&p(_,u.children)}},D=(c,u,h,y)=>{c==null?i(u.el=d(u.children||""),h,y):u.el=c.el},R=(c,u,h,y)=>{[c.el,c.anchor]=E(c.children,u,h,y,c.el,c.anchor)},U=({el:c,anchor:u},h,y)=>{let _;for(;c&&c!==u;)_=x(c),i(c,h,y),c=_;i(u,h,y)},I=({el:c,anchor:u})=>{let h;for(;c&&c!==u;)h=x(c),r(c),c=h;r(u)},Y=(c,u,h,y,_,g,T,w,k)=>{if(u.type==="svg"?T="svg":u.type==="math"&&(T="mathml"),c==null)Ne(u,h,y,_,g,T,w,k);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Nt(c,u,_,g,T,w,k)}finally{b&&b._endPatch()}}},Ne=(c,u,h,y,_,g,T,w)=>{let k,b;const{props:P,shapeFlag:O,transition:A,dirs:C}=c;if(k=c.el=o(c.type,g,P&&P.is,P),O&8?f(k,c.children):O&16&&Ue(c.children,k,null,y,_,xn(c,g),T,w),C&&Je(c,null,y,"created"),me(k,c,c.scopeId,T,y),P){for(const W in P)W!=="value"&&!kt(W)&&s(k,W,null,P[W],g,y);"value"in P&&s(k,"value",null,P.value,g),(b=P.onVnodeBeforeMount)&&ve(b,y,c)}__VUE_PROD_DEVTOOLS__&&(Jt(k,"__vnode",c,!0),Jt(k,"__vueParentComponent",y,!0)),C&&Je(c,null,y,"beforeMount");const N=so(_,A);N&&A.beforeEnter(k),i(k,u,h),((b=P&&P.onVnodeMounted)||N||C)&&ae(()=>{try{b&&ve(b,y,c),N&&A.enter(k),C&&Je(c,null,y,"mounted")}finally{}},_)},me=(c,u,h,y,_)=>{if(h&&S(c,h),y)for(let g=0;g{for(let b=k;b{const w=u.el=c.el;__VUE_PROD_DEVTOOLS__&&(w.__vnode=u);let{patchFlag:k,dynamicChildren:b,dirs:P}=u;k|=c.patchFlag&16;const O=c.props||K,A=u.props||K;let C;if(h&&Ye(h,!1),(C=A.onVnodeBeforeUpdate)&&ve(C,h,u,c),P&&Je(u,c,h,"beforeUpdate"),h&&Ye(h,!0),(O.innerHTML&&A.innerHTML==null||O.textContent&&A.textContent==null)&&f(w,""),b?Be(c.dynamicChildren,b,w,h,y,xn(u,_),g):T||H(c,u,w,null,h,y,xn(u,_),g,!1),k>0){if(k&16)dt(w,O,A,h,_);else if(k&2&&O.class!==A.class&&s(w,"class",null,A.class,_),k&4&&s(w,"style",O.style,A.style,_),k&8){const N=u.dynamicProps;for(let W=0;W{C&&ve(C,h,u,c),P&&Je(u,c,h,"updated")},y)},Be=(c,u,h,y,_,g,T)=>{for(let w=0;w{if(u!==h){if(u!==K)for(const g in u)!kt(g)&&!(g in h)&&s(c,g,u[g],null,_,y);for(const g in h){if(kt(g))continue;const T=h[g],w=u[g];T!==w&&g!=="value"&&s(c,g,w,T,_,y)}"value"in h&&s(c,"value",u.value,h.value,_)}},Ut=(c,u,h,y,_,g,T,w,k)=>{const b=u.el=c?c.el:l(""),P=u.anchor=c?c.anchor:l("");let{patchFlag:O,dynamicChildren:A,slotScopeIds:C}=u;C&&(w=w?w.concat(C):C),c==null?(i(b,h,y),i(P,h,y),Ue(u.children||[],h,P,_,g,T,w,k)):O>0&&O&64&&A&&c.dynamicChildren&&c.dynamicChildren.length===A.length?(Be(c.dynamicChildren,A,h,_,g,T,w),(u.key!=null||_&&u===_.subTree)&&es(c,u,!0)):H(c,u,h,P,_,g,T,w,k)},jt=(c,u,h,y,_,g,T,w,k)=>{u.slotScopeIds=w,c==null?u.shapeFlag&512?_.ctx.activate(u,h,y,T,k):pn(u,h,y,_,g,T,k):mi(c,u,k)},pn=(c,u,h,y,_,g,T)=>{const w=c.component=go(c,y,_);if(Ur(c)&&(w.ctx.renderer=ft),bo(w,!1,T),w.asyncDep){if(_&&_.registerDep(w,ne,T),!c.el){const k=w.subTree=le(nt);D(null,k,u,h),c.placeholder=k.el}}else ne(w,c,u,h,_,g,T)},mi=(c,u,h)=>{const y=u.component=c.component;if(Ga(c,u,h))if(y.asyncDep&&!y.asyncResolved){z(y,u,h);return}else y.next=u,y.update();else u.el=c.el,y.vnode=u},ne=(c,u,h,y,_,g,T)=>{const w=()=>{if(c.isMounted){let{next:O,bu:A,u:C,parent:N,vnode:W}=c;{const be=ts(c);if(be){O&&(O.el=W.el,z(c,O,T)),be.asyncDep.then(()=>{ae(()=>{c.isUnmounted||b()},_)});return}}let $=O,G;Ye(c,!1),O?(O.el=W.el,z(c,O,T)):O=W,A&&gn(A),(G=O.props&&O.props.onVnodeBeforeUpdate)&&ve(G,N,O,W),Ye(c,!0);const Q=Ii(c),_e=c.subTree;c.subTree=Q,v(_e,Q,m(_e.el),$t(_e),c,_,g),O.el=Q.el,$===null&&Ja(c,Q.el),C&&ae(C,_),(G=O.props&&O.props.onVnodeUpdated)&&ae(()=>ve(G,N,O,W),_),__VUE_PROD_DEVTOOLS__&&Dr(c)}else{let O;const{el:A,props:C}=u,{bm:N,m:W,parent:$,root:G,type:Q}=c,_e=Tt(u);Ye(c,!1),N&&gn(N),!_e&&(O=C&&C.onVnodeBeforeMount)&&ve(O,$,u),Ye(c,!0);{G.ce&&G.ce._hasShadowRoot()&&G.ce._injectChildStyle(Q,c.parent?c.parent.type:void 0);const be=c.subTree=Ii(c);v(null,be,h,y,c,_,g),u.el=be.el}if(W&&ae(W,_),!_e&&(O=C&&C.onVnodeMounted)){const be=u;ae(()=>ve(O,$,be),_)}(u.shapeFlag&256||$&&Tt($.vnode)&&$.vnode.shapeFlag&256)&&c.a&&ae(c.a,_),c.isMounted=!0,__VUE_PROD_DEVTOOLS__&&pa(c),u=h=y=null}};c.scope.on();const k=c.effect=new pr(w);c.scope.off();const b=c.update=k.run.bind(k),P=c.job=k.runIfDirty.bind(k);P.i=c,P.id=c.uid,k.scheduler=()=>ri(P),Ye(c,!0),b()},z=(c,u,h)=>{u.component=c;const y=c.vnode.props;c.vnode=u,c.next=null,Qa(c,u.props,y,h),to(c,u.children,h),De(),Ti(c),Le()},H=(c,u,h,y,_,g,T,w,k=!1)=>{const b=c&&c.children,P=c?c.shapeFlag:0,O=u.children,{patchFlag:A,shapeFlag:C}=u;if(A>0){if(A&128){Vt(b,O,h,y,_,g,T,w,k);return}else if(A&256){ze(b,O,h,y,_,g,T,w,k);return}}C&8?(P&16&&ut(b,_,g),O!==b&&f(h,O)):P&16?C&16?Vt(b,O,h,y,_,g,T,w,k):ut(b,_,g,!0):(P&8&&f(h,""),C&16&&Ue(O,h,y,_,g,T,w,k))},ze=(c,u,h,y,_,g,T,w,k)=>{c=c||yt,u=u||yt;const b=c.length,P=u.length,O=Math.min(b,P);let A;for(A=0;AP?ut(c,_,g,!0,!1,O):Ue(u,h,y,_,g,T,w,k,O)},Vt=(c,u,h,y,_,g,T,w,k)=>{let b=0;const P=u.length;let O=c.length-1,A=P-1;for(;b<=O&&b<=A;){const C=c[b],N=u[b]=k?Ce(u[b]):Se(u[b]);if(mt(C,N))v(C,N,h,null,_,g,T,w,k);else break;b++}for(;b<=O&&b<=A;){const C=c[O],N=u[A]=k?Ce(u[A]):Se(u[A]);if(mt(C,N))v(C,N,h,null,_,g,T,w,k);else break;O--,A--}if(b>O){if(b<=A){const C=A+1,N=CA)for(;b<=O;)ge(c[b],_,g,!0),b++;else{const C=b,N=b,W=new Map;for(b=N;b<=A;b++){const oe=u[b]=k?Ce(u[b]):Se(u[b]);oe.key!=null&&W.set(oe.key,b)}let $,G=0;const Q=A-N+1;let _e=!1,be=0;const pt=new Array(Q);for(b=0;b=Q){ge(oe,_,g,!0);continue}let ye;if(oe.key!=null)ye=W.get(oe.key);else for($=N;$<=A;$++)if(pt[$-N]===0&&mt(oe,u[$])){ye=$;break}ye===void 0?ge(oe,_,g,!0):(pt[ye-N]=b+1,ye>=be?be=ye:_e=!0,v(oe,u[ye],h,null,_,g,T,w,k),G++)}const bi=_e?ao(pt):yt;for($=bi.length-1,b=Q-1;b>=0;b--){const oe=N+b,ye=u[oe],yi=u[oe+1],vi=oe+1{const{el:g,type:T,transition:w,children:k,shapeFlag:b}=c;if(b&6){Ge(c.component.subTree,u,h,y);return}if(b&128){c.suspense.move(u,h,y);return}if(b&64){T.move(c,u,h,ft);return}if(T===xe){i(g,u,h);for(let O=0;Ow.enter(g),_));else{const{leave:O,delayLeave:A,afterLeave:C}=w,N=()=>{c.ctx.isUnmounted?r(g):i(g,u,h)},W=()=>{const $=g._isLeaving||!!g[kn];g._isLeaving&&g[kn](!0),w.persisted&&!$?N():O(g,()=>{N(),C&&C()})};A?A(g,N,W):W()}else i(g,u,h)},ge=(c,u,h,y=!1,_=!1)=>{const{type:g,props:T,ref:w,children:k,dynamicChildren:b,shapeFlag:P,patchFlag:O,dirs:A,cacheIndex:C,memo:N}=c;if(O===-2&&(_=!1),w!=null&&(De(),St(w,null,h,c,!0),Le()),C!=null&&(u.renderCache[C]=void 0),P&256){u.ctx.deactivate(c);return}const W=P&1&&A,$=!Tt(c);let G;if($&&(G=T&&T.onVnodeBeforeUnmount)&&ve(G,u,c),P&6)gs(c.component,h,y);else{if(P&128){c.suspense.unmount(h,y);return}W&&Je(c,null,u,"beforeUnmount"),P&64?c.type.remove(c,u,h,ft,y):b&&!b.hasOnce&&(g!==xe||O>0&&O&64)?ut(b,u,h,!1,!0):(g===xe&&O&384||!_&&P&16)&&ut(k,u,h),y&&gi(c)}const Q=N!=null&&C==null;($&&(G=T&&T.onVnodeUnmounted)||W||Q)&&ae(()=>{G&&ve(G,u,c),W&&Je(c,null,u,"unmounted"),Q&&(c.el=null)},h)},gi=c=>{const{type:u,el:h,anchor:y,transition:_}=c;if(u===xe){ms(h,y);return}if(u===zt){I(c);return}const g=()=>{r(h),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(c.shapeFlag&1&&_&&!_.persisted){const{leave:T,delayLeave:w}=_,k=()=>T(h,g);w?w(c.el,g,k):k()}else g()},ms=(c,u)=>{let h;for(;c!==u;)h=x(c),r(c),c=h;r(u)},gs=(c,u,h)=>{const{bum:y,scope:_,job:g,subTree:T,um:w,m:k,a:b}=c;Fi(k),Fi(b),y&&gn(y),_.stop(),g&&(g.flags|=8,ge(T,c,u,h)),w&&ae(w,u),ae(()=>{c.isUnmounted=!0},u),__VUE_PROD_DEVTOOLS__&&ma(c)},ut=(c,u,h,y=!1,_=!1,g=0)=>{for(let T=g;T{if(c.shapeFlag&6)return $t(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const u=x(c.anchor||c.el),h=u&&u[wa];return h?x(h):u};let hn=!1;const _i=(c,u,h)=>{let y;c==null?u._vnode&&(ge(u._vnode,null,null,!0),y=u._vnode.component):v(u._vnode||null,c,u,null,null,null,h),u._vnode=c,hn||(hn=!0,Ti(y),Cr(),hn=!1)},ft={p:v,um:ge,m:Ge,r:gi,mt:pn,mc:Ue,pc:H,pbc:Be,n:$t,o:e};return{render:_i,hydrate:void 0,createApp:Wa(_i)}}function xn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ye({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function so(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function es(e,t,n=!1){const i=e.children,r=t.children;if(L(i)&&L(r))for(let s=0;s>1,e[n[l]]0&&(t[i]=n[s-1]),n[s]=i)}}for(s=n.length,o=n[s-1];s-- >0;)n[s]=o,o=t[o];return n}function ts(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ts(t)}function Fi(e){if(e)for(let t=0;te.__isSuspense;function oo(e,t){t&&t.pendingBranch?L(e)?t.effects.push(...e):t.effects.push(e):da(e)}const xe=Symbol.for("v-fgt"),Ft=Symbol.for("v-txt"),nt=Symbol.for("v-cmt"),zt=Symbol.for("v-stc");let He=null,di=1;function tn(e,t=!1){di+=e,e<0&&He&&t&&(He.hasOnce=!0)}function nn(e){return e?e.__v_isVNode===!0:!1}function mt(e,t){return e.type===t.type&&e.key===t.key}const rs=({key:e})=>e??null,Gt=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?J(e)||te(e)||F(e)?{i:Ae,r:e,k:t,f:!!n}:e:null);function lo(e,t=null,n=null,i=0,r=null,s=e===xe?0:1,o=!1,l=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&rs(t),ref:t&&Gt(t),scopeId:Lr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:i,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ae};return l?(ui(d,n),s&128&&e.normalize(d)):n&&(d.shapeFlag|=J(n)?8:16),di>0&&!o&&He&&(d.patchFlag>0||s&6)&&d.patchFlag!==32&&He.push(d),d}const le=co;function co(e,t=null,n=null,i=0,r=null,s=!1){if((!e||e===La)&&(e=nt),nn(e)){const l=ct(e,t,!0);return n&&ui(l,n),di>0&&!s&&He&&(l.shapeFlag&6?He[He.indexOf(e)]=l:He.push(l)),l.patchFlag=-2,l}if(wo(e)&&(e=e.__vccOpts),t){t=uo(t);let{class:l,style:d}=t;l&&!J(l)&&(t.class=Gn(l)),B(d)&&(ii(d)&&!L(d)&&(d=Z({},d)),t.style=zn(d))}const o=J(e)?1:is(e)?128:xa(e)?64:B(e)?4:F(e)?2:0;return lo(e,t,n,i,r,o,s,!0)}function uo(e){return e?ii(e)||Gr(e)?Z({},e):e:null}function ct(e,t,n=!1,i=!1){const{props:r,ref:s,patchFlag:o,children:l,transition:d}=e,p=t?po(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&rs(p),ref:t&&t.ref?n&&s?L(s)?s.concat(Gt(t)):[s,Gt(t)]:Gt(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:d,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ct(e.ssContent),ssFallback:e.ssFallback&&ct(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&i&&ai(f,d.clone(f)),f}function fo(e=" ",t=0){return le(Ft,null,e,t)}function Se(e){return e==null||typeof e=="boolean"?le(nt):L(e)?le(xe,null,e.slice()):nn(e)?Ce(e):le(Ft,null,String(e))}function Ce(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ct(e)}function ui(e,t){let n=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(L(t))n=16;else if(typeof t=="object")if(i&65){const r=t.default;r&&(r._c&&(r._d=!1),ui(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Gr(t)?t._ctx=Ae:r===3&&Ae&&(Ae.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else F(t)?(t={default:t,_ctx:Ae},n=32):(t=String(t),i&64?(n=16,t=[fo(t)]):n=8);e.children=t,e.shapeFlag|=n}function po(...e){const t={};for(let n=0;nse||Ae;let rn,jn;{const e=et(),t=(n,i)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(i),s=>{r.length>1?r.forEach(o=>o(s)):r[0](s)}};rn=t("__VUE_INSTANCE_SETTERS__",n=>se=n),jn=t("__VUE_SSR_SETTERS__",n=>Rt=n)}const Mt=e=>{const t=se;return rn(e),e.scope.on(),()=>{e.scope.off(),rn(t)}},Mi=()=>{se&&se.scope.off(),rn(null)};function ss(e){return e.vnode.shapeFlag&4}let Rt=!1;function bo(e,t=!1,n=!1){t&&jn(t);const{props:i,children:r}=e.vnode,s=ss(e);Ya(e,i,s,t),eo(e,r,n||t);const o=s?yo(e,t):void 0;return t&&jn(!1),o}function yo(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Fa);const{setup:i}=n;if(i){De();const r=e.setupContext=i.length>1?ko(e):null,s=Mt(e),o=Dt(i,e,0,[e.props,r]),l=dr(o);if(Le(),s(),(l||e.sp)&&!Tt(e)&&Nr(e),l){if(o.then(Mi,Mi),t)return o.then(d=>{Ni(e,d)}).catch(d=>{cn(d,e,0)});e.asyncDep=o}else Ni(e,o)}else as(e)}function Ni(e,t,n){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:B(t)&&(__VUE_PROD_DEVTOOLS__&&(e.devtoolsRawSetupState=t),e.setupState=Ar(t)),as(e)}function as(e,t,n){const i=e.type;if(e.render||(e.render=i.render||ce),__VUE_OPTIONS_API__){const r=Mt(e);De();try{Ma(e)}finally{Le(),r()}}}const vo={get(e,t){return ee(e,"get",""),e[t]}};function ko(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,vo),slots:e.slots,emit:e.emit,expose:t}}function fi(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ar(Xs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ot)return Ot[n](e)},has(t,n){return n in t||n in Ot}})):e.proxy}function wo(e){return F(e)&&"__vccOpts"in e}const xo=(e,t)=>ra(e,t,Rt);function a(e,t,n){try{tn(-1);const i=arguments.length;return i===2?B(t)&&!L(t)?nn(t)?le(e,null,[t]):le(e,t):le(e,null,t):(i>3?n=Array.prototype.slice.call(arguments,2):i===3&&nn(n)&&(n=[n]),le(e,t,n))}finally{tn(1)}}const Ui="3.5.35";/** +* @vue/runtime-dom v3.5.35 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Vn;const ji=typeof window<"u"&&window.trustedTypes;if(ji)try{Vn=ji.createPolicy("vue",{createHTML:e=>e})}catch{}const os=Vn?e=>Vn.createHTML(e):e=>e,So="http://www.w3.org/2000/svg",To="http://www.w3.org/1998/Math/MathML",Ee=typeof document<"u"?document:null,Vi=Ee&&Ee.createElement("template"),Oo={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,i)=>{const r=t==="svg"?Ee.createElementNS(So,e):t==="mathml"?Ee.createElementNS(To,e):n?Ee.createElement(e,{is:n}):Ee.createElement(e);return e==="select"&&i&&i.multiple!=null&&r.setAttribute("multiple",i.multiple),r},createText:e=>Ee.createTextNode(e),createComment:e=>Ee.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ee.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,i,r,s){const o=n?n.previousSibling:t.lastChild;if(r&&(r===s||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===s||!(r=r.nextSibling)););else{Vi.innerHTML=os(i==="svg"?`${e}`:i==="mathml"?`${e}`:e);const l=Vi.content;if(i==="svg"||i==="mathml"){const d=l.firstChild;for(;d.firstChild;)l.appendChild(d.firstChild);l.removeChild(d)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ao=Symbol("_vtc");function Po(e,t,n){const i=e[Ao];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const $i=Symbol("_vod"),Eo=Symbol("_vsh"),Co=Symbol(""),Ro=/(?:^|;)\s*display\s*:/;function Io(e,t,n){const i=e.style,r=J(n);let s=!1;if(n&&!r){if(t)if(J(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&bt(i,l,"")}else for(const o in t)n[o]==null&&bt(i,o,"");for(const o in n){o==="display"&&(s=!0);const l=n[o];l!=null?Lo(e,o,!J(t)&&t?t[o]:void 0,l)||bt(i,o,l):bt(i,o,"")}}else if(r){if(t!==n){const o=i[Co];o&&(n+=";"+o),i.cssText=n,s=Ro.test(n)}}else t&&e.removeAttribute("style");$i in e&&(e[$i]=s?i.display:"",e[Eo]&&(i.display="none"))}const Wi=/\s*!important$/;function bt(e,t,n){if(L(n))n.forEach(i=>bt(e,t,i));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const i=Do(e,t);Wi.test(n)?e.setProperty(it(i),n.replace(Wi,""),"important"):e[i]=n}}const Hi=["Webkit","Moz","ms"],Sn={};function Do(e,t){const n=Sn[t];if(n)return n;let i=de(t);if(i!=="filter"&&i in e)return Sn[t]=i;i=ur(i);for(let r=0;rTn||(jo.then(()=>Tn=0),Tn=Date.now());function $o(e,t){const n=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=n.attached)return;const r=n.value;if(L(r)){const s=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{s.call(i),i._stopped=!0};const o=r.slice(),l=[i];for(let d=0;de.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Wo=(e,t,n,i,r,s)=>{const o=r==="svg";t==="class"?Po(e,i,o):t==="style"?Io(e,n,i):an(t)?on(t)||No(e,t,n,i,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ho(e,t,i,o))?(Bi(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ki(e,t,i,o,s,t!=="value")):e._isVueCE&&(qo(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!J(i)))?Bi(e,de(t),i,s,t):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),Ki(e,t,i,o))};function Ho(e,t,n,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ji(t)&&F(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Ji(t)&&J(n)?!1:t in e}function qo(e,t){const n=e._def.props;if(!n)return!1;const i=de(t);return Array.isArray(n)?n.some(r=>de(r)===i):Object.keys(n).some(r=>de(r)===i)}const Ko=Z({patchProp:Wo},Oo);let Yi;function Bo(){return Yi||(Yi=io(Ko))}const zo=((...e)=>{const t=Bo().createApp(...e),{mount:n}=t;return t.mount=i=>{const r=Jo(i);if(!r)return;const s=t._component;!F(s)&&!s.render&&!s.template&&(s.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Go(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t});function Go(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Jo(e){return J(e)?document.querySelector(e):e}function Yo(e,t={}){return{kind:"row",fields:e,...t}}function Qo(e,t,n={}){return{title:e,fields:t,...n}}function Xo(e){const t=n=>{const i=n.detail;!(i!=null&&i.key)||i.role!=="file"&&i.role!=="folder"||e(i)};return window.addEventListener("sd-training-path-browse",t),()=>window.removeEventListener("sd-training-path-browse",t)}function ls(e,t){return t.hidden||!pi(e,t.visibleWhen)?null:t.kind==="checkbox"?a("label",{class:"training-toggle anima-toggle"},[a("input",{id:t.id,type:"checkbox",disabled:t.disabled,checked:!!e[t.key],onChange:n=>{e[t.key]=n.target.checked}}),a("span",t.label),Xe(t.description)]):t.kind==="select"?a("label",{class:"training-field anima-field"},[a("span",t.label),a("select",{id:t.id,disabled:t.disabled,value:String(e[t.key]??""),onChange:n=>{e[t.key]=n.target.value}},t.options.map(n=>a("option",{value:n},n||"auto"))),Xe(t.description)]):t.kind==="textarea"?a("label",{class:"training-field anima-field"},[a("span",t.label),a("textarea",{id:t.id,disabled:t.disabled,value:String(e[t.key]??""),rows:t.rows??4,onInput:n=>{e[t.key]=n.target.value}}),Xe(t.description)]):t.kind==="number"?t.role==="slider"?cl(e,t):a("label",{class:"training-field anima-field"},[a("span",t.label),a("input",{id:t.id,type:"number",min:t.min??0,max:t.max,step:t.step??1,disabled:t.disabled,value:Number(e[t.key]??0),onInput:n=>{e[t.key]=Number(n.target.value)}}),Xe(t.description)]):t.kind==="table"?ul(e,t):a("label",{class:"training-field anima-field"},[a("span",t.label),dl(e,t),Xe(t.description)])}function Zo(e,t){return t.map(n=>ls(e,n))}function el(e){return a("div",{class:"training-field-row anima-field-row"},e)}function cs(e){return`training-section-${e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}`}function tl(e,t){return a("fieldset",{id:cs(e),class:"training-section anima-section"},[a("legend",e),...t])}function nl(e,t){return t.hidden||!pi(e,t.visibleWhen)?null:tl(t.title,t.fields.map(n=>ll(e,n)))}function il(e,t){return t.map(n=>nl(e,n))}function rl(e,t){return a("section",{class:"training-workbench anima-workbench"},[a("div",{class:"training-form-panel anima-form-panel"},e),a("aside",{class:"training-preview-panel anima-preview-panel"},t)])}function sl(e,t="training-preview-code"){return a("div",{class:"training-preview-card anima-preview-card"},[a("h2","Parameter Preview"),a("pre",{id:t,class:"training-preview-code anima-preview-code"},e)])}function al(e,t=""){return a("div",{class:"training-preview-card anima-preview-card"},[a("h2","Run Controls"),a("div",{class:"training-actions anima-actions"},e.map(n=>a("button",{type:"button",class:n.primary?"primary":"",onClick:n.onClick},n.label))),t?a("p",{class:"training-status anima-status"},t):null])}function ol(e){return Object.entries(e).filter(([,t])=>t!=="").map(([t,n])=>`${t} = ${ds(n)}`).join(` +`)}function ds(e){return typeof e=="boolean"?e?"true":"false":typeof e=="number"?String(e):Array.isArray(e)?`[${e.map(t=>ds(t)).join(", ")}]`:`"${String(e).replaceAll("\\","\\\\").replaceAll('"','\\"').replaceAll(` +`,"\\n")}"`}function Xe(e){return e?a("small",{class:"training-field-description"},e):null}function ll(e,t){return t.hidden||!pi(e,t.visibleWhen)?null:t.kind==="row"?el(Zo(e,t.fields)):ls(e,t)}function pi(e,t){if(!t)return!0;if(typeof t=="function")return t(e);const n=e[t.key];return"equals"in t?n===t.equals:"notEquals"in t?n!==t.notEquals:"truthy"in t?!!n===t.truthy:!0}function cl(e,t){const n=Number(e[t.key]??0);return a("label",{class:"training-field anima-field training-slider-field"},[a("span",t.label),a("div",{class:"training-slider-field__control"},[a("input",{id:t.id,type:"range",min:t.min??0,max:t.max??12,step:t.step??1,disabled:t.disabled,value:n,"data-training-role":t.role,onInput:i=>{e[t.key]=Number(i.target.value)}}),a("output",{id:`${t.id}-value`,for:t.id},String(n))]),Xe(t.description)])}function dl(e,t){const n=a("input",{id:t.id,disabled:t.disabled,value:String(e[t.key]??""),placeholder:t.placeholder??"","data-training-role":t.role,onInput:i=>{e[t.key]=i.target.value}});return t.role!=="file"&&t.role!=="folder"?n:a("div",{class:"training-path-field"},[n,a("button",{type:"button",class:"training-path-field__browse",disabled:t.disabled,title:`${t.role==="folder"?"Folder":"File"} picker integration is pending`,onClick:()=>{window.dispatchEvent(new CustomEvent("sd-training-path-browse",{detail:{key:t.key,role:t.role,id:t.id}}))}},"Browse")])}function ul(e,t){const n=Array.isArray(e[t.key])?e[t.key]:[];function i(r){e[t.key]=r}return a("div",{id:t.id,class:"training-field anima-field training-table-field"},[a("span",t.label),a("div",{class:"training-table-field__rows"},n.map((r,s)=>a("div",{class:"training-table-field__row"},[a("input",{id:`${t.id}-${s}`,disabled:t.disabled,value:r,onInput:o=>{const l=[...n];l[s]=o.target.value,i(l)}}),a("button",{type:"button",disabled:t.disabled,onClick:()=>i(n.filter((o,l)=>l!==s))},"Remove")]))),a("button",{type:"button",class:"training-table-field__add",disabled:t.disabled,onClick:()=>i([...n,""])},t.addLabel??"Add Row"),Xe(t.description)])}const $n="sd-trainer-source-anima-configs",sn={"/lora/sd3.html":{path:"/lora/sd3.html",heading:"Anima Stable Diffusion LoRA",modelTrainType:"anima-lora",schemaFile:"mikazuki/schema/sd3-lora.ts",backendEntrypoint:"scripts/dev/anima_train_network.py",summary:"Preserves the historical sd3 URL while routing to the Anima LoRA backend.",nextWork:["Move Anima LoRA form sections from schema-driven runtime into source-owned components.","Keep the sd3-lora route key stable for saved configs and old links.","Add browser smoke before replacing the production dist route."]},"/lora/anima-finetune.html":{path:"/lora/anima-finetune.html",heading:"Anima Finetune",modelTrainType:"anima-finetune",schemaFile:"mikazuki/schema/anima-finetune.ts",backendEntrypoint:"scripts/dev/anima_train.py",summary:"Tracks full DiT finetune work without touching SD or Flux training pages.",nextWork:["Source-own the high-risk Anima full finetune options first.","Keep full finetune defaults aligned with backend adapter tests.","Add save/load config compatibility checks before production replacement."]}},fl={pretrained_model_name_or_path:"./sd-models/anima/anima-base-v1.0.safetensors",vae:"./sd-models/anima/qwen_image_vae.safetensors",qwen3:"./sd-models/anima/qwen_3_06b_base.safetensors",t5_tokenizer_path:"",llm_adapter_path:"",resume:"",train_data_dir:"",output_dir:"output",output_name:"anima",lora_type:"lora",max_train_epochs:10,train_batch_size:1,gradient_accumulation_steps:1,qwen3_max_token_length:512,t5_max_token_length:512,learning_rate:"1e-5",self_attn_lr:"",cross_attn_lr:"",mlp_lr:"",mod_lr:"",llm_adapter_lr:"",unet_lr:"1e-4",lr_scheduler:"cosine_with_restarts",lr_warmup_steps:0,lr_scheduler_num_cycles:1,optimizer_args_custom:[],min_snr_gamma:"",prodigy_d0:"",prodigy_d_coef:"2.0",network_dim:32,network_alpha:16,network_args_custom:[],network_weights:"",dim_from_weights:!1,scale_weight_norms:"",train_norm:!1,network_dropout:0,pissa_init:!1,pissa_method:"rsvd",pissa_niter:2,pissa_oversample:8,lokr_factor:-1,full_matrix:!1,tlora_min_rank:4,tlora_rank_schedule:"cosine",tlora_orthogonal_init:!0,resolution:"1024,1024",enable_bucket:!0,min_bucket_reso:256,max_bucket_reso:2048,bucket_reso_steps:64,mixed_precision:"bf16",optimizer_type:"AdamW8bit",attn_mode:"",timestep_sampling:"shift",sigmoid_scale:1,discrete_flow_shift:3,weighting_scheme:"uniform",logit_mean:"",logit_std:"",mode_scale:"",split_attn:!1,vae_chunk_size:"",vae_disable_cache:!1,unsloth_offload_checkpointing:!1,gradient_checkpointing:!0,network_train_unet_only:!0,network_train_text_encoder_only:!1,cache_latents:!0,cache_latents_to_disk:!0,cache_text_encoder_outputs:!0,cache_text_encoder_outputs_to_disk:!0,fp8_base:!1,fp8_base_unet:!1,persistent_data_loader_workers:!1,max_data_loader_n_workers:0,text_encoder_batch_size:"",disable_mmap_load_safetensors:!1,blocks_to_swap:"",cpu_offload_checkpointing:!1,enable_preview:!0,positive_prompts:"1girl, solo, smile, japanese clothes, kimono, blue eyes, closed mouth, upper body, looking at viewer",negative_prompts:"nsfw, explicit, sexual content, worst quality, low quality, artist name, jpeg artifacts",sample_width:1024,sample_height:1024,sample_cfg:4.5,sample_seed:42,sample_steps:40,sample_sampler:"euler",sample_scheduler:"simple",sample_at_first:!0,sample_every_n_epochs:2,sample_prompts:"",caption_extension:".txt",prefer_json_caption:!0,enable_debug_options:!1,anima_profile_window:0,anima_nan_check_interval:0,anima_debug_mode:!1,anima_rope_mismatch_mode:"strict",anima_rope_max_seq_tokens:0,noise_offset:"",multires_noise_iterations:"",multires_noise_discount:"",color_aug:!1,flip_aug:!1,random_crop:!1,seed:1337,clip_skip:2,ui_custom_params:"",ddp_timeout:"",ddp_gradient_as_bucket_view:!1},pl={title:"Model Assets",fields:[{kind:"text",key:"pretrained_model_name_or_path",id:"anima-pretrained-model",label:"pretrained_model_name_or_path",placeholder:"D:/models/anima-base-v1.0.safetensors",description:"Anima DiT / transformer checkpoint path.",role:"file"},{kind:"text",key:"vae",id:"anima-vae",label:"vae",placeholder:"D:/models/qwen_image_vae.safetensors",description:"Qwen Image VAE path.",role:"file"},{kind:"text",key:"qwen3",id:"anima-qwen3",label:"qwen3",placeholder:"D:/models/qwen_3_06b_base.safetensors",description:"Qwen3 text model path.",role:"file"},{kind:"text",key:"t5_tokenizer_path",id:"anima-t5-tokenizer-path",label:"t5_tokenizer_path",description:"Optional T5 tokenizer folder. Empty uses the bundled config.",role:"folder"},{kind:"text",key:"llm_adapter_path",id:"anima-llm-adapter-path",label:"llm_adapter_path",role:"file"},{kind:"text",key:"resume",id:"anima-resume",label:"resume",role:"folder"}]},hl={title:"Dataset And Output",fields:[{kind:"text",key:"train_data_dir",id:"anima-train-data-dir",label:"train_data_dir",placeholder:"D:/datasets/anima",role:"folder"},{kind:"text",key:"output_dir",id:"anima-output-dir",label:"output_dir",role:"folder"},{kind:"text",key:"output_name",id:"anima-output-name",label:"output_name"},{kind:"row",fields:[{kind:"text",key:"resolution",id:"anima-resolution",label:"resolution"},{kind:"text",key:"caption_extension",id:"anima-caption-extension",label:"caption_extension"},{kind:"checkbox",key:"prefer_json_caption",id:"anima-prefer-json-caption",label:"prefer_json_caption"}]},{kind:"row",fields:[{kind:"text",key:"self_attn_lr",id:"anima-self-attn-lr",label:"self_attn_lr"},{kind:"text",key:"cross_attn_lr",id:"anima-cross-attn-lr",label:"cross_attn_lr"},{kind:"text",key:"mlp_lr",id:"anima-mlp-lr",label:"mlp_lr"}]},{kind:"row",fields:[{kind:"text",key:"mod_lr",id:"anima-mod-lr",label:"mod_lr"},{kind:"text",key:"llm_adapter_lr",id:"anima-llm-adapter-lr",label:"llm_adapter_lr"},{kind:"text",key:"min_snr_gamma",id:"anima-min-snr-gamma",label:"min_snr_gamma"}]},{kind:"row",fields:[{kind:"checkbox",key:"enable_bucket",id:"anima-enable-bucket",label:"enable_bucket"},{kind:"number",key:"min_bucket_reso",id:"anima-min-bucket-reso",label:"min_bucket_reso",min:64},{kind:"number",key:"max_bucket_reso",id:"anima-max-bucket-reso",label:"max_bucket_reso",min:64}]},{kind:"number",key:"bucket_reso_steps",id:"anima-bucket-reso-steps",label:"bucket_reso_steps",min:1}]},ml={title:"Training",fields:[{kind:"row",fields:[{kind:"number",key:"max_train_epochs",id:"anima-epochs",label:"max_train_epochs",min:1},{kind:"number",key:"train_batch_size",id:"anima-train-batch-size",label:"train_batch_size",min:1},{kind:"number",key:"gradient_accumulation_steps",id:"anima-gradient-accumulation-steps",label:"gradient_accumulation_steps",min:1}]},{kind:"row",fields:[{kind:"text",key:"learning_rate",id:"anima-learning-rate",label:"learning_rate"},{kind:"text",key:"optimizer_type",id:"anima-optimizer",label:"optimizer_type"},{kind:"select",key:"mixed_precision",id:"anima-mixed-precision",label:"mixed_precision",options:["bf16","fp16","no"]}]},{kind:"row",fields:[{kind:"select",key:"lr_scheduler",id:"anima-lr-scheduler",label:"lr_scheduler",options:["linear","cosine","cosine_with_restarts","polynomial","constant","constant_with_warmup"]},{kind:"number",key:"lr_warmup_steps",id:"anima-lr-warmup-steps",label:"lr_warmup_steps",min:0},{kind:"number",key:"qwen3_max_token_length",id:"anima-qwen3-max-token-length",label:"qwen3_max_token_length",min:1}]},{kind:"number",key:"lr_scheduler_num_cycles",id:"anima-lr-scheduler-num-cycles",label:"lr_scheduler_num_cycles",min:1,visibleWhen:{key:"lr_scheduler",equals:"cosine_with_restarts"}},{kind:"row",visibleWhen:{key:"optimizer_type",equals:"Prodigy"},fields:[{kind:"text",key:"prodigy_d0",id:"anima-prodigy-d0",label:"prodigy_d0"},{kind:"text",key:"prodigy_d_coef",id:"anima-prodigy-d-coef",label:"prodigy_d_coef"}]},{kind:"table",key:"optimizer_args_custom",id:"anima-optimizer-args-custom",label:"optimizer_args_custom",description:"Custom optimizer_args entries, one argument per row."},{kind:"number",key:"t5_max_token_length",id:"anima-t5-max-token-length",label:"t5_max_token_length",min:1},{kind:"checkbox",key:"gradient_checkpointing",id:"anima-gradient-checkpointing",label:"gradient_checkpointing"}]},gl={title:"LoRA Adapter",fields:[{kind:"row",fields:[{kind:"select",key:"lora_type",id:"anima-lora-type",label:"lora_type",options:["lora","lokr","tlora","lora_fa","vera","loha"]},{kind:"text",key:"unet_lr",id:"anima-unet-lr",label:"unet_lr"},{kind:"number",key:"network_dim",id:"anima-network-dim",label:"network_dim",min:1}]},{kind:"number",key:"network_alpha",id:"anima-network-alpha",label:"network_alpha",min:1},{kind:"text",key:"network_weights",id:"anima-network-weights",label:"network_weights",role:"file",description:"Resume from an existing LoRA / LyCORIS adapter."},{kind:"row",fields:[{kind:"checkbox",key:"dim_from_weights",id:"anima-dim-from-weights",label:"dim_from_weights"},{kind:"text",key:"scale_weight_norms",id:"anima-scale-weight-norms",label:"scale_weight_norms"},{kind:"checkbox",key:"train_norm",id:"anima-train-norm",label:"train_norm"}]},{kind:"row",fields:[{kind:"number",key:"network_dropout",id:"anima-network-dropout",label:"network_dropout",min:0,step:.01},{kind:"checkbox",key:"pissa_init",id:"anima-pissa-init",label:"pissa_init"}]},{kind:"row",visibleWhen:{key:"pissa_init",equals:!0},fields:[{kind:"select",key:"pissa_method",id:"anima-pissa-method",label:"pissa_method",options:["rsvd","svd"]},{kind:"number",key:"pissa_niter",id:"anima-pissa-niter",label:"pissa_niter",min:0},{kind:"number",key:"pissa_oversample",id:"anima-pissa-oversample",label:"pissa_oversample",min:0}]},{kind:"row",visibleWhen:{key:"lora_type",equals:"lokr"},fields:[{kind:"number",key:"lokr_factor",id:"anima-lokr-factor",label:"lokr_factor",min:-1},{kind:"checkbox",key:"full_matrix",id:"anima-full-matrix",label:"full_matrix"}]},{kind:"row",visibleWhen:{key:"lora_type",equals:"tlora"},fields:[{kind:"number",key:"tlora_min_rank",id:"anima-tlora-min-rank",label:"tlora_min_rank",min:1},{kind:"select",key:"tlora_rank_schedule",id:"anima-tlora-rank-schedule",label:"tlora_rank_schedule",options:["cosine","linear"]},{kind:"checkbox",key:"tlora_orthogonal_init",id:"anima-tlora-orthogonal-init",label:"tlora_orthogonal_init"}]},{kind:"table",key:"network_args_custom",id:"anima-network-args-custom",label:"network_args_custom",description:"Custom network_args entries, one argument per row."},{kind:"row",fields:[{kind:"checkbox",key:"network_train_unet_only",id:"anima-network-train-unet-only",label:"network_train_unet_only"},{kind:"checkbox",key:"network_train_text_encoder_only",id:"anima-network-train-text-encoder-only",label:"network_train_text_encoder_only"}]}]},_l={title:"Anima Parameters",fields:[{kind:"row",fields:[{kind:"select",key:"attn_mode",id:"anima-attn-mode",label:"attn_mode",options:["","torch","xformers","sageattn","flash"]},{kind:"select",key:"timestep_sampling",id:"anima-timestep-sampling",label:"timestep_sampling",options:["sigma","uniform","sigmoid","shift","flux_shift"]},{kind:"number",key:"sigmoid_scale",id:"anima-sigmoid-scale",label:"sigmoid_scale",min:0,step:.001}]},{kind:"row",fields:[{kind:"number",key:"discrete_flow_shift",id:"anima-discrete-flow-shift",label:"discrete_flow_shift",min:0,step:.001},{kind:"select",key:"weighting_scheme",id:"anima-weighting-scheme",label:"weighting_scheme",options:["sigma_sqrt","logit_normal","mode","cosmap","none","uniform"]}]},{kind:"row",fields:[{kind:"text",key:"logit_mean",id:"anima-logit-mean",label:"logit_mean",description:"Optional logit_normal mean.",visibleWhen:{key:"weighting_scheme",equals:"logit_normal"}},{kind:"text",key:"logit_std",id:"anima-logit-std",label:"logit_std",description:"Optional logit_normal stddev.",visibleWhen:{key:"weighting_scheme",equals:"logit_normal"}},{kind:"text",key:"mode_scale",id:"anima-mode-scale",label:"mode_scale",description:"Optional mode weighting scale.",visibleWhen:{key:"weighting_scheme",equals:"mode"}}]},{kind:"row",fields:[{kind:"checkbox",key:"split_attn",id:"anima-split-attn",label:"split_attn"},{kind:"text",key:"vae_chunk_size",id:"anima-vae-chunk-size",label:"vae_chunk_size",description:"Even VAE chunk size."},{kind:"checkbox",key:"vae_disable_cache",id:"anima-vae-disable-cache",label:"vae_disable_cache"}]},{kind:"checkbox",key:"unsloth_offload_checkpointing",id:"anima-unsloth-offload-checkpointing",label:"unsloth_offload_checkpointing",description:"CPU RAM activation offload. Keep off with blocks_to_swap / cpu_offload_checkpointing."}]},bl={title:"Cache",fields:[{kind:"row",fields:[{kind:"checkbox",key:"cache_latents",id:"anima-cache-latents",label:"cache_latents"},{kind:"checkbox",key:"cache_latents_to_disk",id:"anima-cache-latents-to-disk",label:"cache_latents_to_disk"},{kind:"checkbox",key:"cache_text_encoder_outputs",id:"anima-cache-text-encoder-outputs",label:"cache_text_encoder_outputs"}]},{kind:"row",fields:[{kind:"checkbox",key:"cache_text_encoder_outputs_to_disk",id:"anima-cache-text-encoder-outputs-to-disk",label:"cache_text_encoder_outputs_to_disk"},{kind:"checkbox",key:"fp8_base",id:"anima-fp8-base",label:"fp8_base"},{kind:"checkbox",key:"fp8_base_unet",id:"anima-fp8-base-unet",label:"fp8_base_unet"}]},{kind:"row",fields:[{kind:"checkbox",key:"persistent_data_loader_workers",id:"anima-persistent-data-loader-workers",label:"persistent_data_loader_workers"},{kind:"number",key:"max_data_loader_n_workers",id:"anima-max-data-loader-n-workers",label:"max_data_loader_n_workers",min:0},{kind:"text",key:"text_encoder_batch_size",id:"anima-text-encoder-batch-size",label:"text_encoder_batch_size",description:"Optional text encoder cache batch size."}]},{kind:"row",fields:[{kind:"checkbox",key:"disable_mmap_load_safetensors",id:"anima-disable-mmap-load-safetensors",label:"disable_mmap_load_safetensors"},{kind:"text",key:"blocks_to_swap",id:"anima-blocks-to-swap",label:"blocks_to_swap"},{kind:"checkbox",key:"cpu_offload_checkpointing",id:"anima-cpu-offload-checkpointing",label:"cpu_offload_checkpointing"}]}]},yl={title:"Preview",fields:[{kind:"checkbox",key:"enable_preview",id:"anima-enable-preview",label:"enable_preview"},{kind:"textarea",key:"positive_prompts",id:"anima-positive-prompts",label:"positive_prompts",rows:4,visibleWhen:{key:"enable_preview",equals:!0}},{kind:"textarea",key:"negative_prompts",id:"anima-negative-prompts",label:"negative_prompts",rows:4,visibleWhen:{key:"enable_preview",equals:!0}},{kind:"textarea",key:"sample_prompts",id:"anima-sample-prompts",label:"sample_prompts",rows:4,visibleWhen:{key:"enable_preview",equals:!0}},{kind:"row",visibleWhen:{key:"enable_preview",equals:!0},fields:[{kind:"number",key:"sample_width",id:"anima-sample-width",label:"sample_width",min:64},{kind:"number",key:"sample_height",id:"anima-sample-height",label:"sample_height",min:64},{kind:"number",key:"sample_every_n_epochs",id:"anima-sample-every-n-epochs",label:"sample_every_n_epochs",min:1}]},{kind:"row",visibleWhen:{key:"enable_preview",equals:!0},fields:[{kind:"number",key:"sample_cfg",id:"anima-sample-cfg",label:"sample_cfg",min:1,step:.1},{kind:"number",key:"sample_seed",id:"anima-sample-seed",label:"sample_seed",min:0},{kind:"number",key:"sample_steps",id:"anima-sample-steps",label:"sample_steps",min:1}]},{kind:"row",visibleWhen:{key:"enable_preview",equals:!0},fields:[{kind:"select",key:"sample_sampler",id:"anima-sample-sampler",label:"sample_sampler",options:["euler","k_euler"]},{kind:"select",key:"sample_scheduler",id:"anima-sample-scheduler",label:"sample_scheduler",options:["simple"]},{kind:"checkbox",key:"sample_at_first",id:"anima-sample-at-first",label:"sample_at_first"}]}]},vl={title:"Debug Options",fields:[{kind:"checkbox",key:"enable_debug_options",id:"anima-enable-debug-options",label:"enable_debug_options",description:"Show Anima debug options. Normal training usually keeps this off."},{kind:"row",visibleWhen:{key:"enable_debug_options",equals:!0},fields:[{kind:"number",key:"anima_profile_window",id:"anima-profile-window",label:"anima_profile_window",min:0},{kind:"number",key:"anima_nan_check_interval",id:"anima-nan-check-interval",label:"anima_nan_check_interval",min:0},{kind:"checkbox",key:"anima_debug_mode",id:"anima-debug-mode",label:"anima_debug_mode"}]},{kind:"row",visibleWhen:{key:"enable_debug_options",equals:!0},fields:[{kind:"select",key:"anima_rope_mismatch_mode",id:"anima-rope-mismatch-mode",label:"anima_rope_mismatch_mode",options:["strict","resample"]},{kind:"number",key:"anima_rope_max_seq_tokens",id:"anima-rope-max-seq-tokens",label:"anima_rope_max_seq_tokens",min:0}]}]},kl={title:"Noise Settings",fields:[{kind:"row",fields:[{kind:"text",key:"noise_offset",id:"anima-noise-offset",label:"noise_offset"},{kind:"text",key:"multires_noise_iterations",id:"anima-multires-noise-iterations",label:"multires_noise_iterations"},{kind:"text",key:"multires_noise_discount",id:"anima-multires-noise-discount",label:"multires_noise_discount"}]}]},wl=Qo("Data Enhancement",[Yo([{kind:"checkbox",key:"color_aug",id:"anima-color-aug",label:"color_aug"},{kind:"checkbox",key:"flip_aug",id:"anima-flip-aug",label:"flip_aug"},{kind:"checkbox",key:"random_crop",id:"anima-random-crop",label:"random_crop"}])]),xl={title:"Other",fields:[{kind:"row",fields:[{kind:"number",key:"seed",id:"anima-seed",label:"seed",min:0},{kind:"number",key:"clip_skip",id:"anima-clip-skip",label:"clip_skip",min:0,step:1,role:"slider"}]},{kind:"textarea",key:"ui_custom_params",id:"anima-ui-custom-params",label:"ui_custom_params",rows:5,description:"Advanced TOML override text. Use carefully."}]},Sl={title:"Distributed Training",fields:[{kind:"row",fields:[{kind:"text",key:"ddp_timeout",id:"anima-ddp-timeout",label:"ddp_timeout"},{kind:"checkbox",key:"ddp_gradient_as_bucket_view",id:"anima-ddp-gradient-as-bucket-view",label:"ddp_gradient_as_bucket_view"}]}]};function us(e){return[pl,hl,ml,...e.modelTrainType==="anima-lora"?[gl]:[],_l,bl,yl,vl,kl,wl,xl,Sl]}function Tl(e){return e in sn}const Ol=he({name:"AnimaRoutePage",props:{route:{type:Object,required:!0}},setup(e){const t=sn[e.route.path],n=Ie(Zi(t)),i=Ze(null),r=Ze(""),s=Ze(""),o=Ze(null);let l;Lt(()=>{l=Xo(v=>{s.value=`Browse requested for ${v.key} (${v.role})`})}),Vr(()=>{l==null||l()});function d(){const v={...n,model_train_type:t.modelTrainType,pretrained_model_name_or_path:je(n.pretrained_model_name_or_path),vae:je(n.vae),qwen3:je(n.qwen3),t5_tokenizer_path:je(n.t5_tokenizer_path),llm_adapter_path:je(n.llm_adapter_path),resume:je(n.resume),train_data_dir:je(n.train_data_dir),output_dir:je(n.output_dir)};return t.modelTrainType==="anima-finetune"&&(delete v.lora_type,delete v.unet_lr,delete v.network_dim,delete v.network_alpha,delete v.network_train_unet_only,delete v.network_train_text_encoder_only,delete v.network_args_custom,delete v.network_weights,delete v.dim_from_weights,delete v.scale_weight_norms,delete v.train_norm,delete v.network_dropout,delete v.pissa_init,delete v.pissa_method,delete v.pissa_niter,delete v.pissa_oversample,delete v.lokr_factor,delete v.full_matrix,delete v.tlora_min_rank,delete v.tlora_rank_schedule,delete v.tlora_orthogonal_init),v}function p(){const v=Wn();v[t.path]={...n},localStorage.setItem($n,JSON.stringify(v)),s.value="Saved locally"}function f(){Object.assign(n,Zi(t)),s.value="Loaded local config"}function m(){const v=Wn();delete v[t.path],localStorage.setItem($n,JSON.stringify(v)),Object.assign(n,Hn(t)),s.value="Reset to defaults"}function x(){const v=new Blob([JSON.stringify(d(),null,2)],{type:"application/json"}),M=URL.createObjectURL(v),D=document.createElement("a");D.href=M,D.download=`${n.output_name||t.modelTrainType}.json`,D.click(),URL.revokeObjectURL(M),s.value="Exported config"}async function S(v){var R;const M=v.target,D=(R=M.files)==null?void 0:R[0];if(D)try{const U=JSON.parse(await D.text());delete U.model_train_type,Object.assign(n,Hn(t),U),s.value="Imported config"}catch(U){s.value=U instanceof Error?U.message:"Import failed"}finally{M.value=""}}async function E(){s.value="Submitting training config...",o.value=null;const M=await(await fetch("/api/run",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d())})).json();s.value=M.message||M.status||"Submitted",o.value=Al(M)}return()=>{const v=us(t),M=Il(v,r.value);return a("main",{class:"content anima-page"},[a("header",{class:"anima-header"},[a("div",[a("p",{class:"eyebrow"},"Training"),a("h1",t.heading),a("p",{class:"summary"},t.summary)]),a("dl",{class:"anima-route-strip"},[a("dt","Route"),a("dd",t.path),a("dt","Schema"),a("dd",t.schemaFile)])]),rl([a("form",{id:"anima-train-form",class:"anima-form"},[a("h2","Training Config"),a("div",{class:"anima-form-tools"},[a("label",{class:"anima-field anima-search-field"},[a("span","Search parameters"),a("input",{id:"anima-param-search",type:"search",value:r.value,placeholder:"field name, section, or description",onInput:D=>{r.value=D.target.value}})]),a("nav",{class:"anima-section-nav","aria-label":"Anima parameter sections"},v.map(D=>a("a",{href:`#${cs(D.title)}`},D.title)))]),M.length?il(n,M):a("p",{class:"anima-empty-filter"},"No matching parameters.")])],[sl(ol(d()),"anima-preview-code"),al([{label:"Save Config",onClick:p},{label:"Load Config",onClick:f},{label:"Reset Config",onClick:m},{label:"Export Config",onClick:x},{label:"Import Config",onClick:()=>{var D;return(D=i.value)==null?void 0:D.click()}},{label:"Start Training",onClick:E,primary:!0}],s.value),El(n,M),Pl(o.value),a("input",{ref:i,id:"anima-import-config",type:"file",accept:"application/json,.json",style:"display:none",onChange:S}),a("section",{class:"anima-preview-card anima-contract-card"},[a("h2","Source Contract"),a("p",`${v.length} source-owned sections render from frontend/source schema definitions.`),a("dl",{class:"anima-contract"},[a("dt","model_train_type"),a("dd",t.modelTrainType),a("dt","Schema"),a("dd",t.schemaFile),a("dt","Backend entrypoint"),a("dd",t.backendEntrypoint)])])])])}}});function Al(e){if(!e||typeof e!="object")return{};const t="data"in e&&e.data&&typeof e.data=="object"?e.data:e;return{taskId:On(t,"task_id"),logViewer:On(t,"train_log_viewer"),logStream:On(t,"train_log_stream")}}function On(e,t){return t in e&&typeof e[t]=="string"?e[t]:void 0}function Pl(e){return e?a("section",{class:"anima-preview-card anima-run-result","aria-label":"Submitted training task"},[a("div",{class:"anima-run-result__header"},[a("span","Submitted Task"),a("strong",e.taskId||"submitted")]),a("div",{class:"anima-run-result__links"},[e.logViewer?a("a",{href:e.logViewer},"Open Log"):null,a("a",{href:"/task.html"},"Open Tasks")]),e.logStream?a("code",e.logStream):null]):null}function El(e,t){const n=["pretrained_model_name_or_path","vae","qwen3","train_data_dir","output_dir"],i=n.filter(o=>String(e[o]??"").trim()).length,r=Cl(e,t),s=i===n.length;return a("section",{class:"anima-preview-card training-workflow-summary"},[a("div",{class:"training-workflow-summary__header"},[a("h2","Workflow Summary"),a("span",{class:s?"is-ready":"needs-input"},s?"Ready":"Needs paths")]),a("dl",{class:"training-workflow-summary__grid"},[a("dt","Schema coverage"),a("dd",`${t.length} sections / ${r} visible fields`),a("dt","Required paths"),a("dd",`${i} / ${n.length} filled`),a("dt","Output"),a("dd",String(e.output_name||"anima"))])])}function Cl(e,t){return t.reduce((n,i)=>i.hidden?n:n+i.fields.reduce((r,s)=>r+Rl(e,s),0),0)}function Rl(e,t){return t.hidden?0:t.kind==="row"?t.fields.filter(n=>!n.hidden&&Qi(e,n)).length:Qi(e,t)?1:0}function Qi(e,t){if(!t.visibleWhen)return!0;if(typeof t.visibleWhen=="function")return t.visibleWhen(e);const n=e[t.visibleWhen.key];return"equals"in t.visibleWhen?n===t.visibleWhen.equals:"notEquals"in t.visibleWhen?n!==t.visibleWhen.notEquals:"truthy"in t.visibleWhen?!!n===t.visibleWhen.truthy:!0}function Il(e,t){const n=t.trim().toLowerCase();return n?e.map(i=>({...i,fields:i.fields.map(r=>Dl(i.title,r,n)).filter(r=>!!r)})).filter(i=>i.fields.length>0):e}function Dl(e,t,n){if(t.kind==="row"){const i=t.fields.filter(r=>Xi(e,r,n));return i.length?{...t,fields:i}:null}return Xi(e,t,n)?t:null}function Xi(e,t,n){return[e,t.key,t.label,t.description,t.kind,t.role].filter(Boolean).some(i=>String(i).toLowerCase().includes(n))}function je(e){return e.replaceAll("\\","/")}function Wn(){try{return JSON.parse(localStorage.getItem($n)||"{}")}catch{return{}}}function Zi(e){const t=Wn()[e.path]||{};return{...Hn(e),...t}}function Hn(e){return{...fl,output_name:e.modelTrainType==="anima-finetune"?"anima-finetune":"anima-lora"}}const Ll=he({name:"ClassicTagEditorPage",setup(){return()=>a("main",{class:"content classic-tag-editor-page"},[a("header",{class:"classic-tag-editor-header"},[a("div",[a("p",{class:"eyebrow"},"Tools"),a("h1","Classic Tag Editor"),a("p",{class:"summary"},"The classic URL is kept for compatibility, but editing now uses the source-owned native tag editor.")]),a("div",{class:"classic-tag-editor-actions"},[a("a",{class:"classic-tag-editor-open",href:"/native-tageditor.html"},"Open Native Editor"),a("a",{class:"classic-tag-editor-open secondary",href:"/native-tageditor-standalone.html"},"Open Standalone Editor")])]),a("section",{class:"classic-tag-editor-panel"},[a("h2","Source-Owned Replacement"),a("p","The legacy Gradio proxy dependency has been removed from this route. Old bookmarks still land here, then continue into the maintained native editor."),a("ul",[a("li","No legacy proxy iframe is required for production dist replacement."),a("li","Native editing remains available at /native-tageditor.html."),a("li","Focused demos can use /native-tageditor-standalone.html.")])])])}}),fs={"/lora/basic.html":{family:"LoRA compatibility",backend:"Stable Diffusion LoRA presets",posture:"Stable URL, source-owned shell, mature form deferred.",migrateWhen:"Only migrate if this page needs active product changes."},"/lora/master.html":{family:"Stable Diffusion compatibility",backend:"Stable Diffusion trainer",posture:"Keep mature SD behavior untouched while source renderer work focuses on Anima.",migrateWhen:"Reuse the shared schema renderer if SD training becomes active work."},"/lora/flux.html":{family:"Flux compatibility",backend:"Flux LoRA trainer",posture:"Keep Flux launch contracts stable and avoid hand-editing production dist.",migrateWhen:"Attach Flux schema sections after renderer coverage is broader."},"/dreambooth/index.html":{family:"Dreambooth compatibility",backend:"Dreambooth trainer",posture:"Preserve links without rebuilding mature Dreambooth behavior.",migrateWhen:"Promote only if Dreambooth needs source-owned UI changes."}};function Fl(e){return e in fs}const Ml=he({name:"MatureTrainingPage",props:{route:{type:Object,required:!0}},setup(e){return()=>{const t=fs[e.route.path];return a("main",{class:"content training-compat-page"},[a("header",{class:"training-compat-header"},[a("div",[a("p",{class:"eyebrow"},"Training"),a("h1",e.route.title),a("p",{class:"summary"},t.posture)]),a("dl",{class:"training-compat-route"},[a("dt","Route"),a("dd",e.route.path),a("dt","Template"),a("dd","mature training compatibility")])]),a("section",{class:"training-compat-metrics"},[a("article",[a("span","Family"),a("strong",t.family)]),a("article",[a("span","Backend"),a("strong",t.backend)]),a("article",[a("span","Migration Rule"),a("strong",t.migrateWhen)])]),a("section",{class:"compat-panel training-compat-contract"},[a("h2","Source Contract"),a("ul",[a("li","This mature training page is generated from one reusable source template."),a("li","Backend launch behavior and portable paths are not changed by this compatibility page."),a("li","Anima remains the active source-owned training form while this route stays stable.")])]),a("div",{class:"source-static-actions"},[a("a",{class:"source-static-action",href:"/lora/index.html"},"Open Training Index"),a("a",{class:"source-static-action",href:"/lora/sd3.html"},"Open Anima LoRA"),a("a",{class:"source-static-action",href:"/lora/params.html"},"Open Parameters")])])}}}),Nl="modulepreload",Ul=function(e){return"/"+e},er={},jl=function(t,n,i){let r=Promise.resolve();if(n&&n.length>0){let o=function(p){return Promise.all(p.map(f=>Promise.resolve(f).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),d=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));r=o(n.map(p=>{if(p=Ul(p),p in er)return;er[p]=!0;const f=p.endsWith(".css"),m=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${m}`))return;const x=document.createElement("link");if(x.rel=f?"stylesheet":Nl,f||(x.as="script"),x.crossOrigin="",x.href=p,d&&x.setAttribute("nonce",d),document.head.appendChild(x),f)return new Promise((S,E)=>{x.addEventListener("load",S),x.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${p}`)))})}))}function s(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&s(l.reason);return t().catch(s)})},Vl=`\r +
    \r +
    \r + \r +\r + \r +\r + \r +
    \r +
    `,tr=he({name:"NativeTagEditorPage",props:{standalone:{type:Boolean,default:!1}},setup(e){return Lt(()=>{jl(()=>import("./nativeDatasetEditorRuntime-D4aEeBlB.js"),[])}),()=>a("main",{class:["native-editor-page",e.standalone?"native-editor-page--standalone":""]},[a("section",{id:"sd-native-editor-entry",class:"theme-default-content native-editor-mount","aria-label":"Native Tag Editor",innerHTML:Vl})])}});function An(e){return e.flatMap(t=>t.kind==="row"?t.fields:[t])}function $l(e){return e.role==="file"||e.role==="folder"||e.role==="slider"||e.role==="table"?e.role:e.kind}const Wl=he({name:"ParametersPage",setup(){const e=sn["/lora/sd3.html"],t=sn["/lora/anima-finetune.html"],n=us(e);return()=>a("main",{class:"content params-page"},[a("header",{class:"params-header"},[a("div",[a("p",{class:"eyebrow"},"Reference"),a("h1","Training Parameters"),a("p",{class:"summary"},"Source-owned parameter reference generated from the Anima schema renderer specs.")]),a("div",{class:"params-actions"},[a("a",{href:e.path},"Open Anima LoRA"),a("a",{href:t.path},"Open Anima Finetune")])]),a("section",{class:"params-summary-grid"},[a("article",[a("strong",String(n.length)),a("span","schema sections")]),a("article",[a("strong",String(n.reduce((i,r)=>i+An(r.fields).length,0))),a("span","documented fields")]),a("article",[a("strong","source"),a("span","frontend/source/src/animaSchema.ts")])]),a("section",{class:"params-section-list","aria-label":"Anima parameter sections"},n.map(i=>a("article",{class:"params-section-card"},[a("header",[a("h2",i.title),a("span",`${An(i.fields).length} fields`)]),a("div",{class:"params-field-list"},An(i.fields).map(r=>a("div",{class:"params-field-row"},[a("code",r.label),a("span",$l(r)),r.visibleWhen?a("small","conditional"):null,r.description?a("p",r.description):null])))])))])}}),Hl=[{path:"/",title:"SD Trainer Next",section:"home",description:"Source-owned trainer shell compatibility entry."},{path:"/tagger.html",title:"数据集打标",section:"tools",description:"Dataset tagging compatibility route."},{path:"/tageditor.html",title:"经典标签编辑",section:"tools",description:"Legacy tag editor compatibility route."},{path:"/native-tageditor.html",title:"原生标签编辑",section:"tools",description:"Native tag editor route owned by the trainer shell."},{path:"/native-tageditor-standalone.html",title:"原生标签编辑 Standalone",section:"tools",description:"Fullscreen native tag editor route for focused demos."},{path:"/dataset-editor.html",title:"原生标签编辑 Debug",section:"tools",description:"Standalone native editor fallback/debug route."},{path:"/tensorboard.html",title:"TensorBoard",section:"tools",description:"TensorBoard compatibility route."},{path:"/other/settings.html",title:"UI 设置",section:"more",description:"Settings route for source-owned configuration UI."},{path:"/lora/index.html",title:"LoRA 训练",section:"training",description:"LoRA training route compatibility entry."},{path:"/lora/sd3.html",title:"Anima Stable Diffusion LoRA",section:"training",description:"Anima LoRA route preserving the historical sd3 URL."},{path:"/lora/basic.html",title:"基础训练",section:"training",description:"Basic training route compatibility entry."},{path:"/lora/master.html",title:"Stable Diffusion",section:"training",description:"Stable Diffusion training route compatibility entry."},{path:"/lora/flux.html",title:"Flux LoRA",section:"training",description:"Flux LoRA route compatibility entry."},{path:"/lora/anima-finetune.html",title:"全量微调",section:"training",description:"Anima full finetune route."},{path:"/lora/params.html",title:"训练参数说明",section:"help",description:"Training parameter documentation route."},{path:"/lora/tools.html",title:"LoRA 脚本工具",section:"tools",description:"LoRA script tools route."},{path:"/dreambooth/index.html",title:"Dreambooth",section:"training",description:"Dreambooth compatibility route."},{path:"/help/guide.html",title:"新手上路",section:"help",description:"Getting started route."},{path:"/other/about.html",title:"关于",section:"more",description:"About route."},{path:"/other/changelog.html",title:"更新日志",section:"more",description:"Changelog route."},{path:"/task.html",title:"任务",section:"tools",description:"Task route."}],hi=Hl,ql=new Map(hi.map(e=>[e.path,e])),Kl=[{section:"training",label:"训练"},{section:"tools",label:"工具与调试"},{section:"help",label:"帮助"},{section:"more",label:"其他"}];function nr(e){return!e||e==="/index.html"?"/":e.endsWith(".md")?`${e.slice(0,-3)}.html`:e}function Bl(e=window.location.pathname){return ql.get(nr(e))??{path:nr(e),title:"兼容路由",section:"home",description:"This route is not migrated yet; it is reserved for compatibility."}}const ir="ui-configs",rr="sd-trainer-ui-advanced-links",sr={dataset_tagger_api_endpoint:"https://api.openai.com/v1",dataset_tagger_api_key:"",dataset_tagger_api_model:"",dataset_tagger_api_prompt:"Describe this image for image model training. Return a concise caption only, without markdown or explanations."},ar={showTensorboard:!1,showLegacyTagEditor:!1},zl=[{key:"dataset_tagger_api_endpoint",label:"标签编辑器 API 地址",description:"OpenAI-compatible endpoint used by native tag editor API captioning.",type:"text"},{key:"dataset_tagger_api_key",label:"标签编辑器 API Key",description:"Stored locally in the browser and masked in the UI.",type:"password"},{key:"dataset_tagger_api_model",label:"标签编辑器 API 模型",description:"Model name sent to the API captioning provider.",type:"text"},{key:"dataset_tagger_api_prompt",label:"标签编辑器 API 提示词",description:"Prompt used for natural-language dataset captions.",type:"textarea"}];function or(e,t){try{const n=localStorage.getItem(e);return n?{...t,...JSON.parse(n)}:t}catch{return t}}function lr(e,t){localStorage.setItem(e,JSON.stringify(t))}const Gl=he({name:"SettingsPage",setup(){const e=Ie({...sr,...or(ir,{})}),t=Ie(or(rr,ar)),n=Ie({text:"设置仅保存在当前浏览器。API Key 不会写入项目文件。"});function i(){lr(ir,e),lr(rr,t),n.text="设置已保存。"}function r(){Object.assign(e,sr),Object.assign(t,ar),i(),n.text="已恢复默认设置。"}function s(o){const l={id:o.key,value:e[o.key]??"","aria-label":o.label,onInput:d=>{e[o.key]=d.target.value}};return o.type==="textarea"?a("textarea",{...l,rows:5}):a("input",{...l,type:o.type,autocomplete:o.type==="password"?"off":"on"})}return()=>a("section",{class:"settings-page"},[a("div",{class:"settings-header"},[a("p",{class:"eyebrow"},"Source-owned settings"),a("h1","UI 设置"),a("p",{class:"summary"},"配置原生标签编辑器 API 打标和旧入口显示策略。")]),a("form",{class:"settings-form",onSubmit:o=>{o.preventDefault(),i()}},[a("section",{class:"settings-card"},[a("h2","标签编辑器 API"),...zl.map(o=>a("label",{class:"settings-field",for:o.key},[a("span",{class:"settings-label"},o.label),s(o),a("small",o.description)]))]),a("section",{class:"settings-card"},[a("h2","旧功能入口"),a("label",{class:"settings-toggle"},[a("input",{type:"checkbox",checked:t.showTensorboard,onChange:o=>{t.showTensorboard=o.target.checked}}),a("span","显示 TensorBoard 入口")]),a("label",{class:"settings-toggle"},[a("input",{type:"checkbox",checked:t.showLegacyTagEditor,onChange:o=>{t.showLegacyTagEditor=o.target.checked}}),a("span","显示经典标签编辑入口")])]),a("div",{class:"settings-actions"},[a("button",{class:"primary",type:"submit"},"保存设置"),a("button",{type:"button",onClick:r},"恢复默认"),a("span",{class:"settings-status"},n.text)])])])}}),ps={"/":{kicker:"Source Frontend",title:"SD Trainer Next",body:"Source-owned trainer home for the frontend recovery branch. It keeps stable navigation while native editor, tagger, settings, and Anima routes move out of compiled dist patches.",actions:[{label:"Open Anima LoRA",href:"/lora/sd3.html"},{label:"Open Native Tag Editor",href:"/native-tageditor.html"},{label:"Open Settings",href:"/other/settings.html"}],checks:["Source frontend home is owned by frontend/source.","Production dist replacement remains guarded by dry-run sync.","Mature SD/Flux training routes remain compatibility entries."],status:"Source-owned shell",nextStep:"Promote the remaining compatibility routes into reusable source renderers."},"/tageditor.html":{kicker:"Tools",title:"Classic Tag Editor",body:"Source-owned compatibility entry for the classic tag editor route. It now forwards old links toward the maintained native editor instead of depending on a legacy proxy.",actions:[{label:"Open Native Tag Editor",href:"/native-tageditor.html"},{label:"Open Dataset Debug",href:"/dataset-editor.html"}],checks:["Classic tag editor remains a source-owned compatibility entry.","Native tag editing stays on /native-tageditor.html.","The dataset-editor fallback remains available for debugging."],status:"Source-owned replacement",nextStep:"Keep old tag editor links stable while native editing matures."},"/lora/index.html":{kicker:"Training",title:"LoRA Training",body:"Source-owned training index for stable links while mature training pages continue to keep their backend contracts.",actions:[{label:"Open Anima LoRA",href:"/lora/sd3.html"},{label:"Open Anima Finetune",href:"/lora/anima-finetune.html"}],checks:["Mature training routes remain compatibility entries until their schemas are intentionally migrated.","Anima routes are source-owned and share the local training renderer.","This page replaces the generic compatibility placeholder for /lora/index.html."],status:"Source-owned index",nextStep:"Link migrated Anima pages with mature training compatibility entries."},"/lora/basic.html":{kicker:"Training",title:"Basic Training",body:"Compatibility route for the basic LoRA training page. The source shell keeps the URL stable without changing mature training behavior.",actions:[{label:"Open LoRA Index",href:"/lora/index.html"},{label:"Open Settings",href:"/other/settings.html"}],checks:["Mature training routes remain compatibility entries.","No SD/Flux training backend contract is changed by this source page.","Future migration can attach a schema section module to this route."],status:"Compatibility route",nextStep:"Reuse the training schema renderer only if this mature page needs changes."},"/lora/master.html":{kicker:"Training",title:"Stable Diffusion Training",body:"Compatibility route for Stable Diffusion training. It is intentionally not rebuilt while the Anima source renderer is being stabilized.",actions:[{label:"Open LoRA Index",href:"/lora/index.html"},{label:"Open Parameter Notes",href:"/lora/params.html"}],checks:["Mature training routes remain compatibility entries.","The route is declared and generated from frontend/source.","Schema renderer improvements can be reused here later."],status:"Compatibility route",nextStep:"Keep this page stable while Anima training is completed first."},"/lora/flux.html":{kicker:"Training",title:"Flux LoRA",body:"Compatibility route for Flux LoRA training. The source shell owns the route while avoiding changes to the mature Flux form.",actions:[{label:"Open LoRA Index",href:"/lora/index.html"},{label:"Open Tools",href:"/lora/tools.html"}],checks:["Mature training routes remain compatibility entries.","Flux backend and launch behavior are not changed here.","The route no longer depends on a generic placeholder in the source build."],status:"Compatibility route",nextStep:"Defer Flux form migration until source renderer coverage is broader."},"/dreambooth/index.html":{kicker:"Training",title:"Dreambooth",body:"Source-owned compatibility route for Dreambooth links while training schema migration remains focused on Anima.",actions:[{label:"Open LoRA Index",href:"/lora/index.html"},{label:"Open Settings",href:"/other/settings.html"}],checks:["Mature training routes remain compatibility entries.","Dreambooth route generation is now covered by frontend/source.","No Dreambooth training behavior is changed by this page."],status:"Compatibility route",nextStep:"Keep Dreambooth links stable while source training pages expand."},"/lora/params.html":{kicker:"Reference",title:"Training Parameters",body:"Source-owned parameter reference route reserved for renderer and schema migration notes.",actions:[{label:"Open Anima LoRA",href:"/lora/sd3.html"},{label:"Open Changelog",href:"/other/changelog.html"}],checks:["Mature training routes remain compatibility entries.","Parameter documentation can now evolve from source files.","The route keeps historical links stable."],status:"Reference route",nextStep:"Move parameter documentation into source-owned structured content."},"/tensorboard.html":{kicker:"Monitoring",title:"TensorBoard",body:"This source-owned page preserves the TensorBoard route while the backend service remains launched by the trainer process.",actions:[{label:"Open TensorBoard",href:"/tensorboard/"},{label:"Launch tensorboard.py",href:"/api/tensorboard/start"}],checks:["Route stays available as /tensorboard.html.","The page does not bundle or start TensorBoard at portable runtime.","Navigation remains source-owned instead of patched into compiled VuePress assets."],status:"Runtime bridge route",nextStep:"Add a source-owned launch/status panel after task APIs are stabilized."},"/lora/tools.html":{kicker:"Tools",title:"LoRA Script Tools",body:"A source-owned landing page for script utilities, kept separate from the mature SD and Flux training forms.",actions:[{label:"Open Source Frontend",href:"/lora/tools.html"},{label:"Review scripts/run_gui.py",href:"/other/about.html"}],checks:["The public tools URL is generated from frontend/source.","Tooling notes stay visible without editing frontend/dist by hand.","Future utility controls can be added here without touching training schemas."],status:"Tools route",nextStep:"Add concrete tool actions from source-owned route specs."},"/task.html":{kicker:"Runtime",title:"Tasks",body:"This page reserves the task route for source-owned job status UI while backend task APIs are kept unchanged.",actions:[{label:"Open Tasks",href:"/task.html"},{label:"Open Settings",href:"/other/settings.html"}],checks:["The task route has a real source page instead of a generic compatibility placeholder.","Backend execution contracts stay outside this static page.","The page can grow into a task monitor after the source renderer stabilizes."],status:"Task route shell",nextStep:"Connect backend task status once the frontend replacement path is stable."},"/help/guide.html":{kicker:"Help",title:"Getting Started",body:"A source-owned guide route for workflow notes and frontend migration status, independent from vendored VuePress page data.",actions:[{label:"Open Guide",href:"/help/guide.html"},{label:"Open Native Tag Editor",href:"/native-tageditor.html"}],checks:["Guide content is now editable from frontend/source.","The native tag editor route remains a separate entry.","Classic tag editor fallback stays available through /tageditor.html."],status:"Guide route",nextStep:"Move getting-started copy into source-owned documentation blocks."},"/other/about.html":{kicker:"Project",title:"About SD Trainer Next",body:"This route records the source frontend ownership boundary and keeps project metadata out of minified dist patches.",actions:[{label:"Open Settings",href:"/other/settings.html"},{label:"Open Source Routes",href:"/"}],checks:["Source pages live under frontend/source.","Generated output targets build/frontend-source-dist.","Production replacement is guarded by scripts/sync_frontend_source_dist.py."],status:"Project route",nextStep:"Expose source ownership and packaging boundaries from maintained docs."},"/other/changelog.html":{kicker:"Release Notes",title:"Changelog",body:"A source-owned changelog route for visible frontend migration checkpoints before production dist replacement.",actions:[{label:"Open Changelog",href:"/other/changelog.html"},{label:"Open About",href:"/other/about.html"}],checks:["Native tag editor, tagger, settings, and Anima source routes are tracked in docs/design/frontend-source-of-truth-plan.md.","Manual frontend/dist surgery is being retired in small verified steps.","The current branch keeps frontend/dist unchanged until the sync step is explicitly applied."],status:"Migration route",nextStep:"Show frontend-source milestones from maintained release notes."}};function Jl(e){return e in ps}const Yl=he({name:"StaticInfoPage",props:{route:{type:Object,required:!0}},setup(e){return()=>{const t=ps[e.route.path]??{kicker:"Compatibility",title:e.route.title,body:e.route.description,actions:[{label:"Open Route",href:e.route.path}],checks:["This route is declared in frontend/source/src/routes.json."],status:"Compatibility route",nextStep:"Promote this route into a source-owned page when it becomes active work."},n=[{title:"Current Coverage",body:t.status??"Source-owned compatibility route"},{title:"Next Source Step",body:t.nextStep??t.checks[0]},{title:"Safety Contract",body:t.checks[1]??"Keep backend and portable runtime contracts unchanged."}];return a("main",{class:"content source-static-page"},[a("header",{class:"source-static-hero"},[a("div",[a("p",{class:"eyebrow"},t.kicker),a("h1",t.title),a("p",{class:"summary"},t.body)]),a("dl",{class:"source-static-meta"},[a("dt","Route"),a("dd",e.route.path),a("dt","Status"),a("dd",t.status??"Compatibility route")])]),a("div",{class:"source-static-actions"},t.actions.map(i=>a("a",{class:"source-static-action",href:i.href},i.label))),a("section",{class:"source-static-grid","aria-label":"Source page status"},n.map(i=>a("article",{class:"source-static-card"},[a("h2",i.title),a("p",i.body)]))),a("p",{class:"source-static-status"},t.nextStep??t.checks[0]),Ql(e.route),a("section",{class:"compat-panel source-static-contract"},[a("h2","Source Contract"),a("ul",t.checks.map(i=>a("li",i)))])])}}});function Ql(e){const t=Xl(e.path);if(!t)return null;const n=hi.filter(i=>i.section===t.section&&i.path!==e.path);return a("section",{class:"source-route-list","aria-label":"Training routes"},[a("div",{class:"source-route-list__header"},[a("h2",t.title),a("p",t.body)]),a("div",{class:"source-route-list__grid"},n.map(i=>a("a",{class:"source-route-card",href:i.path},[a("span",{class:"source-route-card__section"},Zl(i.path)),a("strong",i.title),a("small",i.description)])))])}function Xl(e){return e==="/lora/index.html"?{section:"training",title:"Training Routes",body:"Anima routes are source-owned now; mature SD, Flux, and Dreambooth routes stay as compatibility entries."}:e==="/lora/tools.html"?{section:"tools",title:"Tool Routes",body:"Tool and debugging routes are declared from source so they can be migrated without editing compiled dist assets."}:null}function Zl(e){return e==="/lora/sd3.html"||e==="/lora/anima-finetune.html"?"Source renderer":e==="/native-tageditor.html"||e==="/dataset-editor.html"||e==="/tagger.html"?"Source-owned tool":e==="/tageditor.html"?"Source replacement":"Compatibility route"}const Pn={phase:"idle",message:"配置参数后点击启动",download:{current:0,total:0,percent:0},tagging:{current:0,total:0}},ec={path:"",interrogator_model:"wd14-convnextv2-v2",threshold:.35,character_threshold:.6,add_rating_tag:!1,add_model_tag:!1,additional_tags:"",exclude_tags:"",escape_tag:!0,batch_input_recursive:!1,batch_output_action_on_conflict:"copy",replace_underscore:!0,download_endpoint:"",replace_underscore_excludes:"0_0, (o)_(o), +_+, +_-, ._., _, <|>_<|>, =_=, >_<, 3_3, 6_9, >_o, @_@, ^_^, o_o, u_u, x_x, |_|, ||_||"},tc=["wd14-convnextv2-v2","wd-convnext-v3","wd-swinv2-v3","wd-vit-v3","wd14-swinv2-v2","wd14-vit-v2","wd14-moat-v2","wd-eva02-large-tagger-v3","wd-vit-large-tagger-v3","cl_tagger_1_01"];function hs(e=0,t=0){return t<=0?0:Math.min(100,Math.round(e/t*100))}function nc(e){const t=e.download??{};if(typeof t.percent=="number")return Math.min(100,Math.round(t.percent));const n=t.bytes_total??0,i=t.bytes_current??0,r=t.total??0,s=t.current??0;return n>0&&r>0?Math.min(100,Math.round((s-1+i/n)/r*100)):hs(s,r)}async function Kt(e,t={}){return(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).json()}function Ve(e,t,n){return a("label",{class:"el-form-item tagger-field"},[a("span",{class:"el-form-item__label"},e),t,null])}const ic=he({name:"TaggerPage",setup(){const e=Ie({...ec}),t=Ie({...Pn}),n=Ze("");let i=0;async function r(){try{const S=await fetch("/api/tagger/status").then(E=>E.json());Object.assign(t,S.data??Pn)}catch{t.phase="error",t.message="无法读取 tagger 状态"}}function s(){window.clearInterval(i),r(),i=window.setInterval(r,1200)}async function o(){n.value="正在请求预下载...";const S=await Kt("/api/tagger/prefetch",{interrogator_model:e.interrogator_model,download_endpoint:e.download_endpoint});n.value=S.message??"",await r()}async function l(){if(!e.path.trim()){n.value="请先填写图片文件夹路径";return}n.value="正在提交打标任务...";const S=await Kt("/api/interrogate",{...e,path:e.path.replaceAll("\\","/")});n.value=S.message??"",await r()}async function d(){const S=await Kt("/api/tagger/cancel");n.value=S.message??"",await r()}async function p(){const S=await Kt("/api/tagger/reset");n.value=S.message??"",Object.assign(t,Pn),await r()}Lt(s),oi(()=>window.clearInterval(i));const f=(S,E,v="")=>a("input",{id:S,class:"el-input__inner",value:e[E],placeholder:v,onInput:M=>{e[E]=M.target.value}}),m=(S,E)=>a("input",{id:S,type:"number",min:0,max:1,step:.01,value:e[E],onInput:v=>{e[E]=Number(v.target.value)}}),x=(S,E)=>a("label",{class:"tagger-check"},[a("input",{id:S,type:"checkbox",checked:e[E],onChange:v=>{e[E]=v.target.checked}}),a("span",E)]);return()=>{var M,D;const S=nc(t),E=hs((M=t.tagging)==null?void 0:M.current,(D=t.tagging)==null?void 0:D.total),v=["downloading","tagging","pending","cancelling"].includes(t.phase);return a("main",{class:"tagger-page content"},[a("p",{class:"eyebrow"},"Source-owned tagger"),a("h1","Tagger 标注工具"),a("p",{class:"summary"},"使用本地 WD/CL tagger 模型为数据集批量生成 tag。"),a("section",{class:"example-container tagger-workbench"},[a("section",{class:"schema-container tagger-schema"},[a("form",[Ve("path",f("tagger-path","path","D:/datasets/my-lora/10_character")),Ve("interrogator_model",a("select",{id:"tagger-model",value:e.interrogator_model,onChange:R=>{e.interrogator_model=R.target.value}},tc.map(R=>a("option",{value:R},R)))),Ve("threshold",m("tagger-threshold","threshold")),Ve("character_threshold",m("tagger-character-threshold","character_threshold")),Ve("additional_tags",f("tagger-additional-tags","additional_tags")),Ve("exclude_tags",f("tagger-exclude-tags","exclude_tags")),Ve("download_endpoint",f("tagger-download-endpoint","download_endpoint")),Ve("batch_output_action_on_conflict",a("select",{id:"tagger-conflict",value:e.batch_output_action_on_conflict,onChange:R=>{e.batch_output_action_on_conflict=R.target.value}},["copy","prepend","ignore"].map(R=>a("option",{value:R},R)))),a("div",{class:"tagger-flags"},[x("tagger-rating","add_rating_tag"),x("tagger-model-tag","add_model_tag"),x("tagger-escape-tag","escape_tag"),x("tagger-recursive","batch_input_recursive"),x("tagger-replace-underscore","replace_underscore")])])]),a("div",{class:"right-container tagger-output"},[a("section",{class:"theme-default-content"},[a("main",[a("div",[a("h2","推荐参数"),a("p","阈值建议从 0.35 开始,角色阈值建议从 0.6 开始。"),a("p","启动、预下载、取消、重置和进度轮询现在由 frontend/source/src/tagger.ts 直接处理。")])])]),a("section",{id:"sd-tagger-dock",class:`sd-tagger-dock sd-tagger-dock--${t.phase}`},[a("div",{class:"sd-tagger-dock__status-line"},[a("span",{class:"sd-tagger-dock__phase","data-phase":t.phase},t.phase),a("span",{class:"sd-tagger-dock__message","data-status-message":""},t.message),a("button",{type:"button",class:"sd-tagger-dock__link",onClick:o},"预下载")]),a("div",{class:"sd-tagger-dock__meters is-visible","data-meters":""},[a("div",{class:"sd-tagger-dock__meter","data-block":"download"},[a("div",{class:"sd-tagger-dock__meter-head"},[a("span","模型下载"),a("span",{"data-download-meta":""},`${S}%`)]),a("div",{class:"sd-tagger-dock__track"},[a("div",{class:"sd-tagger-dock__fill sd-tagger-dock__fill--download","data-download-bar":"",style:{width:`${S}%`}})])]),a("div",{class:"sd-tagger-dock__meter","data-block":"tagging"},[a("div",{class:"sd-tagger-dock__meter-head"},[a("span","打标"),a("span",{"data-tagging-meta":""},`${E}%`)]),a("div",{class:"sd-tagger-dock__track"},[a("div",{class:"sd-tagger-dock__fill sd-tagger-dock__fill--tagging","data-tagging-bar":"",style:{width:`${E}%`}})])])]),a("div",{class:"sd-tagger-dock__buttons"},[a("button",{type:"button",class:"sd-tagger-dock__start","data-start-btn":"",onClick:v?d:l},v?"取消":"启动"),a("button",{type:"button",class:"sd-tagger-dock__reset",onClick:p},"重置")]),n.value?a("p",{class:"tagger-local-status"},n.value):null]),a("section",{id:"test-output"})])])])}}});function rc(e){return e.toUpperCase()==="RUNNING"}const sc=he({name:"TaskPage",setup(){const e=Ze([]),t=Ze("Loading tasks...");async function n(){var r;t.value="Loading tasks...";try{const o=await(await fetch("/api/tasks")).json();e.value=((r=o.data)==null?void 0:r.tasks)??[],t.value=e.value.length?`${e.value.length} task(s) loaded`:"No known tasks"}catch{e.value=[],t.value="Unable to load tasks"}}async function i(r){t.value=`Terminating ${r}...`;try{await fetch(`/api/tasks/terminate/${encodeURIComponent(r)}`),await n()}catch{t.value=`Unable to terminate ${r}`}}return Lt(n),()=>a("main",{class:"content task-page"},[a("header",{class:"task-header"},[a("div",[a("p",{class:"eyebrow"},"Runtime"),a("h1","Tasks"),a("p",{class:"summary"},"Source-owned task monitor for training jobs started in this server session.")]),a("button",{type:"button",class:"source-static-action",onClick:n},"Refresh Tasks")]),a("section",{class:"task-monitor","aria-label":"Task monitor"},[a("p",{class:"task-status"},t.value),e.value.length?a("div",{class:"task-list"},e.value.map(r=>a("article",{class:`task-card task-card--${r.status.toLowerCase()}`},[a("div",{class:"task-card__main"},[a("span",{class:"task-card__status"},r.status),a("strong",r.id),r.command?a("code",r.command):null]),a("div",{class:"task-card__actions"},[a("a",{href:`/train-log?task_id=${encodeURIComponent(r.id)}`},"Open Log"),a("a",{href:`/api/train/log/tail/${encodeURIComponent(r.id)}`},"Tail API"),rc(r.status)?a("button",{type:"button","data-task-action":"terminate",onClick:()=>i(r.id)},"Terminate"):null])]))):a("div",{class:"task-empty"},[a("strong","No tasks are currently known."),a("span","Start a training job from an Anima route and refresh this page to see it here.")])])])}}),ac=he({name:"TensorboardPage",setup(){return()=>a("main",{class:"content tensorboard-page"},[a("header",{class:"tensorboard-header"},[a("div",[a("p",{class:"eyebrow"},"Monitoring"),a("h1","TensorBoard"),a("p",{class:"summary"},"TensorBoard is started by the GUI process and exposed through the local proxy.")]),a("div",{class:"tensorboard-actions"},[a("a",{href:"/proxy/tensorboard/",target:"_blank",rel:"noreferrer"},"Open TensorBoard"),a("a",{href:"/task.html"},"Open Tasks")])]),a("section",{class:"tensorboard-panel"},[a("div",{class:"tensorboard-panel__status"},[a("strong","Proxy route"),a("code","/proxy/tensorboard/"),a("span","If the frame is empty, start a training run or confirm TensorBoard is enabled in gui.py.")]),a("iframe",{class:"tensorboard-frame",src:"/proxy/tensorboard/",title:"TensorBoard"})])])}}),oc=he({name:"SourceTrainerShell",setup(){const e=Bl();if(e.path==="/native-tageditor-standalone.html")return()=>a(tr,{standalone:!0});const t=e.path==="/other/settings.html"?a(Gl):e.path==="/tagger.html"?a(ic):e.path==="/tageditor.html"?a(Ll):Fl(e.path)?a(Ml,{route:e}):e.path==="/lora/params.html"?a(Wl):e.path==="/tensorboard.html"?a(ac):e.path==="/task.html"?a(sc):e.path==="/native-tageditor.html"||e.path==="/dataset-editor.html"?a(tr):Tl(e.path)?a(Ol,{route:e}):Jl(e.path)?a(Yl,{route:e}):a("main",{class:"content"},[a("p",{class:"eyebrow"},"Source-owned frontend shell"),a("h1",e.title),a("p",{class:"summary"},e.description),a("section",{class:"compat-panel"},[a("h2","Compatibility Contract"),a("ul",[a("li","Public routes are declared in frontend/source/src/routes.json."),a("li","The production output is static HTML/CSS/JS and can be served by FastAPI StaticFiles."),a("li","Build tooling stays in frontend/source and is not required at portable runtime.")])])]);return()=>a("div",{class:"shell"},[a("aside",{class:"sidebar","aria-label":"Trainer navigation"},[a("a",{class:"brand",href:"/"},"SD Trainer Next"),...Kl.map(n=>a("section",{class:"nav-group"},[a("h2",n.label),a("nav",hi.filter(i=>i.section===n.section).map(i=>a("a",{href:i.path,class:i.path===e.path?"active":""},i.title)))]))]),t])}});zo(oc).mount("#app"); +//# sourceMappingURL=index-CUAupED9.js.map diff --git a/frontend/dist/assets/index-CUAupED9.js.map b/frontend/dist/assets/index-CUAupED9.js.map new file mode 100644 index 00000000..d396b961 --- /dev/null +++ b/frontend/dist/assets/index-CUAupED9.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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","names":["makeMap","str","map","key","val","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isModelListener","extend","remove","arr","el","i","hasOwnProperty","hasOwn","isArray","isMap","toTypeString","isSet","isDate","isFunction","isString","isSymbol","isObject","isPromise","objectToString","value","toRawType","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","writable","looseToNumber","n","_globalThis","getGlobalThis","normalizeStyle","res","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","name","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","a","b","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","activeEffectScope","EffectScope","detached","l","currentEffectScope","current","fromParent","last","getCurrentScope","activeSub","pausedQueueEffects","ReactiveEffect","batch","cleanupEffect","prepareDeps","prevEffect","prevShouldTrack","shouldTrack","cleanupDeps","link","removeSub","isDirty","batchDepth","batchedSub","batchedComputed","sub","isComputed","startBatch","endBatch","e","next","error","err","head","tail","prev","removeDep","refreshComputed","computed","globalVersion","dep","prevSub","soft","nextSub","prevDep","nextDep","trackStack","pauseTracking","resetTracking","cleanup","Link","Dep","debugInfo","addSub","currentTail","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ARRAY_ITERATE_KEY","track","target","type","depsMap","trigger","newValue","oldTarget","run","targetIsArray","isArrayIndex","newLength","key2","reactiveReadArray","array","raw","toReactive","shallowReadArray","toRaw","toWrapped","isReadonly","toReadonly","isReactive","arrayInstrumentations","iterator","args","x","thisArg","apply","v","searchProxy","separator","noTracking","reduce","comparer","self","method","wrapValue","iter","isShallow","result","arrayProto","wrappedRetFn","needsWrap","methodFn","result2","wrappedFn","index","wrapInitialAccumulator","acc","isNonTrackableKeys","builtInSymbols","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","isRef","readonly","MutableReactiveHandler","isArrayWithIntegerKey","isOldValueReadonly","hadKey","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","createIterableMethod","rawTarget","targetIsMap","isPair","isKeyOnly","innerIterator","wrap","done","createReadonlyMethod","createInstrumentations","shallow","instrumentations","rawKey","has","callback","observed","proto","rawValue","valueToAdd","get","hadItems","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","reactive","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isProxy","markRaw","r","ref","createRef","RefImpl","useDirectValue","unref","ref2","shallowUnwrapHandlers","proxyRefs","objectWithRefs","ComputedRefImpl","setter","isSSR","getterOrOptions","debugOptions","getter","INITIAL_WATCHER_VALUE","cleanupMap","activeWatcher","onWatcherCleanup","cleanupFn","failSilently","owner","cleanups","watch","source","cb","options","immediate","deep","once","scheduler","augmentJob","call","reactiveGetter","source2","traverse","effect","boundCleanup","forceTrigger","isMultiSource","s","currentEffect","baseGetter","depth","scope","watchHandle","_cb","job","immediateFirstRun","currentWatcher","cleanup2","seen","callWithErrorHandling","instance","handleError","callWithAsyncErrorHandling","values","throwInDev","contextVNode","errorHandler","throwUnhandledErrorInProduction","cur","exposedInstance","errorInfo","errorCapturedHooks","logError","throwInProd","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","middleJob","middleJobId","getId","queueJob","jobId","lastJob","queueFlush","flushJobs","queuePostFlushCb","flushPreFlushCbs","flushPostFlushCbs","deduped","devtools$1","buffer","devtoolsNotInstalled","emit$1","event","setDevtoolsHook$1","hook","_a","_b","newHook","devtoolsInitApp","app","version","Fragment","Text","Comment","Static","devtoolsUnmountApp","devtoolsComponentAdded","createDevtoolsComponentHook","devtoolsComponentUpdated","_devtoolsComponentRemoved","devtoolsComponentRemoved","component","devtoolsComponentEmit","params","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","invokeDirectiveHook","vnode","prevVNode","bindings","oldBindings","binding","provide","currentInstance","provides","parentProvides","inject","defaultValue","treatDefaultAsFactory","getCurrentInstance","currentApp","ssrContextKey","useSSRContext","doWatch","flush","baseWatchOptions","runsImmediately","ssrCleanup","isInSSRComponentSetup","watchStopHandle","isPre","queuePostRenderEffect","isFirstRun","watch$1","instanceWatch","publicThis","createPathGetter","reset","setCurrentInstance","path","segments","TeleportEndKey","isTeleport","leaveCbKey","setTransitionHooks","hooks","defineComponent","extraOptions","markAsyncBoundary","isTemplateRefKey","refs","desc","pendingSetRefMap","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","isAsyncWrapper","refValue","getComponentPublicInstance","oldRef","setupState","rawSetupState","canSetSetupRef","canSetRef","invalidatePendingSetRef","oldRawRefAtom","_isString","_isRef","doSet","existing","newVal","pendingSetRef","isKeepAlive","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","createHook","lifecycle","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","NULL_DYNAMIC_COMPONENT","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","hasSetupBinding","state","PublicInstanceProxyHandlers","data","props","accessCache","appContext","shouldCacheAccess","publicGetter","cssModule","globalProperties","cssModules","descriptor","normalizePropsOrEmits","applyOptions","callHook","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","render","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","inheritAttrs","components","directives","filters","resolveInjections","methodHandler","opt","set","createWatcher","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","h","handler","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","cached","resolved","m","mergeOptions","to","from","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","pluginCleanupFns","isMounted","plugin","mixin","directive","rootContainer","isHydrate","namespace","createVNode","lastApp","getModelModifiers","modelName","emit","rawArgs","modifiers","handlerName","onceHandler","mixinEmitsCache","normalizeEmitsOptions","comp","hasExtends","extendEmits","raw2","normalizedFromExtend","isEmitListener","renderComponentRoot","Component","withProxy","propsOptions","slots","attrs","renderCache","fallthroughAttrs","proxyToUse","thisProxy","normalizeVNode","render2","getFunctionalFallthrough","root","keys","shapeFlag","filterModelListeners","cloneVNode","shouldUpdateComponent","nextVNode","optimized","prevProps","prevChildren","nextProps","nextChildren","patchFlag","emits","hasPropsChanged","dynamicProps","hasPropValueChanged","emitsOptions","nextKeys","nextProp","prevProp","updateHOCHostEl","parent","suspense","internalObjectProto","createInternalObject","isInternalObject","initProps","rawProps","isStateful","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","mixinPropsCache","normalizePropsOptions","extendProps","normalizedKey","validatePropName","prop","propType","shouldCast","shouldCastTrue","typeName","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","children","assignSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","initFeatureFlags","queueEffectWithSuspense","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","slotScopeIds","isSameVNodeType","getNextHostNode","unmount","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","removeStaticNode","mountElement","customElement","patchElement","vnodeHook","transition","dirs","mountChildren","resolveChildrenNamespace","setScopeId","invokeVNodeHook","needCallTransitionHooks","needTransition","scopeId","subTree","isSuspense","parentVNode","child","cloneIfMounted","dynamicChildren","oldProps","newProps","toggleRecurse","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","placeholder","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","update","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","scopedInitialVNode","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","unmountChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","anchorVNode","resolveAsyncComponentPlaceholder","move","moveType","leave","delayLeave","afterLeave","remove2","performLeave","wasLeaving","doRemove","cacheIndex","memo","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","shouldInvalidateMemo","removeFragment","performRemove","bum","um","invalidateMount","teleportEnd","isFlushing","currentNamespace","allowed","ch1","ch2","len","arrI","subComponent","anchorVnode","currentBlock","isBlockTreeEnabled","inVOnce","isVNode","normalizeKey","normalizeRef","ref_key","ref_for","createBaseVNode","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","style","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","createTextVNode","text","flag","slot","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","setInSSRSetupState","g","registerGlobalSetter","setters","unsetCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","createSetupContext","isAsyncSetup","resolvedResult","handleSetupResult","finishComponentSetup","skipOptions","attrsProxyHandlers","computed$1","propsOrChildren","policy","tt","unsafeToTrustedHTML","svgNS","mathmlNS","doc","templateContainer","nodeOps","tag","is","node","selector","content","before","template","wrapper","vtcKey","patchClass","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","CSS_VAR_TEXT","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","shouldPreserveTextareaResizeStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","attrName","needRemove","addEventListener","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","originalStop","handlers","isNativeOn","patchProp","shouldSetAsProp","shouldSetAsPropForVueCE","camelize$1","rendererOptions","renderer","ensureRenderer","createApp","mount","containerOrSelector","normalizeContainer","resolveRootNamespace","defineTrainingRow","fields","defineTrainingSection","title","installTrainingPathBrowseBridge","onBrowse","listener","detail","renderTrainingField","form","field","matchesVisibilityRule","renderFieldDescription","renderSliderField","renderTrainingTableField","renderTextInput","renderTrainingFields","renderTrainingFieldRow","sectionAnchorId","renderTrainingSection","renderTrainingSectionSpec","section","renderTrainingSectionItem","renderTrainingSchemaSections","sections","renderTrainingWorkbench","formPanel","previewPanel","renderParameterPreview","code","renderRunControls","actions","status","action","previewToml","tomlValue","description","rule","input","_","itemIndex","ANIMA_STORAGE_KEY","ANIMA_ROUTES","animaDefaults","animaModelAssetSection","animaDatasetOutputSection","animaTrainingSection","animaLoraAdapterSection","animaParametersSection","animaCacheSection","animaPreviewSection","animaDebugSection","animaNoiseSection","animaDataEnhancementSection","animaOtherSection","animaDistributedSection","animaSectionsForPlan","plan","isAnimaRoute","AnimaRoutePage","animaForm","loadStoredForm","importConfigInput","parameterFilter","runResult","removePathBrowseBridge","payload","normalizePath","saveForm","stored","readStoredForms","loadForm","resetForm","defaultFormForPlan","exportConfig","blob","url","importConfigFile","file","imported","runTraining","runResultFromResponse","visibleSections","filterSections","renderWorkflowSummary","renderRunResult","stringValue","requiredPathKeys","completedPaths","fieldCount","countVisibleFields","ready","count","countVisibleSectionItem","fieldMatchesVisibility","query","needle","filterSectionItem","sectionTitle","fieldMatches","ClassicTagEditorPage","matureTrainingSpecs","isMatureTrainingRoute","MatureTrainingPage","spec","nativeDatasetEditorMarkup","NativeTagEditorPage","__vitePreload","flattenFields","items","fieldKind","ParametersPage","loraPlan","finetunePlan","total","routes","routeData","routeByPath","route","navGroups","pathname","currentRoute","UI_CONFIGS_KEY","ADVANCED_LINKS_KEY","DEFAULT_UI_CONFIGS","DEFAULT_ADVANCED_LINKS","FIELDS","readJson","fallback","writeJson","SettingsPage","uiConfigs","advanced","save","fieldControl","common","staticInfoPages","isStaticInfoRoute","StaticInfoPage","cards","card","renderRouteHub","check","hub","routeHubFor","trainingRoutes","routeStatus","defaultStatus","taggerFormDefaults","modelOptions","pct","downloadPct","download","bytesTotal","bytesCurrent","fileTotal","fileIndex","apiPost","label","control","TaggerPage","taggerForm","taggerStatus","statusText","pollTimer","refreshStatus","response","startPolling","prefetchModel","runTagger","cancelTagger","resetTagger","textInput","numberInput","checkbox","dPct","tPct","busy","model","isRunning","TaskPage","tasks","refreshTasks","terminateTask","taskId","task","TensorboardPage","App","routeContent","group"],"ignoreList":[0,1,2,3],"sources":["../../../frontend/source/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../frontend/source/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../frontend/source/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../frontend/source/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../frontend/source/src/trainingRenderer.ts","../../../frontend/source/src/animaSchema.ts","../../../frontend/source/src/anima.ts","../../../frontend/source/src/classicTagEditor.ts","../../../frontend/source/src/matureTraining.ts","../../../frontend/source/src/nativeDatasetEditorMarkup.ts","../../../frontend/source/src/nativeTagEditor.ts","../../../frontend/source/src/parameters.ts","../../../frontend/source/src/routes.ts","../../../frontend/source/src/settings.ts","../../../frontend/source/src/staticPages.ts","../../../frontend/source/src/tagger.ts","../../../frontend/source/src/tasks.ts","../../../frontend/source/src/tensorboard.ts","../../../frontend/source/src/main.ts"],"sourcesContent":["/**\n* @vue/shared v3.5.35\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n const map = /* @__PURE__ */ Object.create(null);\n for (const key of str.split(\",\")) map[key] = 1;\n return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-\\w/g;\nconst camelize = cacheStringFunction(\n (str) => {\n return str.replace(camelizeRE, (c) => c.slice(1).toUpperCase());\n }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n (str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n return source + JSON.stringify(\n options,\n (_, val) => typeof val === \"function\" ? val.toString() : val\n );\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"CACHED\": -1,\n \"-1\": \"CACHED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `CACHED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n if (!styles) return \"\";\n if (isString(styles)) return styles;\n let ret = \"\";\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>|?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n return key.replace(\n cssVarNameEscapeSymbolsRE,\n (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n );\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length) return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b) return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nfunction normalizeCssVarValue(value) {\n if (value == null) {\n return \"initial\";\n }\n if (typeof value === \"string\") {\n return value === \"\" ? \" \" : value;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\n \"[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:\",\n value\n );\n }\n }\n return String(value);\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeCssVarValue, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.5.35\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { extend, hasChanged, isArray, isIntegerKey, isSymbol, isMap, hasOwn, isObject, makeMap, capitalize, toRawType, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, remove, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal track `on` calls, allow `on` call multiple times\n */\n this._on = 0;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this._warnOnRun = true;\n this.__v_skip = true;\n if (!detached && activeEffectScope) {\n if (activeEffectScope.active) {\n this.parent = activeEffectScope;\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n } else {\n this._active = false;\n this._warnOnRun = false;\n }\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && this._warnOnRun) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n if (++this._on === 1) {\n this.prevScope = activeEffectScope;\n activeEffectScope = this;\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n if (this._on > 0 && --this._on === 0) {\n if (activeEffectScope === this) {\n activeEffectScope = this.prevScope;\n } else {\n let current = activeEffectScope;\n while (current) {\n if (current.prevScope === this) {\n current.prevScope = this.prevScope;\n break;\n }\n current = current.prevScope;\n }\n }\n this.prevScope = void 0;\n }\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\",\n \"EVALUATED\": 128,\n \"128\": \"EVALUATED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope) {\n if (activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n } else {\n this.flags &= -2;\n }\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= -65;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= -3;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= -2;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= -9;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= -17;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {\n return;\n }\n computed.flags |= 2;\n const dep = computed.dep;\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed.flags |= 128;\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= -3;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= -5;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n // TODO isolatedDeclarations \"__v_skip\"\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n /**\n * @internal\n */\n this.__v_skip = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nfunction toWrapped(target, item) {\n if (isReadonly(target)) {\n return isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item);\n }\n return toReactive(item);\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, (item) => toWrapped(this, item));\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toWrapped(this, value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(\n this,\n \"filter\",\n fn,\n thisArg,\n (v) => v.map((item) => toWrapped(this, item)),\n arguments\n );\n },\n find(fn, thisArg) {\n return apply(\n this,\n \"find\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(\n this,\n \"findLast\",\n fn,\n thisArg,\n (item) => toWrapped(this, item),\n arguments\n );\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimization required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", (item) => toWrapped(this, item));\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (!result.done) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n let wrappedFn = fn;\n let wrapInitialAccumulator = false;\n if (arr !== self) {\n if (needsWrap) {\n wrapInitialAccumulator = args.length === 0;\n wrappedFn = function(acc, item, index) {\n if (wrapInitialAccumulator) {\n wrapInitialAccumulator = false;\n acc = toWrapped(self, acc);\n }\n return fn.call(this, acc, toWrapped(self, item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n const result = arr[method](wrappedFn, ...args);\n return wrapInitialAccumulator ? toWrapped(self, result) : result;\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n const value = targetIsArray && isIntegerKey(key) ? res : res.value;\n return isReadonly2 && isObject(value) ? readonly(value) : value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n const isArrayWithIntegerKey = isArray(target) && isIntegerKey(key);\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target[key]\n );\n }\n return true;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return extend(\n // inheriting all iterator properties\n Object.create(innerIterator),\n {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n }\n }\n );\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return target.size;\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n const target = toRaw(this);\n const proto = getProto(target);\n const rawValue = toRaw(value);\n const valueToAdd = !shallow && !isShallow(value) && !isReadonly(value) ? rawValue : value;\n const hadKey = proto.has.call(target, valueToAdd) || hasChanged(value, valueToAdd) && proto.has.call(target, value) || hasChanged(rawValue, valueToAdd) && proto.has.call(target, rawValue);\n if (!hadKey) {\n target.add(valueToAdd);\n trigger(target, \"add\", valueToAdd, valueToAdd);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction reactive(target) {\n if (/* @__PURE__ */ isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n if (target[\"__v_skip\"] || !Object.isExtensible(target)) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = targetTypeMap(toRawType(target));\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\n// @__NO_SIDE_EFFECTS__\nfunction isReactive(value) {\n if (/* @__PURE__ */ isReadonly(value)) {\n return /* @__PURE__ */ isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\n// @__NO_SIDE_EFFECTS__\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? /* @__PURE__ */ toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? /* @__PURE__ */ reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? /* @__PURE__ */ readonly(value) : value;\n\n// @__NO_SIDE_EFFECTS__\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction ref(value) {\n return createRef(value, false);\n}\n// @__NO_SIDE_EFFECTS__\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (/* @__PURE__ */ isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return /* @__PURE__ */ isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (/* @__PURE__ */ isRef(oldValue) && !/* @__PURE__ */ isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, key, _defaultValue) {\n this._object = _object;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n this._key = isSymbol(key) ? key : String(key);\n this._raw = toRaw(_object);\n let shallow = true;\n let obj = _object;\n if (!isArray(_object) || isSymbol(this._key) || !isIntegerKey(this._key)) {\n do {\n shallow = !isProxy(obj) || isShallow(obj);\n } while (shallow && (obj = obj[\"__v_raw\"]));\n }\n this._shallow = shallow;\n }\n get value() {\n let val = this._object[this._key];\n if (this._shallow) {\n val = unref(val);\n }\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n if (this._shallow && /* @__PURE__ */ isRef(this._raw[this._key])) {\n const nestedRef = this._object[this._key];\n if (/* @__PURE__ */ isRef(nestedRef)) {\n nestedRef.value = newVal;\n return;\n }\n }\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(this._raw, this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction toRef(source, key, defaultValue) {\n if (/* @__PURE__ */ isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return /* @__PURE__ */ ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n return new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n watchHandle();\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n oldValue = newValue;\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Map();\n if ((seen.get(value) || 0) >= depth) {\n return value;\n }\n seen.set(value, depth);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.35\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, watch as watch$1, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, customRef, shallowReactive, trigger, ReactiveEffect, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, hyphenate, hasChanged, looseToNumber, isModelListener, looseEqual, EMPTY_ARR, toRawType, makeMap, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\",\n \"COMPONENT_UPDATE\": 15,\n \"15\": \"COMPONENT_UPDATE\",\n \"APP_UNMOUNT_CLEANUP\": 16,\n \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\",\n [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n if (errorHandler) {\n pauseTracking();\n callWithErrorHandling(errorHandler, null, 10, [\n err,\n exposedInstance,\n errorInfo\n ]);\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else if (throwInProd) {\n throw err;\n } else {\n console.error(err);\n }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!(job.flags & 1)) {\n const jobId = getId(job);\n const lastJob = queue[queue.length - 1];\n if (!lastJob || // fast path when the job id is larger than the tail\n !(job.flags & 2) && jobId >= getId(lastJob)) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(jobId), 0, job);\n }\n job.flags |= 1;\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!currentFlushPromise) {\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (activePostFlushCbs && cb.id === -1) {\n activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n } else if (!(cb.flags & 1)) {\n pendingPostFlushCbs.push(cb);\n cb.flags |= 1;\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.flags & 2) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n cb();\n if (!(cb.flags & 4)) {\n cb.flags &= -2;\n }\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.flags & 4) {\n cb.flags &= -2;\n }\n if (!(cb.flags & 8)) cb();\n cb.flags &= -2;\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && !(job.flags & 8)) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n if (job.flags & 4) {\n job.flags &= ~1;\n }\n callWithErrorHandling(\n job,\n job.i,\n job.i ? 15 : 14\n );\n if (!(job.flags & 4)) {\n job.flags &= ~1;\n }\n }\n }\n } finally {\n for (; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job) {\n job.flags &= -2;\n }\n }\n flushIndex = -1;\n queue.length = 0;\n flushPostFlushCbs(seen);\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n const count = seen.get(fn) || 0;\n if (count > RECURSION_LIMIT) {\n const instance = fn.i;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n }\n seen.set(fn, count + 1);\n return false;\n}\n\nlet isHmrUpdating = false;\nconst setHmrUpdating = (v) => {\n try {\n return isHmrUpdating;\n } finally {\n isHmrUpdating = v;\n }\n};\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (let i = 0; i < instances.length; i++) {\n const instance = instances[i];\n const oldComp = normalizeClassComponent(instance.type);\n let dirtyInstances = hmrDirtyComponents.get(oldComp);\n if (!dirtyInstances) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n }\n dirtyInstances.add(instance);\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n dirtyInstances.add(instance);\n instance.ceReload(newComp.styles);\n dirtyInstances.delete(instance);\n } else if (instance.parent) {\n queueJob(() => {\n if (!(instance.job.flags & 8)) {\n isHmrUpdating = true;\n instance.parent.update();\n isHmrUpdating = false;\n dirtyInstances.delete(instance);\n }\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n if (instance.root.ce && instance !== instance.root) {\n instance.root.ce._removeChildStyle(oldComp);\n }\n }\n queuePostFlushCb(() => {\n hmrDirtyComponents.clear();\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nfunction provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!currentInstance || currentInstance.isMounted) {\n warn$1(`provide() can only be used inside setup().`);\n }\n }\n if (currentInstance) {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = getCurrentInstance();\n if (instance || currentApp) {\n let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(getCurrentInstance() || currentApp);\n}\n\nconst ssrContextKey = /* @__PURE__ */ Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, flush, once } = options;\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const baseWatchOptions = extend({}, options);\n if (!!(process.env.NODE_ENV !== \"production\")) baseWatchOptions.onWarn = warn$1;\n const runsImmediately = cb && immediate || !cb && flush !== \"post\";\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else if (!runsImmediately) {\n const watchStopHandle = () => {\n };\n watchStopHandle.stop = NOOP;\n watchStopHandle.resume = NOOP;\n watchStopHandle.pause = NOOP;\n return watchStopHandle;\n }\n }\n const instance = currentInstance;\n baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);\n let isPre = false;\n if (flush === \"post\") {\n baseWatchOptions.scheduler = (job) => {\n queuePostRenderEffect(job, instance && instance.suspense);\n };\n } else if (flush !== \"sync\") {\n isPre = true;\n baseWatchOptions.scheduler = (job, isFirstRun) => {\n if (isFirstRun) {\n job();\n } else {\n queueJob(job);\n }\n };\n }\n baseWatchOptions.augmentJob = (job) => {\n if (cb) {\n job.flags |= 4;\n }\n if (isPre) {\n job.flags |= 2;\n if (instance) {\n job.id = instance.uid;\n job.i = instance;\n }\n }\n };\n const watchHandle = watch$1(source, cb, baseWatchOptions);\n if (isInSSRComponentSetup) {\n if (ssrCleanup) {\n ssrCleanup.push(watchHandle);\n } else if (runsImmediately) {\n watchHandle();\n }\n }\n return watchHandle;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\n\nconst pendingMounts = /* @__PURE__ */ new WeakMap();\nconst TeleportEndKey = /* @__PURE__ */ Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n );\n return null;\n } else {\n const target = select(targetSelector);\n if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n warn$1(\n `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n );\n }\n return target;\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n warn$1(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n name: \"Teleport\",\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n const {\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n o: { insert, querySelector, createText, createComment, parentNode }\n } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { dynamicChildren } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n const mount = (vnode, container2, anchor2) => {\n if (vnode.shapeFlag & 16) {\n mountChildren(\n vnode.children,\n container2,\n anchor2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountToTarget = (vnode = n2) => {\n const disabled2 = isTeleportDisabled(vnode.props);\n const target = vnode.target = resolveTarget(vnode.props, querySelector);\n const targetAnchor = prepareAnchor(target, vnode, createText, insert);\n if (target) {\n if (namespace !== \"svg\" && isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (parentComponent && parentComponent.isCE) {\n (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target);\n }\n if (!disabled2) {\n mount(vnode, target, targetAnchor);\n updateCssVars(vnode, false);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled2) {\n warn$1(\"Invalid Teleport target on mount:\", target, `(${typeof target})`);\n }\n };\n const queuePendingMount = (vnode) => {\n const mountJob = () => {\n if (pendingMounts.get(vnode) !== mountJob) return;\n pendingMounts.delete(vnode);\n if (isTeleportDisabled(vnode.props)) {\n const mountContainer = parentNode(vnode.el) || container;\n mount(vnode, mountContainer, vnode.anchor);\n updateCssVars(vnode, true);\n }\n mountToTarget(vnode);\n };\n pendingMounts.set(vnode, mountJob);\n queuePostRenderEffect(mountJob, parentSuspense);\n };\n if (n1 == null) {\n const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n if (isTeleportDeferred(n2.props) || parentSuspense && parentSuspense.pendingBranch) {\n queuePendingMount(n2);\n return;\n }\n if (disabled) {\n mount(n2, container, mainAnchor);\n updateCssVars(n2, true);\n }\n mountToTarget();\n } else {\n n2.el = n1.el;\n const mainAnchor = n2.anchor = n1.anchor;\n const pendingMount = pendingMounts.get(n1);\n if (pendingMount) {\n pendingMount.flags |= 8;\n pendingMounts.delete(n1);\n queuePendingMount(n2);\n return;\n }\n n2.targetStart = n1.targetStart;\n const target = n2.target = n1.target;\n const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n currentContainer,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n traverseStaticChildren(n1, n2, !!!(process.env.NODE_ENV !== \"production\"));\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n currentContainer,\n currentAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n false\n );\n }\n if (disabled) {\n if (!wasDisabled) {\n moveTeleport(\n n2,\n container,\n mainAnchor,\n internals,\n 1\n );\n } else {\n if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n n2.props.to = n1.props.to;\n }\n }\n } else {\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = n2.target = resolveTarget(\n n2.props,\n querySelector\n );\n if (nextTarget) {\n moveTeleport(\n n2,\n nextTarget,\n null,\n internals,\n 0\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Invalid Teleport target on update:\",\n target,\n `(${typeof target})`\n );\n }\n } else if (wasDisabled) {\n moveTeleport(\n n2,\n target,\n targetAnchor,\n internals,\n 1\n );\n }\n }\n updateCssVars(n2, disabled);\n }\n },\n remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const {\n shapeFlag,\n children,\n anchor,\n targetStart,\n targetAnchor,\n target,\n props\n } = vnode;\n const shouldRemove = doRemove || !isTeleportDisabled(props);\n const pendingMount = pendingMounts.get(vnode);\n if (pendingMount) {\n pendingMount.flags |= 8;\n pendingMounts.delete(vnode);\n }\n if (target) {\n hostRemove(targetStart);\n hostRemove(targetAnchor);\n }\n doRemove && hostRemove(anchor);\n if (!pendingMount && shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(\n child,\n parentComponent,\n parentSuspense,\n shouldRemove,\n !!child.dynamicChildren\n );\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n if (moveType === 0) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2;\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n if (!pendingMounts.has(vnode) && (!isReorder || isTeleportDisabled(props))) {\n if (shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n move(\n children[i],\n container,\n parentAnchor,\n 2\n );\n }\n }\n }\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n function hydrateAnchor(target2, targetNode) {\n let targetAnchor = targetNode;\n while (targetAnchor) {\n if (targetAnchor && targetAnchor.nodeType === 8) {\n if (targetAnchor.data === \"teleport start anchor\") {\n vnode.targetStart = targetAnchor;\n } else if (targetAnchor.data === \"teleport anchor\") {\n vnode.targetAnchor = targetAnchor;\n target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n targetAnchor = nextSibling(targetAnchor);\n }\n }\n function hydrateDisabledTeleport(node2, vnode2) {\n vnode2.anchor = hydrateChildren(\n nextSibling(node2),\n vnode2,\n parentNode(node2),\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n const target = vnode.target = resolveTarget(\n vnode.props,\n querySelector\n );\n const disabled = isTeleportDisabled(vnode.props);\n if (target) {\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16) {\n if (disabled) {\n hydrateDisabledTeleport(node, vnode);\n hydrateAnchor(target, targetNode);\n if (!vnode.targetAnchor) {\n prepareAnchor(\n target,\n vnode,\n createText,\n insert,\n // if target is the same as the main view, insert anchors before current node\n // to avoid hydrating mismatch\n parentNode(node) === target ? node : null\n );\n }\n } else {\n vnode.anchor = nextSibling(node);\n hydrateAnchor(target, targetNode);\n if (!vnode.targetAnchor) {\n prepareAnchor(target, vnode, createText, insert);\n }\n hydrateChildren(\n targetNode && nextSibling(targetNode),\n vnode,\n target,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n }\n updateCssVars(vnode, disabled);\n } else if (disabled) {\n if (vnode.shapeFlag & 16) {\n hydrateDisabledTeleport(node, vnode);\n vnode.targetStart = node;\n vnode.targetAnchor = nextSibling(node);\n }\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node, anchor;\n if (isDisabled) {\n node = vnode.el;\n anchor = vnode.anchor;\n } else {\n node = vnode.targetStart;\n anchor = vnode.targetAnchor;\n }\n while (node && node !== anchor) {\n if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\nfunction prepareAnchor(target, vnode, createText, insert, anchor = null) {\n const targetStart = vnode.targetStart = createText(\"\");\n const targetAnchor = vnode.targetAnchor = createText(\"\");\n targetStart[TeleportEndKey] = targetAnchor;\n if (target) {\n insert(targetStart, target, anchor);\n insert(targetAnchor, target, anchor);\n }\n return targetAnchor;\n}\n\nconst leaveCbKey = /* @__PURE__ */ Symbol(\"_leaveCb\");\nconst enterCbKey = /* @__PURE__ */ Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n const subTree = instance.subTree;\n return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n const child = children && children.length ? findNonCommentChild(children) : (\n // Keep explicit default-slot conditionals on the same transition path\n // as regular v-if branches, which render a comment placeholder.\n instance.subTree ? createCommentVNode() : void 0\n );\n if (!child) {\n return;\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getInnerChild$1(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n let enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance,\n // #11061, ensure enterHooks is fresh after clone\n (hooks) => enterHooks = hooks\n );\n if (innerChild.type !== Comment) {\n setTransitionHooks(innerChild, enterHooks);\n }\n let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {\n let leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n delete leavingHooks.afterLeave;\n oldInnerChild = void 0;\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n enterHooks.delayedLeave = () => {\n delayedLeave();\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n };\n } else {\n oldInnerChild = void 0;\n }\n } else if (oldInnerChild) {\n oldInnerChild = void 0;\n }\n return child;\n };\n }\n};\nfunction findNonCommentChild(children) {\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\")) break;\n }\n }\n }\n return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n if (!isHmrUpdating && leavingVNodesCache[key] === vnode) return;\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n el[enterCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n const done = el[enterCbKey].bind(null, false);\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n el[leaveCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n const done = el[leaveCbKey].bind(null, false);\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n const hooks2 = resolveTransitionHooks(\n vnode2,\n props,\n state,\n instance,\n postClone\n );\n if (postClone) postClone(hooks2);\n return hooks2;\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getInnerChild$1(vnode) {\n if (!isKeepAlive(vnode)) {\n if (isTeleport(vnode.type) && vnode.children) {\n return findNonCommentChild(vnode.children);\n }\n return vnode;\n }\n if (vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n vnode.transition = hooks;\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128) keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8236: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nfunction useId() {\n const i = getCurrentInstance();\n if (i) {\n return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useId() is called when there is no active component instance to be associated with.`\n );\n }\n return \"\";\n}\nfunction markAsyncBoundary(instance) {\n instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n const i = getCurrentInstance();\n const r = shallowRef(null);\n if (i) {\n const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n if (!!(process.env.NODE_ENV !== \"production\") && isTemplateRefKey(refs, key)) {\n warn$1(`useTemplateRef('${key}') already exists.`);\n } else {\n Object.defineProperty(refs, key, {\n enumerable: true,\n get: () => r.value,\n set: (val) => r.value = val\n });\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useTemplateRef() is called when there is no active component instance to be associated with.`\n );\n }\n const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n knownTemplateRefs.add(ret);\n }\n return ret;\n}\nfunction isTemplateRefKey(refs, key) {\n let desc;\n return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);\n}\n\nconst pendingSetRefMap = /* @__PURE__ */ new WeakMap();\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach(\n (r, i) => setRef(\n r,\n oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n parentSuspense,\n vnode,\n isUnmount\n )\n );\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n }\n return;\n }\n const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n warn$1(\n `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n );\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n const setupState = owner.setupState;\n const rawSetupState = toRaw(setupState);\n const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n warn$1(\n `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n );\n }\n if (knownTemplateRefs.has(rawSetupState[key])) {\n return false;\n }\n }\n if (isTemplateRefKey(refs, key)) {\n return false;\n }\n return hasOwn(rawSetupState, key);\n };\n const canSetRef = (ref2, key) => {\n if (!!(process.env.NODE_ENV !== \"production\") && knownTemplateRefs.has(ref2)) {\n return false;\n }\n if (key && isTemplateRefKey(refs, key)) {\n return false;\n }\n return true;\n };\n if (oldRef != null && oldRef !== ref) {\n invalidatePendingSetRef(oldRawRef);\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (canSetSetupRef(oldRef)) {\n setupState[oldRef] = null;\n }\n } else if (isRef(oldRef)) {\n const oldRawRefAtom = oldRawRef;\n if (canSetRef(oldRef, oldRawRefAtom.k)) {\n oldRef.value = null;\n }\n if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef(ref) || !rawRef.k ? ref.value : refs[rawRef.k];\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n } else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (canSetSetupRef(ref)) {\n setupState[ref] = refs[ref];\n }\n } else {\n const newVal = [refValue];\n if (canSetRef(ref, rawRef.k)) {\n ref.value = newVal;\n }\n if (rawRef.k) refs[rawRef.k] = newVal;\n }\n } else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n } else if (_isString) {\n refs[ref] = value;\n if (canSetSetupRef(ref)) {\n setupState[ref] = value;\n }\n } else if (_isRef) {\n if (canSetRef(ref, rawRef.k)) {\n ref.value = value;\n }\n if (rawRef.k) refs[rawRef.k] = value;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n };\n if (value) {\n const job = () => {\n doSet();\n pendingSetRefMap.delete(rawRef);\n };\n job.id = -1;\n pendingSetRefMap.set(rawRef, job);\n queuePostRenderEffect(job, parentSuspense);\n } else {\n invalidatePendingSetRef(rawRef);\n doSet();\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n }\n}\nfunction invalidatePendingSetRef(rawRef) {\n const pendingSetRef = pendingSetRefMap.get(rawRef);\n if (pendingSetRef) {\n pendingSetRef.flags |= 8;\n pendingSetRefMap.delete(rawRef);\n }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n if (hasLoggedMismatchError) {\n return;\n }\n console.error(\"Hydration completed but contains mismatches.\");\n hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n if (container.nodeType !== 1) return void 0;\n if (isSVGContainer(container)) return \"svg\";\n if (isMathMLContainer(container)) return \"mathml\";\n return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n const {\n mt: mountComponent,\n p: patch,\n o: {\n patchProp,\n createText,\n nextSibling,\n parentNode,\n remove,\n insert,\n createComment\n }\n } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n );\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const isFragmentStart = isComment(node) && node.data === \"[\";\n const onMismatch = () => handleMismatch(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n isFragmentStart\n );\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(node, \"__vnode\", vnode, true);\n def(node, \"__vueParentComponent\", parentComponent, true);\n }\n if (patchFlag === -2) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3) {\n if (vnode.children === \"\") {\n insert(vnode.el = createText(\"\"), parentNode(node), node);\n nextNode = node;\n } else {\n nextNode = onMismatch();\n }\n } else {\n if (node.data !== vnode.children) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text mismatch in`,\n node.parentNode,\n `\n - rendered on server: ${JSON.stringify(\n node.data\n )}\n - expected on client: ${JSON.stringify(vnode.children)}`\n );\n logMismatchError();\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (isTemplateNode(node)) {\n nextNode = nextSibling(node);\n replaceNode(\n vnode.el = node.content.firstChild,\n node,\n parentComponent\n );\n } else if (domType !== 8 || isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 || domType === 3) {\n nextNode = node;\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n } else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateFragment(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n break;\n default:\n if (shapeFlag & 1) {\n if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateElement(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n } else if (shapeFlag & 6) {\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n if (isFragmentStart) {\n nextNode = locateClosingAnchor(node);\n } else if (isComment(node) && node.data === \"teleport start\") {\n nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n } else {\n nextNode = nextSibling(node);\n }\n mountComponent(\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n optimized\n );\n if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n } else {\n subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n } else if (shapeFlag & 64) {\n if (domType !== 8) {\n nextNode = onMismatch();\n } else {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateChildren\n );\n }\n } else if (shapeFlag & 128) {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n getContainerType(parentNode(node)),\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateNode\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n const forcePatch = type === \"input\" || type === \"option\";\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n let needCallTransitionHooks = false;\n if (isTemplateNode(el)) {\n needCallTransitionHooks = needTransition(\n null,\n // no need check parentSuspense in hydration\n transition\n ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n const content = el.content.firstChild;\n if (needCallTransitionHooks) {\n const cls = content.getAttribute(\"class\");\n if (cls) content.$cls = cls;\n transition.beforeEnter(content);\n }\n replaceNode(content, el, parentComponent);\n vnode.el = el = content;\n }\n if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(\n el.firstChild,\n vnode,\n el,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && !isMismatchAllowed(el, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration children mismatch on`,\n el,\n `\nServer rendered element contains more child nodes than client vdom.`\n );\n logMismatchError();\n }\n while (next) {\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n } else if (shapeFlag & 8) {\n let clientText = vnode.children;\n if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n clientText = clientText.slice(1);\n }\n const { textContent } = el;\n if (textContent !== clientText && // innerHTML normalize \\r\\n or \\r into a single \\n in the DOM\n textContent !== clientText.replace(/\\r\\n|\\r/g, \"\\n\")) {\n if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text content mismatch on`,\n el,\n `\n - rendered on server: ${textContent}\n - expected on client: ${clientText}`\n );\n logMismatchError();\n }\n el.textContent = vnode.children;\n }\n }\n if (props) {\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n const isCustomElement = el.tagName.includes(\"-\");\n for (const key in props) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n // as it could have mutated the DOM in any possible way\n !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n logMismatchError();\n }\n if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n key[0] === \".\" || isCustomElement && !isReservedProp(key)) {\n patchProp(el, key, null, props[key], void 0, parentComponent);\n }\n }\n } else if (props.onClick) {\n patchProp(\n el,\n \"onClick\",\n null,\n props.onClick,\n void 0,\n parentComponent\n );\n } else if (patchFlag & 4 && isReactive(props.style)) {\n for (const key in props.style) props.style[key];\n }\n }\n let vnodeHooks;\n if (vnodeHooks = props && props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasCheckedMismatch = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n const isText = vnode.type === Text;\n if (node) {\n if (isText && !optimized) {\n if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n insert(\n createText(\n node.data.slice(vnode.children.length)\n ),\n container,\n nextSibling(node)\n );\n node.data = vnode.children;\n }\n }\n node = hydrateNode(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n } else if (isText && !vnode.children) {\n insert(vnode.el = createText(\"\"), container);\n } else {\n if (!hasCheckedMismatch) {\n hasCheckedMismatch = true;\n if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration children mismatch on`,\n container,\n `\nServer rendered element contains fewer child nodes than client vdom.`\n );\n logMismatchError();\n }\n }\n patch(\n null,\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(\n nextSibling(node),\n vnode,\n container,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && isComment(next) && next.data === \"]\") {\n return nextSibling(vnode.anchor = next);\n } else {\n logMismatchError();\n insert(vnode.anchor = createComment(`]`), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration node mismatch:\n- rendered on server:`,\n node,\n node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n `\n- expected on client:`,\n vnode.type\n );\n logMismatchError();\n }\n vnode.el = null;\n if (isFragment) {\n const end = locateClosingAnchor(node);\n while (true) {\n const next2 = nextSibling(node);\n if (next2 && next2 !== end) {\n remove(next2);\n } else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(\n null,\n vnode,\n container,\n next,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n if (parentComponent) {\n parentComponent.vnode.el = vnode.el;\n updateHOCHostEl(parentComponent, vnode.el);\n }\n return next;\n };\n const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === open) match++;\n if (node.data === close) {\n if (match === 0) {\n return nextSibling(node);\n } else {\n match--;\n }\n }\n }\n }\n return node;\n };\n const replaceNode = (newNode, oldNode, parentComponent) => {\n const parentNode2 = oldNode.parentNode;\n if (parentNode2) {\n parentNode2.replaceChild(newNode, oldNode);\n }\n let parent = parentComponent;\n while (parent) {\n if (parent.vnode.el === oldNode) {\n parent.vnode.el = parent.subTree.el = newNode;\n }\n parent = parent.parent;\n }\n };\n const isTemplateNode = (node) => {\n return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n };\n return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n let mismatchType;\n let mismatchKey;\n let actual;\n let expected;\n if (key === \"class\") {\n if (el.$cls) {\n actual = el.$cls;\n delete el.$cls;\n } else {\n actual = el.getAttribute(\"class\");\n }\n expected = normalizeClass(clientValue);\n if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n mismatchType = 2 /* CLASS */;\n mismatchKey = `class`;\n }\n } else if (key === \"style\") {\n actual = el.getAttribute(\"style\") || \"\";\n expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n const actualMap = toStyleMap(actual);\n const expectedMap = toStyleMap(expected);\n if (vnode.dirs) {\n for (const { dir, value } of vnode.dirs) {\n if (dir.name === \"show\" && !value) {\n expectedMap.set(\"display\", \"none\");\n }\n }\n }\n if (instance) {\n resolveCssVars(instance, vnode, expectedMap);\n }\n if (!isMapEqual(actualMap, expectedMap)) {\n mismatchType = 3 /* STYLE */;\n mismatchKey = \"style\";\n }\n } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n if (isBooleanAttr(key)) {\n actual = el.hasAttribute(key);\n expected = includeBooleanAttr(clientValue);\n } else if (clientValue == null) {\n actual = el.hasAttribute(key);\n expected = false;\n } else {\n if (el.hasAttribute(key)) {\n actual = el.getAttribute(key);\n } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n actual = el.value;\n } else {\n actual = false;\n }\n expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n }\n if (actual !== expected) {\n mismatchType = 4 /* ATTRIBUTE */;\n mismatchKey = key;\n }\n }\n if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n const postSegment = `\n - rendered on server: ${format(actual)}\n - expected on client: ${format(expected)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`;\n {\n warn$1(preSegment, el, postSegment);\n }\n return true;\n }\n return false;\n}\nfunction toClassSet(str) {\n return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const s of a) {\n if (!b.has(s)) {\n return false;\n }\n }\n return true;\n}\nfunction toStyleMap(str) {\n const styleMap = /* @__PURE__ */ new Map();\n for (const item of str.split(\";\")) {\n let [key, value] = item.split(\":\");\n key = key.trim();\n value = value && value.trim();\n if (key && value) {\n styleMap.set(key, value);\n }\n }\n return styleMap;\n}\nfunction isMapEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a) {\n if (value !== b.get(key)) {\n return false;\n }\n }\n return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n const root = instance.subTree;\n if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n const cssVars = instance.getCssVars();\n for (const key in cssVars) {\n const value = normalizeCssVarValue(cssVars[key]);\n expectedMap.set(`--${getEscapedCssVarName(key, false)}`, value);\n }\n }\n if (vnode === root && instance.parent) {\n resolveCssVars(instance.parent, instance.vnode, expectedMap);\n }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n [0 /* TEXT */]: \"text\",\n [1 /* CHILDREN */]: \"children\",\n [2 /* CLASS */]: \"class\",\n [3 /* STYLE */]: \"style\",\n [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n while (el && !el.hasAttribute(allowMismatchAttr)) {\n el = el.parentElement;\n }\n }\n const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n if (allowedAttr == null) {\n return false;\n } else if (allowedAttr === \"\") {\n return true;\n } else {\n const list = allowedAttr.split(\",\");\n if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n return true;\n }\n return list.includes(MismatchTypeString[allowedType]);\n }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n const id = requestIdleCallback(hydrate, { timeout });\n return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n const { top, left, bottom, right } = el.getBoundingClientRect();\n const { innerHeight, innerWidth } = window;\n return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n const ob = new IntersectionObserver((entries) => {\n for (const e of entries) {\n if (!e.isIntersecting) continue;\n ob.disconnect();\n hydrate();\n break;\n }\n }, opts);\n forEach((el) => {\n if (!(el instanceof Element)) return;\n if (elementIsVisibleInViewport(el)) {\n hydrate();\n ob.disconnect();\n return false;\n }\n ob.observe(el);\n });\n return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n if (query) {\n const mql = matchMedia(query);\n if (mql.matches) {\n hydrate();\n } else {\n mql.addEventListener(\"change\", hydrate, { once: true });\n return () => mql.removeEventListener(\"change\", hydrate);\n }\n }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n if (isString(interactions)) interactions = [interactions];\n let hasHydrated = false;\n const doHydrate = (e) => {\n if (!hasHydrated) {\n hasHydrated = true;\n teardown();\n hydrate();\n e.target.dispatchEvent(new e.constructor(e.type, e));\n }\n };\n const teardown = () => {\n forEach((el) => {\n for (const i of interactions) {\n el.removeEventListener(i, doHydrate);\n }\n });\n };\n forEach((el) => {\n for (const i of interactions) {\n el.addEventListener(i, doHydrate, { once: true });\n }\n });\n return teardown;\n};\nfunction forEachElement(node, cb) {\n if (isComment(node) && node.data === \"[\") {\n let depth = 1;\n let next = node.nextSibling;\n while (next) {\n if (next.nodeType === 1) {\n const result = cb(next);\n if (result === false) {\n break;\n }\n } else if (isComment(next)) {\n if (next.data === \"]\") {\n if (--depth === 0) break;\n } else if (next.data === \"[\") {\n depth++;\n }\n }\n next = next.nextSibling;\n }\n } else {\n cb(node);\n }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n hydrate: hydrateStrategy,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n __asyncHydrate(el, instance, hydrate) {\n let patched = false;\n (instance.bu || (instance.bu = [])).push(() => patched = true);\n const performHydrate = () => {\n if (patched) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.`\n );\n }\n return;\n }\n hydrate();\n };\n const doHydrate = hydrateStrategy ? () => {\n const teardown = hydrateStrategy(\n performHydrate,\n (cb) => forEachElement(el, cb)\n );\n if (teardown) {\n (instance.bum || (instance.bum = [])).push(teardown);\n }\n } : performHydrate;\n if (resolvedComp) {\n doHydrate();\n } else {\n load().then(() => !instance.isUnmounted && doHydrate());\n }\n },\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n markAsyncBoundary(instance);\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.update();\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createInnerComp(\n loadingComponent,\n instance\n );\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n invalidateMount(instance2.m);\n invalidateMount(instance2.a);\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n if (!!(process.env.NODE_ENV !== \"production\") && true) {\n instance2.__keepAliveStorageContainer = storageContainer;\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : vnode.type\n );\n if (name && !filter(name)) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (cached && (!current || !isSameVNodeType(cached, current))) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n if (isSuspense(instance.subTree.type)) {\n queuePostRenderEffect(() => {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }, instance.subTree.suspense);\n } else {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n if (vnode.type === Comment) {\n current = null;\n return vnode;\n }\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n vnode.shapeFlag &= -257;\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n pattern.lastIndex = 0;\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= -257;\n vnode.shapeFlag &= -513;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n const sourceIsArray = isArray(source);\n if (sourceIsArray || isString(source)) {\n const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n let needsWrap = false;\n let isReadonlySource = false;\n if (sourceIsReactiveArray) {\n needsWrap = !isShallow(source);\n isReadonlySource = isReadonly(source);\n source = shallowReadArray(source);\n }\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(\n needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i],\n i,\n void 0,\n cached && cached[i]\n );\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && (!Number.isInteger(source) || source < 0)) {\n warn$1(\n `The v-for range expects a positive integer value but got ${source}.`\n );\n ret = [];\n } else {\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n const hasProps = Object.keys(props).length > 0;\n if (name !== \"default\") props.name = name;\n return openBlock(), createBlock(\n Fragment,\n null,\n [createVNode(\"slot\", props, fallback && fallback())],\n hasProps ? -2 : 64\n );\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key;\n const rendered = createBlock(\n Fragment,\n {\n key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n (!validSlotContent && fallback ? \"_fb\" : \"\")\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $host: (i) => i.ce,\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (__VUE_OPTIONS_API__ && data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (hasOwn(props, key)) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate + -
    -
    - SD Trainer Next - -
    - -
    - - - - - -
    -
    - +
    diff --git a/frontend/dist/dreambooth/index.html b/frontend/dist/dreambooth/index.html index 96ebb8c2..cf6e32cf 100644 --- a/frontend/dist/dreambooth/index.html +++ b/frontend/dist/dreambooth/index.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - Dreambooth 训练 专家模式 | SD 训练 UI - - + + + SD Trainer Next + + -

    Dreambooth 训练 专家模式

    你所热爱的 就是你的参数

    参数预览
    Loading...
    Output
    - - - +
    - - diff --git a/frontend/dist/favicon.ico b/frontend/dist/favicon.ico deleted file mode 100644 index 30493c76..00000000 Binary files a/frontend/dist/favicon.ico and /dev/null differ diff --git a/frontend/dist/help/guide.html b/frontend/dist/help/guide.html index 1459bbde..cf6e32cf 100644 --- a/frontend/dist/help/guide.html +++ b/frontend/dist/help/guide.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - 新手上路 | SD 训练 UI - - + + + SD Trainer Next + + -
    Next Trainer

    新手上路

    1. 准备数据:训练图片 + 同名 .txt 标签;可用「工具与调试 → 数据集打标」。
    2. 选择训练类型(侧栏「训练」):
    3. 填写参数并开训:中栏表单 → 右栏「开始训练」。
    4. 查看进度训练监控Tensorboard

    从秋叶版迁移

    若你使用过 Akegarasu/lora-scripts(秋叶一键包),本版主要变化:

    • 品牌:项目名 lora-scripts-next / Next Trainer,侧栏按「训练 / 工具 / 帮助 / 其他」分组。
    • 导航:LoRA 与全量微调分栏;原「新手 / 专家」不再平铺(SD1.5 精简页:/lora/basic.html)。
    • Anima:LoRA 与 Finetune 分入口(Qwen + T5 + DiT)。
    • 监控:独立 训练监控页、Loss 曲线、/train-log 日志流。
    • 更多版本说明见 更新日志
    - - - +
    - - diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 01a086a2..cf6e32cf 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -1,41 +1,13 @@ - - + + - - - - - - - - - Next Trainer | SD 训练 UI - - + + + SD Trainer Next + + -

    Next Trainer

    lora-scripts-next · 下一代 图像生成模型 训练

    Author wochenlongopen in new window Github lora-scriptsopen in new window

    GitHub Repo starsGitHub forkslicenserelease

    lora-scripts-next(Next Trainer)是基于秋叶 lora-scripts下一代 Stable Diffusion 训练 WebUI:在浏览器里配参数、一键开训。

    LoRA 训练

    全量微调

    训练监控

    详细步骤见 帮助 → 新手上路;秋叶用户迁移说明也在该页。参数释义 · 训练参数说明 · 更新日志

    - - - +
    - - - diff --git a/frontend/dist/lora/anima-finetune.html b/frontend/dist/lora/anima-finetune.html index 0944a152..cf6e32cf 100644 --- a/frontend/dist/lora/anima-finetune.html +++ b/frontend/dist/lora/anima-finetune.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - Anima Finetune | SD 训练 UI - - + + + SD Trainer Next + + -

    anima-finetune ,一切皆有可能

    Anima Finetune

    Anima DiT 全量微调(full finetune)

    更新完整 DiT 权重,适合进阶玩家训练,需充足样本与高显存

    参数预览
    Loading...
    Output
    - - - +
    - - diff --git a/frontend/dist/lora/basic.html b/frontend/dist/lora/basic.html index 2a81bbca..cf6e32cf 100644 --- a/frontend/dist/lora/basic.html +++ b/frontend/dist/lora/basic.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - LoRA 训练 新手模式 | SD 训练 UI - - + + + SD Trainer Next + + -

    LoRA 训练 新手模式

    默认设置为你准备好了所有需要的参数,只需要你修改底模路径、训练集路径、训练轮数即可一键训练模型。

    训练 SDXL 模型的 LoRA 请前往专家模式,训练种类选择 sdxl-lora

    参数预览
    Loading...
    Output
    - - - +
    - - diff --git a/frontend/dist/lora/flux.html b/frontend/dist/lora/flux.html index 3ca02192..cf6e32cf 100644 --- a/frontend/dist/lora/flux.html +++ b/frontend/dist/lora/flux.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - Flux Stable Diffusion LoRA | SD 训练 UI - - + + + SD Trainer Next + + -

    Flux Stable Diffusion LoRA

    Flux.1 模型 LoRA 训练 专家模式

    别问为什么新手模式不行,问就是你都用 FLUX 了还想当新手?

    参数预览
    Loading...
    Output
    - - - +
    - - diff --git a/frontend/dist/lora/index.html b/frontend/dist/lora/index.html index 017f991f..cf6e32cf 100644 --- a/frontend/dist/lora/index.html +++ b/frontend/dist/lora/index.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - LoRA 训练 | SD 训练 UI - - + + + SD Trainer Next + + -

    LoRA 训练

    LoRA 为局部微调;全量微调请使用侧栏 Dreambooth 训练

    • Anima — 主推训练入口(Anima DiT)
    • Flux — Flux 模型 LoRA
    • Stable Diffusion — SD1.5 / SDXL(页顶切换训练种类,默认 SDXL)

    打标、看日志、脚本工具等在侧栏 工具与调试;参数说明在 帮助

    SD1.5 精简参数页仍保留:/lora/basic.html

    - - - +
    - - diff --git a/frontend/dist/lora/master.html b/frontend/dist/lora/master.html index c32d1043..cf6e32cf 100644 --- a/frontend/dist/lora/master.html +++ b/frontend/dist/lora/master.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - Stable Diffusion LoRA | SD 训练 UI - - + + + SD Trainer Next + + -

    Stable Diffusion LoRA

    SD1.5 与 SDXL 共用本页:在「训练种类」中切换。默认 SDXL。SD1.5 精简入口见 SD1.5 精简

    参数预览
    Loading...
    Output
    - - - +
    - - diff --git a/frontend/dist/lora/params.html b/frontend/dist/lora/params.html index 8003096a..cf6e32cf 100644 --- a/frontend/dist/lora/params.html +++ b/frontend/dist/lora/params.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - 训练参数调节 | SD 训练 UI - - + + + SD Trainer Next + + -

    训练参数调节

    设置训练用模型、数据集

    底模选择

    底模,尽量选祖宗级别的模型练出来的LoRA会更通用。如果在融合模型上训练可能会仅仅在你训练的底模上生成图片拥有不错的效果 但是失去了通用性。可以自己抉择

    什么是祖宗级别的模型?

    sd1.5 2.0、novelai 原版泄露模型。也就是非融合模型。融合模型比如 anything 系列融合了一大堆,orangemix系列融合了 anything 和 basil 更灵车了等等。在他们上面训练的会迁移性更差一些。

    训练分辨率

    训练时的分辨率 宽,高,可以是非正方形,但必须为64的整数倍。建议使用大于 512x512 且小于 1024x1024 的值,长宽比根据训练集的占比决定,一般来说方形的可以照顾到各种不同的分辨率。如果多数为长图可以使用512x768这种分辨率,如果宽图居多则可以使用768x512等。

    ARB 桶

    默认开启 ARB 桶,以允许使用非固定宽高比的图像来训练(简单来说就是不需要手动剪裁了)。ARB 桶在一定程度上会增加训练时间。 ARB桶分辨率必须大于训练分辨率

    学习率与优化器设置

    学习率设置

    UNet和TE的学习率通常是不同的,因为学习难度不同,通常UNet的学习率会比TE高 。

    如图所示,我们希望UNet和TE都处于一个恰好的位置(绿色部分),但是这个值我们不知道。

    如果UNet训练不足,那么生成的图会不像,UNet训练过度会导致面部扭曲或者产生大量色块。TE训练不足会让出图对Prompt的服从度低,TE训练过度则会生成多余的物品。

    总学习步数 = (图片数量 * 重复次数 * epoch)/ 批次大小

    以UNet学习率为1e-4为例,一般来说图片较少的时候训练人物需要至少1000步,训练画风则需要至少2500步,训练概念则需要至少3000步。这里只是最低的步数,图片多则需要更多步数。学习率更大可以适当减少步数,但并非线性关系,使用两倍的学习率需要使用比之前步数的一半更多的步数。

    决定学习率和步数的最好方法是先训练,再测试。一般比较好的初始值为UNet使用1e-4,TE使用5e-5

    学习率调整策略(lr_scheduler)

    推荐使用余弦退火cosine。如果开启预热,预热步数应该占总步数的5%-10%。

    如果使用带重启的余弦退火cosine_with_restarts,重启次数不应该超过4次。

    批次大小 (batch_size)

    Batch size 越大梯度越稳定,也可以使用更大的学习率来加速收敛,但是占用显存也更大。

    一般而言 2 倍的 batch_size 可以使用两倍的 UNet 学习率,但是TE学习率不能提高太多。

    优化器

    这里只介绍最常用的三种:

    • AdamW8bit:启用的int8优化的AdamW优化器,默认选项。
    • Lion:Google Brain发表的新优化器,各方面表现优于AdamW,同时占用显存更小,可能需要更大的batch size以保持梯度更新稳定。
    • D-Adaptation:FB发表的自适应学习率的优化器,调参简单,无需手动控制学习率,但是占用显存巨大(通常需要大于8G)。使用时设置学习率为1即可,同时学习率调整策略使用constant。需要添加"--optimizer_args decouple=True"来分离UNet和TE的学习率。(这些设置训练UI都会帮你自动处理)

    网络设置

    网络结构(LoRA/LoCon/LoHa/DyLoRA)

    不同网络结构对应不同的矩阵低秩分解方法。LoRA 是老祖宗,只控制模型中的线性层和1x1卷积层,后续的不同网络结构都是在 LoRA 的基础上进行改进。

    LyCORIS 对其进行改进,添加了其他几种算法:

    • LoCon 加入了对卷积层 (Conv) 的控制
    • LoHa(哈达玛积)和 LoKr(克罗内克积)
    • IA3

    理论上来说 LyCORIS 会比 LoRA 拥有更加强的微调效果,但是也更加容易过拟合。

    需要注意的是,不同的网络结构一般需要对应不同的 dim 以及学习率。

    网络大小

    网络大小应该根据实际的训练集图片数量和使用的网络结构决定

    network_dim

    上表中值为我自己的角色训练推荐值,训练画风和概念需要适当增加 Linear 部分大小。推荐值并非对各个不同的数据集都是最优的,需要自己实验得出最优。Conv 的大小最好不要超过8。

    网络Alpha(network_alpha)

    alpha在训练期间缩放网络的权重,alpha越小学习越慢,关系可以认为是负线性相关的。

    一般设置为dim/2或者dim/4。如果选择1,则需要提高学习率或者使用D-Adapation优化器。

    高级设置

    Caption 相关

    caption dropout

    网上关于这几个caption dropout的说明少之又少,甚至作者在文档里面也没有包含这些参数,只能在代码注释里面找到说明。但是caption dropout在某些情况下对模型性能有提升,所以拿出来讲一下。

    caption_dropout_rate:丢弃全部标签的概率,对一个图片概率不使用caption或class token

    caption_dropout_every_n_epochs:每N个epoch丢弃全部标签。

    caption_tag_dropout_rate:按逗号分隔的标签来随机丢弃tag的概率。如果使用DB+标签的训练方法训练画风,推荐使用这个参数,能够有效防止tag过拟合,一般选择0.2-0.5之间的值训练人物则无需开启

    token 热身

    两个token热身相关的参数。

    token_warmup_min:最小学习的token数量,token_warmup_step: 在多少步后达到最大token数量。

    token_warmup可以理解为另一种形式的caption dropout,但是如果不随机打乱token,则只会学习前面N个token。本人并未实测过启用这两个参数的效果,有兴趣可以自行实验。

    噪声相关

    噪声偏移(noise_offset)

    在训练过程中加入全局的噪声,改善图片的亮度变化范围(能生成更黑或者更白的图片)。

    如果需要开启,推荐设置值为0.1同时需要增加学习步数作为网络收敛更慢的补偿

    多分辨率/金字塔噪声 multires_noise_iterations、multires_noise_discount

    多分辨率/金字塔噪声相关参数。iteration设置在6-8,再高提升不大。discount设置在0.3-0.8之间,更小的值需要更多步数。

    其他一堆参数

    • CLIP_SKIP CLIP模型使用倒数第N层的输出,需要与底模使用的值保持一致,如果是基于NAI的二次元模型,应当使用2。如果是SD1.5等真实模型应当使用1。生成时也应该使用同样的值。

    • Min-SNR-γ 发表于 ICCV2023 上的一种加速扩散模型收敛的方法 Efficient Diffusion Training via Min-SNR Weighting Strategyopen in new window。不同样本批次的学习难度不同导致梯度方向不一致所以收敛慢,于是引入根据信噪比调整学习率比重。 设置在5左右的值是实验效果比较好的。

    • 数据增强相关 数据增强是在训练时实时对图片做变换的方法,可用于防止过拟合,能用的一共有四种: color_aug, flip_aug, face_crop_aug_range, random_crop。 其中只有翻转(flip_aug)能和cache latent兼容,因为latent可以直接翻转。 四种都不推荐使用,因为裁剪图片的两种cropping方法都会导致tag对应不上。color_aug无法启用cache latent导致训练慢,得不偿失。翻转的flip_aug在图像不对称的情况下表现差,会导致无法正确生成人物不对称的特征(刘海、发饰等)。

    • max_grad_norm 限制模型更新梯度的大小,改善数值稳定性。梯度的范数超过这个值将会被缩放到这个大小,一般来说无需设置

    • gradient_accumulation_steps 梯度累积步数,用于在小显存上模拟大batch size的效果。如果显存足够使用4以上的batch size就没必要启用

    • log_with、wandb_api_key 选择logger类型,可选tensorboard或者wandb。使用wandb需要指定api key。

    • prior_loss_weight DB训练当中先验部分的权重,控制正则化图像的强度,论文中使用的是1的值,如无特殊情况无需更改

    • debug_dataset 不训练模型,仅输出训练集元数据和训练参数信息,可以用来检查各项设置是否正确。

    • vae_batch_size cache lantent的时候VAE编码器的batch size,和训练效果无关。一般来说使用2-4可以加速一点cache latent的过程。因为VAE编码器本身参数量比较小,实测在Linux机器上8G的显卡也能开启4。Windows下系统占用显存较多,显存小于10G不建议开启。

    TIP

    文档尚未完结~!

    by 秋葉open in new window & Impossib1e嗨open in new window

    感谢 Impossib1e嗨 贡献的大量文档

    - - - +
    - - diff --git a/frontend/dist/lora/sd3.html b/frontend/dist/lora/sd3.html index a2aa8c1e..cf6e32cf 100644 --- a/frontend/dist/lora/sd3.html +++ b/frontend/dist/lora/sd3.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - Anima Stable Diffusion LoRA | SD 训练 UI - - + + + SD Trainer Next + + -

    Anima Stable Diffusion LoRA

    Anima DiT 模型 LoRA 训练 专家模式

    Anima DiT 训练入口,使用 Qwen3 + T5 + Anima 专用参数

    参数预览
    Loading...
    Output
    - - - +
    - - diff --git a/frontend/dist/lora/sdxl.html b/frontend/dist/lora/sdxl.html deleted file mode 100644 index 797221f1..00000000 --- a/frontend/dist/lora/sdxl.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - SDXL Stable Diffusion LoRA | SD 训练 UI - - - - -

    SDXL Stable Diffusion LoRA

    SDXL 模型 LoRA 训练

    参数预览
    Loading...
    Output
    - - - - - - - diff --git a/frontend/dist/lora/tools.html b/frontend/dist/lora/tools.html index 32c9f630..cf6e32cf 100644 --- a/frontend/dist/lora/tools.html +++ b/frontend/dist/lora/tools.html @@ -1,41 +1,13 @@ - - + + - - - - - - - - - LoRA 脚本工具 | SD 训练 UI - - + + + SD Trainer Next + + -

    参数设置

    script_name

    脚本名称

    -

    LoRA 脚本工具

    • networks/extract_lora_from_models 使用 SVD 从两个模型中近似提取 LoRA
    • networks/extract_lora_from_dylora.py 从 DyLoRA 中提取 LoRA
    参数预览
    { }
    - - - +
    - - diff --git a/frontend/dist/native-tageditor-standalone.html b/frontend/dist/native-tageditor-standalone.html new file mode 100644 index 00000000..cf6e32cf --- /dev/null +++ b/frontend/dist/native-tageditor-standalone.html @@ -0,0 +1,13 @@ + + + + + + SD Trainer Next + + + + +
    + + diff --git a/frontend/dist/native-tageditor.html b/frontend/dist/native-tageditor.html index ed2c27bb..cf6e32cf 100644 --- a/frontend/dist/native-tageditor.html +++ b/frontend/dist/native-tageditor.html @@ -1,44 +1,13 @@ - - + + - - - - - - - - - SD 训练 UI - - - - + + + SD Trainer Next + + - - - - - +
    - - - diff --git a/frontend/dist/other/about.html b/frontend/dist/other/about.html index 49ab3395..cf6e32cf 100644 --- a/frontend/dist/other/about.html +++ b/frontend/dist/other/about.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - SD 训练 UI - - + + + SD Trainer Next + + - - - - +
    - - diff --git a/frontend/dist/other/changelog.html b/frontend/dist/other/changelog.html index 7abeeb3e..cf6e32cf 100644 --- a/frontend/dist/other/changelog.html +++ b/frontend/dist/other/changelog.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - 更新日志 | SD 训练 UI - - + + + SD Trainer Next + + -

    更新日志

    GitHub Repo starsGitHub forkslicenserelease

    版本记录

    v2.6.0

    • Anima 全量微调:侧栏「全量微调 → Anima Finetune」,路由 anima-finetuneanima_train.py
    • 训练监控正确显示 Anima Finetune(不再误标为 LoRA)
    • 文档与示例:docs/anima-backend.mddocs/examples/anima-full-finetune.toml
    • 显存参考:4090 实测专用显存约 23–24 GB(与 LoRA 的 12GB 档不同)

    v2.5.3

    • 便携包依赖健康检查、侧栏版本号(#54

    v2.5.0

    • UI 焕新:侧栏导航重构,训练 / 工具 / 帮助分区清晰
    • 首页传送门:卡片式入口快速跳转训练、监控、新手上路
    • 训练监控仪表盘:GPU 实时指标、总步数、训练参数速查
    • CSS 去重清理(~1660 行冗余代码)

    v2.4.0

    • 训练子进程环境隔离,NaN 过滤,采样保护,attn_mode 降级
    • 路径规范化;整合包 tkinter 修复

    v2.3.0

    • TensorBoard 同源 Loss 曲线;训练参数速查;日志同步到监控页
    • 整合包:跳过 triton-windows;run_gui 启动日志;跨盘监控修复

    v2.1.0

    • Flash Attention 2 预构建 Wheel(Windows 免编译)
    • 按步数保存;LoKr 显示修复;跨盘监控修复

    v2.0.0

    • Windows 便携包首发;Flash Attention 自动加速;AMD 提示;bf16 修复

    基于原版的改进

    • Anima 训练(LoRA / LoKr / T-LoRA)
    • 交互式 Loss 曲线;实时训练监控(端口 6008)
    • Anima 后端迁移至 kohya-ss/sd-scripts

    原版更新日志

    本项目 Fork 自 Akegarasu/lora-scripts,完整记录见仓库根目录 CHANGELOG.md

    - - - +
    - - diff --git a/frontend/dist/other/settings.html b/frontend/dist/other/settings.html index 6f247d5e..cf6e32cf 100644 --- a/frontend/dist/other/settings.html +++ b/frontend/dist/other/settings.html @@ -1,39 +1,13 @@ - - + + - - - - - - - - - 设置 | SD 训练 UI - - + + + SD Trainer Next + + -

    设置

    tensorboard_url

    tensorboard 地址

    -

    设置

    不懂的不要改这个

    Output
    { }
    - - - +
    diff --git a/frontend/dist/tageditor.html b/frontend/dist/tageditor.html index 0b186d30..cf6e32cf 100644 --- a/frontend/dist/tageditor.html +++ b/frontend/dist/tageditor.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - SD 训练 UI - - + + + SD Trainer Next + + - - - - +
    - - diff --git a/frontend/dist/tagger.html b/frontend/dist/tagger.html index df84f321..cf6e32cf 100644 --- a/frontend/dist/tagger.html +++ b/frontend/dist/tagger.html @@ -1,41 +1,13 @@ - - + + - - - - - - - - - Tagger 标注工具 | SD 训练 UI - - + + + SD Trainer Next + + -

    Tagger 标注工具

    后端基于 wd14-tagger 开发。

    (如果你自行部署,或有良好的网络访问环境,请忽略这行)训练包内自带默认离线模型 SmilingWolf/wd-v1-4-convnextv2-tagger-v2 如果你选择了其他模型,可能需要额外连接到 Huggingface 进行下载。

    已更新 v3 的 Tagger 模型。

    已更新 large 系列的 Tagger 模型。

    已更新 CL 系列的 Tagger 模型。

    推荐参数

    阈值大于 0.35

    - - - - +
    - - diff --git a/frontend/dist/task.html b/frontend/dist/task.html index 5eec2de6..cf6e32cf 100644 --- a/frontend/dist/task.html +++ b/frontend/dist/task.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - SD 训练 UI - - + + + SD Trainer Next + + - - - - +
    - - diff --git a/frontend/dist/tensorboard.html b/frontend/dist/tensorboard.html index e3072373..cf6e32cf 100644 --- a/frontend/dist/tensorboard.html +++ b/frontend/dist/tensorboard.html @@ -1,40 +1,13 @@ - - + + - - - - - - - - - SD 训练 UI - - + + + SD Trainer Next + + - - - - +
    - - diff --git a/frontend/source/README.md b/frontend/source/README.md new file mode 100644 index 00000000..1b152806 --- /dev/null +++ b/frontend/source/README.md @@ -0,0 +1,48 @@ +# Source-Owned Frontend Shell + +This directory is the Phase 2 source-of-truth recovery scaffold. It does not +replace the production `frontend/dist/` yet. + +## Purpose + +- Keep route and sidebar data in source files. +- Build static HTML/CSS/JS that can be served by the existing FastAPI + `StaticFiles` setup. +- Prove the source-to-dist path before migrating mature trainer pages. + +## Commands + +```powershell +cd frontend\source +npm install +npm run check +npm run build +``` + +The build writes to: + +```text +build/frontend-source-dist/ +``` + +You can point the backend at that generated output for smoke checks: + +```powershell +$env:MIKAZUKI_FRONTEND_DIST='build/frontend-source-dist' +python gui.py --dev --skip-prepare-environment --disable-tensorboard --disable-train-monitor --port 28182 +``` + +## Verification + +```powershell +python scripts\verify_frontend_source.py --require-built-output +python -m pytest tests\test_frontend_source.py -q +``` + +## Current Scope + +The current source app is intentionally a minimal shell with compatibility +routes. It is not a replacement for the trainer forms yet. + +Migrating real pages should happen incrementally after the native tag editor +is stable and each migrated route has route, visual, and portable checks. diff --git a/frontend/source/index.html b/frontend/source/index.html new file mode 100644 index 00000000..b10bece1 --- /dev/null +++ b/frontend/source/index.html @@ -0,0 +1,12 @@ + + + + + + SD Trainer Next + + +
    + + + diff --git a/frontend/source/package-lock.json b/frontend/source/package-lock.json new file mode 100644 index 00000000..c92e0550 --- /dev/null +++ b/frontend/source/package-lock.json @@ -0,0 +1,1241 @@ +{ + "name": "sd-trainer-next-frontend-source", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sd-trainer-next-frontend-source", + "version": "0.0.0", + "dependencies": { + "typescript": "^5.8.3", + "vite": "^6.3.5", + "vue": "^3.5.14" + }, + "devDependencies": { + "@playwright/test": "^1.60.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" + }, + "node_modules/@playwright/test": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", + "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", + "dev": true, + "dependencies": { + "playwright": "1.60.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz", + "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz", + "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz", + "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz", + "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz", + "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz", + "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz", + "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz", + "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz", + "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz", + "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz", + "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz", + "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz", + "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz", + "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz", + "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz", + "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz", + "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz", + "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz", + "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz", + "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz", + "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz", + "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz", + "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz", + "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz", + "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.35.tgz", + "integrity": "sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==", + "dependencies": { + "@babel/parser": "^7.29.3", + "@vue/shared": "3.5.35", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.35.tgz", + "integrity": "sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==", + "dependencies": { + "@vue/compiler-core": "3.5.35", + "@vue/shared": "3.5.35" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.35.tgz", + "integrity": "sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==", + "dependencies": { + "@babel/parser": "^7.29.3", + "@vue/compiler-core": "3.5.35", + "@vue/compiler-dom": "3.5.35", + "@vue/compiler-ssr": "3.5.35", + "@vue/shared": "3.5.35", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.15", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.35.tgz", + "integrity": "sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==", + "dependencies": { + "@vue/compiler-dom": "3.5.35", + "@vue/shared": "3.5.35" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.35.tgz", + "integrity": "sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==", + "dependencies": { + "@vue/shared": "3.5.35" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.35.tgz", + "integrity": "sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==", + "dependencies": { + "@vue/reactivity": "3.5.35", + "@vue/shared": "3.5.35" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.35.tgz", + "integrity": "sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==", + "dependencies": { + "@vue/reactivity": "3.5.35", + "@vue/runtime-core": "3.5.35", + "@vue/shared": "3.5.35", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.35.tgz", + "integrity": "sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==", + "dependencies": { + "@vue/compiler-ssr": "3.5.35", + "@vue/shared": "3.5.35" + }, + "peerDependencies": { + "vue": "3.5.35" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.35.tgz", + "integrity": "sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", + "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", + "dev": true, + "dependencies": { + "playwright-core": "1.60.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", + "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/postcss": { + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.60.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz", + "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.4", + "@rollup/rollup-android-arm64": "4.60.4", + "@rollup/rollup-darwin-arm64": "4.60.4", + "@rollup/rollup-darwin-x64": "4.60.4", + "@rollup/rollup-freebsd-arm64": "4.60.4", + "@rollup/rollup-freebsd-x64": "4.60.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", + "@rollup/rollup-linux-arm-musleabihf": "4.60.4", + "@rollup/rollup-linux-arm64-gnu": "4.60.4", + "@rollup/rollup-linux-arm64-musl": "4.60.4", + "@rollup/rollup-linux-loong64-gnu": "4.60.4", + "@rollup/rollup-linux-loong64-musl": "4.60.4", + "@rollup/rollup-linux-ppc64-gnu": "4.60.4", + "@rollup/rollup-linux-ppc64-musl": "4.60.4", + "@rollup/rollup-linux-riscv64-gnu": "4.60.4", + "@rollup/rollup-linux-riscv64-musl": "4.60.4", + "@rollup/rollup-linux-s390x-gnu": "4.60.4", + "@rollup/rollup-linux-x64-gnu": "4.60.4", + "@rollup/rollup-linux-x64-musl": "4.60.4", + "@rollup/rollup-openbsd-x64": "4.60.4", + "@rollup/rollup-openharmony-arm64": "4.60.4", + "@rollup/rollup-win32-arm64-msvc": "4.60.4", + "@rollup/rollup-win32-ia32-msvc": "4.60.4", + "@rollup/rollup-win32-x64-gnu": "4.60.4", + "@rollup/rollup-win32-x64-msvc": "4.60.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", + "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.35", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.35.tgz", + "integrity": "sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==", + "dependencies": { + "@vue/compiler-dom": "3.5.35", + "@vue/compiler-sfc": "3.5.35", + "@vue/runtime-dom": "3.5.35", + "@vue/server-renderer": "3.5.35", + "@vue/shared": "3.5.35" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + } + } +} diff --git a/frontend/source/package.json b/frontend/source/package.json new file mode 100644 index 00000000..9a618982 --- /dev/null +++ b/frontend/source/package.json @@ -0,0 +1,21 @@ +{ + "name": "sd-trainer-next-frontend-source", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "build": "vite build && node scripts/write-route-aliases.mjs", + "check": "tsc --noEmit", + "preview": "vite preview --host 127.0.0.1 --port 4173 --strictPort", + "smoke": "playwright test scripts/smoke-source-frontend.spec.mjs", + "smoke:dist": "playwright test scripts/smoke-dist-frontend.spec.mjs --config=playwright.dist.config.ts" + }, + "dependencies": { + "typescript": "^5.8.3", + "vite": "^6.3.5", + "vue": "^3.5.14" + }, + "devDependencies": { + "@playwright/test": "^1.60.0" + } +} diff --git a/frontend/source/playwright.config.ts b/frontend/source/playwright.config.ts new file mode 100644 index 00000000..31930820 --- /dev/null +++ b/frontend/source/playwright.config.ts @@ -0,0 +1,16 @@ +import { defineConfig, devices } from "@playwright/test"; + +export default defineConfig({ + testDir: ".", + timeout: 30_000, + use: { + ...devices["Desktop Chrome"], + baseURL: "http://127.0.0.1:4173", + }, + webServer: { + command: "npm run preview", + url: "http://127.0.0.1:4173", + reuseExistingServer: !process.env.CI, + timeout: 30_000, + }, +}); diff --git a/frontend/source/playwright.dist.config.ts b/frontend/source/playwright.dist.config.ts new file mode 100644 index 00000000..2796c8a9 --- /dev/null +++ b/frontend/source/playwright.dist.config.ts @@ -0,0 +1,16 @@ +import { defineConfig, devices } from "@playwright/test"; + +export default defineConfig({ + testDir: ".", + timeout: 30_000, + use: { + ...devices["Desktop Chrome"], + baseURL: "http://127.0.0.1:4183", + }, + webServer: { + command: "node scripts/serve-static-dist.mjs ../../frontend/dist 4183", + url: "http://127.0.0.1:4183", + reuseExistingServer: !process.env.CI, + timeout: 30_000, + }, +}); diff --git a/frontend/source/scripts/serve-static-dist.mjs b/frontend/source/scripts/serve-static-dist.mjs new file mode 100644 index 00000000..ede693c0 --- /dev/null +++ b/frontend/source/scripts/serve-static-dist.mjs @@ -0,0 +1,47 @@ +import { createReadStream, existsSync, statSync } from "node:fs"; +import { createServer } from "node:http"; +import { extname, join, normalize, resolve, sep } from "node:path"; + +const [rootArg = "../../frontend/dist", portArg = "4183"] = process.argv.slice(2); +const root = resolve(rootArg); +const port = Number(portArg); + +const contentTypes = new Map([ + [".css", "text/css; charset=utf-8"], + [".html", "text/html; charset=utf-8"], + [".js", "text/javascript; charset=utf-8"], + [".json", "application/json; charset=utf-8"], + [".map", "application/json; charset=utf-8"], + [".png", "image/png"], + [".svg", "image/svg+xml"], + [".webp", "image/webp"], +]); + +function resolveRequestPath(url = "/") { + const pathname = decodeURIComponent(new URL(url, "http://127.0.0.1").pathname); + const normalized = normalize(pathname).replace(/^([/\\])+/, ""); + const candidate = resolve(join(root, normalized || "index.html")); + if (candidate !== root && !candidate.startsWith(`${root}${sep}`)) { + return null; + } + if (existsSync(candidate) && statSync(candidate).isFile()) { + return candidate; + } + return resolve(join(root, "index.html")); +} + +createServer((request, response) => { + const file = resolveRequestPath(request.url); + if (!file || !existsSync(file)) { + response.writeHead(404); + response.end("not found"); + return; + } + response.writeHead(200, { + "content-type": contentTypes.get(extname(file)) || "application/octet-stream", + "cache-control": "no-cache", + }); + createReadStream(file).pipe(response); +}).listen(port, "127.0.0.1", () => { + console.log(`serving ${root} at http://127.0.0.1:${port}`); +}); diff --git a/frontend/source/scripts/smoke-dist-frontend.spec.mjs b/frontend/source/scripts/smoke-dist-frontend.spec.mjs new file mode 100644 index 00000000..a4a958b1 --- /dev/null +++ b/frontend/source/scripts/smoke-dist-frontend.spec.mjs @@ -0,0 +1,35 @@ +import { expect, test } from "@playwright/test"; + +test("production dist renders source-owned classic tag editor replacement", async ({ page }) => { + await page.goto("/tageditor.html"); + await expect(page.locator(".classic-tag-editor-page")).toBeVisible(); + await expect(page.locator('iframe[src="/proxy/tageditor/"]')).toHaveCount(0); + await expect(page.getByRole("link", { name: "Open Native Editor" })).toHaveAttribute("href", "/native-tageditor.html"); + await expect(page.locator("#sd-native-editor-entry")).toHaveCount(0); +}); + +test("production dist renders native tag editor entries", async ({ page }) => { + await page.goto("/native-tageditor.html"); + await expect(page.locator(".sidebar")).toBeVisible(); + await expect(page.locator("#sd-native-editor-entry")).toBeVisible(); + await expect(page.locator("#dataset-path")).toBeVisible(); + + await page.goto("/native-tageditor-standalone.html"); + await expect(page.locator(".sidebar")).toHaveCount(0); + await expect(page.locator("#sd-native-editor-entry")).toBeVisible(); + await expect(page.locator("#dataset-path")).toBeVisible(); +}); + +test("production dist renders migrated source pages", async ({ page }) => { + await page.goto("/lora/anima-finetune.html"); + await expect(page.locator("#anima-train-form")).toBeVisible(); + await expect(page.locator(".anima-contract-card")).toContainText("Source Contract"); + + await page.goto("/lora/params.html"); + await expect(page.locator(".params-page")).toBeVisible(); + await expect(page.locator(".params-section-card")).toHaveCount(12); + + await page.goto("/tensorboard.html"); + await expect(page.locator(".tensorboard-page")).toBeVisible(); + await expect(page.locator('iframe[src="/proxy/tensorboard/"]')).toBeVisible(); +}); diff --git a/frontend/source/scripts/smoke-source-frontend.spec.mjs b/frontend/source/scripts/smoke-source-frontend.spec.mjs new file mode 100644 index 00000000..0c4ac614 --- /dev/null +++ b/frontend/source/scripts/smoke-source-frontend.spec.mjs @@ -0,0 +1,291 @@ +import { expect, test } from "@playwright/test"; + +const shellRoutes = [ + "/", + "/other/settings.html", + "/tageditor.html", + "/lora/sd3.html", + "/lora/anima-finetune.html", + "/lora/index.html", + "/lora/basic.html", + "/lora/master.html", + "/lora/flux.html", + "/dreambooth/index.html", + "/lora/params.html", + "/tensorboard.html", + "/lora/tools.html", + "/task.html", + "/help/guide.html", + "/other/about.html", + "/other/changelog.html", + "/missing-route", +]; + +for (const route of shellRoutes) { + test(`source shell loads ${route}`, async ({ page }) => { + await page.goto(route); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator(".sidebar")).toBeVisible(); + }); +} + +for (const route of [ + "/", + "/lora/tools.html", + "/help/guide.html", + "/other/about.html", + "/other/changelog.html", +]) { + test(`source utility page has owned content ${route}`, async ({ page }) => { + await page.goto(route); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator(".source-static-page")).toBeVisible(); + await expect(page.locator(".source-static-actions")).toBeVisible(); + }); +} + +for (const route of ["/lora/index.html"]) { + test(`source compatibility page has product-grade scaffolding ${route}`, async ({ page }) => { + await page.goto(route); + await expect(page.locator(".source-static-page")).toBeVisible(); + await expect(page.locator(".source-static-grid")).toBeVisible(); + await expect(page.locator(".source-static-card")).toHaveCount(3); + await expect(page.locator(".source-static-status")).toBeVisible(); + await expect(page.locator(".source-static-meta")).toBeVisible(); + }); +} + +for (const [route, backend] of [ + ["/lora/basic.html", "LoRA compatibility"], + ["/lora/master.html", "Stable Diffusion compatibility"], + ["/lora/flux.html", "Flux compatibility"], + ["/dreambooth/index.html", "Dreambooth compatibility"], +]) { + test(`mature training route uses shared source template ${route}`, async ({ page }) => { + await page.goto(route); + await expect(page.locator(".training-compat-page")).toBeVisible(); + await expect(page.locator(".training-compat-page")).toContainText(backend); + await expect(page.locator(".training-compat-metrics article")).toHaveCount(3); + await expect(page.locator(".training-compat-route")).toContainText(route); + }); +} + +test("lora source index exposes training route hub", async ({ page }) => { + await page.goto("/lora/index.html"); + await expect(page.locator(".source-route-list")).toBeVisible(); + await expect(page.locator(".source-route-card")).toHaveCount(6); + await expect(page.locator('.source-route-card[href="/lora/sd3.html"]')).toContainText("Anima Stable Diffusion LoRA"); + await expect(page.locator('.source-route-card[href="/lora/anima-finetune.html"]')).toContainText("全量微调"); + await expect(page.locator('.source-route-card[href="/lora/master.html"]')).toContainText("Stable Diffusion"); + await expect(page.locator('.source-route-card[href="/lora/flux.html"]')).toContainText("Flux LoRA"); + await expect(page.locator('.source-route-card[href="/dreambooth/index.html"]')).toContainText("Dreambooth"); +}); + +test("tools source page exposes tool route hub", async ({ page }) => { + await page.goto("/lora/tools.html"); + await expect(page.locator(".source-route-list")).toBeVisible(); + await expect(page.locator(".source-route-card")).toHaveCount(7); + await expect(page.locator('.source-route-card[href="/tagger.html"]')).toBeVisible(); + await expect(page.locator('.source-route-card[href="/tageditor.html"]')).toBeVisible(); + await expect(page.locator('.source-route-card[href="/native-tageditor.html"]')).toBeVisible(); + await expect(page.locator('.source-route-card[href="/native-tageditor-standalone.html"]')).toBeVisible(); + await expect(page.locator('.source-route-card[href="/dataset-editor.html"]')).toBeVisible(); + await expect(page.locator('.source-route-card[href="/tensorboard.html"]')).toBeVisible(); + await expect(page.locator('.source-route-card[href="/task.html"]')).toBeVisible(); +}); + +test("task source page renders task monitor from API", async ({ page }) => { + await page.route("**/api/tasks", async (route) => { + await route.fulfill({ + contentType: "application/json", + body: JSON.stringify({ + status: "success", + data: { + tasks: [ + { id: "task-running", status: "RUNNING", command: "python train.py" }, + { id: "task-done", status: "FINISHED", command: "python export.py" }, + ], + }, + }), + }); + }); + + await page.goto("/task.html"); + await expect(page.locator(".task-monitor")).toBeVisible(); + await expect(page.getByRole("button", { name: "Refresh Tasks" })).toBeVisible(); + await expect(page.locator(".task-card")).toHaveCount(2); + await expect(page.locator(".task-card").first()).toContainText("task-running"); + await expect(page.locator(".task-card").first()).toContainText("RUNNING"); + await expect(page.locator('.task-card a[href="/train-log?task_id=task-running"]')).toBeVisible(); + await expect(page.locator('.task-card button[data-task-action="terminate"]')).toHaveCount(1); +}); + +test("tensorboard source page embeds tensorboard proxy", async ({ page }) => { + await page.goto("/tensorboard.html"); + await expect(page.locator(".tensorboard-page")).toBeVisible(); + await expect(page.locator(".tensorboard-frame")).toHaveAttribute("src", "/proxy/tensorboard/"); + await expect(page.locator('a[href="/proxy/tensorboard/"]')).toContainText("Open TensorBoard"); + await expect(page.getByRole("link", { name: "Open Tasks" })).toHaveAttribute("href", "/task.html"); +}); + +test("params source page renders anima schema reference", async ({ page }) => { + await page.goto("/lora/params.html"); + await expect(page.locator(".params-page")).toBeVisible(); + await expect(page.locator(".params-section-card")).toHaveCount(12); + await expect(page.locator(".params-section-card").first()).toContainText("Model Assets"); + await expect(page.locator(".params-field-row").filter({ hasText: "pretrained_model_name_or_path" })).toBeVisible(); + await expect(page.locator(".params-field-row").filter({ hasText: "enable_preview" })).toBeVisible(); + await expect(page.getByRole("link", { name: "Open Anima LoRA" })).toHaveAttribute("href", "/lora/sd3.html"); +}); + +test("native tag editor source route loads embedded editor", async ({ page }) => { + await page.goto("/native-tageditor.html"); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator(".sidebar")).toBeVisible(); + await expect(page.locator("#sd-native-editor-entry")).toBeVisible(); + await expect(page.locator(".de-shell-embedded")).toBeVisible(); + await expect(page.locator("#dataset-path")).toBeVisible(); +}); + +test("classic tag editor source route redirects to native editor", async ({ page }) => { + await page.goto("/tageditor.html"); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator(".classic-tag-editor-page")).toBeVisible(); + await expect(page.locator('iframe[src="/proxy/tageditor/"]')).toHaveCount(0); + await expect(page.getByRole("link", { name: "Open Native Editor" })).toHaveAttribute("href", "/native-tageditor.html"); + await expect(page.getByRole("link", { name: "Open Standalone Editor" })).toHaveAttribute( + "href", + "/native-tageditor-standalone.html", + ); + await expect(page.locator("#sd-native-editor-entry")).toHaveCount(0); +}); + +test("native tag editor standalone route hides trainer shell", async ({ page }) => { + await page.goto("/native-tageditor-standalone.html"); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator(".sidebar")).toHaveCount(0); + await expect(page.locator(".native-editor-page--standalone")).toBeVisible(); + await expect(page.locator("#sd-native-editor-entry")).toBeVisible(); + await expect(page.locator("#dataset-path")).toBeVisible(); +}); + +test("dataset editor fallback route loads native editor", async ({ page }) => { + await page.goto("/dataset-editor.html"); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator("#sd-native-editor-entry")).toBeVisible(); + await expect(page.locator("#dataset-path")).toBeVisible(); +}); + +test("tagger source route loads progress dock", async ({ page }) => { + await page.goto("/tagger.html"); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator(".schema-container form")).toBeVisible(); + await expect(page.locator("#sd-tagger-dock")).toBeVisible(); + await expect(page.locator("[data-start-btn]")).toBeVisible(); +}); + +test("anima source route loads train form", async ({ page }) => { + await page.goto("/lora/anima-finetune.html"); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator("#anima-train-form")).toBeVisible(); + await expect(page.locator("#anima-pretrained-model")).toBeVisible(); + await expect(page.locator("#anima-train-data-dir")).toBeVisible(); + await expect(page.locator("[data-training-role='file']")).toHaveCount(4); + await expect(page.locator("[data-training-role='folder']")).toHaveCount(4); + await expect(page.locator(".anima-preview-panel")).toBeVisible(); + await expect(page.locator("#anima-preview-code")).toContainText('model_train_type = "anima-finetune"'); + await expect(page.locator("#anima-sample-sampler")).toBeVisible(); + await expect(page.locator("#anima-fp8-base")).toBeVisible(); + await expect(page.locator("#anima-clip-skip")).toHaveAttribute("type", "range"); + await expect(page.locator("#anima-clip-skip-value")).toContainText("2"); + await page.locator("#anima-train-data-dir").locator("..").getByRole("button", { name: "Browse" }).click(); + await expect(page.locator(".anima-status")).toContainText("Browse requested for train_data_dir"); + await expect(page.getByRole("button", { name: "Reset Config" })).toBeVisible(); + await expect(page.getByRole("button", { name: "Export Config" })).toBeVisible(); + await expect(page.getByRole("button", { name: "Import Config" })).toBeVisible(); + await expect(page.locator(".training-workflow-summary")).toContainText("Workflow Summary"); + await expect(page.locator(".training-workflow-summary")).toContainText("11 sections"); + await expect(page.locator(".training-workflow-summary")).toContainText("Required paths"); +}); + +test("anima source route keeps document scrolling enabled", async ({ page }) => { + await page.goto("/lora/sd3.html"); + await expect(page.locator("#anima-train-form")).toBeVisible(); + + await expect + .poll(() => page.evaluate(() => getComputedStyle(document.body).overflowY)) + .not.toBe("hidden"); + + const before = await page.evaluate(() => window.scrollY); + await page.evaluate(() => window.scrollTo(0, 900)); + await expect.poll(() => page.evaluate(() => window.scrollY)).toBeGreaterThan(before); +}); + +test("anima lora source route loads adapter schema", async ({ page }) => { + await page.goto("/lora/sd3.html"); + await expect(page.locator("#app")).toBeVisible(); + await expect(page.locator("#anima-train-form")).toBeVisible(); + await expect(page.locator("#anima-preview-code")).toContainText('model_train_type = "anima-lora"'); + await expect(page.locator("#anima-lora-type")).toBeVisible(); + await expect(page.locator("#anima-network-weights")).toBeVisible(); + await expect(page.locator("#anima-network-args-custom")).toBeVisible(); +}); + +test("anima schema visibility and table controls work", async ({ page }) => { + await page.goto("/lora/anima-finetune.html"); + await expect(page.locator("#anima-positive-prompts")).toBeVisible(); + await page.locator("#anima-enable-preview").uncheck(); + await expect(page.locator("#anima-positive-prompts")).toHaveCount(0); + + await expect(page.locator("#anima-logit-mean")).toHaveCount(0); + await page.locator("#anima-weighting-scheme").selectOption("logit_normal"); + await expect(page.locator("#anima-logit-mean")).toBeVisible(); + + await page.locator("#anima-optimizer-args-custom").getByRole("button", { name: "Add Row" }).click(); + await expect(page.locator("#anima-optimizer-args-custom-0")).toBeVisible(); + await page.locator("#anima-optimizer-args-custom-0").fill("weight_decay=0.01"); + await expect(page.locator("#anima-preview-code")).toContainText('optimizer_args_custom = ["weight_decay=0.01"]'); +}); + +test("anima source route supports section navigation and parameter search", async ({ page }) => { + await page.goto("/lora/sd3.html"); + await expect(page.locator(".anima-section-nav a")).toHaveCount(12); + await expect(page.locator("#anima-param-search")).toBeVisible(); + await page.locator("#anima-param-search").fill("cache_latents"); + await expect(page.locator(".anima-section").filter({ hasText: "Cache" })).toBeVisible(); + await expect(page.locator("#anima-cache-latents")).toBeVisible(); + await expect(page.locator("#anima-pretrained-model")).toHaveCount(0); + await page.locator("#anima-param-search").fill(""); + await expect(page.locator("#anima-pretrained-model")).toBeVisible(); +}); + +test("anima source route exposes source-owned contract coverage", async ({ page }) => { + await page.goto("/lora/anima-finetune.html"); + await expect(page.locator(".anima-contract-card")).toContainText("Source Contract"); + await expect(page.locator(".anima-contract-card")).toContainText("11 source-owned sections"); + await expect(page.locator(".anima-contract-card")).toContainText("scripts/dev/anima_train.py"); + await expect(page.locator(".anima-contract-card")).not.toContainText("Migration Notes"); +}); + +test("anima source route exposes submitted task links", async ({ page }) => { + await page.route("**/api/run", async (route) => { + await route.fulfill({ + contentType: "application/json", + body: JSON.stringify({ + status: "success", + message: "Training started", + data: { + task_id: "task-123", + train_log_viewer: "/train-log?task_id=task-123", + train_log_stream: "/api/train/log/stream/task-123", + }, + }), + }); + }); + + await page.goto("/lora/sd3.html"); + await page.getByRole("button", { name: "Start Training" }).click(); + await expect(page.locator(".anima-run-result")).toContainText("task-123"); + await expect(page.locator('.anima-run-result a[href="/train-log?task_id=task-123"]')).toContainText("Open Log"); + await expect(page.locator('.anima-run-result a[href="/task.html"]')).toContainText("Open Tasks"); +}); diff --git a/frontend/source/scripts/write-route-aliases.mjs b/frontend/source/scripts/write-route-aliases.mjs new file mode 100644 index 00000000..9b99b0d2 --- /dev/null +++ b/frontend/source/scripts/write-route-aliases.mjs @@ -0,0 +1,16 @@ +import { copyFile, mkdir, readFile } from "node:fs/promises"; +import { dirname, resolve } from "node:path"; + +const sourceRoot = resolve(import.meta.dirname, ".."); +const outDir = resolve(sourceRoot, "../../build/frontend-source-dist"); +const routes = JSON.parse(await readFile(resolve(sourceRoot, "src/routes.json"), "utf8")); +const indexPath = resolve(outDir, "index.html"); + +for (const route of routes) { + if (route.path === "/") continue; + const target = resolve(outDir, route.path.slice(1)); + await mkdir(dirname(target), { recursive: true }); + await copyFile(indexPath, target); +} + +console.log(`wrote ${routes.length - 1} route aliases`); diff --git a/frontend/source/src/anima.ts b/frontend/source/src/anima.ts new file mode 100644 index 00000000..757ddbe5 --- /dev/null +++ b/frontend/source/src/anima.ts @@ -0,0 +1,413 @@ +import { defineComponent, h, onBeforeUnmount, onMounted, reactive, ref } from "vue"; +import type { AppRoute } from "./routes"; +import { + installTrainingPathBrowseBridge, + previewToml, + renderParameterPreview, + renderRunControls, + renderTrainingSchemaSections, + renderTrainingWorkbench, + sectionAnchorId, +} from "./trainingRenderer"; + +import { + ANIMA_ROUTES, + ANIMA_STORAGE_KEY, + animaDefaults, + animaSectionsForPlan, + type AnimaRoutePlan, + type AnimaForm, +} from "./animaSchema"; +import type { TrainingFieldSpec, TrainingSectionItem, TrainingSectionSpec } from "./trainingRenderer"; +export function isAnimaRoute(path: string): boolean { + return path in ANIMA_ROUTES; +} + +export const AnimaRoutePage = defineComponent({ + name: "AnimaRoutePage", + props: { + route: { + type: Object as () => AppRoute, + required: true, + }, + }, + setup(props) { + const plan = ANIMA_ROUTES[props.route.path]; + const animaForm = reactive(loadStoredForm(plan)); + const importConfigInput = ref(null); + const parameterFilter = ref(""); + const status = ref(""); + const runResult = ref(null); + let removePathBrowseBridge: (() => void) | undefined; + + onMounted(() => { + removePathBrowseBridge = installTrainingPathBrowseBridge((detail) => { + status.value = `Browse requested for ${detail.key} (${detail.role})`; + }); + }); + + onBeforeUnmount(() => { + removePathBrowseBridge?.(); + }); + + function payload() { + const base: Partial & { model_train_type: AnimaRoutePlan["modelTrainType"] } = { + ...animaForm, + model_train_type: plan.modelTrainType, + pretrained_model_name_or_path: normalizePath(animaForm.pretrained_model_name_or_path), + vae: normalizePath(animaForm.vae), + qwen3: normalizePath(animaForm.qwen3), + t5_tokenizer_path: normalizePath(animaForm.t5_tokenizer_path), + llm_adapter_path: normalizePath(animaForm.llm_adapter_path), + resume: normalizePath(animaForm.resume), + train_data_dir: normalizePath(animaForm.train_data_dir), + output_dir: normalizePath(animaForm.output_dir), + }; + if (plan.modelTrainType === "anima-finetune") { + delete base.lora_type; + delete base.unet_lr; + delete base.network_dim; + delete base.network_alpha; + delete base.network_train_unet_only; + delete base.network_train_text_encoder_only; + delete base.network_args_custom; + delete base.network_weights; + delete base.dim_from_weights; + delete base.scale_weight_norms; + delete base.train_norm; + delete base.network_dropout; + delete base.pissa_init; + delete base.pissa_method; + delete base.pissa_niter; + delete base.pissa_oversample; + delete base.lokr_factor; + delete base.full_matrix; + delete base.tlora_min_rank; + delete base.tlora_rank_schedule; + delete base.tlora_orthogonal_init; + } + return base; + } + + function saveForm() { + const stored = readStoredForms(); + stored[plan.path] = { ...animaForm }; + localStorage.setItem(ANIMA_STORAGE_KEY, JSON.stringify(stored)); + status.value = "Saved locally"; + } + + function loadForm() { + Object.assign(animaForm, loadStoredForm(plan)); + status.value = "Loaded local config"; + } + + function resetForm() { + const stored = readStoredForms(); + delete stored[plan.path]; + localStorage.setItem(ANIMA_STORAGE_KEY, JSON.stringify(stored)); + Object.assign(animaForm, defaultFormForPlan(plan)); + status.value = "Reset to defaults"; + } + + function exportConfig() { + const blob = new Blob([JSON.stringify(payload(), null, 2)], { + type: "application/json", + }); + const url = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = url; + link.download = `${animaForm.output_name || plan.modelTrainType}.json`; + link.click(); + URL.revokeObjectURL(url); + status.value = "Exported config"; + } + + async function importConfigFile(event: Event) { + const input = event.target as HTMLInputElement; + const file = input.files?.[0]; + if (!file) { + return; + } + try { + const imported = JSON.parse(await file.text()) as Partial & { model_train_type?: string }; + delete imported.model_train_type; + Object.assign(animaForm, defaultFormForPlan(plan), imported); + status.value = "Imported config"; + } catch (error) { + status.value = error instanceof Error ? error.message : "Import failed"; + } finally { + input.value = ""; + } + } + + async function runTraining() { + status.value = "Submitting training config..."; + runResult.value = null; + const response = await fetch("/api/run", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload()), + }); + const result = await response.json(); + status.value = result.message || result.status || "Submitted"; + runResult.value = runResultFromResponse(result); + } + + return () => + { + const sections = animaSectionsForPlan(plan); + const visibleSections = filterSections(sections, parameterFilter.value); + return ( + h("main", { class: "content anima-page" }, [ + h("header", { class: "anima-header" }, [ + h("div", [ + h("p", { class: "eyebrow" }, "Training"), + h("h1", plan.heading), + h("p", { class: "summary" }, plan.summary), + ]), + h("dl", { class: "anima-route-strip" }, [ + h("dt", "Route"), + h("dd", plan.path), + h("dt", "Schema"), + h("dd", plan.schemaFile), + ]), + ]), + renderTrainingWorkbench( + [ + h("form", { id: "anima-train-form", class: "anima-form" }, [ + h("h2", "Training Config"), + h("div", { class: "anima-form-tools" }, [ + h("label", { class: "anima-field anima-search-field" }, [ + h("span", "Search parameters"), + h("input", { + id: "anima-param-search", + type: "search", + value: parameterFilter.value, + placeholder: "field name, section, or description", + onInput: (event: Event) => { + parameterFilter.value = (event.target as HTMLInputElement).value; + }, + }), + ]), + h( + "nav", + { class: "anima-section-nav", "aria-label": "Anima parameter sections" }, + sections.map((section) => h("a", { href: `#${sectionAnchorId(section.title)}` }, section.title)), + ), + ]), + visibleSections.length + ? renderTrainingSchemaSections(animaForm, visibleSections) + : h("p", { class: "anima-empty-filter" }, "No matching parameters."), + ]), + ], + [ + renderParameterPreview(previewToml(payload()), "anima-preview-code"), + renderRunControls( + [ + { label: "Save Config", onClick: saveForm }, + { label: "Load Config", onClick: loadForm }, + { label: "Reset Config", onClick: resetForm }, + { label: "Export Config", onClick: exportConfig }, + { label: "Import Config", onClick: () => importConfigInput.value?.click() }, + { label: "Start Training", onClick: runTraining, primary: true }, + ], + status.value, + ), + renderWorkflowSummary(animaForm, visibleSections), + renderRunResult(runResult.value), + h("input", { + ref: importConfigInput, + id: "anima-import-config", + type: "file", + accept: "application/json,.json", + style: "display:none", + onChange: importConfigFile, + }), + h("section", { class: "anima-preview-card anima-contract-card" }, [ + h("h2", "Source Contract"), + h("p", `${sections.length} source-owned sections render from frontend/source schema definitions.`), + h("dl", { class: "anima-contract" }, [ + h("dt", "model_train_type"), + h("dd", plan.modelTrainType), + h("dt", "Schema"), + h("dd", plan.schemaFile), + h("dt", "Backend entrypoint"), + h("dd", plan.backendEntrypoint), + ]), + ]), + ], + ), + ]) + ); + }; + }, +}); + +interface AnimaRunResult { + taskId?: string; + logViewer?: string; + logStream?: string; +} + +function runResultFromResponse(result: unknown): AnimaRunResult { + if (!result || typeof result !== "object") { + return {}; + } + + const data = "data" in result && result.data && typeof result.data === "object" ? result.data : result; + return { + taskId: stringValue(data, "task_id"), + logViewer: stringValue(data, "train_log_viewer"), + logStream: stringValue(data, "train_log_stream"), + }; +} + +function stringValue(source: object, key: string) { + return key in source && typeof source[key as keyof typeof source] === "string" + ? (source[key as keyof typeof source] as string) + : undefined; +} + +function renderRunResult(result: AnimaRunResult | null) { + if (!result) { + return null; + } + + return h("section", { class: "anima-preview-card anima-run-result", "aria-label": "Submitted training task" }, [ + h("div", { class: "anima-run-result__header" }, [ + h("span", "Submitted Task"), + h("strong", result.taskId || "submitted"), + ]), + h("div", { class: "anima-run-result__links" }, [ + result.logViewer ? h("a", { href: result.logViewer }, "Open Log") : null, + h("a", { href: "/task.html" }, "Open Tasks"), + ]), + result.logStream ? h("code", result.logStream) : null, + ]); +} + +function renderWorkflowSummary(form: AnimaForm, sections: TrainingSectionSpec[]) { + const requiredPathKeys: (keyof AnimaForm & string)[] = [ + "pretrained_model_name_or_path", + "vae", + "qwen3", + "train_data_dir", + "output_dir", + ]; + const completedPaths = requiredPathKeys.filter((key) => String(form[key] ?? "").trim()).length; + const fieldCount = countVisibleFields(form, sections); + const ready = completedPaths === requiredPathKeys.length; + + return h("section", { class: "anima-preview-card training-workflow-summary" }, [ + h("div", { class: "training-workflow-summary__header" }, [ + h("h2", "Workflow Summary"), + h("span", { class: ready ? "is-ready" : "needs-input" }, ready ? "Ready" : "Needs paths"), + ]), + h("dl", { class: "training-workflow-summary__grid" }, [ + h("dt", "Schema coverage"), + h("dd", `${sections.length} sections / ${fieldCount} visible fields`), + h("dt", "Required paths"), + h("dd", `${completedPaths} / ${requiredPathKeys.length} filled`), + h("dt", "Output"), + h("dd", String(form.output_name || "anima")), + ]), + ]); +} + +function countVisibleFields(form: AnimaForm, sections: TrainingSectionSpec[]) { + return sections.reduce((count, section) => { + if (section.hidden) { + return count; + } + return count + section.fields.reduce((fieldCount, item) => fieldCount + countVisibleSectionItem(form, item), 0); + }, 0); +} + +function countVisibleSectionItem(form: AnimaForm, item: TrainingSectionItem) { + if (item.hidden) { + return 0; + } + if (item.kind === "row") { + return item.fields.filter((field) => !field.hidden && fieldMatchesVisibility(form, field)).length; + } + return fieldMatchesVisibility(form, item) ? 1 : 0; +} + +function fieldMatchesVisibility(form: AnimaForm, field: TrainingFieldSpec) { + if (!field.visibleWhen) { + return true; + } + if (typeof field.visibleWhen === "function") { + return field.visibleWhen(form); + } + const value = form[field.visibleWhen.key]; + if ("equals" in field.visibleWhen) { + return value === field.visibleWhen.equals; + } + if ("notEquals" in field.visibleWhen) { + return value !== field.visibleWhen.notEquals; + } + if ("truthy" in field.visibleWhen) { + return Boolean(value) === field.visibleWhen.truthy; + } + return true; +} + +function filterSections(sections: TrainingSectionSpec[], query: string) { + const needle = query.trim().toLowerCase(); + if (!needle) { + return sections; + } + + return sections + .map((section) => ({ + ...section, + fields: section.fields + .map((item) => filterSectionItem(section.title, item, needle)) + .filter((item): item is TrainingSectionItem => Boolean(item)), + })) + .filter((section) => section.fields.length > 0); +} + +function filterSectionItem(sectionTitle: string, item: TrainingSectionItem, needle: string) { + if (item.kind === "row") { + const fields = item.fields.filter((field) => fieldMatches(sectionTitle, field, needle)); + return fields.length ? { ...item, fields } : null; + } + return fieldMatches(sectionTitle, item, needle) ? item : null; +} + +function fieldMatches(sectionTitle: string, field: TrainingFieldSpec, needle: string) { + return [sectionTitle, field.key, field.label, field.description, field.kind, field.role] + .filter(Boolean) + .some((value) => String(value).toLowerCase().includes(needle)); +} + +function normalizePath(value: string): string { + return value.replaceAll("\\", "/"); +} + +function readStoredForms(): Record> { + try { + return JSON.parse(localStorage.getItem(ANIMA_STORAGE_KEY) || "{}"); + } catch { + return {}; + } +} + +function loadStoredForm(plan: AnimaRoutePlan): AnimaForm { + const stored = readStoredForms()[plan.path] || {}; + return { + ...defaultFormForPlan(plan), + ...stored, + }; +} + +function defaultFormForPlan(plan: AnimaRoutePlan): AnimaForm { + return { + ...animaDefaults, + output_name: plan.modelTrainType === "anima-finetune" ? "anima-finetune" : "anima-lora", + }; +} + + diff --git a/frontend/source/src/animaSchema.ts b/frontend/source/src/animaSchema.ts new file mode 100644 index 00000000..b5f57533 --- /dev/null +++ b/frontend/source/src/animaSchema.ts @@ -0,0 +1,1030 @@ +import { + defineTrainingRow, + defineTrainingSection, + defineTrainingSections, + type TrainingSectionSpec, +} from "./trainingRenderer"; + +export interface AnimaRoutePlan { + path: string; + heading: string; + modelTrainType: "anima-lora" | "anima-finetune"; + schemaFile: string; + backendEntrypoint: string; + summary: string; + nextWork: string[]; +} +export interface AnimaForm { + [key: string]: unknown; + pretrained_model_name_or_path: string; + vae: string; + qwen3: string; + t5_tokenizer_path: string; + llm_adapter_path: string; + resume: string; + train_data_dir: string; + output_dir: string; + output_name: string; + lora_type: "lora" | "lokr" | "tlora" | "lora_fa" | "vera" | "loha"; + max_train_epochs: number; + train_batch_size: number; + gradient_accumulation_steps: number; + qwen3_max_token_length: number; + t5_max_token_length: number; + learning_rate: string; + self_attn_lr: string; + cross_attn_lr: string; + mlp_lr: string; + mod_lr: string; + llm_adapter_lr: string; + unet_lr: string; + lr_scheduler: "linear" | "cosine" | "cosine_with_restarts" | "polynomial" | "constant" | "constant_with_warmup"; + lr_warmup_steps: number; + lr_scheduler_num_cycles: number; + optimizer_args_custom: string[]; + min_snr_gamma: string; + prodigy_d0: string; + prodigy_d_coef: string; + network_dim: number; + network_alpha: number; + network_args_custom: string[]; + network_weights: string; + dim_from_weights: boolean; + scale_weight_norms: string; + train_norm: boolean; + network_dropout: number; + pissa_init: boolean; + pissa_method: "rsvd" | "svd"; + pissa_niter: number; + pissa_oversample: number; + lokr_factor: number; + full_matrix: boolean; + tlora_min_rank: number; + tlora_rank_schedule: "cosine" | "linear"; + tlora_orthogonal_init: boolean; + resolution: string; + enable_bucket: boolean; + min_bucket_reso: number; + max_bucket_reso: number; + bucket_reso_steps: number; + mixed_precision: "bf16" | "fp16" | "no"; + optimizer_type: string; + attn_mode: "" | "torch" | "xformers" | "sageattn" | "flash"; + timestep_sampling: "sigma" | "uniform" | "sigmoid" | "shift" | "flux_shift"; + sigmoid_scale: number; + discrete_flow_shift: number; + weighting_scheme: "sigma_sqrt" | "logit_normal" | "mode" | "cosmap" | "none" | "uniform"; + logit_mean: string; + logit_std: string; + mode_scale: string; + split_attn: boolean; + vae_chunk_size: string; + vae_disable_cache: boolean; + unsloth_offload_checkpointing: boolean; + gradient_checkpointing: boolean; + network_train_unet_only: boolean; + network_train_text_encoder_only: boolean; + cache_latents: boolean; + cache_latents_to_disk: boolean; + cache_text_encoder_outputs: boolean; + cache_text_encoder_outputs_to_disk: boolean; + fp8_base: boolean; + fp8_base_unet: boolean; + persistent_data_loader_workers: boolean; + max_data_loader_n_workers: number; + text_encoder_batch_size: string; + disable_mmap_load_safetensors: boolean; + blocks_to_swap: string; + cpu_offload_checkpointing: boolean; + enable_preview: boolean; + positive_prompts: string; + negative_prompts: string; + sample_width: number; + sample_height: number; + sample_cfg: number; + sample_seed: number; + sample_steps: number; + sample_sampler: "euler" | "k_euler"; + sample_scheduler: "simple"; + sample_at_first: boolean; + sample_every_n_epochs: number; + sample_prompts: string; + caption_extension: string; + prefer_json_caption: boolean; + enable_debug_options: boolean; + anima_profile_window: number; + anima_nan_check_interval: number; + anima_debug_mode: boolean; + anima_rope_mismatch_mode: "strict" | "resample"; + anima_rope_max_seq_tokens: number; + noise_offset: string; + multires_noise_iterations: string; + multires_noise_discount: string; + color_aug: boolean; + flip_aug: boolean; + random_crop: boolean; + seed: number; + clip_skip: number; + ui_custom_params: string; + ddp_timeout: string; + ddp_gradient_as_bucket_view: boolean; +} + +export const ANIMA_STORAGE_KEY = "sd-trainer-source-anima-configs"; + +export const ANIMA_ROUTES: Record = { + "/lora/sd3.html": { + path: "/lora/sd3.html", + heading: "Anima Stable Diffusion LoRA", + modelTrainType: "anima-lora", + schemaFile: "mikazuki/schema/sd3-lora.ts", + backendEntrypoint: "scripts/dev/anima_train_network.py", + summary: "Preserves the historical sd3 URL while routing to the Anima LoRA backend.", + nextWork: [ + "Move Anima LoRA form sections from schema-driven runtime into source-owned components.", + "Keep the sd3-lora route key stable for saved configs and old links.", + "Add browser smoke before replacing the production dist route.", + ], + }, + "/lora/anima-finetune.html": { + path: "/lora/anima-finetune.html", + heading: "Anima Finetune", + modelTrainType: "anima-finetune", + schemaFile: "mikazuki/schema/anima-finetune.ts", + backendEntrypoint: "scripts/dev/anima_train.py", + summary: "Tracks full DiT finetune work without touching SD or Flux training pages.", + nextWork: [ + "Source-own the high-risk Anima full finetune options first.", + "Keep full finetune defaults aligned with backend adapter tests.", + "Add save/load config compatibility checks before production replacement.", + ], + }, +}; + +export const animaDefaults: AnimaForm = { + pretrained_model_name_or_path: "./sd-models/anima/anima-base-v1.0.safetensors", + vae: "./sd-models/anima/qwen_image_vae.safetensors", + qwen3: "./sd-models/anima/qwen_3_06b_base.safetensors", + t5_tokenizer_path: "", + llm_adapter_path: "", + resume: "", + train_data_dir: "", + output_dir: "output", + output_name: "anima", + lora_type: "lora", + max_train_epochs: 10, + train_batch_size: 1, + gradient_accumulation_steps: 1, + qwen3_max_token_length: 512, + t5_max_token_length: 512, + learning_rate: "1e-5", + self_attn_lr: "", + cross_attn_lr: "", + mlp_lr: "", + mod_lr: "", + llm_adapter_lr: "", + unet_lr: "1e-4", + lr_scheduler: "cosine_with_restarts", + lr_warmup_steps: 0, + lr_scheduler_num_cycles: 1, + optimizer_args_custom: [], + min_snr_gamma: "", + prodigy_d0: "", + prodigy_d_coef: "2.0", + network_dim: 32, + network_alpha: 16, + network_args_custom: [], + network_weights: "", + dim_from_weights: false, + scale_weight_norms: "", + train_norm: false, + network_dropout: 0, + pissa_init: false, + pissa_method: "rsvd", + pissa_niter: 2, + pissa_oversample: 8, + lokr_factor: -1, + full_matrix: false, + tlora_min_rank: 4, + tlora_rank_schedule: "cosine", + tlora_orthogonal_init: true, + resolution: "1024,1024", + enable_bucket: true, + min_bucket_reso: 256, + max_bucket_reso: 2048, + bucket_reso_steps: 64, + mixed_precision: "bf16", + optimizer_type: "AdamW8bit", + attn_mode: "", + timestep_sampling: "shift", + sigmoid_scale: 1, + discrete_flow_shift: 3, + weighting_scheme: "uniform", + logit_mean: "", + logit_std: "", + mode_scale: "", + split_attn: false, + vae_chunk_size: "", + vae_disable_cache: false, + unsloth_offload_checkpointing: false, + gradient_checkpointing: true, + network_train_unet_only: true, + network_train_text_encoder_only: false, + cache_latents: true, + cache_latents_to_disk: true, + cache_text_encoder_outputs: true, + cache_text_encoder_outputs_to_disk: true, + fp8_base: false, + fp8_base_unet: false, + persistent_data_loader_workers: false, + max_data_loader_n_workers: 0, + text_encoder_batch_size: "", + disable_mmap_load_safetensors: false, + blocks_to_swap: "", + cpu_offload_checkpointing: false, + enable_preview: true, + positive_prompts: + "1girl, solo, smile, japanese clothes, kimono, blue eyes, closed mouth, upper body, looking at viewer", + negative_prompts: + "nsfw, explicit, sexual content, worst quality, low quality, artist name, jpeg artifacts", + sample_width: 1024, + sample_height: 1024, + sample_cfg: 4.5, + sample_seed: 42, + sample_steps: 40, + sample_sampler: "euler", + sample_scheduler: "simple", + sample_at_first: true, + sample_every_n_epochs: 2, + sample_prompts: "", + caption_extension: ".txt", + prefer_json_caption: true, + enable_debug_options: false, + anima_profile_window: 0, + anima_nan_check_interval: 0, + anima_debug_mode: false, + anima_rope_mismatch_mode: "strict", + anima_rope_max_seq_tokens: 0, + noise_offset: "", + multires_noise_iterations: "", + multires_noise_discount: "", + color_aug: false, + flip_aug: false, + random_crop: false, + seed: 1337, + clip_skip: 2, + ui_custom_params: "", + ddp_timeout: "", + ddp_gradient_as_bucket_view: false, +}; + +export const animaModelAssetSection: TrainingSectionSpec = { + title: "Model Assets", + fields: [ + { + kind: "text", + key: "pretrained_model_name_or_path", + id: "anima-pretrained-model", + label: "pretrained_model_name_or_path", + placeholder: "D:/models/anima-base-v1.0.safetensors", + description: "Anima DiT / transformer checkpoint path.", + role: "file", + }, + { + kind: "text", + key: "vae", + id: "anima-vae", + label: "vae", + placeholder: "D:/models/qwen_image_vae.safetensors", + description: "Qwen Image VAE path.", + role: "file", + }, + { + kind: "text", + key: "qwen3", + id: "anima-qwen3", + label: "qwen3", + placeholder: "D:/models/qwen_3_06b_base.safetensors", + description: "Qwen3 text model path.", + role: "file", + }, + { + kind: "text", + key: "t5_tokenizer_path", + id: "anima-t5-tokenizer-path", + label: "t5_tokenizer_path", + description: "Optional T5 tokenizer folder. Empty uses the bundled config.", + role: "folder", + }, + { + kind: "text", + key: "llm_adapter_path", + id: "anima-llm-adapter-path", + label: "llm_adapter_path", + role: "file", + }, + { + kind: "text", + key: "resume", + id: "anima-resume", + label: "resume", + role: "folder", + }, + ], +}; + +export const animaDatasetOutputSection: TrainingSectionSpec = { + title: "Dataset And Output", + fields: [ + { + kind: "text", + key: "train_data_dir", + id: "anima-train-data-dir", + label: "train_data_dir", + placeholder: "D:/datasets/anima", + role: "folder", + }, + { + kind: "text", + key: "output_dir", + id: "anima-output-dir", + label: "output_dir", + role: "folder", + }, + { + kind: "text", + key: "output_name", + id: "anima-output-name", + label: "output_name", + }, + { + kind: "row", + fields: [ + { + kind: "text", + key: "resolution", + id: "anima-resolution", + label: "resolution", + }, + { + kind: "text", + key: "caption_extension", + id: "anima-caption-extension", + label: "caption_extension", + }, + { + kind: "checkbox", + key: "prefer_json_caption", + id: "anima-prefer-json-caption", + label: "prefer_json_caption", + }, + ], + }, + { + kind: "row", + fields: [ + { kind: "text", key: "self_attn_lr", id: "anima-self-attn-lr", label: "self_attn_lr" }, + { kind: "text", key: "cross_attn_lr", id: "anima-cross-attn-lr", label: "cross_attn_lr" }, + { kind: "text", key: "mlp_lr", id: "anima-mlp-lr", label: "mlp_lr" }, + ], + }, + { + kind: "row", + fields: [ + { kind: "text", key: "mod_lr", id: "anima-mod-lr", label: "mod_lr" }, + { kind: "text", key: "llm_adapter_lr", id: "anima-llm-adapter-lr", label: "llm_adapter_lr" }, + { kind: "text", key: "min_snr_gamma", id: "anima-min-snr-gamma", label: "min_snr_gamma" }, + ], + }, + { + kind: "row", + fields: [ + { + kind: "checkbox", + key: "enable_bucket", + id: "anima-enable-bucket", + label: "enable_bucket", + }, + { + kind: "number", + key: "min_bucket_reso", + id: "anima-min-bucket-reso", + label: "min_bucket_reso", + min: 64, + }, + { + kind: "number", + key: "max_bucket_reso", + id: "anima-max-bucket-reso", + label: "max_bucket_reso", + min: 64, + }, + ], + }, + { + kind: "number", + key: "bucket_reso_steps", + id: "anima-bucket-reso-steps", + label: "bucket_reso_steps", + min: 1, + }, + ], +}; + +export const animaTrainingSection: TrainingSectionSpec = { + title: "Training", + fields: [ + { + kind: "row", + fields: [ + { kind: "number", key: "max_train_epochs", id: "anima-epochs", label: "max_train_epochs", min: 1 }, + { kind: "number", key: "train_batch_size", id: "anima-train-batch-size", label: "train_batch_size", min: 1 }, + { + kind: "number", + key: "gradient_accumulation_steps", + id: "anima-gradient-accumulation-steps", + label: "gradient_accumulation_steps", + min: 1, + }, + ], + }, + { + kind: "row", + fields: [ + { kind: "text", key: "learning_rate", id: "anima-learning-rate", label: "learning_rate" }, + { kind: "text", key: "optimizer_type", id: "anima-optimizer", label: "optimizer_type" }, + { + kind: "select", + key: "mixed_precision", + id: "anima-mixed-precision", + label: "mixed_precision", + options: ["bf16", "fp16", "no"], + }, + ], + }, + { + kind: "row", + fields: [ + { + kind: "select", + key: "lr_scheduler", + id: "anima-lr-scheduler", + label: "lr_scheduler", + options: ["linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup"], + }, + { kind: "number", key: "lr_warmup_steps", id: "anima-lr-warmup-steps", label: "lr_warmup_steps", min: 0 }, + { + kind: "number", + key: "qwen3_max_token_length", + id: "anima-qwen3-max-token-length", + label: "qwen3_max_token_length", + min: 1, + }, + ], + }, + { + kind: "number", + key: "lr_scheduler_num_cycles", + id: "anima-lr-scheduler-num-cycles", + label: "lr_scheduler_num_cycles", + min: 1, + visibleWhen: { key: "lr_scheduler", equals: "cosine_with_restarts" }, + }, + { + kind: "row", + visibleWhen: { key: "optimizer_type", equals: "Prodigy" }, + fields: [ + { kind: "text", key: "prodigy_d0", id: "anima-prodigy-d0", label: "prodigy_d0" }, + { kind: "text", key: "prodigy_d_coef", id: "anima-prodigy-d-coef", label: "prodigy_d_coef" }, + ], + }, + { + kind: "table", + key: "optimizer_args_custom", + id: "anima-optimizer-args-custom", + label: "optimizer_args_custom", + description: "Custom optimizer_args entries, one argument per row.", + }, + { kind: "number", key: "t5_max_token_length", id: "anima-t5-max-token-length", label: "t5_max_token_length", min: 1 }, + { + kind: "checkbox", + key: "gradient_checkpointing", + id: "anima-gradient-checkpointing", + label: "gradient_checkpointing", + }, + ], +}; + +export const animaLoraAdapterSection: TrainingSectionSpec = { + title: "LoRA Adapter", + fields: [ + { + kind: "row", + fields: [ + { + kind: "select", + key: "lora_type", + id: "anima-lora-type", + label: "lora_type", + options: ["lora", "lokr", "tlora", "lora_fa", "vera", "loha"], + }, + { kind: "text", key: "unet_lr", id: "anima-unet-lr", label: "unet_lr" }, + { kind: "number", key: "network_dim", id: "anima-network-dim", label: "network_dim", min: 1 }, + ], + }, + { kind: "number", key: "network_alpha", id: "anima-network-alpha", label: "network_alpha", min: 1 }, + { + kind: "text", + key: "network_weights", + id: "anima-network-weights", + label: "network_weights", + role: "file", + description: "Resume from an existing LoRA / LyCORIS adapter.", + }, + { + kind: "row", + fields: [ + { kind: "checkbox", key: "dim_from_weights", id: "anima-dim-from-weights", label: "dim_from_weights" }, + { kind: "text", key: "scale_weight_norms", id: "anima-scale-weight-norms", label: "scale_weight_norms" }, + { kind: "checkbox", key: "train_norm", id: "anima-train-norm", label: "train_norm" }, + ], + }, + { + kind: "row", + fields: [ + { kind: "number", key: "network_dropout", id: "anima-network-dropout", label: "network_dropout", min: 0, step: 0.01 }, + { kind: "checkbox", key: "pissa_init", id: "anima-pissa-init", label: "pissa_init" }, + ], + }, + { + kind: "row", + visibleWhen: { key: "pissa_init", equals: true }, + fields: [ + { + kind: "select", + key: "pissa_method", + id: "anima-pissa-method", + label: "pissa_method", + options: ["rsvd", "svd"], + }, + { kind: "number", key: "pissa_niter", id: "anima-pissa-niter", label: "pissa_niter", min: 0 }, + { kind: "number", key: "pissa_oversample", id: "anima-pissa-oversample", label: "pissa_oversample", min: 0 }, + ], + }, + { + kind: "row", + visibleWhen: { key: "lora_type", equals: "lokr" }, + fields: [ + { kind: "number", key: "lokr_factor", id: "anima-lokr-factor", label: "lokr_factor", min: -1 }, + { kind: "checkbox", key: "full_matrix", id: "anima-full-matrix", label: "full_matrix" }, + ], + }, + { + kind: "row", + visibleWhen: { key: "lora_type", equals: "tlora" }, + fields: [ + { kind: "number", key: "tlora_min_rank", id: "anima-tlora-min-rank", label: "tlora_min_rank", min: 1 }, + { + kind: "select", + key: "tlora_rank_schedule", + id: "anima-tlora-rank-schedule", + label: "tlora_rank_schedule", + options: ["cosine", "linear"], + }, + { + kind: "checkbox", + key: "tlora_orthogonal_init", + id: "anima-tlora-orthogonal-init", + label: "tlora_orthogonal_init", + }, + ], + }, + { + kind: "table", + key: "network_args_custom", + id: "anima-network-args-custom", + label: "network_args_custom", + description: "Custom network_args entries, one argument per row.", + }, + { + kind: "row", + fields: [ + { + kind: "checkbox", + key: "network_train_unet_only", + id: "anima-network-train-unet-only", + label: "network_train_unet_only", + }, + { + kind: "checkbox", + key: "network_train_text_encoder_only", + id: "anima-network-train-text-encoder-only", + label: "network_train_text_encoder_only", + }, + ], + }, + ], +}; + +export const animaParametersSection: TrainingSectionSpec = { + title: "Anima Parameters", + fields: [ + { + kind: "row", + fields: [ + { + kind: "select", + key: "attn_mode", + id: "anima-attn-mode", + label: "attn_mode", + options: ["", "torch", "xformers", "sageattn", "flash"], + }, + { + kind: "select", + key: "timestep_sampling", + id: "anima-timestep-sampling", + label: "timestep_sampling", + options: ["sigma", "uniform", "sigmoid", "shift", "flux_shift"], + }, + { kind: "number", key: "sigmoid_scale", id: "anima-sigmoid-scale", label: "sigmoid_scale", min: 0, step: 0.001 }, + ], + }, + { + kind: "row", + fields: [ + { + kind: "number", + key: "discrete_flow_shift", + id: "anima-discrete-flow-shift", + label: "discrete_flow_shift", + min: 0, + step: 0.001, + }, + { + kind: "select", + key: "weighting_scheme", + id: "anima-weighting-scheme", + label: "weighting_scheme", + options: ["sigma_sqrt", "logit_normal", "mode", "cosmap", "none", "uniform"], + }, + ], + }, + { + kind: "row", + fields: [ + { + kind: "text", + key: "logit_mean", + id: "anima-logit-mean", + label: "logit_mean", + description: "Optional logit_normal mean.", + visibleWhen: { key: "weighting_scheme", equals: "logit_normal" }, + }, + { + kind: "text", + key: "logit_std", + id: "anima-logit-std", + label: "logit_std", + description: "Optional logit_normal stddev.", + visibleWhen: { key: "weighting_scheme", equals: "logit_normal" }, + }, + { + kind: "text", + key: "mode_scale", + id: "anima-mode-scale", + label: "mode_scale", + description: "Optional mode weighting scale.", + visibleWhen: { key: "weighting_scheme", equals: "mode" }, + }, + ], + }, + { + kind: "row", + fields: [ + { kind: "checkbox", key: "split_attn", id: "anima-split-attn", label: "split_attn" }, + { kind: "text", key: "vae_chunk_size", id: "anima-vae-chunk-size", label: "vae_chunk_size", description: "Even VAE chunk size." }, + { kind: "checkbox", key: "vae_disable_cache", id: "anima-vae-disable-cache", label: "vae_disable_cache" }, + ], + }, + { + kind: "checkbox", + key: "unsloth_offload_checkpointing", + id: "anima-unsloth-offload-checkpointing", + label: "unsloth_offload_checkpointing", + description: "CPU RAM activation offload. Keep off with blocks_to_swap / cpu_offload_checkpointing.", + }, + ], +}; + +export const animaCacheSection: TrainingSectionSpec = { + title: "Cache", + fields: [ + { + kind: "row", + fields: [ + { kind: "checkbox", key: "cache_latents", id: "anima-cache-latents", label: "cache_latents" }, + { kind: "checkbox", key: "cache_latents_to_disk", id: "anima-cache-latents-to-disk", label: "cache_latents_to_disk" }, + { + kind: "checkbox", + key: "cache_text_encoder_outputs", + id: "anima-cache-text-encoder-outputs", + label: "cache_text_encoder_outputs", + }, + ], + }, + { + kind: "row", + fields: [ + { + kind: "checkbox", + key: "cache_text_encoder_outputs_to_disk", + id: "anima-cache-text-encoder-outputs-to-disk", + label: "cache_text_encoder_outputs_to_disk", + }, + { kind: "checkbox", key: "fp8_base", id: "anima-fp8-base", label: "fp8_base" }, + { kind: "checkbox", key: "fp8_base_unet", id: "anima-fp8-base-unet", label: "fp8_base_unet" }, + ], + }, + { + kind: "row", + fields: [ + { + kind: "checkbox", + key: "persistent_data_loader_workers", + id: "anima-persistent-data-loader-workers", + label: "persistent_data_loader_workers", + }, + { + kind: "number", + key: "max_data_loader_n_workers", + id: "anima-max-data-loader-n-workers", + label: "max_data_loader_n_workers", + min: 0, + }, + { + kind: "text", + key: "text_encoder_batch_size", + id: "anima-text-encoder-batch-size", + label: "text_encoder_batch_size", + description: "Optional text encoder cache batch size.", + }, + ], + }, + { + kind: "row", + fields: [ + { + kind: "checkbox", + key: "disable_mmap_load_safetensors", + id: "anima-disable-mmap-load-safetensors", + label: "disable_mmap_load_safetensors", + }, + { kind: "text", key: "blocks_to_swap", id: "anima-blocks-to-swap", label: "blocks_to_swap" }, + { + kind: "checkbox", + key: "cpu_offload_checkpointing", + id: "anima-cpu-offload-checkpointing", + label: "cpu_offload_checkpointing", + }, + ], + }, + ], +}; + +export const animaPreviewSection: TrainingSectionSpec = { + title: "Preview", + fields: [ + { kind: "checkbox", key: "enable_preview", id: "anima-enable-preview", label: "enable_preview" }, + { + kind: "textarea", + key: "positive_prompts", + id: "anima-positive-prompts", + label: "positive_prompts", + rows: 4, + visibleWhen: { key: "enable_preview", equals: true }, + }, + { + kind: "textarea", + key: "negative_prompts", + id: "anima-negative-prompts", + label: "negative_prompts", + rows: 4, + visibleWhen: { key: "enable_preview", equals: true }, + }, + { + kind: "textarea", + key: "sample_prompts", + id: "anima-sample-prompts", + label: "sample_prompts", + rows: 4, + visibleWhen: { key: "enable_preview", equals: true }, + }, + { + kind: "row", + visibleWhen: { key: "enable_preview", equals: true }, + fields: [ + { kind: "number", key: "sample_width", id: "anima-sample-width", label: "sample_width", min: 64 }, + { kind: "number", key: "sample_height", id: "anima-sample-height", label: "sample_height", min: 64 }, + { + kind: "number", + key: "sample_every_n_epochs", + id: "anima-sample-every-n-epochs", + label: "sample_every_n_epochs", + min: 1, + }, + ], + }, + { + kind: "row", + visibleWhen: { key: "enable_preview", equals: true }, + fields: [ + { kind: "number", key: "sample_cfg", id: "anima-sample-cfg", label: "sample_cfg", min: 1, step: 0.1 }, + { kind: "number", key: "sample_seed", id: "anima-sample-seed", label: "sample_seed", min: 0 }, + { kind: "number", key: "sample_steps", id: "anima-sample-steps", label: "sample_steps", min: 1 }, + ], + }, + { + kind: "row", + visibleWhen: { key: "enable_preview", equals: true }, + fields: [ + { + kind: "select", + key: "sample_sampler", + id: "anima-sample-sampler", + label: "sample_sampler", + options: ["euler", "k_euler"], + }, + { + kind: "select", + key: "sample_scheduler", + id: "anima-sample-scheduler", + label: "sample_scheduler", + options: ["simple"], + }, + { kind: "checkbox", key: "sample_at_first", id: "anima-sample-at-first", label: "sample_at_first" }, + ], + }, + ], +}; + +export const animaDebugSection: TrainingSectionSpec = { + title: "Debug Options", + fields: [ + { + kind: "checkbox", + key: "enable_debug_options", + id: "anima-enable-debug-options", + label: "enable_debug_options", + description: "Show Anima debug options. Normal training usually keeps this off.", + }, + { + kind: "row", + visibleWhen: { key: "enable_debug_options", equals: true }, + fields: [ + { + kind: "number", + key: "anima_profile_window", + id: "anima-profile-window", + label: "anima_profile_window", + min: 0, + }, + { + kind: "number", + key: "anima_nan_check_interval", + id: "anima-nan-check-interval", + label: "anima_nan_check_interval", + min: 0, + }, + { + kind: "checkbox", + key: "anima_debug_mode", + id: "anima-debug-mode", + label: "anima_debug_mode", + }, + ], + }, + { + kind: "row", + visibleWhen: { key: "enable_debug_options", equals: true }, + fields: [ + { + kind: "select", + key: "anima_rope_mismatch_mode", + id: "anima-rope-mismatch-mode", + label: "anima_rope_mismatch_mode", + options: ["strict", "resample"], + }, + { + kind: "number", + key: "anima_rope_max_seq_tokens", + id: "anima-rope-max-seq-tokens", + label: "anima_rope_max_seq_tokens", + min: 0, + }, + ], + }, + ], +}; + +export const animaNoiseSection: TrainingSectionSpec = { + title: "Noise Settings", + fields: [ + { + kind: "row", + fields: [ + { kind: "text", key: "noise_offset", id: "anima-noise-offset", label: "noise_offset" }, + { + kind: "text", + key: "multires_noise_iterations", + id: "anima-multires-noise-iterations", + label: "multires_noise_iterations", + }, + { + kind: "text", + key: "multires_noise_discount", + id: "anima-multires-noise-discount", + label: "multires_noise_discount", + }, + ], + }, + ], +}; + +export const animaDataEnhancementSection: TrainingSectionSpec = defineTrainingSection( + "Data Enhancement", + [ + defineTrainingRow([ + { kind: "checkbox", key: "color_aug", id: "anima-color-aug", label: "color_aug" }, + { kind: "checkbox", key: "flip_aug", id: "anima-flip-aug", label: "flip_aug" }, + { kind: "checkbox", key: "random_crop", id: "anima-random-crop", label: "random_crop" }, + ]), + ], +); + +export const animaOtherSection: TrainingSectionSpec = { + title: "Other", + fields: [ + { + kind: "row", + fields: [ + { kind: "number", key: "seed", id: "anima-seed", label: "seed", min: 0 }, + { + kind: "number", + key: "clip_skip", + id: "anima-clip-skip", + label: "clip_skip", + min: 0, + step: 1, + role: "slider", + }, + ], + }, + { + kind: "textarea", + key: "ui_custom_params", + id: "anima-ui-custom-params", + label: "ui_custom_params", + rows: 5, + description: "Advanced TOML override text. Use carefully.", + }, + ], +}; + +export const animaDistributedSection: TrainingSectionSpec = { + title: "Distributed Training", + fields: [ + { + kind: "row", + fields: [ + { kind: "text", key: "ddp_timeout", id: "anima-ddp-timeout", label: "ddp_timeout" }, + { + kind: "checkbox", + key: "ddp_gradient_as_bucket_view", + id: "anima-ddp-gradient-as-bucket-view", + label: "ddp_gradient_as_bucket_view", + }, + ], + }, + ], +}; + +export function animaSectionsForPlan(plan: AnimaRoutePlan): TrainingSectionSpec[] { + return defineTrainingSections([ + animaModelAssetSection, + animaDatasetOutputSection, + animaTrainingSection, + ...(plan.modelTrainType === "anima-lora" ? [animaLoraAdapterSection] : []), + animaParametersSection, + animaCacheSection, + animaPreviewSection, + animaDebugSection, + animaNoiseSection, + animaDataEnhancementSection, + animaOtherSection, + animaDistributedSection, + ]); +} + + + + diff --git a/frontend/source/src/classicTagEditor.ts b/frontend/source/src/classicTagEditor.ts new file mode 100644 index 00000000..0b2bd770 --- /dev/null +++ b/frontend/source/src/classicTagEditor.ts @@ -0,0 +1,41 @@ +import { defineComponent, h } from "vue"; + +export const ClassicTagEditorPage = defineComponent({ + name: "ClassicTagEditorPage", + setup() { + return () => + h("main", { class: "content classic-tag-editor-page" }, [ + h("header", { class: "classic-tag-editor-header" }, [ + h("div", [ + h("p", { class: "eyebrow" }, "Tools"), + h("h1", "Classic Tag Editor"), + h( + "p", + { class: "summary" }, + "The classic URL is kept for compatibility, but editing now uses the source-owned native tag editor.", + ), + ]), + h("div", { class: "classic-tag-editor-actions" }, [ + h("a", { class: "classic-tag-editor-open", href: "/native-tageditor.html" }, "Open Native Editor"), + h( + "a", + { class: "classic-tag-editor-open secondary", href: "/native-tageditor-standalone.html" }, + "Open Standalone Editor", + ), + ]), + ]), + h("section", { class: "classic-tag-editor-panel" }, [ + h("h2", "Source-Owned Replacement"), + h( + "p", + "The legacy Gradio proxy dependency has been removed from this route. Old bookmarks still land here, then continue into the maintained native editor.", + ), + h("ul", [ + h("li", "No legacy proxy iframe is required for production dist replacement."), + h("li", "Native editing remains available at /native-tageditor.html."), + h("li", "Focused demos can use /native-tageditor-standalone.html."), + ]), + ]), + ]); + }, +}); diff --git a/frontend/source/src/main.ts b/frontend/source/src/main.ts new file mode 100644 index 00000000..3b3baa84 --- /dev/null +++ b/frontend/source/src/main.ts @@ -0,0 +1,90 @@ +import { createApp, defineComponent, h } from "vue"; +import { AnimaRoutePage, isAnimaRoute } from "./anima"; +import { ClassicTagEditorPage } from "./classicTagEditor"; +import { MatureTrainingPage, isMatureTrainingRoute } from "./matureTraining"; +import { NativeTagEditorPage } from "./nativeTagEditor"; +import { ParametersPage } from "./parameters"; +import { currentRoute, navGroups, routes } from "./routes"; +import { SettingsPage } from "./settings"; +import { isStaticInfoRoute, StaticInfoPage } from "./staticPages"; +import { TaggerPage } from "./tagger"; +import { TaskPage } from "./tasks"; +import { TensorboardPage } from "./tensorboard"; +import "./styles.css"; + +const App = defineComponent({ + name: "SourceTrainerShell", + setup() { + const route = currentRoute(); + if (route.path === "/native-tageditor-standalone.html") { + return () => h(NativeTagEditorPage, { standalone: true }); + } + + const routeContent = + route.path === "/other/settings.html" + ? h(SettingsPage) + : route.path === "/tagger.html" + ? h(TaggerPage) + : route.path === "/tageditor.html" + ? h(ClassicTagEditorPage) + : isMatureTrainingRoute(route.path) + ? h(MatureTrainingPage, { route }) + : route.path === "/lora/params.html" + ? h(ParametersPage) + : route.path === "/tensorboard.html" + ? h(TensorboardPage) + : route.path === "/task.html" + ? h(TaskPage) + : route.path === "/native-tageditor.html" || route.path === "/dataset-editor.html" + ? h(NativeTagEditorPage) + : isAnimaRoute(route.path) + ? h(AnimaRoutePage, { route }) + : isStaticInfoRoute(route.path) + ? h(StaticInfoPage, { route }) + : h("main", { class: "content" }, [ + h("p", { class: "eyebrow" }, "Source-owned frontend shell"), + h("h1", route.title), + h("p", { class: "summary" }, route.description), + h("section", { class: "compat-panel" }, [ + h("h2", "Compatibility Contract"), + h("ul", [ + h("li", "Public routes are declared in frontend/source/src/routes.json."), + h( + "li", + "The production output is static HTML/CSS/JS and can be served by FastAPI StaticFiles.", + ), + h("li", "Build tooling stays in frontend/source and is not required at portable runtime."), + ]), + ]), + ]); + return () => + h("div", { class: "shell" }, [ + h("aside", { class: "sidebar", "aria-label": "Trainer navigation" }, [ + h("a", { class: "brand", href: "/" }, "SD Trainer Next"), + ...navGroups.map((group) => + h("section", { class: "nav-group" }, [ + h("h2", group.label), + h( + "nav", + routes + .filter((item) => item.section === group.section) + .map((item) => + h( + "a", + { + href: item.path, + class: item.path === route.path ? "active" : "", + }, + item.title, + ), + ), + ), + ]), + ), + ]), + routeContent, + ]); + }, +}); + +createApp(App).mount("#app"); diff --git a/frontend/source/src/matureTraining.ts b/frontend/source/src/matureTraining.ts new file mode 100644 index 00000000..b1d4580e --- /dev/null +++ b/frontend/source/src/matureTraining.ts @@ -0,0 +1,88 @@ +import { defineComponent, h } from "vue"; +import type { AppRoute } from "./routes"; + +interface MatureTrainingSpec { + family: string; + backend: string; + posture: string; + migrateWhen: string; +} + +const matureTrainingSpecs: Record = { + "/lora/basic.html": { + family: "LoRA compatibility", + backend: "Stable Diffusion LoRA presets", + posture: "Stable URL, source-owned shell, mature form deferred.", + migrateWhen: "Only migrate if this page needs active product changes.", + }, + "/lora/master.html": { + family: "Stable Diffusion compatibility", + backend: "Stable Diffusion trainer", + posture: "Keep mature SD behavior untouched while source renderer work focuses on Anima.", + migrateWhen: "Reuse the shared schema renderer if SD training becomes active work.", + }, + "/lora/flux.html": { + family: "Flux compatibility", + backend: "Flux LoRA trainer", + posture: "Keep Flux launch contracts stable and avoid hand-editing production dist.", + migrateWhen: "Attach Flux schema sections after renderer coverage is broader.", + }, + "/dreambooth/index.html": { + family: "Dreambooth compatibility", + backend: "Dreambooth trainer", + posture: "Preserve links without rebuilding mature Dreambooth behavior.", + migrateWhen: "Promote only if Dreambooth needs source-owned UI changes.", + }, +}; + +export function isMatureTrainingRoute(path: string): boolean { + return path in matureTrainingSpecs; +} + +export const MatureTrainingPage = defineComponent({ + name: "MatureTrainingPage", + props: { + route: { + type: Object as () => AppRoute, + required: true, + }, + }, + setup(props) { + return () => { + const spec = matureTrainingSpecs[props.route.path]; + return h("main", { class: "content training-compat-page" }, [ + h("header", { class: "training-compat-header" }, [ + h("div", [ + h("p", { class: "eyebrow" }, "Training"), + h("h1", props.route.title), + h("p", { class: "summary" }, spec.posture), + ]), + h("dl", { class: "training-compat-route" }, [ + h("dt", "Route"), + h("dd", props.route.path), + h("dt", "Template"), + h("dd", "mature training compatibility"), + ]), + ]), + h("section", { class: "training-compat-metrics" }, [ + h("article", [h("span", "Family"), h("strong", spec.family)]), + h("article", [h("span", "Backend"), h("strong", spec.backend)]), + h("article", [h("span", "Migration Rule"), h("strong", spec.migrateWhen)]), + ]), + h("section", { class: "compat-panel training-compat-contract" }, [ + h("h2", "Source Contract"), + h("ul", [ + h("li", "This mature training page is generated from one reusable source template."), + h("li", "Backend launch behavior and portable paths are not changed by this compatibility page."), + h("li", "Anima remains the active source-owned training form while this route stays stable."), + ]), + ]), + h("div", { class: "source-static-actions" }, [ + h("a", { class: "source-static-action", href: "/lora/index.html" }, "Open Training Index"), + h("a", { class: "source-static-action", href: "/lora/sd3.html" }, "Open Anima LoRA"), + h("a", { class: "source-static-action", href: "/lora/params.html" }, "Open Parameters"), + ]), + ]); + }; + }, +}); diff --git a/frontend/dist/assets/dataset-editor.css b/frontend/source/src/nativeDatasetEditor.css similarity index 100% rename from frontend/dist/assets/dataset-editor.css rename to frontend/source/src/nativeDatasetEditor.css diff --git a/frontend/source/src/nativeDatasetEditorMarkup.ts b/frontend/source/src/nativeDatasetEditorMarkup.ts new file mode 100644 index 00000000..63c6a864 --- /dev/null +++ b/frontend/source/src/nativeDatasetEditorMarkup.ts @@ -0,0 +1 @@ +export const nativeDatasetEditorMarkup = "\r\n
    \r\n
    \r\n \r\n\r\n \r\n\r\n \r\n
    \r\n
    "; diff --git a/frontend/dist/assets/dataset-editor.js b/frontend/source/src/nativeDatasetEditorRuntime.ts similarity index 99% rename from frontend/dist/assets/dataset-editor.js rename to frontend/source/src/nativeDatasetEditorRuntime.ts index 41a7b537..65c9e1e3 100644 --- a/frontend/dist/assets/dataset-editor.js +++ b/frontend/source/src/nativeDatasetEditorRuntime.ts @@ -1,3 +1,5 @@ +// @ts-nocheck +export {}; (function () { const QUICK_TAGS_KEY = "sd-trainer.dataset-editor.quick-tags"; const API_HISTORY = "/api/dataset-editor/history"; @@ -936,3 +938,4 @@ updateAutoGalleryPageSize(); render(); })(); + diff --git a/frontend/source/src/nativeTagEditor.ts b/frontend/source/src/nativeTagEditor.ts new file mode 100644 index 00000000..9ddb75aa --- /dev/null +++ b/frontend/source/src/nativeTagEditor.ts @@ -0,0 +1,28 @@ +import { defineComponent, h, onMounted } from "vue"; +import { nativeDatasetEditorMarkup } from "./nativeDatasetEditorMarkup"; +import "./nativeDatasetEditor.css"; + +export const NativeTagEditorPage = defineComponent({ + name: "NativeTagEditorPage", + props: { + standalone: { + type: Boolean, + default: false, + }, + }, + setup(props) { + onMounted(() => { + void import("./nativeDatasetEditorRuntime"); + }); + + return () => + h("main", { class: ["native-editor-page", props.standalone ? "native-editor-page--standalone" : ""] }, [ + h("section", { + id: "sd-native-editor-entry", + class: "theme-default-content native-editor-mount", + "aria-label": "Native Tag Editor", + innerHTML: nativeDatasetEditorMarkup, + }), + ]); + }, +}); diff --git a/frontend/source/src/parameters.ts b/frontend/source/src/parameters.ts new file mode 100644 index 00000000..bd75077b --- /dev/null +++ b/frontend/source/src/parameters.ts @@ -0,0 +1,74 @@ +import { defineComponent, h } from "vue"; +import { ANIMA_ROUTES, animaSectionsForPlan } from "./animaSchema"; +import type { AnimaForm } from "./animaSchema"; +import type { TrainingFieldSpec, TrainingSectionItem } from "./trainingRenderer"; + +function flattenFields(items: TrainingSectionItem[]): TrainingFieldSpec[] { + return items.flatMap((item) => (item.kind === "row" ? item.fields : [item])); +} + +function fieldKind(field: TrainingFieldSpec) { + if (field.role === "file" || field.role === "folder") return field.role; + if (field.role === "slider" || field.role === "table") return field.role; + return field.kind; +} + +export const ParametersPage = defineComponent({ + name: "ParametersPage", + setup() { + const loraPlan = ANIMA_ROUTES["/lora/sd3.html"]; + const finetunePlan = ANIMA_ROUTES["/lora/anima-finetune.html"]; + const sections = animaSectionsForPlan(loraPlan); + + return () => + h("main", { class: "content params-page" }, [ + h("header", { class: "params-header" }, [ + h("div", [ + h("p", { class: "eyebrow" }, "Reference"), + h("h1", "Training Parameters"), + h( + "p", + { class: "summary" }, + "Source-owned parameter reference generated from the Anima schema renderer specs.", + ), + ]), + h("div", { class: "params-actions" }, [ + h("a", { href: loraPlan.path }, "Open Anima LoRA"), + h("a", { href: finetunePlan.path }, "Open Anima Finetune"), + ]), + ]), + h("section", { class: "params-summary-grid" }, [ + h("article", [h("strong", String(sections.length)), h("span", "schema sections")]), + h("article", [ + h("strong", String(sections.reduce((total, section) => total + flattenFields(section.fields).length, 0))), + h("span", "documented fields"), + ]), + h("article", [h("strong", "source"), h("span", "frontend/source/src/animaSchema.ts")]), + ]), + h( + "section", + { class: "params-section-list", "aria-label": "Anima parameter sections" }, + sections.map((section) => + h("article", { class: "params-section-card" }, [ + h("header", [ + h("h2", section.title), + h("span", `${flattenFields(section.fields).length} fields`), + ]), + h( + "div", + { class: "params-field-list" }, + flattenFields(section.fields).map((field) => + h("div", { class: "params-field-row" }, [ + h("code", field.label), + h("span", fieldKind(field)), + field.visibleWhen ? h("small", "conditional") : null, + field.description ? h("p", field.description) : null, + ]), + ), + ), + ]), + ), + ), + ]); + }, +}); diff --git a/frontend/source/src/routes.json b/frontend/source/src/routes.json new file mode 100644 index 00000000..aa2f753e --- /dev/null +++ b/frontend/source/src/routes.json @@ -0,0 +1,128 @@ +[ + { + "path": "/", + "title": "SD Trainer Next", + "section": "home", + "description": "Source-owned trainer shell compatibility entry." + }, + { + "path": "/tagger.html", + "title": "数据集打标", + "section": "tools", + "description": "Dataset tagging compatibility route." + }, + { + "path": "/tageditor.html", + "title": "经典标签编辑", + "section": "tools", + "description": "Legacy tag editor compatibility route." + }, + { + "path": "/native-tageditor.html", + "title": "原生标签编辑", + "section": "tools", + "description": "Native tag editor route owned by the trainer shell." + }, + { + "path": "/native-tageditor-standalone.html", + "title": "原生标签编辑 Standalone", + "section": "tools", + "description": "Fullscreen native tag editor route for focused demos." + }, + { + "path": "/dataset-editor.html", + "title": "原生标签编辑 Debug", + "section": "tools", + "description": "Standalone native editor fallback/debug route." + }, + { + "path": "/tensorboard.html", + "title": "TensorBoard", + "section": "tools", + "description": "TensorBoard compatibility route." + }, + { + "path": "/other/settings.html", + "title": "UI 设置", + "section": "more", + "description": "Settings route for source-owned configuration UI." + }, + { + "path": "/lora/index.html", + "title": "LoRA 训练", + "section": "training", + "description": "LoRA training route compatibility entry." + }, + { + "path": "/lora/sd3.html", + "title": "Anima Stable Diffusion LoRA", + "section": "training", + "description": "Anima LoRA route preserving the historical sd3 URL." + }, + { + "path": "/lora/basic.html", + "title": "基础训练", + "section": "training", + "description": "Basic training route compatibility entry." + }, + { + "path": "/lora/master.html", + "title": "Stable Diffusion", + "section": "training", + "description": "Stable Diffusion training route compatibility entry." + }, + { + "path": "/lora/flux.html", + "title": "Flux LoRA", + "section": "training", + "description": "Flux LoRA route compatibility entry." + }, + { + "path": "/lora/anima-finetune.html", + "title": "全量微调", + "section": "training", + "description": "Anima full finetune route." + }, + { + "path": "/lora/params.html", + "title": "训练参数说明", + "section": "help", + "description": "Training parameter documentation route." + }, + { + "path": "/lora/tools.html", + "title": "LoRA 脚本工具", + "section": "tools", + "description": "LoRA script tools route." + }, + { + "path": "/dreambooth/index.html", + "title": "Dreambooth", + "section": "training", + "description": "Dreambooth compatibility route." + }, + { + "path": "/help/guide.html", + "title": "新手上路", + "section": "help", + "description": "Getting started route." + }, + { + "path": "/other/about.html", + "title": "关于", + "section": "more", + "description": "About route." + }, + { + "path": "/other/changelog.html", + "title": "更新日志", + "section": "more", + "description": "Changelog route." + }, + { + "path": "/task.html", + "title": "任务", + "section": "tools", + "description": "Task route." + } +] diff --git a/frontend/source/src/routes.ts b/frontend/source/src/routes.ts new file mode 100644 index 00000000..b925ba5e --- /dev/null +++ b/frontend/source/src/routes.ts @@ -0,0 +1,35 @@ +import routeData from "./routes.json"; + +export type RouteSection = "home" | "training" | "tools" | "help" | "more"; + +export interface AppRoute { + path: string; + title: string; + section: RouteSection; + description: string; +} + +export const routes = routeData as AppRoute[]; + +export const routeByPath = new Map(routes.map((route) => [route.path, route])); + +export const navGroups: { section: RouteSection; label: string }[] = [ + { section: "training", label: "训练" }, + { section: "tools", label: "工具与调试" }, + { section: "help", label: "帮助" }, + { section: "more", label: "其他" }, +]; + +export function normalizePath(pathname: string): string { + if (!pathname || pathname === "/index.html") return "/"; + return pathname.endsWith(".md") ? `${pathname.slice(0, -3)}.html` : pathname; +} + +export function currentRoute(pathname = window.location.pathname): AppRoute { + return routeByPath.get(normalizePath(pathname)) ?? { + path: normalizePath(pathname), + title: "兼容路由", + section: "home", + description: "This route is not migrated yet; it is reserved for compatibility.", + }; +} diff --git a/frontend/source/src/settings.ts b/frontend/source/src/settings.ts new file mode 100644 index 00000000..500d590e --- /dev/null +++ b/frontend/source/src/settings.ts @@ -0,0 +1,176 @@ +import { defineComponent, h, reactive } from "vue"; + +const UI_CONFIGS_KEY = "ui-configs"; +const ADVANCED_LINKS_KEY = "sd-trainer-ui-advanced-links"; + +type UiConfigs = Record; + +interface AdvancedLinks { + showTensorboard: boolean; + showLegacyTagEditor: boolean; +} + +interface FieldConfig { + key: keyof typeof DEFAULT_UI_CONFIGS; + label: string; + description: string; + type: "text" | "password" | "textarea"; +} + +const DEFAULT_UI_CONFIGS = { + dataset_tagger_api_endpoint: "https://api.openai.com/v1", + dataset_tagger_api_key: "", + dataset_tagger_api_model: "", + dataset_tagger_api_prompt: + "Describe this image for image model training. Return a concise caption only, without markdown or explanations.", +}; + +const DEFAULT_ADVANCED_LINKS: AdvancedLinks = { + showTensorboard: false, + showLegacyTagEditor: false, +}; + +const FIELDS: FieldConfig[] = [ + { + key: "dataset_tagger_api_endpoint", + label: "标签编辑器 API 地址", + description: "OpenAI-compatible endpoint used by native tag editor API captioning.", + type: "text", + }, + { + key: "dataset_tagger_api_key", + label: "标签编辑器 API Key", + description: "Stored locally in the browser and masked in the UI.", + type: "password", + }, + { + key: "dataset_tagger_api_model", + label: "标签编辑器 API 模型", + description: "Model name sent to the API captioning provider.", + type: "text", + }, + { + key: "dataset_tagger_api_prompt", + label: "标签编辑器 API 提示词", + description: "Prompt used for natural-language dataset captions.", + type: "textarea", + }, +]; + +function readJson(key: string, fallback: T): T { + try { + const raw = localStorage.getItem(key); + return raw ? { ...fallback, ...JSON.parse(raw) } : fallback; + } catch (_err) { + return fallback; + } +} + +function writeJson(key: string, value: unknown) { + localStorage.setItem(key, JSON.stringify(value)); +} + +export const SettingsPage = defineComponent({ + name: "SettingsPage", + setup() { + const uiConfigs = reactive({ + ...DEFAULT_UI_CONFIGS, + ...readJson(UI_CONFIGS_KEY, {}), + }); + const advanced = reactive( + readJson(ADVANCED_LINKS_KEY, DEFAULT_ADVANCED_LINKS), + ); + const status = reactive({ text: "设置仅保存在当前浏览器。API Key 不会写入项目文件。" }); + + function save() { + writeJson(UI_CONFIGS_KEY, uiConfigs); + writeJson(ADVANCED_LINKS_KEY, advanced); + status.text = "设置已保存。"; + } + + function reset() { + Object.assign(uiConfigs, DEFAULT_UI_CONFIGS); + Object.assign(advanced, DEFAULT_ADVANCED_LINKS); + save(); + status.text = "已恢复默认设置。"; + } + + function fieldControl(field: FieldConfig) { + const common = { + id: field.key, + value: uiConfigs[field.key] ?? "", + "aria-label": field.label, + onInput: (event: Event) => { + uiConfigs[field.key] = (event.target as HTMLInputElement | HTMLTextAreaElement).value; + }, + }; + if (field.type === "textarea") { + return h("textarea", { ...common, rows: 5 }); + } + return h("input", { + ...common, + type: field.type, + autocomplete: field.type === "password" ? "off" : "on", + }); + } + + return () => + h("section", { class: "settings-page" }, [ + h("div", { class: "settings-header" }, [ + h("p", { class: "eyebrow" }, "Source-owned settings"), + h("h1", "UI 设置"), + h("p", { class: "summary" }, "配置原生标签编辑器 API 打标和旧入口显示策略。"), + ]), + h( + "form", + { + class: "settings-form", + onSubmit: (event: Event) => { + event.preventDefault(); + save(); + }, + }, + [ + h("section", { class: "settings-card" }, [ + h("h2", "标签编辑器 API"), + ...FIELDS.map((field) => + h("label", { class: "settings-field", for: field.key }, [ + h("span", { class: "settings-label" }, field.label), + fieldControl(field), + h("small", field.description), + ]), + ), + ]), + h("section", { class: "settings-card" }, [ + h("h2", "旧功能入口"), + h("label", { class: "settings-toggle" }, [ + h("input", { + type: "checkbox", + checked: advanced.showTensorboard, + onChange: (event: Event) => { + advanced.showTensorboard = (event.target as HTMLInputElement).checked; + }, + }), + h("span", "显示 TensorBoard 入口"), + ]), + h("label", { class: "settings-toggle" }, [ + h("input", { + type: "checkbox", + checked: advanced.showLegacyTagEditor, + onChange: (event: Event) => { + advanced.showLegacyTagEditor = (event.target as HTMLInputElement).checked; + }, + }), + h("span", "显示经典标签编辑入口"), + ]), + ]), + h("div", { class: "settings-actions" }, [ + h("button", { class: "primary", type: "submit" }, "保存设置"), + h("button", { type: "button", onClick: reset }, "恢复默认"), + h("span", { class: "settings-status" }, status.text), + ]), + ], + ), + ]); + }, +}); diff --git a/frontend/source/src/staticPages.ts b/frontend/source/src/staticPages.ts new file mode 100644 index 00000000..97ff7642 --- /dev/null +++ b/frontend/source/src/staticPages.ts @@ -0,0 +1,399 @@ +import { defineComponent, h } from "vue"; +import { routes, type AppRoute } from "./routes"; + +interface StaticInfoPageSpec { + kicker: string; + title: string; + body: string; + actions: { label: string; href: string }[]; + checks: string[]; + status?: string; + nextStep?: string; +} + +const staticInfoPages: Record = { + "/": { + kicker: "Source Frontend", + title: "SD Trainer Next", + body: + "Source-owned trainer home for the frontend recovery branch. It keeps stable navigation while native editor, tagger, settings, and Anima routes move out of compiled dist patches.", + actions: [ + { label: "Open Anima LoRA", href: "/lora/sd3.html" }, + { label: "Open Native Tag Editor", href: "/native-tageditor.html" }, + { label: "Open Settings", href: "/other/settings.html" }, + ], + checks: [ + "Source frontend home is owned by frontend/source.", + "Production dist replacement remains guarded by dry-run sync.", + "Mature SD/Flux training routes remain compatibility entries.", + ], + status: "Source-owned shell", + nextStep: "Promote the remaining compatibility routes into reusable source renderers.", + }, + "/tageditor.html": { + kicker: "Tools", + title: "Classic Tag Editor", + body: + "Source-owned compatibility entry for the classic tag editor route. It now forwards old links toward the maintained native editor instead of depending on a legacy proxy.", + actions: [ + { label: "Open Native Tag Editor", href: "/native-tageditor.html" }, + { label: "Open Dataset Debug", href: "/dataset-editor.html" }, + ], + checks: [ + "Classic tag editor remains a source-owned compatibility entry.", + "Native tag editing stays on /native-tageditor.html.", + "The dataset-editor fallback remains available for debugging.", + ], + status: "Source-owned replacement", + nextStep: "Keep old tag editor links stable while native editing matures.", + }, + "/lora/index.html": { + kicker: "Training", + title: "LoRA Training", + body: + "Source-owned training index for stable links while mature training pages continue to keep their backend contracts.", + actions: [ + { label: "Open Anima LoRA", href: "/lora/sd3.html" }, + { label: "Open Anima Finetune", href: "/lora/anima-finetune.html" }, + ], + checks: [ + "Mature training routes remain compatibility entries until their schemas are intentionally migrated.", + "Anima routes are source-owned and share the local training renderer.", + "This page replaces the generic compatibility placeholder for /lora/index.html.", + ], + status: "Source-owned index", + nextStep: "Link migrated Anima pages with mature training compatibility entries.", + }, + "/lora/basic.html": { + kicker: "Training", + title: "Basic Training", + body: + "Compatibility route for the basic LoRA training page. The source shell keeps the URL stable without changing mature training behavior.", + actions: [ + { label: "Open LoRA Index", href: "/lora/index.html" }, + { label: "Open Settings", href: "/other/settings.html" }, + ], + checks: [ + "Mature training routes remain compatibility entries.", + "No SD/Flux training backend contract is changed by this source page.", + "Future migration can attach a schema section module to this route.", + ], + status: "Compatibility route", + nextStep: "Reuse the training schema renderer only if this mature page needs changes.", + }, + "/lora/master.html": { + kicker: "Training", + title: "Stable Diffusion Training", + body: + "Compatibility route for Stable Diffusion training. It is intentionally not rebuilt while the Anima source renderer is being stabilized.", + actions: [ + { label: "Open LoRA Index", href: "/lora/index.html" }, + { label: "Open Parameter Notes", href: "/lora/params.html" }, + ], + checks: [ + "Mature training routes remain compatibility entries.", + "The route is declared and generated from frontend/source.", + "Schema renderer improvements can be reused here later.", + ], + status: "Compatibility route", + nextStep: "Keep this page stable while Anima training is completed first.", + }, + "/lora/flux.html": { + kicker: "Training", + title: "Flux LoRA", + body: + "Compatibility route for Flux LoRA training. The source shell owns the route while avoiding changes to the mature Flux form.", + actions: [ + { label: "Open LoRA Index", href: "/lora/index.html" }, + { label: "Open Tools", href: "/lora/tools.html" }, + ], + checks: [ + "Mature training routes remain compatibility entries.", + "Flux backend and launch behavior are not changed here.", + "The route no longer depends on a generic placeholder in the source build.", + ], + status: "Compatibility route", + nextStep: "Defer Flux form migration until source renderer coverage is broader.", + }, + "/dreambooth/index.html": { + kicker: "Training", + title: "Dreambooth", + body: + "Source-owned compatibility route for Dreambooth links while training schema migration remains focused on Anima.", + actions: [ + { label: "Open LoRA Index", href: "/lora/index.html" }, + { label: "Open Settings", href: "/other/settings.html" }, + ], + checks: [ + "Mature training routes remain compatibility entries.", + "Dreambooth route generation is now covered by frontend/source.", + "No Dreambooth training behavior is changed by this page.", + ], + status: "Compatibility route", + nextStep: "Keep Dreambooth links stable while source training pages expand.", + }, + "/lora/params.html": { + kicker: "Reference", + title: "Training Parameters", + body: + "Source-owned parameter reference route reserved for renderer and schema migration notes.", + actions: [ + { label: "Open Anima LoRA", href: "/lora/sd3.html" }, + { label: "Open Changelog", href: "/other/changelog.html" }, + ], + checks: [ + "Mature training routes remain compatibility entries.", + "Parameter documentation can now evolve from source files.", + "The route keeps historical links stable.", + ], + status: "Reference route", + nextStep: "Move parameter documentation into source-owned structured content.", + }, + "/tensorboard.html": { + kicker: "Monitoring", + title: "TensorBoard", + body: + "This source-owned page preserves the TensorBoard route while the backend service remains launched by the trainer process.", + actions: [ + { label: "Open TensorBoard", href: "/tensorboard/" }, + { label: "Launch tensorboard.py", href: "/api/tensorboard/start" }, + ], + checks: [ + "Route stays available as /tensorboard.html.", + "The page does not bundle or start TensorBoard at portable runtime.", + "Navigation remains source-owned instead of patched into compiled VuePress assets.", + ], + status: "Runtime bridge route", + nextStep: "Add a source-owned launch/status panel after task APIs are stabilized.", + }, + "/lora/tools.html": { + kicker: "Tools", + title: "LoRA Script Tools", + body: + "A source-owned landing page for script utilities, kept separate from the mature SD and Flux training forms.", + actions: [ + { label: "Open Source Frontend", href: "/lora/tools.html" }, + { label: "Review scripts/run_gui.py", href: "/other/about.html" }, + ], + checks: [ + "The public tools URL is generated from frontend/source.", + "Tooling notes stay visible without editing frontend/dist by hand.", + "Future utility controls can be added here without touching training schemas.", + ], + status: "Tools route", + nextStep: "Add concrete tool actions from source-owned route specs.", + }, + "/task.html": { + kicker: "Runtime", + title: "Tasks", + body: + "This page reserves the task route for source-owned job status UI while backend task APIs are kept unchanged.", + actions: [ + { label: "Open Tasks", href: "/task.html" }, + { label: "Open Settings", href: "/other/settings.html" }, + ], + checks: [ + "The task route has a real source page instead of a generic compatibility placeholder.", + "Backend execution contracts stay outside this static page.", + "The page can grow into a task monitor after the source renderer stabilizes.", + ], + status: "Task route shell", + nextStep: "Connect backend task status once the frontend replacement path is stable.", + }, + "/help/guide.html": { + kicker: "Help", + title: "Getting Started", + body: + "A source-owned guide route for workflow notes and frontend migration status, independent from vendored VuePress page data.", + actions: [ + { label: "Open Guide", href: "/help/guide.html" }, + { label: "Open Native Tag Editor", href: "/native-tageditor.html" }, + ], + checks: [ + "Guide content is now editable from frontend/source.", + "The native tag editor route remains a separate entry.", + "Classic tag editor fallback stays available through /tageditor.html.", + ], + status: "Guide route", + nextStep: "Move getting-started copy into source-owned documentation blocks.", + }, + "/other/about.html": { + kicker: "Project", + title: "About SD Trainer Next", + body: + "This route records the source frontend ownership boundary and keeps project metadata out of minified dist patches.", + actions: [ + { label: "Open Settings", href: "/other/settings.html" }, + { label: "Open Source Routes", href: "/" }, + ], + checks: [ + "Source pages live under frontend/source.", + "Generated output targets build/frontend-source-dist.", + "Production replacement is guarded by scripts/sync_frontend_source_dist.py.", + ], + status: "Project route", + nextStep: "Expose source ownership and packaging boundaries from maintained docs.", + }, + "/other/changelog.html": { + kicker: "Release Notes", + title: "Changelog", + body: + "A source-owned changelog route for visible frontend migration checkpoints before production dist replacement.", + actions: [ + { label: "Open Changelog", href: "/other/changelog.html" }, + { label: "Open About", href: "/other/about.html" }, + ], + checks: [ + "Native tag editor, tagger, settings, and Anima source routes are tracked in docs/design/frontend-source-of-truth-plan.md.", + "Manual frontend/dist surgery is being retired in small verified steps.", + "The current branch keeps frontend/dist unchanged until the sync step is explicitly applied.", + ], + status: "Migration route", + nextStep: "Show frontend-source milestones from maintained release notes.", + }, +}; + +export function isStaticInfoRoute(path: string): boolean { + return path in staticInfoPages; +} + +export const StaticInfoPage = defineComponent({ + name: "StaticInfoPage", + props: { + route: { + type: Object as () => AppRoute, + required: true, + }, + }, + setup(props) { + return () => { + const spec = staticInfoPages[props.route.path] ?? { + kicker: "Compatibility", + title: props.route.title, + body: props.route.description, + actions: [{ label: "Open Route", href: props.route.path }], + checks: ["This route is declared in frontend/source/src/routes.json."], + status: "Compatibility route", + nextStep: "Promote this route into a source-owned page when it becomes active work.", + }; + const cards = [ + { + title: "Current Coverage", + body: spec.status ?? "Source-owned compatibility route", + }, + { + title: "Next Source Step", + body: spec.nextStep ?? spec.checks[0], + }, + { + title: "Safety Contract", + body: spec.checks[1] ?? "Keep backend and portable runtime contracts unchanged.", + }, + ]; + + return h("main", { class: "content source-static-page" }, [ + h("header", { class: "source-static-hero" }, [ + h("div", [ + h("p", { class: "eyebrow" }, spec.kicker), + h("h1", spec.title), + h("p", { class: "summary" }, spec.body), + ]), + h("dl", { class: "source-static-meta" }, [ + h("dt", "Route"), + h("dd", props.route.path), + h("dt", "Status"), + h("dd", spec.status ?? "Compatibility route"), + ]), + ]), + h( + "div", + { class: "source-static-actions" }, + spec.actions.map((action) => + h("a", { class: "source-static-action", href: action.href }, action.label), + ), + ), + h( + "section", + { class: "source-static-grid", "aria-label": "Source page status" }, + cards.map((card) => + h("article", { class: "source-static-card" }, [ + h("h2", card.title), + h("p", card.body), + ]), + ), + ), + h("p", { class: "source-static-status" }, spec.nextStep ?? spec.checks[0]), + renderRouteHub(props.route), + h("section", { class: "compat-panel source-static-contract" }, [ + h("h2", "Source Contract"), + h( + "ul", + spec.checks.map((check) => h("li", check)), + ), + ]), + ]); + }; + }, +}); + +function renderRouteHub(route: AppRoute) { + const hub = routeHubFor(route.path); + if (!hub) { + return null; + } + + const trainingRoutes = routes.filter( + (item) => item.section === hub.section && item.path !== route.path, + ); + + return h("section", { class: "source-route-list", "aria-label": "Training routes" }, [ + h("div", { class: "source-route-list__header" }, [ + h("h2", hub.title), + h("p", hub.body), + ]), + h( + "div", + { class: "source-route-list__grid" }, + trainingRoutes.map((item) => + h("a", { class: "source-route-card", href: item.path }, [ + h("span", { class: "source-route-card__section" }, routeStatus(item.path)), + h("strong", item.title), + h("small", item.description), + ]), + ), + ), + ]); +} + +function routeHubFor(path: string) { + if (path === "/lora/index.html") { + return { + section: "training" as const, + title: "Training Routes", + body: + "Anima routes are source-owned now; mature SD, Flux, and Dreambooth routes stay as compatibility entries.", + }; + } + if (path === "/lora/tools.html") { + return { + section: "tools" as const, + title: "Tool Routes", + body: + "Tool and debugging routes are declared from source so they can be migrated without editing compiled dist assets.", + }; + } + return null; +} + +function routeStatus(path: string) { + if (path === "/lora/sd3.html" || path === "/lora/anima-finetune.html") { + return "Source renderer"; + } + if (path === "/native-tageditor.html" || path === "/dataset-editor.html" || path === "/tagger.html") { + return "Source-owned tool"; + } + if (path === "/tageditor.html") { + return "Source replacement"; + } + return "Compatibility route"; +} diff --git a/frontend/source/src/styles.css b/frontend/source/src/styles.css new file mode 100644 index 00000000..f149afe4 --- /dev/null +++ b/frontend/source/src/styles.css @@ -0,0 +1,1598 @@ +:root { + color-scheme: light; + font-family: + Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + color: #1f2937; + background: #f6f7f9; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + overflow-x: hidden; + overflow-y: auto; +} + +a { + color: inherit; +} + +.shell { + min-height: 100vh; + display: grid; + grid-template-columns: 260px minmax(0, 1fr); +} + +.sidebar { + display: flex; + flex-direction: column; + gap: 18px; + padding: 18px 16px; + border-right: 1px solid #d8dde6; + background: #fff; +} + +.brand { + font-size: 17px; + font-weight: 800; + text-decoration: none; +} + +.nav-group { + display: grid; + gap: 8px; +} + +.nav-group h2 { + margin: 0; + color: #667085; + font-size: 12px; +} + +.nav-group nav { + display: grid; + gap: 4px; +} + +.nav-group a { + min-height: 32px; + display: flex; + align-items: center; + padding: 0 10px; + border-radius: 6px; + text-decoration: none; +} + +.nav-group a.active, +.nav-group a:hover { + background: #e6f4f1; + color: #0f766e; +} + +.content { + max-width: 960px; + padding: 40px; +} + +.eyebrow { + margin: 0 0 10px; + color: #0f766e; + font-size: 12px; + font-weight: 800; + text-transform: uppercase; +} + +h1 { + margin: 0; + font-size: 32px; +} + +.summary { + max-width: 680px; + color: #667085; + font-size: 16px; + line-height: 1.65; +} + +.compat-panel { + margin-top: 28px; + padding: 18px; + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; +} + +.compat-panel h2 { + margin: 0 0 10px; + font-size: 16px; +} + +.compat-panel ul { + margin: 0; + padding-left: 20px; + color: #475467; + line-height: 1.7; +} + +.source-static-page { + display: grid; + align-content: start; + gap: 16px; + max-width: 1120px; +} + +.source-static-page .summary { + margin: 0; +} + +.source-static-hero { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(260px, 360px); + gap: 18px; + align-items: stretch; +} + +.source-static-hero > div, +.source-static-meta, +.source-static-card, +.source-static-status { + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; + box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04); +} + +.source-static-hero > div { + display: grid; + align-content: center; + min-height: 174px; + padding: 22px 24px; +} + +.source-static-meta { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + gap: 8px 12px; + align-content: center; + margin: 0; + padding: 18px; +} + +.source-static-meta dt { + color: #667085; + font-weight: 800; +} + +.source-static-meta dd { + min-width: 0; + margin: 0; + padding: 4px 8px; + border-radius: 6px; + background: #f2f5f9; + color: #172033; + font-family: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; + font-size: 12px; + overflow-wrap: anywhere; +} + +.source-static-actions { + display: flex; + flex-wrap: wrap; + gap: 10px; +} + +.source-static-action { + min-height: 36px; + display: inline-flex; + align-items: center; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 14px; + background: #fff; + color: #1f2937; + font-weight: 700; + text-decoration: none; +} + +.source-static-action:hover { + border-color: #0f766e; + color: #0f766e; +} + +.source-static-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 14px; +} + +.source-static-card { + display: grid; + align-content: start; + gap: 8px; + min-height: 142px; + padding: 18px; +} + +.source-static-card h2 { + margin: 0; + font-size: 15px; +} + +.source-static-card p { + margin: 0; + color: #475467; + line-height: 1.55; +} + +.source-static-status { + margin: 0; + padding: 12px 14px; + color: #0b5f59; + font-weight: 700; +} + +.source-route-list { + display: grid; + gap: 14px; + padding: 18px; + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; + box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04); +} + +.source-route-list__header { + display: grid; + gap: 6px; +} + +.source-route-list__header h2, +.source-route-list__header p { + margin: 0; +} + +.source-route-list__header h2 { + font-size: 17px; +} + +.source-route-list__header p { + color: #667085; + line-height: 1.55; +} + +.source-route-list__grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 12px; +} + +.source-route-card { + display: grid; + gap: 8px; + min-height: 136px; + padding: 16px; + border: 1px solid #e1e6ef; + border-radius: 8px; + background: #fbfcfe; + color: #172033; + text-decoration: none; +} + +.source-route-card:hover { + border-color: #0f766e; + background: #f6fbfa; +} + +.source-route-card__section { + justify-self: start; + border-radius: 999px; + padding: 3px 8px; + background: #eef6f5; + color: #0b5f59; + font-size: 12px; + font-weight: 800; +} + +.source-route-card strong { + font-size: 15px; +} + +.source-route-card small { + color: #667085; + line-height: 1.5; +} + +.anima-page { + max-width: none; + width: 100%; + min-height: 100vh; + padding: 34px 40px 48px; + background: + linear-gradient(180deg, #f8fafc 0%, #f6f7f9 280px), + #f6f7f9; +} + +.anima-header { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(260px, 420px); + gap: 24px; + align-items: stretch; + max-width: 1400px; +} + +.anima-header > div, +.anima-route-strip { + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; + box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04); +} + +.anima-header > div { + display: grid; + align-content: center; + min-height: 164px; + padding: 22px 24px; +} + +.anima-header h1 { + font-size: 30px; + line-height: 1.18; +} + +.anima-header .summary { + margin: 10px 0 0; +} + +.anima-route-strip { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + gap: 8px 12px; + margin: 0; + padding: 18px; + align-content: center; +} + +.anima-route-strip dt { + color: #667085; + font-weight: 800; +} + +.anima-route-strip dd { + min-width: 0; + margin: 0; + padding: 4px 8px; + border-radius: 6px; + background: #f2f5f9; + color: #172033; + font-family: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; + font-size: 12px; + overflow-wrap: anywhere; +} + +.anima-workbench { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(340px, 440px); + gap: 22px; + align-items: start; + max-width: 1400px; + margin-top: 28px; +} + +.anima-form-panel { + min-width: 0; +} + +.anima-contract { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + gap: 8px 14px; + margin: 0; +} + +.anima-contract dt { + color: #667085; + font-weight: 700; +} + +.anima-contract dd { + margin: 0; + min-width: 0; + font-family: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; + overflow-wrap: anywhere; +} + +.anima-form { + display: grid; + gap: 16px; + padding: 20px; + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; + box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04); +} + +.anima-form h2 { + margin: 0; + padding-bottom: 12px; + border-bottom: 1px solid #edf1f6; + font-size: 18px; +} + +.anima-form-tools { + display: grid; + gap: 12px; + padding: 14px; + border: 1px solid #e1e6ef; + border-radius: 8px; + background: #f8fafc; +} + +.anima-search-field { + max-width: 520px; +} + +.anima-section-nav { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.anima-section-nav a { + min-height: 30px; + display: inline-flex; + align-items: center; + border: 1px solid #d8dde6; + border-radius: 999px; + padding: 0 10px; + background: #fff; + color: #1f2937; + font-size: 12px; + font-weight: 800; + text-decoration: none; +} + +.anima-section-nav a:hover { + border-color: #0f766e; + color: #0b5f59; +} + +.anima-empty-filter { + margin: 0; + padding: 18px; + border: 1px dashed #c9d3e3; + border-radius: 8px; + color: #667085; + text-align: center; +} + +.anima-section { + display: grid; + gap: 12px; + min-width: 0; + margin: 0; + padding: 16px; + border: 1px solid #e1e6ef; + border-radius: 8px; + background: #fbfcfe; +} + +.anima-section legend { + padding: 0 8px; + color: #172033; + font-size: 13px; + font-weight: 800; +} + +.anima-field, +.anima-toggle { + display: grid; + gap: 6px; + color: #1f2937; + font-weight: 700; +} + +.anima-toggle { + grid-template-columns: max-content 1fr; + align-items: center; + min-height: 38px; + padding: 8px 10px; + border: 1px solid #e4e9f1; + border-radius: 6px; + background: #fff; +} + +.anima-field input, +.anima-field select, +.anima-field textarea { + width: 100%; + border: 1px solid #c9d3e3; + border-radius: 6px; + padding: 9px 10px; + font: inherit; + font-weight: 400; + background: #fff; +} + +.anima-field input:focus, +.anima-field select:focus, +.anima-field textarea:focus { + border-color: #0f766e; + box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.14); + outline: none; +} + +.anima-field textarea { + resize: vertical; + line-height: 1.55; +} + +.training-path-field { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 8px; +} + +.training-path-field__browse { + min-width: 86px; + border: 1px solid #d8dde6; + border-radius: 6px; + background: #fff; + color: #1f2937; + font: inherit; + font-weight: 700; + cursor: pointer; +} + +.training-path-field__browse:hover, +.training-table-field__row button:hover, +.training-table-field__add:hover, +.anima-actions button:hover { + border-color: #0f766e; + color: #0b5f59; +} + +.training-path-field__browse:disabled { + cursor: not-allowed; + opacity: 0.65; +} + +.training-table-field__rows { + display: grid; + gap: 8px; +} + +.training-table-field__row { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 8px; +} + +.training-table-field__row button, +.training-table-field__add { + min-height: 36px; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 12px; + background: #fff; + color: #1f2937; + font: inherit; + font-weight: 700; + cursor: pointer; +} + +.training-table-field__add { + justify-self: start; +} + +.training-slider-field__control { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(46px, auto); + gap: 10px; + align-items: center; +} + +.training-slider-field__control output { + min-width: 46px; + padding: 4px 8px; + border-radius: 6px; + background: #eef6f5; + color: #475467; + font-variant-numeric: tabular-nums; + text-align: right; +} + +.training-field-description { + color: #667085; + font-size: 12px; + font-weight: 500; + line-height: 1.45; +} + +.anima-field-row { + display: grid; + grid-template-columns: repeat(3, minmax(160px, 1fr)); + gap: 12px 14px; +} + +.anima-toggle-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px 16px; +} + +.anima-actions { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; +} + +.anima-actions button { + min-height: 36px; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 14px; + background: #fff; + color: #1f2937; + font: inherit; + font-weight: 700; + cursor: pointer; +} + +.anima-actions .primary { + grid-column: 1 / -1; + min-height: 42px; + border-color: #0f766e; + background: #0f766e; + color: #fff; +} + +.anima-preview-panel { + position: sticky; + top: 18px; + display: grid; + gap: 14px; + min-width: 0; +} + +.anima-preview-card { + display: grid; + gap: 12px; + padding: 18px; + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; + box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04); +} + +.anima-preview-card h2 { + margin: 0; + font-size: 17px; +} + +.anima-preview-card summary { + cursor: pointer; + font-weight: 800; +} + +.anima-preview-card ul { + margin: 0; + padding-left: 20px; + color: #475467; + line-height: 1.65; +} + +.anima-preview-code { + max-height: 560px; + margin: 0; + overflow: auto; + border-radius: 8px; + padding: 16px; + border: 1px solid #e4e9f1; + background: #f8fafc; + color: #172033; + font-family: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; + font-size: 13px; + line-height: 1.55; + white-space: pre-wrap; + overflow-wrap: anywhere; +} + +.anima-status { + margin: 0; + min-height: 28px; + display: inline-flex; + align-items: center; + border-radius: 999px; + padding: 0 10px; + background: #eef6f5; + color: #0b5f59; + font-weight: 700; +} + +.training-workflow-summary { + gap: 12px; +} + +.training-workflow-summary__header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; +} + +.training-workflow-summary__header h2 { + margin: 0; +} + +.training-workflow-summary__header span { + border-radius: 999px; + padding: 5px 9px; + font-size: 12px; + font-weight: 800; +} + +.training-workflow-summary__header .is-ready { + background: #eef6f5; + color: #0b5f59; +} + +.training-workflow-summary__header .needs-input { + background: #fff7ed; + color: #9a3412; +} + +.training-workflow-summary__grid { + display: grid; + grid-template-columns: max-content minmax(0, 1fr); + gap: 8px 12px; + margin: 0; +} + +.training-workflow-summary__grid dt { + color: #667085; + font-size: 12px; + font-weight: 800; + text-transform: uppercase; +} + +.training-workflow-summary__grid dd { + margin: 0; + color: #172033; + font-weight: 700; + overflow-wrap: anywhere; +} + +.anima-run-result { + gap: 10px; +} + +.anima-run-result__header { + display: flex; + flex-wrap: wrap; + gap: 8px 12px; + align-items: baseline; + justify-content: space-between; + color: #475467; + font-size: 13px; + font-weight: 700; +} + +.anima-run-result__header strong { + color: #172033; + overflow-wrap: anywhere; +} + +.anima-run-result__links { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.anima-run-result__links a { + min-height: 32px; + display: inline-flex; + align-items: center; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 10px; + color: #0b5f59; + font-weight: 800; + text-decoration: none; +} + +.anima-run-result__links a:hover { + border-color: #0f766e; + background: #eef6f5; +} + +.anima-run-result code { + display: block; + border-radius: 6px; + padding: 8px 10px; + background: #f8fafc; + color: #475467; + font-size: 12px; + overflow-wrap: anywhere; +} + +.native-editor-page { + min-width: 0; + background: #eef2f6; +} + +.classic-tag-editor-page { + max-width: none; + display: grid; + grid-template-rows: auto minmax(520px, 1fr); + gap: 16px; + min-height: 100vh; + padding: 24px; +} + +.classic-tag-editor-header { + display: flex; + gap: 18px; + align-items: flex-start; + justify-content: space-between; +} + +.classic-tag-editor-actions { + display: flex; + flex-wrap: wrap; + gap: 10px; + justify-content: flex-end; +} + +.classic-tag-editor-open { + min-height: 38px; + display: inline-flex; + align-items: center; + border-radius: 6px; + padding: 0 14px; + background: #0f766e; + color: #fff; + font-weight: 800; + text-decoration: none; + white-space: nowrap; +} + +.classic-tag-editor-open.secondary { + border: 1px solid #d8dde6; + background: #fff; + color: #0b5f59; +} + +.classic-tag-editor-panel { + min-width: 0; + border: 1px solid #d8dde6; + border-radius: 8px; + padding: 22px; + background: #fff; +} + +.classic-tag-editor-panel h2 { + margin: 0 0 10px; + font-size: 18px; +} + +.classic-tag-editor-panel p { + max-width: 760px; + color: #475467; + line-height: 1.6; +} + +.classic-tag-editor-panel ul { + margin: 16px 0 0; + padding-left: 20px; + color: #475467; + line-height: 1.7; +} + +.training-compat-page { + display: grid; + gap: 18px; +} + +.training-compat-header { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(220px, 320px); + gap: 18px; + align-items: start; +} + +.training-compat-route { + margin: 0; + border: 1px solid #d8dde6; + border-radius: 8px; + padding: 14px; + background: #fff; +} + +.training-compat-route dt { + color: #667085; + font-size: 12px; + font-weight: 800; + text-transform: uppercase; +} + +.training-compat-route dd { + margin: 4px 0 12px; + color: #172033; + font-weight: 700; +} + +.training-compat-metrics { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 12px; +} + +.training-compat-metrics article { + min-height: 110px; + display: grid; + align-content: start; + gap: 8px; + border: 1px solid #d8dde6; + border-radius: 8px; + padding: 16px; + background: #fff; +} + +.training-compat-metrics span { + color: #667085; + font-size: 12px; + font-weight: 800; + text-transform: uppercase; +} + +.training-compat-metrics strong { + color: #172033; + line-height: 1.45; +} + +.training-compat-contract { + background: #fff; +} + +.native-editor-page--standalone { + min-height: 100vh; +} + +.native-editor-mount { + min-height: 100vh; +} + +.native-editor-mount:empty { + padding: 40px; +} + +.native-editor-mount:empty::before { + content: "Loading native tag editor..."; + color: #667085; + font-weight: 700; +} + +.tagger-page { + max-width: 1180px; +} + +.tagger-workbench { + display: grid; + grid-template-columns: minmax(280px, 420px) minmax(0, 1fr); + gap: 18px; + margin-top: 24px; +} + +.tagger-schema, +.tagger-output, +.example-container > .right-container .sd-tagger-dock { + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; +} + +.tagger-schema { + padding: 18px; +} + +.tagger-schema form { + display: grid; + gap: 12px; +} + +.tagger-field { + display: grid; + gap: 6px; + margin: 0; +} + +.tagger-field input, +.tagger-field select { + width: 100%; + border: 1px solid #c9d3e3; + border-radius: 6px; + padding: 9px 10px; + font: inherit; +} + +.tagger-output { + display: grid; + align-content: start; + gap: 12px; + padding: 18px; +} + +.tagger-output > button.el-button { + display: none; +} + +.tagger-flags { + display: grid; + gap: 8px; +} + +.tagger-check { + display: flex; + gap: 8px; + align-items: center; + color: #475467; +} + +.example-container > .right-container .sd-tagger-dock { + display: grid; + gap: 12px; + padding: 16px; +} + +.sd-tagger-dock__status-line, +.sd-tagger-dock__buttons, +.sd-tagger-dock__meter-head { + display: flex; + flex-wrap: wrap; + gap: 10px; + align-items: center; + justify-content: space-between; +} + +.sd-tagger-dock__track { + height: 8px; + overflow: hidden; + border-radius: 999px; + background: #e5e7eb; +} + +.sd-tagger-dock__fill { + height: 100%; + border-radius: inherit; + background: #0f766e; +} + +.sd-tagger-dock__start, +.sd-tagger-dock__reset, +.sd-tagger-dock__link { + min-height: 36px; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 14px; + background: #fff; + color: #1f2937; + font: inherit; + cursor: pointer; +} + +.sd-tagger-dock__start { + border-color: #0f766e; + background: #0f766e; + color: #fff; +} + +.tagger-local-status { + margin: 0; + color: #667085; +} + +.task-page { + max-width: 1120px; +} + +.task-header { + display: flex; + gap: 18px; + align-items: start; + justify-content: space-between; + margin-bottom: 18px; +} + +.task-monitor { + display: grid; + gap: 14px; + padding: 18px; + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; +} + +.task-status { + margin: 0; + color: #0b5f59; + font-weight: 800; +} + +.task-list { + display: grid; + gap: 10px; +} + +.task-card { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 12px; + align-items: center; + padding: 14px; + border: 1px solid #e1e6ef; + border-radius: 8px; + background: #fbfcfe; +} + +.task-card__main, +.task-card__actions { + min-width: 0; +} + +.task-card__main { + display: grid; + gap: 6px; +} + +.task-card__main code { + overflow: hidden; + color: #667085; + text-overflow: ellipsis; + white-space: nowrap; +} + +.task-card__status { + justify-self: start; + border-radius: 999px; + padding: 3px 8px; + background: #eef6f5; + color: #0b5f59; + font-size: 12px; + font-weight: 800; +} + +.task-card--running .task-card__status { + background: #fff7ed; + color: #b45309; +} + +.task-card__actions { + display: flex; + flex-wrap: wrap; + gap: 8px; + justify-content: flex-end; +} + +.task-card__actions a, +.task-card__actions button { + min-height: 34px; + display: inline-flex; + align-items: center; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 10px; + background: #fff; + color: #1f2937; + font: inherit; + font-weight: 700; + text-decoration: none; + cursor: pointer; +} + +.task-card__actions a:hover, +.task-card__actions button:hover { + border-color: #0f766e; + color: #0b5f59; +} + +.task-empty { + display: grid; + gap: 6px; + padding: 22px; + border: 1px dashed #c9d3e3; + border-radius: 8px; + color: #667085; + text-align: center; +} + +.task-empty strong { + color: #1f2937; +} + +.tensorboard-page { + max-width: 1240px; +} + +.tensorboard-header { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 18px; + align-items: start; + margin-bottom: 18px; +} + +.tensorboard-actions { + display: flex; + flex-wrap: wrap; + gap: 10px; + justify-content: flex-end; +} + +.tensorboard-actions a { + min-height: 36px; + display: inline-flex; + align-items: center; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 14px; + background: #fff; + color: #1f2937; + font-weight: 700; + text-decoration: none; +} + +.tensorboard-actions a:hover { + border-color: #0f766e; + color: #0b5f59; +} + +.tensorboard-panel { + display: grid; + gap: 12px; + padding: 14px; + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; +} + +.tensorboard-panel__status { + display: flex; + flex-wrap: wrap; + gap: 10px; + align-items: center; + color: #667085; +} + +.tensorboard-panel__status code { + border-radius: 6px; + padding: 4px 8px; + background: #f2f5f9; + color: #172033; +} + +.tensorboard-frame { + width: 100%; + min-height: min(720px, calc(100vh - 250px)); + border: 1px solid #e1e6ef; + border-radius: 8px; + background: #f8fafc; +} + +.params-page { + max-width: 1180px; +} + +.params-header { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 18px; + align-items: start; + margin-bottom: 18px; +} + +.params-actions { + display: flex; + flex-wrap: wrap; + gap: 10px; + justify-content: flex-end; +} + +.params-actions a { + min-height: 36px; + display: inline-flex; + align-items: center; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 14px; + background: #fff; + color: #1f2937; + font-weight: 700; + text-decoration: none; +} + +.params-actions a:hover { + border-color: #0f766e; + color: #0b5f59; +} + +.params-summary-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 12px; + margin-bottom: 18px; +} + +.params-summary-grid article, +.params-section-card { + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; + box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04); +} + +.params-summary-grid article { + display: grid; + gap: 4px; + padding: 16px; +} + +.params-summary-grid strong { + color: #0b5f59; + font-size: 22px; +} + +.params-summary-grid span { + color: #667085; +} + +.params-section-list { + display: grid; + gap: 14px; +} + +.params-section-card { + display: grid; + gap: 12px; + padding: 16px; +} + +.params-section-card header { + display: flex; + gap: 12px; + align-items: center; + justify-content: space-between; +} + +.params-section-card h2 { + margin: 0; + font-size: 17px; +} + +.params-section-card header span { + color: #667085; + font-size: 12px; + font-weight: 800; +} + +.params-field-list { + display: grid; + gap: 8px; +} + +.params-field-row { + display: grid; + grid-template-columns: minmax(180px, 1fr) 96px auto; + gap: 8px; + align-items: start; + padding: 10px; + border: 1px solid #e1e6ef; + border-radius: 6px; + background: #fbfcfe; +} + +.params-field-row code { + min-width: 0; + color: #172033; + overflow-wrap: anywhere; +} + +.params-field-row span, +.params-field-row small { + justify-self: start; + border-radius: 999px; + padding: 3px 8px; + background: #eef6f5; + color: #0b5f59; + font-size: 12px; + font-weight: 800; +} + +.params-field-row small { + background: #fff7ed; + color: #b45309; +} + +.params-field-row p { + grid-column: 1 / -1; + margin: 0; + color: #667085; + line-height: 1.5; +} + +.settings-page { + max-width: 1040px; + padding: 40px; +} + +.settings-header { + margin-bottom: 22px; +} + +.settings-form { + display: grid; + gap: 16px; +} + +.settings-card { + display: grid; + gap: 14px; + padding: 18px; + border: 1px solid #d8dde6; + border-radius: 8px; + background: #fff; +} + +.settings-card h2 { + margin: 0; + font-size: 17px; +} + +.settings-field { + display: grid; + gap: 6px; +} + +.settings-label { + color: #1f2937; + font-weight: 700; +} + +.settings-field input, +.settings-field textarea { + width: 100%; + border: 1px solid #c9d3e3; + border-radius: 6px; + padding: 9px 10px; + font: inherit; +} + +.settings-field textarea { + resize: vertical; + line-height: 1.55; +} + +.settings-field small { + color: #667085; +} + +.settings-toggle { + display: flex; + gap: 10px; + align-items: center; +} + +.settings-toggle input { + width: 18px; + height: 18px; +} + +.settings-actions { + display: flex; + flex-wrap: wrap; + gap: 10px; + align-items: center; +} + +.settings-actions button { + min-height: 36px; + border: 1px solid #d8dde6; + border-radius: 6px; + padding: 0 14px; + background: #fff; + color: #1f2937; + font: inherit; + cursor: pointer; +} + +.settings-actions .primary { + border-color: #0f766e; + background: #0f766e; + color: #fff; +} + +.settings-status { + color: #667085; +} + +@media (max-width: 1320px) { + .anima-header, + .anima-workbench { + grid-template-columns: 1fr; + } + + .anima-preview-panel { + position: static; + } +} + +@media (max-width: 820px) { + .shell { + grid-template-columns: 1fr; + } + + .sidebar { + border-right: 0; + border-bottom: 1px solid #d8dde6; + } + + .content { + padding: 24px; + } + + .source-static-hero, + .source-static-grid, + .source-route-list__grid { + grid-template-columns: 1fr; + } + + .task-header, + .task-card { + grid-template-columns: 1fr; + } + + .task-header { + display: grid; + } + + .task-card__actions { + justify-content: flex-start; + } + + .tensorboard-header { + grid-template-columns: 1fr; + } + + .tensorboard-actions { + justify-content: flex-start; + } + + .params-header, + .params-summary-grid, + .params-field-row { + grid-template-columns: 1fr; + } + + .params-actions { + justify-content: flex-start; + } + + .anima-field-row { + grid-template-columns: 1fr; + } + + .anima-toggle-grid { + grid-template-columns: 1fr; + } + + .tagger-workbench { + grid-template-columns: 1fr; + } +} diff --git a/frontend/source/src/tagger.ts b/frontend/source/src/tagger.ts new file mode 100644 index 00000000..7e218206 --- /dev/null +++ b/frontend/source/src/tagger.ts @@ -0,0 +1,342 @@ +import { defineComponent, h, onMounted, onUnmounted, reactive, ref } from "vue"; + +type TaggerPhase = "idle" | "downloading" | "tagging" | "done" | "error" | "pending" | "cancelling"; + +interface TaggerForm { + path: string; + interrogator_model: string; + threshold: number; + character_threshold: number; + add_rating_tag: boolean; + add_model_tag: boolean; + additional_tags: string; + exclude_tags: string; + escape_tag: boolean; + batch_input_recursive: boolean; + batch_output_action_on_conflict: "copy" | "prepend" | "ignore"; + replace_underscore: boolean; + download_endpoint: string; + replace_underscore_excludes: string; +} + +interface TaggerStatus { + phase: TaggerPhase; + message: string; + download?: { + current?: number; + total?: number; + filename?: string; + bytes_current?: number; + bytes_total?: number; + percent?: number; + }; + tagging?: { + current?: number; + total?: number; + filename?: string; + }; +} + +const defaultStatus: TaggerStatus = { + phase: "idle", + message: "配置参数后点击启动", + download: { current: 0, total: 0, percent: 0 }, + tagging: { current: 0, total: 0 }, +}; + +const taggerFormDefaults: TaggerForm = { + path: "", + interrogator_model: "wd14-convnextv2-v2", + threshold: 0.35, + character_threshold: 0.6, + add_rating_tag: false, + add_model_tag: false, + additional_tags: "", + exclude_tags: "", + escape_tag: true, + batch_input_recursive: false, + batch_output_action_on_conflict: "copy", + replace_underscore: true, + download_endpoint: "", + replace_underscore_excludes: + "0_0, (o)_(o), +_+, +_-, ._., _, <|>_<|>, =_=, >_<, 3_3, 6_9, >_o, @_@, ^_^, o_o, u_u, x_x, |_|, ||_||", +}; + +const modelOptions = [ + "wd14-convnextv2-v2", + "wd-convnext-v3", + "wd-swinv2-v3", + "wd-vit-v3", + "wd14-swinv2-v2", + "wd14-vit-v2", + "wd14-moat-v2", + "wd-eva02-large-tagger-v3", + "wd-vit-large-tagger-v3", + "cl_tagger_1_01", +]; + +function pct(current = 0, total = 0): number { + if (total <= 0) return 0; + return Math.min(100, Math.round((current / total) * 100)); +} + +function downloadPct(status: TaggerStatus): number { + const download = status.download ?? {}; + if (typeof download.percent === "number") return Math.min(100, Math.round(download.percent)); + const bytesTotal = download.bytes_total ?? 0; + const bytesCurrent = download.bytes_current ?? 0; + const fileTotal = download.total ?? 0; + const fileIndex = download.current ?? 0; + if (bytesTotal > 0 && fileTotal > 0) { + return Math.min(100, Math.round(((fileIndex - 1 + bytesCurrent / bytesTotal) / fileTotal) * 100)); + } + return pct(fileIndex, fileTotal); +} + +async function apiPost(path: string, payload: unknown = {}) { + const response = await fetch(path, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }); + return response.json(); +} + +function field(label: string, control: ReturnType, description?: string) { + return h("label", { class: "el-form-item tagger-field" }, [ + h("span", { class: "el-form-item__label" }, label), + control, + description ? h("small", { class: "el-form-item__description" }, description) : null, + ]); +} + +export const TaggerPage = defineComponent({ + name: "TaggerPage", + setup() { + const taggerForm = reactive({ ...taggerFormDefaults }); + const taggerStatus = reactive({ ...defaultStatus }); + const statusText = ref(""); + let pollTimer = 0; + + async function refreshStatus() { + try { + const result = await fetch("/api/tagger/status").then((response) => response.json()); + Object.assign(taggerStatus, result.data ?? defaultStatus); + } catch { + taggerStatus.phase = "error"; + taggerStatus.message = "无法读取 tagger 状态"; + } + } + + function startPolling() { + window.clearInterval(pollTimer); + void refreshStatus(); + pollTimer = window.setInterval(refreshStatus, 1200); + } + + async function prefetchModel() { + statusText.value = "正在请求预下载..."; + const result = await apiPost("/api/tagger/prefetch", { + interrogator_model: taggerForm.interrogator_model, + download_endpoint: taggerForm.download_endpoint, + }); + statusText.value = result.message ?? ""; + await refreshStatus(); + } + + async function runTagger() { + if (!taggerForm.path.trim()) { + statusText.value = "请先填写图片文件夹路径"; + return; + } + statusText.value = "正在提交打标任务..."; + const result = await apiPost("/api/interrogate", { + ...taggerForm, + path: taggerForm.path.replaceAll("\\", "/"), + }); + statusText.value = result.message ?? ""; + await refreshStatus(); + } + + async function cancelTagger() { + const result = await apiPost("/api/tagger/cancel"); + statusText.value = result.message ?? ""; + await refreshStatus(); + } + + async function resetTagger() { + const result = await apiPost("/api/tagger/reset"); + statusText.value = result.message ?? ""; + Object.assign(taggerStatus, defaultStatus); + await refreshStatus(); + } + + onMounted(startPolling); + onUnmounted(() => window.clearInterval(pollTimer)); + + const textInput = ( + id: string, + key: keyof Pick< + TaggerForm, + "path" | "additional_tags" | "exclude_tags" | "download_endpoint" | "replace_underscore_excludes" + >, + placeholder = "", + ) => + h("input", { + id, + class: "el-input__inner", + value: taggerForm[key], + placeholder, + onInput: (event: Event) => { + taggerForm[key] = (event.target as HTMLInputElement).value; + }, + }); + + const numberInput = (id: string, key: "threshold" | "character_threshold") => + h("input", { + id, + type: "number", + min: 0, + max: 1, + step: 0.01, + value: taggerForm[key], + onInput: (event: Event) => { + taggerForm[key] = Number((event.target as HTMLInputElement).value); + }, + }); + + const checkbox = (id: string, key: keyof Pick) => + h("label", { class: "tagger-check" }, [ + h("input", { + id, + type: "checkbox", + checked: taggerForm[key], + onChange: (event: Event) => { + taggerForm[key] = (event.target as HTMLInputElement).checked; + }, + }), + h("span", key), + ]); + + return () => { + const dPct = downloadPct(taggerStatus); + const tPct = pct(taggerStatus.tagging?.current, taggerStatus.tagging?.total); + const busy = ["downloading", "tagging", "pending", "cancelling"].includes(taggerStatus.phase); + + return h("main", { class: "tagger-page content" }, [ + h("p", { class: "eyebrow" }, "Source-owned tagger"), + h("h1", "Tagger 标注工具"), + h("p", { class: "summary" }, "使用本地 WD/CL tagger 模型为数据集批量生成 tag。"), + h("section", { class: "example-container tagger-workbench" }, [ + h("section", { class: "schema-container tagger-schema" }, [ + h("form", [ + field("path", textInput("tagger-path", "path", "D:/datasets/my-lora/10_character")), + field( + "interrogator_model", + h( + "select", + { + id: "tagger-model", + value: taggerForm.interrogator_model, + onChange: (event: Event) => { + taggerForm.interrogator_model = (event.target as HTMLSelectElement).value; + }, + }, + modelOptions.map((model) => h("option", { value: model }, model)), + ), + ), + field("threshold", numberInput("tagger-threshold", "threshold")), + field("character_threshold", numberInput("tagger-character-threshold", "character_threshold")), + field("additional_tags", textInput("tagger-additional-tags", "additional_tags")), + field("exclude_tags", textInput("tagger-exclude-tags", "exclude_tags")), + field("download_endpoint", textInput("tagger-download-endpoint", "download_endpoint")), + field( + "batch_output_action_on_conflict", + h( + "select", + { + id: "tagger-conflict", + value: taggerForm.batch_output_action_on_conflict, + onChange: (event: Event) => { + taggerForm.batch_output_action_on_conflict = (event.target as HTMLSelectElement) + .value as TaggerForm["batch_output_action_on_conflict"]; + }, + }, + ["copy", "prepend", "ignore"].map((value) => h("option", { value }, value)), + ), + ), + h("div", { class: "tagger-flags" }, [ + checkbox("tagger-rating", "add_rating_tag"), + checkbox("tagger-model-tag", "add_model_tag"), + checkbox("tagger-escape-tag", "escape_tag"), + checkbox("tagger-recursive", "batch_input_recursive"), + checkbox("tagger-replace-underscore", "replace_underscore"), + ]), + ]), + ]), + h("div", { class: "right-container tagger-output" }, [ + h("section", { class: "theme-default-content" }, [ + h("main", [ + h("div", [ + h("h2", "推荐参数"), + h("p", "阈值建议从 0.35 开始,角色阈值建议从 0.6 开始。"), + h("p", "启动、预下载、取消、重置和进度轮询现在由 frontend/source/src/tagger.ts 直接处理。"), + ]), + ]), + ]), + h("section", { id: "sd-tagger-dock", class: `sd-tagger-dock sd-tagger-dock--${taggerStatus.phase}` }, [ + h("div", { class: "sd-tagger-dock__status-line" }, [ + h("span", { class: "sd-tagger-dock__phase", "data-phase": taggerStatus.phase }, taggerStatus.phase), + h("span", { class: "sd-tagger-dock__message", "data-status-message": "" }, taggerStatus.message), + h("button", { type: "button", class: "sd-tagger-dock__link", onClick: prefetchModel }, "预下载"), + ]), + h("div", { class: "sd-tagger-dock__meters is-visible", "data-meters": "" }, [ + h("div", { class: "sd-tagger-dock__meter", "data-block": "download" }, [ + h("div", { class: "sd-tagger-dock__meter-head" }, [ + h("span", "模型下载"), + h("span", { "data-download-meta": "" }, `${dPct}%`), + ]), + h("div", { class: "sd-tagger-dock__track" }, [ + h("div", { + class: "sd-tagger-dock__fill sd-tagger-dock__fill--download", + "data-download-bar": "", + style: { width: `${dPct}%` }, + }), + ]), + ]), + h("div", { class: "sd-tagger-dock__meter", "data-block": "tagging" }, [ + h("div", { class: "sd-tagger-dock__meter-head" }, [ + h("span", "打标"), + h("span", { "data-tagging-meta": "" }, `${tPct}%`), + ]), + h("div", { class: "sd-tagger-dock__track" }, [ + h("div", { + class: "sd-tagger-dock__fill sd-tagger-dock__fill--tagging", + "data-tagging-bar": "", + style: { width: `${tPct}%` }, + }), + ]), + ]), + ]), + h("div", { class: "sd-tagger-dock__buttons" }, [ + h( + "button", + { + type: "button", + class: "sd-tagger-dock__start", + "data-start-btn": "", + onClick: busy ? cancelTagger : runTagger, + }, + busy ? "取消" : "启动", + ), + h("button", { type: "button", class: "sd-tagger-dock__reset", onClick: resetTagger }, "重置"), + ]), + statusText.value ? h("p", { class: "tagger-local-status" }, statusText.value) : null, + ]), + h("section", { id: "test-output" }), + ]), + ]), + ]); + }; + }, +}); diff --git a/frontend/source/src/tasks.ts b/frontend/source/src/tasks.ts new file mode 100644 index 00000000..12ec9a8a --- /dev/null +++ b/frontend/source/src/tasks.ts @@ -0,0 +1,92 @@ +import { defineComponent, h, onMounted, ref } from "vue"; + +interface TaskItem { + id: string; + status: string; + command?: string; +} + +function isRunning(status: string) { + return status.toUpperCase() === "RUNNING"; +} + +export const TaskPage = defineComponent({ + name: "TaskPage", + setup() { + const tasks = ref([]); + const status = ref("Loading tasks..."); + + async function refreshTasks() { + status.value = "Loading tasks..."; + try { + const response = await fetch("/api/tasks"); + const payload = await response.json(); + tasks.value = payload.data?.tasks ?? []; + status.value = tasks.value.length ? `${tasks.value.length} task(s) loaded` : "No known tasks"; + } catch { + tasks.value = []; + status.value = "Unable to load tasks"; + } + } + + async function terminateTask(taskId: string) { + status.value = `Terminating ${taskId}...`; + try { + await fetch(`/api/tasks/terminate/${encodeURIComponent(taskId)}`); + await refreshTasks(); + } catch { + status.value = `Unable to terminate ${taskId}`; + } + } + + onMounted(refreshTasks); + + return () => + h("main", { class: "content task-page" }, [ + h("header", { class: "task-header" }, [ + h("div", [ + h("p", { class: "eyebrow" }, "Runtime"), + h("h1", "Tasks"), + h("p", { class: "summary" }, "Source-owned task monitor for training jobs started in this server session."), + ]), + h("button", { type: "button", class: "source-static-action", onClick: refreshTasks }, "Refresh Tasks"), + ]), + h("section", { class: "task-monitor", "aria-label": "Task monitor" }, [ + h("p", { class: "task-status" }, status.value), + tasks.value.length + ? h( + "div", + { class: "task-list" }, + tasks.value.map((task) => + h("article", { class: `task-card task-card--${task.status.toLowerCase()}` }, [ + h("div", { class: "task-card__main" }, [ + h("span", { class: "task-card__status" }, task.status), + h("strong", task.id), + task.command ? h("code", task.command) : null, + ]), + h("div", { class: "task-card__actions" }, [ + h("a", { href: `/train-log?task_id=${encodeURIComponent(task.id)}` }, "Open Log"), + h("a", { href: `/api/train/log/tail/${encodeURIComponent(task.id)}` }, "Tail API"), + isRunning(task.status) + ? h( + "button", + { + type: "button", + "data-task-action": "terminate", + onClick: () => terminateTask(task.id), + }, + "Terminate", + ) + : null, + ]), + ]), + ), + ) + : h("div", { class: "task-empty" }, [ + h("strong", "No tasks are currently known."), + h("span", "Start a training job from an Anima route and refresh this page to see it here."), + ]), + ]), + ]); + }, +}); diff --git a/frontend/source/src/tensorboard.ts b/frontend/source/src/tensorboard.ts new file mode 100644 index 00000000..795df80b --- /dev/null +++ b/frontend/source/src/tensorboard.ts @@ -0,0 +1,37 @@ +import { defineComponent, h } from "vue"; + +export const TensorboardPage = defineComponent({ + name: "TensorboardPage", + setup() { + return () => + h("main", { class: "content tensorboard-page" }, [ + h("header", { class: "tensorboard-header" }, [ + h("div", [ + h("p", { class: "eyebrow" }, "Monitoring"), + h("h1", "TensorBoard"), + h( + "p", + { class: "summary" }, + "TensorBoard is started by the GUI process and exposed through the local proxy.", + ), + ]), + h("div", { class: "tensorboard-actions" }, [ + h("a", { href: "/proxy/tensorboard/", target: "_blank", rel: "noreferrer" }, "Open TensorBoard"), + h("a", { href: "/task.html" }, "Open Tasks"), + ]), + ]), + h("section", { class: "tensorboard-panel" }, [ + h("div", { class: "tensorboard-panel__status" }, [ + h("strong", "Proxy route"), + h("code", "/proxy/tensorboard/"), + h("span", "If the frame is empty, start a training run or confirm TensorBoard is enabled in gui.py."), + ]), + h("iframe", { + class: "tensorboard-frame", + src: "/proxy/tensorboard/", + title: "TensorBoard", + }), + ]), + ]); + }, +}); diff --git a/frontend/source/src/trainingRenderer.ts b/frontend/source/src/trainingRenderer.ts new file mode 100644 index 00000000..7025bd63 --- /dev/null +++ b/frontend/source/src/trainingRenderer.ts @@ -0,0 +1,455 @@ +import { h, type VNodeChild } from "vue"; + +export type TrainingFormState = Record; + +export type TrainingVisibilityRule = + | ((form: TForm) => boolean) + | { + key: keyof TForm & string; + equals?: unknown; + notEquals?: unknown; + truthy?: boolean; + }; + +interface TrainingFieldBase { + key: keyof TForm & string; + id: string; + label: string; + description?: string; + hidden?: boolean; + disabled?: boolean; + visibleWhen?: TrainingVisibilityRule; + role?: "file" | "folder" | "table" | "slider" | "switch"; +} + +export type TrainingFieldSpec = + | (TrainingFieldBase & { + kind: "text"; + placeholder?: string; + }) + | (TrainingFieldBase & { + kind: "number"; + min?: number; + max?: number; + step?: string | number; + }) + | (TrainingFieldBase & { + kind: "checkbox"; + }) + | (TrainingFieldBase & { + kind: "select"; + options: string[]; + }) + | (TrainingFieldBase & { + kind: "textarea"; + rows?: number; + }) + | (TrainingFieldBase & { + kind: "table"; + addLabel?: string; + }); + +export interface RunControl { + label: string; + onClick: () => void | Promise; + primary?: boolean; +} + +export type TrainingSectionItem = + | TrainingFieldSpec + | { + kind: "row"; + fields: TrainingFieldSpec[]; + hidden?: boolean; + visibleWhen?: TrainingVisibilityRule; + }; + +export interface TrainingSectionSpec { + title: string; + fields: TrainingSectionItem[]; + hidden?: boolean; + visibleWhen?: TrainingVisibilityRule; +} + +export interface TrainingPathBrowseDetail { + key: string; + role: "file" | "folder"; + id: string; +} + +export function defineTrainingField(field: TrainingFieldSpec) { + return field; +} + +export function defineTrainingRow( + fields: TrainingFieldSpec[], + options: Omit, { kind: "row" }>, "kind" | "fields"> = {}, +) { + return { kind: "row" as const, fields, ...options }; +} + +export function defineTrainingSection( + title: string, + fields: TrainingSectionItem[], + options: Omit, "title" | "fields"> = {}, +) { + return { title, fields, ...options }; +} + +export function defineTrainingSections(sections: TrainingSectionSpec[]) { + return sections; +} + +export function installTrainingPathBrowseBridge(onBrowse: (detail: TrainingPathBrowseDetail) => void) { + const listener = (event: Event) => { + const detail = (event as CustomEvent).detail; + if (!detail?.key || (detail.role !== "file" && detail.role !== "folder")) { + return; + } + onBrowse(detail); + }; + window.addEventListener("sd-training-path-browse", listener); + return () => window.removeEventListener("sd-training-path-browse", listener); +} + +export function renderTrainingField(form: TForm, field: TrainingFieldSpec) { + if (field.hidden || !matchesVisibilityRule(form, field.visibleWhen)) { + return null; + } + + if (field.kind === "checkbox") { + return h("label", { class: "training-toggle anima-toggle" }, [ + h("input", { + id: field.id, + type: "checkbox", + disabled: field.disabled, + checked: Boolean(form[field.key]), + onChange: (event: Event) => { + form[field.key] = (event.target as HTMLInputElement).checked as TForm[keyof TForm & string]; + }, + }), + h("span", field.label), + renderFieldDescription(field.description), + ]); + } + + if (field.kind === "select") { + return h("label", { class: "training-field anima-field" }, [ + h("span", field.label), + h( + "select", + { + id: field.id, + disabled: field.disabled, + value: String(form[field.key] ?? ""), + onChange: (event: Event) => { + form[field.key] = (event.target as HTMLSelectElement).value as TForm[keyof TForm & string]; + }, + }, + field.options.map((value) => h("option", { value }, value || "auto")), + ), + renderFieldDescription(field.description), + ]); + } + + if (field.kind === "textarea") { + return h("label", { class: "training-field anima-field" }, [ + h("span", field.label), + h("textarea", { + id: field.id, + disabled: field.disabled, + value: String(form[field.key] ?? ""), + rows: field.rows ?? 4, + onInput: (event: Event) => { + form[field.key] = (event.target as HTMLTextAreaElement).value as TForm[keyof TForm & string]; + }, + }), + renderFieldDescription(field.description), + ]); + } + + if (field.kind === "number") { + if (field.role === "slider") { + return renderSliderField(form, field); + } + return h("label", { class: "training-field anima-field" }, [ + h("span", field.label), + h("input", { + id: field.id, + type: "number", + min: field.min ?? 0, + max: field.max, + step: field.step ?? 1, + disabled: field.disabled, + value: Number(form[field.key] ?? 0), + onInput: (event: Event) => { + form[field.key] = Number((event.target as HTMLInputElement).value) as TForm[keyof TForm & string]; + }, + }), + renderFieldDescription(field.description), + ]); + } + + if (field.kind === "table") { + return renderTrainingTableField(form, field); + } + + return h("label", { class: "training-field anima-field" }, [ + h("span", field.label), + renderTextInput(form, field), + renderFieldDescription(field.description), + ]); +} + +export function renderTrainingFields( + form: TForm, + fields: TrainingFieldSpec[], +) { + return fields.map((field) => renderTrainingField(form, field)); +} + +export function renderTrainingFieldRow(children: VNodeChild[]) { + return h("div", { class: "training-field-row anima-field-row" }, children); +} + +export function sectionAnchorId(title: string) { + return `training-section-${title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "")}`; +} + +export function renderTrainingSection(title: string, children: VNodeChild[]) { + return h("fieldset", { id: sectionAnchorId(title), class: "training-section anima-section" }, [ + h("legend", title), + ...children, + ]); +} + +export function renderTrainingSectionSpec(form: TForm, section: TrainingSectionSpec) { + if (section.hidden || !matchesVisibilityRule(form, section.visibleWhen)) { + return null; + } + return renderTrainingSection( + section.title, + section.fields.map((item) => renderTrainingSectionItem(form, item)), + ); +} + +export function renderTrainingSchemaSections( + form: TForm, + sections: TrainingSectionSpec[], +) { + return sections.map((section) => renderTrainingSectionSpec(form, section)); +} + +export function renderTrainingWorkbench(formPanel: VNodeChild[], previewPanel: VNodeChild[]) { + return h("section", { class: "training-workbench anima-workbench" }, [ + h("div", { class: "training-form-panel anima-form-panel" }, formPanel), + h("aside", { class: "training-preview-panel anima-preview-panel" }, previewPanel), + ]); +} + +export function renderParameterPreview(code: string, id = "training-preview-code") { + return h("div", { class: "training-preview-card anima-preview-card" }, [ + h("h2", "Parameter Preview"), + h("pre", { id, class: "training-preview-code anima-preview-code" }, code), + ]); +} + +export function renderRunControls(actions: RunControl[], status = "") { + return h("div", { class: "training-preview-card anima-preview-card" }, [ + h("h2", "Run Controls"), + h( + "div", + { class: "training-actions anima-actions" }, + actions.map((action) => + h( + "button", + { + type: "button", + class: action.primary ? "primary" : "", + onClick: action.onClick, + }, + action.label, + ), + ), + ), + status ? h("p", { class: "training-status anima-status" }, status) : null, + ]); +} + +export function previewToml(values: Record): string { + return Object.entries(values) + .filter(([, value]) => value !== "") + .map(([key, value]) => `${key} = ${tomlValue(value)}`) + .join("\n"); +} + +export function tomlValue(value: unknown): string { + if (typeof value === "boolean") { + return value ? "true" : "false"; + } + if (typeof value === "number") { + return String(value); + } + if (Array.isArray(value)) { + return `[${value.map((item) => tomlValue(item)).join(", ")}]`; + } + return `"${String(value).replaceAll("\\", "\\\\").replaceAll('"', '\\"').replaceAll("\n", "\\n")}"`; +} + +function renderFieldDescription(description?: string) { + return description ? h("small", { class: "training-field-description" }, description) : null; +} + +function renderTrainingSectionItem(form: TForm, item: TrainingSectionItem) { + if (item.hidden || !matchesVisibilityRule(form, item.visibleWhen)) { + return null; + } + if (item.kind === "row") { + return renderTrainingFieldRow(renderTrainingFields(form, item.fields)); + } + return renderTrainingField(form, item); +} + +export function matchesVisibilityRule( + form: TForm, + rule?: TrainingVisibilityRule, +) { + if (!rule) { + return true; + } + if (typeof rule === "function") { + return rule(form); + } + const value = form[rule.key]; + if ("equals" in rule) { + return value === rule.equals; + } + if ("notEquals" in rule) { + return value !== rule.notEquals; + } + if ("truthy" in rule) { + return Boolean(value) === rule.truthy; + } + return true; +} + +function renderSliderField( + form: TForm, + field: Extract, { kind: "number" }>, +) { + const value = Number(form[field.key] ?? 0); + return h("label", { class: "training-field anima-field training-slider-field" }, [ + h("span", field.label), + h("div", { class: "training-slider-field__control" }, [ + h("input", { + id: field.id, + type: "range", + min: field.min ?? 0, + max: field.max ?? 12, + step: field.step ?? 1, + disabled: field.disabled, + value, + "data-training-role": field.role, + onInput: (event: Event) => { + form[field.key] = Number((event.target as HTMLInputElement).value) as TForm[keyof TForm & string]; + }, + }), + h("output", { id: `${field.id}-value`, for: field.id }, String(value)), + ]), + renderFieldDescription(field.description), + ]); +} + +function renderTextInput( + form: TForm, + field: Extract, { kind: "text" }>, +) { + const input = h("input", { + id: field.id, + disabled: field.disabled, + value: String(form[field.key] ?? ""), + placeholder: field.placeholder ?? "", + "data-training-role": field.role, + onInput: (event: Event) => { + form[field.key] = (event.target as HTMLInputElement).value as TForm[keyof TForm & string]; + }, + }); + + if (field.role !== "file" && field.role !== "folder") { + return input; + } + + return h("div", { class: "training-path-field" }, [ + input, + h( + "button", + { + type: "button", + class: "training-path-field__browse", + disabled: field.disabled, + title: `${field.role === "folder" ? "Folder" : "File"} picker integration is pending`, + onClick: () => { + window.dispatchEvent( + new CustomEvent("sd-training-path-browse", { + detail: { key: field.key, role: field.role, id: field.id }, + }), + ); + }, + }, + "Browse", + ), + ]); +} + +function renderTrainingTableField( + form: TForm, + field: Extract, { kind: "table" }>, +) { + const values = Array.isArray(form[field.key]) ? (form[field.key] as string[]) : []; + + function update(next: string[]) { + form[field.key] = next as TForm[keyof TForm & string]; + } + + return h("div", { id: field.id, class: "training-field anima-field training-table-field" }, [ + h("span", field.label), + h( + "div", + { class: "training-table-field__rows" }, + values.map((value, index) => + h("div", { class: "training-table-field__row" }, [ + h("input", { + id: `${field.id}-${index}`, + disabled: field.disabled, + value, + onInput: (event: Event) => { + const next = [...values]; + next[index] = (event.target as HTMLInputElement).value; + update(next); + }, + }), + h( + "button", + { + type: "button", + disabled: field.disabled, + onClick: () => update(values.filter((_, itemIndex) => itemIndex !== index)), + }, + "Remove", + ), + ]), + ), + ), + h( + "button", + { + type: "button", + class: "training-table-field__add", + disabled: field.disabled, + onClick: () => update([...values, ""]), + }, + field.addLabel ?? "Add Row", + ), + renderFieldDescription(field.description), + ]); +} diff --git a/frontend/source/tsconfig.json b/frontend/source/tsconfig.json new file mode 100644 index 00000000..4668c000 --- /dev/null +++ b/frontend/source/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ES2022", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "moduleResolution": "Bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "strict": true + }, + "include": ["src/**/*.ts", "vite.config.ts"] +} diff --git a/frontend/source/vite.config.ts b/frontend/source/vite.config.ts new file mode 100644 index 00000000..06f9493e --- /dev/null +++ b/frontend/source/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + base: "/", + build: { + outDir: "../../build/frontend-source-dist", + emptyOutDir: true, + sourcemap: true, + }, +}); diff --git a/scripts/sync_frontend_source_dist.py b/scripts/sync_frontend_source_dist.py new file mode 100644 index 00000000..6c8f063c --- /dev/null +++ b/scripts/sync_frontend_source_dist.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python3 +"""Guarded sync from source-built frontend output to production frontend/dist. + +The default mode is a dry run. Use --apply only after source verification and +browser smoke have passed. +""" + +from __future__ import annotations + +import argparse +import re +import shutil +import subprocess +import sys +from datetime import datetime +from pathlib import Path + + +SOURCE_DIST = Path("build/frontend-source-dist") +TARGET_DIST = Path("frontend/dist") +# The classic tag editor entrypoint is source-owned and no longer depends on +# the legacy Gradio proxy or old VuePress chunks. +LEGACY_ISLAND_ENTRYPOINTS = () +LEGACY_ISLAND_ASSETS = () + + +def verify_source_dist(root: Path) -> None: + subprocess.run( + [ + sys.executable, + "scripts/verify_frontend_source.py", + "--root", + str(root), + "--require-built-output", + ], + cwd=root, + check=True, + ) + + +def assert_expected_paths(root: Path, source: Path, target: Path) -> None: + expected_source = (root / SOURCE_DIST).resolve() + expected_target = (root / TARGET_DIST).resolve() + if source.resolve() != expected_source: + raise RuntimeError(f"refusing unexpected source path: {source}") + if target.resolve() != expected_target: + raise RuntimeError(f"refusing unexpected target path: {target}") + if not (source / "index.html").is_file(): + raise RuntimeError(f"source dist is missing index.html: {source}") + if not (source / "assets").is_dir(): + raise RuntimeError(f"source dist is missing assets/: {source}") + + +def backup_target(root: Path, target: Path) -> Path: + stamp = datetime.now().strftime("%Y%m%d-%H%M%S") + backup = root / "build" / f"frontend-dist-backup-{stamp}" + if target.exists(): + shutil.copytree(target, backup) + return backup + + +def collect_legacy_island(target: Path) -> dict[Path, bytes]: + files: set[Path] = {Path(path) for path in LEGACY_ISLAND_ENTRYPOINTS} + files.update(Path(path) for path in LEGACY_ISLAND_ASSETS) + + for entrypoint in LEGACY_ISLAND_ENTRYPOINTS: + html_path = target / entrypoint + if not html_path.is_file(): + continue + html = html_path.read_text(encoding="utf-8") + for match in re.finditer(r"""(?:href|src)=["'](/[^"'?#]+)""", html): + relative_path = Path(match.group(1).lstrip("/")) + if relative_path.parts[:1] == ("assets",) or relative_path.as_posix() == "favicon.ico": + files.add(relative_path) + + legacy_files: dict[Path, bytes] = {} + for relative_path in files: + source = target / relative_path + if source.is_file(): + legacy_files[relative_path] = source.read_bytes() + return legacy_files + + +def restore_legacy_island(target: Path, legacy_files: dict[Path, bytes]) -> None: + for relative_path, content in legacy_files.items(): + destination = target / relative_path + destination.parent.mkdir(parents=True, exist_ok=True) + destination.write_bytes(content) + + +def sync_dist(source: Path, target: Path, *, backup: bool, root: Path) -> None: + legacy_files = collect_legacy_island(target) if target.exists() else {} + backup_path = backup_target(root, target) if backup else None + if target.exists(): + shutil.rmtree(target) + shutil.copytree(source, target) + restore_legacy_island(target, legacy_files) + if backup_path: + print(f"backup written: {backup_path}") + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--root", type=Path, default=Path.cwd()) + parser.add_argument("--apply", action="store_true") + parser.add_argument("--backup", action="store_true") + args = parser.parse_args() + + root = args.root.resolve() + source = root / SOURCE_DIST + target = root / TARGET_DIST + assert_expected_paths(root, source, target) + verify_source_dist(root) + + if not args.apply: + print(f"source dist sync plan OK: {SOURCE_DIST.as_posix()} -> {TARGET_DIST.as_posix()}") + print("dry run only; pass --apply to replace frontend/dist") + return 0 + + sync_dist(source, target, backup=args.backup, root=root) + print(f"synced {SOURCE_DIST.as_posix()} -> {TARGET_DIST.as_posix()}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/verify_frontend_dist_matches_source.py b/scripts/verify_frontend_dist_matches_source.py new file mode 100644 index 00000000..eeae89fc --- /dev/null +++ b/scripts/verify_frontend_dist_matches_source.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +"""Verify production frontend/dist matches the source-built dist exactly.""" + +from __future__ import annotations + +import hashlib +import sys +from pathlib import Path + + +SOURCE_DIST = Path("build/frontend-source-dist") +TARGET_DIST = Path("frontend/dist") + + +def file_digest(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def collect_files(root: Path) -> dict[str, str]: + if not root.is_dir(): + raise RuntimeError(f"missing directory: {root}") + files: dict[str, str] = {} + for path in sorted(root.rglob("*")): + if path.is_file(): + files[path.relative_to(root).as_posix()] = file_digest(path) + return files + + +def main() -> int: + source = collect_files(SOURCE_DIST) + target = collect_files(TARGET_DIST) + missing = sorted(set(source) - set(target)) + extra = sorted(set(target) - set(source)) + changed = sorted(path for path in set(source) & set(target) if source[path] != target[path]) + + if missing or extra or changed: + print("frontend dist does not match source build", file=sys.stderr) + if missing: + print(f"missing from frontend/dist: {missing[:20]}", file=sys.stderr) + if extra: + print(f"extra in frontend/dist: {extra[:20]}", file=sys.stderr) + if changed: + print(f"changed files: {changed[:20]}", file=sys.stderr) + return 1 + + print(f"frontend dist matches source build ({len(source)} files)") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/verify_frontend_source.py b/scripts/verify_frontend_source.py new file mode 100644 index 00000000..2346b866 --- /dev/null +++ b/scripts/verify_frontend_source.py @@ -0,0 +1,506 @@ +#!/usr/bin/env python3 +"""Validate the source-owned frontend scaffold. + +This intentionally avoids installing npm dependencies. It checks that the +source project has the route and build contracts needed before the generated +dist can replace the vendored VuePress dist. +""" + +from __future__ import annotations + +import argparse +import json +import sys +from pathlib import Path + + +REQUIRED_ROUTES = { + "/", + "/tagger.html", + "/tageditor.html", + "/native-tageditor.html", + "/dataset-editor.html", + "/tensorboard.html", + "/other/settings.html", + "/lora/index.html", + "/lora/sd3.html", + "/lora/basic.html", + "/lora/master.html", + "/lora/flux.html", + "/lora/anima-finetune.html", + "/lora/params.html", + "/lora/tools.html", + "/dreambooth/index.html", + "/help/guide.html", + "/other/about.html", + "/other/changelog.html", + "/task.html", +} + + +def load_json(path: Path): + if not path.is_file(): + raise RuntimeError(f"missing file: {path}") + return json.loads(path.read_text(encoding="utf-8")) + + +def verify_source(root: Path) -> list[dict]: + source = root / "frontend/source" + package = load_json(source / "package.json") + scripts = package.get("scripts", {}) + if "vite build" not in scripts.get("build", ""): + raise RuntimeError("frontend/source package build script must run vite build") + if "tsc --noEmit" not in scripts.get("check", ""): + raise RuntimeError("frontend/source package check script must run TypeScript") + for dep in ("vite", "vue", "typescript"): + if dep not in package.get("dependencies", {}): + raise RuntimeError(f"frontend/source package missing dependency: {dep}") + + vite_config = (source / "vite.config.ts").read_text(encoding="utf-8") + if "../../build/frontend-source-dist" not in vite_config: + raise RuntimeError("vite outDir must remain build/frontend-source-dist") + + routes = load_json(source / "src/routes.json") + paths = [route.get("path") for route in routes] + if len(paths) != len(set(paths)): + raise RuntimeError("frontend/source routes contain duplicate paths") + missing = sorted(REQUIRED_ROUTES - set(paths)) + if missing: + raise RuntimeError(f"frontend/source routes missing required paths: {missing}") + for route in routes: + if not route.get("title") or not route.get("section") or not route.get("description"): + raise RuntimeError(f"incomplete route entry: {route}") + + alias_script = source / "scripts/write-route-aliases.mjs" + alias_text = alias_script.read_text(encoding="utf-8") + if "src/routes.json" not in alias_text or "frontend-source-dist" not in alias_text: + raise RuntimeError("route alias script must derive output aliases from src/routes.json") + + settings_source = (source / "src/settings.ts").read_text(encoding="utf-8") + required_settings_terms = [ + "ui-configs", + "sd-trainer-ui-advanced-links", + "dataset_tagger_api_endpoint", + "dataset_tagger_api_key", + "dataset_tagger_api_model", + "dataset_tagger_api_prompt", + 'type: "password"', + "showLegacyTagEditor", + "showTensorboard", + ] + for term in required_settings_terms: + if term not in settings_source: + raise RuntimeError(f"settings source missing contract term: {term}") + + main_source = (source / "src/main.ts").read_text(encoding="utf-8") + anima_source = (source / "src/anima.ts").read_text(encoding="utf-8") + anima_schema_source = (source / "src/animaSchema.ts").read_text(encoding="utf-8") + training_renderer = (source / "src/trainingRenderer.ts").read_text( + encoding="utf-8" + ) + for term in ("AnimaRoutePage", "isAnimaRoute"): + if term not in main_source: + raise RuntimeError(f"main source missing Anima route hook: {term}") + + required_training_renderer_terms = [ + "TrainingFieldSpec", + "TrainingSectionItem", + "TrainingSectionSpec", + "TrainingVisibilityRule", + "renderTrainingField", + "renderTrainingSection", + "renderTrainingSectionSpec", + "renderTrainingSchemaSections", + "renderTrainingWorkbench", + "renderParameterPreview", + "renderRunControls", + "previewToml", + "tomlValue", + "renderTrainingFields", + "renderTrainingFieldRow", + 'kind: "row"', + "description", + "hidden", + "disabled", + "visibleWhen", + "matchesVisibilityRule", + "equals", + "notEquals", + "role?:", + "data-training-role", + "sd-training-path-browse", + "Browse", + "training-field-description", + "anima-workbench", + "anima-form-panel", + "anima-preview-panel", + "Parameter Preview", + 'kind: "text"', + 'kind: "number"', + 'kind: "checkbox"', + 'kind: "select"', + 'kind: "textarea"', + 'kind: "table"', + "training-table-field", + "Add Row", + "Remove", + ] + for term in required_training_renderer_terms: + if term not in training_renderer: + raise RuntimeError(f"training renderer missing contract term: {term}") + for term in ("./trainingRenderer", "./animaSchema"): + if term not in anima_source: + raise RuntimeError(f"Anima source missing training renderer use: {term}") + if "AnimaForm" not in anima_schema_source: + raise RuntimeError("Anima schema source missing AnimaForm") + for term in ( + "TrainingSectionSpec", + "animaModelAssetSection", + "animaDatasetOutputSection", + "animaTrainingSection", + "animaLoraAdapterSection", + "animaParametersSection", + "animaCacheSection", + "animaPreviewSection", + "animaDebugSection", + "animaNoiseSection", + "animaDataEnhancementSection", + "animaOtherSection", + "animaDistributedSection", + "animaSectionsForPlan", + "renderTrainingSchemaSections(animaForm, visibleSections)", + "filterSections(sections, parameterFilter.value)", + "anima-param-search", + ): + if term not in anima_source and term not in anima_schema_source: + raise RuntimeError(f"Anima source missing schema-style section term: {term}") + for term in ( + 'visibleWhen: { key: "enable_preview", equals: true }', + 'visibleWhen: { key: "weighting_scheme", equals: "logit_normal" }', + 'visibleWhen: { key: "weighting_scheme", equals: "mode" }', + 'visibleWhen: { key: "enable_debug_options", equals: true }', + 'visibleWhen: { key: "lr_scheduler", equals: "cosine_with_restarts" }', + 'visibleWhen: { key: "optimizer_type", equals: "Prodigy" }', + 'visibleWhen: { key: "lora_type", equals: "lokr" }', + 'visibleWhen: { key: "lora_type", equals: "tlora" }', + 'visibleWhen: { key: "pissa_init", equals: true }', + ): + if term not in anima_schema_source: + raise RuntimeError(f"Anima schema missing visibility rule: {term}") + for term in ("role:", '"file"', '"folder"'): + if term not in anima_schema_source: + raise RuntimeError(f"Anima source missing training field role: {term}") + + required_anima_terms = [ + "/lora/sd3.html", + "/lora/anima-finetune.html", + "anima-lora", + "anima-finetune", + "mikazuki/schema/sd3-lora.ts", + "mikazuki/schema/anima-finetune.ts", + "scripts/dev/anima_train_network.py", + "scripts/dev/anima_train.py", + "animaForm", + "sd-trainer-source-anima-configs", + "/api/run", + "pretrained_model_name_or_path", + "train_data_dir", + "output_dir", + "output_name", + "max_train_epochs", + "mixed_precision", + "enable_preview", + "vae", + "qwen3", + "t5_tokenizer_path", + "llm_adapter_path", + "resume", + "qwen3_max_token_length", + "t5_max_token_length", + "attn_mode", + "timestep_sampling", + "sigmoid_scale", + "discrete_flow_shift", + "weighting_scheme", + "enable_bucket", + "min_bucket_reso", + "max_bucket_reso", + "bucket_reso_steps", + "train_batch_size", + "gradient_checkpointing", + "gradient_accumulation_steps", + "network_train_unet_only", + "network_train_text_encoder_only", + "lr_scheduler", + "lr_warmup_steps", + "cache_latents", + "cache_latents_to_disk", + "cache_text_encoder_outputs", + "positive_prompts", + "negative_prompts", + "sample_width", + "sample_height", + "sample_steps", + "sample_sampler", + "sample_scheduler", + "sample_at_first", + "sample_every_n_epochs", + "caption_extension", + "prefer_json_caption", + "logit_mean", + "logit_std", + "mode_scale", + "split_attn", + "vae_chunk_size", + "vae_disable_cache", + "unsloth_offload_checkpointing", + "fp8_base", + "fp8_base_unet", + "persistent_data_loader_workers", + "max_data_loader_n_workers", + "text_encoder_batch_size", + "disable_mmap_load_safetensors", + "blocks_to_swap", + "cpu_offload_checkpointing", + "optimizer_args_custom", + "network_args_custom", + "enable_debug_options", + "anima_profile_window", + "anima_nan_check_interval", + "anima_debug_mode", + "anima_rope_mismatch_mode", + "anima_rope_max_seq_tokens", + "noise_offset", + "multires_noise_iterations", + "multires_noise_discount", + "color_aug", + "flip_aug", + "random_crop", + "seed", + "clip_skip", + "ui_custom_params", + "ddp_timeout", + "ddp_gradient_as_bucket_view", + "self_attn_lr", + "cross_attn_lr", + "mlp_lr", + "mod_lr", + "llm_adapter_lr", + "lr_scheduler_num_cycles", + "min_snr_gamma", + "prodigy_d0", + "prodigy_d_coef", + "network_weights", + "dim_from_weights", + "scale_weight_norms", + "train_norm", + "network_dropout", + "pissa_init", + "pissa_method", + "pissa_niter", + "pissa_oversample", + "lokr_factor", + "full_matrix", + "tlora_min_rank", + "tlora_rank_schedule", + "tlora_orthogonal_init", + "previewToml", + "anima-preview-code", + "Save Config", + "Load Config", + "Reset Config", + "Export Config", + "Import Config", + "resetForm", + "exportConfig", + "importConfigInput", + "importConfigFile", + ] + for term in required_anima_terms: + if term not in anima_source and term not in anima_schema_source: + raise RuntimeError(f"Anima source missing route contract term: {term}") + + native_source = (source / "src/nativeTagEditor.ts").read_text(encoding="utf-8") + native_entry = (source / "src/nativeDatasetEditorMarkup.ts").read_text( + encoding="utf-8" + ) + native_runtime = (source / "src/nativeDatasetEditorRuntime.ts").read_text( + encoding="utf-8" + ) + native_css = (source / "src/nativeDatasetEditor.css").read_text( + encoding="utf-8" + ) + required_native_source_terms = [ + "nativeDatasetEditorMarkup", + "nativeDatasetEditorRuntime", + "./nativeDatasetEditor.css", + ] + for term in required_native_source_terms: + if term not in native_source: + raise RuntimeError(f"native editor source missing contract term: {term}") + if "sd-native-editor-entry" not in native_source: + raise RuntimeError("native editor source missing mount id: sd-native-editor-entry") + if "de-shell-embedded" not in native_entry: + raise RuntimeError("native editor entry missing contract term: de-shell-embedded") + if (source / "public/assets/dataset-editor-entry.js").exists(): + raise RuntimeError("native editor entry must be rendered from source, not public assets") + if "de-shell-embedded" not in native_css: + raise RuntimeError("native editor CSS missing embedded shell styles") + if (source / "public/assets/dataset-editor.css").exists(): + raise RuntimeError("native editor CSS must be bundled from source, not public assets") + if (source / "public/assets/dataset-editor.js").exists(): + raise RuntimeError("native editor runtime must be imported from source, not public assets") + for term in ( + "/api/dataset-editor/scan", + "/api/dataset-editor/caption", + "/api/dataset-editor/batch", + "/api/dataset-editor/tag", + "/api/dataset-editor/undo", + "/api/dataset-editor/redo", + "dataset_tagger_api_endpoint", + "dataset_tagger_api_key", + ): + if term not in native_runtime: + raise RuntimeError(f"native editor runtime missing contract term: {term}") + + smoke_script = (source / "scripts/smoke-source-frontend.spec.mjs").read_text( + encoding="utf-8" + ) + if "playwright test" not in package.get("scripts", {}).get("smoke", ""): + raise RuntimeError("frontend/source package missing Playwright smoke script") + for term in ( + "/native-tageditor.html", + "/dataset-editor.html", + "sd-native-editor-entry", + "/lora/anima-finetune.html", + ): + if term not in smoke_script: + raise RuntimeError(f"browser smoke missing route/assertion term: {term}") + + tagger_source = (source / "src/tagger.ts").read_text(encoding="utf-8") + for term in ( + "taggerForm", + "taggerStatus", + "interrogator_model", + "wd14-convnextv2-v2", + "threshold", + "character_threshold", + "batch_output_action_on_conflict", + "/api/tagger/status", + "/api/tagger/prefetch", + "/api/tagger/cancel", + "/api/tagger/reset", + "/api/interrogate", + "sd-tagger-dock", + ): + if term not in tagger_source: + raise RuntimeError(f"tagger source missing contract term: {term}") + if "/assets/tagger-progress.js" in tagger_source: + raise RuntimeError("tagger source must not depend on vendored tagger-progress.js") + if (source / "public/assets/tagger-progress.js").exists(): + raise RuntimeError("source frontend should not package tagger-progress.js") + for term in ("/tagger.html", "sd-tagger-dock"): + if term not in smoke_script: + raise RuntimeError(f"browser smoke missing tagger term: {term}") + + static_pages = (source / "src/staticPages.ts").read_text(encoding="utf-8") + for term in ( + "/", + "/tensorboard.html", + "/lora/tools.html", + "/tageditor.html", + "/lora/index.html", + "/lora/basic.html", + "/lora/master.html", + "/lora/flux.html", + "/dreambooth/index.html", + "/lora/params.html", + "/task.html", + "/help/guide.html", + "/other/about.html", + "/other/changelog.html", + "source-static-page", + "source-static-actions", + "Open TensorBoard", + "Launch tensorboard.py", + "scripts/run_gui.py", + "frontend/source", + "Mature training routes remain compatibility entries", + "Classic tag editor remains a source-owned compatibility entry", + "Source frontend home is owned by frontend/source", + ): + if term not in static_pages: + raise RuntimeError(f"static source pages missing contract term: {term}") + for term in ("StaticInfoPage", "isStaticInfoRoute"): + if term not in main_source: + raise RuntimeError(f"main source missing static page hook: {term}") + for term in ( + "/", + "/tensorboard.html", + "/lora/tools.html", + "/tageditor.html", + "/lora/index.html", + "/lora/basic.html", + "/lora/master.html", + "/lora/flux.html", + "/dreambooth/index.html", + "/lora/params.html", + "/task.html", + "/help/guide.html", + "/other/about.html", + "/other/changelog.html", + "source-static-page", + ): + if term not in smoke_script: + raise RuntimeError(f"browser smoke missing static page term: {term}") + + return routes + + +def verify_built_output(root: Path, routes: list[dict]) -> None: + out = root / "build/frontend-source-dist" + if not (out / "index.html").is_file(): + raise RuntimeError("build/frontend-source-dist/index.html is missing") + if not any((out / "assets").glob("*.js")): + raise RuntimeError("build/frontend-source-dist/assets has no JavaScript bundle") + if not any((out / "assets").glob("*.css")): + raise RuntimeError("build/frontend-source-dist/assets has no CSS bundle") + for route in routes: + path = route["path"] + if path == "/": + continue + if not (out / path.lstrip("/")).is_file(): + raise RuntimeError(f"built output missing route alias: {path}") + for asset in ( + ): + if not (out / asset).is_file(): + raise RuntimeError(f"built output missing native editor asset: {asset}") + if (out / "assets/dataset-editor-entry.js").exists(): + raise RuntimeError("built output should not include standalone native editor entry") + if (out / "assets/dataset-editor.css").exists(): + raise RuntimeError("built output should not include standalone native editor CSS") + if (out / "assets/dataset-editor.js").exists(): + raise RuntimeError("built output should not include standalone native editor runtime") + if (out / "assets/tagger-progress.js").exists(): + raise RuntimeError("built output should not include vendored tagger-progress.js") + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--root", type=Path, default=Path.cwd()) + parser.add_argument("--require-built-output", action="store_true") + args = parser.parse_args() + root = args.root.resolve() + routes = verify_source(root) + if args.require_built_output: + verify_built_output(root, routes) + print(f"frontend source contract OK ({len(routes)} routes)") + return 0 + + +if __name__ == "__main__": + try: + sys.exit(main()) + except Exception as exc: + print(f"frontend source contract failed: {exc}", file=sys.stderr) + sys.exit(1) diff --git a/tests/test_dataset_editor_api.py b/tests/test_dataset_editor_api.py index 12e6e429..794de7d7 100644 --- a/tests/test_dataset_editor_api.py +++ b/tests/test_dataset_editor_api.py @@ -18,6 +18,65 @@ def make_image(path: Path, color=(220, 80, 80)): image.save(path) +def dist_source_bundle() -> str: + assets = ROOT / "frontend" / "dist" / "assets" + scripts = [] + for pattern in ("index-*.js", "nativeDatasetEditorRuntime-*.js"): + scripts.extend(sorted(assets.glob(pattern))) + return "\n".join(path.read_text(encoding="utf-8") for path in scripts) + + +def dist_source_css() -> str: + assets = ROOT / "frontend" / "dist" / "assets" + return "\n".join(path.read_text(encoding="utf-8") for path in assets.glob("index-*.css")) + + +def compact_css(css: str) -> str: + return re.sub(r"\s+", "", css) + + +def dist_uses_source_frontend() -> bool: + return bool(dist_source_bundle()) and "SourceTrainerShell" in dist_source_bundle() + + +def dist_app_bundle() -> str: + if dist_uses_source_frontend(): + return dist_source_bundle() + path = ROOT / "frontend" / "dist" / "assets" / "app.547295de.js" + return path.read_text(encoding="utf-8") if path.exists() else dist_source_bundle() + + +def dist_nav_script() -> str: + if dist_uses_source_frontend(): + return dist_source_bundle() + path = ROOT / "frontend" / "dist" / "assets" / "sd-nav-i18n.js" + return path.read_text(encoding="utf-8") if path.exists() else dist_source_bundle() + + +def dist_dataset_editor_markup() -> str: + html = (ROOT / "frontend" / "dist" / "dataset-editor.html").read_text(encoding="utf-8") + return html if 'id="side-tab-clean"' in html else dist_source_bundle() + + +def dist_dataset_editor_runtime() -> str: + if dist_uses_source_frontend(): + return dist_source_bundle() + path = ROOT / "frontend" / "dist" / "assets" / "dataset-editor.js" + return path.read_text(encoding="utf-8") if path.exists() else dist_source_bundle() + + +def dist_dataset_editor_css() -> str: + path = ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css" + return path.read_text(encoding="utf-8") if path.exists() else dist_source_css() + + +def dist_settings_source() -> str: + if dist_uses_source_frontend(): + return dist_source_bundle() + path = ROOT / "frontend" / "dist" / "assets" / "settings.html.06993f96.js" + return path.read_text(encoding="utf-8") if path.exists() else dist_source_bundle() + + def test_dataset_editor_scan_lists_images_and_captions(tmp_path): make_image(tmp_path / "alpha.png") (tmp_path / "alpha.txt").write_text("1girl, solo", encoding="utf-8") @@ -267,30 +326,35 @@ def test_dataset_editor_html_is_served_from_main_webui(): response = client.get("/dataset-editor.html") assert response.status_code == 200 - assert "dataset-editor.js" in response.text - assert "旧版兼容" in response.text - assert 'id="undo-edit"' in response.text - assert 'id="redo-edit"' in response.text - assert 'id="category-filter"' in response.text - assert 'id="quick-tags"' in response.text - assert 'id="tag-toggle"' in response.text - assert 'id="side-tab-filter"' in response.text - assert 'id="side-tab-quick"' in response.text - assert 'id="side-tab-batch"' in response.text - assert 'id="side-tab-clean"' in response.text - assert 'id="apply-cleanup"' in response.text - assert 'id="gallery-first-page"' in response.text - assert 'id="gallery-prev-page"' in response.text - assert 'id="gallery-page-input"' in response.text - assert 'id="gallery-page-size"' in response.text - assert 'value="auto"' in response.text - assert 'id="gallery-next-page"' in response.text - assert 'id="gallery-last-page"' in response.text - assert 'id="thumbnail-fit"' in response.text - assert 'id="change-list"' in response.text - assert 'id="side-tab-tagger"' in response.text - assert 'id="side-panel-tagger"' in response.text - assert "' in response.text + assert "/assets/index-" in response.text + else: + assert "dataset-editor.js" in response.text + assert "旧版兼容" in response.text + markup = dist_dataset_editor_markup() + assert 'id="undo-edit"' in markup + assert 'id="redo-edit"' in markup + assert 'id="category-filter"' in markup + assert 'id="quick-tags"' in markup + assert 'id="tag-toggle"' in markup + assert 'id="side-tab-filter"' in markup + assert 'id="side-tab-quick"' in markup + assert 'id="side-tab-batch"' in markup + assert 'id="side-tab-clean"' in markup + assert 'id="apply-cleanup"' in markup + assert 'id="gallery-first-page"' in markup + assert 'id="gallery-prev-page"' in markup + assert 'id="gallery-page-input"' in markup + assert 'id="gallery-page-size"' in markup + assert 'value="auto"' in markup + assert 'id="gallery-next-page"' in markup + assert 'id="gallery-last-page"' in markup + assert 'id="thumbnail-fit"' in markup + assert 'id="change-list"' in markup + assert 'id="side-tab-tagger"' in markup + assert 'id="side-panel-tagger"' in markup + assert "' in response.text + assert "classic-tag-editor-page" in bundle + assert "/proxy/tageditor/" not in bundle + assert "/native-tageditor-standalone.html" in bundle + return + assert "tageditor.html.66da263e.js" in response.text assert "dataset-editor-entry.js" not in response.text assert 'name="sd-dataset-editor-script"' not in response.text @@ -308,25 +380,35 @@ def test_native_tageditor_embeds_native_editor_in_trainer_shell(): response = client.get("/native-tageditor.html") assert response.status_code == 200 - assert "dataset-editor-entry.js" in response.text - assert "dataset-editor.css" in response.text - assert 'name="sd-dataset-editor-script"' in response.text - assert 'href="/tageditor.md"' in response.text - assert 'href="/native-tageditor.html"' in response.text - assert "经典标签编辑" in response.text - assert "原生标签编辑" in response.text + if dist_uses_source_frontend(): + assert '
    ' in response.text + bundle = dist_source_bundle() + assert "sd-native-editor-entry" in bundle + assert "de-shell-embedded" in bundle + assert "/tageditor.html" in bundle + assert "/native-tageditor.html" in bundle + else: + assert "dataset-editor-entry.js" in response.text + assert "dataset-editor.css" in response.text + assert 'name="sd-dataset-editor-script"' in response.text + assert 'href="/tageditor.md"' in response.text + assert 'href="/native-tageditor.html"' in response.text + assert "经典标签编辑" in response.text + assert "原生标签编辑" in response.text def test_native_tageditor_uses_native_vuepress_page_data(): native_tageditor = (ROOT / "frontend" / "dist" / "native-tageditor.html").read_text( encoding="utf-8" ) - native_page_data = ( - ROOT / "frontend" / "dist" / "assets" / "native-tageditor.html.native.js" - ) - app_bundle = (ROOT / "frontend" / "dist" / "assets" / "app.547295de.js").read_text( - encoding="utf-8" - ) + native_page_data = ROOT / "frontend" / "dist" / "assets" / "native-tageditor.html.native.js" + app_bundle = dist_app_bundle() + + if dist_uses_source_frontend(): + assert not native_page_data.exists() + assert "sd-native-editor-entry" in app_bundle + assert "dataset-editor-entry.js" not in native_tageditor + return assert native_page_data.exists() page_data = native_page_data.read_text(encoding="utf-8") @@ -345,12 +427,21 @@ def test_trainer_sidebar_exposes_legacy_and_native_tag_editors(): native_tageditor = (ROOT / "frontend" / "dist" / "native-tageditor.html").read_text( encoding="utf-8" ) - nav = (ROOT / "frontend" / "dist" / "assets" / "sd-nav-i18n.js").read_text( - encoding="utf-8" - ) - app_bundle = (ROOT / "frontend" / "dist" / "assets" / "app.547295de.js").read_text( - encoding="utf-8" - ) + nav = dist_nav_script() + app_bundle = dist_app_bundle() + + if dist_uses_source_frontend(): + assert "/tageditor.html" in app_bundle + assert "/native-tageditor.html" in app_bundle + assert "经典标签编辑" in app_bundle + assert "原生标签编辑" in app_bundle + assert '
    ' in tageditor + assert "classic-tag-editor-page" in app_bundle + assert "/proxy/tageditor/" not in app_bundle + assert "/native-tageditor-standalone.html" in app_bundle + assert "dataset-editor-entry.js" not in tageditor + assert "sd-native-editor-entry" in app_bundle + return assert 'href="/tageditor.md"' in index assert 'href="/native-tageditor.html"' in index @@ -378,6 +469,10 @@ def test_trainer_sidebar_exposes_legacy_and_native_tag_editors(): def test_frontend_dist_patch_script_is_idempotent(): + if dist_uses_source_frontend(): + assert "SourceTrainerShell" in dist_source_bundle() + assert '
    ' in (ROOT / "frontend" / "dist" / "tageditor.html").read_text(encoding="utf-8") + return result = subprocess.run( [sys.executable, "scripts/patch_frontend_dist.py", "--check"], cwd=ROOT, @@ -404,18 +499,21 @@ def test_all_trainer_sidebar_snapshots_split_legacy_and_native_editors(): def test_frontend_dist_patch_script_covers_anima_sd3_copy(): - app_bundle = (ROOT / "frontend" / "dist" / "assets" / "app.547295de.js").read_text( + app_bundle = dist_app_bundle() + sd3_html = (ROOT / "frontend" / "dist" / "lora" / "sd3.html").read_text( encoding="utf-8" ) + if dist_uses_source_frontend(): + assert "Anima Stable Diffusion LoRA" in app_bundle + assert "anima-lora" in app_bundle + assert '
    ' in sd3_html + return sd3_render = (ROOT / "frontend" / "dist" / "assets" / "sd3.html.1a4bf31e.js").read_text( encoding="utf-8" ) sd3_data = (ROOT / "frontend" / "dist" / "assets" / "sd3.html.eaeb05e1.js").read_text( encoding="utf-8" ) - sd3_html = (ROOT / "frontend" / "dist" / "lora" / "sd3.html").read_text( - encoding="utf-8" - ) assert '"text":"Anima LoRA","link":"/lora/sd3.md"' in app_bundle assert "Anima LoRA" in sd3_render @@ -431,9 +529,11 @@ def test_frontend_dist_patch_script_covers_anima_sd3_copy(): def test_vuepress_theme_sidebar_json_stays_parseable(): - app_bundle = (ROOT / "frontend" / "dist" / "assets" / "app.547295de.js").read_text( - encoding="utf-8" - ) + app_bundle = dist_app_bundle() + if dist_uses_source_frontend(): + for term in ("训练", "工具与调试", "数据集打标", "经典标签编辑", "原生标签编辑", "/native-tageditor.html"): + assert term in app_bundle + return match = re.search(r"const WE=JSON\.parse\(`(?P.*?)`\),x0=", app_bundle) assert match is not None @@ -451,9 +551,11 @@ def test_vuepress_theme_sidebar_json_stays_parseable(): def test_nav_i18n_defaults_to_chinese_and_expands_training_group(): - nav = (ROOT / "frontend" / "dist" / "assets" / "sd-nav-i18n.js").read_text( - encoding="utf-8" - ) + nav = dist_nav_script() + if dist_uses_source_frontend(): + assert "训练" in nav + assert "工具与调试" in nav + return assert 'return false;' in nav assert "ensureStableSidebarState" in nav @@ -477,28 +579,27 @@ def test_patched_frontend_core_assets_are_not_immutable_cached(): def test_embedded_native_editor_assets_keep_trainer_shell_contract(): - script = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor-entry.js").read_text( - encoding="utf-8" - ) - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + script = dist_dataset_editor_markup() + "\n" + dist_dataset_editor_runtime() + css = dist_dataset_editor_css() + css_min = compact_css(css) assert "de-shell de-shell-embedded" in script - assert "theme-default-content" in script + if not dist_uses_source_frontend(): + assert "theme-default-content" in script + assert "/proxy/tageditor/" not in script assert "打开内置编辑器" not in script - assert "/proxy/tageditor/" not in script assert ".de-shell-embedded" in css - assert "--de-accent: var(--c-brand" in css - assert "grid-template-rows: 1fr" in css + assert "--de-accent" in css + assert "grid-template-rows:1fr" in css_min assert ".de-shell-embedded .de-workspace" in css - assert "height: 100%" in css - assert "startAfterShellSettles" in script - assert "window.setTimeout(scheduleMount, 500)" in script - assert "grid-template-columns: 320px minmax(520px, 1fr) 380px" in css + assert "height:100%" in css_min + if not dist_uses_source_frontend(): + assert "startAfterShellSettles" in script + assert "window.setTimeout(scheduleMount, 500)" in script + assert "grid-template-columns: 320px minmax(520px, 1fr) 380px" in css assert ".de-gallery-empty" in css - assert "@media (max-width: 1500px)" in css - assert "grid-template-columns: 300px minmax(420px, 1fr)" in css + assert "@media(max-width:1500px)" in css_min + assert "grid-template-columns:300pxminmax(420px,1fr)" in css_min assert ".de-shell-embedded .de-selection-actions" in css @@ -511,59 +612,63 @@ def test_legacy_gradio_tageditor_is_opt_in(): def test_dataset_editor_frontend_exposes_edit_efficiency_controls(): - script = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.js").read_text( - encoding="utf-8" - ) + script = dist_dataset_editor_runtime() assert "/api/dataset-editor/undo" in script assert "/api/dataset-editor/redo" in script assert "/api/dataset-editor/history" in script assert "category-filter" in script assert "quick-tags" in script - assert "applyCleanup" in script assert "underscore_to_space" in script assert "tagExpanded" in script - assert "TAG_COLLAPSED_LIMIT" in script - assert "GALLERY_PAGE_SIZE" in script - assert 'const DEFAULT_GALLERY_PAGE_SIZE = "auto"' in script assert "galleryPageSize" in script assert "autoGalleryPageSize" in script assert "ResizeObserver" in script assert "galleryPage" in script - assert "goToGalleryPage" in script assert "thumbnailFit" in script assert "change-list" in script assert "Ctrl+Z" in script assert "selectedPaths" in script assert "selectionMode" in script - assert "toggleItemSelection" in script - assert "selectedBatchItems" in script + if not dist_uses_source_frontend(): + assert "applyCleanup" in script + assert "TAG_COLLAPSED_LIMIT" in script + assert "GALLERY_PAGE_SIZE" in script + assert 'const DEFAULT_GALLERY_PAGE_SIZE = "auto"' in script + assert "goToGalleryPage" in script + assert "toggleItemSelection" in script + assert "selectedBatchItems" in script def test_dataset_editor_css_keeps_desktop_workbench_layout(): - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" + css = dist_dataset_editor_css() + css_min = compact_css(css) + desktop_workspace = ( + css_min.split(".de-workspace{", 1)[1].split("}", 1)[0] + if dist_uses_source_frontend() + else css.split(".de-workspace {", 1)[1].split("}", 1)[0] ) - desktop_workspace = css.split(".de-workspace {", 1)[1].split("}", 1)[0] assert "--de-workbench-min-width" in css - assert "grid-template-columns: 280px minmax(596px, 1fr) 420px" in css + assert ( + "grid-template-columns:280pxminmax(596px,1fr)420px" in css_min + or "grid-template-columns:300pxminmax(420px,1fr)" in css_min + ) assert "grid-template-columns: 1fr" not in desktop_workspace def test_dataset_editor_css_uses_readable_thumbnail_cards(): - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + css = dist_dataset_editor_css() + css_min = compact_css(css) - assert "grid-template-rows: 220px 20px" in css - assert "minmax(220px, 1fr)" in css - assert "object-fit: contain" in css + assert "grid-template-rows:220px20px" in css_min + assert "minmax(220px,1fr)" in css_min + assert "object-fit:contain" in css_min assert ".de-gallery.is-cover .de-card img" in css def test_dataset_editor_keeps_tag_cloud_out_of_default_filter_tab(): - html = (ROOT / "frontend" / "dist" / "dataset-editor.html").read_text(encoding="utf-8") + html = dist_dataset_editor_markup() filter_panel = html.split('id="side-panel-filter"', 1)[1].split('id="side-panel-quick"', 1)[0] quick_panel = html.split('id="side-panel-quick"', 1)[1] @@ -573,7 +678,7 @@ def test_dataset_editor_keeps_tag_cloud_out_of_default_filter_tab(): def test_dataset_editor_default_sidebar_starts_with_cleanup_workflow(): - html = (ROOT / "frontend" / "dist" / "dataset-editor.html").read_text(encoding="utf-8") + html = dist_dataset_editor_markup() clean_index = html.index('id="side-tab-clean"') batch_index = html.index('id="side-tab-batch"') @@ -585,110 +690,116 @@ def test_dataset_editor_default_sidebar_starts_with_cleanup_workflow(): def test_dataset_editor_pager_controls_are_right_aligned(): - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + css = dist_dataset_editor_css() + css_min = compact_css(css) assert ".de-gallery-page-summary" in css assert ".de-gallery-page-controls" in css - assert "justify-content: flex-end" in css + assert "justify-content:flex-end" in css_min def test_dataset_editor_gallery_supports_bulk_selection_controls(): - html = (ROOT / "frontend" / "dist" / "dataset-editor.html").read_text(encoding="utf-8") - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + html = dist_dataset_editor_markup() + css = dist_dataset_editor_css() assert 'id="selection-summary"' in html assert 'id="select-filtered"' in html assert 'id="select-page"' in html assert 'id="select-all"' in html assert 'id="clear-selection"' in html - assert "selectAllItems" in (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.js").read_text( - encoding="utf-8" - ) + if not dist_uses_source_frontend(): + assert "selectAllItems" in dist_dataset_editor_runtime() assert ".de-selection-bar" in css assert ".de-card-check" in css - assert 'data-bulk-selected="true"' in css + assert ( + 'data-bulk-selected="true"' in css + or "data-bulk-selected=true" in css + ) def test_embedded_dataset_editor_compacts_toolbar_on_narrow_viewports(): - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + css = dist_dataset_editor_css() + css_min = compact_css(css) - assert "@media (max-width: 1080px)" in css + assert "@media(max-width:1080px)" in css_min assert ".de-shell-embedded .de-selection-bar" in css - assert "grid-template-columns: 1fr" in css + assert "grid-template-columns:1fr" in css_min assert ".de-shell-embedded .de-gallery-page-controls" in css - assert "justify-content: flex-start" in css - assert "flex-wrap: wrap" in css + assert "justify-content:flex-start" in css_min + assert "flex-wrap:wrap" in css_min def test_embedded_dataset_editor_uses_native_workbench_visual_system(): - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + css = dist_dataset_editor_css() + css_min = compact_css(css) assert ".de-shell-embedded .de-gallery-wrap" in css - assert "linear-gradient(180deg, var(--de-surface) 0%, var(--de-surface-muted) 100%)" in css - assert "min-height: calc(100vh - 26px)" in css - assert ".de-shell-embedded .de-gallery-empty::before" in css - assert "grid-column: 1 / -1" in css + assert "linear-gradient(180deg,var(--de-surface)0%,var(--de-surface-muted)100%)" in css_min + assert "min-height:calc(100vh-26px)" in css_min + assert ( + ".de-shell-embedded .de-gallery-empty::before" in css + or ".de-shell-embedded .de-gallery-empty:before" in css + ) + assert "grid-column:1/-1" in css_min assert ".de-shell-embedded .de-gallery:has(.de-gallery-empty)" in css - assert "align-content: center" in css - assert "content: \"\";" in css + assert "align-content:center" in css_min + assert 'content:""' in css_min assert ".de-shell-embedded .de-editor textarea" in css - assert "font-family: ui-monospace" in css + assert "font-family:ui-monospace" in css_min assert ".de-shell-embedded .de-editor .de-primary" in css assert ".de-shell-embedded .de-change-list" in css assert "--de-card-shadow" in css - assert ".de-shell-embedded .de-gallery-empty::after" in css - assert ".de-shell-embedded .de-preview span::before" in css - assert ".de-shell-embedded .de-panel h2::before" in css + assert ( + ".de-shell-embedded .de-gallery-empty::after" in css + or ".de-shell-embedded .de-gallery-empty:after" in css + ) + assert ( + ".de-shell-embedded .de-preview span::before" in css + or ".de-shell-embedded .de-preview span:before" in css + ) + assert ( + ".de-shell-embedded .de-panel h2::before" in css + or ".de-shell-embedded .de-panel h2:before" in css + ) def test_embedded_dataset_editor_keeps_side_panels_content_sized(): - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + css = dist_dataset_editor_css() + css_min = compact_css(css) assert ".de-shell-embedded .de-workspace" in css - assert "align-items: start" in css + assert "align-items:start" in css_min assert ".de-shell-embedded .de-filter" in css assert ".de-shell-embedded .de-editor" in css - assert "align-self: start" in css - assert "max-height: calc(100vh - 26px)" in css + assert "align-self:start" in css_min + assert "max-height:calc(100vh-26px)" in css_min def test_dataset_editor_dataset_picker_is_prominent(): - html = (ROOT / "frontend" / "dist" / "dataset-editor.html").read_text(encoding="utf-8") - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + html = dist_dataset_editor_markup() + css = dist_dataset_editor_css() + css_min = compact_css(css) assert 'class="de-dataset-card"' in html assert 'class="de-dataset-path"' in html assert html.index('id="dataset-path"') < html.index('class="de-gallery-wrap"') assert ".de-dataset-card" in css - assert "min-height: 148px" in css - assert "border-color: rgba(15, 118, 110, 0.36)" in css - assert ".de-dataset-card::before" in css + assert "min-height:148px" in css_min + if dist_uses_source_frontend(): + assert "border-color:#0f766e5c" in css_min + else: + assert "border-color: rgba(15, 118, 110, 0.36)" in css + assert ".de-dataset-card::before" in css or ".de-dataset-card:before" in css assert ".de-scope-card" in css assert ".de-dataset-actions button" in css - assert "min-height: 42px" in css + assert "min-height:42px" in css_min assert ".de-dataset-path:focus-within" in css def test_dataset_editor_left_sidebar_owns_dataset_scope_and_tagger(): - html = (ROOT / "frontend" / "dist" / "dataset-editor.html").read_text(encoding="utf-8") - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) - script = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.js").read_text( - encoding="utf-8" - ) + html = dist_dataset_editor_markup() + css = dist_dataset_editor_css() + script = dist_dataset_editor_runtime() sidebar = html.split('class="de-panel de-filter"', 1)[1].split('class="de-gallery-wrap"', 1)[0] editor = html.split('class="de-panel de-editor"', 1)[1] @@ -700,22 +811,17 @@ def test_dataset_editor_left_sidebar_owns_dataset_scope_and_tagger(): assert 'id="side-panel-tagger"' in sidebar assert "打标" in sidebar assert "自动打标" not in editor - assert "tagger: document.getElementById" in script + if not dist_uses_source_frontend(): + assert "tagger: document.getElementById" in script assert ".de-scope-card" in css - assert "grid-template-columns: repeat(5, 1fr)" in css + assert "grid-template-columns:repeat(5,1fr)" in compact_css(css) def test_dataset_editor_tagger_panel_exposes_local_and_api_caption_controls(): - html = (ROOT / "frontend" / "dist" / "dataset-editor.html").read_text(encoding="utf-8") - script = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.js").read_text( - encoding="utf-8" - ) - entry = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor-entry.js").read_text( - encoding="utf-8" - ) - css = (ROOT / "frontend" / "dist" / "assets" / "dataset-editor.css").read_text( - encoding="utf-8" - ) + html = dist_dataset_editor_markup() + script = dist_dataset_editor_runtime() + entry = dist_dataset_editor_markup() + css = dist_dataset_editor_css() assert 'id="tagger-provider"' in html assert 'id="tagger-caption-type"' in html @@ -739,10 +845,12 @@ def test_dataset_editor_tagger_panel_exposes_local_and_api_caption_controls(): assert 'id="tagger-api-prompt"' not in entry assert 'id="run-tagger"' in entry assert "/api/dataset-editor/tag" in script - assert "applyTagger" in script + if not dist_uses_source_frontend(): + assert "applyTagger" in script assert "taggerProvider" in script assert "tagger-caption-type" in script - assert "loadUiConfigs" in script + if not dist_uses_source_frontend(): + assert "loadUiConfigs" in script assert "dataset_tagger_api_endpoint" in script assert "dataset_tagger_api_key" in script assert "dataset_tagger_api_model" in script @@ -755,65 +863,66 @@ def test_dataset_editor_tagger_panel_exposes_local_and_api_caption_controls(): def test_ui_settings_exposes_dataset_tagger_api_config(): - settings = (ROOT / "frontend" / "dist" / "assets" / "settings.html.06993f96.js").read_text( - encoding="utf-8" - ) - app_js = (ROOT / "frontend" / "dist" / "assets" / "app.547295de.js").read_text(encoding="utf-8") + settings = dist_settings_source() + app_js = dist_app_bundle() settings_html = (ROOT / "frontend" / "dist" / "other" / "settings.html").read_text( encoding="utf-8" ) assert "dataset_tagger_api_endpoint" in settings assert "dataset_tagger_api_key" in settings - assert "role('password')" in settings + assert "role('password')" in settings or 'type:"password"' in settings or 'type: "password"' in settings assert "dataset_tagger_api_model" in settings assert "dataset_tagger_api_prompt" in settings - assert "\\u8bbe\\u7f6e" in settings.lower() - assert "\\u8bad\\u7ec3 ui \\u8bbe\\u7f6e" not in settings.lower() - assert "./settings.html.06993f96.js?v=dataset-tagger-api" in app_js - assert "/assets/app.547295de.js?v=dataset-tagger-api" in settings_html - assert "maskSettingsOutput" in (ROOT / "frontend" / "dist" / "assets" / "sd-nav-i18n.js").read_text( - encoding="utf-8" - ) + if dist_uses_source_frontend(): + assert "/other/settings.html" in app_js + assert "/assets/index-" in settings_html + else: + assert "\\u8bbe\\u7f6e" in settings.lower() + assert "\\u8bad\\u7ec3 ui \\u8bbe\\u7f6e" not in settings.lower() + assert "./settings.html.06993f96.js?v=dataset-tagger-api" in app_js + assert "/assets/app.547295de.js?v=dataset-tagger-api" in settings_html + assert "maskSettingsOutput" in dist_nav_script() def test_ui_settings_assets_are_parseable_and_not_mojibake(): - settings = (ROOT / "frontend" / "dist" / "assets" / "settings.html.06993f96.js").read_text( - encoding="utf-8" - ) + settings = dist_settings_source() settings_html = (ROOT / "frontend" / "dist" / "other" / "settings.html").read_text( encoding="utf-8" ) - assert "const e={" in settings - assert '"title":"\\u8bbe\\u7f6e"' in settings.lower() - assert "role('password')" in settings - assert "\u8bbe\u7f6e" in settings_html - assert "\u8bad\u7ec3 UI \u8bbe\u7f6e" not in settings_html + if dist_uses_source_frontend(): + assert "UI 设置" in settings + assert 'type:"password"' in settings or 'type: "password"' in settings + assert "/assets/index-" in settings_html + else: + assert "const e={" in settings + assert '"title":"\\u8bbe\\u7f6e"' in settings.lower() + assert "role('password')" in settings + assert "\u8bbe\u7f6e" in settings_html + assert "\u8bad\u7ec3 UI \u8bbe\u7f6e" not in settings_html assert not re.search(r"[璁鐠鏍鍦鍏甯]\S*", settings_html) def test_ui_settings_masks_sensitive_output_and_hides_legacy_entries_by_default(): - nav = (ROOT / "frontend" / "dist" / "assets" / "sd-nav-i18n.js").read_text( - encoding="utf-8" - ) - settings = (ROOT / "frontend" / "dist" / "assets" / "settings.html.06993f96.js").read_text( - encoding="utf-8" - ) + nav = dist_nav_script() + settings = dist_settings_source() assert "sd-trainer-ui-advanced-links" in nav - assert "showTensorboard: false" in nav - assert "showLegacyTagEditor: false" in nav - assert 'a[href="/tensorboard.md"]' in nav - assert 'a[href="/tageditor.md"]' in nav - assert "隐藏旧功能入口" in nav - assert "maskSettingsOutput" in nav - assert "maskSensitiveSettingsFields" in nav - assert 'input.type = "password"' in nav - assert "renderSettingsHelp" in nav + assert "showTensorboard" in nav + assert "showLegacyTagEditor" in nav + if not dist_uses_source_frontend(): + assert 'a[href="/tensorboard.md"]' in nav + assert 'a[href="/tageditor.md"]' in nav + assert "隐藏旧功能入口" in nav + assert "maskSettingsOutput" in nav + assert "maskSensitiveSettingsFields" in nav + assert 'input.type = "password"' in nav + assert "renderSettingsHelp" in nav assert "dataset_tagger_api_key" in nav - assert "当前选项说明" in nav + if not dist_uses_source_frontend(): + assert "当前选项说明" in nav assert "dataset_tagger_api_key" in settings - assert "role('password')" in settings + assert "role('password')" in settings or 'type:"password"' in settings or 'type: "password"' in settings def test_dataset_editor_tag_endpoint_writes_local_tags_and_api_caption(tmp_path, monkeypatch): diff --git a/tests/test_frontend_source.py b/tests/test_frontend_source.py new file mode 100644 index 00000000..7d6d6d47 --- /dev/null +++ b/tests/test_frontend_source.py @@ -0,0 +1,524 @@ +import json +import importlib.util +import subprocess +import sys +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] + + +def test_frontend_source_contract_is_declared(): + result = subprocess.run( + [sys.executable, "scripts/verify_frontend_source.py"], + cwd=ROOT, + text=True, + capture_output=True, + check=False, + ) + + assert result.returncode == 0, result.stdout + result.stderr + assert "frontend source contract OK" in result.stdout + + +def test_frontend_source_route_titles_are_readable(): + routes = json.loads( + (ROOT / "frontend" / "source" / "src" / "routes.json").read_text( + encoding="utf-8" + ) + ) + titles = {route["path"]: route["title"] for route in routes} + + assert titles["/tagger.html"] == "数据集打标" + assert titles["/tageditor.html"] == "经典标签编辑" + assert titles["/native-tageditor.html"] == "原生标签编辑" + assert titles["/dataset-editor.html"] == "原生标签编辑 Debug" + assert titles["/other/settings.html"] == "UI 设置" + assert titles["/lora/anima-finetune.html"] == "全量微调" + assert titles["/help/guide.html"] == "新手上路" + assert titles["/other/changelog.html"] == "更新日志" + + +def test_frontend_source_dist_sync_script_is_guarded(): + script_path = ROOT / "scripts" / "sync_frontend_source_dist.py" + assert script_path.exists() + script = script_path.read_text(encoding="utf-8") + + for term in [ + "build/frontend-source-dist", + "frontend/dist", + "--apply", + "--backup", + "scripts/verify_frontend_source.py", + "shutil.copytree", + "source dist sync plan OK", + ]: + assert term in script + + +def test_frontend_source_dist_sync_replaces_legacy_tageditor_island(tmp_path): + module_path = ROOT / "scripts" / "sync_frontend_source_dist.py" + spec = importlib.util.spec_from_file_location("sync_frontend_source_dist", module_path) + assert spec and spec.loader + sync_module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(sync_module) + + root = tmp_path + source = root / "build" / "frontend-source-dist" + target = root / "frontend" / "dist" + (source / "assets").mkdir(parents=True) + (target / "assets").mkdir(parents=True) + (source / "index.html").write_text("source index", encoding="utf-8") + (source / "tageditor.html").write_text("source classic launcher", encoding="utf-8") + (source / "native-tageditor.html").write_text("source native editor", encoding="utf-8") + (source / "assets" / "index-source.js").write_text("source", encoding="utf-8") + (target / "tageditor.html").write_text( + 'legacy classic editor native', + encoding="utf-8", + ) + (target / "native-tageditor.html").write_text("legacy native editor", encoding="utf-8") + legacy_assets = [ + "app.547295de.js", + "style.874872ce.css", + "tageditor.html.173f1b6a.js", + "tageditor.html.66da263e.js", + ] + for asset in legacy_assets: + (target / "assets" / asset).write_text(f"legacy {asset}", encoding="utf-8") + + sync_module.sync_dist(source, target, backup=True, root=root) + + assert (target / "index.html").read_text(encoding="utf-8") == "source index" + assert (target / "tageditor.html").read_text(encoding="utf-8") == "source classic launcher" + assert (target / "native-tageditor.html").read_text(encoding="utf-8") == "source native editor" + for asset in legacy_assets: + assert not (target / "assets" / asset).exists() + + +def test_frontend_source_plan_documents_dist_replacement_gate(): + plan = (ROOT / "docs" / "design" / "frontend-source-of-truth-plan.md").read_text( + encoding="utf-8" + ) + + for term in [ + "Production Dist Replacement Gate", + "npm run check", + "npm run build", + "npm run smoke", + "npm run smoke:dist", + "scripts/verify_frontend_source.py --require-built-output", + "scripts/verify_frontend_dist_matches_source.py", + "scripts/sync_frontend_source_dist.py", + "dry-run", + "Do not manually edit `frontend/dist/`", + "Do not run `scripts/sync_frontend_source_dist.py --apply`", + ]: + assert term in plan + + +def test_frontend_source_settings_page_owns_tagger_api_config(): + settings = (ROOT / "frontend" / "source" / "src" / "settings.ts").read_text( + encoding="utf-8" + ) + main = (ROOT / "frontend" / "source" / "src" / "main.ts").read_text(encoding="utf-8") + + assert "SettingsPage" in main + assert 'route.path === "/other/settings.html"' in main + assert "ui-configs" in settings + assert "dataset_tagger_api_endpoint" in settings + assert "dataset_tagger_api_key" in settings + assert "dataset_tagger_api_model" in settings + assert "dataset_tagger_api_prompt" in settings + assert 'type: "password"' in settings + assert "sd-trainer-ui-advanced-links" in settings + assert "showLegacyTagEditor" in settings + assert "showTensorboard" in settings + + +def test_frontend_source_declares_anima_route_contracts(): + anima = (ROOT / "frontend" / "source" / "src" / "anima.ts").read_text( + encoding="utf-8" + ) + anima_schema = ( + ROOT / "frontend" / "source" / "src" / "animaSchema.ts" + ).read_text(encoding="utf-8") + main = (ROOT / "frontend" / "source" / "src" / "main.ts").read_text(encoding="utf-8") + + assert "AnimaRoutePage" in main + assert "isAnimaRoute" in main + for term in [ + "/lora/sd3.html", + "/lora/anima-finetune.html", + "anima-lora", + "anima-finetune", + "mikazuki/schema/sd3-lora.ts", + "mikazuki/schema/anima-finetune.ts", + "scripts/dev/anima_train_network.py", + "scripts/dev/anima_train.py", + "animaForm", + "sd-trainer-source-anima-configs", + "/api/run", + "pretrained_model_name_or_path", + "train_data_dir", + "output_dir", + "output_name", + "max_train_epochs", + "mixed_precision", + "enable_preview", + "vae", + "qwen3", + "t5_tokenizer_path", + "llm_adapter_path", + "resume", + "qwen3_max_token_length", + "t5_max_token_length", + "attn_mode", + "timestep_sampling", + "sigmoid_scale", + "discrete_flow_shift", + "weighting_scheme", + "enable_bucket", + "min_bucket_reso", + "max_bucket_reso", + "bucket_reso_steps", + "train_batch_size", + "gradient_checkpointing", + "gradient_accumulation_steps", + "network_train_unet_only", + "network_train_text_encoder_only", + "lr_scheduler", + "lr_warmup_steps", + "cache_latents", + "cache_latents_to_disk", + "cache_text_encoder_outputs", + "positive_prompts", + "negative_prompts", + "sample_width", + "sample_height", + "sample_steps", + "sample_sampler", + "sample_scheduler", + "sample_at_first", + "sample_every_n_epochs", + "caption_extension", + "prefer_json_caption", + "logit_mean", + "logit_std", + "mode_scale", + "split_attn", + "vae_chunk_size", + "vae_disable_cache", + "unsloth_offload_checkpointing", + "fp8_base", + "fp8_base_unet", + "persistent_data_loader_workers", + "max_data_loader_n_workers", + "text_encoder_batch_size", + "disable_mmap_load_safetensors", + "blocks_to_swap", + "cpu_offload_checkpointing", + "optimizer_args_custom", + "network_args_custom", + "enable_debug_options", + "anima_profile_window", + "anima_nan_check_interval", + "anima_debug_mode", + "anima_rope_mismatch_mode", + "anima_rope_max_seq_tokens", + "noise_offset", + "multires_noise_iterations", + "multires_noise_discount", + "color_aug", + "flip_aug", + "random_crop", + "seed", + "clip_skip", + "ui_custom_params", + "ddp_timeout", + "ddp_gradient_as_bucket_view", + "self_attn_lr", + "cross_attn_lr", + "mlp_lr", + "mod_lr", + "llm_adapter_lr", + "lr_scheduler_num_cycles", + "min_snr_gamma", + "prodigy_d0", + "prodigy_d_coef", + "network_weights", + "dim_from_weights", + "scale_weight_norms", + "train_norm", + "network_dropout", + "pissa_init", + "pissa_method", + "pissa_niter", + "pissa_oversample", + "lokr_factor", + "full_matrix", + "tlora_min_rank", + "tlora_rank_schedule", + "tlora_orthogonal_init", + "previewToml", + "anima-preview-code", + "Save Config", + "Load Config", + "Reset Config", + "Export Config", + "Import Config", + "resetForm", + "exportConfig", + "importConfigInput", + "importConfigFile", + ]: + assert term in anima or term in anima_schema + + +def test_frontend_source_has_training_schema_renderer(): + renderer_path = ROOT / "frontend" / "source" / "src" / "trainingRenderer.ts" + assert renderer_path.exists() + renderer = renderer_path.read_text(encoding="utf-8") + anima = (ROOT / "frontend" / "source" / "src" / "anima.ts").read_text( + encoding="utf-8" + ) + anima_schema = ( + ROOT / "frontend" / "source" / "src" / "animaSchema.ts" + ).read_text(encoding="utf-8") + + for term in [ + "TrainingFieldSpec", + "TrainingSectionItem", + "TrainingSectionSpec", + "TrainingVisibilityRule", + "defineTrainingField", + "defineTrainingRow", + "defineTrainingSection", + "defineTrainingSections", + "renderTrainingField", + "renderTrainingSection", + "renderTrainingSectionSpec", + "renderTrainingSchemaSections", + "renderTrainingWorkbench", + "renderParameterPreview", + "renderRunControls", + "previewToml", + "tomlValue", + "renderTrainingFields", + "renderTrainingFieldRow", + 'kind: "row"', + "description", + "hidden", + "disabled", + "visibleWhen", + "matchesVisibilityRule", + "equals", + "notEquals", + "role?:", + "data-training-role", + "sd-training-path-browse", + "Browse", + "training-field-description", + "anima-workbench", + "anima-form-panel", + "anima-preview-panel", + "Parameter Preview", + "kind: \"text\"", + "kind: \"number\"", + "kind: \"checkbox\"", + "kind: \"select\"", + "kind: \"textarea\"", + "kind: \"table\"", + "training-table-field", + "Add Row", + "Remove", + ]: + assert term in renderer + assert "./trainingRenderer" in anima + assert "./animaSchema" in anima + assert "AnimaForm" in anima_schema + assert "TrainingSectionSpec" in anima_schema + assert "defineTrainingSection" in anima_schema + assert "defineTrainingRow" in anima_schema + assert "defineTrainingSections" in anima_schema + assert "animaModelAssetSection" in anima_schema + assert "animaDatasetOutputSection" in anima_schema + assert "animaTrainingSection" in anima_schema + assert "animaLoraAdapterSection" in anima_schema + assert "animaParametersSection" in anima_schema + assert "animaCacheSection" in anima_schema + assert "animaPreviewSection" in anima_schema + assert "animaDebugSection" in anima_schema + assert "animaNoiseSection" in anima_schema + assert "animaDataEnhancementSection" in anima_schema + assert "animaOtherSection" in anima_schema + assert "animaDistributedSection" in anima_schema + assert "animaSectionsForPlan" in anima_schema + assert "renderTrainingSchemaSections(animaForm, visibleSections)" in anima + assert "filterSections(sections, parameterFilter.value)" in anima + assert "anima-param-search" in anima + assert 'visibleWhen: { key: "enable_preview", equals: true }' in anima_schema + assert 'visibleWhen: { key: "weighting_scheme", equals: "logit_normal" }' in anima_schema + assert 'visibleWhen: { key: "weighting_scheme", equals: "mode" }' in anima_schema + assert 'visibleWhen: { key: "enable_debug_options", equals: true }' in anima_schema + assert 'visibleWhen: { key: "lr_scheduler", equals: "cosine_with_restarts" }' in anima_schema + assert 'visibleWhen: { key: "optimizer_type", equals: "Prodigy" }' in anima_schema + assert 'visibleWhen: { key: "lora_type", equals: "lokr" }' in anima_schema + assert 'visibleWhen: { key: "lora_type", equals: "tlora" }' in anima_schema + assert 'visibleWhen: { key: "pissa_init", equals: true }' in anima_schema + assert 'kind: "table"' in anima_schema + assert "role:" in anima_schema + assert '"file"' in anima_schema + assert '"folder"' in anima_schema + assert "function tomlValue" not in anima + + +def test_frontend_source_owns_native_tag_editor_entry(): + native_editor = ( + ROOT / "frontend" / "source" / "src" / "nativeTagEditor.ts" + ).read_text(encoding="utf-8") + entry = ( + ROOT / "frontend" / "source" / "src" / "nativeDatasetEditorMarkup.ts" + ).read_text(encoding="utf-8") + runtime = ( + ROOT / "frontend" / "source" / "src" / "nativeDatasetEditorRuntime.ts" + ).read_text(encoding="utf-8") + styles = ( + ROOT / "frontend" / "source" / "src" / "nativeDatasetEditor.css" + ).read_text(encoding="utf-8") + main = (ROOT / "frontend" / "source" / "src" / "main.ts").read_text(encoding="utf-8") + + assert "NativeTagEditorPage" in main + assert 'route.path === "/native-tageditor.html"' in main + assert 'route.path === "/dataset-editor.html"' in main + assert "nativeDatasetEditorMarkup" in native_editor + assert not ( + ROOT / "frontend" / "source" / "public" / "assets" / "dataset-editor-entry.js" + ).exists() + assert './nativeDatasetEditor.css' in native_editor + assert not ( + ROOT / "frontend" / "source" / "public" / "assets" / "dataset-editor.css" + ).exists() + assert "nativeDatasetEditorRuntime" in native_editor + assert "sd-dataset-editor-script" not in native_editor + assert not ( + ROOT / "frontend" / "source" / "public" / "assets" / "dataset-editor.js" + ).exists() + assert "sd-native-editor-entry" in native_editor + assert "de-shell-embedded" in entry + assert "de-shell-embedded" in styles + for term in [ + "/api/dataset-editor/scan", + "/api/dataset-editor/caption", + "/api/dataset-editor/batch", + "/api/dataset-editor/tag", + "/api/dataset-editor/undo", + "/api/dataset-editor/redo", + "dataset_tagger_api_endpoint", + "dataset_tagger_api_key", + ]: + assert term in runtime + + +def test_frontend_source_declares_browser_smoke_script(): + package = (ROOT / "frontend" / "source" / "package.json").read_text( + encoding="utf-8" + ) + smoke = ( + ROOT / "frontend" / "source" / "scripts" / "smoke-source-frontend.spec.mjs" + ).read_text(encoding="utf-8") + + assert '"smoke": "playwright test' in package + assert "/native-tageditor.html" in smoke + assert "/dataset-editor.html" in smoke + assert "sd-native-editor-entry" in smoke + assert "/tagger.html" in smoke + assert "sd-tagger-dock" in smoke + assert "/lora/anima-finetune.html" in smoke + assert "anima-train-form" in smoke + + +def test_frontend_source_owns_static_utility_pages(): + static_pages = ( + ROOT / "frontend" / "source" / "src" / "staticPages.ts" + ).read_text(encoding="utf-8") + main = (ROOT / "frontend" / "source" / "src" / "main.ts").read_text(encoding="utf-8") + smoke = ( + ROOT / "frontend" / "source" / "scripts" / "smoke-source-frontend.spec.mjs" + ).read_text(encoding="utf-8") + + assert "StaticInfoPage" in main + assert "isStaticInfoRoute" in main + for term in [ + "/", + "/tensorboard.html", + "/lora/tools.html", + "/tageditor.html", + "/lora/index.html", + "/lora/basic.html", + "/lora/master.html", + "/lora/flux.html", + "/dreambooth/index.html", + "/lora/params.html", + "/task.html", + "/help/guide.html", + "/other/about.html", + "/other/changelog.html", + "source-static-page", + "source-static-actions", + "Open TensorBoard", + "Launch tensorboard.py", + "scripts/run_gui.py", + "frontend/source", + "Mature training routes remain compatibility entries", + "Classic tag editor remains a source-owned compatibility entry", + "Source frontend home is owned by frontend/source", + ]: + assert term in static_pages + for route in [ + "/", + "/tensorboard.html", + "/lora/tools.html", + "/tageditor.html", + "/lora/index.html", + "/lora/basic.html", + "/lora/master.html", + "/lora/flux.html", + "/dreambooth/index.html", + "/lora/params.html", + "/task.html", + "/help/guide.html", + "/other/about.html", + "/other/changelog.html", + ]: + assert route in smoke + assert "source-static-page" in smoke + + +def test_frontend_source_owns_tagger_page_and_progress_asset(): + tagger = (ROOT / "frontend" / "source" / "src" / "tagger.ts").read_text( + encoding="utf-8" + ) + main = (ROOT / "frontend" / "source" / "src" / "main.ts").read_text(encoding="utf-8") + + assert "TaggerPage" in main + assert 'route.path === "/tagger.html"' in main + for term in [ + "taggerForm", + "taggerStatus", + "interrogator_model", + "wd14-convnextv2-v2", + "threshold", + "character_threshold", + "batch_output_action_on_conflict", + "/api/tagger/status", + "/api/tagger/prefetch", + "/api/tagger/cancel", + "/api/tagger/reset", + "/api/interrogate", + "sd-tagger-dock", + ]: + assert term in tagger + assert "/assets/tagger-progress.js" not in tagger + assert not ( + ROOT / "frontend" / "source" / "public" / "assets" / "tagger-progress.js" + ).exists() diff --git a/tests/test_tagger_progress_api.py b/tests/test_tagger_progress_api.py index 0af290a4..4c50f7e8 100644 --- a/tests/test_tagger_progress_api.py +++ b/tests/test_tagger_progress_api.py @@ -1,6 +1,7 @@ """Tagger progress API smoke tests (no ONNX / no real images).""" from fastapi.testclient import TestClient +from pathlib import Path from mikazuki.app.application import app from mikazuki.tagger.model_fetch import use_download_endpoint @@ -11,6 +12,13 @@ local_model_dir, ) +ROOT = Path(__file__).resolve().parents[1] + + +def dist_source_bundle() -> str: + assets = ROOT / "frontend" / "dist" / "assets" + return "\n".join(path.read_text(encoding="utf-8") for path in assets.glob("index-*.js")) + def test_tagger_status_idle(): tagger_progress.reset_idle("test") @@ -36,7 +44,13 @@ def test_tagger_html_serves_progress_script(): client = TestClient(app) r = client.get("/tagger.html") assert r.status_code == 200 - assert "tagger-progress.js" in r.text + bundle = dist_source_bundle() + if bundle and "SourceTrainerShell" in bundle: + assert '
    ' in r.text + assert "sd-tagger-dock" in bundle + assert "/api/tagger/status" in bundle + else: + assert "tagger-progress.js" in r.text def test_tagger_default_download_endpoint_preserves_existing_hf_endpoint(monkeypatch):