diff --git a/infra/releases/2026-05-30_23-52-07_HML.md b/infra/releases/2026-05-30_23-52-07_HML.md
deleted file mode 100644
index 355fbe7b..00000000
--- a/infra/releases/2026-05-30_23-52-07_HML.md
+++ /dev/null
@@ -1,230 +0,0 @@
-# Release HML
-
-Data: sáb 30 mai 2026 23:52:07 -03
-
-Ambiente:
-HML
-
-Descrição:
-Revisão logo
-
-Branch:
-develop
-
-Arquivos alterados antes do commit:
- D DEPLOY-DOCKER.md
- D GUIA-NGINX.md
- M index.html
- D infra/releases/2026-05-30_19-57-59_HML.md
- D infra/releases/2026-05-30_23-14-47_HML.md
- D nginx-docker.conf
- M node_modules/.package-lock.json
- M node_modules/.vite/deps/@radix-ui_react-dialog.js
- M node_modules/.vite/deps/@radix-ui_react-label.js
- M node_modules/.vite/deps/@radix-ui_react-radio-group.js
- M node_modules/.vite/deps/@radix-ui_react-select.js
- M node_modules/.vite/deps/_metadata.json
- D node_modules/.vite/deps/chunk-D4MYACAJ.js
- D node_modules/.vite/deps/chunk-D4MYACAJ.js.map
- D node_modules/.vite/deps/chunk-KKEH7IGY.js
- D node_modules/.vite/deps/chunk-KKEH7IGY.js.map
- D node_modules/.vite/deps/chunk-QF76HVLY.js
- D node_modules/.vite/deps/chunk-QF76HVLY.js.map
- D node_modules/.vite/deps/chunk-X34PLQQA.js
- D node_modules/.vite/deps/chunk-X34PLQQA.js.map
- D node_modules/.vite/deps/react-helmet-async.js
- D node_modules/.vite/deps/react-helmet-async.js.map
- D node_modules/invariant/CHANGELOG.md
- D node_modules/invariant/LICENSE
- D node_modules/invariant/README.md
- D node_modules/invariant/browser.js
- D node_modules/invariant/invariant.js
- D node_modules/invariant/invariant.js.flow
- D node_modules/invariant/package.json
- D node_modules/react-fast-compare/LICENSE
- D node_modules/react-fast-compare/README.md
- D node_modules/react-fast-compare/index.d.ts
- D node_modules/react-fast-compare/index.js
- D node_modules/react-fast-compare/package.json
- D node_modules/react-helmet-async/LICENSE
- D node_modules/react-helmet-async/README.md
- D node_modules/react-helmet-async/lib/Dispatcher.d.ts
- D node_modules/react-helmet-async/lib/HelmetData.d.ts
- D node_modules/react-helmet-async/lib/Provider.d.ts
- D node_modules/react-helmet-async/lib/React19Dispatcher.d.ts
- D node_modules/react-helmet-async/lib/client.d.ts
- D node_modules/react-helmet-async/lib/constants.d.ts
- D node_modules/react-helmet-async/lib/index.d.ts
- D node_modules/react-helmet-async/lib/index.esm.js
- D node_modules/react-helmet-async/lib/index.js
- D node_modules/react-helmet-async/lib/reactVersion.d.ts
- D node_modules/react-helmet-async/lib/server.d.ts
- D node_modules/react-helmet-async/lib/types.d.ts
- D node_modules/react-helmet-async/lib/utils.d.ts
- D node_modules/react-helmet-async/package.json
- D node_modules/shallowequal/LICENSE
- D node_modules/shallowequal/README.md
- D node_modules/shallowequal/index.js
- D node_modules/shallowequal/index.js.flow
- D node_modules/shallowequal/index.original.js
- D node_modules/shallowequal/package.json
- M package-lock.json
- M package.json
- M public/sitemap.xml
- D public/version.json
- D scripts/build-static-routes.sh
- M scripts/dev.sh
- M src/App.tsx
- D src/components/SEO.tsx
- M src/config/site.ts
- M src/main.tsx
- M src/pages/Blog.tsx
- M src/pages/Cases.tsx
- M src/pages/Condominios.tsx
- M src/pages/Privacidade.tsx
- M src/pages/Sobre.tsx
- M src/pages/Tecnologias.tsx
- M src/pages/Termos.tsx
- M src/pages/nichos/Advocacia.tsx
- M src/pages/nichos/BackupCorporativo.tsx
- M src/pages/nichos/Contabilidade.tsx
- M src/pages/nichos/FirewallPfSense.tsx
- M src/pages/nichos/Monitoramento.tsx
- M src/pages/nichos/VoipEmpresarial.tsx
- M src/pages/services/Backup.tsx
- M src/pages/services/CloudComputing.tsx
- M src/pages/services/Consultoria.tsx
- M src/pages/services/Noc.tsx
- M src/pages/services/Pabx.tsx
- M src/pages/services/Redes.tsx
- M src/pages/services/Seguranca.tsx
- M src/pages/services/Servidores.tsx
- M src/pages/services/Suporte.tsx
- M src/pages/services/TiGerenciada.tsx
- M src/pages/tech/Cisco.tsx
- M src/pages/tech/Linux.tsx
- M src/pages/tech/PfSense.tsx
- M src/pages/tech/Proxmox.tsx
- M src/pages/tech/Sharepoint.tsx
- M src/pages/tech/Vmware.tsx
- M src/pages/tech/WindowsServer.tsx
- M src/sections/Footer.tsx
- M src/sections/Navigation.tsx
- M vite.config.ts
-?? .github/
-?? .gitignore
-?? infra/releases/2026-05-30_23-52-07_HML.md
-
-Status:
-Preparado para publicação
-
-Commit:
-b3b8917a
-
-Arquivos no commit:
-.github/workflows/README-CI-CD.md
-.github/workflows/deploy.yml
-.gitignore
-DEPLOY-DOCKER.md
-GUIA-NGINX.md
-index.html
-infra/releases/2026-05-30_19-57-59_HML.md
-infra/releases/2026-05-30_23-14-47_HML.md
-infra/releases/2026-05-30_23-52-07_HML.md
-nginx-docker.conf
-node_modules/.package-lock.json
-node_modules/.vite/deps/@radix-ui_react-dialog.js
-node_modules/.vite/deps/@radix-ui_react-label.js
-node_modules/.vite/deps/@radix-ui_react-radio-group.js
-node_modules/.vite/deps/@radix-ui_react-select.js
-node_modules/.vite/deps/_metadata.json
-node_modules/.vite/deps/chunk-D4MYACAJ.js
-node_modules/.vite/deps/chunk-D4MYACAJ.js.map
-node_modules/.vite/deps/chunk-KKEH7IGY.js
-node_modules/.vite/deps/chunk-KKEH7IGY.js.map
-node_modules/.vite/deps/chunk-QF76HVLY.js
-node_modules/.vite/deps/chunk-QF76HVLY.js.map
-node_modules/.vite/deps/chunk-X34PLQQA.js
-node_modules/.vite/deps/chunk-X34PLQQA.js.map
-node_modules/.vite/deps/react-helmet-async.js
-node_modules/.vite/deps/react-helmet-async.js.map
-node_modules/invariant/CHANGELOG.md
-node_modules/invariant/LICENSE
-node_modules/invariant/README.md
-node_modules/invariant/browser.js
-node_modules/invariant/invariant.js
-node_modules/invariant/invariant.js.flow
-node_modules/invariant/package.json
-node_modules/react-fast-compare/LICENSE
-node_modules/react-fast-compare/README.md
-node_modules/react-fast-compare/index.d.ts
-node_modules/react-fast-compare/index.js
-node_modules/react-fast-compare/package.json
-node_modules/react-helmet-async/LICENSE
-node_modules/react-helmet-async/README.md
-node_modules/react-helmet-async/lib/Dispatcher.d.ts
-node_modules/react-helmet-async/lib/HelmetData.d.ts
-node_modules/react-helmet-async/lib/Provider.d.ts
-node_modules/react-helmet-async/lib/React19Dispatcher.d.ts
-node_modules/react-helmet-async/lib/client.d.ts
-node_modules/react-helmet-async/lib/constants.d.ts
-node_modules/react-helmet-async/lib/index.d.ts
-node_modules/react-helmet-async/lib/index.esm.js
-node_modules/react-helmet-async/lib/index.js
-node_modules/react-helmet-async/lib/reactVersion.d.ts
-node_modules/react-helmet-async/lib/server.d.ts
-node_modules/react-helmet-async/lib/types.d.ts
-node_modules/react-helmet-async/lib/utils.d.ts
-node_modules/react-helmet-async/package.json
-node_modules/shallowequal/LICENSE
-node_modules/shallowequal/README.md
-node_modules/shallowequal/index.js
-node_modules/shallowequal/index.js.flow
-node_modules/shallowequal/index.original.js
-node_modules/shallowequal/package.json
-package-lock.json
-package.json
-public/sitemap.xml
-public/version.json
-scripts/build-static-routes.sh
-scripts/dev.sh
-src/App.tsx
-src/components/SEO.tsx
-src/config/site.ts
-src/main.tsx
-src/pages/Blog.tsx
-src/pages/Cases.tsx
-src/pages/Condominios.tsx
-src/pages/Privacidade.tsx
-src/pages/Sobre.tsx
-src/pages/Tecnologias.tsx
-src/pages/Termos.tsx
-src/pages/nichos/Advocacia.tsx
-src/pages/nichos/BackupCorporativo.tsx
-src/pages/nichos/Contabilidade.tsx
-src/pages/nichos/FirewallPfSense.tsx
-src/pages/nichos/Monitoramento.tsx
-src/pages/nichos/VoipEmpresarial.tsx
-src/pages/services/Backup.tsx
-src/pages/services/CloudComputing.tsx
-src/pages/services/Consultoria.tsx
-src/pages/services/Noc.tsx
-src/pages/services/Pabx.tsx
-src/pages/services/Redes.tsx
-src/pages/services/Seguranca.tsx
-src/pages/services/Servidores.tsx
-src/pages/services/Suporte.tsx
-src/pages/services/TiGerenciada.tsx
-src/pages/tech/Cisco.tsx
-src/pages/tech/Linux.tsx
-src/pages/tech/PfSense.tsx
-src/pages/tech/Proxmox.tsx
-src/pages/tech/Sharepoint.tsx
-src/pages/tech/Vmware.tsx
-src/pages/tech/WindowsServer.tsx
-src/sections/Footer.tsx
-src/sections/Navigation.tsx
-vite.config.ts
-
-Status final:
-Publicado no Gitea / aguardando pipeline HML
diff --git a/infra/releases/2026-05-30_23-54-46_HML.md b/infra/releases/2026-05-30_23-54-46_HML.md
new file mode 100644
index 00000000..56c6b52a
--- /dev/null
+++ b/infra/releases/2026-05-30_23-54-46_HML.md
@@ -0,0 +1,92 @@
+# Release HML
+
+Data: sáb 30 mai 2026 23:54:46 -03
+
+Ambiente:
+HML
+
+Descrição:
+Revisão Logo, Favicon, Robots
+
+Branch:
+develop
+
+Arquivos alterados antes do commit:
+ D .github/workflows/README-CI-CD.md
+ D .github/workflows/deploy.yml
+ D .gitignore
+ M index.html
+ D infra/releases/2026-05-30_23-52-07_HML.md
+ M node_modules/.package-lock.json
+ M node_modules/.vite/deps/@radix-ui_react-dialog.js
+ M node_modules/.vite/deps/@radix-ui_react-radio-group.js
+ M node_modules/.vite/deps/@radix-ui_react-select.js
+ M node_modules/.vite/deps/_metadata.json
+ M package-lock.json
+ M package.json
+ M public/robots.txt
+ M public/sitemap.xml
+ M scripts/dev.sh
+ M src/App.tsx
+ M src/components/HomologationBanner.tsx
+ M src/config/mautic.ts
+ M src/config/site.ts
+ M src/main.tsx
+ M src/pages/Blog.tsx
+ M src/pages/Cases.tsx
+ M src/pages/Condominios.tsx
+ M src/pages/Privacidade.tsx
+ M src/pages/Sobre.tsx
+ M src/pages/Tecnologias.tsx
+ M src/pages/Termos.tsx
+ M src/pages/nichos/Advocacia.tsx
+ M src/pages/nichos/BackupCorporativo.tsx
+ M src/pages/nichos/Contabilidade.tsx
+ M src/pages/nichos/FirewallPfSense.tsx
+ M src/pages/nichos/Monitoramento.tsx
+ M src/pages/nichos/VoipEmpresarial.tsx
+ M src/pages/services/Backup.tsx
+ M src/pages/services/CloudComputing.tsx
+ M src/pages/services/Consultoria.tsx
+ M src/pages/services/Noc.tsx
+ M src/pages/services/Pabx.tsx
+ M src/pages/services/Redes.tsx
+ M src/pages/services/Seguranca.tsx
+ M src/pages/services/Servidores.tsx
+ M src/pages/services/Suporte.tsx
+ M src/pages/services/TiGerenciada.tsx
+ M src/pages/tech/Cisco.tsx
+ M src/pages/tech/Linux.tsx
+ M src/pages/tech/PfSense.tsx
+ M src/pages/tech/Proxmox.tsx
+ M src/pages/tech/Sharepoint.tsx
+ M src/pages/tech/Vmware.tsx
+ M src/pages/tech/WindowsServer.tsx
+ M src/sections/Footer.tsx
+ M src/sections/Navigation.tsx
+ M vite.config.ts
+?? DEPLOY-DOCKER.md
+?? GUIA-NGINX.md
+?? infra/releases/2026-05-30_23-54-46_HML.md
+?? nginx-docker.conf
+?? node_modules/.vite/deps/chunk-INCCO7S4.js
+?? node_modules/.vite/deps/chunk-INCCO7S4.js.map
+?? node_modules/.vite/deps/chunk-L2OGOWTU.js
+?? node_modules/.vite/deps/chunk-L2OGOWTU.js.map
+?? node_modules/.vite/deps/chunk-LIWCVBQK.js
+?? node_modules/.vite/deps/chunk-LIWCVBQK.js.map
+?? node_modules/.vite/deps/chunk-MOFDO34C.js
+?? node_modules/.vite/deps/chunk-MOFDO34C.js.map
+?? node_modules/.vite/deps/react-helmet-async.js
+?? node_modules/.vite/deps/react-helmet-async.js.map
+?? node_modules/invariant/
+?? node_modules/react-fast-compare/
+?? node_modules/react-helmet-async/
+?? node_modules/shallowequal/
+?? public/version.json
+?? scripts/build-static-routes.sh
+?? src/components/SEO.tsx
+?? src/config/environment.ts
+
+Status:
+Preparado para publicação
diff --git a/nginx-docker.conf b/nginx-docker.conf
new file mode 100644
index 00000000..d058548e
--- /dev/null
+++ b/nginx-docker.conf
@@ -0,0 +1,30 @@
+# ============================================================================
+# AVANZATO - Configuracao Nginx para Docker
+# ============================================================================
+# Coloque este arquivo em: /etc/nginx/conf.d/default.conf
+# dentro do container Docker
+# ============================================================================
+
+server {
+ listen 80;
+ server_name localhost;
+
+ root /usr/share/nginx/html;
+ index index.html;
+
+ # === CORRECAO CRITICA: SPA React ===
+ # Redireciona TODAS as rotas para index.html
+ location / {
+ try_files $uri $uri/ /index.html;
+ }
+
+ # Cache para assets estaticos
+ location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
+ expires 6M;
+ add_header Cache-Control "public, immutable";
+ }
+
+ # Seguranca
+ add_header X-Frame-Options "SAMEORIGIN" always;
+ add_header X-Content-Type-Options "nosniff" always;
+}
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index 90cfcfab..7a66b83c 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -5904,6 +5904,15 @@
"node": ">=12"
}
},
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -6828,6 +6837,26 @@
"react": "^19.2.3"
}
},
+ "node_modules/react-fast-compare": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
+ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==",
+ "license": "MIT"
+ },
+ "node_modules/react-helmet-async": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/react-helmet-async/-/react-helmet-async-3.0.0.tgz",
+ "integrity": "sha512-nA3IEZfXiclgrz4KLxAhqJqIfFDuvzQwlKwpdmzZIuC1KNSghDEIXmyU0TKtbM+NafnkICcwx8CECFrZ/sL/1w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "invariant": "^2.2.4",
+ "react-fast-compare": "^3.2.2",
+ "shallowequal": "^1.1.0"
+ },
+ "peerDependencies": {
+ "react": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/react-hook-form": {
"version": "7.70.0",
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.70.0.tgz",
@@ -7291,6 +7320,12 @@
"integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
"license": "MIT"
},
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
+ "license": "MIT"
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
diff --git a/node_modules/.vite/deps/@radix-ui_react-dialog.js b/node_modules/.vite/deps/@radix-ui_react-dialog.js
index 2bf71038..b71b593d 100644
--- a/node_modules/.vite/deps/@radix-ui_react-dialog.js
+++ b/node_modules/.vite/deps/@radix-ui_react-dialog.js
@@ -1,7 +1,7 @@
"use client";
import {
Presence
-} from "./chunk-3Q7Z2X7T.js";
+} from "./chunk-INCCO7S4.js";
import {
Combination_default,
DismissableLayer,
@@ -9,7 +9,7 @@ import {
Portal,
hideOthers,
useFocusGuards
-} from "./chunk-26QBR6Z3.js";
+} from "./chunk-LIWCVBQK.js";
import {
Primitive,
composeEventHandlers,
@@ -17,7 +17,7 @@ import {
createContextScope,
useControllableState,
useId
-} from "./chunk-2ZZW3GAI.js";
+} from "./chunk-MOFDO34C.js";
import {
composeRefs,
useComposedRefs
diff --git a/node_modules/.vite/deps/@radix-ui_react-radio-group.js b/node_modules/.vite/deps/@radix-ui_react-radio-group.js
index 072bafdb..6ebb07c2 100644
--- a/node_modules/.vite/deps/@radix-ui_react-radio-group.js
+++ b/node_modules/.vite/deps/@radix-ui_react-radio-group.js
@@ -1,13 +1,13 @@
"use client";
import {
Presence
-} from "./chunk-3Q7Z2X7T.js";
+} from "./chunk-INCCO7S4.js";
import {
createCollection,
useDirection,
usePrevious,
useSize
-} from "./chunk-5BI4FO63.js";
+} from "./chunk-L2OGOWTU.js";
import {
Primitive,
composeEventHandlers,
@@ -15,7 +15,7 @@ import {
useCallbackRef,
useControllableState,
useId
-} from "./chunk-2ZZW3GAI.js";
+} from "./chunk-MOFDO34C.js";
import {
useComposedRefs
} from "./chunk-2VUH7NEY.js";
diff --git a/node_modules/.vite/deps/@radix-ui_react-select.js b/node_modules/.vite/deps/@radix-ui_react-select.js
index f2d1ed49..a1fe8462 100644
--- a/node_modules/.vite/deps/@radix-ui_react-select.js
+++ b/node_modules/.vite/deps/@radix-ui_react-select.js
@@ -1,10 +1,4 @@
"use client";
-import {
- createCollection,
- useDirection,
- usePrevious,
- useSize
-} from "./chunk-5BI4FO63.js";
import {
Combination_default,
DismissableLayer,
@@ -12,7 +6,13 @@ import {
Portal,
hideOthers,
useFocusGuards
-} from "./chunk-26QBR6Z3.js";
+} from "./chunk-LIWCVBQK.js";
+import {
+ createCollection,
+ useDirection,
+ usePrevious,
+ useSize
+} from "./chunk-L2OGOWTU.js";
import {
Primitive,
composeEventHandlers,
@@ -21,7 +21,7 @@ import {
useControllableState,
useId,
useLayoutEffect2
-} from "./chunk-2ZZW3GAI.js";
+} from "./chunk-MOFDO34C.js";
import {
composeRefs,
useComposedRefs
diff --git a/node_modules/.vite/deps/_metadata.json b/node_modules/.vite/deps/_metadata.json
index b00e89d2..dab42f1a 100644
--- a/node_modules/.vite/deps/_metadata.json
+++ b/node_modules/.vite/deps/_metadata.json
@@ -1,109 +1,115 @@
{
- "hash": "baa9bd3c",
+ "hash": "bef2a67d",
"configHash": "eccf13b4",
- "lockfileHash": "f25e87f1",
- "browserHash": "4d672fc5",
+ "lockfileHash": "c4c8a51c",
+ "browserHash": "e7109be1",
"optimized": {
"react": {
"src": "../../react/index.js",
"file": "react.js",
- "fileHash": "2adf36c9",
+ "fileHash": "d2a0cc23",
"needsInterop": true
},
"react-dom": {
"src": "../../react-dom/index.js",
"file": "react-dom.js",
- "fileHash": "91ce8077",
+ "fileHash": "e89a827d",
"needsInterop": true
},
"react/jsx-dev-runtime": {
"src": "../../react/jsx-dev-runtime.js",
"file": "react_jsx-dev-runtime.js",
- "fileHash": "051319e1",
+ "fileHash": "9ce7ae60",
"needsInterop": true
},
"react/jsx-runtime": {
"src": "../../react/jsx-runtime.js",
"file": "react_jsx-runtime.js",
- "fileHash": "1945fc54",
+ "fileHash": "8ba5f754",
"needsInterop": true
},
"@radix-ui/react-dialog": {
"src": "../../@radix-ui/react-dialog/dist/index.mjs",
"file": "@radix-ui_react-dialog.js",
- "fileHash": "8be1d102",
+ "fileHash": "312e2a39",
"needsInterop": false
},
"@radix-ui/react-label": {
"src": "../../@radix-ui/react-label/dist/index.mjs",
"file": "@radix-ui_react-label.js",
- "fileHash": "7c8329ad",
+ "fileHash": "3b607856",
"needsInterop": false
},
"@radix-ui/react-radio-group": {
"src": "../../@radix-ui/react-radio-group/dist/index.mjs",
"file": "@radix-ui_react-radio-group.js",
- "fileHash": "c1cf0673",
+ "fileHash": "20509c2b",
"needsInterop": false
},
"@radix-ui/react-select": {
"src": "../../@radix-ui/react-select/dist/index.mjs",
"file": "@radix-ui_react-select.js",
- "fileHash": "e8a77682",
+ "fileHash": "91be68ee",
"needsInterop": false
},
"@radix-ui/react-slot": {
"src": "../../@radix-ui/react-slot/dist/index.mjs",
"file": "@radix-ui_react-slot.js",
- "fileHash": "4581ea7a",
+ "fileHash": "ce1344ec",
"needsInterop": false
},
"class-variance-authority": {
"src": "../../class-variance-authority/dist/index.mjs",
"file": "class-variance-authority.js",
- "fileHash": "e840c683",
+ "fileHash": "0e5017ff",
"needsInterop": false
},
"clsx": {
"src": "../../clsx/dist/clsx.mjs",
"file": "clsx.js",
- "fileHash": "79cbbdef",
+ "fileHash": "2dbad761",
"needsInterop": false
},
"gsap": {
"src": "../../gsap/index.js",
"file": "gsap.js",
- "fileHash": "096a1c72",
+ "fileHash": "1393a05a",
"needsInterop": false
},
"gsap/ScrollTrigger": {
"src": "../../gsap/ScrollTrigger.js",
"file": "gsap_ScrollTrigger.js",
- "fileHash": "05527b31",
+ "fileHash": "965be7ec",
"needsInterop": false
},
"lucide-react": {
"src": "../../lucide-react/dist/esm/lucide-react.js",
"file": "lucide-react.js",
- "fileHash": "4c9ad860",
+ "fileHash": "3db69029",
"needsInterop": false
},
"react-dom/client": {
"src": "../../react-dom/client.js",
"file": "react-dom_client.js",
- "fileHash": "93025179",
+ "fileHash": "8798ba07",
"needsInterop": true
},
+ "react-helmet-async": {
+ "src": "../../react-helmet-async/lib/index.esm.js",
+ "file": "react-helmet-async.js",
+ "fileHash": "60b58734",
+ "needsInterop": false
+ },
"react-router-dom": {
"src": "../../react-router-dom/dist/index.mjs",
"file": "react-router-dom.js",
- "fileHash": "a7f80be8",
+ "fileHash": "03035af3",
"needsInterop": false
},
"tailwind-merge": {
"src": "../../tailwind-merge/dist/bundle-mjs.mjs",
"file": "tailwind-merge.js",
- "fileHash": "e87c9277",
+ "fileHash": "afbfe76d",
"needsInterop": false
}
},
@@ -111,20 +117,20 @@
"chunk-U7P2NEEE": {
"file": "chunk-U7P2NEEE.js"
},
+ "chunk-INCCO7S4": {
+ "file": "chunk-INCCO7S4.js"
+ },
"chunk-YWBEB5PG": {
"file": "chunk-YWBEB5PG.js"
},
- "chunk-3Q7Z2X7T": {
- "file": "chunk-3Q7Z2X7T.js"
+ "chunk-LIWCVBQK": {
+ "file": "chunk-LIWCVBQK.js"
},
- "chunk-5BI4FO63": {
- "file": "chunk-5BI4FO63.js"
+ "chunk-L2OGOWTU": {
+ "file": "chunk-L2OGOWTU.js"
},
- "chunk-26QBR6Z3": {
- "file": "chunk-26QBR6Z3.js"
- },
- "chunk-2ZZW3GAI": {
- "file": "chunk-2ZZW3GAI.js"
+ "chunk-MOFDO34C": {
+ "file": "chunk-MOFDO34C.js"
},
"chunk-2VUH7NEY": {
"file": "chunk-2VUH7NEY.js"
diff --git a/node_modules/.vite/deps/chunk-INCCO7S4.js b/node_modules/.vite/deps/chunk-INCCO7S4.js
new file mode 100644
index 00000000..131d75ad
--- /dev/null
+++ b/node_modules/.vite/deps/chunk-INCCO7S4.js
@@ -0,0 +1,143 @@
+import {
+ useLayoutEffect2
+} from "./chunk-MOFDO34C.js";
+import {
+ useComposedRefs
+} from "./chunk-2VUH7NEY.js";
+import {
+ require_react
+} from "./chunk-WUR7D6NS.js";
+import {
+ __toESM
+} from "./chunk-G3PMV62Z.js";
+
+// node_modules/@radix-ui/react-presence/dist/index.mjs
+var React2 = __toESM(require_react(), 1);
+var React = __toESM(require_react(), 1);
+function useStateMachine(initialState, machine) {
+ return React.useReducer((state, event) => {
+ const nextState = machine[state][event];
+ return nextState ?? state;
+ }, initialState);
+}
+var Presence = (props) => {
+ const { present, children } = props;
+ const presence = usePresence(present);
+ const child = typeof children === "function" ? children({ present: presence.isPresent }) : React2.Children.only(children);
+ const ref = useComposedRefs(presence.ref, getElementRef(child));
+ const forceMount = typeof children === "function";
+ return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;
+};
+Presence.displayName = "Presence";
+function usePresence(present) {
+ const [node, setNode] = React2.useState();
+ const stylesRef = React2.useRef(null);
+ const prevPresentRef = React2.useRef(present);
+ const prevAnimationNameRef = React2.useRef("none");
+ const initialState = present ? "mounted" : "unmounted";
+ const [state, send] = useStateMachine(initialState, {
+ mounted: {
+ UNMOUNT: "unmounted",
+ ANIMATION_OUT: "unmountSuspended"
+ },
+ unmountSuspended: {
+ MOUNT: "mounted",
+ ANIMATION_END: "unmounted"
+ },
+ unmounted: {
+ MOUNT: "mounted"
+ }
+ });
+ React2.useEffect(() => {
+ const currentAnimationName = getAnimationName(stylesRef.current);
+ prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
+ }, [state]);
+ useLayoutEffect2(() => {
+ const styles = stylesRef.current;
+ const wasPresent = prevPresentRef.current;
+ const hasPresentChanged = wasPresent !== present;
+ if (hasPresentChanged) {
+ const prevAnimationName = prevAnimationNameRef.current;
+ const currentAnimationName = getAnimationName(styles);
+ if (present) {
+ send("MOUNT");
+ } else if (currentAnimationName === "none" || styles?.display === "none") {
+ send("UNMOUNT");
+ } else {
+ const isAnimating = prevAnimationName !== currentAnimationName;
+ if (wasPresent && isAnimating) {
+ send("ANIMATION_OUT");
+ } else {
+ send("UNMOUNT");
+ }
+ }
+ prevPresentRef.current = present;
+ }
+ }, [present, send]);
+ useLayoutEffect2(() => {
+ if (node) {
+ let timeoutId;
+ const ownerWindow = node.ownerDocument.defaultView ?? window;
+ const handleAnimationEnd = (event) => {
+ const currentAnimationName = getAnimationName(stylesRef.current);
+ const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));
+ if (event.target === node && isCurrentAnimation) {
+ send("ANIMATION_END");
+ if (!prevPresentRef.current) {
+ const currentFillMode = node.style.animationFillMode;
+ node.style.animationFillMode = "forwards";
+ timeoutId = ownerWindow.setTimeout(() => {
+ if (node.style.animationFillMode === "forwards") {
+ node.style.animationFillMode = currentFillMode;
+ }
+ });
+ }
+ }
+ };
+ const handleAnimationStart = (event) => {
+ if (event.target === node) {
+ prevAnimationNameRef.current = getAnimationName(stylesRef.current);
+ }
+ };
+ node.addEventListener("animationstart", handleAnimationStart);
+ node.addEventListener("animationcancel", handleAnimationEnd);
+ node.addEventListener("animationend", handleAnimationEnd);
+ return () => {
+ ownerWindow.clearTimeout(timeoutId);
+ node.removeEventListener("animationstart", handleAnimationStart);
+ node.removeEventListener("animationcancel", handleAnimationEnd);
+ node.removeEventListener("animationend", handleAnimationEnd);
+ };
+ } else {
+ send("ANIMATION_END");
+ }
+ }, [node, send]);
+ return {
+ isPresent: ["mounted", "unmountSuspended"].includes(state),
+ ref: React2.useCallback((node2) => {
+ stylesRef.current = node2 ? getComputedStyle(node2) : null;
+ setNode(node2);
+ }, [])
+ };
+}
+function getAnimationName(styles) {
+ return styles?.animationName || "none";
+}
+function getElementRef(element) {
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
+ if (mayWarn) {
+ return element.ref;
+ }
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
+ if (mayWarn) {
+ return element.props.ref;
+ }
+ return element.props.ref || element.ref;
+}
+
+export {
+ Presence
+};
+//# sourceMappingURL=chunk-INCCO7S4.js.map
diff --git a/node_modules/.vite/deps/chunk-INCCO7S4.js.map b/node_modules/.vite/deps/chunk-INCCO7S4.js.map
new file mode 100644
index 00000000..ce65209b
--- /dev/null
+++ b/node_modules/.vite/deps/chunk-INCCO7S4.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../@radix-ui/react-presence/src/presence.tsx", "../../@radix-ui/react-presence/src/use-state-machine.tsx"],
+ "sourcesContent": ["import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './use-state-machine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC
= (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState();\n const stylesRef = React.useRef(null);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n // The event.animationName is unescaped for CSS syntax,\n // so we need to escape it to compare with the animationName computed from the style.\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n stylesRef.current = node ? getComputedStyle(node) : null;\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles: CSSStyleDeclaration | null) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nconst Root = Presence;\n\nexport {\n Presence,\n //\n Root,\n};\nexport type { PresenceProps };\n", "import * as React from 'react';\n\ntype Machine = { [k: string]: { [k: string]: S } };\ntype MachineState = keyof T;\ntype MachineEvent = keyof UnionToIntersection;\n\n// \uD83E\uDD2F https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine(\n initialState: MachineState,\n machine: M & Machine>\n) {\n return React.useReducer((state: MachineState, event: MachineEvent): MachineState => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n"],
+ "mappings": ";;;;;;;;;;;;;;AAAA,aAAuB;ACAvB,YAAuB;AAWhB,SAAS,gBACd,cACA,SACA;AACA,SAAa,iBAAW,CAAC,OAAwB,UAA4C;AAC3F,UAAM,YAAa,QAAQ,KAAK,EAAU,KAAK;AAC/C,WAAO,aAAa;EACtB,GAAG,YAAY;AACjB;ADTA,IAAM,WAAoC,CAAC,UAAU;AACnD,QAAM,EAAE,SAAS,SAAS,IAAI;AAC9B,QAAM,WAAW,YAAY,OAAO;AAEpC,QAAM,QACJ,OAAO,aAAa,aAChB,SAAS,EAAE,SAAS,SAAS,UAAU,CAAC,IAClC,gBAAS,KAAK,QAAQ;AAGlC,QAAM,MAAM,gBAAgB,SAAS,KAAK,cAAc,KAAK,CAAC;AAC9D,QAAM,aAAa,OAAO,aAAa;AACvC,SAAO,cAAc,SAAS,YAAkB,oBAAa,OAAO,EAAE,IAAI,CAAC,IAAI;AACjF;AAEA,SAAS,cAAc;AAMvB,SAAS,YAAY,SAAkB;AACrC,QAAM,CAAC,MAAM,OAAO,IAAU,gBAAsB;AACpD,QAAM,YAAkB,cAAmC,IAAI;AAC/D,QAAM,iBAAuB,cAAO,OAAO;AAC3C,QAAM,uBAA6B,cAAe,MAAM;AACxD,QAAM,eAAe,UAAU,YAAY;AAC3C,QAAM,CAAC,OAAO,IAAI,IAAI,gBAAgB,cAAc;IAClD,SAAS;MACP,SAAS;MACT,eAAe;IACjB;IACA,kBAAkB;MAChB,OAAO;MACP,eAAe;IACjB;IACA,WAAW;MACT,OAAO;IACT;EACF,CAAC;AAEK,EAAA,iBAAU,MAAM;AACpB,UAAM,uBAAuB,iBAAiB,UAAU,OAAO;AAC/D,yBAAqB,UAAU,UAAU,YAAY,uBAAuB;EAC9E,GAAG,CAAC,KAAK,CAAC;AAEV,mBAAgB,MAAM;AACpB,UAAM,SAAS,UAAU;AACzB,UAAM,aAAa,eAAe;AAClC,UAAM,oBAAoB,eAAe;AAEzC,QAAI,mBAAmB;AACrB,YAAM,oBAAoB,qBAAqB;AAC/C,YAAM,uBAAuB,iBAAiB,MAAM;AAEpD,UAAI,SAAS;AACX,aAAK,OAAO;MACd,WAAW,yBAAyB,UAAU,QAAQ,YAAY,QAAQ;AAGxE,aAAK,SAAS;MAChB,OAAO;AAOL,cAAM,cAAc,sBAAsB;AAE1C,YAAI,cAAc,aAAa;AAC7B,eAAK,eAAe;QACtB,OAAO;AACL,eAAK,SAAS;QAChB;MACF;AAEA,qBAAe,UAAU;IAC3B;EACF,GAAG,CAAC,SAAS,IAAI,CAAC;AAElB,mBAAgB,MAAM;AACpB,QAAI,MAAM;AACR,UAAI;AACJ,YAAM,cAAc,KAAK,cAAc,eAAe;AAMtD,YAAM,qBAAqB,CAAC,UAA0B;AACpD,cAAM,uBAAuB,iBAAiB,UAAU,OAAO;AAG/D,cAAM,qBAAqB,qBAAqB,SAAS,IAAI,OAAO,MAAM,aAAa,CAAC;AACxF,YAAI,MAAM,WAAW,QAAQ,oBAAoB;AAW/C,eAAK,eAAe;AACpB,cAAI,CAAC,eAAe,SAAS;AAC3B,kBAAM,kBAAkB,KAAK,MAAM;AACnC,iBAAK,MAAM,oBAAoB;AAK/B,wBAAY,YAAY,WAAW,MAAM;AACvC,kBAAI,KAAK,MAAM,sBAAsB,YAAY;AAC/C,qBAAK,MAAM,oBAAoB;cACjC;YACF,CAAC;UACH;QACF;MACF;AACA,YAAM,uBAAuB,CAAC,UAA0B;AACtD,YAAI,MAAM,WAAW,MAAM;AAEzB,+BAAqB,UAAU,iBAAiB,UAAU,OAAO;QACnE;MACF;AACA,WAAK,iBAAiB,kBAAkB,oBAAoB;AAC5D,WAAK,iBAAiB,mBAAmB,kBAAkB;AAC3D,WAAK,iBAAiB,gBAAgB,kBAAkB;AACxD,aAAO,MAAM;AACX,oBAAY,aAAa,SAAS;AAClC,aAAK,oBAAoB,kBAAkB,oBAAoB;AAC/D,aAAK,oBAAoB,mBAAmB,kBAAkB;AAC9D,aAAK,oBAAoB,gBAAgB,kBAAkB;MAC7D;IACF,OAAO;AAGL,WAAK,eAAe;IACtB;EACF,GAAG,CAAC,MAAM,IAAI,CAAC;AAEf,SAAO;IACL,WAAW,CAAC,WAAW,kBAAkB,EAAE,SAAS,KAAK;IACzD,KAAW,mBAAY,CAACA,UAAsB;AAC5C,gBAAU,UAAUA,QAAO,iBAAiBA,KAAI,IAAI;AACpD,cAAQA,KAAI;IACd,GAAG,CAAC,CAAC;EACP;AACF;AAIA,SAAS,iBAAiB,QAAoC;AAC5D,SAAO,QAAQ,iBAAiB;AAClC;AAOA,SAAS,cAAc,SAA2D;AAEhF,MAAI,SAAS,OAAO,yBAAyB,QAAQ,OAAO,KAAK,GAAG;AACpE,MAAI,UAAU,UAAU,oBAAoB,UAAU,OAAO;AAC7D,MAAI,SAAS;AACX,WAAQ,QAAgB;EAC1B;AAGA,WAAS,OAAO,yBAAyB,SAAS,KAAK,GAAG;AAC1D,YAAU,UAAU,oBAAoB,UAAU,OAAO;AACzD,MAAI,SAAS;AACX,WAAO,QAAQ,MAAM;EACvB;AAGA,SAAO,QAAQ,MAAM,OAAQ,QAAgB;AAC/C;",
+ "names": ["node"]
+}
diff --git a/node_modules/.vite/deps/chunk-L2OGOWTU.js b/node_modules/.vite/deps/chunk-L2OGOWTU.js
new file mode 100644
index 00000000..a0513782
--- /dev/null
+++ b/node_modules/.vite/deps/chunk-L2OGOWTU.js
@@ -0,0 +1,248 @@
+import {
+ createContextScope,
+ useLayoutEffect2
+} from "./chunk-MOFDO34C.js";
+import {
+ composeRefs,
+ useComposedRefs
+} from "./chunk-2VUH7NEY.js";
+import {
+ require_jsx_runtime
+} from "./chunk-2YVA4HRZ.js";
+import {
+ require_react
+} from "./chunk-WUR7D6NS.js";
+import {
+ __toESM
+} from "./chunk-G3PMV62Z.js";
+
+// node_modules/@radix-ui/react-collection/dist/index.mjs
+var import_react = __toESM(require_react(), 1);
+
+// node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs
+var React = __toESM(require_react(), 1);
+var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
+function createSlot(ownerName) {
+ const SlotClone = createSlotClone(ownerName);
+ const Slot2 = React.forwardRef((props, forwardedRef) => {
+ const { children, ...slotProps } = props;
+ const childrenArray = React.Children.toArray(children);
+ const slottable = childrenArray.find(isSlottable);
+ if (slottable) {
+ const newElement = slottable.props.children;
+ const newChildren = childrenArray.map((child) => {
+ if (child === slottable) {
+ if (React.Children.count(newElement) > 1) return React.Children.only(null);
+ return React.isValidElement(newElement) ? newElement.props.children : null;
+ } else {
+ return child;
+ }
+ });
+ return (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });
+ }
+ return (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
+ });
+ Slot2.displayName = `${ownerName}.Slot`;
+ return Slot2;
+}
+var Slot = createSlot("Slot");
+function createSlotClone(ownerName) {
+ const SlotClone = React.forwardRef((props, forwardedRef) => {
+ const { children, ...slotProps } = props;
+ if (React.isValidElement(children)) {
+ const childrenRef = getElementRef(children);
+ const props2 = mergeProps(slotProps, children.props);
+ if (children.type !== React.Fragment) {
+ props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
+ }
+ return React.cloneElement(children, props2);
+ }
+ return React.Children.count(children) > 1 ? React.Children.only(null) : null;
+ });
+ SlotClone.displayName = `${ownerName}.SlotClone`;
+ return SlotClone;
+}
+var SLOTTABLE_IDENTIFIER = /* @__PURE__ */ Symbol("radix.slottable");
+function createSlottable(ownerName) {
+ const Slottable2 = ({ children }) => {
+ return (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
+ };
+ Slottable2.displayName = `${ownerName}.Slottable`;
+ Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
+ return Slottable2;
+}
+var Slottable = createSlottable("Slottable");
+function isSlottable(child) {
+ return React.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
+}
+function mergeProps(slotProps, childProps) {
+ const overrideProps = { ...childProps };
+ for (const propName in childProps) {
+ const slotPropValue = slotProps[propName];
+ const childPropValue = childProps[propName];
+ const isHandler = /^on[A-Z]/.test(propName);
+ if (isHandler) {
+ if (slotPropValue && childPropValue) {
+ overrideProps[propName] = (...args) => {
+ const result = childPropValue(...args);
+ slotPropValue(...args);
+ return result;
+ };
+ } else if (slotPropValue) {
+ overrideProps[propName] = slotPropValue;
+ }
+ } else if (propName === "style") {
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
+ } else if (propName === "className") {
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
+ }
+ }
+ return { ...slotProps, ...overrideProps };
+}
+function getElementRef(element) {
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
+ if (mayWarn) {
+ return element.ref;
+ }
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
+ if (mayWarn) {
+ return element.props.ref;
+ }
+ return element.props.ref || element.ref;
+}
+
+// node_modules/@radix-ui/react-collection/dist/index.mjs
+var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
+var import_react2 = __toESM(require_react(), 1);
+var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
+function createCollection(name) {
+ const PROVIDER_NAME = name + "CollectionProvider";
+ const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);
+ const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(
+ PROVIDER_NAME,
+ { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }
+ );
+ const CollectionProvider = (props) => {
+ const { scope, children } = props;
+ const ref = import_react.default.useRef(null);
+ const itemMap = import_react.default.useRef(/* @__PURE__ */ new Map()).current;
+ return (0, import_jsx_runtime2.jsx)(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
+ };
+ CollectionProvider.displayName = PROVIDER_NAME;
+ const COLLECTION_SLOT_NAME = name + "CollectionSlot";
+ const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);
+ const CollectionSlot = import_react.default.forwardRef(
+ (props, forwardedRef) => {
+ const { scope, children } = props;
+ const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
+ const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);
+ return (0, import_jsx_runtime2.jsx)(CollectionSlotImpl, { ref: composedRefs, children });
+ }
+ );
+ CollectionSlot.displayName = COLLECTION_SLOT_NAME;
+ const ITEM_SLOT_NAME = name + "CollectionItemSlot";
+ const ITEM_DATA_ATTR = "data-radix-collection-item";
+ const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);
+ const CollectionItemSlot = import_react.default.forwardRef(
+ (props, forwardedRef) => {
+ const { scope, children, ...itemData } = props;
+ const ref = import_react.default.useRef(null);
+ const composedRefs = useComposedRefs(forwardedRef, ref);
+ const context = useCollectionContext(ITEM_SLOT_NAME, scope);
+ import_react.default.useEffect(() => {
+ context.itemMap.set(ref, { ref, ...itemData });
+ return () => void context.itemMap.delete(ref);
+ });
+ return (0, import_jsx_runtime2.jsx)(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
+ }
+ );
+ CollectionItemSlot.displayName = ITEM_SLOT_NAME;
+ function useCollection(scope) {
+ const context = useCollectionContext(name + "CollectionConsumer", scope);
+ const getItems = import_react.default.useCallback(() => {
+ const collectionNode = context.collectionRef.current;
+ if (!collectionNode) return [];
+ const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));
+ const items = Array.from(context.itemMap.values());
+ const orderedItems = items.sort(
+ (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)
+ );
+ return orderedItems;
+ }, [context.collectionRef, context.itemMap]);
+ return getItems;
+ }
+ return [
+ { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },
+ useCollection,
+ createCollectionScope
+ ];
+}
+
+// node_modules/@radix-ui/react-direction/dist/index.mjs
+var React3 = __toESM(require_react(), 1);
+var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
+var DirectionContext = React3.createContext(void 0);
+function useDirection(localDir) {
+ const globalDir = React3.useContext(DirectionContext);
+ return localDir || globalDir || "ltr";
+}
+
+// node_modules/@radix-ui/react-use-size/dist/index.mjs
+var React4 = __toESM(require_react(), 1);
+function useSize(element) {
+ const [size, setSize] = React4.useState(void 0);
+ useLayoutEffect2(() => {
+ if (element) {
+ setSize({ width: element.offsetWidth, height: element.offsetHeight });
+ const resizeObserver = new ResizeObserver((entries) => {
+ if (!Array.isArray(entries)) {
+ return;
+ }
+ if (!entries.length) {
+ return;
+ }
+ const entry = entries[0];
+ let width;
+ let height;
+ if ("borderBoxSize" in entry) {
+ const borderSizeEntry = entry["borderBoxSize"];
+ const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;
+ width = borderSize["inlineSize"];
+ height = borderSize["blockSize"];
+ } else {
+ width = element.offsetWidth;
+ height = element.offsetHeight;
+ }
+ setSize({ width, height });
+ });
+ resizeObserver.observe(element, { box: "border-box" });
+ return () => resizeObserver.unobserve(element);
+ } else {
+ setSize(void 0);
+ }
+ }, [element]);
+ return size;
+}
+
+// node_modules/@radix-ui/react-use-previous/dist/index.mjs
+var React5 = __toESM(require_react(), 1);
+function usePrevious(value) {
+ const ref = React5.useRef({ value, previous: value });
+ return React5.useMemo(() => {
+ if (ref.current.value !== value) {
+ ref.current.previous = ref.current.value;
+ ref.current.value = value;
+ }
+ return ref.current.previous;
+ }, [value]);
+}
+
+export {
+ createCollection,
+ useDirection,
+ useSize,
+ usePrevious
+};
+//# sourceMappingURL=chunk-L2OGOWTU.js.map
diff --git a/node_modules/.vite/deps/chunk-L2OGOWTU.js.map b/node_modules/.vite/deps/chunk-L2OGOWTU.js.map
new file mode 100644
index 00000000..4c0816df
--- /dev/null
+++ b/node_modules/.vite/deps/chunk-L2OGOWTU.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../@radix-ui/react-collection/src/collection-legacy.tsx", "../../@radix-ui/react-collection/src/collection.tsx", "../../@radix-ui/react-collection/src/ordered-dictionary.ts", "../../@radix-ui/react-collection/node_modules/@radix-ui/react-slot/src/slot.tsx", "../../@radix-ui/react-direction/src/direction.tsx", "../../@radix-ui/react-use-size/src/use-size.tsx", "../../@radix-ui/react-use-previous/src/use-previous.tsx"],
+ "sourcesContent": ["import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\n\ntype SlotProps = React.ComponentPropsWithoutRef;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `\u2026`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject;\n itemMap: Map<\n React.RefObject,\n { ref: React.RefObject } & ItemData\n >;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(new Map()).current;\n return (\n \n {children}\n \n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return {children};\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n \n {children}\n \n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n", "import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\nimport type { EntryOf } from './ordered-dictionary';\nimport { OrderedDict } from './ordered-dictionary';\n\ntype SlotProps = React.ComponentPropsWithoutRef;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\ninterface BaseItemData {\n id?: string;\n}\n\ntype ItemDataWithElement<\n ItemData extends BaseItemData,\n ItemElement extends HTMLElement,\n> = ItemData & {\n element: ItemElement;\n};\n\ntype ItemMap = OrderedDict<\n ItemElement,\n ItemDataWithElement\n>;\n\nfunction createCollection<\n ItemElement extends HTMLElement,\n ItemData extends BaseItemData = BaseItemData,\n>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionElement: CollectionElement | null;\n collectionRef: React.Ref;\n collectionRefObject: React.RefObject;\n itemMap: ItemMap;\n setItemMap: React.Dispatch>>;\n };\n\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0,\n }\n );\n\n type CollectionState = [\n ItemMap: ItemMap,\n SetItemMap: React.Dispatch>>,\n ];\n\n const CollectionProvider: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state?: CollectionState;\n }> = ({ state, ...props }) => {\n return state ? (\n \n ) : (\n \n );\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n\n const CollectionInit: React.FC<{\n children?: React.ReactNode;\n scope: any;\n }> = (props) => {\n const state = useInitCollection();\n return ;\n };\n CollectionInit.displayName = PROVIDER_NAME + 'Init';\n\n const CollectionProviderImpl: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state: CollectionState;\n }> = (props) => {\n const { scope, children, state } = props;\n const ref = React.useRef(null);\n const [collectionElement, setCollectionElement] = React.useState(\n null\n );\n const composeRefs = useComposedRefs(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n\n React.useEffect(() => {\n if (!collectionElement) return;\n\n const observer = getChildListObserver(() => {\n // setItemMap((map) => {\n // const copy = new OrderedDict(map).toSorted(([, a], [, b]) =>\n // !a.element || !b.element ? 0 : isElementPreceding(a.element, b.element) ? -1 : 1\n // );\n // // check if the order has changed\n // let index = -1;\n // for (const entry of copy) {\n // index++;\n // const key = map.keyAt(index)!;\n // const [copyKey] = entry;\n // if (key !== copyKey) {\n // // order has changed!\n // return copy;\n // }\n // }\n // return map;\n // });\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true,\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n\n return (\n \n {children}\n \n );\n };\n\n CollectionProviderImpl.displayName = PROVIDER_NAME + 'Impl';\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return {children};\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const [element, setElement] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n const { setItemMap } = context;\n\n const itemDataRef = React.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n\n React.useEffect(() => {\n const itemData = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n\n if (!map.has(element)) {\n map.set(element, { ...(itemData as unknown as ItemData), element });\n return map.toSorted(sortByDocumentPosition);\n }\n\n return map\n .set(element, { ...(itemData as unknown as ItemData), element })\n .toSorted(sortByDocumentPosition);\n });\n\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n\n return (\n \n {children}\n \n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useInitCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useInitCollection() {\n return React.useState>(new OrderedDict());\n }\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const { itemMap } = useCollectionContext(name + 'CollectionConsumer', scope);\n\n return itemMap;\n }\n\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection,\n };\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n\nfunction shallowEqual(a: any, b: any) {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction isElementPreceding(a: Element, b: Element) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\n\nfunction sortByDocumentPosition(\n a: EntryOf>,\n b: EntryOf>\n) {\n return !a[1].element || !b[1].element\n ? 0\n : isElementPreceding(a[1].element, b[1].element)\n ? -1\n : 1;\n}\n\nfunction getChildListObserver(callback: () => void) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n callback();\n return;\n }\n }\n });\n\n return observer;\n}\n", "// Not a real member because it shouldn't be accessible, but the super class\n// calls `set` which needs to read the instanciation state, so it can't be a\n// private member.\nconst __instanciated = new WeakMap, boolean>();\nexport class OrderedDict extends Map {\n #keys: K[];\n\n constructor(iterable?: Iterable | null | undefined);\n constructor(entries?: readonly (readonly [K, V])[] | null) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n\n set(key: K, value: V) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n\n insert(index: number, key: K, value: V) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n\n if (safeIndex === this.size || (has && safeIndex === this.size - 1) || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n\n const size = this.size + (has ? 0 : 1);\n\n // If you insert at, say, -2, without this bit you'd replace the\n // second-to-last item and push the rest up one, which means the new item is\n // 3rd to last. This isn't very intuitive; inserting at -2 is more like\n // saying \"make this item the second to last\".\n if (relativeIndex < 0) {\n actualIndex++;\n }\n\n const keys = [...this.#keys];\n let nextValue: V | undefined;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i]!;\n if (keys[i] === key) {\n nextKey = keys[i + 1]!;\n }\n if (has) {\n // delete first to ensure that the item is moved to the end\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1]!;\n const currentValue = nextValue!;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n\n with(index: number, key: K, value: V) {\n const copy = new OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n\n before(key: K) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n\n after(key: K) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n\n first() {\n return this.entryAt(0);\n }\n\n last() {\n return this.entryAt(-1);\n }\n\n clear() {\n this.#keys = [];\n return super.clear();\n }\n\n delete(key: K) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n\n deleteAt(index: number) {\n const key = this.keyAt(index);\n if (key !== undefined) {\n return this.delete(key);\n }\n return false;\n }\n\n at(index: number) {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return this.get(key);\n }\n }\n\n entryAt(index: number): [K, V] | undefined {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return [key, this.get(key)!];\n }\n }\n\n indexOf(key: K) {\n return this.#keys.indexOf(key);\n }\n\n keyAt(index: number) {\n return at(this.#keys, index);\n }\n\n from(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n\n keyFrom(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n\n find(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return undefined;\n }\n\n findIndex(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n\n filter(\n predicate: (entry: [K, V], index: number, dict: OrderedDict) => entry is [KK, VV],\n thisArg?: any\n ): OrderedDict;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict) => unknown,\n thisArg?: any\n ): OrderedDict;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict) => unknown,\n thisArg?: any\n ) {\n const entries: Array<[K, V]> = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new OrderedDict(entries);\n }\n\n map(\n callbackfn: (entry: [K, V], index: number, dictionary: OrderedDict) => U,\n thisArg?: any\n ): OrderedDict {\n const entries: [K, U][] = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new OrderedDict(entries);\n }\n\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict\n ) => [K, V]\n ): [K, V];\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduce(\n callbackfn: (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict\n ) => U,\n initialValue: U\n ): U;\n\n reduce(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0)!;\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict\n ) => [K, V]\n ): [K, V];\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentValue: U,\n currentIndex: number,\n dictionary: OrderedDict\n ) => U,\n initialValue: U\n ): U;\n\n reduceRight(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1)!;\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index)!;\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n\n toSorted(compareFn?: (a: [K, V], b: [K, V]) => number): OrderedDict {\n const entries = [...this.entries()].sort(compareFn);\n return new OrderedDict(entries);\n }\n\n toReversed(): OrderedDict {\n const reversed = new OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n reversed.set(key, element);\n }\n return reversed;\n }\n\n toSpliced(start: number, deleteCount?: number): OrderedDict;\n toSpliced(start: number, deleteCount: number, ...items: [K, V][]): OrderedDict;\n\n toSpliced(...args: [start: number, deleteCount: number, ...items: [K, V][]]) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new OrderedDict(entries);\n }\n\n slice(start?: number, end?: number) {\n const result = new OrderedDict();\n let stop = this.size - 1;\n\n if (start === undefined) {\n return result;\n }\n\n if (start < 0) {\n start = start + this.size;\n }\n\n if (end !== undefined && end > 0) {\n stop = end - 1;\n }\n\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n result.set(key, element);\n }\n return result;\n }\n\n every(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n\n some(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n}\n\nexport type KeyOf> =\n D extends OrderedDict ? K : never;\nexport type ValueOf> =\n D extends OrderedDict ? V : never;\nexport type EntryOf> = [KeyOf, ValueOf];\nexport type KeyFrom> = E[0];\nexport type ValueFrom> = E[1];\n\nfunction at(array: ArrayLike, index: number): T | undefined {\n if ('at' in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? undefined : array[actualIndex];\n}\n\nfunction toSafeIndex(array: ArrayLike, index: number) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\n\nfunction toSafeInteger(number: number) {\n // eslint-disable-next-line no-self-compare\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n", "import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes {\n children?: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlot(ownerName: string) {\n const SlotClone = createSlotClone(ownerName);\n const Slot = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n\n if (slottable) {\n // the new element to render is the one passed as a child of `Slottable`\n const newElement = slottable.props.children;\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n // because the new element will be the one rendered, we are only interested\n // in grabbing its children (`newElement.props.children`)\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement)\n ? (newElement.props as { children: React.ReactNode }).children\n : null;\n } else {\n return child;\n }\n });\n\n return (\n \n {React.isValidElement(newElement)\n ? React.cloneElement(newElement, undefined, newChildren)\n : null}\n \n );\n }\n\n return (\n \n {children}\n \n );\n });\n\n Slot.displayName = `${ownerName}.Slot`;\n return Slot;\n}\n\nconst Slot = createSlot('Slot');\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ function createSlotClone(ownerName: string) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props = mergeProps(slotProps, children.props as AnyProps);\n // do not pass ref to React.Fragment for React 19 compatibility\n if (children.type !== React.Fragment) {\n props.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props);\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst SLOTTABLE_IDENTIFIER = Symbol('radix.slottable');\n\ninterface SlottableProps {\n children: React.ReactNode;\n}\n\ninterface SlottableComponent extends React.FC {\n __radixId: symbol;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlottable(ownerName: string) {\n const Slottable: SlottableComponent = ({ children }) => {\n return <>{children}>;\n };\n Slottable.displayName = `${ownerName}.Slottable`;\n Slottable.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable;\n}\n\nconst Slottable = createSlottable('Slottable');\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record;\n\nfunction isSlottable(\n child: React.ReactNode\n): child is React.ReactElement {\n return (\n React.isValidElement(child) &&\n typeof child.type === 'function' &&\n '__radixId' in child.type &&\n child.type.__radixId === SLOTTABLE_IDENTIFIER\n );\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args: unknown[]) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n }\n // but if it exists only on the slot, we use only this one\n else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element.props as { ref?: React.Ref }).ref;\n }\n\n // Not DEV\n return (element.props as { ref?: React.Ref }).ref || (element as any).ref;\n}\n\nexport {\n Slot,\n Slottable,\n //\n Slot as Root,\n};\nexport type { SlotProps };\n", "import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC = (props) => {\n const { dir, children } = props;\n return {children};\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n", "/// \n\nimport * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\nfunction useSize(element: HTMLElement | null) {\n const [size, setSize] = React.useState<{ width: number; height: number } | undefined>(undefined);\n\n useLayoutEffect(() => {\n if (element) {\n // provide size as early as possible\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length) {\n return;\n }\n\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize'];\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n } else {\n // for browsers that don't support `borderBoxSize`\n // we calculate it ourselves to get the correct border box.\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n\n setSize({ width, height });\n });\n\n resizeObserver.observe(element, { box: 'border-box' });\n\n return () => resizeObserver.unobserve(element);\n } else {\n // We only want to reset to `undefined` when the element becomes `null`,\n // not if it changes to another element.\n setSize(undefined);\n }\n }, [element]);\n\n return size;\n}\n\nexport { useSize };\n", "import * as React from 'react';\n\nfunction usePrevious(value: T) {\n const ref = React.useRef({ value, previous: value });\n\n // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\nexport { usePrevious };\n"],
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA,mBAAkB;;;AGAlB,YAAuB;AAoCf,yBAAA;AAzB0B,SAAS,WAAW,WAAmB;AACvE,QAAM,YAAY,gBAAgB,SAAS;AAC3C,QAAMA,QAAa,iBAAmC,CAAC,OAAO,iBAAiB;AAC7E,UAAM,EAAE,UAAU,GAAG,UAAU,IAAI;AACnC,UAAM,gBAAsB,eAAS,QAAQ,QAAQ;AACrD,UAAM,YAAY,cAAc,KAAK,WAAW;AAEhD,QAAI,WAAW;AAEb,YAAM,aAAa,UAAU,MAAM;AAEnC,YAAM,cAAc,cAAc,IAAI,CAAC,UAAU;AAC/C,YAAI,UAAU,WAAW;AAGvB,cAAU,eAAS,MAAM,UAAU,IAAI,EAAG,QAAa,eAAS,KAAK,IAAI;AACzE,iBAAa,qBAAe,UAAU,IACjC,WAAW,MAAwC,WACpD;QACN,OAAO;AACL,iBAAO;QACT;MACF,CAAC;AAED,iBACE,wBAAC,WAAA,EAAW,GAAG,WAAW,KAAK,cAC5B,UAAM,qBAAe,UAAU,IACtB,mBAAa,YAAY,QAAW,WAAW,IACrD,KAAA,CACN;IAEJ;AAEA,eACE,wBAAC,WAAA,EAAW,GAAG,WAAW,KAAK,cAC5B,SAAA,CACH;EAEJ,CAAC;AAEDA,QAAK,cAAc,GAAG,SAAS;AAC/B,SAAOA;AACT;AAEA,IAAM,OAAO,WAAW,MAAM;AAUH,SAAS,gBAAgB,WAAmB;AACrE,QAAM,YAAkB,iBAAgC,CAAC,OAAO,iBAAiB;AAC/E,UAAM,EAAE,UAAU,GAAG,UAAU,IAAI;AAEnC,QAAU,qBAAe,QAAQ,GAAG;AAClC,YAAM,cAAc,cAAc,QAAQ;AAC1C,YAAMC,SAAQ,WAAW,WAAW,SAAS,KAAiB;AAE9D,UAAI,SAAS,SAAe,gBAAU;AACpCA,eAAM,MAAM,eAAe,YAAY,cAAc,WAAW,IAAI;MACtE;AACA,aAAa,mBAAa,UAAUA,MAAK;IAC3C;AAEA,WAAa,eAAS,MAAM,QAAQ,IAAI,IAAU,eAAS,KAAK,IAAI,IAAI;EAC1E,CAAC;AAED,YAAU,cAAc,GAAG,SAAS;AACpC,SAAO;AACT;AAMA,IAAM,uBAAuB,uBAAO,iBAAiB;AAUnB,SAAS,gBAAgB,WAAmB;AAC5E,QAAMC,aAAgC,CAAC,EAAE,SAAS,MAAM;AACtD,eAAO,wBAAAC,mBAAAA,UAAA,EAAG,SAAA,CAAS;EACrB;AACAD,aAAU,cAAc,GAAG,SAAS;AACpCA,aAAU,YAAY;AACtB,SAAOA;AACT;AAEA,IAAM,YAAY,gBAAgB,WAAW;AAM7C,SAAS,YACP,OAC+D;AAC/D,SACQ,qBAAe,KAAK,KAC1B,OAAO,MAAM,SAAS,cACtB,eAAe,MAAM,QACrB,MAAM,KAAK,cAAc;AAE7B;AAEA,SAAS,WAAW,WAAqB,YAAsB;AAE7D,QAAM,gBAAgB,EAAE,GAAG,WAAW;AAEtC,aAAW,YAAY,YAAY;AACjC,UAAM,gBAAgB,UAAU,QAAQ;AACxC,UAAM,iBAAiB,WAAW,QAAQ;AAE1C,UAAM,YAAY,WAAW,KAAK,QAAQ;AAC1C,QAAI,WAAW;AAEb,UAAI,iBAAiB,gBAAgB;AACnC,sBAAc,QAAQ,IAAI,IAAI,SAAoB;AAChD,gBAAM,SAAS,eAAe,GAAG,IAAI;AACrC,wBAAc,GAAG,IAAI;AACrB,iBAAO;QACT;MACF,WAES,eAAe;AACtB,sBAAc,QAAQ,IAAI;MAC5B;IACF,WAES,aAAa,SAAS;AAC7B,oBAAc,QAAQ,IAAI,EAAE,GAAG,eAAe,GAAG,eAAe;IAClE,WAAW,aAAa,aAAa;AACnC,oBAAc,QAAQ,IAAI,CAAC,eAAe,cAAc,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;IACpF;EACF;AAEA,SAAO,EAAE,GAAG,WAAW,GAAG,cAAc;AAC1C;AAOA,SAAS,cAAc,SAA6B;AAElD,MAAI,SAAS,OAAO,yBAAyB,QAAQ,OAAO,KAAK,GAAG;AACpE,MAAI,UAAU,UAAU,oBAAoB,UAAU,OAAO;AAC7D,MAAI,SAAS;AACX,WAAQ,QAAgB;EAC1B;AAGA,WAAS,OAAO,yBAAyB,SAAS,KAAK,GAAG;AAC1D,YAAU,UAAU,oBAAoB,UAAU,OAAO;AACzD,MAAI,SAAS;AACX,WAAQ,QAAQ,MAAuC;EACzD;AAGA,SAAQ,QAAQ,MAAuC,OAAQ,QAAgB;AACjF;;;AH5IM,IAAAE,sBAAA;AC1CN,IAAAC,gBAAkB;AAsEZ,IAAAC,sBAAA;ADtDN,SAAS,iBAAiE,MAAc;AAKtF,QAAM,gBAAgB,OAAO;AAC7B,QAAM,CAAC,yBAAyB,qBAAqB,IAAI,mBAAmB,aAAa;AAUzF,QAAM,CAAC,wBAAwB,oBAAoB,IAAI;IACrD;IACA,EAAE,eAAe,EAAE,SAAS,KAAK,GAAG,SAAS,oBAAI,IAAI,EAAE;EACzD;AAEA,QAAM,qBAA2E,CAAC,UAAU;AAC1F,UAAM,EAAE,OAAO,SAAS,IAAI;AAC5B,UAAM,MAAM,aAAAC,QAAM,OAA0B,IAAI;AAChD,UAAM,UAAU,aAAAA,QAAM,OAAgC,oBAAI,IAAI,CAAC,EAAE;AACjE,eACE,yBAAC,wBAAA,EAAuB,OAAc,SAAkB,eAAe,KACpE,SAAA,CACH;EAEJ;AAEA,qBAAmB,cAAc;AAMjC,QAAM,uBAAuB,OAAO;AAEpC,QAAM,qBAAqB,WAAW,oBAAoB;AAC1D,QAAM,iBAAiB,aAAAA,QAAM;IAC3B,CAAC,OAAO,iBAAiB;AACvB,YAAM,EAAE,OAAO,SAAS,IAAI;AAC5B,YAAM,UAAU,qBAAqB,sBAAsB,KAAK;AAChE,YAAM,eAAe,gBAAgB,cAAc,QAAQ,aAAa;AACxE,iBAAO,yBAAC,oBAAA,EAAmB,KAAK,cAAe,SAAA,CAAS;IAC1D;EACF;AAEA,iBAAe,cAAc;AAM7B,QAAM,iBAAiB,OAAO;AAC9B,QAAM,iBAAiB;AAOvB,QAAM,yBAAyB,WAAW,cAAc;AACxD,QAAM,qBAAqB,aAAAA,QAAM;IAC/B,CAAC,OAAO,iBAAiB;AACvB,YAAM,EAAE,OAAO,UAAU,GAAG,SAAS,IAAI;AACzC,YAAM,MAAM,aAAAA,QAAM,OAAoB,IAAI;AAC1C,YAAM,eAAe,gBAAgB,cAAc,GAAG;AACtD,YAAM,UAAU,qBAAqB,gBAAgB,KAAK;AAE1D,mBAAAA,QAAM,UAAU,MAAM;AACpB,gBAAQ,QAAQ,IAAI,KAAK,EAAE,KAAK,GAAI,SAAiC,CAAC;AACtE,eAAO,MAAM,KAAK,QAAQ,QAAQ,OAAO,GAAG;MAC9C,CAAC;AAED,iBACE,yBAAC,wBAAA,EAAwB,GAAG,EAAE,CAAC,cAAc,GAAG,GAAG,GAAG,KAAK,cACxD,SAAA,CACH;IAEJ;EACF;AAEA,qBAAmB,cAAc;AAMjC,WAAS,cAAc,OAAY;AACjC,UAAM,UAAU,qBAAqB,OAAO,sBAAsB,KAAK;AAEvE,UAAM,WAAW,aAAAA,QAAM,YAAY,MAAM;AACvC,YAAM,iBAAiB,QAAQ,cAAc;AAC7C,UAAI,CAAC,eAAgB,QAAO,CAAC;AAC7B,YAAM,eAAe,MAAM,KAAK,eAAe,iBAAiB,IAAI,cAAc,GAAG,CAAC;AACtF,YAAM,QAAQ,MAAM,KAAK,QAAQ,QAAQ,OAAO,CAAC;AACjD,YAAM,eAAe,MAAM;QACzB,CAAC,GAAG,MAAM,aAAa,QAAQ,EAAE,IAAI,OAAQ,IAAI,aAAa,QAAQ,EAAE,IAAI,OAAQ;MACtF;AACA,aAAO;IACT,GAAG,CAAC,QAAQ,eAAe,QAAQ,OAAO,CAAC;AAE3C,WAAO;EACT;AAEA,SAAO;IACL,EAAE,UAAU,oBAAoB,MAAM,gBAAgB,UAAU,mBAAmB;IACnF;IACA;EACF;AACF;;;AIjIA,IAAAC,SAAuB;AAed,IAAAC,sBAAA;AAZT,IAAM,mBAAyB,qBAAqC,MAAS;AAiB7E,SAAS,aAAa,UAAsB;AAC1C,QAAM,YAAkB,kBAAW,gBAAgB;AACnD,SAAO,YAAY,aAAa;AAClC;;;ACrBA,IAAAC,SAAuB;AAGvB,SAAS,QAAQ,SAA6B;AAC5C,QAAM,CAAC,MAAM,OAAO,IAAU,gBAAwD,MAAS;AAE/F,mBAAgB,MAAM;AACpB,QAAI,SAAS;AAEX,cAAQ,EAAE,OAAO,QAAQ,aAAa,QAAQ,QAAQ,aAAa,CAAC;AAEpE,YAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACrD,YAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B;QACF;AAIA,YAAI,CAAC,QAAQ,QAAQ;AACnB;QACF;AAEA,cAAM,QAAQ,QAAQ,CAAC;AACvB,YAAI;AACJ,YAAI;AAEJ,YAAI,mBAAmB,OAAO;AAC5B,gBAAM,kBAAkB,MAAM,eAAe;AAE7C,gBAAM,aAAa,MAAM,QAAQ,eAAe,IAAI,gBAAgB,CAAC,IAAI;AACzE,kBAAQ,WAAW,YAAY;AAC/B,mBAAS,WAAW,WAAW;QACjC,OAAO;AAGL,kBAAQ,QAAQ;AAChB,mBAAS,QAAQ;QACnB;AAEA,gBAAQ,EAAE,OAAO,OAAO,CAAC;MAC3B,CAAC;AAED,qBAAe,QAAQ,SAAS,EAAE,KAAK,aAAa,CAAC;AAErD,aAAO,MAAM,eAAe,UAAU,OAAO;IAC/C,OAAO;AAGL,cAAQ,MAAS;IACnB;EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AACT;;;ACvDA,IAAAC,SAAuB;AAEvB,SAAS,YAAe,OAAU;AAChC,QAAM,MAAY,cAAO,EAAE,OAAO,UAAU,MAAM,CAAC;AAKnD,SAAa,eAAQ,MAAM;AACzB,QAAI,IAAI,QAAQ,UAAU,OAAO;AAC/B,UAAI,QAAQ,WAAW,IAAI,QAAQ;AACnC,UAAI,QAAQ,QAAQ;IACtB;AACA,WAAO,IAAI,QAAQ;EACrB,GAAG,CAAC,KAAK,CAAC;AACZ;",
+ "names": ["Slot", "props", "Slottable", "Fragment", "import_jsx_runtime", "import_react", "import_jsx_runtime", "React", "React", "import_jsx_runtime", "React", "React"]
+}
diff --git a/node_modules/.vite/deps/chunk-LIWCVBQK.js b/node_modules/.vite/deps/chunk-LIWCVBQK.js
new file mode 100644
index 00000000..21e92553
--- /dev/null
+++ b/node_modules/.vite/deps/chunk-LIWCVBQK.js
@@ -0,0 +1,1352 @@
+import {
+ Primitive,
+ composeEventHandlers,
+ dispatchDiscreteCustomEvent,
+ useCallbackRef,
+ useLayoutEffect2
+} from "./chunk-MOFDO34C.js";
+import {
+ useComposedRefs
+} from "./chunk-2VUH7NEY.js";
+import {
+ require_react_dom
+} from "./chunk-YF4B4G2L.js";
+import {
+ require_jsx_runtime
+} from "./chunk-2YVA4HRZ.js";
+import {
+ require_react
+} from "./chunk-WUR7D6NS.js";
+import {
+ __toESM
+} from "./chunk-G3PMV62Z.js";
+
+// node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
+var React2 = __toESM(require_react(), 1);
+
+// node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs
+var React = __toESM(require_react(), 1);
+function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
+ const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);
+ React.useEffect(() => {
+ const handleKeyDown = (event) => {
+ if (event.key === "Escape") {
+ onEscapeKeyDown(event);
+ }
+ };
+ ownerDocument.addEventListener("keydown", handleKeyDown, { capture: true });
+ return () => ownerDocument.removeEventListener("keydown", handleKeyDown, { capture: true });
+ }, [onEscapeKeyDown, ownerDocument]);
+}
+
+// node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
+var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
+var DISMISSABLE_LAYER_NAME = "DismissableLayer";
+var CONTEXT_UPDATE = "dismissableLayer.update";
+var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
+var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
+var originalBodyPointerEvents;
+var DismissableLayerContext = React2.createContext({
+ layers: /* @__PURE__ */ new Set(),
+ layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
+ branches: /* @__PURE__ */ new Set()
+});
+var DismissableLayer = React2.forwardRef(
+ (props, forwardedRef) => {
+ const {
+ disableOutsidePointerEvents = false,
+ onEscapeKeyDown,
+ onPointerDownOutside,
+ onFocusOutside,
+ onInteractOutside,
+ onDismiss,
+ ...layerProps
+ } = props;
+ const context = React2.useContext(DismissableLayerContext);
+ const [node, setNode] = React2.useState(null);
+ const ownerDocument = node?.ownerDocument ?? globalThis?.document;
+ const [, force] = React2.useState({});
+ const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
+ const layers = Array.from(context.layers);
+ const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
+ const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
+ const index = node ? layers.indexOf(node) : -1;
+ const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
+ const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
+ const pointerDownOutside = usePointerDownOutside((event) => {
+ const target = event.target;
+ const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));
+ if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
+ onPointerDownOutside?.(event);
+ onInteractOutside?.(event);
+ if (!event.defaultPrevented) onDismiss?.();
+ }, ownerDocument);
+ const focusOutside = useFocusOutside((event) => {
+ const target = event.target;
+ const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));
+ if (isFocusInBranch) return;
+ onFocusOutside?.(event);
+ onInteractOutside?.(event);
+ if (!event.defaultPrevented) onDismiss?.();
+ }, ownerDocument);
+ useEscapeKeydown((event) => {
+ const isHighestLayer = index === context.layers.size - 1;
+ if (!isHighestLayer) return;
+ onEscapeKeyDown?.(event);
+ if (!event.defaultPrevented && onDismiss) {
+ event.preventDefault();
+ onDismiss();
+ }
+ }, ownerDocument);
+ React2.useEffect(() => {
+ if (!node) return;
+ if (disableOutsidePointerEvents) {
+ if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
+ originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
+ ownerDocument.body.style.pointerEvents = "none";
+ }
+ context.layersWithOutsidePointerEventsDisabled.add(node);
+ }
+ context.layers.add(node);
+ dispatchUpdate();
+ return () => {
+ if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {
+ ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;
+ }
+ };
+ }, [node, ownerDocument, disableOutsidePointerEvents, context]);
+ React2.useEffect(() => {
+ return () => {
+ if (!node) return;
+ context.layers.delete(node);
+ context.layersWithOutsidePointerEventsDisabled.delete(node);
+ dispatchUpdate();
+ };
+ }, [node, context]);
+ React2.useEffect(() => {
+ const handleUpdate = () => force({});
+ document.addEventListener(CONTEXT_UPDATE, handleUpdate);
+ return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
+ }, []);
+ return (0, import_jsx_runtime.jsx)(
+ Primitive.div,
+ {
+ ...layerProps,
+ ref: composedRefs,
+ style: {
+ pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : void 0,
+ ...props.style
+ },
+ onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),
+ onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),
+ onPointerDownCapture: composeEventHandlers(
+ props.onPointerDownCapture,
+ pointerDownOutside.onPointerDownCapture
+ )
+ }
+ );
+ }
+);
+DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
+var BRANCH_NAME = "DismissableLayerBranch";
+var DismissableLayerBranch = React2.forwardRef((props, forwardedRef) => {
+ const context = React2.useContext(DismissableLayerContext);
+ const ref = React2.useRef(null);
+ const composedRefs = useComposedRefs(forwardedRef, ref);
+ React2.useEffect(() => {
+ const node = ref.current;
+ if (node) {
+ context.branches.add(node);
+ return () => {
+ context.branches.delete(node);
+ };
+ }
+ }, [context.branches]);
+ return (0, import_jsx_runtime.jsx)(Primitive.div, { ...props, ref: composedRefs });
+});
+DismissableLayerBranch.displayName = BRANCH_NAME;
+function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
+ const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);
+ const isPointerInsideReactTreeRef = React2.useRef(false);
+ const handleClickRef = React2.useRef(() => {
+ });
+ React2.useEffect(() => {
+ const handlePointerDown = (event) => {
+ if (event.target && !isPointerInsideReactTreeRef.current) {
+ let handleAndDispatchPointerDownOutsideEvent2 = function() {
+ handleAndDispatchCustomEvent(
+ POINTER_DOWN_OUTSIDE,
+ handlePointerDownOutside,
+ eventDetail,
+ { discrete: true }
+ );
+ };
+ var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;
+ const eventDetail = { originalEvent: event };
+ if (event.pointerType === "touch") {
+ ownerDocument.removeEventListener("click", handleClickRef.current);
+ handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
+ ownerDocument.addEventListener("click", handleClickRef.current, { once: true });
+ } else {
+ handleAndDispatchPointerDownOutsideEvent2();
+ }
+ } else {
+ ownerDocument.removeEventListener("click", handleClickRef.current);
+ }
+ isPointerInsideReactTreeRef.current = false;
+ };
+ const timerId = window.setTimeout(() => {
+ ownerDocument.addEventListener("pointerdown", handlePointerDown);
+ }, 0);
+ return () => {
+ window.clearTimeout(timerId);
+ ownerDocument.removeEventListener("pointerdown", handlePointerDown);
+ ownerDocument.removeEventListener("click", handleClickRef.current);
+ };
+ }, [ownerDocument, handlePointerDownOutside]);
+ return {
+ // ensures we check React component tree (not just DOM tree)
+ onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true
+ };
+}
+function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
+ const handleFocusOutside = useCallbackRef(onFocusOutside);
+ const isFocusInsideReactTreeRef = React2.useRef(false);
+ React2.useEffect(() => {
+ const handleFocus = (event) => {
+ if (event.target && !isFocusInsideReactTreeRef.current) {
+ const eventDetail = { originalEvent: event };
+ handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
+ discrete: false
+ });
+ }
+ };
+ ownerDocument.addEventListener("focusin", handleFocus);
+ return () => ownerDocument.removeEventListener("focusin", handleFocus);
+ }, [ownerDocument, handleFocusOutside]);
+ return {
+ onFocusCapture: () => isFocusInsideReactTreeRef.current = true,
+ onBlurCapture: () => isFocusInsideReactTreeRef.current = false
+ };
+}
+function dispatchUpdate() {
+ const event = new CustomEvent(CONTEXT_UPDATE);
+ document.dispatchEvent(event);
+}
+function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
+ const target = detail.originalEvent.target;
+ const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });
+ if (handler) target.addEventListener(name, handler, { once: true });
+ if (discrete) {
+ dispatchDiscreteCustomEvent(target, event);
+ } else {
+ target.dispatchEvent(event);
+ }
+}
+
+// node_modules/@radix-ui/react-focus-scope/dist/index.mjs
+var React3 = __toESM(require_react(), 1);
+var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
+var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
+var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
+var EVENT_OPTIONS = { bubbles: false, cancelable: true };
+var FOCUS_SCOPE_NAME = "FocusScope";
+var FocusScope = React3.forwardRef((props, forwardedRef) => {
+ const {
+ loop = false,
+ trapped = false,
+ onMountAutoFocus: onMountAutoFocusProp,
+ onUnmountAutoFocus: onUnmountAutoFocusProp,
+ ...scopeProps
+ } = props;
+ const [container, setContainer] = React3.useState(null);
+ const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);
+ const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);
+ const lastFocusedElementRef = React3.useRef(null);
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));
+ const focusScope = React3.useRef({
+ paused: false,
+ pause() {
+ this.paused = true;
+ },
+ resume() {
+ this.paused = false;
+ }
+ }).current;
+ React3.useEffect(() => {
+ if (trapped) {
+ let handleFocusIn2 = function(event) {
+ if (focusScope.paused || !container) return;
+ const target = event.target;
+ if (container.contains(target)) {
+ lastFocusedElementRef.current = target;
+ } else {
+ focus(lastFocusedElementRef.current, { select: true });
+ }
+ }, handleFocusOut2 = function(event) {
+ if (focusScope.paused || !container) return;
+ const relatedTarget = event.relatedTarget;
+ if (relatedTarget === null) return;
+ if (!container.contains(relatedTarget)) {
+ focus(lastFocusedElementRef.current, { select: true });
+ }
+ }, handleMutations2 = function(mutations) {
+ const focusedElement = document.activeElement;
+ if (focusedElement !== document.body) return;
+ for (const mutation of mutations) {
+ if (mutation.removedNodes.length > 0) focus(container);
+ }
+ };
+ var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;
+ document.addEventListener("focusin", handleFocusIn2);
+ document.addEventListener("focusout", handleFocusOut2);
+ const mutationObserver = new MutationObserver(handleMutations2);
+ if (container) mutationObserver.observe(container, { childList: true, subtree: true });
+ return () => {
+ document.removeEventListener("focusin", handleFocusIn2);
+ document.removeEventListener("focusout", handleFocusOut2);
+ mutationObserver.disconnect();
+ };
+ }
+ }, [trapped, container, focusScope.paused]);
+ React3.useEffect(() => {
+ if (container) {
+ focusScopesStack.add(focusScope);
+ const previouslyFocusedElement = document.activeElement;
+ const hasFocusedCandidate = container.contains(previouslyFocusedElement);
+ if (!hasFocusedCandidate) {
+ const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
+ container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
+ container.dispatchEvent(mountEvent);
+ if (!mountEvent.defaultPrevented) {
+ focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
+ if (document.activeElement === previouslyFocusedElement) {
+ focus(container);
+ }
+ }
+ }
+ return () => {
+ container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
+ setTimeout(() => {
+ const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
+ container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
+ container.dispatchEvent(unmountEvent);
+ if (!unmountEvent.defaultPrevented) {
+ focus(previouslyFocusedElement ?? document.body, { select: true });
+ }
+ container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
+ focusScopesStack.remove(focusScope);
+ }, 0);
+ };
+ }
+ }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
+ const handleKeyDown = React3.useCallback(
+ (event) => {
+ if (!loop && !trapped) return;
+ if (focusScope.paused) return;
+ const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
+ const focusedElement = document.activeElement;
+ if (isTabKey && focusedElement) {
+ const container2 = event.currentTarget;
+ const [first, last] = getTabbableEdges(container2);
+ const hasTabbableElementsInside = first && last;
+ if (!hasTabbableElementsInside) {
+ if (focusedElement === container2) event.preventDefault();
+ } else {
+ if (!event.shiftKey && focusedElement === last) {
+ event.preventDefault();
+ if (loop) focus(first, { select: true });
+ } else if (event.shiftKey && focusedElement === first) {
+ event.preventDefault();
+ if (loop) focus(last, { select: true });
+ }
+ }
+ }
+ },
+ [loop, trapped, focusScope.paused]
+ );
+ return (0, import_jsx_runtime2.jsx)(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
+});
+FocusScope.displayName = FOCUS_SCOPE_NAME;
+function focusFirst(candidates, { select = false } = {}) {
+ const previouslyFocusedElement = document.activeElement;
+ for (const candidate of candidates) {
+ focus(candidate, { select });
+ if (document.activeElement !== previouslyFocusedElement) return;
+ }
+}
+function getTabbableEdges(container) {
+ const candidates = getTabbableCandidates(container);
+ const first = findVisible(candidates, container);
+ const last = findVisible(candidates.reverse(), container);
+ return [first, last];
+}
+function getTabbableCandidates(container) {
+ const nodes = [];
+ const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
+ acceptNode: (node) => {
+ const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden";
+ if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;
+ return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
+ }
+ });
+ while (walker.nextNode()) nodes.push(walker.currentNode);
+ return nodes;
+}
+function findVisible(elements, container) {
+ for (const element of elements) {
+ if (!isHidden(element, { upTo: container })) return element;
+ }
+}
+function isHidden(node, { upTo }) {
+ if (getComputedStyle(node).visibility === "hidden") return true;
+ while (node) {
+ if (upTo !== void 0 && node === upTo) return false;
+ if (getComputedStyle(node).display === "none") return true;
+ node = node.parentElement;
+ }
+ return false;
+}
+function isSelectableInput(element) {
+ return element instanceof HTMLInputElement && "select" in element;
+}
+function focus(element, { select = false } = {}) {
+ if (element && element.focus) {
+ const previouslyFocusedElement = document.activeElement;
+ element.focus({ preventScroll: true });
+ if (element !== previouslyFocusedElement && isSelectableInput(element) && select)
+ element.select();
+ }
+}
+var focusScopesStack = createFocusScopesStack();
+function createFocusScopesStack() {
+ let stack = [];
+ return {
+ add(focusScope) {
+ const activeFocusScope = stack[0];
+ if (focusScope !== activeFocusScope) {
+ activeFocusScope?.pause();
+ }
+ stack = arrayRemove(stack, focusScope);
+ stack.unshift(focusScope);
+ },
+ remove(focusScope) {
+ stack = arrayRemove(stack, focusScope);
+ stack[0]?.resume();
+ }
+ };
+}
+function arrayRemove(array, item) {
+ const updatedArray = [...array];
+ const index = updatedArray.indexOf(item);
+ if (index !== -1) {
+ updatedArray.splice(index, 1);
+ }
+ return updatedArray;
+}
+function removeLinks(items) {
+ return items.filter((item) => item.tagName !== "A");
+}
+
+// node_modules/@radix-ui/react-portal/dist/index.mjs
+var React4 = __toESM(require_react(), 1);
+var import_react_dom = __toESM(require_react_dom(), 1);
+var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
+var PORTAL_NAME = "Portal";
+var Portal = React4.forwardRef((props, forwardedRef) => {
+ const { container: containerProp, ...portalProps } = props;
+ const [mounted, setMounted] = React4.useState(false);
+ useLayoutEffect2(() => setMounted(true), []);
+ const container = containerProp || mounted && globalThis?.document?.body;
+ return container ? import_react_dom.default.createPortal((0, import_jsx_runtime3.jsx)(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
+});
+Portal.displayName = PORTAL_NAME;
+
+// node_modules/@radix-ui/react-focus-guards/dist/index.mjs
+var React5 = __toESM(require_react(), 1);
+var count = 0;
+function useFocusGuards() {
+ React5.useEffect(() => {
+ const edgeGuards = document.querySelectorAll("[data-radix-focus-guard]");
+ document.body.insertAdjacentElement("afterbegin", edgeGuards[0] ?? createFocusGuard());
+ document.body.insertAdjacentElement("beforeend", edgeGuards[1] ?? createFocusGuard());
+ count++;
+ return () => {
+ if (count === 1) {
+ document.querySelectorAll("[data-radix-focus-guard]").forEach((node) => node.remove());
+ }
+ count--;
+ };
+ }, []);
+}
+function createFocusGuard() {
+ const element = document.createElement("span");
+ element.setAttribute("data-radix-focus-guard", "");
+ element.tabIndex = 0;
+ element.style.outline = "none";
+ element.style.opacity = "0";
+ element.style.position = "fixed";
+ element.style.pointerEvents = "none";
+ return element;
+}
+
+// node_modules/tslib/tslib.es6.mjs
+var __assign = function() {
+ __assign = Object.assign || function __assign2(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+};
+function __rest(s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+}
+function __spreadArray(to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+}
+
+// node_modules/react-remove-scroll/dist/es2015/Combination.js
+var React14 = __toESM(require_react());
+
+// node_modules/react-remove-scroll/dist/es2015/UI.js
+var React10 = __toESM(require_react());
+
+// node_modules/react-remove-scroll-bar/dist/es2015/constants.js
+var zeroRightClassName = "right-scroll-bar-position";
+var fullWidthClassName = "width-before-scroll-bar";
+var noScrollbarsClassName = "with-scroll-bars-hidden";
+var removedBarSizeVariable = "--removed-body-scroll-bar-size";
+
+// node_modules/use-callback-ref/dist/es2015/assignRef.js
+function assignRef(ref, value) {
+ if (typeof ref === "function") {
+ ref(value);
+ } else if (ref) {
+ ref.current = value;
+ }
+ return ref;
+}
+
+// node_modules/use-callback-ref/dist/es2015/useRef.js
+var import_react = __toESM(require_react());
+function useCallbackRef2(initialValue, callback) {
+ var ref = (0, import_react.useState)(function() {
+ return {
+ // value
+ value: initialValue,
+ // last callback
+ callback,
+ // "memoized" public interface
+ facade: {
+ get current() {
+ return ref.value;
+ },
+ set current(value) {
+ var last = ref.value;
+ if (last !== value) {
+ ref.value = value;
+ ref.callback(value, last);
+ }
+ }
+ }
+ };
+ })[0];
+ ref.callback = callback;
+ return ref.facade;
+}
+
+// node_modules/use-callback-ref/dist/es2015/useMergeRef.js
+var React6 = __toESM(require_react());
+var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React6.useLayoutEffect : React6.useEffect;
+var currentValues = /* @__PURE__ */ new WeakMap();
+function useMergeRefs(refs, defaultValue) {
+ var callbackRef = useCallbackRef2(defaultValue || null, function(newValue) {
+ return refs.forEach(function(ref) {
+ return assignRef(ref, newValue);
+ });
+ });
+ useIsomorphicLayoutEffect(function() {
+ var oldValue = currentValues.get(callbackRef);
+ if (oldValue) {
+ var prevRefs_1 = new Set(oldValue);
+ var nextRefs_1 = new Set(refs);
+ var current_1 = callbackRef.current;
+ prevRefs_1.forEach(function(ref) {
+ if (!nextRefs_1.has(ref)) {
+ assignRef(ref, null);
+ }
+ });
+ nextRefs_1.forEach(function(ref) {
+ if (!prevRefs_1.has(ref)) {
+ assignRef(ref, current_1);
+ }
+ });
+ }
+ currentValues.set(callbackRef, refs);
+ }, [refs]);
+ return callbackRef;
+}
+
+// node_modules/use-sidecar/dist/es2015/hoc.js
+var React7 = __toESM(require_react());
+
+// node_modules/use-sidecar/dist/es2015/hook.js
+var import_react2 = __toESM(require_react());
+
+// node_modules/use-sidecar/dist/es2015/medium.js
+function ItoI(a) {
+ return a;
+}
+function innerCreateMedium(defaults, middleware) {
+ if (middleware === void 0) {
+ middleware = ItoI;
+ }
+ var buffer = [];
+ var assigned = false;
+ var medium = {
+ read: function() {
+ if (assigned) {
+ throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");
+ }
+ if (buffer.length) {
+ return buffer[buffer.length - 1];
+ }
+ return defaults;
+ },
+ useMedium: function(data) {
+ var item = middleware(data, assigned);
+ buffer.push(item);
+ return function() {
+ buffer = buffer.filter(function(x) {
+ return x !== item;
+ });
+ };
+ },
+ assignSyncMedium: function(cb) {
+ assigned = true;
+ while (buffer.length) {
+ var cbs = buffer;
+ buffer = [];
+ cbs.forEach(cb);
+ }
+ buffer = {
+ push: function(x) {
+ return cb(x);
+ },
+ filter: function() {
+ return buffer;
+ }
+ };
+ },
+ assignMedium: function(cb) {
+ assigned = true;
+ var pendingQueue = [];
+ if (buffer.length) {
+ var cbs = buffer;
+ buffer = [];
+ cbs.forEach(cb);
+ pendingQueue = buffer;
+ }
+ var executeQueue = function() {
+ var cbs2 = pendingQueue;
+ pendingQueue = [];
+ cbs2.forEach(cb);
+ };
+ var cycle = function() {
+ return Promise.resolve().then(executeQueue);
+ };
+ cycle();
+ buffer = {
+ push: function(x) {
+ pendingQueue.push(x);
+ cycle();
+ },
+ filter: function(filter) {
+ pendingQueue = pendingQueue.filter(filter);
+ return buffer;
+ }
+ };
+ }
+ };
+ return medium;
+}
+function createSidecarMedium(options) {
+ if (options === void 0) {
+ options = {};
+ }
+ var medium = innerCreateMedium(null);
+ medium.options = __assign({ async: true, ssr: false }, options);
+ return medium;
+}
+
+// node_modules/use-sidecar/dist/es2015/renderProp.js
+var React8 = __toESM(require_react());
+var import_react3 = __toESM(require_react());
+
+// node_modules/use-sidecar/dist/es2015/exports.js
+var React9 = __toESM(require_react());
+var SideCar = function(_a) {
+ var sideCar = _a.sideCar, rest = __rest(_a, ["sideCar"]);
+ if (!sideCar) {
+ throw new Error("Sidecar: please provide `sideCar` property to import the right car");
+ }
+ var Target = sideCar.read();
+ if (!Target) {
+ throw new Error("Sidecar medium not found");
+ }
+ return React9.createElement(Target, __assign({}, rest));
+};
+SideCar.isSideCarExport = true;
+function exportSidecar(medium, exported) {
+ medium.useMedium(exported);
+ return SideCar;
+}
+
+// node_modules/react-remove-scroll/dist/es2015/medium.js
+var effectCar = createSidecarMedium();
+
+// node_modules/react-remove-scroll/dist/es2015/UI.js
+var nothing = function() {
+ return;
+};
+var RemoveScroll = React10.forwardRef(function(props, parentRef) {
+ var ref = React10.useRef(null);
+ var _a = React10.useState({
+ onScrollCapture: nothing,
+ onWheelCapture: nothing,
+ onTouchMoveCapture: nothing
+ }), callbacks = _a[0], setCallbacks = _a[1];
+ var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? "div" : _b, gapMode = props.gapMode, rest = __rest(props, ["forwardProps", "children", "className", "removeScrollBar", "enabled", "shards", "sideCar", "noRelative", "noIsolation", "inert", "allowPinchZoom", "as", "gapMode"]);
+ var SideCar2 = sideCar;
+ var containerRef = useMergeRefs([ref, parentRef]);
+ var containerProps = __assign(__assign({}, rest), callbacks);
+ return React10.createElement(
+ React10.Fragment,
+ null,
+ enabled && React10.createElement(SideCar2, { sideCar: effectCar, removeScrollBar, shards, noRelative, noIsolation, inert, setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode }),
+ forwardProps ? React10.cloneElement(React10.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React10.createElement(Container, __assign({}, containerProps, { className, ref: containerRef }), children)
+ );
+});
+RemoveScroll.defaultProps = {
+ enabled: true,
+ removeScrollBar: true,
+ inert: false
+};
+RemoveScroll.classNames = {
+ fullWidth: fullWidthClassName,
+ zeroRight: zeroRightClassName
+};
+
+// node_modules/react-remove-scroll/dist/es2015/SideEffect.js
+var React13 = __toESM(require_react());
+
+// node_modules/react-remove-scroll-bar/dist/es2015/component.js
+var React12 = __toESM(require_react());
+
+// node_modules/react-style-singleton/dist/es2015/hook.js
+var React11 = __toESM(require_react());
+
+// node_modules/get-nonce/dist/es2015/index.js
+var currentNonce;
+var getNonce = function() {
+ if (currentNonce) {
+ return currentNonce;
+ }
+ if (typeof __webpack_nonce__ !== "undefined") {
+ return __webpack_nonce__;
+ }
+ return void 0;
+};
+
+// node_modules/react-style-singleton/dist/es2015/singleton.js
+function makeStyleTag() {
+ if (!document)
+ return null;
+ var tag = document.createElement("style");
+ tag.type = "text/css";
+ var nonce = getNonce();
+ if (nonce) {
+ tag.setAttribute("nonce", nonce);
+ }
+ return tag;
+}
+function injectStyles(tag, css) {
+ if (tag.styleSheet) {
+ tag.styleSheet.cssText = css;
+ } else {
+ tag.appendChild(document.createTextNode(css));
+ }
+}
+function insertStyleTag(tag) {
+ var head = document.head || document.getElementsByTagName("head")[0];
+ head.appendChild(tag);
+}
+var stylesheetSingleton = function() {
+ var counter = 0;
+ var stylesheet = null;
+ return {
+ add: function(style) {
+ if (counter == 0) {
+ if (stylesheet = makeStyleTag()) {
+ injectStyles(stylesheet, style);
+ insertStyleTag(stylesheet);
+ }
+ }
+ counter++;
+ },
+ remove: function() {
+ counter--;
+ if (!counter && stylesheet) {
+ stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);
+ stylesheet = null;
+ }
+ }
+ };
+};
+
+// node_modules/react-style-singleton/dist/es2015/hook.js
+var styleHookSingleton = function() {
+ var sheet = stylesheetSingleton();
+ return function(styles, isDynamic) {
+ React11.useEffect(function() {
+ sheet.add(styles);
+ return function() {
+ sheet.remove();
+ };
+ }, [styles && isDynamic]);
+ };
+};
+
+// node_modules/react-style-singleton/dist/es2015/component.js
+var styleSingleton = function() {
+ var useStyle = styleHookSingleton();
+ var Sheet = function(_a) {
+ var styles = _a.styles, dynamic = _a.dynamic;
+ useStyle(styles, dynamic);
+ return null;
+ };
+ return Sheet;
+};
+
+// node_modules/react-remove-scroll-bar/dist/es2015/utils.js
+var zeroGap = {
+ left: 0,
+ top: 0,
+ right: 0,
+ gap: 0
+};
+var parse = function(x) {
+ return parseInt(x || "", 10) || 0;
+};
+var getOffset = function(gapMode) {
+ var cs = window.getComputedStyle(document.body);
+ var left = cs[gapMode === "padding" ? "paddingLeft" : "marginLeft"];
+ var top = cs[gapMode === "padding" ? "paddingTop" : "marginTop"];
+ var right = cs[gapMode === "padding" ? "paddingRight" : "marginRight"];
+ return [parse(left), parse(top), parse(right)];
+};
+var getGapWidth = function(gapMode) {
+ if (gapMode === void 0) {
+ gapMode = "margin";
+ }
+ if (typeof window === "undefined") {
+ return zeroGap;
+ }
+ var offsets = getOffset(gapMode);
+ var documentWidth = document.documentElement.clientWidth;
+ var windowWidth = window.innerWidth;
+ return {
+ left: offsets[0],
+ top: offsets[1],
+ right: offsets[2],
+ gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0])
+ };
+};
+
+// node_modules/react-remove-scroll-bar/dist/es2015/component.js
+var Style = styleSingleton();
+var lockAttribute = "data-scroll-locked";
+var getStyles = function(_a, allowRelative, gapMode, important) {
+ var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;
+ if (gapMode === void 0) {
+ gapMode = "margin";
+ }
+ return "\n .".concat(noScrollbarsClassName, " {\n overflow: hidden ").concat(important, ";\n padding-right: ").concat(gap, "px ").concat(important, ";\n }\n body[").concat(lockAttribute, "] {\n overflow: hidden ").concat(important, ";\n overscroll-behavior: contain;\n ").concat([
+ allowRelative && "position: relative ".concat(important, ";"),
+ gapMode === "margin" && "\n padding-left: ".concat(left, "px;\n padding-top: ").concat(top, "px;\n padding-right: ").concat(right, "px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(gap, "px ").concat(important, ";\n "),
+ gapMode === "padding" && "padding-right: ".concat(gap, "px ").concat(important, ";")
+ ].filter(Boolean).join(""), "\n }\n \n .").concat(zeroRightClassName, " {\n right: ").concat(gap, "px ").concat(important, ";\n }\n \n .").concat(fullWidthClassName, " {\n margin-right: ").concat(gap, "px ").concat(important, ";\n }\n \n .").concat(zeroRightClassName, " .").concat(zeroRightClassName, " {\n right: 0 ").concat(important, ";\n }\n \n .").concat(fullWidthClassName, " .").concat(fullWidthClassName, " {\n margin-right: 0 ").concat(important, ";\n }\n \n body[").concat(lockAttribute, "] {\n ").concat(removedBarSizeVariable, ": ").concat(gap, "px;\n }\n");
+};
+var getCurrentUseCounter = function() {
+ var counter = parseInt(document.body.getAttribute(lockAttribute) || "0", 10);
+ return isFinite(counter) ? counter : 0;
+};
+var useLockAttribute = function() {
+ React12.useEffect(function() {
+ document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());
+ return function() {
+ var newCounter = getCurrentUseCounter() - 1;
+ if (newCounter <= 0) {
+ document.body.removeAttribute(lockAttribute);
+ } else {
+ document.body.setAttribute(lockAttribute, newCounter.toString());
+ }
+ };
+ }, []);
+};
+var RemoveScrollBar = function(_a) {
+ var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? "margin" : _b;
+ useLockAttribute();
+ var gap = React12.useMemo(function() {
+ return getGapWidth(gapMode);
+ }, [gapMode]);
+ return React12.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? "!important" : "") });
+};
+
+// node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js
+var passiveSupported = false;
+if (typeof window !== "undefined") {
+ try {
+ options = Object.defineProperty({}, "passive", {
+ get: function() {
+ passiveSupported = true;
+ return true;
+ }
+ });
+ window.addEventListener("test", options, options);
+ window.removeEventListener("test", options, options);
+ } catch (err) {
+ passiveSupported = false;
+ }
+}
+var options;
+var nonPassive = passiveSupported ? { passive: false } : false;
+
+// node_modules/react-remove-scroll/dist/es2015/handleScroll.js
+var alwaysContainsScroll = function(node) {
+ return node.tagName === "TEXTAREA";
+};
+var elementCanBeScrolled = function(node, overflow) {
+ if (!(node instanceof Element)) {
+ return false;
+ }
+ var styles = window.getComputedStyle(node);
+ return (
+ // not-not-scrollable
+ styles[overflow] !== "hidden" && // contains scroll inside self
+ !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === "visible")
+ );
+};
+var elementCouldBeVScrolled = function(node) {
+ return elementCanBeScrolled(node, "overflowY");
+};
+var elementCouldBeHScrolled = function(node) {
+ return elementCanBeScrolled(node, "overflowX");
+};
+var locationCouldBeScrolled = function(axis, node) {
+ var ownerDocument = node.ownerDocument;
+ var current = node;
+ do {
+ if (typeof ShadowRoot !== "undefined" && current instanceof ShadowRoot) {
+ current = current.host;
+ }
+ var isScrollable = elementCouldBeScrolled(axis, current);
+ if (isScrollable) {
+ var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];
+ if (scrollHeight > clientHeight) {
+ return true;
+ }
+ }
+ current = current.parentNode;
+ } while (current && current !== ownerDocument.body);
+ return false;
+};
+var getVScrollVariables = function(_a) {
+ var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;
+ return [
+ scrollTop,
+ scrollHeight,
+ clientHeight
+ ];
+};
+var getHScrollVariables = function(_a) {
+ var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;
+ return [
+ scrollLeft,
+ scrollWidth,
+ clientWidth
+ ];
+};
+var elementCouldBeScrolled = function(axis, node) {
+ return axis === "v" ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);
+};
+var getScrollVariables = function(axis, node) {
+ return axis === "v" ? getVScrollVariables(node) : getHScrollVariables(node);
+};
+var getDirectionFactor = function(axis, direction) {
+ return axis === "h" && direction === "rtl" ? -1 : 1;
+};
+var handleScroll = function(axis, endTarget, event, sourceDelta, noOverscroll) {
+ var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);
+ var delta = directionFactor * sourceDelta;
+ var target = event.target;
+ var targetInLock = endTarget.contains(target);
+ var shouldCancelScroll = false;
+ var isDeltaPositive = delta > 0;
+ var availableScroll = 0;
+ var availableScrollTop = 0;
+ do {
+ if (!target) {
+ break;
+ }
+ var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];
+ var elementScroll = scroll_1 - capacity - directionFactor * position;
+ if (position || elementScroll) {
+ if (elementCouldBeScrolled(axis, target)) {
+ availableScroll += elementScroll;
+ availableScrollTop += position;
+ }
+ }
+ var parent_1 = target.parentNode;
+ target = parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1;
+ } while (
+ // portaled content
+ !targetInLock && target !== document.body || // self content
+ targetInLock && (endTarget.contains(target) || endTarget === target)
+ );
+ if (isDeltaPositive && (noOverscroll && Math.abs(availableScroll) < 1 || !noOverscroll && delta > availableScroll)) {
+ shouldCancelScroll = true;
+ } else if (!isDeltaPositive && (noOverscroll && Math.abs(availableScrollTop) < 1 || !noOverscroll && -delta > availableScrollTop)) {
+ shouldCancelScroll = true;
+ }
+ return shouldCancelScroll;
+};
+
+// node_modules/react-remove-scroll/dist/es2015/SideEffect.js
+var getTouchXY = function(event) {
+ return "changedTouches" in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];
+};
+var getDeltaXY = function(event) {
+ return [event.deltaX, event.deltaY];
+};
+var extractRef = function(ref) {
+ return ref && "current" in ref ? ref.current : ref;
+};
+var deltaCompare = function(x, y) {
+ return x[0] === y[0] && x[1] === y[1];
+};
+var generateStyle = function(id) {
+ return "\n .block-interactivity-".concat(id, " {pointer-events: none;}\n .allow-interactivity-").concat(id, " {pointer-events: all;}\n");
+};
+var idCounter = 0;
+var lockStack = [];
+function RemoveScrollSideCar(props) {
+ var shouldPreventQueue = React13.useRef([]);
+ var touchStartRef = React13.useRef([0, 0]);
+ var activeAxis = React13.useRef();
+ var id = React13.useState(idCounter++)[0];
+ var Style2 = React13.useState(styleSingleton)[0];
+ var lastProps = React13.useRef(props);
+ React13.useEffect(function() {
+ lastProps.current = props;
+ }, [props]);
+ React13.useEffect(function() {
+ if (props.inert) {
+ document.body.classList.add("block-interactivity-".concat(id));
+ var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);
+ allow_1.forEach(function(el) {
+ return el.classList.add("allow-interactivity-".concat(id));
+ });
+ return function() {
+ document.body.classList.remove("block-interactivity-".concat(id));
+ allow_1.forEach(function(el) {
+ return el.classList.remove("allow-interactivity-".concat(id));
+ });
+ };
+ }
+ return;
+ }, [props.inert, props.lockRef.current, props.shards]);
+ var shouldCancelEvent = React13.useCallback(function(event, parent) {
+ if ("touches" in event && event.touches.length === 2 || event.type === "wheel" && event.ctrlKey) {
+ return !lastProps.current.allowPinchZoom;
+ }
+ var touch = getTouchXY(event);
+ var touchStart = touchStartRef.current;
+ var deltaX = "deltaX" in event ? event.deltaX : touchStart[0] - touch[0];
+ var deltaY = "deltaY" in event ? event.deltaY : touchStart[1] - touch[1];
+ var currentAxis;
+ var target = event.target;
+ var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? "h" : "v";
+ if ("touches" in event && moveDirection === "h" && target.type === "range") {
+ return false;
+ }
+ var selection = window.getSelection();
+ var anchorNode = selection && selection.anchorNode;
+ var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;
+ if (isTouchingSelection) {
+ return false;
+ }
+ var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);
+ if (!canBeScrolledInMainDirection) {
+ return true;
+ }
+ if (canBeScrolledInMainDirection) {
+ currentAxis = moveDirection;
+ } else {
+ currentAxis = moveDirection === "v" ? "h" : "v";
+ canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);
+ }
+ if (!canBeScrolledInMainDirection) {
+ return false;
+ }
+ if (!activeAxis.current && "changedTouches" in event && (deltaX || deltaY)) {
+ activeAxis.current = currentAxis;
+ }
+ if (!currentAxis) {
+ return true;
+ }
+ var cancelingAxis = activeAxis.current || currentAxis;
+ return handleScroll(cancelingAxis, parent, event, cancelingAxis === "h" ? deltaX : deltaY, true);
+ }, []);
+ var shouldPrevent = React13.useCallback(function(_event) {
+ var event = _event;
+ if (!lockStack.length || lockStack[lockStack.length - 1] !== Style2) {
+ return;
+ }
+ var delta = "deltaY" in event ? getDeltaXY(event) : getTouchXY(event);
+ var sourceEvent = shouldPreventQueue.current.filter(function(e) {
+ return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta);
+ })[0];
+ if (sourceEvent && sourceEvent.should) {
+ if (event.cancelable) {
+ event.preventDefault();
+ }
+ return;
+ }
+ if (!sourceEvent) {
+ var shardNodes = (lastProps.current.shards || []).map(extractRef).filter(Boolean).filter(function(node) {
+ return node.contains(event.target);
+ });
+ var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;
+ if (shouldStop) {
+ if (event.cancelable) {
+ event.preventDefault();
+ }
+ }
+ }
+ }, []);
+ var shouldCancel = React13.useCallback(function(name, delta, target, should) {
+ var event = { name, delta, target, should, shadowParent: getOutermostShadowParent(target) };
+ shouldPreventQueue.current.push(event);
+ setTimeout(function() {
+ shouldPreventQueue.current = shouldPreventQueue.current.filter(function(e) {
+ return e !== event;
+ });
+ }, 1);
+ }, []);
+ var scrollTouchStart = React13.useCallback(function(event) {
+ touchStartRef.current = getTouchXY(event);
+ activeAxis.current = void 0;
+ }, []);
+ var scrollWheel = React13.useCallback(function(event) {
+ shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));
+ }, []);
+ var scrollTouchMove = React13.useCallback(function(event) {
+ shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));
+ }, []);
+ React13.useEffect(function() {
+ lockStack.push(Style2);
+ props.setCallbacks({
+ onScrollCapture: scrollWheel,
+ onWheelCapture: scrollWheel,
+ onTouchMoveCapture: scrollTouchMove
+ });
+ document.addEventListener("wheel", shouldPrevent, nonPassive);
+ document.addEventListener("touchmove", shouldPrevent, nonPassive);
+ document.addEventListener("touchstart", scrollTouchStart, nonPassive);
+ return function() {
+ lockStack = lockStack.filter(function(inst) {
+ return inst !== Style2;
+ });
+ document.removeEventListener("wheel", shouldPrevent, nonPassive);
+ document.removeEventListener("touchmove", shouldPrevent, nonPassive);
+ document.removeEventListener("touchstart", scrollTouchStart, nonPassive);
+ };
+ }, []);
+ var removeScrollBar = props.removeScrollBar, inert = props.inert;
+ return React13.createElement(
+ React13.Fragment,
+ null,
+ inert ? React13.createElement(Style2, { styles: generateStyle(id) }) : null,
+ removeScrollBar ? React13.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null
+ );
+}
+function getOutermostShadowParent(node) {
+ var shadowParent = null;
+ while (node !== null) {
+ if (node instanceof ShadowRoot) {
+ shadowParent = node.host;
+ node = node.host;
+ }
+ node = node.parentNode;
+ }
+ return shadowParent;
+}
+
+// node_modules/react-remove-scroll/dist/es2015/sidecar.js
+var sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar);
+
+// node_modules/react-remove-scroll/dist/es2015/Combination.js
+var ReactRemoveScroll = React14.forwardRef(function(props, ref) {
+ return React14.createElement(RemoveScroll, __assign({}, props, { ref, sideCar: sidecar_default }));
+});
+ReactRemoveScroll.classNames = RemoveScroll.classNames;
+var Combination_default = ReactRemoveScroll;
+
+// node_modules/aria-hidden/dist/es2015/index.js
+var getDefaultParent = function(originalTarget) {
+ if (typeof document === "undefined") {
+ return null;
+ }
+ var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;
+ return sampleTarget.ownerDocument.body;
+};
+var counterMap = /* @__PURE__ */ new WeakMap();
+var uncontrolledNodes = /* @__PURE__ */ new WeakMap();
+var markerMap = {};
+var lockCount = 0;
+var unwrapHost = function(node) {
+ return node && (node.host || unwrapHost(node.parentNode));
+};
+var correctTargets = function(parent, targets) {
+ return targets.map(function(target) {
+ if (parent.contains(target)) {
+ return target;
+ }
+ var correctedTarget = unwrapHost(target);
+ if (correctedTarget && parent.contains(correctedTarget)) {
+ return correctedTarget;
+ }
+ console.error("aria-hidden", target, "in not contained inside", parent, ". Doing nothing");
+ return null;
+ }).filter(function(x) {
+ return Boolean(x);
+ });
+};
+var applyAttributeToOthers = function(originalTarget, parentNode, markerName, controlAttribute) {
+ var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
+ if (!markerMap[markerName]) {
+ markerMap[markerName] = /* @__PURE__ */ new WeakMap();
+ }
+ var markerCounter = markerMap[markerName];
+ var hiddenNodes = [];
+ var elementsToKeep = /* @__PURE__ */ new Set();
+ var elementsToStop = new Set(targets);
+ var keep = function(el) {
+ if (!el || elementsToKeep.has(el)) {
+ return;
+ }
+ elementsToKeep.add(el);
+ keep(el.parentNode);
+ };
+ targets.forEach(keep);
+ var deep = function(parent) {
+ if (!parent || elementsToStop.has(parent)) {
+ return;
+ }
+ Array.prototype.forEach.call(parent.children, function(node) {
+ if (elementsToKeep.has(node)) {
+ deep(node);
+ } else {
+ try {
+ var attr = node.getAttribute(controlAttribute);
+ var alreadyHidden = attr !== null && attr !== "false";
+ var counterValue = (counterMap.get(node) || 0) + 1;
+ var markerValue = (markerCounter.get(node) || 0) + 1;
+ counterMap.set(node, counterValue);
+ markerCounter.set(node, markerValue);
+ hiddenNodes.push(node);
+ if (counterValue === 1 && alreadyHidden) {
+ uncontrolledNodes.set(node, true);
+ }
+ if (markerValue === 1) {
+ node.setAttribute(markerName, "true");
+ }
+ if (!alreadyHidden) {
+ node.setAttribute(controlAttribute, "true");
+ }
+ } catch (e) {
+ console.error("aria-hidden: cannot operate on ", node, e);
+ }
+ }
+ });
+ };
+ deep(parentNode);
+ elementsToKeep.clear();
+ lockCount++;
+ return function() {
+ hiddenNodes.forEach(function(node) {
+ var counterValue = counterMap.get(node) - 1;
+ var markerValue = markerCounter.get(node) - 1;
+ counterMap.set(node, counterValue);
+ markerCounter.set(node, markerValue);
+ if (!counterValue) {
+ if (!uncontrolledNodes.has(node)) {
+ node.removeAttribute(controlAttribute);
+ }
+ uncontrolledNodes.delete(node);
+ }
+ if (!markerValue) {
+ node.removeAttribute(markerName);
+ }
+ });
+ lockCount--;
+ if (!lockCount) {
+ counterMap = /* @__PURE__ */ new WeakMap();
+ counterMap = /* @__PURE__ */ new WeakMap();
+ uncontrolledNodes = /* @__PURE__ */ new WeakMap();
+ markerMap = {};
+ }
+ };
+};
+var hideOthers = function(originalTarget, parentNode, markerName) {
+ if (markerName === void 0) {
+ markerName = "data-aria-hidden";
+ }
+ var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
+ var activeParentNode = parentNode || getDefaultParent(originalTarget);
+ if (!activeParentNode) {
+ return function() {
+ return null;
+ };
+ }
+ targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll("[aria-live], script")));
+ return applyAttributeToOthers(targets, activeParentNode, markerName, "aria-hidden");
+};
+
+export {
+ DismissableLayer,
+ FocusScope,
+ Portal,
+ useFocusGuards,
+ Combination_default,
+ hideOthers
+};
+//# sourceMappingURL=chunk-LIWCVBQK.js.map
diff --git a/node_modules/.vite/deps/chunk-LIWCVBQK.js.map b/node_modules/.vite/deps/chunk-LIWCVBQK.js.map
new file mode 100644
index 00000000..40af8db6
--- /dev/null
+++ b/node_modules/.vite/deps/chunk-LIWCVBQK.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../@radix-ui/react-dismissable-layer/src/dismissable-layer.tsx", "../../@radix-ui/react-use-escape-keydown/src/use-escape-keydown.tsx", "../../@radix-ui/react-focus-scope/src/focus-scope.tsx", "../../@radix-ui/react-portal/src/portal.tsx", "../../@radix-ui/react-focus-guards/src/focus-guards.tsx", "../../tslib/tslib.es6.mjs", "../../react-remove-scroll/dist/es2015/Combination.js", "../../react-remove-scroll/dist/es2015/UI.js", "../../react-remove-scroll-bar/dist/es2015/constants.js", "../../use-callback-ref/dist/es2015/assignRef.js", "../../use-callback-ref/dist/es2015/useRef.js", "../../use-callback-ref/dist/es2015/useMergeRef.js", "../../use-sidecar/dist/es2015/hoc.js", "../../use-sidecar/dist/es2015/hook.js", "../../use-sidecar/dist/es2015/medium.js", "../../use-sidecar/dist/es2015/renderProp.js", "../../use-sidecar/dist/es2015/exports.js", "../../react-remove-scroll/dist/es2015/medium.js", "../../react-remove-scroll/dist/es2015/SideEffect.js", "../../react-remove-scroll-bar/dist/es2015/component.js", "../../react-style-singleton/dist/es2015/hook.js", "../../get-nonce/dist/es2015/index.js", "../../react-style-singleton/dist/es2015/singleton.js", "../../react-style-singleton/dist/es2015/component.js", "../../react-remove-scroll-bar/dist/es2015/utils.js", "../../react-remove-scroll/dist/es2015/aggresiveCapture.js", "../../react-remove-scroll/dist/es2015/handleScroll.js", "../../react-remove-scroll/dist/es2015/sidecar.js", "../../aria-hidden/dist/es2015/index.js"],
+ "sourcesContent": ["import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown';\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayer\n * -----------------------------------------------------------------------------------------------*/\n\nconst DISMISSABLE_LAYER_NAME = 'DismissableLayer';\nconst CONTEXT_UPDATE = 'dismissableLayer.update';\nconst POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';\nconst FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';\n\nlet originalBodyPointerEvents: string;\n\nconst DismissableLayerContext = React.createContext({\n layers: new Set(),\n layersWithOutsidePointerEventsDisabled: new Set(),\n branches: new Set(),\n});\n\ntype DismissableLayerElement = React.ComponentRef;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef;\ninterface DismissableLayerProps extends PrimitiveDivProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: boolean;\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void;\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void;\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void;\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n onDismiss?: () => void;\n}\n\nconst DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node) => setNode(node));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled!); // prettier-ignore\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target as HTMLElement;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n const focusOutside = useFocusOutside((event) => {\n const target = event.target as HTMLElement;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = 'none';\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (\n disableOutsidePointerEvents &&\n context.layersWithOutsidePointerEventsDisabled.size === 1\n ) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n\n /**\n * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect\n * because a change to `disableOutsidePointerEvents` would remove this layer from the stack\n * and add it to the end again so the layering order wouldn't be _creation order_.\n * We only want them to be removed from context stacks when unmounted.\n */\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n\n return (\n \n );\n }\n);\n\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayerBranch\n * -----------------------------------------------------------------------------------------------*/\n\nconst BRANCH_NAME = 'DismissableLayerBranch';\n\ntype DismissableLayerBranchElement = React.ComponentRef;\ninterface DismissableLayerBranchProps extends PrimitiveDivProps {}\n\nconst DismissableLayerBranch = React.forwardRef<\n DismissableLayerBranchElement,\n DismissableLayerBranchProps\n>((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n\n return ;\n});\n\nDismissableLayerBranch.displayName = BRANCH_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PointerDownOutsideEvent = CustomEvent<{ originalEvent: PointerEvent }>;\ntype FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>;\n\n/**\n * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nfunction usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside) as EventListener;\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {});\n\n React.useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executres events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;\n ownerDocument.addEventListener('click', handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent();\n }\n } else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is not React specific, but rather how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n ownerDocument.removeEventListener('click', handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => (isPointerInsideReactTreeRef.current = true),\n };\n}\n\n/**\n * Listens for when focus happens outside a react subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nfunction useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handleFocusOutside = useCallbackRef(onFocusOutside) as EventListener;\n const isFocusInsideReactTreeRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleFocus = (event: FocusEvent) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false,\n });\n }\n };\n ownerDocument.addEventListener('focusin', handleFocus);\n return () => ownerDocument.removeEventListener('focusin', handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n\n return {\n onFocusCapture: () => (isFocusInsideReactTreeRef.current = true),\n onBlurCapture: () => (isFocusInsideReactTreeRef.current = false),\n };\n}\n\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\n\nfunction handleAndDispatchCustomEvent(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent ? D : never),\n { discrete }: { discrete: boolean }\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\n\nconst Root = DismissableLayer;\nconst Branch = DismissableLayerBranch;\n\nexport {\n DismissableLayer,\n DismissableLayerBranch,\n //\n Root,\n Branch,\n};\nexport type { DismissableLayerProps };\n", "import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\n/**\n * Listens for when the escape key is down\n */\nfunction useEscapeKeydown(\n onEscapeKeyDownProp?: (event: KeyboardEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener('keydown', handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener('keydown', handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\n\nexport { useEscapeKeydown };\n", "import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\nconst AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';\nconst AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\ntype FocusableTarget = HTMLElement | { focus(): void };\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope\n * -----------------------------------------------------------------------------------------------*/\n\nconst FOCUS_SCOPE_NAME = 'FocusScope';\n\ntype FocusScopeElement = React.ComponentRef;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef;\ninterface FocusScopeProps extends PrimitiveDivProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean;\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean;\n\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n onMountAutoFocus?: (event: Event) => void;\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n onUnmountAutoFocus?: (event: Event) => void;\n}\n\nconst FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n },\n }).current;\n\n // Takes care of trapping focus if focus is moved outside programmatically for example\n React.useEffect(() => {\n if (trapped) {\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const target = event.target as HTMLElement | null;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null) return;\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n function handleMutations(mutations: MutationRecord[]) {\n const focusedElement = document.activeElement as HTMLElement | null;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n }\n\n document.addEventListener('focusin', handleFocusIn);\n document.addEventListener('focusout', handleFocusOut);\n const mutationObserver = new MutationObserver(handleMutations);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n\n return () => {\n document.removeEventListener('focusin', handleFocusIn);\n document.removeEventListener('focusout', handleFocusOut);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement as HTMLElement | null;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n\n // We hit a react bug (fixed in v17) with focusing in unmount.\n // We need to delay the focus a little to get around it for now.\n // See: https://github.com/facebook/react/issues/17894\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n\n // Takes care of looping focus (when tabbing whilst at the edges)\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n\n const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement as HTMLElement | null;\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement;\n const [first, last] = getTabbableEdges(container);\n const hasTabbableElementsInside = first && last;\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n\n return (\n \n );\n});\n\nFocusScope.displayName = FOCUS_SCOPE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Attempts focusing the first element in a list of candidates.\n * Stops when focus has actually moved.\n */\nfunction focusFirst(candidates: HTMLElement[], { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\n\n/**\n * Returns the first and last tabbable elements inside a container.\n */\nfunction getTabbableEdges(container: HTMLElement) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last] as const;\n}\n\n/**\n * Returns a list of potential tabbable candidates.\n *\n * NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n * elements are not visible. This cannot be worked out easily by just reading a property, but rather\n * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n */\nfunction getTabbableCandidates(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n // we do not take into account the order of nodes with positive `tabIndex` as it\n // hinders accessibility to have tab order different from visual order.\n return nodes;\n}\n\n/**\n * Returns the first visible element in a list.\n * NOTE: Only checks visibility up to the `container`.\n */\nfunction findVisible(elements: HTMLElement[], container: HTMLElement) {\n for (const element of elements) {\n // we stop checking if it's hidden at the `container` level (excluding)\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\n\nfunction isHidden(node: HTMLElement, { upTo }: { upTo?: HTMLElement }) {\n if (getComputedStyle(node).visibility === 'hidden') return true;\n while (node) {\n // we stop at `upTo` (excluding it)\n if (upTo !== undefined && node === upTo) return false;\n if (getComputedStyle(node).display === 'none') return true;\n node = node.parentElement as HTMLElement;\n }\n return false;\n}\n\nfunction isSelectableInput(element: any): element is FocusableTarget & { select: () => void } {\n return element instanceof HTMLInputElement && 'select' in element;\n}\n\nfunction focus(element?: FocusableTarget | null, { select = false } = {}) {\n // only focus if that element is focusable\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users\n element.focus({ preventScroll: true });\n // only select if its not the same element, it supports selection and we need to select\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope stack\n * -----------------------------------------------------------------------------------------------*/\n\ntype FocusScopeAPI = { paused: boolean; pause(): void; resume(): void };\nconst focusScopesStack = createFocusScopesStack();\n\nfunction createFocusScopesStack() {\n /** A stack of focus scopes, with the active one at the top */\n let stack: FocusScopeAPI[] = [];\n\n return {\n add(focusScope: FocusScopeAPI) {\n // pause the currently active focus scope (at the top of the stack)\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n // remove in case it already exists (because we'll re-add it at the top of the stack)\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n\n remove(focusScope: FocusScopeAPI) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n },\n };\n}\n\nfunction arrayRemove(array: T[], item: T) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\n\nfunction removeLinks(items: HTMLElement[]) {\n return items.filter((item) => item.tagName !== 'A');\n}\n\nconst Root = FocusScope;\n\nexport {\n FocusScope,\n //\n Root,\n};\nexport type { FocusScopeProps };\n", "import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n/* -------------------------------------------------------------------------------------------------\n * Portal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'Portal';\n\ntype PortalElement = React.ComponentRef;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef;\ninterface PortalProps extends PrimitiveDivProps {\n /**\n * An optional container where the portaled content should be appended.\n */\n container?: Element | DocumentFragment | null;\n}\n\nconst Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || (mounted && globalThis?.document?.body);\n return container\n ? ReactDOM.createPortal(, container)\n : null;\n});\n\nPortal.displayName = PORTAL_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Portal;\n\nexport {\n Portal,\n //\n Root,\n};\nexport type { PortalProps };\n", "import * as React from 'react';\n\n/** Number of components which have requested interest to have focus guards */\nlet count = 0;\n\ninterface FocusGuardsProps {\n children?: React.ReactNode;\n}\n\nfunction FocusGuards(props: FocusGuardsProps) {\n useFocusGuards();\n return props.children;\n}\n\n/**\n * Injects a pair of focus guards at the edges of the whole DOM tree\n * to ensure `focusin` & `focusout` events can be caught consistently.\n */\nfunction useFocusGuards() {\n /* eslint-disable no-restricted-globals */\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');\n document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? createFocusGuard());\n count++;\n\n return () => {\n if (count === 1) {\n document.querySelectorAll('[data-radix-focus-guard]').forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n /* eslint-enable no-restricted-globals */\n}\n\nfunction createFocusGuard() {\n // eslint-disable-next-line no-restricted-globals\n const element = document.createElement('span');\n element.setAttribute('data-radix-focus-guard', '');\n element.tabIndex = 0;\n element.style.outline = 'none';\n element.style.opacity = '0';\n element.style.position = 'fixed';\n element.style.pointerEvents = 'none';\n return element;\n}\n\nexport {\n FocusGuards,\n //\n FocusGuards as Root,\n //\n useFocusGuards,\n};\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n", "import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n", "import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n", "export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n", "/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n", "import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n", "import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return ...
\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n", "import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { useSidecar } from './hook';\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function sidecar(importer, errorComponent) {\n var ErrorCase = function () { return errorComponent; };\n return function Sidecar(props) {\n var _a = useSidecar(importer, props.sideCar), Car = _a[0], error = _a[1];\n if (error && errorComponent) {\n return ErrorCase;\n }\n // @ts-expect-error type shenanigans\n return Car ? React.createElement(Car, __assign({}, props)) : null;\n };\n}\n", "import { useState, useEffect } from 'react';\nimport { env } from './env';\nvar cache = new WeakMap();\nvar NO_OPTIONS = {};\nexport function useSidecar(importer, effect) {\n var options = (effect && effect.options) || NO_OPTIONS;\n if (env.isNode && !options.ssr) {\n return [null, null];\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useRealSidecar(importer, effect);\n}\nfunction useRealSidecar(importer, effect) {\n var options = (effect && effect.options) || NO_OPTIONS;\n var couldUseCache = env.forceCache || (env.isNode && !!options.ssr) || !options.async;\n var _a = useState(couldUseCache ? function () { return cache.get(importer); } : undefined), Car = _a[0], setCar = _a[1];\n var _b = useState(null), error = _b[0], setError = _b[1];\n useEffect(function () {\n if (!Car) {\n importer().then(function (car) {\n var resolved = effect ? effect.read() : car.default || car;\n if (!resolved) {\n console.error('Sidecar error: with importer', importer);\n var error_1;\n if (effect) {\n console.error('Sidecar error: with medium', effect);\n error_1 = new Error('Sidecar medium was not found');\n }\n else {\n error_1 = new Error('Sidecar was not found in exports');\n }\n setError(function () { return error_1; });\n throw error_1;\n }\n cache.set(importer, resolved);\n setCar(function () { return resolved; });\n }, function (e) { return setError(function () { return e; }); });\n }\n }, []);\n return [Car, error];\n}\n", "import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n", "import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { useState, useCallback, useEffect, useLayoutEffect } from 'react';\nexport function renderCar(WrappedComponent, defaults) {\n function State(_a) {\n var stateRef = _a.stateRef, props = _a.props;\n var renderTarget = useCallback(function SideTarget() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n useLayoutEffect(function () {\n stateRef.current(args);\n });\n return null;\n }, []);\n // @ts-ignore\n return React.createElement(WrappedComponent, __assign({}, props, { children: renderTarget }));\n }\n var Children = React.memo(function (_a) {\n var stateRef = _a.stateRef, defaultState = _a.defaultState, children = _a.children;\n var _b = useState(defaultState.current), state = _b[0], setState = _b[1];\n useEffect(function () {\n stateRef.current = setState;\n }, []);\n return children.apply(void 0, state);\n }, function () { return true; });\n return function Combiner(props) {\n var defaultState = React.useRef(defaults(props));\n var ref = React.useRef(function (state) { return (defaultState.current = state); });\n return (React.createElement(React.Fragment, null,\n React.createElement(State, { stateRef: ref, props: props }),\n React.createElement(Children, { stateRef: ref, defaultState: defaultState, children: props.children })));\n };\n}\n", "import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n", "import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n", "import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n", "import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of