diff --git a/.github/workflows/windows-release.yml b/.github/workflows/windows-release.yml new file mode 100644 index 0000000..3980832 --- /dev/null +++ b/.github/workflows/windows-release.yml @@ -0,0 +1,48 @@ +name: Release Build (Windows) + +on: + push: + branches: + - "release/**" + +jobs: + build-and-merge: + runs-on: windows-latest + + steps: + - name: Checkout the release branch + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract version from branch name + id: extract + shell: bash + run: | + version="${GITHUB_REF##*/}" + echo "version=$version" >> $GITHUB_OUTPUT + + - name: Set up Git + shell: bash + run: | + git config user.name "github-actions" + git config user.email "github-actions@github.com" + + - name: Run build script + shell: cmd + run: .\build-scripts\windows-build.bat + + - name: Commit and push build artifacts + shell: bash + run: | + git add -A + git commit -m "Automated release build for version: ${{ steps.extract.outputs.version }}" || echo "No changes to commit" + git push origin ${{ github.ref }} + + - name: Fetch and force merge into main + shell: bash + run: | + git fetch origin main + git checkout main + git merge -X theirs ${{ github.ref }} -m "Merging release version ${{ steps.extract.outputs.version }} into main" + git push origin main diff --git a/.gitignore b/.gitignore index 345ff6f..2f5a024 100644 --- a/.gitignore +++ b/.gitignore @@ -2,13 +2,19 @@ config.js devices/* -tmp/ +tmp log.txt Macrame.exe -public +public/* + macros/* +!macros/TEST-* + +panels/* +!panels/test_panel + builds node_modules ToDo.md \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2f69d0a --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# Macrame icon Macrame + +*The current release isn't yet public.* + +Turn Any Device into a button panel. Open-source, easy, and built to supercharge your workflow or gaming. +Macrame is released under the GPL V3 licence. More information can be found at: [Macrame License](https://macrame-app.github.io/license.html) + +Macrame is small application that can be used to record keyboard macros. +The macros can be linked to button panels and the panels can be used by devices on the same network. + +## Getting Started + +Read the [official documentation](https://macrame-app.github.io/) about the Macrame app to get started. diff --git a/app/helper/env-helper.go b/app/helper/env-helper.go index 28af4d4..0eb5e1e 100644 --- a/app/helper/env-helper.go +++ b/app/helper/env-helper.go @@ -36,7 +36,7 @@ func EnvGet(key string) string { if !configFileExists() { CreateConfigFile(configPath) - CheckFeDevDir() + CheckUIDevDir() } data, err := os.ReadFile(configPath) @@ -63,12 +63,12 @@ func configFileExists() bool { return err == nil } -func CheckFeDevDir() { +func CheckUIDevDir() { log.Println("Checking FE dev directory...") - _, err := os.Stat("fe") + _, err := os.Stat("ui") if err != nil { - log.Println("Error checking FE dev directory:", err) + log.Println("Error checking ui dev directory:", err) return } @@ -83,7 +83,7 @@ func copyConfigToFe() { return } - if err := os.WriteFile("fe/config.js", data, 0644); err != nil { + if err := os.WriteFile("ui/config.js", data, 0644); err != nil { log.Println("Error writing config.js:", err) } } diff --git a/build-scripts/windows-build.bat b/build-scripts/windows-build.bat new file mode 100644 index 0000000..3dfd88f --- /dev/null +++ b/build-scripts/windows-build.bat @@ -0,0 +1,52 @@ +@echo off +setlocal enabledelayedexpansion + +REM Step 1: Build Macrame Go application for Windows +echo Building Macrame Go Application for Windows... + +go build -ldflags "-H=windowsgui" -o Macrame.exe main.go + +IF %ERRORLEVEL% NEQ 0 ( + echo Go build failed! + exit /b %ERRORLEVEL% +) ELSE ( + echo Go build was successful! +) + +REM Step 2: Build Macrame Vue UI +echo Moving to ui directory and building Vue UI +cd ui + +echo Running npm install... +call npm install +IF %ERRORLEVEL% NEQ 0 ( + echo npm install failed! + exit /b %ERRORLEVEL% +) + +echo Running npm run build... +call npm run build +IF %ERRORLEVEL% NEQ 0 ( + echo npm run build failed! + exit /b %ERRORLEVEL% +) + +cd .. + +REM Step 3: Cleanup root directory of build files. +echo Cleaning up root directory... + +echo Removing directories: app, ui, and build-scripts +rmdir /s /q app +rmdir /s /q ui +rmdir /s /q build-scripts + +for %%F in (*) do ( + set "file=%%~nxF" + if /I not "!file!"=="Macrame.exe" if /I not "!file!"=="favicon.ico" if /I not "!file!"=="README.md" ( + echo Deleting !file! + del /f /q "%%F" + ) +) + +echo Build and cleanup complete. diff --git a/build.sh b/build.sh deleted file mode 100644 index 65eb876..0000000 --- a/build.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -# Set the name of the build directory -BUILD_DIR="Macrame_$(date +'%m%d%H%M%S')" - -# Build the Go application -go build -ldflags "-H=windowsgui" -o Macrame.exe main.go - -# Build the frontend -cd fe -npm run build - -cd ../builds - -# Create the new build directory -mkdir $BUILD_DIR -mkdir $BUILD_DIR/macros -mkdir $BUILD_DIR/panels -mkdir $BUILD_DIR/panels/test_panel -mkdir $BUILD_DIR/public -mkdir $BUILD_DIR/public/assets - -# Move the generated files to the new build directory -cp ../Macrame.exe $BUILD_DIR/Macrame.exe -cp ../favicon.ico $BUILD_DIR/favicon.ico -find ../macros -type f ! -name 'ED-*' -exec cp --parents {} "$BUILD_DIR/macros/" \; -cp -r ../panels/test_panel/* $BUILD_DIR/panels/test_panel/ -mv ../public/* $BUILD_DIR/public/ - -# cp ../install.bat $BUILD_DIR/install.bat - -powershell -Command "Compress-Archive -Path $BUILD_DIR/* -DestinationPath $BUILD_DIR.zip -Force" - -# Print the path to the new build directory -echo "Build directory: ../$BUILD_DIR" \ No newline at end of file diff --git a/macros/TEST-Close_Application.json b/macros/TEST-Close_Application.json new file mode 100644 index 0000000..c481f1b --- /dev/null +++ b/macros/TEST-Close_Application.json @@ -0,0 +1,9 @@ +[ + { "code": "lalt", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "f4", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lalt", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "f4", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Close_Browser_Window.json b/macros/TEST-Close_Browser_Window.json new file mode 100644 index 0000000..63cb228 --- /dev/null +++ b/macros/TEST-Close_Browser_Window.json @@ -0,0 +1,13 @@ +[ + { "code": "lctrl", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lshift", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "w", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lctrl", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lshift", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "w", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Close_Tab.json b/macros/TEST-Close_Tab.json new file mode 100644 index 0000000..577aa88 --- /dev/null +++ b/macros/TEST-Close_Tab.json @@ -0,0 +1,9 @@ +[ + { "code": "lctrl", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "w", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lctrl", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "w", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Displays.json b/macros/TEST-Displays.json new file mode 100644 index 0000000..80ba168 --- /dev/null +++ b/macros/TEST-Displays.json @@ -0,0 +1,9 @@ +[ + { "code": "lcmd", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "p", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lcmd", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "p", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Files.json b/macros/TEST-Files.json new file mode 100644 index 0000000..be664ab --- /dev/null +++ b/macros/TEST-Files.json @@ -0,0 +1,9 @@ +[ + { "code": "lcmd", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "e", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lcmd", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "e", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Fullscreen.json b/macros/TEST-Fullscreen.json new file mode 100644 index 0000000..16aa578 --- /dev/null +++ b/macros/TEST-Fullscreen.json @@ -0,0 +1 @@ +[{"code":"f11","direction":"down","type":"key"},{"type":"delay","value":15},{"code":"f11","direction":"up","type":"key"}] \ No newline at end of file diff --git a/macros/TEST-Home.json b/macros/TEST-Home.json new file mode 100644 index 0000000..4782647 --- /dev/null +++ b/macros/TEST-Home.json @@ -0,0 +1,9 @@ +[ + { "code": "lalt", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "home", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "home", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lalt", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-New_Desktop.json b/macros/TEST-New_Desktop.json new file mode 100644 index 0000000..9ade4e0 --- /dev/null +++ b/macros/TEST-New_Desktop.json @@ -0,0 +1,13 @@ +[ + { "code": "lcmd", "direction": "down", "type": "key" }, + { "type": "delay", "value": 50 }, + { "code": "lctrl", "direction": "down", "type": "key" }, + { "type": "delay", "value": 50 }, + { "code": "d", "direction": "down", "type": "key" }, + { "type": "delay", "value": 50 }, + { "code": "lcmd", "direction": "up", "type": "key" }, + { "type": "delay", "value": 50 }, + { "code": "lctrl", "direction": "up", "type": "key" }, + { "type": "delay", "value": 50 }, + { "code": "d", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-New_Tab.json b/macros/TEST-New_Tab.json new file mode 100644 index 0000000..f62acf0 --- /dev/null +++ b/macros/TEST-New_Tab.json @@ -0,0 +1,9 @@ +[ + { "code": "lctrl", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "t", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lctrl", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "t", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-New_Window.json b/macros/TEST-New_Window.json new file mode 100644 index 0000000..8880f54 --- /dev/null +++ b/macros/TEST-New_Window.json @@ -0,0 +1,9 @@ +[ + { "code": "lctrl", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "n", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lctrl", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "n", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Next_Tab.json b/macros/TEST-Next_Tab.json new file mode 100644 index 0000000..1ee9641 --- /dev/null +++ b/macros/TEST-Next_Tab.json @@ -0,0 +1,9 @@ +[ + { "code": "lctrl", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "tab", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lctrl", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "tab", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-PlayPause.json b/macros/TEST-PlayPause.json new file mode 100644 index 0000000..5471bd1 --- /dev/null +++ b/macros/TEST-PlayPause.json @@ -0,0 +1 @@ +[{"code":"audio_play|audio_pause","direction":"down","type":"key"},{"type":"delay","value":15},{"code":"audio_play|audio_pause","direction":"up","type":"key"}] \ No newline at end of file diff --git a/macros/TEST-Previous_Tab.json b/macros/TEST-Previous_Tab.json new file mode 100644 index 0000000..57dfb44 --- /dev/null +++ b/macros/TEST-Previous_Tab.json @@ -0,0 +1,13 @@ +[ + { "code": "lctrl", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lshift", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "tab", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lctrl", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lshift", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "tab", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-RunDialog.json b/macros/TEST-RunDialog.json new file mode 100644 index 0000000..4b73502 --- /dev/null +++ b/macros/TEST-RunDialog.json @@ -0,0 +1,9 @@ +[ + { "code": "lcmd", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "r", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lcmd", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "r", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Settings.json b/macros/TEST-Settings.json new file mode 100644 index 0000000..fdc8f80 --- /dev/null +++ b/macros/TEST-Settings.json @@ -0,0 +1,9 @@ +[ + { "code": "lcmd", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "i", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lcmd", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "i", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Task_manager.json b/macros/TEST-Task_manager.json new file mode 100644 index 0000000..732e5df --- /dev/null +++ b/macros/TEST-Task_manager.json @@ -0,0 +1,13 @@ +[ + { "code": "lctrl", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lshift", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "esc", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "esc", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lshift", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lctrl", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-Task_view.json b/macros/TEST-Task_view.json new file mode 100644 index 0000000..65901ec --- /dev/null +++ b/macros/TEST-Task_view.json @@ -0,0 +1,9 @@ +[ + { "code": "lcmd", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "tab", "direction": "down", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "lcmd", "direction": "up", "type": "key" }, + { "type": "delay", "value": 15 }, + { "code": "tab", "direction": "up", "type": "key" } +] diff --git a/macros/TEST-desktop.json b/macros/TEST-desktop.json new file mode 100644 index 0000000..03341e3 --- /dev/null +++ b/macros/TEST-desktop.json @@ -0,0 +1 @@ +[{"type":"key","key":"Meta","code":"MetaLeft","location":1,"direction":"down","value":0},{"type":"delay","key":"","code":"","location":0,"direction":"","value":240},{"type":"key","key":"d","code":"KeyD","location":0,"direction":"down","value":0},{"type":"delay","key":"","code":"","location":0,"direction":"","value":10},{"type":"key","key":"d","code":"KeyD","location":0,"direction":"up","value":0},{"type":"delay","key":"","code":"","location":0,"direction":"","value":10},{"type":"key","key":"Meta","code":"MetaLeft","location":1,"direction":"up","value":0}] \ No newline at end of file diff --git a/panels/Elite_Dangerous/index.html b/panels/Elite_Dangerous/index.html deleted file mode 100644 index 2d230d9..0000000 --- a/panels/Elite_Dangerous/index.html +++ /dev/null @@ -1,913 +0,0 @@ - - - - - - Document - - - -
-
- - -
-

Maps

-
-
- - - - - - - - - - - - - System -
-
- - - - Galaxy -
-
-
- -
-

Frame Shift Drive

- -
- Toggle FSD -
- -
-
- Super Cruise -
-
- Hyper Space -
-
-
- -
-
-

Mode

- Analysis -
-
-
-
-
- Combat -
-
-

Hardpoints

- Retract -
-
-
-
-
- Deploy -
-
-
-
-
-

Panels

-
-
- External -
-
- Comms -
-
- Roles -
-
- Internal -
-
-
-
-
-

Scanner

-
-
- FSS -
-
- Discovery -
-
-
-
-
- Route: - Next System -
-
-
-
- Speed: - 0% -
-
-
-
-

Fighters

-
-
-
-
- - - - - Attack -
-
- - - - - - - - - - - - - Engage -
-
-
-
- - - - - - Defend -
-
- - - - - - - - - - - - - - - - - Hold -
-
-
-
- - - - - - - Follow -
-
- - - - Recall -
-
-
- -
-
-
- Wingman - #1 -
-
- Wingman - #2 -
-
- Wingman - #3 -
-
-
-
-
- -
-

Counter Measures

-
-
- Heatsink -
-
- Chaff -
-
- ECM -
-
- Shieldcell -
-
-
-
- -
-
-

Flight Assist

-
-
-
-
-
-
-
-
- Off - On -
-
-
- Rotational Correction -
-
-
- -
-
-

Lights

-
-
-
-
-
-
- Off - On -
-
-
-

Night Vis.

-
-
-
-
-
-
- Off - On -
-
-
-
-
-

Silent Running

-
-
-
-
-
-
- Off - On -
-
-
-
- - - - - JETTISON CARGO -
-
-
- -
-
- - - - - - - - - - - CAMERA -
- -
-
- - - - - -
-

Camera

-
-
- - - - - - - Camera Suite -
- -
-
- - - - - -
- - Previous - - Camera -
-
-
-
- - Next - - Camera -
- - - - - -
-
-
- - - - - - - - - - - - Free Camera -
-
-
- Position - #1 -
-
- Position - #2 -
-
-
-
-
-
-
-
-
- -
-
-
-
- - - - diff --git a/panels/Elite_Dangerous/input.css b/panels/Elite_Dangerous/input.css deleted file mode 100644 index 6056744..0000000 --- a/panels/Elite_Dangerous/input.css +++ /dev/null @@ -1,253 +0,0 @@ -@import url(https://fonts.bunny.net/css?family=orbitron:400,600,800); -@layer theme, utilities; -@import "tailwindcss/theme.css" layer(theme); -@import "tailwindcss/utilities.css" layer(utilities); - -@layer theme { - /* :root { - } */ -} - -html, -body, -#panel-html__body { - @apply relative; -} - -#panel-html__body { - --font-sans: "Orbitron", sans-serif; - @apply font-sans text-sm font-light tracking-wide bg-gray-900 text-slate-50 size-full; - - * { - box-sizing: border-box; - } -} - -.group-left, -.group-middle, -.group-right { - @apply grid gap-2 h-fit; -} - -.ed-panel { - @apply w-full p-2 border h-fit rounded-b-xl; - - h3, - h4 { - @apply m-0 mb-1 font-extralight; - } - - h3 { - @apply text-base; - } - - h4 { - @apply text-sm; - } - - &.pnl__blue { - @apply border-sky-300 bg-sky-500/30; - - h3, - h4 { - @apply text-sky-100; - - text-shadow: 0 0 0.2em var(--color-sky-300); - } - } - - &.pnl__yellow { - @apply border-amber-300 bg-amber-500/30; - - h3, - h4 { - @apply text-amber-100; - - text-shadow: 0 0 0.2em var(--color-amber-300); - } - } - - &.pnl__orange { - @apply border-orange-300 bg-orange-500/30; - - h3, - h4 { - @apply text-orange-100; - - text-shadow: 0 0 0.2em var(--color-orange-300); - } - } - - &.pnl__red { - @apply border-rose-300 bg-rose-500/30; - - h3, - h4 { - @apply text-rose-100; - - text-shadow: 0 0 0.2em var(--color-rose-400); - } - } - - &.pnl__white { - @apply border-white bg-white/20; - - h3, - h4 { - @apply text-white; - - text-shadow: 0 0 0.2em var(--color-white); - } - } -} - -.ed-button { - @apply flex items-center justify-center px-4 py-2 text-base text-center rounded-lg border-3; - - svg { - @apply block !size-5; - } - - &.btn__vertical { - @apply flex-col; - } - - &.btn__filled { - @apply text-gray-900; - } - - &.btn__orange { - @apply text-orange-100 border-orange-400 bg-orange-500/50; - - &.btn__filled { - @apply bg-orange-400; - } - } - - &.btn__yellow { - @apply text-orange-100 border-amber-400 bg-amber-500/50; - - &.btn__filled { - @apply bg-amber-400; - } - } - - &.btn__blue { - @apply border-sky-400 bg-sky-500/50 text-sky-100; - - &.btn__filled { - @apply bg-sky-500; - } - } - - &.btn__red { - @apply border-rose-500 bg-rose-600/50 text-rose-100; - - &.btn__filled { - @apply bg-rose-600; - } - } - - &.btn__white { - @apply border-white bg-white/30; - - &.btn__filled { - @apply bg-white; - } - } -} - -.ed-button-group__horizontal { - @apply grid divide-x; - - .ed-button { - @apply rounded-none; - - &:first-child { - @apply rounded-l-lg; - } - - &:last-child { - @apply rounded-r-lg; - } - } -} - -.ed-button-group__vertical { - @apply grid divide-y; - - .ed-button { - @apply rounded-none; - - &:first-child { - @apply rounded-t-lg; - } - - &:last-child { - @apply rounded-b-lg; - } - } -} - -.ed-toggle { - .toggle__wrapper { - @apply relative p-1.5 border-2 rounded-full size-full; - } - - .toggle__indicator { - @apply absolute transition rounded-full aspect-square; - } - - &.toggle__horizontal { - @apply w-20 h-12; - - .toggle__indicator { - @apply left-1.5 translate-x-0 h-[calc(100%-.75rem)]; - } - - &[active] .toggle__indicator { - @apply translate-x-full; - } - } - - &.toggle__vertical { - @apply w-12 h-20; - - .toggle__indicator { - @apply top-1.5 translate-y-0 w-[calc(100%-.75rem)]; - } - &[active] .toggle__indicator { - @apply translate-y-full; - } - } -} - -dialog[open] { - @apply absolute -translate-x-1/2 -translate-y-1/2 bg-transparent border-0 outline-0 top-1/2 left-1/2; - @apply backdrop:absolute backdrop:bg-black/50; - - .dialog__close { - @apply absolute text-white top-3 right-3; - } -} - -#clock { - @apply relative flex pr-16 text-3xl w-fit; - - i { - @apply pl-1 not-italic; - } - - .hours-minutes, - .seconds { - @apply flex gap-1; - } - - span { - @apply inline-block w-[.75em] text-center; - } - - sup { - @apply absolute right-0 w-16 pl-2 text-lg text-left opacity-80; - } -} diff --git a/panels/Elite_Dangerous/output.css b/panels/Elite_Dangerous/output.css deleted file mode 100644 index 4446c1f..0000000 --- a/panels/Elite_Dangerous/output.css +++ /dev/null @@ -1,688 +0,0 @@ -/*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */ -@import url(https://fonts.bunny.net/css?family=orbitron:400,600,800); -@layer properties; -@layer theme, utilities; -@layer theme { - :root, :host { - --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', - 'Noto Color Emoji'; - --color-red-400: oklch(70.4% 0.191 22.216); - --color-red-500: oklch(63.7% 0.237 25.331); - --color-red-600: oklch(57.7% 0.245 27.325); - --color-orange-100: oklch(95.4% 0.038 75.164); - --color-orange-300: oklch(83.7% 0.128 66.29); - --color-orange-400: oklch(75% 0.183 55.934); - --color-orange-500: oklch(70.5% 0.213 47.604); - --color-amber-100: oklch(96.2% 0.059 95.617); - --color-amber-300: oklch(87.9% 0.169 91.605); - --color-amber-400: oklch(82.8% 0.189 84.429); - --color-amber-500: oklch(76.9% 0.188 70.08); - --color-lime-400: oklch(84.1% 0.238 128.85); - --color-lime-600: oklch(64.8% 0.2 131.684); - --color-sky-100: oklch(95.1% 0.026 236.824); - --color-sky-300: oklch(82.8% 0.111 230.318); - --color-sky-400: oklch(74.6% 0.16 232.661); - --color-sky-500: oklch(68.5% 0.169 237.323); - --color-sky-600: oklch(58.8% 0.158 241.966); - --color-sky-900: oklch(39.1% 0.09 240.876); - --color-rose-100: oklch(94.1% 0.03 12.58); - --color-rose-300: oklch(81% 0.117 11.638); - --color-rose-400: oklch(71.2% 0.194 13.428); - --color-rose-500: oklch(64.5% 0.246 16.439); - --color-rose-600: oklch(58.6% 0.253 17.585); - --color-slate-50: oklch(98.4% 0.003 247.858); - --color-slate-950: oklch(12.9% 0.042 264.695); - --color-gray-800: oklch(27.8% 0.033 256.848); - --color-gray-900: oklch(21% 0.034 264.665); - --color-black: #000; - --color-white: #fff; - --spacing: 0.25rem; - --text-xs: 0.75rem; - --text-xs--line-height: calc(1 / 0.75); - --text-sm: 0.875rem; - --text-sm--line-height: calc(1.25 / 0.875); - --text-base: 1rem; - --text-base--line-height: calc(1.5 / 1); - --text-lg: 1.125rem; - --text-lg--line-height: calc(1.75 / 1.125); - --text-3xl: 1.875rem; - --text-3xl--line-height: calc(2.25 / 1.875); - --font-weight-extralight: 200; - --font-weight-light: 300; - --tracking-wide: 0.025em; - --radius-lg: 0.5rem; - --radius-xl: 0.75rem; - --default-transition-duration: 150ms; - --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - } -} -@layer utilities { - .absolute { - position: absolute; - } - .relative { - position: relative; - } - .inset-0 { - inset: calc(var(--spacing) * 0); - } - .right-0 { - right: calc(var(--spacing) * 0); - } - .bottom-full { - bottom: 100%; - } - .m-0 { - margin: calc(var(--spacing) * 0); - } - .mt-4 { - margin-top: calc(var(--spacing) * 4); - } - .flex { - display: flex; - } - .grid { - display: grid; - } - .aspect-square { - aspect-ratio: 1 / 1; - } - .size-8 { - width: calc(var(--spacing) * 8); - height: calc(var(--spacing) * 8); - } - .size-16 { - width: calc(var(--spacing) * 16); - height: calc(var(--spacing) * 16); - } - .size-full { - width: 100%; - height: 100%; - } - .h-28 { - height: calc(var(--spacing) * 28); - } - .h-full { - height: 100%; - } - .\!w-fit { - width: fit-content !important; - } - .w-28 { - width: calc(var(--spacing) * 28); - } - .w-fit { - width: fit-content; - } - .w-full { - width: 100%; - } - .grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .grid-cols-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - .grid-cols-\[1fr_2fr\] { - grid-template-columns: 1fr 2fr; - } - .grid-cols-\[1fr_2fr_1fr\] { - grid-template-columns: 1fr 2fr 1fr; - } - .grid-cols-\[2fr_1fr\] { - grid-template-columns: 2fr 1fr; - } - .grid-cols-\[3fr_1fr_1fr\] { - grid-template-columns: 3fr 1fr 1fr; - } - .grid-rows-3 { - grid-template-rows: repeat(3, minmax(0, 1fr)); - } - .flex-col { - flex-direction: column; - } - .items-center { - align-items: center; - } - .items-end { - align-items: flex-end; - } - .\!justify-start { - justify-content: flex-start !important; - } - .justify-between { - justify-content: space-between; - } - .justify-center { - justify-content: center; - } - .justify-end { - justify-content: flex-end; - } - .justify-items-center { - justify-items: center; - } - .gap-2 { - gap: calc(var(--spacing) * 2); - } - .divide-x { - :where(& > :not(:last-child)) { - --tw-divide-x-reverse: 0; - border-inline-style: var(--tw-border-style); - border-inline-start-width: calc(1px * var(--tw-divide-x-reverse)); - border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse))); - } - } - .rounded-full { - border-radius: calc(infinity * 1px); - } - .\!rounded-tl-none { - border-top-left-radius: 0 !important; - } - .\!rounded-tr-none { - border-top-right-radius: 0 !important; - } - .\!rounded-b-none { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; - } - .border-3 { - border-style: var(--tw-border-style); - border-width: 3px; - } - .border-lime-600 { - border-color: var(--color-lime-600); - } - .border-red-500 { - border-color: var(--color-red-500); - } - .border-red-600 { - border-color: var(--color-red-600); - } - .border-sky-600 { - border-color: var(--color-sky-600); - } - .border-white { - border-color: var(--color-white); - } - .\!bg-sky-900 { - background-color: var(--color-sky-900) !important; - } - .bg-lime-400 { - background-color: var(--color-lime-400); - } - .bg-lime-400\/30 { - background-color: color-mix(in srgb, oklch(84.1% 0.238 128.85) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-lime-400) 30%, transparent); - } - } - .bg-red-400 { - background-color: var(--color-red-400); - } - .bg-red-400\/30 { - background-color: color-mix(in srgb, oklch(70.4% 0.191 22.216) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-red-400) 30%, transparent); - } - } - .bg-red-500\/80 { - background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 80%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-red-500) 80%, transparent); - } - } - .bg-sky-400 { - background-color: var(--color-sky-400); - } - .bg-sky-400\/30 { - background-color: color-mix(in srgb, oklch(74.6% 0.16 232.661) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-sky-400) 30%, transparent); - } - } - .bg-slate-950 { - background-color: var(--color-slate-950); - } - .bg-white { - background-color: var(--color-white); - } - .bg-white\/30 { - background-color: color-mix(in srgb, #fff 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 30%, transparent); - } - } - .\!p-0 { - padding: calc(var(--spacing) * 0) !important; - } - .\!p-4 { - padding: calc(var(--spacing) * 4) !important; - } - .p-2 { - padding: calc(var(--spacing) * 2); - } - .\!px-2 { - padding-inline: calc(var(--spacing) * 2) !important; - } - .\!pt-8 { - padding-top: calc(var(--spacing) * 8) !important; - } - .text-center { - text-align: center; - } - .text-left { - text-align: left; - } - .text-right { - text-align: right; - } - .text-base { - font-size: var(--text-base); - line-height: var(--tw-leading, var(--text-base--line-height)); - } - .text-xs { - font-size: var(--text-xs); - line-height: var(--tw-leading, var(--text-xs--line-height)); - } - .\!text-gray-800 { - color: var(--color-gray-800) !important; - } - .text-red-400 { - color: var(--color-red-400); - } - .text-white { - color: var(--color-white); - } - .opacity-80 { - opacity: 80%; - } - .opacity-90 { - opacity: 90%; - } -} -@layer theme; -html, body, #panel-html__body { - position: relative; -} -#panel-html__body { - --font-sans: "Orbitron", sans-serif; - width: 100%; - height: 100%; - background-color: var(--color-gray-900); - font-family: var(--font-sans); - font-size: var(--text-sm); - line-height: var(--tw-leading, var(--text-sm--line-height)); - --tw-font-weight: var(--font-weight-light); - font-weight: var(--font-weight-light); - --tw-tracking: var(--tracking-wide); - letter-spacing: var(--tracking-wide); - color: var(--color-slate-50); - * { - box-sizing: border-box; - } -} -.group-left, .group-middle, .group-right { - display: grid; - height: fit-content; - gap: calc(var(--spacing) * 2); -} -.ed-panel { - height: fit-content; - width: 100%; - border-bottom-right-radius: var(--radius-xl); - border-bottom-left-radius: var(--radius-xl); - border-style: var(--tw-border-style); - border-width: 1px; - padding: calc(var(--spacing) * 2); - h3, h4 { - margin: calc(var(--spacing) * 0); - margin-bottom: calc(var(--spacing) * 1); - --tw-font-weight: var(--font-weight-extralight); - font-weight: var(--font-weight-extralight); - } - h3 { - font-size: var(--text-base); - line-height: var(--tw-leading, var(--text-base--line-height)); - } - h4 { - font-size: var(--text-sm); - line-height: var(--tw-leading, var(--text-sm--line-height)); - } - &.pnl__blue { - border-color: var(--color-sky-300); - background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-sky-500) 30%, transparent); - } - h3, h4 { - color: var(--color-sky-100); - text-shadow: 0 0 0.2em var(--color-sky-300); - } - } - &.pnl__yellow { - border-color: var(--color-amber-300); - background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-amber-500) 30%, transparent); - } - h3, h4 { - color: var(--color-amber-100); - text-shadow: 0 0 0.2em var(--color-amber-300); - } - } - &.pnl__orange { - border-color: var(--color-orange-300); - background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-orange-500) 30%, transparent); - } - h3, h4 { - color: var(--color-orange-100); - text-shadow: 0 0 0.2em var(--color-orange-300); - } - } - &.pnl__red { - border-color: var(--color-rose-300); - background-color: color-mix(in srgb, oklch(64.5% 0.246 16.439) 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-rose-500) 30%, transparent); - } - h3, h4 { - color: var(--color-rose-100); - text-shadow: 0 0 0.2em var(--color-rose-400); - } - } - &.pnl__white { - border-color: var(--color-white); - background-color: color-mix(in srgb, #fff 20%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 20%, transparent); - } - h3, h4 { - color: var(--color-white); - text-shadow: 0 0 0.2em var(--color-white); - } - } -} -.ed-button { - display: flex; - align-items: center; - justify-content: center; - border-radius: var(--radius-lg); - border-style: var(--tw-border-style); - border-width: 3px; - padding-inline: calc(var(--spacing) * 4); - padding-block: calc(var(--spacing) * 2); - text-align: center; - font-size: var(--text-base); - line-height: var(--tw-leading, var(--text-base--line-height)); - svg { - display: block; - width: calc(var(--spacing) * 5) !important; - height: calc(var(--spacing) * 5) !important; - } - &.btn__vertical { - flex-direction: column; - } - &.btn__filled { - color: var(--color-gray-900); - } - &.btn__orange { - border-color: var(--color-orange-400); - background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-orange-500) 50%, transparent); - } - color: var(--color-orange-100); - &.btn__filled { - background-color: var(--color-orange-400); - } - } - &.btn__yellow { - border-color: var(--color-amber-400); - background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-amber-500) 50%, transparent); - } - color: var(--color-orange-100); - &.btn__filled { - background-color: var(--color-amber-400); - } - } - &.btn__blue { - border-color: var(--color-sky-400); - background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-sky-500) 50%, transparent); - } - color: var(--color-sky-100); - &.btn__filled { - background-color: var(--color-sky-500); - } - } - &.btn__red { - border-color: var(--color-rose-500); - background-color: color-mix(in srgb, oklch(58.6% 0.253 17.585) 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-rose-600) 50%, transparent); - } - color: var(--color-rose-100); - &.btn__filled { - background-color: var(--color-rose-600); - } - } - &.btn__white { - border-color: var(--color-white); - background-color: color-mix(in srgb, #fff 30%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-white) 30%, transparent); - } - &.btn__filled { - background-color: var(--color-white); - } - } -} -.ed-button-group__horizontal { - display: grid; - :where(& > :not(:last-child)) { - --tw-divide-x-reverse: 0; - border-inline-style: var(--tw-border-style); - border-inline-start-width: calc(1px * var(--tw-divide-x-reverse)); - border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse))); - } - .ed-button { - border-radius: 0; - &:first-child { - border-top-left-radius: var(--radius-lg); - border-bottom-left-radius: var(--radius-lg); - } - &:last-child { - border-top-right-radius: var(--radius-lg); - border-bottom-right-radius: var(--radius-lg); - } - } -} -.ed-button-group__vertical { - display: grid; - :where(& > :not(:last-child)) { - --tw-divide-y-reverse: 0; - border-bottom-style: var(--tw-border-style); - border-top-style: var(--tw-border-style); - border-top-width: calc(1px * var(--tw-divide-y-reverse)); - border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); - } - .ed-button { - border-radius: 0; - &:first-child { - border-top-left-radius: var(--radius-lg); - border-top-right-radius: var(--radius-lg); - } - &:last-child { - border-bottom-right-radius: var(--radius-lg); - border-bottom-left-radius: var(--radius-lg); - } - } -} -.ed-toggle { - .toggle__wrapper { - position: relative; - width: 100%; - height: 100%; - border-radius: calc(infinity * 1px); - border-style: var(--tw-border-style); - border-width: 2px; - padding: calc(var(--spacing) * 1.5); - } - .toggle__indicator { - position: absolute; - aspect-ratio: 1 / 1; - border-radius: calc(infinity * 1px); - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - &.toggle__horizontal { - height: calc(var(--spacing) * 12); - width: calc(var(--spacing) * 20); - .toggle__indicator { - left: calc(var(--spacing) * 1.5); - height: calc(100% - .75rem); - --tw-translate-x: calc(var(--spacing) * 0); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - &[active] .toggle__indicator { - --tw-translate-x: 100%; - translate: var(--tw-translate-x) var(--tw-translate-y); - } - } - &.toggle__vertical { - height: calc(var(--spacing) * 20); - width: calc(var(--spacing) * 12); - .toggle__indicator { - top: calc(var(--spacing) * 1.5); - width: calc(100% - .75rem); - --tw-translate-y: calc(var(--spacing) * 0); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - &[active] .toggle__indicator { - --tw-translate-y: 100%; - translate: var(--tw-translate-x) var(--tw-translate-y); - } - } -} -dialog[open] { - position: absolute; - top: calc(1/2 * 100%); - left: calc(1/2 * 100%); - --tw-translate-x: calc(calc(1/2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - --tw-translate-y: calc(calc(1/2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - border-style: var(--tw-border-style); - border-width: 0px; - background-color: transparent; - outline-style: var(--tw-outline-style); - outline-width: 0px; - &::backdrop { - background-color: color-mix(in srgb, #000 50%, transparent); - @supports (color: color-mix(in lab, red, red)) { - background-color: color-mix(in oklab, var(--color-black) 50%, transparent); - } - } - .dialog__close { - position: absolute; - top: calc(var(--spacing) * 3); - right: calc(var(--spacing) * 3); - color: var(--color-white); - } -} -#clock { - position: relative; - display: flex; - width: fit-content; - padding-right: calc(var(--spacing) * 16); - font-size: var(--text-3xl); - line-height: var(--tw-leading, var(--text-3xl--line-height)); - i { - padding-left: calc(var(--spacing) * 1); - font-style: normal; - } - .hours-minutes, .seconds { - display: flex; - gap: calc(var(--spacing) * 1); - } - span { - display: inline-block; - width: .75em; - text-align: center; - } - sup { - position: absolute; - right: calc(var(--spacing) * 0); - width: calc(var(--spacing) * 16); - padding-left: calc(var(--spacing) * 2); - text-align: left; - font-size: var(--text-lg); - line-height: var(--tw-leading, var(--text-lg--line-height)); - opacity: 80%; - } -} -@property --tw-divide-x-reverse { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-font-weight { - syntax: "*"; - inherits: false; -} -@property --tw-tracking { - syntax: "*"; - inherits: false; -} -@property --tw-divide-y-reverse { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-x { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-y { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-z { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-outline-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@layer properties { - @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { - *, ::before, ::after, ::backdrop { - --tw-divide-x-reverse: 0; - --tw-border-style: solid; - --tw-font-weight: initial; - --tw-tracking: initial; - --tw-divide-y-reverse: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-translate-z: 0; - --tw-outline-style: solid; - } - } -} diff --git a/panels/Elite_Dangerous/package-lock.json b/panels/Elite_Dangerous/package-lock.json deleted file mode 100644 index 1fb3ab8..0000000 --- a/panels/Elite_Dangerous/package-lock.json +++ /dev/null @@ -1,974 +0,0 @@ -{ - "name": "test_panel", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "test_panel", - "version": "1.0.0", - "license": "ISC", - "devDependencies": { - "@tailwindcss/cli": "^4.1.2", - "tailwindcss": "^4.1.2" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/cli": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.4.tgz", - "integrity": "sha512-gP05Qihh+cZ2FqD5fa0WJXx3KEk2YWUYv/RBKAyiOg0V4vYVDr/xlLc0sacpnVEXM45BVUR9U2hsESufYs6YTA==", - "dev": true, - "dependencies": { - "@parcel/watcher": "^2.5.1", - "@tailwindcss/node": "4.1.4", - "@tailwindcss/oxide": "4.1.4", - "enhanced-resolve": "^5.18.1", - "mri": "^1.2.0", - "picocolors": "^1.1.1", - "tailwindcss": "4.1.4" - }, - "bin": { - "tailwindcss": "dist/index.mjs" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.4.tgz", - "integrity": "sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==", - "dev": true, - "dependencies": { - "enhanced-resolve": "^5.18.1", - "jiti": "^2.4.2", - "lightningcss": "1.29.2", - "tailwindcss": "4.1.4" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.4.tgz", - "integrity": "sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==", - "dev": true, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.4", - "@tailwindcss/oxide-darwin-arm64": "4.1.4", - "@tailwindcss/oxide-darwin-x64": "4.1.4", - "@tailwindcss/oxide-freebsd-x64": "4.1.4", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.4", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.4", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.4", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.4", - "@tailwindcss/oxide-linux-x64-musl": "4.1.4", - "@tailwindcss/oxide-wasm32-wasi": "4.1.4", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.4", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.4" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.4.tgz", - "integrity": "sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.4.tgz", - "integrity": "sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.4.tgz", - "integrity": "sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.4.tgz", - "integrity": "sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.4.tgz", - "integrity": "sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.4.tgz", - "integrity": "sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.4.tgz", - "integrity": "sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.4.tgz", - "integrity": "sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.4.tgz", - "integrity": "sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.4.tgz", - "integrity": "sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.0", - "@emnapi/runtime": "^1.4.0", - "@emnapi/wasi-threads": "^1.0.1", - "@napi-rs/wasm-runtime": "^0.2.8", - "@tybys/wasm-util": "^0.9.0", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.4.tgz", - "integrity": "sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.4.tgz", - "integrity": "sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "dev": true, - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/lightningcss": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", - "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", - "dev": true, - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.29.2", - "lightningcss-darwin-x64": "1.29.2", - "lightningcss-freebsd-x64": "1.29.2", - "lightningcss-linux-arm-gnueabihf": "1.29.2", - "lightningcss-linux-arm64-gnu": "1.29.2", - "lightningcss-linux-arm64-musl": "1.29.2", - "lightningcss-linux-x64-gnu": "1.29.2", - "lightningcss-linux-x64-musl": "1.29.2", - "lightningcss-win32-arm64-msvc": "1.29.2", - "lightningcss-win32-x64-msvc": "1.29.2" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", - "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", - "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", - "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", - "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", - "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", - "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", - "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", - "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", - "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", - "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss/node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tailwindcss": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.4.tgz", - "integrity": "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==", - "dev": true - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - } - } -} diff --git a/panels/Elite_Dangerous/package.json b/panels/Elite_Dangerous/package.json deleted file mode 100644 index cf85d0c..0000000 --- a/panels/Elite_Dangerous/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "test_panel", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "dev": "npx tailwindcss -i ./input.css -o ./output.css --watch" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "@tailwindcss/cli": "^4.1.2", - "tailwindcss": "^4.1.2" - } -} diff --git a/panels/Elite_Dangerous/panel.json b/panels/Elite_Dangerous/panel.json deleted file mode 100644 index 54ebe8c..0000000 --- a/panels/Elite_Dangerous/panel.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "dir": "", - "name": "Elite Dangerous", - "description": "A Semi Realistic button panel for Elite Dangerous, made by JaxxMoss.", - "aspectRatio": "16/10", - "macros": { - "CM__Chaff": "ED-CM-Chaff", - "CM__ECM": "ED-CM-ECM", - "CM__Heatsink": "ED-CM-Heat_Sink", - "CM__Shieldcell": "ED-CM-Schield_Cell", - "Camera__Pos1": "ED-Camera-Position1", - "Camera__Pos2": "ED-Camera-Position2", - "Camera__Suite": "ED-Camera-Suite", - "Comms__panel": "ED-Comms_Panel", - "External__panel": "ED-External_Panel", - "FSD__toggle": "ED-Toggle_FSD", - "Fighter__engage": "ED-Fighter-Engage", - "Fighter__hold": "ED-Fighter-Hold", - "Fighter__recall": "ED-Fighter-Recall", - "Fighter__wingman1": "ED-Fighter-Wingman1", - "Fighter__wingman2": "ED-Fighter-Wingman2", - "Fighter__wingman3": "ED-Fighter-Wingman3", - "Fighter_attack": "ED-Fighter-Attack", - "Fighter_defend": "ED-Fighter-Defend", - "Fighter_follow": "ED-Fighter-Follow", - "FlightAssist__toggle": "ED-Flight_Assist", - "Free__Camera": "ED-Camera-Free", - "Galaxy__map": "ED-Galaxy_Map", - "Hardpoints__toggle": "ED-Hardpoints_Switch", - "Hyper__Space": "ED-Hyperspace", - "Internal__panel": "ED-Internal_Panel", - "Jettison__Cargo": "ED-Jettison_Cargo", - "Lights__toggle": "ED-Flight_Assist", - "Mode__toggle": "ED-Mode_Switch", - "Next__Camera": "ED-Camera-Next", - "NightVis__toggle": "ED-Night_Vision", - "Previous__Camera": "ED-Camera-Previous", - "Roles__panel": "ED-Roles_Panel", - "Rotational__Correction": "ED-Rotational_Correction", - "Route__NextSystem": "ED-Route_Next_System", - "Scanner__DiscScan": "ED-Scanner_Discovery", - "Scanner__FSS": "ED-Scanner-FSS", - "SilentRunning__toggle": "ED-Silent_Running", - "Speed_0percent": "ED-0percent_Speed", - "Super__Cruise": "ED-Super_Cruise", - "System__map": "ED-System_Map" - } -} diff --git a/panels/Elite_Dangerous/tailwind.config.js b/panels/Elite_Dangerous/tailwind.config.js deleted file mode 100644 index 2c1a5aa..0000000 --- a/panels/Elite_Dangerous/tailwind.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: [ - "./index.html", // Ensure this path is correct - ], - theme: { - extend: {}, - }, - safelist: [ - { - pattern: /^(border|bg)-(blue|red|sky|orange|lime)-(200|400|300\/40)$/, - }, - ], - plugins: [], - preflight: false, - mode: "jit", -}; diff --git a/panels/test_panel/panel.json b/panels/test_panel/panel.json index 27afffd..fcfbfdd 100644 --- a/panels/test_panel/panel.json +++ b/panels/test_panel/panel.json @@ -1 +1,24 @@ -{"dir":"","name":"Test Panel 1","description":"This is the very first panel to be created. It is a test panel for a mobile phone.","aspectRatio":"10/20","macros":{"button_1":"Task_Manager","button_10":"Close_Browser_Window","button_11":"Previous_Tab","button_12":"Next_Tab","button_13":"Close_Tab","button_14":"New_Tab","button_15":"Fullscreen","button_16":"Home","button_2":"Close_Application","button_3":"RunDialog","button_4":"Files","button_5":"Settings","button_6":"New_Desktop","button_7":"Displays","button_8":"Task_view","button_9":"New_Window"}} \ No newline at end of file +{ + "dir": "", + "name": "Test Panel 1", + "description": "This is the very first panel to be created. It is a test panel for a mobile phone.", + "aspectRatio": "10/20", + "macros": { + "button_1": "TEST-Task_Manager", + "button_10": "TEST-Close_Browser_Window", + "button_11": "TEST-Previous_Tab", + "button_12": "TEST-Next_Tab", + "button_13": "TEST-Close_Tab", + "button_14": "TEST-New_Tab", + "button_15": "TEST-Fullscreen", + "button_16": "TEST-Home", + "button_2": "TEST-Close_Application", + "button_3": "TEST-RunDialog", + "button_4": "TEST-Files", + "button_5": "TEST-Settings", + "button_6": "TEST-New_Desktop", + "button_7": "TEST-Displays", + "button_8": "TEST-Task_view", + "button_9": "TEST-New_Window" + } +} diff --git a/test-config.js b/test-config.js deleted file mode 100644 index 9fa3d82..0000000 --- a/test-config.js +++ /dev/null @@ -1,5 +0,0 @@ -window.__CONFIG__ = { - "MCRM__IV": "7290919109450742", - "MCRM__PORT": "52893", - "MCRM__SALT": "UQrNepgDabFnvSC/xqKt7MyQQVLS" -}; \ No newline at end of file diff --git a/fe/.editorconfig b/ui/.editorconfig similarity index 100% rename from fe/.editorconfig rename to ui/.editorconfig diff --git a/fe/.gitattributes b/ui/.gitattributes similarity index 100% rename from fe/.gitattributes rename to ui/.gitattributes diff --git a/fe/.gitignore b/ui/.gitignore similarity index 100% rename from fe/.gitignore rename to ui/.gitignore diff --git a/fe/.prettierrc.json b/ui/.prettierrc.json similarity index 100% rename from fe/.prettierrc.json rename to ui/.prettierrc.json diff --git a/fe/.vscode/extensions.json b/ui/.vscode/extensions.json similarity index 100% rename from fe/.vscode/extensions.json rename to ui/.vscode/extensions.json diff --git a/fe/README.md b/ui/README.md similarity index 100% rename from fe/README.md rename to ui/README.md diff --git a/fe/eslint.config.js b/ui/eslint.config.js similarity index 100% rename from fe/eslint.config.js rename to ui/eslint.config.js diff --git a/fe/index.html b/ui/index.html similarity index 100% rename from fe/index.html rename to ui/index.html diff --git a/fe/jsconfig.json b/ui/jsconfig.json similarity index 100% rename from fe/jsconfig.json rename to ui/jsconfig.json diff --git a/fe/mcrm-icon.svg b/ui/mcrm-icon.svg similarity index 100% rename from fe/mcrm-icon.svg rename to ui/mcrm-icon.svg diff --git a/fe/package-lock.json b/ui/package-lock.json similarity index 100% rename from fe/package-lock.json rename to ui/package-lock.json diff --git a/fe/package.json b/ui/package.json similarity index 82% rename from fe/package.json rename to ui/package.json index f23dda3..0770485 100644 --- a/fe/package.json +++ b/ui/package.json @@ -1,7 +1,8 @@ { - "name": "fe", - "version": "0.0.0", - "private": true, + "name": "Macrame - UI", + "description": "Macrame UI - Macrame is a small application that can turn any device into a button panel for your pc.", + "version": "1.0.0", + "private": false, "type": "module", "scripts": { "dev": "vite --host", diff --git a/ui/public/assets/index-CNkZ911J.js b/ui/public/assets/index-CNkZ911J.js new file mode 100644 index 0000000..45f0626 --- /dev/null +++ b/ui/public/assets/index-CNkZ911J.js @@ -0,0 +1,25 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Qn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const X={},_t=[],He=()=>{},Mi=()=>!1,hn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Yn=e=>e.startsWith("onUpdate:"),oe=Object.assign,Jn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Fi=Object.prototype.hasOwnProperty,k=(e,t)=>Fi.call(e,t),D=Array.isArray,Tt=e=>dn(e)==="[object Map]",Ni=e=>dn(e)==="[object Set]",B=e=>typeof e=="function",ne=e=>typeof e=="string",wt=e=>typeof e=="symbol",ee=e=>e!==null&&typeof e=="object",ar=e=>(ee(e)||B(e))&&B(e.then)&&B(e.catch),Hi=Object.prototype.toString,dn=e=>Hi.call(e),Li=e=>dn(e).slice(8,-1),$i=e=>dn(e)==="[object Object]",Xn=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,It=Qn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),pn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Di=/-(\w)/g,et=pn(e=>e.replace(Di,(t,n)=>n?n.toUpperCase():"")),ji=/\B([A-Z])/g,ut=pn(e=>e.replace(ji,"-$1").toLowerCase()),hr=pn(e=>e.charAt(0).toUpperCase()+e.slice(1)),En=pn(e=>e?`on${hr(e)}`:""),Ze=(e,t)=>!Object.is(e,t),wn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Bi=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let bs;const gn=()=>bs||(bs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zn(e){if(D(e)){const t={};for(let n=0;n{if(n){const s=n.split(Vi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function es(e){let t="";if(ne(e))t=e;else if(D(e))for(let n=0;n0)return;if(Ft){let t=Ft;for(Ft=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Mt;){let t=Mt;for(Mt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function yr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function br(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ss(s),Qi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Hn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(xr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function xr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Bt))return;e.globalVersion=Bt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Hn(e)){e.flags&=-3;return}const n=J,s=xe;J=e,xe=!0;try{yr(e);const r=e.fn(e._value);(t.version===0||Ze(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{J=n,xe=s,br(e),e.flags&=-3}}function ss(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)ss(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Qi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let xe=!0;const Er=[];function tt(){Er.push(xe),xe=!1}function nt(){const e=Er.pop();xe=e===void 0?!0:e}function xs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=J;J=void 0;try{t()}finally{J=n}}}let Bt=0;class Yi{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 rs{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}track(t){if(!J||!xe||J===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==J)n=this.activeLink=new Yi(J,this),J.deps?(n.prevDep=J.depsTail,J.depsTail.nextDep=n,J.depsTail=n):J.deps=J.depsTail=n,wr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=J.depsTail,n.nextDep=void 0,J.depsTail.nextDep=n,J.depsTail=n,J.deps===n&&(J.deps=s)}return n}trigger(t){this.version++,Bt++,this.notify(t)}notify(t){ts();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{ns()}}}function wr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)wr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ln=new WeakMap,lt=Symbol(""),$n=Symbol(""),Ut=Symbol("");function re(e,t,n){if(xe&&J){let s=Ln.get(e);s||Ln.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new rs),r.map=s,r.key=n),r.track()}}function Ve(e,t,n,s,r,i){const o=Ln.get(e);if(!o){Bt++;return}const c=l=>{l&&l.trigger()};if(ts(),t==="clear")o.forEach(c);else{const l=D(e),d=l&&Xn(n);if(l&&n==="length"){const a=Number(s);o.forEach((h,g)=>{(g==="length"||g===Ut||!wt(g)&&g>=a)&&c(h)})}else switch((n!==void 0||o.has(void 0))&&c(o.get(n)),d&&c(o.get(Ut)),t){case"add":l?d&&c(o.get("length")):(c(o.get(lt)),Tt(e)&&c(o.get($n)));break;case"delete":l||(c(o.get(lt)),Tt(e)&&c(o.get($n)));break;case"set":Tt(e)&&c(o.get(lt));break}}ns()}function pt(e){const t=W(e);return t===e?t:(re(t,"iterate",Ut),Ee(e)?t:t.map(ce))}function is(e){return re(e=W(e),"iterate",Ut),e}const Ji={__proto__:null,[Symbol.iterator](){return Rn(this,Symbol.iterator,ce)},concat(...e){return pt(this).concat(...e.map(t=>D(t)?pt(t):t))},entries(){return Rn(this,"entries",e=>(e[1]=ce(e[1]),e))},every(e,t){return De(this,"every",e,t,void 0,arguments)},filter(e,t){return De(this,"filter",e,t,n=>n.map(ce),arguments)},find(e,t){return De(this,"find",e,t,ce,arguments)},findIndex(e,t){return De(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return De(this,"findLast",e,t,ce,arguments)},findLastIndex(e,t){return De(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return De(this,"forEach",e,t,void 0,arguments)},includes(...e){return Pn(this,"includes",e)},indexOf(...e){return Pn(this,"indexOf",e)},join(e){return pt(this).join(e)},lastIndexOf(...e){return Pn(this,"lastIndexOf",e)},map(e,t){return De(this,"map",e,t,void 0,arguments)},pop(){return Pt(this,"pop")},push(...e){return Pt(this,"push",e)},reduce(e,...t){return Es(this,"reduce",e,t)},reduceRight(e,...t){return Es(this,"reduceRight",e,t)},shift(){return Pt(this,"shift")},some(e,t){return De(this,"some",e,t,void 0,arguments)},splice(...e){return Pt(this,"splice",e)},toReversed(){return pt(this).toReversed()},toSorted(e){return pt(this).toSorted(e)},toSpliced(...e){return pt(this).toSpliced(...e)},unshift(...e){return Pt(this,"unshift",e)},values(){return Rn(this,"values",ce)}};function Rn(e,t,n){const s=is(e),r=s[t]();return s!==e&&!Ee(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const Xi=Array.prototype;function De(e,t,n,s,r,i){const o=is(e),c=o!==e&&!Ee(e),l=o[t];if(l!==Xi[t]){const h=l.apply(e,i);return c?ce(h):h}let d=n;o!==e&&(c?d=function(h,g){return n.call(this,ce(h),g,e)}:n.length>2&&(d=function(h,g){return n.call(this,h,g,e)}));const a=l.call(o,d,s);return c&&r?r(a):a}function Es(e,t,n,s){const r=is(e);let i=n;return r!==e&&(Ee(e)?n.length>3&&(i=function(o,c,l){return n.call(this,o,c,l,e)}):i=function(o,c,l){return n.call(this,o,ce(c),l,e)}),r[t](i,...s)}function Pn(e,t,n){const s=W(e);re(s,"iterate",Ut);const r=s[t](...n);return(r===-1||r===!1)&&cs(n[0])?(n[0]=W(n[0]),s[t](...n)):r}function Pt(e,t,n=[]){tt(),ts();const s=W(e)[t].apply(e,n);return ns(),nt(),s}const Zi=Qn("__proto__,__v_isRef,__isVue"),Sr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(wt));function eo(e){wt(e)||(e=String(e));const t=W(this);return re(t,"has",e),t.hasOwnProperty(e)}class Rr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?uo:Ar:i?Or:Cr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=D(t);if(!r){let l;if(o&&(l=Ji[n]))return l;if(n==="hasOwnProperty")return eo}const c=Reflect.get(t,n,ie(t)?t:s);return(wt(n)?Sr.has(n):Zi(n))||(r||re(t,"get",n),i)?c:ie(c)?o&&Xn(n)?c:c.value:ee(c)?r?Ir(c):mn(c):c}}class Pr extends Rr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const l=ft(i);if(!Ee(s)&&!ft(s)&&(i=W(i),s=W(s)),!D(t)&&ie(i)&&!ie(s))return l?!1:(i.value=s,!0)}const o=D(t)&&Xn(n)?Number(n)e,Jt=e=>Reflect.getPrototypeOf(e);function io(e,t,n){return function(...s){const r=this.__v_raw,i=W(r),o=Tt(i),c=e==="entries"||e===Symbol.iterator&&o,l=e==="keys"&&o,d=r[e](...s),a=n?Dn:t?jn:ce;return!t&&re(i,"iterate",l?$n:lt),{next(){const{value:h,done:g}=d.next();return g?{value:h,done:g}:{value:c?[a(h[0]),a(h[1])]:a(h),done:g}},[Symbol.iterator](){return this}}}}function Xt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function oo(e,t){const n={get(r){const i=this.__v_raw,o=W(i),c=W(r);e||(Ze(r,c)&&re(o,"get",r),re(o,"get",c));const{has:l}=Jt(o),d=t?Dn:e?jn:ce;if(l.call(o,r))return d(i.get(r));if(l.call(o,c))return d(i.get(c));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&re(W(r),"iterate",lt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=W(i),c=W(r);return e||(Ze(r,c)&&re(o,"has",r),re(o,"has",c)),r===c?i.has(r):i.has(r)||i.has(c)},forEach(r,i){const o=this,c=o.__v_raw,l=W(c),d=t?Dn:e?jn:ce;return!e&&re(l,"iterate",lt),c.forEach((a,h)=>r.call(i,d(a),d(h),o))}};return oe(n,e?{add:Xt("add"),set:Xt("set"),delete:Xt("delete"),clear:Xt("clear")}:{add(r){!t&&!Ee(r)&&!ft(r)&&(r=W(r));const i=W(this);return Jt(i).has.call(i,r)||(i.add(r),Ve(i,"add",r,r)),this},set(r,i){!t&&!Ee(i)&&!ft(i)&&(i=W(i));const o=W(this),{has:c,get:l}=Jt(o);let d=c.call(o,r);d||(r=W(r),d=c.call(o,r));const a=l.call(o,r);return o.set(r,i),d?Ze(i,a)&&Ve(o,"set",r,i):Ve(o,"add",r,i),this},delete(r){const i=W(this),{has:o,get:c}=Jt(i);let l=o.call(i,r);l||(r=W(r),l=o.call(i,r)),c&&c.call(i,r);const d=i.delete(r);return l&&Ve(i,"delete",r,void 0),d},clear(){const r=W(this),i=r.size!==0,o=r.clear();return i&&Ve(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=io(r,e,t)}),n}function os(e,t){const n=oo(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(k(n,r)&&r in s?n:s,r,i)}const lo={get:os(!1,!1)},co={get:os(!1,!0)},fo={get:os(!0,!1)};const Cr=new WeakMap,Or=new WeakMap,Ar=new WeakMap,uo=new WeakMap;function ao(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ho(e){return e.__v_skip||!Object.isExtensible(e)?0:ao(Li(e))}function mn(e){return ft(e)?e:ls(e,!1,no,lo,Cr)}function Tr(e){return ls(e,!1,ro,co,Or)}function Ir(e){return ls(e,!0,so,fo,Ar)}function ls(e,t,n,s,r){if(!ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=ho(e);if(o===0)return e;const c=new Proxy(e,o===2?s:n);return r.set(e,c),c}function Nt(e){return ft(e)?Nt(e.__v_raw):!!(e&&e.__v_isReactive)}function ft(e){return!!(e&&e.__v_isReadonly)}function Ee(e){return!!(e&&e.__v_isShallow)}function cs(e){return e?!!e.__v_raw:!1}function W(e){const t=e&&e.__v_raw;return t?W(t):e}function Mr(e){return!k(e,"__v_skip")&&Object.isExtensible(e)&&dr(e,"__v_skip",!0),e}const ce=e=>ee(e)?mn(e):e,jn=e=>ee(e)?Ir(e):e;function ie(e){return e?e.__v_isRef===!0:!1}function Fr(e){return Nr(e,!1)}function po(e){return Nr(e,!0)}function Nr(e,t){return ie(e)?e:new go(e,t)}class go{constructor(t,n){this.dep=new rs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:W(t),this._value=n?t:ce(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ee(t)||ft(t);t=s?t:W(t),Ze(t,n)&&(this._rawValue=t,this._value=s?t:ce(t),this.dep.trigger())}}function ct(e){return ie(e)?e.value:e}const mo={get:(e,t,n)=>t==="__v_raw"?e:ct(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ie(r)&&!ie(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Hr(e){return Nt(e)?e:new Proxy(e,mo)}class _o{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new rs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Bt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&J!==this)return vr(this,!0),!0}get value(){const t=this.dep.track();return xr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function vo(e,t,n=!1){let s,r;return B(e)?s=e:(s=e.get,r=e.set),new _o(s,r,n)}const Zt={},rn=new WeakMap;let ot;function yo(e,t=!1,n=ot){if(n){let s=rn.get(n);s||rn.set(n,s=[]),s.push(e)}}function bo(e,t,n=X){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:c,call:l}=n,d=T=>r?T:Ee(T)||r===!1||r===0?Xe(T,1):Xe(T);let a,h,g,m,O=!1,A=!1;if(ie(e)?(h=()=>e.value,O=Ee(e)):Nt(e)?(h=()=>d(e),O=!0):D(e)?(A=!0,O=e.some(T=>Nt(T)||Ee(T)),h=()=>e.map(T=>{if(ie(T))return T.value;if(Nt(T))return d(T);if(B(T))return l?l(T,2):T()})):B(e)?t?h=l?()=>l(e,2):e:h=()=>{if(g){tt();try{g()}finally{nt()}}const T=ot;ot=a;try{return l?l(e,3,[m]):e(m)}finally{ot=T}}:h=He,t&&r){const T=h,z=r===!0?1/0:r;h=()=>Xe(T(),z)}const j=zi(),N=()=>{a.stop(),j&&j.active&&Jn(j.effects,a)};if(i&&t){const T=t;t=(...z)=>{T(...z),N()}}let M=A?new Array(e.length).fill(Zt):Zt;const H=T=>{if(!(!(a.flags&1)||!a.dirty&&!T))if(t){const z=a.run();if(r||O||(A?z.some((se,Z)=>Ze(se,M[Z])):Ze(z,M))){g&&g();const se=ot;ot=a;try{const Z=[z,M===Zt?void 0:A&&M[0]===Zt?[]:M,m];l?l(t,3,Z):t(...Z),M=z}finally{ot=se}}}else a.run()};return c&&c(H),a=new mr(h),a.scheduler=o?()=>o(H,!1):H,m=T=>yo(T,!1,a),g=a.onStop=()=>{const T=rn.get(a);if(T){if(l)l(T,4);else for(const z of T)z();rn.delete(a)}},t?s?H(!0):M=a.run():o?o(H.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Xe(e,t=1/0,n){if(t<=0||!ee(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ie(e))Xe(e.value,t,n);else if(D(e))for(let s=0;s{Xe(s,t,n)});else if($i(e)){for(const s in e)Xe(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Xe(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function zt(e,t,n,s){try{return s?e(...s):e()}catch(r){_n(r,t,n)}}function Le(e,t,n,s){if(B(e)){const r=zt(e,t,n,s);return r&&ar(r)&&r.catch(i=>{_n(i,t,n)}),r}if(D(e)){const r=[];for(let i=0;i>>1,r=fe[s],i=Vt(r);i=Vt(n)?fe.push(e):fe.splice(Eo(t),0,e),e.flags|=1,Dr()}}function Dr(){on||(on=Lr.then(Br))}function wo(e){D(e)?vt.push(...e):Qe&&e.id===-1?Qe.splice(gt+1,0,e):e.flags&1||(vt.push(e),e.flags|=1),Dr()}function ws(e,t,n=Me+1){for(;nVt(n)-Vt(s));if(vt.length=0,Qe){Qe.push(...t);return}for(Qe=t,gt=0;gte.id==null?e.flags&2?-1:1/0:e.id;function Br(e){try{for(Me=0;Me{s._d&&Ms(-1);const i=ln(t);let o;try{o=e(...r)}finally{ln(i),s._d&&Ms(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function rt(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;oe.__isTeleport;function us(e,t){e.shapeFlag&6&&e.component?(e.transition=t,us(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}/*! #__NO_SIDE_EFFECTS__ */function Vr(e,t){return B(e)?oe({name:e.name},t,{setup:e}):e}function Kr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function cn(e,t,n,s,r=!1){if(D(e)){e.forEach((O,A)=>cn(O,t&&(D(t)?t[A]:t),n,s,r));return}if(Ht(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&cn(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?ps(s.component):s.el,o=r?null:i,{i:c,r:l}=e,d=t&&t.r,a=c.refs===X?c.refs={}:c.refs,h=c.setupState,g=W(h),m=h===X?()=>!1:O=>k(g,O);if(d!=null&&d!==l&&(ne(d)?(a[d]=null,m(d)&&(h[d]=null)):ie(d)&&(d.value=null)),B(l))zt(l,c,12,[o,a]);else{const O=ne(l),A=ie(l);if(O||A){const j=()=>{if(e.f){const N=O?m(l)?h[l]:a[l]:l.value;r?D(N)&&Jn(N,i):D(N)?N.includes(i)||N.push(i):O?(a[l]=[i],m(l)&&(h[l]=a[l])):(l.value=[i],e.k&&(a[e.k]=l.value))}else O?(a[l]=o,m(l)&&(h[l]=o)):A&&(l.value=o,e.k&&(a[e.k]=o))};o?(j.id=-1,ge(j,n)):j()}}}gn().requestIdleCallback;gn().cancelIdleCallback;const Ht=e=>!!e.type.__asyncLoader,Wr=e=>e.type.__isKeepAlive;function Co(e,t){kr(e,"a",t)}function Oo(e,t){kr(e,"da",t)}function kr(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(vn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Wr(r.parent.vnode)&&Ao(s,t,n,r),r=r.parent}}function Ao(e,t,n,s){const r=vn(t,e,s,!0);qr(()=>{Jn(s[t],r)},n)}function vn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{tt();const c=Qt(n),l=Le(t,n,e,o);return c(),nt(),l});return s?r.unshift(i):r.push(i),i}}const We=e=>(t,n=ue)=>{(!kt||e==="sp")&&vn(e,(...s)=>t(...s),n)},To=We("bm"),Io=We("m"),Mo=We("bu"),Fo=We("u"),No=We("bum"),qr=We("um"),Ho=We("sp"),Lo=We("rtg"),$o=We("rtc");function Do(e,t=ue){vn("ec",e,t)}const jo=Symbol.for("v-ndc"),Bn=e=>e?pi(e)?ps(e):Bn(e.parent):null,Lt=oe(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=>Bn(e.parent),$root:e=>Bn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>zr(e),$forceUpdate:e=>e.f||(e.f=()=>{fs(e.update)}),$nextTick:e=>e.n||(e.n=$r.bind(e.proxy)),$watch:e=>ol.bind(e)}),Cn=(e,t)=>e!==X&&!e.__isScriptSetup&&k(e,t),Bo={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:c,appContext:l}=e;let d;if(t[0]!=="$"){const m=o[t];if(m!==void 0)switch(m){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Cn(s,t))return o[t]=1,s[t];if(r!==X&&k(r,t))return o[t]=2,r[t];if((d=e.propsOptions[0])&&k(d,t))return o[t]=3,i[t];if(n!==X&&k(n,t))return o[t]=4,n[t];Un&&(o[t]=0)}}const a=Lt[t];let h,g;if(a)return t==="$attrs"&&re(e.attrs,"get",""),a(e);if((h=c.__cssModules)&&(h=h[t]))return h;if(n!==X&&k(n,t))return o[t]=4,n[t];if(g=l.config.globalProperties,k(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Cn(r,t)?(r[t]=n,!0):s!==X&&k(s,t)?(s[t]=n,!0):k(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let c;return!!n[o]||e!==X&&k(e,o)||Cn(t,o)||(c=i[0])&&k(c,o)||k(s,o)||k(Lt,o)||k(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:k(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Ss(e){return D(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Un=!0;function Uo(e){const t=zr(e),n=e.proxy,s=e.ctx;Un=!1,t.beforeCreate&&Rs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:c,provide:l,inject:d,created:a,beforeMount:h,mounted:g,beforeUpdate:m,updated:O,activated:A,deactivated:j,beforeDestroy:N,beforeUnmount:M,destroyed:H,unmounted:T,render:z,renderTracked:se,renderTriggered:Z,errorCaptured:Se,serverPrefetch:ke,expose:Re,inheritAttrs:qe,components:st,directives:Pe,filters:St}=t;if(d&&Vo(d,s,null),o)for(const G in o){const V=o[G];B(V)&&(s[G]=V.bind(n))}if(r){const G=r.call(n,n);ee(G)&&(e.data=mn(G))}if(Un=!0,i)for(const G in i){const V=i[G],$e=B(V)?V.bind(n,n):B(V.get)?V.get.bind(n,n):He,Ge=!B(V)&&B(V.set)?V.set.bind(n):He,Ce=be({get:$e,set:Ge});Object.defineProperty(s,G,{enumerable:!0,configurable:!0,get:()=>Ce.value,set:ae=>Ce.value=ae})}if(c)for(const G in c)Gr(c[G],s,n,G);if(l){const G=B(l)?l.call(n):l;Reflect.ownKeys(G).forEach(V=>{en(V,G[V])})}a&&Rs(a,e,"c");function te(G,V){D(V)?V.forEach($e=>G($e.bind(n))):V&&G(V.bind(n))}if(te(To,h),te(Io,g),te(Mo,m),te(Fo,O),te(Co,A),te(Oo,j),te(Do,Se),te($o,se),te(Lo,Z),te(No,M),te(qr,T),te(Ho,ke),D(Re))if(Re.length){const G=e.exposed||(e.exposed={});Re.forEach(V=>{Object.defineProperty(G,V,{get:()=>n[V],set:$e=>n[V]=$e})})}else e.exposed||(e.exposed={});z&&e.render===He&&(e.render=z),qe!=null&&(e.inheritAttrs=qe),st&&(e.components=st),Pe&&(e.directives=Pe),ke&&Kr(e)}function Vo(e,t,n=He){D(e)&&(e=Vn(e));for(const s in e){const r=e[s];let i;ee(r)?"default"in r?i=Ke(r.from||s,r.default,!0):i=Ke(r.from||s):i=Ke(r),ie(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Rs(e,t,n){Le(D(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Gr(e,t,n,s){let r=s.includes(".")?ci(n,s):()=>n[s];if(ne(e)){const i=t[e];B(i)&&tn(r,i)}else if(B(e))tn(r,e.bind(n));else if(ee(e))if(D(e))e.forEach(i=>Gr(i,t,n,s));else{const i=B(e.handler)?e.handler.bind(n):t[e.handler];B(i)&&tn(r,i,e)}}function zr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,c=i.get(t);let l;return c?l=c:!r.length&&!n&&!s?l=t:(l={},r.length&&r.forEach(d=>fn(l,d,o,!0)),fn(l,t,o)),ee(t)&&i.set(t,l),l}function fn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&fn(e,i,n,!0),r&&r.forEach(o=>fn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const c=Ko[o]||n&&n[o];e[o]=c?c(e[o],t[o]):t[o]}return e}const Ko={data:Ps,props:Cs,emits:Cs,methods:At,computed:At,beforeCreate:le,created:le,beforeMount:le,mounted:le,beforeUpdate:le,updated:le,beforeDestroy:le,beforeUnmount:le,destroyed:le,unmounted:le,activated:le,deactivated:le,errorCaptured:le,serverPrefetch:le,components:At,directives:At,watch:ko,provide:Ps,inject:Wo};function Ps(e,t){return t?e?function(){return oe(B(e)?e.call(this,this):e,B(t)?t.call(this,this):t)}:t:e}function Wo(e,t){return At(Vn(e),Vn(t))}function Vn(e){if(D(e)){const t={};for(let n=0;n1)return n&&B(t)?t.call(s&&s.proxy):t}}const Yr={},Jr=()=>Object.create(Yr),Xr=e=>Object.getPrototypeOf(e)===Yr;function zo(e,t,n,s=!1){const r={},i=Jr();e.propsDefaults=Object.create(null),Zr(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Tr(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Qo(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,c=W(r),[l]=e.propsOptions;let d=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{l=!0;const[g,m]=ei(h,t,!0);oe(o,g),m&&c.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!l)return ee(e)&&s.set(e,_t),_t;if(D(i))for(let a=0;ae[0]==="_"||e==="$stable",as=e=>D(e)?e.map(Fe):[Fe(e)],Jo=(e,t,n)=>{if(t._n)return t;const s=So((...r)=>as(t(...r)),n);return s._c=!1,s},ni=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ti(r))continue;const i=e[r];if(B(i))t[r]=Jo(r,i,s);else if(i!=null){const o=as(i);t[r]=()=>o}}},si=(e,t)=>{const n=as(t);e.slots.default=()=>n},ri=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Xo=(e,t,n)=>{const s=e.slots=Jr();if(e.vnode.shapeFlag&32){const r=t._;r?(ri(s,t,n),n&&dr(s,"_",r,!0)):ni(t,s)}else t&&si(e,t)},Zo=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=X;if(s.shapeFlag&32){const c=t._;c?n&&c===1?i=!1:ri(r,t,n):(i=!t.$stable,ni(t,r)),o=t}else t&&(si(e,t),o={default:1});if(i)for(const c in r)!ti(c)&&o[c]==null&&delete r[c]},ge=dl;function el(e){return tl(e)}function tl(e,t){const n=gn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:c,createComment:l,setText:d,setElementText:a,parentNode:h,nextSibling:g,setScopeId:m=He,insertStaticContent:O}=e,A=(f,u,p,_=null,b=null,y=null,S=void 0,w=null,E=!!u.dynamicChildren)=>{if(f===u)return;f&&!Ct(f,u)&&(_=v(f),ae(f,b,y,!0),f=null),u.patchFlag===-2&&(E=!1,u.dynamicChildren=null);const{type:x,ref:L,shapeFlag:P}=u;switch(x){case bn:j(f,u,p,_);break;case Kt:N(f,u,p,_);break;case An:f==null&&M(u,p,_,S);break;case Ue:st(f,u,p,_,b,y,S,w,E);break;default:P&1?z(f,u,p,_,b,y,S,w,E):P&6?Pe(f,u,p,_,b,y,S,w,E):(P&64||P&128)&&x.process(f,u,p,_,b,y,S,w,E,I)}L!=null&&b&&cn(L,f&&f.ref,y,u||f,!u)},j=(f,u,p,_)=>{if(f==null)s(u.el=c(u.children),p,_);else{const b=u.el=f.el;u.children!==f.children&&d(b,u.children)}},N=(f,u,p,_)=>{f==null?s(u.el=l(u.children||""),p,_):u.el=f.el},M=(f,u,p,_)=>{[f.el,f.anchor]=O(f.children,u,p,_,f.el,f.anchor)},H=({el:f,anchor:u},p,_)=>{let b;for(;f&&f!==u;)b=g(f),s(f,p,_),f=b;s(u,p,_)},T=({el:f,anchor:u})=>{let p;for(;f&&f!==u;)p=g(f),r(f),f=p;r(u)},z=(f,u,p,_,b,y,S,w,E)=>{u.type==="svg"?S="svg":u.type==="math"&&(S="mathml"),f==null?se(u,p,_,b,y,S,w,E):ke(f,u,b,y,S,w,E)},se=(f,u,p,_,b,y,S,w)=>{let E,x;const{props:L,shapeFlag:P,transition:F,dirs:$}=f;if(E=f.el=o(f.type,y,L&&L.is,L),P&8?a(E,f.children):P&16&&Se(f.children,E,null,_,b,On(f,y),S,w),$&&rt(f,null,_,"created"),Z(E,f,f.scopeId,S,_),L){for(const Y in L)Y!=="value"&&!It(Y)&&i(E,Y,null,L[Y],y,_);"value"in L&&i(E,"value",null,L.value,y),(x=L.onVnodeBeforeMount)&&Ie(x,_,f)}$&&rt(f,null,_,"beforeMount");const U=nl(b,F);U&&F.beforeEnter(E),s(E,u,p),((x=L&&L.onVnodeMounted)||U||$)&&ge(()=>{x&&Ie(x,_,f),U&&F.enter(E),$&&rt(f,null,_,"mounted")},b)},Z=(f,u,p,_,b)=>{if(p&&m(f,p),_)for(let y=0;y<_.length;y++)m(f,_[y]);if(b){let y=b.subTree;if(u===y||ui(y.type)&&(y.ssContent===u||y.ssFallback===u)){const S=b.vnode;Z(f,S,S.scopeId,S.slotScopeIds,b.parent)}}},Se=(f,u,p,_,b,y,S,w,E=0)=>{for(let x=E;x{const w=u.el=f.el;let{patchFlag:E,dynamicChildren:x,dirs:L}=u;E|=f.patchFlag&16;const P=f.props||X,F=u.props||X;let $;if(p&&it(p,!1),($=F.onVnodeBeforeUpdate)&&Ie($,p,u,f),L&&rt(u,f,p,"beforeUpdate"),p&&it(p,!0),(P.innerHTML&&F.innerHTML==null||P.textContent&&F.textContent==null)&&a(w,""),x?Re(f.dynamicChildren,x,w,p,_,On(u,b),y):S||V(f,u,w,null,p,_,On(u,b),y,!1),E>0){if(E&16)qe(w,P,F,p,b);else if(E&2&&P.class!==F.class&&i(w,"class",null,F.class,b),E&4&&i(w,"style",P.style,F.style,b),E&8){const U=u.dynamicProps;for(let Y=0;Y{$&&Ie($,p,u,f),L&&rt(u,f,p,"updated")},_)},Re=(f,u,p,_,b,y,S)=>{for(let w=0;w{if(u!==p){if(u!==X)for(const y in u)!It(y)&&!(y in p)&&i(f,y,u[y],null,b,_);for(const y in p){if(It(y))continue;const S=p[y],w=u[y];S!==w&&y!=="value"&&i(f,y,w,S,b,_)}"value"in p&&i(f,"value",u.value,p.value,b)}},st=(f,u,p,_,b,y,S,w,E)=>{const x=u.el=f?f.el:c(""),L=u.anchor=f?f.anchor:c("");let{patchFlag:P,dynamicChildren:F,slotScopeIds:$}=u;$&&(w=w?w.concat($):$),f==null?(s(x,p,_),s(L,p,_),Se(u.children||[],p,L,b,y,S,w,E)):P>0&&P&64&&F&&f.dynamicChildren?(Re(f.dynamicChildren,F,p,b,y,S,w),(u.key!=null||b&&u===b.subTree)&&ii(f,u,!0)):V(f,u,p,L,b,y,S,w,E)},Pe=(f,u,p,_,b,y,S,w,E)=>{u.slotScopeIds=w,f==null?u.shapeFlag&512?b.ctx.activate(u,p,_,S,E):St(u,p,_,b,y,S,E):at(f,u,E)},St=(f,u,p,_,b,y,S)=>{const w=f.component=El(f,_,b);if(Wr(f)&&(w.ctx.renderer=I),wl(w,!1,S),w.asyncDep){if(b&&b.registerDep(w,te,S),!f.el){const E=w.subTree=ye(Kt);N(null,E,u,p)}}else te(w,f,u,p,b,y,S)},at=(f,u,p)=>{const _=u.component=f.component;if(al(f,u,p))if(_.asyncDep&&!_.asyncResolved){G(_,u,p);return}else _.next=u,_.update();else u.el=f.el,_.vnode=u},te=(f,u,p,_,b,y,S)=>{const w=()=>{if(f.isMounted){let{next:P,bu:F,u:$,parent:U,vnode:Y}=f;{const Ae=oi(f);if(Ae){P&&(P.el=Y.el,G(f,P,S)),Ae.asyncDep.then(()=>{f.isUnmounted||w()});return}}let q=P,de;it(f,!1),P?(P.el=Y.el,G(f,P,S)):P=Y,F&&wn(F),(de=P.props&&P.props.onVnodeBeforeUpdate)&&Ie(de,U,P,Y),it(f,!0);const he=Ts(f),Oe=f.subTree;f.subTree=he,A(Oe,he,h(Oe.el),v(Oe),f,b,y),P.el=he.el,q===null&&hl(f,he.el),$&&ge($,b),(de=P.props&&P.props.onVnodeUpdated)&&ge(()=>Ie(de,U,P,Y),b)}else{let P;const{el:F,props:$}=u,{bm:U,m:Y,parent:q,root:de,type:he}=f,Oe=Ht(u);it(f,!1),U&&wn(U),!Oe&&(P=$&&$.onVnodeBeforeMount)&&Ie(P,q,u),it(f,!0);{de.ce&&de.ce._injectChildStyle(he);const Ae=f.subTree=Ts(f);A(null,Ae,p,_,f,b,y),u.el=Ae.el}if(Y&&ge(Y,b),!Oe&&(P=$&&$.onVnodeMounted)){const Ae=u;ge(()=>Ie(P,q,Ae),b)}(u.shapeFlag&256||q&&Ht(q.vnode)&&q.vnode.shapeFlag&256)&&f.a&&ge(f.a,b),f.isMounted=!0,u=p=_=null}};f.scope.on();const E=f.effect=new mr(w);f.scope.off();const x=f.update=E.run.bind(E),L=f.job=E.runIfDirty.bind(E);L.i=f,L.id=f.uid,E.scheduler=()=>fs(L),it(f,!0),x()},G=(f,u,p)=>{u.component=f;const _=f.vnode.props;f.vnode=u,f.next=null,Qo(f,u.props,_,p),Zo(f,u.children,p),tt(),ws(f),nt()},V=(f,u,p,_,b,y,S,w,E=!1)=>{const x=f&&f.children,L=f?f.shapeFlag:0,P=u.children,{patchFlag:F,shapeFlag:$}=u;if(F>0){if(F&128){Ge(x,P,p,_,b,y,S,w,E);return}else if(F&256){$e(x,P,p,_,b,y,S,w,E);return}}$&8?(L&16&&ve(x,b,y),P!==x&&a(p,P)):L&16?$&16?Ge(x,P,p,_,b,y,S,w,E):ve(x,b,y,!0):(L&8&&a(p,""),$&16&&Se(P,p,_,b,y,S,w,E))},$e=(f,u,p,_,b,y,S,w,E)=>{f=f||_t,u=u||_t;const x=f.length,L=u.length,P=Math.min(x,L);let F;for(F=0;FL?ve(f,b,y,!0,!1,P):Se(u,p,_,b,y,S,w,E,P)},Ge=(f,u,p,_,b,y,S,w,E)=>{let x=0;const L=u.length;let P=f.length-1,F=L-1;for(;x<=P&&x<=F;){const $=f[x],U=u[x]=E?Ye(u[x]):Fe(u[x]);if(Ct($,U))A($,U,p,null,b,y,S,w,E);else break;x++}for(;x<=P&&x<=F;){const $=f[P],U=u[F]=E?Ye(u[F]):Fe(u[F]);if(Ct($,U))A($,U,p,null,b,y,S,w,E);else break;P--,F--}if(x>P){if(x<=F){const $=F+1,U=$F)for(;x<=P;)ae(f[x],b,y,!0),x++;else{const $=x,U=x,Y=new Map;for(x=U;x<=F;x++){const pe=u[x]=E?Ye(u[x]):Fe(u[x]);pe.key!=null&&Y.set(pe.key,x)}let q,de=0;const he=F-U+1;let Oe=!1,Ae=0;const Rt=new Array(he);for(x=0;x=he){ae(pe,b,y,!0);continue}let Te;if(pe.key!=null)Te=Y.get(pe.key);else for(q=U;q<=F;q++)if(Rt[q-U]===0&&Ct(pe,u[q])){Te=q;break}Te===void 0?ae(pe,b,y,!0):(Rt[Te-U]=x+1,Te>=Ae?Ae=Te:Oe=!0,A(pe,u[Te],p,null,b,y,S,w,E),de++)}const vs=Oe?sl(Rt):_t;for(q=vs.length-1,x=he-1;x>=0;x--){const pe=U+x,Te=u[pe],ys=pe+1{const{el:y,type:S,transition:w,children:E,shapeFlag:x}=f;if(x&6){Ce(f.component.subTree,u,p,_);return}if(x&128){f.suspense.move(u,p,_);return}if(x&64){S.move(f,u,p,I);return}if(S===Ue){s(y,u,p);for(let P=0;Pw.enter(y),b);else{const{leave:P,delayLeave:F,afterLeave:$}=w,U=()=>s(y,u,p),Y=()=>{P(y,()=>{U(),$&&$()})};F?F(y,U,Y):Y()}else s(y,u,p)},ae=(f,u,p,_=!1,b=!1)=>{const{type:y,props:S,ref:w,children:E,dynamicChildren:x,shapeFlag:L,patchFlag:P,dirs:F,cacheIndex:$}=f;if(P===-2&&(b=!1),w!=null&&cn(w,null,p,f,!0),$!=null&&(u.renderCache[$]=void 0),L&256){u.ctx.deactivate(f);return}const U=L&1&&F,Y=!Ht(f);let q;if(Y&&(q=S&&S.onVnodeBeforeUnmount)&&Ie(q,u,f),L&6)Yt(f.component,p,_);else{if(L&128){f.suspense.unmount(p,_);return}U&&rt(f,null,u,"beforeUnmount"),L&64?f.type.remove(f,u,p,I,_):x&&!x.hasOnce&&(y!==Ue||P>0&&P&64)?ve(x,u,p,!1,!0):(y===Ue&&P&384||!b&&L&16)&&ve(E,u,p),_&&ht(f)}(Y&&(q=S&&S.onVnodeUnmounted)||U)&&ge(()=>{q&&Ie(q,u,f),U&&rt(f,null,u,"unmounted")},p)},ht=f=>{const{type:u,el:p,anchor:_,transition:b}=f;if(u===Ue){dt(p,_);return}if(u===An){T(f);return}const y=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(f.shapeFlag&1&&b&&!b.persisted){const{leave:S,delayLeave:w}=b,E=()=>S(p,y);w?w(f.el,y,E):E()}else y()},dt=(f,u)=>{let p;for(;f!==u;)p=g(f),r(f),f=p;r(u)},Yt=(f,u,p)=>{const{bum:_,scope:b,job:y,subTree:S,um:w,m:E,a:x}=f;As(E),As(x),_&&wn(_),b.stop(),y&&(y.flags|=8,ae(S,f,u,p)),w&&ge(w,u),ge(()=>{f.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},ve=(f,u,p,_=!1,b=!1,y=0)=>{for(let S=y;S{if(f.shapeFlag&6)return v(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const u=g(f.anchor||f.el),p=u&&u[Ro];return p?g(p):u};let C=!1;const R=(f,u,p)=>{f==null?u._vnode&&ae(u._vnode,null,null,!0):A(u._vnode||null,f,u,null,null,null,p),u._vnode=f,C||(C=!0,ws(),jr(),C=!1)},I={p:A,um:ae,m:Ce,r:ht,mt:St,mc:Se,pc:V,pbc:Re,n:v,o:e};return{render:R,hydrate:void 0,createApp:Go(R)}}function On({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 it({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function nl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ii(e,t,n=!1){const s=e.children,r=t.children;if(D(s)&&D(r))for(let i=0;i>1,e[n[c]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function oi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:oi(t)}function As(e){if(e)for(let t=0;tKe(rl);function tn(e,t,n){return li(e,t,n)}function li(e,t,n=X){const{immediate:s,deep:r,flush:i,once:o}=n,c=oe({},n),l=t&&s||!t&&i!=="post";let d;if(kt){if(i==="sync"){const m=il();d=m.__watcherHandles||(m.__watcherHandles=[])}else if(!l){const m=()=>{};return m.stop=He,m.resume=He,m.pause=He,m}}const a=ue;c.call=(m,O,A)=>Le(m,a,O,A);let h=!1;i==="post"?c.scheduler=m=>{ge(m,a&&a.suspense)}:i!=="sync"&&(h=!0,c.scheduler=(m,O)=>{O?m():fs(m)}),c.augmentJob=m=>{t&&(m.flags|=4),h&&(m.flags|=2,a&&(m.id=a.uid,m.i=a))};const g=bo(e,t,c);return kt&&(d?d.push(g):l&&g()),g}function ol(e,t,n){const s=this.proxy,r=ne(e)?e.includes(".")?ci(s,e):()=>s[e]:e.bind(s,s);let i;B(t)?i=t:(i=t.handler,n=t);const o=Qt(this),c=li(r,i.bind(s),n);return o(),c}function ci(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${et(t)}Modifiers`]||e[`${ut(t)}Modifiers`];function cl(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||X;let r=n;const i=t.startsWith("update:"),o=i&&ll(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>ne(a)?a.trim():a)),o.number&&(r=n.map(Bi)));let c,l=s[c=En(t)]||s[c=En(et(t))];!l&&i&&(l=s[c=En(ut(t))]),l&&Le(l,e,6,r);const d=s[c+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Le(d,e,6,r)}}function fi(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},c=!1;if(!B(e)){const l=d=>{const a=fi(d,t,!0);a&&(c=!0,oe(o,a))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!c?(ee(e)&&s.set(e,null),null):(D(i)?i.forEach(l=>o[l]=null):oe(o,i),ee(e)&&s.set(e,o),o)}function yn(e,t){return!e||!hn(t)?!1:(t=t.slice(2).replace(/Once$/,""),k(e,t[0].toLowerCase()+t.slice(1))||k(e,ut(t))||k(e,t))}function Ts(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:c,emit:l,render:d,renderCache:a,props:h,data:g,setupState:m,ctx:O,inheritAttrs:A}=e,j=ln(e);let N,M;try{if(n.shapeFlag&4){const T=r||s,z=T;N=Fe(d.call(z,T,a,h,m,g,O)),M=c}else{const T=t;N=Fe(T.length>1?T(h,{attrs:c,slots:o,emit:l}):T(h,null)),M=t.props?c:fl(c)}}catch(T){$t.length=0,_n(T,e,1),N=ye(Kt)}let H=N;if(M&&A!==!1){const T=Object.keys(M),{shapeFlag:z}=H;T.length&&z&7&&(i&&T.some(Yn)&&(M=ul(M,i)),H=bt(H,M,!1,!0))}return n.dirs&&(H=bt(H,null,!1,!0),H.dirs=H.dirs?H.dirs.concat(n.dirs):n.dirs),n.transition&&us(H,n.transition),N=H,ln(j),N}const fl=e=>{let t;for(const n in e)(n==="class"||n==="style"||hn(n))&&((t||(t={}))[n]=e[n]);return t},ul=(e,t)=>{const n={};for(const s in e)(!Yn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function al(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:c,patchFlag:l}=t,d=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return s?Is(s,o,d):!!o;if(l&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function dl(e,t){t&&t.pendingBranch?D(e)?t.effects.push(...e):t.effects.push(e):wo(e)}const Ue=Symbol.for("v-fgt"),bn=Symbol.for("v-txt"),Kt=Symbol.for("v-cmt"),An=Symbol.for("v-stc"),$t=[];let _e=null;function ai(e=!1){$t.push(_e=e?null:[])}function pl(){$t.pop(),_e=$t[$t.length-1]||null}let Wt=1;function Ms(e,t=!1){Wt+=e,e<0&&_e&&t&&(_e.hasOnce=!0)}function gl(e){return e.dynamicChildren=Wt>0?_e||_t:null,pl(),Wt>0&&_e&&_e.push(e),e}function hi(e,t,n,s,r,i){return gl(hs(e,t,n,s,r,i,!0))}function un(e){return e?e.__v_isVNode===!0:!1}function Ct(e,t){return e.type===t.type&&e.key===t.key}const di=({key:e})=>e??null,nn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||ie(e)||B(e)?{i:Ne,r:e,k:t,f:!!n}:e:null);function hs(e,t=null,n=null,s=0,r=null,i=e===Ue?0:1,o=!1,c=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&di(t),ref:t&&nn(t),scopeId:Ur,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:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ne};return c?(ds(l,n),i&128&&e.normalize(l)):n&&(l.shapeFlag|=ne(n)?8:16),Wt>0&&!o&&_e&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&_e.push(l),l}const ye=ml;function ml(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===jo)&&(e=Kt),un(e)){const c=bt(e,t,!0);return n&&ds(c,n),Wt>0&&!i&&_e&&(c.shapeFlag&6?_e[_e.indexOf(e)]=c:_e.push(c)),c.patchFlag=-2,c}if(Cl(e)&&(e=e.__vccOpts),t){t=_l(t);let{class:c,style:l}=t;c&&!ne(c)&&(t.class=es(c)),ee(l)&&(cs(l)&&!D(l)&&(l=oe({},l)),t.style=Zn(l))}const o=ne(e)?1:ui(e)?128:Po(e)?64:ee(e)?4:B(e)?2:0;return hs(e,t,n,s,r,o,i,!0)}function _l(e){return e?cs(e)||Xr(e)?oe({},e):e:null}function bt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:c,transition:l}=e,d=t?yl(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&di(d),ref:t&&t.ref?n&&i?D(i)?i.concat(nn(t)):[i,nn(t)]:nn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:c,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ue?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&bt(e.ssContent),ssFallback:e.ssFallback&&bt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&s&&us(a,l.clone(a)),a}function vl(e=" ",t=0){return ye(bn,null,e,t)}function Fe(e){return e==null||typeof e=="boolean"?ye(Kt):D(e)?ye(Ue,null,e.slice()):un(e)?Ye(e):ye(bn,null,String(e))}function Ye(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:bt(e)}function ds(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(D(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ds(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Xr(t)?t._ctx=Ne:r===3&&Ne&&(Ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:Ne},n=32):(t=String(t),s&64?(n=16,t=[vl(t)]):n=8);e.children=t,e.shapeFlag|=n}function yl(...e){const t={};for(let n=0;n{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};an=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Wn=t("__VUE_SSR_SETTERS__",n=>kt=n)}const Qt=e=>{const t=ue;return an(e),e.scope.on(),()=>{e.scope.off(),an(t)}},Fs=()=>{ue&&ue.scope.off(),an(null)};function pi(e){return e.vnode.shapeFlag&4}let kt=!1;function wl(e,t=!1,n=!1){t&&Wn(t);const{props:s,children:r}=e.vnode,i=pi(e);zo(e,s,i,t),Xo(e,r,n);const o=i?Sl(e,t):void 0;return t&&Wn(!1),o}function Sl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Bo);const{setup:s}=n;if(s){tt();const r=e.setupContext=s.length>1?Pl(e):null,i=Qt(e),o=zt(s,e,0,[e.props,r]),c=ar(o);if(nt(),i(),(c||e.sp)&&!Ht(e)&&Kr(e),c){if(o.then(Fs,Fs),t)return o.then(l=>{Ns(e,l)}).catch(l=>{_n(l,e,0)});e.asyncDep=o}else Ns(e,o)}else gi(e)}function Ns(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ee(t)&&(e.setupState=Hr(t)),gi(e)}function gi(e,t,n){const s=e.type;e.render||(e.render=s.render||He);{const r=Qt(e);tt();try{Uo(e)}finally{nt(),r()}}}const Rl={get(e,t){return re(e,"get",""),e[t]}};function Pl(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Rl),slots:e.slots,emit:e.emit,expose:t}}function ps(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Hr(Mr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Lt)return Lt[n](e)},has(t,n){return n in t||n in Lt}})):e.proxy}function Cl(e){return B(e)&&"__vccOpts"in e}const be=(e,t)=>vo(e,t,kt);function mi(e,t,n){const s=arguments.length;return s===2?ee(t)&&!D(t)?un(t)?ye(e,null,[t]):ye(e,t):ye(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&un(n)&&(n=[n]),ye(e,t,n))}const Ol="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let kn;const Hs=typeof window<"u"&&window.trustedTypes;if(Hs)try{kn=Hs.createPolicy("vue",{createHTML:e=>e})}catch{}const _i=kn?e=>kn.createHTML(e):e=>e,Al="http://www.w3.org/2000/svg",Tl="http://www.w3.org/1998/Math/MathML",Be=typeof document<"u"?document:null,Ls=Be&&Be.createElement("template"),Il={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Be.createElementNS(Al,e):t==="mathml"?Be.createElementNS(Tl,e):n?Be.createElement(e,{is:n}):Be.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Be.createTextNode(e),createComment:e=>Be.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Be.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Ls.innerHTML=_i(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const c=Ls.content;if(s==="svg"||s==="mathml"){const l=c.firstChild;for(;l.firstChild;)c.appendChild(l.firstChild);c.removeChild(l)}t.insertBefore(c,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ml=Symbol("_vtc");function Fl(e,t,n){const s=e[Ml];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const $s=Symbol("_vod"),Nl=Symbol("_vsh"),Hl=Symbol(""),Ll=/(^|;)\s*display\s*:/;function $l(e,t,n){const s=e.style,r=ne(n);let i=!1;if(n&&!r){if(t)if(ne(t))for(const o of t.split(";")){const c=o.slice(0,o.indexOf(":")).trim();n[c]==null&&sn(s,c,"")}else for(const o in t)n[o]==null&&sn(s,o,"");for(const o in n)o==="display"&&(i=!0),sn(s,o,n[o])}else if(r){if(t!==n){const o=s[Hl];o&&(n+=";"+o),s.cssText=n,i=Ll.test(n)}}else t&&e.removeAttribute("style");$s in e&&(e[$s]=i?s.display:"",e[Nl]&&(s.display="none"))}const Ds=/\s*!important$/;function sn(e,t,n){if(D(n))n.forEach(s=>sn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Dl(e,t);Ds.test(n)?e.setProperty(ut(s),n.replace(Ds,""),"important"):e[s]=n}}const js=["Webkit","Moz","ms"],Tn={};function Dl(e,t){const n=Tn[t];if(n)return n;let s=et(t);if(s!=="filter"&&s in e)return Tn[t]=s;s=hr(s);for(let r=0;rIn||(Kl.then(()=>In=0),In=Date.now());function kl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Le(ql(s,n.value),t,5,[s])};return n.value=e,n.attached=Wl(),n}function ql(e,t){if(D(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ks=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Gl=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Fl(e,s,o):t==="style"?$l(e,n,s):hn(t)?Yn(t)||Ul(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):zl(e,t,s,o))?(Vs(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Us(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ne(s))?Vs(e,et(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Us(e,t,s,o))};function zl(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&ks(t)&&B(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||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 ks(t)&&ne(n)?!1:t in e}const Ql=oe({patchProp:Gl},Il);let qs;function Yl(){return qs||(qs=el(Ql))}const Jl=(...e)=>{const t=Yl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Zl(s);if(!r)return;const i=t._component;!B(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Xl(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function Xl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Zl(e){return ne(e)?document.querySelector(e):e}/*! + * pinia v3.0.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const ec=Symbol();var Gs;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Gs||(Gs={}));function tc(){const e=Gi(!0),t=e.run(()=>Fr({}));let n=[],s=[];const r=Mr({install(i){r._a=i,i.provide(ec,r),i.config.globalProperties.$pinia=r,s.forEach(o=>n.push(o)),s=[]},use(i){return this._a?n.push(i):s.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}/*! + * vue-router v4.5.0 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */const mt=typeof document<"u";function vi(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function nc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&vi(e.default)}const K=Object.assign;function Mn(e,t){const n={};for(const s in t){const r=t[s];n[s]=we(r)?r.map(e):e(r)}return n}const Dt=()=>{},we=Array.isArray,yi=/#/g,sc=/&/g,rc=/\//g,ic=/=/g,oc=/\?/g,bi=/\+/g,lc=/%5B/g,cc=/%5D/g,xi=/%5E/g,fc=/%60/g,Ei=/%7B/g,uc=/%7C/g,wi=/%7D/g,ac=/%20/g;function gs(e){return encodeURI(""+e).replace(uc,"|").replace(lc,"[").replace(cc,"]")}function hc(e){return gs(e).replace(Ei,"{").replace(wi,"}").replace(xi,"^")}function qn(e){return gs(e).replace(bi,"%2B").replace(ac,"+").replace(yi,"%23").replace(sc,"%26").replace(fc,"`").replace(Ei,"{").replace(wi,"}").replace(xi,"^")}function dc(e){return qn(e).replace(ic,"%3D")}function pc(e){return gs(e).replace(yi,"%23").replace(oc,"%3F")}function gc(e){return e==null?"":pc(e).replace(rc,"%2F")}function qt(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const mc=/\/$/,_c=e=>e.replace(mc,"");function Fn(e,t,n="/"){let s,r={},i="",o="";const c=t.indexOf("#");let l=t.indexOf("?");return c=0&&(l=-1),l>-1&&(s=t.slice(0,l),i=t.slice(l+1,c>-1?c:t.length),r=e(i)),c>-1&&(s=s||t.slice(0,c),o=t.slice(c,t.length)),s=xc(s??t,n),{fullPath:s+(i&&"?")+i+o,path:s,query:r,hash:qt(o)}}function vc(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function zs(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function yc(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&xt(t.matched[s],n.matched[r])&&Si(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function xt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Si(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!bc(e[n],t[n]))return!1;return!0}function bc(e,t){return we(e)?Qs(e,t):we(t)?Qs(t,e):e===t}function Qs(e,t){return we(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function xc(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let i=n.length-1,o,c;for(o=0;o1&&i--;else break;return n.slice(0,i).join("/")+"/"+s.slice(o).join("/")}const ze={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Gt;(function(e){e.pop="pop",e.push="push"})(Gt||(Gt={}));var jt;(function(e){e.back="back",e.forward="forward",e.unknown=""})(jt||(jt={}));function Ec(e){if(!e)if(mt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),_c(e)}const wc=/^[^#]+#/;function Sc(e,t){return e.replace(wc,"#")+t}function Rc(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const xn=()=>({left:window.scrollX,top:window.scrollY});function Pc(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Rc(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Ys(e,t){return(history.state?history.state.position-t:-1)+e}const Gn=new Map;function Cc(e,t){Gn.set(e,t)}function Oc(e){const t=Gn.get(e);return Gn.delete(e),t}let Ac=()=>location.protocol+"//"+location.host;function Ri(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let c=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(c);return l[0]!=="/"&&(l="/"+l),zs(l,"")}return zs(n,e)+s+r}function Tc(e,t,n,s){let r=[],i=[],o=null;const c=({state:g})=>{const m=Ri(e,location),O=n.value,A=t.value;let j=0;if(g){if(n.value=m,t.value=g,o&&o===O){o=null;return}j=A?g.position-A.position:0}else s(m);r.forEach(N=>{N(n.value,O,{delta:j,type:Gt.pop,direction:j?j>0?jt.forward:jt.back:jt.unknown})})};function l(){o=n.value}function d(g){r.push(g);const m=()=>{const O=r.indexOf(g);O>-1&&r.splice(O,1)};return i.push(m),m}function a(){const{history:g}=window;g.state&&g.replaceState(K({},g.state,{scroll:xn()}),"")}function h(){for(const g of i)g();i=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",a)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",a,{passive:!0}),{pauseListeners:l,listen:d,destroy:h}}function Js(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?xn():null}}function Ic(e){const{history:t,location:n}=window,s={value:Ri(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(l,d,a){const h=e.indexOf("#"),g=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+l:Ac()+e+l;try{t[a?"replaceState":"pushState"](d,"",g),r.value=d}catch(m){console.error(m),n[a?"replace":"assign"](g)}}function o(l,d){const a=K({},t.state,Js(r.value.back,l,r.value.forward,!0),d,{position:r.value.position});i(l,a,!0),s.value=l}function c(l,d){const a=K({},r.value,t.state,{forward:l,scroll:xn()});i(a.current,a,!0);const h=K({},Js(s.value,l,null),{position:a.position+1},d);i(l,h,!1),s.value=l}return{location:s,state:r,push:c,replace:o}}function Mc(e){e=Ec(e);const t=Ic(e),n=Tc(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=K({location:"",base:e,go:s,createHref:Sc.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Fc(e){return typeof e=="string"||e&&typeof e=="object"}function Pi(e){return typeof e=="string"||typeof e=="symbol"}const Ci=Symbol("");var Xs;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Xs||(Xs={}));function Et(e,t){return K(new Error,{type:e,[Ci]:!0},t)}function je(e,t){return e instanceof Error&&Ci in e&&(t==null||!!(e.type&t))}const Zs="[^/]+?",Nc={sensitive:!1,strict:!1,start:!0,end:!0},Hc=/[.+*?^${}()[\]/\\]/g;function Lc(e,t){const n=K({},Nc,t),s=[];let r=n.start?"^":"";const i=[];for(const d of e){const a=d.length?[]:[90];n.strict&&!d.length&&(r+="/");for(let h=0;ht.length?t.length===1&&t[0]===80?1:-1:0}function Oi(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Dc={type:0,value:""},jc=/[a-zA-Z0-9_]/;function Bc(e){if(!e)return[[]];if(e==="/")return[[Dc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${d}": ${m}`)}let n=0,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let c=0,l,d="",a="";function h(){d&&(n===0?i.push({type:0,value:d}):n===1||n===2||n===3?(i.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${d}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:d,regexp:a,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),d="")}function g(){d+=l}for(;c{o(H)}:Dt}function o(h){if(Pi(h)){const g=s.get(h);g&&(s.delete(h),n.splice(n.indexOf(g),1),g.children.forEach(o),g.alias.forEach(o))}else{const g=n.indexOf(h);g>-1&&(n.splice(g,1),h.record.name&&s.delete(h.record.name),h.children.forEach(o),h.alias.forEach(o))}}function c(){return n}function l(h){const g=kc(h,n);n.splice(g,0,h),h.record.name&&!sr(h)&&s.set(h.record.name,h)}function d(h,g){let m,O={},A,j;if("name"in h&&h.name){if(m=s.get(h.name),!m)throw Et(1,{location:h});j=m.record.name,O=K(tr(g.params,m.keys.filter(H=>!H.optional).concat(m.parent?m.parent.keys.filter(H=>H.optional):[]).map(H=>H.name)),h.params&&tr(h.params,m.keys.map(H=>H.name))),A=m.stringify(O)}else if(h.path!=null)A=h.path,m=n.find(H=>H.re.test(A)),m&&(O=m.parse(A),j=m.record.name);else{if(m=g.name?s.get(g.name):n.find(H=>H.re.test(g.path)),!m)throw Et(1,{location:h,currentLocation:g});j=m.record.name,O=K({},g.params,h.params),A=m.stringify(O)}const N=[];let M=m;for(;M;)N.unshift(M.record),M=M.parent;return{name:j,path:A,params:O,matched:N,meta:Wc(N)}}e.forEach(h=>i(h));function a(){n.length=0,s.clear()}return{addRoute:i,resolve:d,removeRoute:o,clearRoutes:a,getRoutes:c,getRecordMatcher:r}}function tr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function nr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Kc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Kc(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function sr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Wc(e){return e.reduce((t,n)=>K(t,n.meta),{})}function rr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function kc(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;Oi(e,t[i])<0?s=i:n=i+1}const r=qc(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function qc(e){let t=e;for(;t=t.parent;)if(Ai(t)&&Oi(e,t)===0)return t}function Ai({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Gc(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ri&&qn(i)):[s&&qn(s)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+n,i!=null&&(t+="="+i))})}return t}function zc(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=we(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Qc=Symbol(""),or=Symbol(""),ms=Symbol(""),Ti=Symbol(""),zn=Symbol("");function Ot(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Je(e,t,n,s,r,i=o=>o()){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((c,l)=>{const d=g=>{g===!1?l(Et(4,{from:n,to:t})):g instanceof Error?l(g):Fc(g)?l(Et(2,{from:t,to:g})):(o&&s.enterCallbacks[r]===o&&typeof g=="function"&&o.push(g),c())},a=i(()=>e.call(s&&s.instances[r],t,n,d));let h=Promise.resolve(a);e.length<3&&(h=h.then(d)),h.catch(g=>l(g))})}function Nn(e,t,n,s,r=i=>i()){const i=[];for(const o of e)for(const c in o.components){let l=o.components[c];if(!(t!=="beforeRouteEnter"&&!o.instances[c]))if(vi(l)){const a=(l.__vccOpts||l)[t];a&&i.push(Je(a,n,s,o,c,r))}else{let d=l();i.push(()=>d.then(a=>{if(!a)throw new Error(`Couldn't resolve component "${c}" at "${o.path}"`);const h=nc(a)?a.default:a;o.mods[c]=a,o.components[c]=h;const m=(h.__vccOpts||h)[t];return m&&Je(m,n,s,o,c,r)()}))}}return i}function lr(e){const t=Ke(ms),n=Ke(Ti),s=be(()=>{const l=ct(e.to);return t.resolve(l)}),r=be(()=>{const{matched:l}=s.value,{length:d}=l,a=l[d-1],h=n.matched;if(!a||!h.length)return-1;const g=h.findIndex(xt.bind(null,a));if(g>-1)return g;const m=cr(l[d-2]);return d>1&&cr(a)===m&&h[h.length-1].path!==m?h.findIndex(xt.bind(null,l[d-2])):g}),i=be(()=>r.value>-1&&ef(n.params,s.value.params)),o=be(()=>r.value>-1&&r.value===n.matched.length-1&&Si(n.params,s.value.params));function c(l={}){if(Zc(l)){const d=t[ct(e.replace)?"replace":"push"](ct(e.to)).catch(Dt);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>d),d}return Promise.resolve()}return{route:s,href:be(()=>s.value.href),isActive:i,isExactActive:o,navigate:c}}function Yc(e){return e.length===1?e[0]:e}const Jc=Vr({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:lr,setup(e,{slots:t}){const n=mn(lr(e)),{options:s}=Ke(ms),r=be(()=>({[fr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[fr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&Yc(t.default(n));return e.custom?i:mi("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),Xc=Jc;function Zc(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 ef(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!we(r)||r.length!==s.length||s.some((i,o)=>i!==r[o]))return!1}return!0}function cr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const fr=(e,t,n)=>e??t??n,tf=Vr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Ke(zn),r=be(()=>e.route||s.value),i=Ke(or,0),o=be(()=>{let d=ct(i);const{matched:a}=r.value;let h;for(;(h=a[d])&&!h.components;)d++;return d}),c=be(()=>r.value.matched[o.value]);en(or,be(()=>o.value+1)),en(Qc,c),en(zn,r);const l=Fr();return tn(()=>[l.value,c.value,e.name],([d,a,h],[g,m,O])=>{a&&(a.instances[h]=d,m&&m!==a&&d&&d===g&&(a.leaveGuards.size||(a.leaveGuards=m.leaveGuards),a.updateGuards.size||(a.updateGuards=m.updateGuards))),d&&a&&(!m||!xt(a,m)||!g)&&(a.enterCallbacks[h]||[]).forEach(A=>A(d))},{flush:"post"}),()=>{const d=r.value,a=e.name,h=c.value,g=h&&h.components[a];if(!g)return ur(n.default,{Component:g,route:d});const m=h.props[a],O=m?m===!0?d.params:typeof m=="function"?m(d):m:null,j=mi(g,K({},O,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(h.instances[a]=null)},ref:l}));return ur(n.default,{Component:j,route:d})||j}}});function ur(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Ii=tf;function nf(e){const t=Vc(e.routes,e),n=e.parseQuery||Gc,s=e.stringifyQuery||ir,r=e.history,i=Ot(),o=Ot(),c=Ot(),l=po(ze);let d=ze;mt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const a=Mn.bind(null,v=>""+v),h=Mn.bind(null,gc),g=Mn.bind(null,qt);function m(v,C){let R,I;return Pi(v)?(R=t.getRecordMatcher(v),I=C):I=v,t.addRoute(I,R)}function O(v){const C=t.getRecordMatcher(v);C&&t.removeRoute(C)}function A(){return t.getRoutes().map(v=>v.record)}function j(v){return!!t.getRecordMatcher(v)}function N(v,C){if(C=K({},C||l.value),typeof v=="string"){const p=Fn(n,v,C.path),_=t.resolve({path:p.path},C),b=r.createHref(p.fullPath);return K(p,_,{params:g(_.params),hash:qt(p.hash),redirectedFrom:void 0,href:b})}let R;if(v.path!=null)R=K({},v,{path:Fn(n,v.path,C.path).path});else{const p=K({},v.params);for(const _ in p)p[_]==null&&delete p[_];R=K({},v,{params:h(p)}),C.params=h(C.params)}const I=t.resolve(R,C),Q=v.hash||"";I.params=a(g(I.params));const f=vc(s,K({},v,{hash:hc(Q),path:I.path})),u=r.createHref(f);return K({fullPath:f,hash:Q,query:s===ir?zc(v.query):v.query||{}},I,{redirectedFrom:void 0,href:u})}function M(v){return typeof v=="string"?Fn(n,v,l.value.path):K({},v)}function H(v,C){if(d!==v)return Et(8,{from:C,to:v})}function T(v){return Z(v)}function z(v){return T(K(M(v),{replace:!0}))}function se(v){const C=v.matched[v.matched.length-1];if(C&&C.redirect){const{redirect:R}=C;let I=typeof R=="function"?R(v):R;return typeof I=="string"&&(I=I.includes("?")||I.includes("#")?I=M(I):{path:I},I.params={}),K({query:v.query,hash:v.hash,params:I.path!=null?{}:v.params},I)}}function Z(v,C){const R=d=N(v),I=l.value,Q=v.state,f=v.force,u=v.replace===!0,p=se(R);if(p)return Z(K(M(p),{state:typeof p=="object"?K({},Q,p.state):Q,force:f,replace:u}),C||R);const _=R;_.redirectedFrom=C;let b;return!f&&yc(s,I,R)&&(b=Et(16,{to:_,from:I}),Ce(I,I,!0,!1)),(b?Promise.resolve(b):Re(_,I)).catch(y=>je(y)?je(y,2)?y:Ge(y):V(y,_,I)).then(y=>{if(y){if(je(y,2))return Z(K({replace:u},M(y.to),{state:typeof y.to=="object"?K({},Q,y.to.state):Q,force:f}),C||_)}else y=st(_,I,!0,u,Q);return qe(_,I,y),y})}function Se(v,C){const R=H(v,C);return R?Promise.reject(R):Promise.resolve()}function ke(v){const C=dt.values().next().value;return C&&typeof C.runWithContext=="function"?C.runWithContext(v):v()}function Re(v,C){let R;const[I,Q,f]=sf(v,C);R=Nn(I.reverse(),"beforeRouteLeave",v,C);for(const p of I)p.leaveGuards.forEach(_=>{R.push(Je(_,v,C))});const u=Se.bind(null,v,C);return R.push(u),ve(R).then(()=>{R=[];for(const p of i.list())R.push(Je(p,v,C));return R.push(u),ve(R)}).then(()=>{R=Nn(Q,"beforeRouteUpdate",v,C);for(const p of Q)p.updateGuards.forEach(_=>{R.push(Je(_,v,C))});return R.push(u),ve(R)}).then(()=>{R=[];for(const p of f)if(p.beforeEnter)if(we(p.beforeEnter))for(const _ of p.beforeEnter)R.push(Je(_,v,C));else R.push(Je(p.beforeEnter,v,C));return R.push(u),ve(R)}).then(()=>(v.matched.forEach(p=>p.enterCallbacks={}),R=Nn(f,"beforeRouteEnter",v,C,ke),R.push(u),ve(R))).then(()=>{R=[];for(const p of o.list())R.push(Je(p,v,C));return R.push(u),ve(R)}).catch(p=>je(p,8)?p:Promise.reject(p))}function qe(v,C,R){c.list().forEach(I=>ke(()=>I(v,C,R)))}function st(v,C,R,I,Q){const f=H(v,C);if(f)return f;const u=C===ze,p=mt?history.state:{};R&&(I||u?r.replace(v.fullPath,K({scroll:u&&p&&p.scroll},Q)):r.push(v.fullPath,Q)),l.value=v,Ce(v,C,R,u),Ge()}let Pe;function St(){Pe||(Pe=r.listen((v,C,R)=>{if(!Yt.listening)return;const I=N(v),Q=se(I);if(Q){Z(K(Q,{replace:!0,force:!0}),I).catch(Dt);return}d=I;const f=l.value;mt&&Cc(Ys(f.fullPath,R.delta),xn()),Re(I,f).catch(u=>je(u,12)?u:je(u,2)?(Z(K(M(u.to),{force:!0}),I).then(p=>{je(p,20)&&!R.delta&&R.type===Gt.pop&&r.go(-1,!1)}).catch(Dt),Promise.reject()):(R.delta&&r.go(-R.delta,!1),V(u,I,f))).then(u=>{u=u||st(I,f,!1),u&&(R.delta&&!je(u,8)?r.go(-R.delta,!1):R.type===Gt.pop&&je(u,20)&&r.go(-1,!1)),qe(I,f,u)}).catch(Dt)}))}let at=Ot(),te=Ot(),G;function V(v,C,R){Ge(v);const I=te.list();return I.length?I.forEach(Q=>Q(v,C,R)):console.error(v),Promise.reject(v)}function $e(){return G&&l.value!==ze?Promise.resolve():new Promise((v,C)=>{at.add([v,C])})}function Ge(v){return G||(G=!v,St(),at.list().forEach(([C,R])=>v?R(v):C()),at.reset()),v}function Ce(v,C,R,I){const{scrollBehavior:Q}=e;if(!mt||!Q)return Promise.resolve();const f=!R&&Oc(Ys(v.fullPath,0))||(I||!R)&&history.state&&history.state.scroll||null;return $r().then(()=>Q(v,C,f)).then(u=>u&&Pc(u)).catch(u=>V(u,v,C))}const ae=v=>r.go(v);let ht;const dt=new Set,Yt={currentRoute:l,listening:!0,addRoute:m,removeRoute:O,clearRoutes:t.clearRoutes,hasRoute:j,getRoutes:A,resolve:N,options:e,push:T,replace:z,go:ae,back:()=>ae(-1),forward:()=>ae(1),beforeEach:i.add,beforeResolve:o.add,afterEach:c.add,onError:te.add,isReady:$e,install(v){const C=this;v.component("RouterLink",Xc),v.component("RouterView",Ii),v.config.globalProperties.$router=C,Object.defineProperty(v.config.globalProperties,"$route",{enumerable:!0,get:()=>ct(l)}),mt&&!ht&&l.value===ze&&(ht=!0,T(r.location).catch(Q=>{}));const R={};for(const Q in ze)Object.defineProperty(R,Q,{get:()=>l.value[Q],enumerable:!0});v.provide(ms,C),v.provide(Ti,Tr(R)),v.provide(zn,l);const I=v.unmount;dt.add(v),v.unmount=function(){dt.delete(v),dt.size<1&&(d=ze,Pe&&Pe(),Pe=null,l.value=ze,ht=!1,G=!1),I()}}};function ve(v){return v.reduce((C,R)=>C.then(()=>ke(R)),Promise.resolve())}return Yt}function sf(e,t){const n=[],s=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;oxt(d,c))?s.push(c):n.push(c));const l=e.matched[o];l&&(t.matched.find(d=>xt(d,l))||r.push(l))}return[n,s,r]}const rf={__name:"App",setup(e){return console.log("app.vue loaded"),(t,n)=>(ai(),hi("div",null,[ye(ct(Ii))]))}},of=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},lf={};function cf(e,t){return ai(),hi("div",null,t[0]||(t[0]=[hs("h1",null,"Home",-1)]))}const ff=of(lf,[["render",cf]]),uf=nf({history:Mc("/"),routes:[{path:"/",name:"home",component:ff}]}),_s=Jl(rf);_s.use(tc());_s.use(uf);_s.mount("#app"); diff --git a/ui/public/assets/index-zqIqfzzx.css b/ui/public/assets/index-zqIqfzzx.css new file mode 100644 index 0000000..37e59bc --- /dev/null +++ b/ui/public/assets/index-zqIqfzzx.css @@ -0,0 +1 @@ +:root{--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-divider-light-1: rgba(60, 60, 60, .29);--vt-c-divider-light-2: rgba(60, 60, 60, .12);--vt-c-divider-dark-1: rgba(84, 84, 84, .65);--vt-c-divider-dark-2: rgba(84, 84, 84, .48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, .66);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, .64)}:root{--color-background: var(--vt-c-white);--color-background-soft: var(--vt-c-white-soft);--color-background-mute: var(--vt-c-white-mute);--color-border: var(--vt-c-divider-light-2);--color-border-hover: var(--vt-c-divider-light-1);--color-heading: var(--vt-c-text-light-1);--color-text: var(--vt-c-text-light-1);--section-gap: 160px}@media (prefers-color-scheme: dark){:root{--color-background: var(--vt-c-black);--color-background-soft: var(--vt-c-black-soft);--color-background-mute: var(--vt-c-black-mute);--color-border: var(--vt-c-divider-dark-2);--color-border-hover: var(--vt-c-divider-dark-1);--color-heading: var(--vt-c-text-dark-1);--color-text: var(--vt-c-text-dark-2)}}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100vh;color:var(--color-text);background:var(--color-background);transition:color .5s,background-color .5s;line-height:1.6;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{max-width:1280px;margin:0 auto;padding:2rem;font-weight:400}a,.green{text-decoration:none;color:#00bd7e;transition:.4s;padding:3px}@media (hover: hover){a:hover{background-color:#00bd7e33}}@media (min-width: 1024px){body{display:flex;place-items:center}#app{display:grid;grid-template-columns:1fr 1fr;padding:0 2rem}} diff --git a/ui/public/index.html b/ui/public/index.html new file mode 100644 index 0000000..a29aefd --- /dev/null +++ b/ui/public/index.html @@ -0,0 +1,14 @@ + + + + + + + Vite + Vue + + + + +
+ + diff --git a/fe/src/App.vue b/ui/src/App.vue similarity index 100% rename from fe/src/App.vue rename to ui/src/App.vue diff --git a/fe/src/assets/img/Macrame-Logo-duo.svg b/ui/src/assets/img/Macrame-Logo-duo.svg similarity index 100% rename from fe/src/assets/img/Macrame-Logo-duo.svg rename to ui/src/assets/img/Macrame-Logo-duo.svg diff --git a/fe/src/assets/img/Macrame-Logo-gradient.svg b/ui/src/assets/img/Macrame-Logo-gradient.svg similarity index 100% rename from fe/src/assets/img/Macrame-Logo-gradient.svg rename to ui/src/assets/img/Macrame-Logo-gradient.svg diff --git a/fe/src/assets/img/Macrame-Logo-white.svg b/ui/src/assets/img/Macrame-Logo-white.svg similarity index 100% rename from fe/src/assets/img/Macrame-Logo-white.svg rename to ui/src/assets/img/Macrame-Logo-white.svg diff --git a/fe/src/assets/img/bg-gradient.svg b/ui/src/assets/img/bg-gradient.svg similarity index 100% rename from fe/src/assets/img/bg-gradient.svg rename to ui/src/assets/img/bg-gradient.svg diff --git a/fe/src/assets/main.css b/ui/src/assets/main.css similarity index 100% rename from fe/src/assets/main.css rename to ui/src/assets/main.css diff --git a/fe/src/assets/style/_content.css b/ui/src/assets/style/_content.css similarity index 100% rename from fe/src/assets/style/_content.css rename to ui/src/assets/style/_content.css diff --git a/fe/src/assets/style/_form.css b/ui/src/assets/style/_form.css similarity index 100% rename from fe/src/assets/style/_form.css rename to ui/src/assets/style/_form.css diff --git a/fe/src/assets/style/_macro.css b/ui/src/assets/style/_macro.css similarity index 100% rename from fe/src/assets/style/_macro.css rename to ui/src/assets/style/_macro.css diff --git a/fe/src/assets/style/_mcrm-block.css b/ui/src/assets/style/_mcrm-block.css similarity index 100% rename from fe/src/assets/style/_mcrm-block.css rename to ui/src/assets/style/_mcrm-block.css diff --git a/fe/src/assets/style/_panel.css b/ui/src/assets/style/_panel.css similarity index 100% rename from fe/src/assets/style/_panel.css rename to ui/src/assets/style/_panel.css diff --git a/fe/src/assets/style/_scrollbar.css b/ui/src/assets/style/_scrollbar.css similarity index 100% rename from fe/src/assets/style/_scrollbar.css rename to ui/src/assets/style/_scrollbar.css diff --git a/fe/src/components/base/AccordionComp.vue b/ui/src/components/base/AccordionComp.vue similarity index 100% rename from fe/src/components/base/AccordionComp.vue rename to ui/src/components/base/AccordionComp.vue diff --git a/fe/src/components/base/AlertComp.vue b/ui/src/components/base/AlertComp.vue similarity index 100% rename from fe/src/components/base/AlertComp.vue rename to ui/src/components/base/AlertComp.vue diff --git a/fe/src/components/base/ButtonComp.vue b/ui/src/components/base/ButtonComp.vue similarity index 100% rename from fe/src/components/base/ButtonComp.vue rename to ui/src/components/base/ButtonComp.vue diff --git a/fe/src/components/base/ButtonGroup.vue b/ui/src/components/base/ButtonGroup.vue similarity index 100% rename from fe/src/components/base/ButtonGroup.vue rename to ui/src/components/base/ButtonGroup.vue diff --git a/fe/src/components/base/ContextMenu.vue b/ui/src/components/base/ContextMenu.vue similarity index 100% rename from fe/src/components/base/ContextMenu.vue rename to ui/src/components/base/ContextMenu.vue diff --git a/fe/src/components/base/DialogComp.vue b/ui/src/components/base/DialogComp.vue similarity index 100% rename from fe/src/components/base/DialogComp.vue rename to ui/src/components/base/DialogComp.vue diff --git a/fe/src/components/base/LoadComp.vue b/ui/src/components/base/LoadComp.vue similarity index 100% rename from fe/src/components/base/LoadComp.vue rename to ui/src/components/base/LoadComp.vue diff --git a/fe/src/components/base/MainMenu.vue b/ui/src/components/base/MainMenu.vue similarity index 100% rename from fe/src/components/base/MainMenu.vue rename to ui/src/components/base/MainMenu.vue diff --git a/fe/src/components/dashboard/RemoteView.vue b/ui/src/components/dashboard/RemoteView.vue similarity index 100% rename from fe/src/components/dashboard/RemoteView.vue rename to ui/src/components/dashboard/RemoteView.vue diff --git a/fe/src/components/dashboard/ServerView.vue b/ui/src/components/dashboard/ServerView.vue similarity index 100% rename from fe/src/components/dashboard/ServerView.vue rename to ui/src/components/dashboard/ServerView.vue diff --git a/fe/src/components/devices/RemoteView.vue b/ui/src/components/devices/RemoteView.vue similarity index 100% rename from fe/src/components/devices/RemoteView.vue rename to ui/src/components/devices/RemoteView.vue diff --git a/fe/src/components/devices/ServerView.vue b/ui/src/components/devices/ServerView.vue similarity index 100% rename from fe/src/components/devices/ServerView.vue rename to ui/src/components/devices/ServerView.vue diff --git a/fe/src/components/form/FormSelect.vue b/ui/src/components/form/FormSelect.vue similarity index 100% rename from fe/src/components/form/FormSelect.vue rename to ui/src/components/form/FormSelect.vue diff --git a/ui/src/components/icons/IconCommunity.vue b/ui/src/components/icons/IconCommunity.vue new file mode 100644 index 0000000..2dc8b05 --- /dev/null +++ b/ui/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + diff --git a/ui/src/components/icons/IconDocumentation.vue b/ui/src/components/icons/IconDocumentation.vue new file mode 100644 index 0000000..6d4791c --- /dev/null +++ b/ui/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + diff --git a/ui/src/components/icons/IconEcosystem.vue b/ui/src/components/icons/IconEcosystem.vue new file mode 100644 index 0000000..c3a4f07 --- /dev/null +++ b/ui/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + diff --git a/ui/src/components/icons/IconSupport.vue b/ui/src/components/icons/IconSupport.vue new file mode 100644 index 0000000..7452834 --- /dev/null +++ b/ui/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + diff --git a/ui/src/components/icons/IconTooling.vue b/ui/src/components/icons/IconTooling.vue new file mode 100644 index 0000000..660598d --- /dev/null +++ b/ui/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/fe/src/components/macros/MacroOverview.vue b/ui/src/components/macros/MacroOverview.vue similarity index 100% rename from fe/src/components/macros/MacroOverview.vue rename to ui/src/components/macros/MacroOverview.vue diff --git a/fe/src/components/macros/MacroRecorder.vue b/ui/src/components/macros/MacroRecorder.vue similarity index 100% rename from fe/src/components/macros/MacroRecorder.vue rename to ui/src/components/macros/MacroRecorder.vue diff --git a/fe/src/components/macros/components/DelaySpan.vue b/ui/src/components/macros/components/DelaySpan.vue similarity index 100% rename from fe/src/components/macros/components/DelaySpan.vue rename to ui/src/components/macros/components/DelaySpan.vue diff --git a/fe/src/components/macros/components/DeleteKeyDialog.vue b/ui/src/components/macros/components/DeleteKeyDialog.vue similarity index 100% rename from fe/src/components/macros/components/DeleteKeyDialog.vue rename to ui/src/components/macros/components/DeleteKeyDialog.vue diff --git a/fe/src/components/macros/components/EditDelayDialog.vue b/ui/src/components/macros/components/EditDelayDialog.vue similarity index 100% rename from fe/src/components/macros/components/EditDelayDialog.vue rename to ui/src/components/macros/components/EditDelayDialog.vue diff --git a/fe/src/components/macros/components/EditKeyDialog.vue b/ui/src/components/macros/components/EditKeyDialog.vue similarity index 100% rename from fe/src/components/macros/components/EditKeyDialog.vue rename to ui/src/components/macros/components/EditKeyDialog.vue diff --git a/fe/src/components/macros/components/FixedDelayMenu.vue b/ui/src/components/macros/components/FixedDelayMenu.vue similarity index 100% rename from fe/src/components/macros/components/FixedDelayMenu.vue rename to ui/src/components/macros/components/FixedDelayMenu.vue diff --git a/fe/src/components/macros/components/InsertKeyDialog.vue b/ui/src/components/macros/components/InsertKeyDialog.vue similarity index 100% rename from fe/src/components/macros/components/InsertKeyDialog.vue rename to ui/src/components/macros/components/InsertKeyDialog.vue diff --git a/fe/src/components/macros/components/MacroKey.vue b/ui/src/components/macros/components/MacroKey.vue similarity index 100% rename from fe/src/components/macros/components/MacroKey.vue rename to ui/src/components/macros/components/MacroKey.vue diff --git a/fe/src/components/macros/components/ValidationErrorDialog.vue b/ui/src/components/macros/components/ValidationErrorDialog.vue similarity index 100% rename from fe/src/components/macros/components/ValidationErrorDialog.vue rename to ui/src/components/macros/components/ValidationErrorDialog.vue diff --git a/fe/src/components/macros/parts/EditDialogs.vue b/ui/src/components/macros/parts/EditDialogs.vue similarity index 100% rename from fe/src/components/macros/parts/EditDialogs.vue rename to ui/src/components/macros/parts/EditDialogs.vue diff --git a/fe/src/components/macros/parts/RecorderFooter.vue b/ui/src/components/macros/parts/RecorderFooter.vue similarity index 100% rename from fe/src/components/macros/parts/RecorderFooter.vue rename to ui/src/components/macros/parts/RecorderFooter.vue diff --git a/fe/src/components/macros/parts/RecorderHeader.vue b/ui/src/components/macros/parts/RecorderHeader.vue similarity index 100% rename from fe/src/components/macros/parts/RecorderHeader.vue rename to ui/src/components/macros/parts/RecorderHeader.vue diff --git a/fe/src/components/macros/parts/RecorderInput.vue b/ui/src/components/macros/parts/RecorderInput.vue similarity index 100% rename from fe/src/components/macros/parts/RecorderInput.vue rename to ui/src/components/macros/parts/RecorderInput.vue diff --git a/fe/src/components/macros/parts/RecorderOutput.vue b/ui/src/components/macros/parts/RecorderOutput.vue similarity index 100% rename from fe/src/components/macros/parts/RecorderOutput.vue rename to ui/src/components/macros/parts/RecorderOutput.vue diff --git a/fe/src/components/panels/PanelEdit.vue b/ui/src/components/panels/PanelEdit.vue similarity index 100% rename from fe/src/components/panels/PanelEdit.vue rename to ui/src/components/panels/PanelEdit.vue diff --git a/fe/src/components/panels/PanelView.vue b/ui/src/components/panels/PanelView.vue similarity index 100% rename from fe/src/components/panels/PanelView.vue rename to ui/src/components/panels/PanelView.vue diff --git a/fe/src/components/panels/PanelsOverview.vue b/ui/src/components/panels/PanelsOverview.vue similarity index 100% rename from fe/src/components/panels/PanelsOverview.vue rename to ui/src/components/panels/PanelsOverview.vue diff --git a/fe/src/main.js b/ui/src/main.js similarity index 100% rename from fe/src/main.js rename to ui/src/main.js diff --git a/fe/src/router/index.js b/ui/src/router/index.js similarity index 100% rename from fe/src/router/index.js rename to ui/src/router/index.js diff --git a/fe/src/services/ApiService.js b/ui/src/services/ApiService.js similarity index 100% rename from fe/src/services/ApiService.js rename to ui/src/services/ApiService.js diff --git a/fe/src/services/EncryptService.js b/ui/src/services/EncryptService.js similarity index 100% rename from fe/src/services/EncryptService.js rename to ui/src/services/EncryptService.js diff --git a/fe/src/services/MacroRecordService.js b/ui/src/services/MacroRecordService.js similarity index 100% rename from fe/src/services/MacroRecordService.js rename to ui/src/services/MacroRecordService.js diff --git a/fe/src/services/MacroService.js b/ui/src/services/MacroService.js similarity index 100% rename from fe/src/services/MacroService.js rename to ui/src/services/MacroService.js diff --git a/fe/src/services/PanelService.js b/ui/src/services/PanelService.js similarity index 100% rename from fe/src/services/PanelService.js rename to ui/src/services/PanelService.js diff --git a/fe/src/services/RobotKeys.md b/ui/src/services/RobotKeys.md similarity index 100% rename from fe/src/services/RobotKeys.md rename to ui/src/services/RobotKeys.md diff --git a/fe/src/stores/counter.js b/ui/src/stores/counter.js similarity index 100% rename from fe/src/stores/counter.js rename to ui/src/stores/counter.js diff --git a/fe/src/stores/device.js b/ui/src/stores/device.js similarity index 100% rename from fe/src/stores/device.js rename to ui/src/stores/device.js diff --git a/fe/src/stores/macrorecorder.js b/ui/src/stores/macrorecorder.js similarity index 100% rename from fe/src/stores/macrorecorder.js rename to ui/src/stores/macrorecorder.js diff --git a/fe/src/stores/panel.js b/ui/src/stores/panel.js similarity index 100% rename from fe/src/stores/panel.js rename to ui/src/stores/panel.js diff --git a/fe/src/views/DashboardView.vue b/ui/src/views/DashboardView.vue similarity index 100% rename from fe/src/views/DashboardView.vue rename to ui/src/views/DashboardView.vue diff --git a/fe/src/views/DevicesView.vue b/ui/src/views/DevicesView.vue similarity index 100% rename from fe/src/views/DevicesView.vue rename to ui/src/views/DevicesView.vue diff --git a/ui/src/views/HomeView.vue b/ui/src/views/HomeView.vue new file mode 100644 index 0000000..c304a7a --- /dev/null +++ b/ui/src/views/HomeView.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/fe/src/views/MacrosView.vue b/ui/src/views/MacrosView.vue similarity index 100% rename from fe/src/views/MacrosView.vue rename to ui/src/views/MacrosView.vue diff --git a/fe/src/views/PanelsView.vue b/ui/src/views/PanelsView.vue similarity index 100% rename from fe/src/views/PanelsView.vue rename to ui/src/views/PanelsView.vue diff --git a/fe/src/views/SettingsView.vue b/ui/src/views/SettingsView.vue similarity index 100% rename from fe/src/views/SettingsView.vue rename to ui/src/views/SettingsView.vue diff --git a/fe/vite.config.js b/ui/vite.config.js similarity index 100% rename from fe/vite.config.js rename to ui/vite.config.js