diff --git a/frontend/.env.sample b/frontend/.env.sample index 75862b77..d7043ef8 100644 --- a/frontend/.env.sample +++ b/frontend/.env.sample @@ -114,4 +114,34 @@ VITE_TRAINING_AREAS_AOI_LABELS_OUTLINE_COLOR = "#D73434" # The remote url to JOSM. # Data type: String (e.g., "http://127.0.0.1:8111/"). # Default value: http://127.0.0.1:8111/. -VITE_JOSM_REMOTE_URL = "http://127.0.0.1:8111/" \ No newline at end of file +VITE_JOSM_REMOTE_URL = "http://127.0.0.1:8111/" + + +# The time to poll the backend for the status of the AOI training labels fetching, in milliseconds (ms). +# Data type: Positive Integer (e.g., 900). +# Default value: 5000 milliseconds (5 seconds). +VITE_TRAINING_AREA_LABELS_FETCH_POOLING_INTERVAL_MS = 5000 + + +# The time to poll the backend for the status of the OSM last updated time, in milliseconds (ms). +# Data type: Positive Integer (e.g., 900). +# Default value: 10000 milliseconds (10 seconds). +VITE_OSM_LAST_UPDATED_POOLING_INTERVAL_MS = 10000 + + +# The maximum GeoJSON file containing the training labels, a user can upload for an AOI. +# Data type: Positive Integer (e.g., 1). +# Default value: 1 (1 GeoJSON file). +VITE_MAX_GEOJSON_FILE_UPLOAD_FOR_TRAINING_AREA_LABELS = 1 + + +# The maximum GeoJSON file containing the training area, a user can upload for an AOI. +# Data type: Positive Integer (e.g., 1). +# Default value: 10 (10 GeoJSON files, assumming each file has a single AOI). +VITE_MAX_GEOJSON_FILE_UPLOAD_FOR_TRAINING_AREAS = 10 + + +# The maximum GeoJSON file(s) containing the training areas/AOI polygon geometry that a user can upload. +# Data type: Positive Integer (e.g., 1). +# Default value: 10 (10 GeoJSON files, assumming each file has a single AOI). +VITE_MAX_ACCEPTABLE_POLYGON_IN_TRAINING_AREA_GEOJSON_FILE = 10 \ No newline at end of file diff --git a/frontend/.prettierignore b/frontend/.prettierignore index 1b8ac889..d4576c63 100644 --- a/frontend/.prettierignore +++ b/frontend/.prettierignore @@ -1,3 +1,9 @@ # Ignore artifacts: build coverage +node_modules +dist +public +*.min.js +*.bundle.js + diff --git a/frontend/README.md b/frontend/README.md index 9bd24f1d..4115ec6e 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -55,22 +55,25 @@ This will create an optimized build of your app in the dist/ folder, which can b Here's an overview of the folder structure: ```markdown -├── public/ # Static assets like favicon, robots.txt and manifests. -├── src/ # main application codes are here. -│ ├── app/ # Contains the application routes and providers. -│ ├── assets/ # Static assets specific to the app (images, icons, etc.). -│ ├── components/ # Reusable components and layouts. -| |── features/ # Contains the main features of the application. -│ ├── hook/ # Reusable hooks. -│ ├── styles/ # Global styles. -│ ├── utils/ # Utility functions, application content and constants. -│ ├── config/ # Environment variable configuration object. -│ ├── services/ # Axios API clients and services. -│ ├── types/ # Reusable types. -│ └── main.tsx # Entry point of the React app. -├── docs/ # ARD documentation for some of the decisions made for the app. -└── vercel.json # To prevent the custom 404 page from Vercel when a route is visited. (This is just for the demo site deployed on Vercel.) -└── ... # Other configuration files like tsconfig.json, vite.config.mts etc. +├── public/ - Static assets like favicon, robots.txt and manifests. +├── src/ - Main application codes are here. +│ ├── app/ - Contains the application routes and providers. +│ ├── assets/ - Static assets specific to the app (images, icons, etc.). +│ ├── components/ - Reusable components and layouts. +│ ├── config/ - Environment variables configuration. +│ ├── constants/ - App UI contents and constants. +│ ├── enums/ - Reusable enums. +| |── features/ - Contains the main features of the application. +│ ├── hook/ - Reusable hooks. +│ ├── layouts/ - Core layouts of the application. +│ ├── services/ - Axios API clients and services. +│ ├── styles/ - Global styles. +│ ├── types/ - Reusable types. +│ ├── utils/ - Utility functions, application content and constants. +│ └── main.tsx - Entry point of the React app. +├── docs/ - ARD documentation for some of the decisions made for the app. +└── vercel.json - To prevent the custom 404 page from Vercel when a route is visited. (This is just for the demo site deployed on Vercel.) +└── ... Other configuration files like tsconfig.json, vite.config.mts etc. ``` ## Codebase Standards @@ -83,7 +86,13 @@ ESLint is used to maintain code quality and adhering to coding standards. #### Prettier -Prettier is a used to maintain consistent code formatting in the project. +Prettier is a used to maintain consistent code formatting in the project. To format run the code below in the terminal. + +```bash +1. pnpm/npm/yarn format + +2. pnpm/npm/yarn format:check +``` #### TypeScript @@ -107,8 +116,30 @@ Please refer to the [CONTRIBUTING](../CONTRIBUTING.md) guide for more informatio ## License -See [LICENSE](../LICENSE). - -## Notes - -The **@hotosm/ui** installation directory behavior is not consisitent and failed while deploying. However using the CDN and injecting it in the `index.html` works for now. +See [LICENSE](../LICENSE) for fAIr license. + +fAIr also bundles portions of the following open source software. + +- [Shoelace (MIT)](https://github.com/shoelace-style/shoelace). +- [TanStack Query (MIT)](https://github.com/TanStack/query). +- [TanStack Table (MIT)](https://github.com/TanStack/table). +- [Terraformer WKT (MIT)](https://github.com/terraformer-js/terraformer). +- [Turf JS (MIT)](https://github.com/Turfjs/turf). +- [Axios (MIT)](https://github.com/axios/axios). +- [Clsx (MIT)](https://github.com/lukeed/clsx). +- [Framer Motion (MIT)](https://github.com/motiondivision/motion). +- [React (MIT)](https://github.com/facebook/react). +- [React Dropzone (MIT)](https://github.com/react-dropzone/react-dropzone). +- [React Error Boundary (MIT)](https://github.com/bvaughn/react-error-boundary). +- [React Confetti Explosion (MIT)](https://github.com/herrethan/react-confetti-explosion). +- [React Markdown (MIT)](https://github.com/remarkjs/react-markdown). +- [Remark Gfm (MIT)](https://github.com/remarkjs/remark-gfm). +- [Tailwind Merge (MIT)](https://github.com/dcastil/tailwind-merge). +- [React Router (MIT)](https://github.com/remix-run/react-router). +- [Terra Draw (MIT)](https://github.com/JamesLMilner/terra-draw). +- [Vaul (MIT)](https://github.com/emilkowalski/vaul). +- [XMLBuilder2 (MIT)](https://github.com/oozcitak/xmlbuilder2). +- [React Helmet Async (Apache-2.0)](https://github.com/staylor/react-helmet-async). +- [Maplibre GL JS (BSD-3-Clause)](https://github.com/maplibre/maplibre-gl-js). +- [PMTiles (BSD-3-Clause)](https://github.com/protomaps/PMTiles). +- [React Medium Image Zoom (BSD-3-Clause)](https://github.com/rpearce/react-medium-image-zoom). \ No newline at end of file diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 53ee97df..6b191c34 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -1,34 +1,42 @@ -import js from "@eslint/js"; -import globals from "globals"; -import reactHooks from "eslint-plugin-react-hooks"; -import reactRefresh from "eslint-plugin-react-refresh"; -import tseslint from "typescript-eslint"; +import js from '@eslint/js'; +import globals from 'globals'; +import reactHooks from 'eslint-plugin-react-hooks'; +import reactRefresh from 'eslint-plugin-react-refresh'; +import tseslint from '@typescript-eslint/eslint-plugin'; +import prettierPlugin from 'eslint-plugin-prettier'; +import prettierConfig from 'eslint-config-prettier'; + + +export default [ -export default tseslint.config( - { ignores: ["dist"] }, { - extends: [ - js.configs.recommended, - ...tseslint.configs.recommended, - "plugin:@tanstack/eslint-plugin-query/recommended", - "plugin:tailwindcss/recommended", - ], - files: ["**/*.{ts,tsx}"], + ignores: ['dist'], + files: ['**/*.{ts,tsx}'], languageOptions: { ecmaVersion: 2020, + sourceType: 'module', globals: globals.browser, + parser: '@typescript-eslint/parser', }, plugins: { - "react-hooks": reactHooks, - "react-refresh": reactRefresh, - "@tanstack/query": "@tanstack/query", + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + '@tanstack/query': '@tanstack/query', + 'prettier': prettierPlugin, }, rules: { ...reactHooks.configs.recommended.rules, - "react-refresh/only-export-components": [ - "warn", + 'react-refresh/only-export-components': [ + 'warn', { allowConstantExport: true }, ], + 'prettier/prettier': 'error', + }, }, -); + js.configs.recommended, + ...tseslint.configs.recommended, + 'plugin:@tanstack/eslint-plugin-query/recommended', + 'plugin:tailwindcss/recommended', + prettierConfig, +]; diff --git a/frontend/package.json b/frontend/package.json index 277d3edc..4353096e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,7 +7,9 @@ "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint .", - "preview": "vite preview" + "preview": "vite preview", + "format": "prettier --write 'src/**/*.{js,jsx,ts,tsx,json,css,scss,md}'", + "format:check": "prettier --check 'src/**/*.{js,jsx,ts,tsx,json,css,scss,md}'" }, "dependencies": { "@shoelace-style/shoelace": "^2.16.0", @@ -36,6 +38,7 @@ "remark-gfm": "^4.0.0", "tailwind-merge": "^2.5.2", "terra-draw": "1.0.0-beta.8", + "vaul": "^1.1.2", "xmlbuilder2": "^3.1.1" }, "devDependencies": { @@ -46,13 +49,18 @@ "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@types/terraformer__wkt": "^2.0.3", + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.20", - "eslint": "^9.9.0", + "eslint": "^9.11.1", "eslint-config-prettier": "^9.1.0", + "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-hooks": "5.1.0-rc-fb9a90fa48-20240614", "eslint-plugin-react-refresh": "^0.4.9", + "eslint-plugin-tailwindcss": "^3.17.5", "globals": "^15.9.0", "postcss": "^8.4.47", "prettier": "3.3.3", @@ -68,4 +76,4 @@ "@eslint/plugin-kit@<0.2.3": ">=0.2.3" } } -} +} \ No newline at end of file diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index a46a7f0a..a5efbb1b 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1,38 +1,39 @@ -lockfileVersion: "9.0" +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false overrides: - cross-spawn@>=7.0.0 <7.0.5: ">=7.0.5" - "@eslint/plugin-kit@<0.2.3": ">=0.2.3" + cross-spawn@>=7.0.0 <7.0.5: '>=7.0.5' + '@eslint/plugin-kit@<0.2.3': '>=0.2.3' importers: + .: dependencies: - "@shoelace-style/shoelace": + '@shoelace-style/shoelace': specifier: ^2.16.0 version: 2.17.1(@types/react@18.3.10) - "@tanstack/react-query": + '@tanstack/react-query': specifier: ^5.59.0 version: 5.59.0(react@18.3.1) - "@tanstack/react-query-devtools": + '@tanstack/react-query-devtools': specifier: ^5.59.0 version: 5.59.0(@tanstack/react-query@5.59.0(react@18.3.1))(react@18.3.1) - "@tanstack/react-table": + '@tanstack/react-table': specifier: ^8.20.5 version: 8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@terraformer/wkt": + '@terraformer/wkt': specifier: ^2.2.1 version: 2.2.1 - "@turf/area": + '@turf/area': specifier: ^7.1.0 version: 7.1.0 - "@turf/bbox": + '@turf/bbox': specifier: ^7.1.0 version: 7.1.0 - "@turf/boolean-intersects": + '@turf/boolean-intersects': specifier: ^7.1.0 version: 7.1.0 axios: @@ -89,52 +90,70 @@ importers: terra-draw: specifier: 1.0.0-beta.8 version: 1.0.0-beta.8 + vaul: + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) xmlbuilder2: specifier: ^3.1.1 version: 3.1.1 devDependencies: - "@eslint/js": + '@eslint/js': specifier: ^9.9.0 version: 9.11.1 - "@tailwindcss/typography": + '@tailwindcss/typography': specifier: ^0.5.15 version: 0.5.15(tailwindcss@3.4.13) - "@tanstack/eslint-plugin-query": + '@tanstack/eslint-plugin-query': specifier: ^5.58.1 version: 5.58.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - "@types/geojson": + '@types/geojson': specifier: ^7946.0.14 version: 7946.0.14 - "@types/react": + '@types/react': specifier: ^18.3.3 version: 18.3.10 - "@types/react-dom": + '@types/react-dom': specifier: ^18.3.0 version: 18.3.0 - "@types/terraformer__wkt": + '@types/terraformer__wkt': specifier: ^2.0.3 version: 2.0.3 - "@vitejs/plugin-react": + '@typescript-eslint/eslint-plugin': + specifier: ^8.18.2 + version: 8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': + specifier: ^8.18.2 + version: 8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.2(vite@5.4.8) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.47) eslint: - specifier: ^9.9.0 + specifier: ^9.11.1 version: 9.11.1(jiti@1.21.6) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@9.11.1(jiti@1.21.6)) + eslint-plugin-jsx-a11y: + specifier: ^6.10.2 + version: 6.10.2(eslint@9.11.1(jiti@1.21.6)) eslint-plugin-prettier: specifier: ^5.2.1 version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6))(prettier@3.3.3) + eslint-plugin-react: + specifier: ^7.37.3 + version: 7.37.3(eslint@9.11.1(jiti@1.21.6)) eslint-plugin-react-hooks: - specifier: ^5.1.0-rc.0 + specifier: 5.1.0-rc-fb9a90fa48-20240614 version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.11.1(jiti@1.21.6)) eslint-plugin-react-refresh: specifier: ^0.4.9 version: 0.4.12(eslint@9.11.1(jiti@1.21.6)) + eslint-plugin-tailwindcss: + specifier: ^3.17.5 + version: 3.17.5(tailwindcss@3.4.13) globals: specifier: ^15.9.0 version: 15.10.0 @@ -161,1945 +180,1498 @@ importers: version: 5.0.1(typescript@5.6.2)(vite@5.4.8) packages: - "@alloc/quick-lru@5.2.0": - resolution: - { - integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==, - } - engines: { node: ">=10" } - - "@ampproject/remapping@2.3.0": - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, - } - engines: { node: ">=6.0.0" } - - "@babel/code-frame@7.24.7": - resolution: - { - integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==, - } - engines: { node: ">=6.9.0" } - - "@babel/compat-data@7.25.4": - resolution: - { - integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/core@7.25.2": - resolution: - { - integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==, - } - engines: { node: ">=6.9.0" } - - "@babel/generator@7.25.6": - resolution: - { - integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-compilation-targets@7.25.2": - resolution: - { - integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-imports@7.24.7": - resolution: - { - integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-transforms@7.25.2": - resolution: - { - integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==, - } - engines: { node: ">=6.9.0" } + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-plugin-utils@7.24.8": - resolution: - { - integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-simple-access@7.24.7": - resolution: - { - integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-string-parser@7.24.8": - resolution: - { - integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-identifier@7.24.7": - resolution: - { - integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-option@7.24.8": - resolution: - { - integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==, - } - engines: { node: ">=6.9.0" } - - "@babel/helpers@7.25.6": - resolution: - { - integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==, - } - engines: { node: ">=6.9.0" } - - "@babel/highlight@7.24.7": - resolution: - { - integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==, - } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.25.6": - resolution: - { - integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==, - } - engines: { node: ">=6.0.0" } + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.6': + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} hasBin: true - "@babel/plugin-transform-react-jsx-self@7.24.7": - resolution: - { - integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx-source@7.24.7": - resolution: - { - integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==, - } - engines: { node: ">=6.9.0" } + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/runtime@7.25.6": - resolution: - { - integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/template@7.25.0": - resolution: - { - integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==, - } - engines: { node: ">=6.9.0" } - - "@babel/traverse@7.25.6": - resolution: - { - integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/types@7.25.6": - resolution: - { - integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==, - } - engines: { node: ">=6.9.0" } - - "@ctrl/tinycolor@4.1.0": - resolution: - { - integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==, - } - engines: { node: ">=14" } - - "@emotion/is-prop-valid@0.7.3": - resolution: - { - integrity: sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==, - } - - "@emotion/memoize@0.7.1": - resolution: - { - integrity: sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg==, - } - - "@esbuild/aix-ppc64@0.21.5": - resolution: - { - integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==, - } - engines: { node: ">=12" } + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.25.6': + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@ctrl/tinycolor@4.1.0': + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + engines: {node: '>=14'} + + '@emotion/is-prop-valid@0.7.3': + resolution: {integrity: sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==} + + '@emotion/memoize@0.7.1': + resolution: {integrity: sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.21.5": - resolution: - { - integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==, - } - engines: { node: ">=12" } + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} cpu: [arm64] os: [android] - "@esbuild/android-arm@0.21.5": - resolution: - { - integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==, - } - engines: { node: ">=12" } + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} cpu: [arm] os: [android] - "@esbuild/android-x64@0.21.5": - resolution: - { - integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==, - } - engines: { node: ">=12" } + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.21.5": - resolution: - { - integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==, - } - engines: { node: ">=12" } + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.21.5": - resolution: - { - integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==, - } - engines: { node: ">=12" } + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.21.5": - resolution: - { - integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==, - } - engines: { node: ">=12" } + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.21.5": - resolution: - { - integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==, - } - engines: { node: ">=12" } + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.21.5": - resolution: - { - integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==, - } - engines: { node: ">=12" } + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.21.5": - resolution: - { - integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==, - } - engines: { node: ">=12" } + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.21.5": - resolution: - { - integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==, - } - engines: { node: ">=12" } + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.21.5": - resolution: - { - integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==, - } - engines: { node: ">=12" } + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.21.5": - resolution: - { - integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==, - } - engines: { node: ">=12" } + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.21.5": - resolution: - { - integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==, - } - engines: { node: ">=12" } + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.21.5": - resolution: - { - integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==, - } - engines: { node: ">=12" } + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.21.5": - resolution: - { - integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==, - } - engines: { node: ">=12" } + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.21.5": - resolution: - { - integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==, - } - engines: { node: ">=12" } + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} cpu: [x64] os: [linux] - "@esbuild/netbsd-x64@0.21.5": - resolution: - { - integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==, - } - engines: { node: ">=12" } + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} cpu: [x64] os: [netbsd] - "@esbuild/openbsd-x64@0.21.5": - resolution: - { - integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==, - } - engines: { node: ">=12" } + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} cpu: [x64] os: [openbsd] - "@esbuild/sunos-x64@0.21.5": - resolution: - { - integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==, - } - engines: { node: ">=12" } + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.21.5": - resolution: - { - integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==, - } - engines: { node: ">=12" } + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.21.5": - resolution: - { - integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==, - } - engines: { node: ">=12" } + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.21.5": - resolution: - { - integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==, - } - engines: { node: ">=12" } + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} cpu: [x64] os: [win32] - "@eslint-community/eslint-utils@4.4.0": - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - "@eslint-community/regexpp@4.11.1": - resolution: - { - integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - - "@eslint/config-array@0.18.0": - resolution: - { - integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/core@0.6.0": - resolution: - { - integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/eslintrc@3.1.0": - resolution: - { - integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/js@9.11.1": - resolution: - { - integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/object-schema@2.1.4": - resolution: - { - integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@eslint/plugin-kit@0.2.3": - resolution: - { - integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@floating-ui/core@1.6.8": - resolution: - { - integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==, - } - - "@floating-ui/dom@1.6.11": - resolution: - { - integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==, - } - - "@floating-ui/utils@0.2.8": - resolution: - { - integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==, - } - - "@humanwhocodes/module-importer@1.0.1": - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: ">=12.22" } - - "@humanwhocodes/retry@0.3.0": - resolution: - { - integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==, - } - engines: { node: ">=18.18" } - - "@isaacs/cliui@8.0.2": - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: ">=12" } - - "@jridgewell/gen-mapping@0.3.5": - resolution: - { - integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/resolve-uri@3.1.2": - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/set-array@1.2.1": - resolution: - { - integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/sourcemap-codec@1.5.0": - resolution: - { - integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, - } - - "@jridgewell/trace-mapping@0.3.25": - resolution: - { - integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, - } - - "@lit-labs/ssr-dom-shim@1.2.1": - resolution: - { - integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==, - } - - "@lit/react@1.0.5": - resolution: - { - integrity: sha512-RSHhrcuSMa4vzhqiTenzXvtQ6QDq3hSPsnHHO3jaPmmvVFeoNNm4DHoQ0zLdKAUvY3wP3tTENSUf7xpyVfrDEA==, - } + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.6.0': + resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.11.1': + resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.3': + resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.11': + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@lit-labs/ssr-dom-shim@1.2.1': + resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==} + + '@lit/react@1.0.5': + resolution: {integrity: sha512-RSHhrcuSMa4vzhqiTenzXvtQ6QDq3hSPsnHHO3jaPmmvVFeoNNm4DHoQ0zLdKAUvY3wP3tTENSUf7xpyVfrDEA==} peerDependencies: - "@types/react": 17 || 18 - - "@lit/reactive-element@2.0.4": - resolution: - { - integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==, - } - - "@mapbox/geojson-rewind@0.5.2": - resolution: - { - integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==, - } + '@types/react': 17 || 18 + + '@lit/reactive-element@2.0.4': + resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + + '@mapbox/geojson-rewind@0.5.2': + resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==} hasBin: true - "@mapbox/jsonlint-lines-primitives@2.0.2": - resolution: - { - integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==, - } - engines: { node: ">= 0.6" } - - "@mapbox/point-geometry@0.1.0": - resolution: - { - integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==, - } - - "@mapbox/tiny-sdf@2.0.6": - resolution: - { - integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==, - } - - "@mapbox/unitbezier@0.0.1": - resolution: - { - integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==, - } - - "@mapbox/vector-tile@1.3.1": - resolution: - { - integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==, - } - - "@mapbox/whoots-js@3.1.0": - resolution: - { - integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==, - } - engines: { node: ">=6.0.0" } - - "@maplibre/maplibre-gl-style-spec@20.3.1": - resolution: - { - integrity: sha512-5ueL4UDitzVtceQ8J4kY+Px3WK+eZTsmGwha3MBKHKqiHvKrjWWwBCIl1K8BuJSc5OFh83uI8IFNoFvQxX2uUw==, - } + '@mapbox/jsonlint-lines-primitives@2.0.2': + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + + '@mapbox/point-geometry@0.1.0': + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + + '@mapbox/tiny-sdf@2.0.6': + resolution: {integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==} + + '@mapbox/unitbezier@0.0.1': + resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} + + '@mapbox/vector-tile@1.3.1': + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + + '@mapbox/whoots-js@3.1.0': + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + + '@maplibre/maplibre-gl-style-spec@20.3.1': + resolution: {integrity: sha512-5ueL4UDitzVtceQ8J4kY+Px3WK+eZTsmGwha3MBKHKqiHvKrjWWwBCIl1K8BuJSc5OFh83uI8IFNoFvQxX2uUw==} hasBin: true - "@nodelib/fs.scandir@2.1.5": - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.stat@2.0.5": - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.walk@1.2.8": - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: ">= 8" } - - "@oozcitak/dom@1.15.10": - resolution: - { - integrity: sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==, - } - engines: { node: ">=8.0" } - - "@oozcitak/infra@1.0.8": - resolution: - { - integrity: sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==, - } - engines: { node: ">=6.0" } - - "@oozcitak/url@1.0.4": - resolution: - { - integrity: sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==, - } - engines: { node: ">=8.0" } - - "@oozcitak/util@8.3.8": - resolution: - { - integrity: sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==, - } - engines: { node: ">=8.0" } - - "@pkgjs/parseargs@0.11.0": - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, - } - engines: { node: ">=14" } - - "@pkgr/core@0.1.1": - resolution: - { - integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } - - "@remix-run/router@1.19.2": - resolution: - { - integrity: sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==, - } - engines: { node: ">=14.0.0" } - - "@rollup/rollup-android-arm-eabi@4.23.0": - resolution: - { - integrity: sha512-8OR+Ok3SGEMsAZispLx8jruuXw0HVF16k+ub2eNXKHDmdxL4cf9NlNpAzhlOhNyXzKDEJuFeq0nZm+XlNb1IFw==, - } + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@oozcitak/dom@1.15.10': + resolution: {integrity: sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==} + engines: {node: '>=8.0'} + + '@oozcitak/infra@1.0.8': + resolution: {integrity: sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==} + engines: {node: '>=6.0'} + + '@oozcitak/url@1.0.4': + resolution: {integrity: sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==} + engines: {node: '>=8.0'} + + '@oozcitak/util@8.3.8': + resolution: {integrity: sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==} + engines: {node: '>=8.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@radix-ui/primitive@1.1.1': + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + + '@radix-ui/react-compose-refs@1.1.1': + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.4': + resolution: {integrity: sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.3': + resolution: {integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.1': + resolution: {integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-portal@1.1.3': + resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.2': + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.1': + resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.1': + resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@remix-run/router@1.19.2': + resolution: {integrity: sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==} + engines: {node: '>=14.0.0'} + + '@rollup/rollup-android-arm-eabi@4.23.0': + resolution: {integrity: sha512-8OR+Ok3SGEMsAZispLx8jruuXw0HVF16k+ub2eNXKHDmdxL4cf9NlNpAzhlOhNyXzKDEJuFeq0nZm+XlNb1IFw==} cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.23.0": - resolution: - { - integrity: sha512-rEFtX1nP8gqmLmPZsXRMoLVNB5JBwOzIAk/XAcEPuKrPa2nPJ+DuGGpfQUR0XjRm8KjHfTZLpWbKXkA5BoFL3w==, - } + '@rollup/rollup-android-arm64@4.23.0': + resolution: {integrity: sha512-rEFtX1nP8gqmLmPZsXRMoLVNB5JBwOzIAk/XAcEPuKrPa2nPJ+DuGGpfQUR0XjRm8KjHfTZLpWbKXkA5BoFL3w==} cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.23.0": - resolution: - { - integrity: sha512-ZbqlMkJRMMPeapfaU4drYHns7Q5MIxjM/QeOO62qQZGPh9XWziap+NF9fsqPHT0KzEL6HaPspC7sOwpgyA3J9g==, - } + '@rollup/rollup-darwin-arm64@4.23.0': + resolution: {integrity: sha512-ZbqlMkJRMMPeapfaU4drYHns7Q5MIxjM/QeOO62qQZGPh9XWziap+NF9fsqPHT0KzEL6HaPspC7sOwpgyA3J9g==} cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.23.0": - resolution: - { - integrity: sha512-PfmgQp78xx5rBCgn2oYPQ1rQTtOaQCna0kRaBlc5w7RlA3TDGGo7m3XaptgitUZ54US9915i7KeVPHoy3/W8tA==, - } + '@rollup/rollup-darwin-x64@4.23.0': + resolution: {integrity: sha512-PfmgQp78xx5rBCgn2oYPQ1rQTtOaQCna0kRaBlc5w7RlA3TDGGo7m3XaptgitUZ54US9915i7KeVPHoy3/W8tA==} cpu: [x64] os: [darwin] - "@rollup/rollup-linux-arm-gnueabihf@4.23.0": - resolution: - { - integrity: sha512-WAeZfAAPus56eQgBioezXRRzArAjWJGjNo/M+BHZygUcs9EePIuGI1Wfc6U/Ki+tMW17FFGvhCfYnfcKPh18SA==, - } + '@rollup/rollup-linux-arm-gnueabihf@4.23.0': + resolution: {integrity: sha512-WAeZfAAPus56eQgBioezXRRzArAjWJGjNo/M+BHZygUcs9EePIuGI1Wfc6U/Ki+tMW17FFGvhCfYnfcKPh18SA==} cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm-musleabihf@4.23.0": - resolution: - { - integrity: sha512-v7PGcp1O5XKZxKX8phTXtmJDVpE20Ub1eF6w9iMmI3qrrPak6yR9/5eeq7ziLMrMTjppkkskXyxnmm00HdtXjA==, - } + '@rollup/rollup-linux-arm-musleabihf@4.23.0': + resolution: {integrity: sha512-v7PGcp1O5XKZxKX8phTXtmJDVpE20Ub1eF6w9iMmI3qrrPak6yR9/5eeq7ziLMrMTjppkkskXyxnmm00HdtXjA==} cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm64-gnu@4.23.0": - resolution: - { - integrity: sha512-nAbWsDZ9UkU6xQiXEyXBNHAKbzSAi95H3gTStJq9UGiS1v+YVXwRHcQOQEF/3CHuhX5BVhShKoeOf6Q/1M+Zhg==, - } + '@rollup/rollup-linux-arm64-gnu@4.23.0': + resolution: {integrity: sha512-nAbWsDZ9UkU6xQiXEyXBNHAKbzSAi95H3gTStJq9UGiS1v+YVXwRHcQOQEF/3CHuhX5BVhShKoeOf6Q/1M+Zhg==} cpu: [arm64] os: [linux] - "@rollup/rollup-linux-arm64-musl@4.23.0": - resolution: - { - integrity: sha512-5QT/Di5FbGNPaVw8hHO1wETunwkPuZBIu6W+5GNArlKHD9fkMHy7vS8zGHJk38oObXfWdsuLMogD4sBySLJ54g==, - } + '@rollup/rollup-linux-arm64-musl@4.23.0': + resolution: {integrity: sha512-5QT/Di5FbGNPaVw8hHO1wETunwkPuZBIu6W+5GNArlKHD9fkMHy7vS8zGHJk38oObXfWdsuLMogD4sBySLJ54g==} cpu: [arm64] os: [linux] - "@rollup/rollup-linux-powerpc64le-gnu@4.23.0": - resolution: - { - integrity: sha512-Sefl6vPyn5axzCsO13r1sHLcmPuiSOrKIImnq34CBurntcJ+lkQgAaTt/9JkgGmaZJ+OkaHmAJl4Bfd0DmdtOQ==, - } + '@rollup/rollup-linux-powerpc64le-gnu@4.23.0': + resolution: {integrity: sha512-Sefl6vPyn5axzCsO13r1sHLcmPuiSOrKIImnq34CBurntcJ+lkQgAaTt/9JkgGmaZJ+OkaHmAJl4Bfd0DmdtOQ==} cpu: [ppc64] os: [linux] - "@rollup/rollup-linux-riscv64-gnu@4.23.0": - resolution: - { - integrity: sha512-o4QI2KU/QbP7ZExMse6ULotdV3oJUYMrdx3rBZCgUF3ur3gJPfe8Fuasn6tia16c5kZBBw0aTmaUygad6VB/hQ==, - } + '@rollup/rollup-linux-riscv64-gnu@4.23.0': + resolution: {integrity: sha512-o4QI2KU/QbP7ZExMse6ULotdV3oJUYMrdx3rBZCgUF3ur3gJPfe8Fuasn6tia16c5kZBBw0aTmaUygad6VB/hQ==} cpu: [riscv64] os: [linux] - "@rollup/rollup-linux-s390x-gnu@4.23.0": - resolution: - { - integrity: sha512-+bxqx+V/D4FGrpXzPGKp/SEZIZ8cIW3K7wOtcJAoCrmXvzRtmdUhYNbgd+RztLzfDEfA2WtKj5F4tcbNPuqgeg==, - } + '@rollup/rollup-linux-s390x-gnu@4.23.0': + resolution: {integrity: sha512-+bxqx+V/D4FGrpXzPGKp/SEZIZ8cIW3K7wOtcJAoCrmXvzRtmdUhYNbgd+RztLzfDEfA2WtKj5F4tcbNPuqgeg==} cpu: [s390x] os: [linux] - "@rollup/rollup-linux-x64-gnu@4.23.0": - resolution: - { - integrity: sha512-I/eXsdVoCKtSgK9OwyQKPAfricWKUMNCwJKtatRYMmDo5N859tbO3UsBw5kT3dU1n6ZcM1JDzPRSGhAUkxfLxw==, - } + '@rollup/rollup-linux-x64-gnu@4.23.0': + resolution: {integrity: sha512-I/eXsdVoCKtSgK9OwyQKPAfricWKUMNCwJKtatRYMmDo5N859tbO3UsBw5kT3dU1n6ZcM1JDzPRSGhAUkxfLxw==} cpu: [x64] os: [linux] - "@rollup/rollup-linux-x64-musl@4.23.0": - resolution: - { - integrity: sha512-4ZoDZy5ShLbbe1KPSafbFh1vbl0asTVfkABC7eWqIs01+66ncM82YJxV2VtV3YVJTqq2P8HMx3DCoRSWB/N3rw==, - } + '@rollup/rollup-linux-x64-musl@4.23.0': + resolution: {integrity: sha512-4ZoDZy5ShLbbe1KPSafbFh1vbl0asTVfkABC7eWqIs01+66ncM82YJxV2VtV3YVJTqq2P8HMx3DCoRSWB/N3rw==} cpu: [x64] os: [linux] - "@rollup/rollup-win32-arm64-msvc@4.23.0": - resolution: - { - integrity: sha512-+5Ky8dhft4STaOEbZu3/NU4QIyYssKO+r1cD3FzuusA0vO5gso15on7qGzKdNXnc1gOrsgCqZjRw1w+zL4y4hQ==, - } + '@rollup/rollup-win32-arm64-msvc@4.23.0': + resolution: {integrity: sha512-+5Ky8dhft4STaOEbZu3/NU4QIyYssKO+r1cD3FzuusA0vO5gso15on7qGzKdNXnc1gOrsgCqZjRw1w+zL4y4hQ==} cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.23.0": - resolution: - { - integrity: sha512-0SPJk4cPZQhq9qA1UhIRumSE3+JJIBBjtlGl5PNC///BoaByckNZd53rOYD0glpTkYFBQSt7AkMeLVPfx65+BQ==, - } + '@rollup/rollup-win32-ia32-msvc@4.23.0': + resolution: {integrity: sha512-0SPJk4cPZQhq9qA1UhIRumSE3+JJIBBjtlGl5PNC///BoaByckNZd53rOYD0glpTkYFBQSt7AkMeLVPfx65+BQ==} cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.23.0": - resolution: - { - integrity: sha512-lqCK5GQC8fNo0+JvTSxcG7YB1UKYp8yrNLhsArlvPWN+16ovSZgoehlVHg6X0sSWPUkpjRBR5TuR12ZugowZ4g==, - } + '@rollup/rollup-win32-x64-msvc@4.23.0': + resolution: {integrity: sha512-lqCK5GQC8fNo0+JvTSxcG7YB1UKYp8yrNLhsArlvPWN+16ovSZgoehlVHg6X0sSWPUkpjRBR5TuR12ZugowZ4g==} cpu: [x64] os: [win32] - "@shoelace-style/animations@1.2.0": - resolution: - { - integrity: sha512-avvo1xxkLbv2dgtabdewBbqcJfV0e0zCwFqkPMnHFGbJbBHorRFfMAHh1NG9ymmXn0jW95ibUVH03E1NYXD6Gw==, - } - - "@shoelace-style/localize@3.2.1": - resolution: - { - integrity: sha512-r4C9C/5kSfMBIr0D9imvpRdCNXtUNgyYThc4YlS6K5Hchv1UyxNQ9mxwj+BTRH2i1Neits260sR3OjKMnplsFA==, - } - - "@shoelace-style/shoelace@2.17.1": - resolution: - { - integrity: sha512-fB9+bPHLg5zVwPbBKEqY3ghyttkJq9RuUzFMTZKweKrNKKDMUACtI8DlMYUqNwpdZMJhf7a0xeak6vFVBSxcbQ==, - } - engines: { node: ">=14.17.0" } - - "@tailwindcss/typography@0.5.15": - resolution: - { - integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==, - } + '@shoelace-style/animations@1.2.0': + resolution: {integrity: sha512-avvo1xxkLbv2dgtabdewBbqcJfV0e0zCwFqkPMnHFGbJbBHorRFfMAHh1NG9ymmXn0jW95ibUVH03E1NYXD6Gw==} + + '@shoelace-style/localize@3.2.1': + resolution: {integrity: sha512-r4C9C/5kSfMBIr0D9imvpRdCNXtUNgyYThc4YlS6K5Hchv1UyxNQ9mxwj+BTRH2i1Neits260sR3OjKMnplsFA==} + + '@shoelace-style/shoelace@2.17.1': + resolution: {integrity: sha512-fB9+bPHLg5zVwPbBKEqY3ghyttkJq9RuUzFMTZKweKrNKKDMUACtI8DlMYUqNwpdZMJhf7a0xeak6vFVBSxcbQ==} + engines: {node: '>=14.17.0'} + + '@tailwindcss/typography@0.5.15': + resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} peerDependencies: - tailwindcss: ">=3.0.0 || insiders || >=4.0.0-alpha.20" + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' - "@tanstack/eslint-plugin-query@5.58.1": - resolution: - { - integrity: sha512-hJR3N5ilK60gCgDWr7pWHV/vDiDVczT95F8AGIcg1gf9117aLPK+LDu+xP2JuEWpWKpsQ6OpWdVMim9kKlMybw==, - } + '@tanstack/eslint-plugin-query@5.58.1': + resolution: {integrity: sha512-hJR3N5ilK60gCgDWr7pWHV/vDiDVczT95F8AGIcg1gf9117aLPK+LDu+xP2JuEWpWKpsQ6OpWdVMim9kKlMybw==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - "@tanstack/query-core@5.59.0": - resolution: - { - integrity: sha512-WGD8uIhX6/deH/tkZqPNcRyAhDUqs729bWKoByYHSogcshXfFbppOdTER5+qY7mFvu8KEFJwT0nxr8RfPTVh0Q==, - } - - "@tanstack/query-devtools@5.58.0": - resolution: - { - integrity: sha512-iFdQEFXaYYxqgrv63ots+65FGI+tNp5ZS5PdMU1DWisxk3fez5HG3FyVlbUva+RdYS5hSLbxZ9aw3yEs97GNTw==, - } - - "@tanstack/react-query-devtools@5.59.0": - resolution: - { - integrity: sha512-Kz7577FQGU8qmJxROIT/aOwmkTcxfBqgTP6r1AIvuJxVMVHPkp8eQxWQ7BnfBsy/KTJHiV9vMtRVo1+R1tB3vg==, - } + '@tanstack/query-core@5.59.0': + resolution: {integrity: sha512-WGD8uIhX6/deH/tkZqPNcRyAhDUqs729bWKoByYHSogcshXfFbppOdTER5+qY7mFvu8KEFJwT0nxr8RfPTVh0Q==} + + '@tanstack/query-devtools@5.58.0': + resolution: {integrity: sha512-iFdQEFXaYYxqgrv63ots+65FGI+tNp5ZS5PdMU1DWisxk3fez5HG3FyVlbUva+RdYS5hSLbxZ9aw3yEs97GNTw==} + + '@tanstack/react-query-devtools@5.59.0': + resolution: {integrity: sha512-Kz7577FQGU8qmJxROIT/aOwmkTcxfBqgTP6r1AIvuJxVMVHPkp8eQxWQ7BnfBsy/KTJHiV9vMtRVo1+R1tB3vg==} peerDependencies: - "@tanstack/react-query": ^5.59.0 + '@tanstack/react-query': ^5.59.0 react: ^18 || ^19 - "@tanstack/react-query@5.59.0": - resolution: - { - integrity: sha512-YDXp3OORbYR+8HNQx+lf4F73NoiCmCcSvZvgxE29OifmQFk0sBlO26NWLHpcNERo92tVk3w+JQ53/vkcRUY1hA==, - } + '@tanstack/react-query@5.59.0': + resolution: {integrity: sha512-YDXp3OORbYR+8HNQx+lf4F73NoiCmCcSvZvgxE29OifmQFk0sBlO26NWLHpcNERo92tVk3w+JQ53/vkcRUY1hA==} peerDependencies: react: ^18 || ^19 - "@tanstack/react-table@8.20.5": - resolution: - { - integrity: sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==, - } - engines: { node: ">=12" } + '@tanstack/react-table@8.20.5': + resolution: {integrity: sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/table-core@8.20.5': + resolution: {integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==} + engines: {node: '>=12'} + + '@terraformer/wkt@2.2.1': + resolution: {integrity: sha512-XDUsW/lvbMzFi7GIuRD9+UqR4QyP+5C+TugeJLMDczKIRbaHoE9J3N8zLSdyOGmnJL9B6xTS3YMMlBnMU0Ar5A==} + + '@turf/area@7.1.0': + resolution: {integrity: sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==} + + '@turf/bbox@7.1.0': + resolution: {integrity: sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==} + + '@turf/boolean-disjoint@7.1.0': + resolution: {integrity: sha512-JapOG03kOCoGeYMWgTQjEifhr1nUoK4Os2cX0iC5X9kvZF4qCHeruX8/rffBQDx7PDKQKusSTXq8B1ISFi0hOw==} + + '@turf/boolean-intersects@7.1.0': + resolution: {integrity: sha512-gpksWbb0RT+Z3nfqRfoACY3KEFyv2BPaxJ3L76PH67DhHZviq3Nfg85KYbpuhS64FSm+9tXe4IaKn6EjbHo20g==} + + '@turf/boolean-point-in-polygon@7.1.0': + resolution: {integrity: sha512-mprVsyIQ+ijWTZwbnO4Jhxu94ZW2M2CheqLiRTsGJy0Ooay9v6Av5/Nl3/Gst7ZVXxPqMeMaFYkSzcTc87AKew==} + + '@turf/helpers@7.1.0': + resolution: {integrity: sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==} + + '@turf/invariant@7.1.0': + resolution: {integrity: sha512-OCLNqkItBYIP1nE9lJGuIUatWGtQ4rhBKAyTfFu0z8npVzGEYzvguEeof8/6LkKmTTEHW53tCjoEhSSzdRh08Q==} + + '@turf/line-intersect@7.1.0': + resolution: {integrity: sha512-JI3dvOsAoCqd4vUJ134FIzgcC42QpC/tBs+b4OJoxWmwDek3REv4qGaZY6wCg9X4hFSlCKFcnhMIQQZ/n720Qg==} + + '@turf/meta@7.1.0': + resolution: {integrity: sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==} + + '@turf/polygon-to-line@7.1.0': + resolution: {integrity: sha512-FBlfyBWNQZCTVGqlJH7LR2VXmvj8AydxrA8zegqek/5oPGtQDeUgIppKmvmuNClqbglhv59QtCUVaDK4bOuCTA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/geojson-vt@3.2.5': + resolution: {integrity: sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==} + + '@types/geojson@7946.0.14': + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mapbox__point-geometry@0.1.4': + resolution: {integrity: sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==} + + '@types/mapbox__vector-tile@1.3.4': + resolution: {integrity: sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/pbf@3.0.5': + resolution: {integrity: sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + + '@types/react@18.3.10': + resolution: {integrity: sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==} + + '@types/supercluster@7.1.3': + resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==} + + '@types/terraformer__wkt@2.0.3': + resolution: {integrity: sha512-60CGvi30kMIKl2QERrE6LD5iPm4lutZ1M/mqBY4wrn6H/QlZQa/5CN1e6trZ6ZtSRHLbHLwG+egt/nAIDbPG0A==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript-eslint/eslint-plugin@8.18.2': + resolution: {integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - - "@tanstack/table-core@8.20.5": - resolution: - { - integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==, - } - engines: { node: ">=12" } - - "@terraformer/wkt@2.2.1": - resolution: - { - integrity: sha512-XDUsW/lvbMzFi7GIuRD9+UqR4QyP+5C+TugeJLMDczKIRbaHoE9J3N8zLSdyOGmnJL9B6xTS3YMMlBnMU0Ar5A==, - } - - "@turf/area@7.1.0": - resolution: - { - integrity: sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==, - } - - "@turf/bbox@7.1.0": - resolution: - { - integrity: sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==, - } - - "@turf/boolean-disjoint@7.1.0": - resolution: - { - integrity: sha512-JapOG03kOCoGeYMWgTQjEifhr1nUoK4Os2cX0iC5X9kvZF4qCHeruX8/rffBQDx7PDKQKusSTXq8B1ISFi0hOw==, - } - - "@turf/boolean-intersects@7.1.0": - resolution: - { - integrity: sha512-gpksWbb0RT+Z3nfqRfoACY3KEFyv2BPaxJ3L76PH67DhHZviq3Nfg85KYbpuhS64FSm+9tXe4IaKn6EjbHo20g==, - } - - "@turf/boolean-point-in-polygon@7.1.0": - resolution: - { - integrity: sha512-mprVsyIQ+ijWTZwbnO4Jhxu94ZW2M2CheqLiRTsGJy0Ooay9v6Av5/Nl3/Gst7ZVXxPqMeMaFYkSzcTc87AKew==, - } - - "@turf/helpers@7.1.0": - resolution: - { - integrity: sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==, - } - - "@turf/invariant@7.1.0": - resolution: - { - integrity: sha512-OCLNqkItBYIP1nE9lJGuIUatWGtQ4rhBKAyTfFu0z8npVzGEYzvguEeof8/6LkKmTTEHW53tCjoEhSSzdRh08Q==, - } - - "@turf/line-intersect@7.1.0": - resolution: - { - integrity: sha512-JI3dvOsAoCqd4vUJ134FIzgcC42QpC/tBs+b4OJoxWmwDek3REv4qGaZY6wCg9X4hFSlCKFcnhMIQQZ/n720Qg==, - } - - "@turf/meta@7.1.0": - resolution: - { - integrity: sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==, - } - - "@turf/polygon-to-line@7.1.0": - resolution: - { - integrity: sha512-FBlfyBWNQZCTVGqlJH7LR2VXmvj8AydxrA8zegqek/5oPGtQDeUgIppKmvmuNClqbglhv59QtCUVaDK4bOuCTA==, - } - - "@types/babel__core@7.20.5": - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } - - "@types/babel__generator@7.6.8": - resolution: - { - integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==, - } - - "@types/babel__template@7.4.4": - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } - - "@types/babel__traverse@7.20.6": - resolution: - { - integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==, - } - - "@types/debug@4.1.12": - resolution: - { - integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==, - } - - "@types/estree-jsx@1.0.5": - resolution: - { - integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==, - } - - "@types/estree@1.0.6": - resolution: - { - integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==, - } - - "@types/geojson-vt@3.2.5": - resolution: - { - integrity: sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==, - } - - "@types/geojson@7946.0.14": - resolution: - { - integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==, - } - - "@types/hast@3.0.4": - resolution: - { - integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==, - } - - "@types/json-schema@7.0.15": - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } - - "@types/mapbox__point-geometry@0.1.4": - resolution: - { - integrity: sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==, - } - - "@types/mapbox__vector-tile@1.3.4": - resolution: - { - integrity: sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==, - } - - "@types/mdast@4.0.4": - resolution: - { - integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==, - } - - "@types/ms@0.7.34": - resolution: - { - integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==, - } - - "@types/pbf@3.0.5": - resolution: - { - integrity: sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==, - } - - "@types/prop-types@15.7.13": - resolution: - { - integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==, - } - - "@types/react-dom@18.3.0": - resolution: - { - integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==, - } - - "@types/react@18.3.10": - resolution: - { - integrity: sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==, - } - - "@types/supercluster@7.1.3": - resolution: - { - integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==, - } - - "@types/terraformer__wkt@2.0.3": - resolution: - { - integrity: sha512-60CGvi30kMIKl2QERrE6LD5iPm4lutZ1M/mqBY4wrn6H/QlZQa/5CN1e6trZ6ZtSRHLbHLwG+egt/nAIDbPG0A==, - } - - "@types/trusted-types@2.0.7": - resolution: - { - integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, - } - - "@types/unist@2.0.11": - resolution: - { - integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==, - } - - "@types/unist@3.0.3": - resolution: - { - integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==, - } - - "@typescript-eslint/eslint-plugin@8.8.0": - resolution: - { - integrity: sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/eslint-plugin@8.8.0': + resolution: {integrity: sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true - "@typescript-eslint/parser@8.8.0": - resolution: - { - integrity: sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/parser@8.18.2': + resolution: {integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/parser@8.8.0': + resolution: {integrity: sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true - "@typescript-eslint/scope-manager@8.8.0": - resolution: - { - integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@typescript-eslint/type-utils@8.8.0": - resolution: - { - integrity: sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/scope-manager@8.18.2': + resolution: {integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.8.0': + resolution: {integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.18.2': + resolution: {integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: "*" + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/type-utils@8.8.0': + resolution: {integrity: sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' peerDependenciesMeta: typescript: optional: true - "@typescript-eslint/types@8.8.0": - resolution: - { - integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@typescript-eslint/typescript-estree@8.8.0": - resolution: - { - integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/types@8.18.2': + resolution: {integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.8.0': + resolution: {integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.18.2': + resolution: {integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/typescript-estree@8.8.0': + resolution: {integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true - "@typescript-eslint/utils@8.8.0": - resolution: - { - integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/utils@8.18.2': + resolution: {integrity: sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - "@typescript-eslint/visitor-keys@8.8.0": - resolution: - { - integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - "@ungap/structured-clone@1.2.0": - resolution: - { - integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, - } - - "@vitejs/plugin-react@4.3.2": - resolution: - { - integrity: sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + '@typescript-eslint/utils@8.8.0': + resolution: {integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@8.18.2': + resolution: {integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.8.0': + resolution: {integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitejs/plugin-react@4.3.2': + resolution: {integrity: sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 acorn-jsx@5.3.2: - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn@8.12.1: - resolution: - { - integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} hasBin: true ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} ansi-regex@6.1.0: - resolution: - { - integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} any-promise@1.3.0: - resolution: - { - integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, - } + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, - } + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} arr-union@3.1.0: - resolution: - { - integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} assign-symbols@1.0.0: - resolution: - { - integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, - } + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} attr-accept@2.2.4: - resolution: - { - integrity: sha512-2pA6xFIbdTUDCAwjN8nQwI+842VwzbDUXO2IYlpPXQIORgKnavorcr4Ce3rwh+zsNg9zK7QPsdvDj3Lum4WX4w==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-2pA6xFIbdTUDCAwjN8nQwI+842VwzbDUXO2IYlpPXQIORgKnavorcr4Ce3rwh+zsNg9zK7QPsdvDj3Lum4WX4w==} + engines: {node: '>=4'} autoprefixer@10.4.20: - resolution: - { - integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.2: + resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} + engines: {node: '>=4'} + axios@1.7.7: - resolution: - { - integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==, - } + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} bail@2.0.2: - resolution: - { - integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==, - } + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} binary-extensions@2.3.0: - resolution: - { - integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} brace-expansion@2.0.1: - resolution: - { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, - } + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} browserslist@4.24.0: - resolution: - { - integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bytewise-core@1.2.3: - resolution: - { - integrity: sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==, - } + resolution: {integrity: sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==} bytewise@1.1.0: - resolution: - { - integrity: sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==, - } + resolution: {integrity: sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==} + + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} camelcase-css@2.0.1: - resolution: - { - integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} caniuse-lite@1.0.30001664: - resolution: - { - integrity: sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==, - } + resolution: {integrity: sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==} ccount@2.0.1: - resolution: - { - integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, - } + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} character-entities-html4@2.1.0: - resolution: - { - integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, - } + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} character-entities-legacy@3.0.0: - resolution: - { - integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, - } + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} character-entities@2.0.2: - resolution: - { - integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==, - } + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} character-reference-invalid@2.0.1: - resolution: - { - integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==, - } + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} chokidar@3.6.0: - resolution: - { - integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, - } - engines: { node: ">= 8.10.0" } + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} clsx@2.1.1: - resolution: - { - integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} combined-stream@1.0.8: - resolution: - { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} comma-separated-tokens@2.0.3: - resolution: - { - integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, - } + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} commander@4.1.1: - resolution: - { - integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} composed-offset-position@0.0.4: - resolution: - { - integrity: sha512-vMlvu1RuNegVE0YsCDSV/X4X10j56mq7PCIyOKK74FxkXzGLwhOUmdkJLSdOBOMwWycobGUMgft2lp+YgTe8hw==, - } + resolution: {integrity: sha512-vMlvu1RuNegVE0YsCDSV/X4X10j56mq7PCIyOKK74FxkXzGLwhOUmdkJLSdOBOMwWycobGUMgft2lp+YgTe8hw==} concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} css-jss@10.10.0: - resolution: - { - integrity: sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==, - } + resolution: {integrity: sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==} css-vendor@2.0.8: - resolution: - { - integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==, - } + resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} cssesc@3.0.0: - resolution: - { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} hasBin: true csstype@3.1.3: - resolution: - { - integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==, - } + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} debug@4.3.7: - resolution: - { - integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true decode-named-character-reference@1.0.2: - resolution: - { - integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==, - } + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} delayed-stream@1.0.0: - resolution: - { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} dequal@2.0.3: - resolution: - { - integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} devlop@1.1.0: - resolution: - { - integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, - } + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} didyoumean@1.2.2: - resolution: - { - integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, - } + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dlv@1.1.3: - resolution: - { - integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, - } + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} earcut@3.0.0: - resolution: - { - integrity: sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==, - } + resolution: {integrity: sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==} eastasianwidth@0.2.0: - resolution: - { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, - } + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} electron-to-chromium@1.5.30: - resolution: - { - integrity: sha512-sXI35EBN4lYxzc/pIGorlymYNzDBOqkSlVRe6MkgBsW/hW1tpC/HDJ2fjG7XnjakzfLEuvdmux0Mjs6jHq4UOA==, - } + resolution: {integrity: sha512-sXI35EBN4lYxzc/pIGorlymYNzDBOqkSlVRe6MkgBsW/hW1tpC/HDJ2fjG7XnjakzfLEuvdmux0Mjs6jHq4UOA==} emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, - } + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + es-abstract@1.23.8: + resolution: {integrity: sha512-lfab8IzDn6EpI1ibZakcgS6WsfEBiB+43cuJo+wgylx1xKXf+Sp+YR3vFuQwC/u3sxYwV8Cxe3B0DpVUu/WiJQ==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} esbuild@0.21.5: - resolution: - { - integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} hasBin: true escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} escape-string-regexp@5.0.0: - resolution: - { - integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} eslint-config-prettier@9.1.0: - resolution: - { - integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==, - } + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: - eslint: ">=7.0.0" + eslint: '>=7.0.0' + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 eslint-plugin-prettier@5.2.1: - resolution: - { - integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - "@types/eslint": ">=8.0.0" - eslint: ">=8.0.0" - eslint-config-prettier: "*" - prettier: ">=3.0.0" + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' peerDependenciesMeta: - "@types/eslint": + '@types/eslint': optional: true eslint-config-prettier: optional: true eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614: - resolution: - { - integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==} + engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 eslint-plugin-react-refresh@0.4.12: - resolution: - { - integrity: sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==, - } + resolution: {integrity: sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==} + peerDependencies: + eslint: '>=7' + + eslint-plugin-react@7.37.3: + resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-tailwindcss@3.17.5: + resolution: {integrity: sha512-8Mi7p7dm+mO1dHgRHHFdPu4RDTBk69Cn4P0B40vRQR+MrguUpwmKwhZy1kqYe3Km8/4nb+cyrCF+5SodOEmaow==} + engines: {node: '>=18.12.0'} peerDependencies: - eslint: ">=7" + tailwindcss: ^3.4.0 eslint-scope@8.1.0: - resolution: - { - integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: - resolution: - { - integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} eslint-visitor-keys@4.1.0: - resolution: - { - integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint@9.11.1: - resolution: - { - integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: - jiti: "*" + jiti: '*' peerDependenciesMeta: jiti: optional: true espree@10.2.0: - resolution: - { - integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} hasBin: true esquery@1.6.0: - resolution: - { - integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} estree-util-is-identifier-name@3.0.0: - resolution: - { - integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==, - } + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} extend-shallow@2.0.1: - resolution: - { - integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} extend-shallow@3.0.2: - resolution: - { - integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} extend@3.0.2: - resolution: - { - integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, - } + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-diff@1.3.0: - resolution: - { - integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, - } + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} fast-glob@3.3.2: - resolution: - { - integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, - } - engines: { node: ">=8.6.0" } + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} fastq@1.17.1: - resolution: - { - integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==, - } + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} fflate@0.8.2: - resolution: - { - integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==, - } + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} file-entry-cache@8.0.0: - resolution: - { - integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, - } - engines: { node: ">=16.0.0" } + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} file-selector@0.6.0: - resolution: - { - integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==, - } - engines: { node: ">= 12" } + resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} + engines: {node: '>= 12'} fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} flat-cache@4.0.1: - resolution: - { - integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.3.1: - resolution: - { - integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==, - } + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} follow-redirects@1.15.9: - resolution: - { - integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} peerDependencies: - debug: "*" + debug: '*' peerDependenciesMeta: debug: optional: true + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + foreground-child@3.3.0: - resolution: - { - integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} form-data@4.0.0: - resolution: - { - integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} fraction.js@4.3.7: - resolution: - { - integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, - } + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} framer-motion@11.9.0: - resolution: - { - integrity: sha512-nCfGxvsQecVLjjYDu35G2F5ls+ArE3FBfhxV0RSiisMaUKqteq5DMBFNRKwMyVj+VqKTNhawt+BV480YCHKFlQ==, - } + resolution: {integrity: sha512-nCfGxvsQecVLjjYDu35G2F5ls+ArE3FBfhxV0RSiisMaUKqteq5DMBFNRKwMyVj+VqKTNhawt+BV480YCHKFlQ==} peerDependencies: - "@emotion/is-prop-valid": "*" + '@emotion/is-prop-valid': '*' react: ^18.0.0 react-dom: ^18.0.0 peerDependenciesMeta: - "@emotion/is-prop-valid": + '@emotion/is-prop-valid': optional: true react: optional: true @@ -2107,1152 +1679,802 @@ packages: optional: true fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} geojson-vt@4.0.2: - resolution: - { - integrity: sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==, - } + resolution: {integrity: sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==} geojson@0.5.0: - resolution: - { - integrity: sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==, - } - engines: { node: ">= 0.10" } + resolution: {integrity: sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==} + engines: {node: '>= 0.10'} + + get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} get-value@2.0.6: - resolution: - { - integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} gl-matrix@3.4.3: - resolution: - { - integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==, - } + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} glob@10.4.5: - resolution: - { - integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, - } + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true global-prefix@4.0.0: - resolution: - { - integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==} + engines: {node: '>=16'} globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} globals@14.0.0: - resolution: - { - integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} globals@15.10.0: - resolution: - { - integrity: sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} globrex@0.1.2: - resolution: - { - integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==, - } + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} graphemer@1.4.0: - resolution: - { - integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, - } + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} hast-util-to-jsx-runtime@2.3.2: - resolution: - { - integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==, - } + resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} hast-util-whitespace@3.0.0: - resolution: - { - integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==, - } + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} hoist-non-react-statics@3.3.2: - resolution: - { - integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==, - } + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} html-url-attributes@3.0.1: - resolution: - { - integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==, - } + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} hyphenate-style-name@1.1.0: - resolution: - { - integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==, - } + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} ignore@5.3.2: - resolution: - { - integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} import-fresh@3.3.0: - resolution: - { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} ini@4.1.3: - resolution: - { - integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} inline-style-parser@0.2.4: - resolution: - { - integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==, - } + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} invariant@2.2.4: - resolution: - { - integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, - } + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} is-alphabetical@2.0.1: - resolution: - { - integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==, - } + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} is-alphanumerical@2.0.1: - resolution: - { - integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==, - } + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.1: + resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} is-core-module@2.15.1: - resolution: - { - integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} is-decimal@2.0.1: - resolution: - { - integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==, - } + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} is-extendable@0.1.1: - resolution: - { - integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} is-extendable@1.0.1: - resolution: - { - integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} is-hexadecimal@2.0.1: - resolution: - { - integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==, - } + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} is-in-browser@1.1.3: - resolution: - { - integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==, - } + resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} is-path-inside@3.0.3: - resolution: - { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} is-plain-obj@4.1.0: - resolution: - { - integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} is-plain-object@2.0.4: - resolution: - { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.0: + resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} isexe@3.1.1: - resolution: - { - integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} isobject@3.0.1: - resolution: - { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + iterator.prototype@1.1.4: + resolution: {integrity: sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==} + engines: {node: '>= 0.4'} jackspeak@3.4.3: - resolution: - { - integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, - } + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} jiti@1.21.6: - resolution: - { - integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==, - } + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true jsesc@2.5.2: - resolution: - { - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} hasBin: true json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, - } + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} json-stringify-pretty-compact@4.0.0: - resolution: - { - integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==, - } + resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} hasBin: true jss-plugin-camel-case@10.10.0: - resolution: - { - integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==, - } + resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} jss-plugin-compose@10.10.0: - resolution: - { - integrity: sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==, - } + resolution: {integrity: sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==} jss-plugin-default-unit@10.10.0: - resolution: - { - integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==, - } + resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} jss-plugin-expand@10.10.0: - resolution: - { - integrity: sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==, - } + resolution: {integrity: sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==} jss-plugin-extend@10.10.0: - resolution: - { - integrity: sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==, - } + resolution: {integrity: sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==} jss-plugin-global@10.10.0: - resolution: - { - integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==, - } + resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} jss-plugin-nested@10.10.0: - resolution: - { - integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==, - } + resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} jss-plugin-props-sort@10.10.0: - resolution: - { - integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==, - } + resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} jss-plugin-rule-value-function@10.10.0: - resolution: - { - integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==, - } + resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} jss-plugin-rule-value-observable@10.10.0: - resolution: - { - integrity: sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==, - } + resolution: {integrity: sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==} jss-plugin-template@10.10.0: - resolution: - { - integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==, - } + resolution: {integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==} jss-plugin-vendor-prefixer@10.10.0: - resolution: - { - integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==, - } + resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} jss-preset-default@10.10.0: - resolution: - { - integrity: sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==, - } + resolution: {integrity: sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==} jss@10.10.0: - resolution: - { - integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==, - } + resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} kdbush@4.0.2: - resolution: - { - integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==, - } + resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} keyv@4.5.4: - resolution: - { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, - } + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} lilconfig@2.1.0: - resolution: - { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} lilconfig@3.1.2: - resolution: - { - integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} lit-element@4.1.0: - resolution: - { - integrity: sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==, - } + resolution: {integrity: sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==} lit-html@3.2.0: - resolution: - { - integrity: sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==, - } + resolution: {integrity: sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==} lit@3.2.0: - resolution: - { - integrity: sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==, - } + resolution: {integrity: sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==} locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} lodash.castarray@4.4.0: - resolution: - { - integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==, - } + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} lodash.isplainobject@4.0.6: - resolution: - { - integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, - } + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} longest-streak@3.1.0: - resolution: - { - integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, - } + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, - } + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true lru-cache@10.4.3: - resolution: - { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, - } + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} maplibre-gl@4.7.1: - resolution: - { - integrity: sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==, - } - engines: { node: ">=16.14.0", npm: ">=8.1.0" } + resolution: {integrity: sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==} + engines: {node: '>=16.14.0', npm: '>=8.1.0'} markdown-table@3.0.4: - resolution: - { - integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==, - } + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} mdast-util-find-and-replace@3.0.1: - resolution: - { - integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==, - } + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} mdast-util-from-markdown@2.0.2: - resolution: - { - integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==, - } + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} mdast-util-gfm-autolink-literal@2.0.1: - resolution: - { - integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==, - } + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} mdast-util-gfm-footnote@2.0.0: - resolution: - { - integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==, - } + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} mdast-util-gfm-strikethrough@2.0.0: - resolution: - { - integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==, - } + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} mdast-util-gfm-table@2.0.0: - resolution: - { - integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==, - } + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} mdast-util-gfm-task-list-item@2.0.0: - resolution: - { - integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==, - } + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} mdast-util-gfm@3.0.0: - resolution: - { - integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==, - } + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} mdast-util-mdx-expression@2.0.1: - resolution: - { - integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==, - } + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} mdast-util-mdx-jsx@3.1.3: - resolution: - { - integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==, - } + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} mdast-util-mdxjs-esm@2.0.1: - resolution: - { - integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==, - } + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} mdast-util-phrasing@4.1.0: - resolution: - { - integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==, - } + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} mdast-util-to-hast@13.2.0: - resolution: - { - integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==, - } + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} mdast-util-to-markdown@2.1.2: - resolution: - { - integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==, - } + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} mdast-util-to-string@4.0.0: - resolution: - { - integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==, - } + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} micromark-core-commonmark@2.0.2: - resolution: - { - integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==, - } + resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==} micromark-extension-gfm-autolink-literal@2.1.0: - resolution: - { - integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==, - } + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} micromark-extension-gfm-footnote@2.1.0: - resolution: - { - integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==, - } + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} micromark-extension-gfm-strikethrough@2.1.0: - resolution: - { - integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==, - } + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} micromark-extension-gfm-table@2.1.0: - resolution: - { - integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==, - } + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} micromark-extension-gfm-tagfilter@2.0.0: - resolution: - { - integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==, - } + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} micromark-extension-gfm-task-list-item@2.1.0: - resolution: - { - integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==, - } + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} micromark-extension-gfm@3.0.0: - resolution: - { - integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==, - } + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} micromark-factory-destination@2.0.1: - resolution: - { - integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==, - } + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} micromark-factory-label@2.0.1: - resolution: - { - integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==, - } + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} micromark-factory-space@2.0.1: - resolution: - { - integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==, - } + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} micromark-factory-title@2.0.1: - resolution: - { - integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==, - } + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} micromark-factory-whitespace@2.0.1: - resolution: - { - integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==, - } + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} micromark-util-character@2.1.1: - resolution: - { - integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==, - } + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} micromark-util-chunked@2.0.1: - resolution: - { - integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==, - } + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} micromark-util-classify-character@2.0.1: - resolution: - { - integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==, - } + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} micromark-util-combine-extensions@2.0.1: - resolution: - { - integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==, - } + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} micromark-util-decode-numeric-character-reference@2.0.2: - resolution: - { - integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==, - } + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} micromark-util-decode-string@2.0.1: - resolution: - { - integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==, - } + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} micromark-util-encode@2.0.1: - resolution: - { - integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==, - } + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} micromark-util-html-tag-name@2.0.1: - resolution: - { - integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==, - } + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} micromark-util-normalize-identifier@2.0.1: - resolution: - { - integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==, - } + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} micromark-util-resolve-all@2.0.1: - resolution: - { - integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==, - } + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} micromark-util-sanitize-uri@2.0.1: - resolution: - { - integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==, - } + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} micromark-util-subtokenize@2.0.2: - resolution: - { - integrity: sha512-xKxhkB62vwHUuuxHe9Xqty3UaAsizV2YKq5OV344u3hFBbf8zIYrhYOWhAQb94MtMPkjTOzzjJ/hid9/dR5vFA==, - } + resolution: {integrity: sha512-xKxhkB62vwHUuuxHe9Xqty3UaAsizV2YKq5OV344u3hFBbf8zIYrhYOWhAQb94MtMPkjTOzzjJ/hid9/dR5vFA==} micromark-util-symbol@2.0.1: - resolution: - { - integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==, - } + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} micromark-util-types@2.0.1: - resolution: - { - integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==, - } + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} micromark@4.0.1: - resolution: - { - integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==, - } + resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} micromatch@4.0.8: - resolution: - { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} minimatch@9.0.5: - resolution: - { - integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} minipass@7.1.2: - resolution: - { - integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} murmurhash-js@1.0.0: - resolution: - { - integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==, - } + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} mz@2.7.0: - resolution: - { - integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, - } + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} nanoid@3.3.7: - resolution: - { - integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} node-releases@2.0.18: - resolution: - { - integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==, - } + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} normalize-range@0.1.2: - resolution: - { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} object-hash@3.0.0: - resolution: - { - integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} optionator@0.9.4: - resolution: - { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.0: + resolution: {integrity: sha512-HcuIjzpjrUbqZPGzWHVg95Bc2Y37KoY5n66QQyEGMzrIWVKHsgHcv8/Aq5Cu3qFUQJzMSPVP8MD3oaFoaME1lg==} + engines: {node: '>= 0.4'} p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} package-json-from-dist@1.0.1: - resolution: - { - integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, - } + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} parse-entities@4.0.1: - resolution: - { - integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==, - } + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} path-scurry@1.11.1: - resolution: - { - integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, - } - engines: { node: ">=16 || 14 >=14.18" } + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} pbf@3.3.0: - resolution: - { - integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==, - } + resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==} hasBin: true picocolors@1.1.0: - resolution: - { - integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==, - } + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} pify@2.3.0: - resolution: - { - integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} pirates@4.0.6: - resolution: - { - integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} pmtiles@4.1.0: - resolution: - { - integrity: sha512-wymKYI61y3yI/iTzYHW18l6ViYBnF7TXbFnXb9q7RcWqkQ2EfgQVDzEIc5lImd3aAVkxu2tuWaoYhokov6N9VA==, - } + resolution: {integrity: sha512-wymKYI61y3yI/iTzYHW18l6ViYBnF7TXbFnXb9q7RcWqkQ2EfgQVDzEIc5lImd3aAVkxu2tuWaoYhokov6N9VA==} point-in-polygon-hao@1.1.0: - resolution: - { - integrity: sha512-3hTIM2j/v9Lio+wOyur3kckD4NxruZhpowUbEgmyikW+a2Kppjtu1eN+AhnMQtoHW46zld88JiYWv6fxpsDrTQ==, - } + resolution: {integrity: sha512-3hTIM2j/v9Lio+wOyur3kckD4NxruZhpowUbEgmyikW+a2Kppjtu1eN+AhnMQtoHW46zld88JiYWv6fxpsDrTQ==} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} postcss-import@15.1.0: - resolution: - { - integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 postcss-js@4.0.1: - resolution: - { - integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==, - } - engines: { node: ^12 || ^14 || >= 16 } + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 postcss-load-config@4.0.2: - resolution: - { - integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" + postcss: '>=8.0.9' + ts-node: '>=9.0.0' peerDependenciesMeta: postcss: optional: true @@ -3260,656 +2482,472 @@ packages: optional: true postcss-nested@6.2.0: - resolution: - { - integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==, - } - engines: { node: ">=12.0" } + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 postcss-selector-parser@6.0.10: - resolution: - { - integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} postcss-selector-parser@6.1.2: - resolution: - { - integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} postcss-value-parser@4.2.0: - resolution: - { - integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, - } + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} postcss@8.4.47: - resolution: - { - integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} potpack@2.0.0: - resolution: - { - integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==, - } + resolution: {integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==} prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} prettier-linter-helpers@1.0.0: - resolution: - { - integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, - } - engines: { node: ">=6.0.0" } + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} prettier@3.3.3: - resolution: - { - integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} hasBin: true prop-types@15.8.1: - resolution: - { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, - } + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} property-information@6.5.0: - resolution: - { - integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==, - } + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} protocol-buffers-schema@3.6.0: - resolution: - { - integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==, - } + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} proxy-from-env@1.1.0: - resolution: - { - integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, - } + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} qr-creator@1.0.0: - resolution: - { - integrity: sha512-C0cqfbS1P5hfqN4NhsYsUXePlk9BO+a45bAQ3xLYjBL3bOIFzoVEjs79Fado9u9BPBD3buHi3+vY+C8tHh4qMQ==, - } + resolution: {integrity: sha512-C0cqfbS1P5hfqN4NhsYsUXePlk9BO+a45bAQ3xLYjBL3bOIFzoVEjs79Fado9u9BPBD3buHi3+vY+C8tHh4qMQ==} queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} quickselect@2.0.0: - resolution: - { - integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==, - } + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} quickselect@3.0.0: - resolution: - { - integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==, - } + resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} react-confetti-explosion@2.1.2: - resolution: - { - integrity: sha512-4UzDFBajAGXmF9TSJoRMO2QOBCIXc66idTxH8l7Mkul48HLGtk+tMzK9HYDYsy7Zmw5sEGchi2fbn4AJUuLrZw==, - } + resolution: {integrity: sha512-4UzDFBajAGXmF9TSJoRMO2QOBCIXc66idTxH8l7Mkul48HLGtk+tMzK9HYDYsy7Zmw5sEGchi2fbn4AJUuLrZw==} peerDependencies: react: ^18.x react-dom: ^18.x react-display-name@0.2.5: - resolution: - { - integrity: sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg==, - } + resolution: {integrity: sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg==} react-dom@18.3.1: - resolution: - { - integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==, - } + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: react: ^18.3.1 react-dropzone@14.2.10: - resolution: - { - integrity: sha512-Y98LOCYxGO2jOFWREeKJlL7gbrHcOlTBp+9DCM1dh9XQ8+P/8ThhZT7kFb05C+bPcTXq/rixpU+5+LzwYrFLUw==, - } - engines: { node: ">= 10.13" } + resolution: {integrity: sha512-Y98LOCYxGO2jOFWREeKJlL7gbrHcOlTBp+9DCM1dh9XQ8+P/8ThhZT7kFb05C+bPcTXq/rixpU+5+LzwYrFLUw==} + engines: {node: '>= 10.13'} peerDependencies: - react: ">= 16.8 || 18.0.0" + react: '>= 16.8 || 18.0.0' react-error-boundary@4.0.13: - resolution: - { - integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==, - } + resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} peerDependencies: - react: ">=16.13.1" + react: '>=16.13.1' react-fast-compare@3.2.2: - resolution: - { - integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==, - } + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} react-helmet-async@2.0.5: - resolution: - { - integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==, - } + resolution: {integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==} peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-is@16.13.1: - resolution: - { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, - } + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} react-jss@10.10.0: - resolution: - { - integrity: sha512-WLiq84UYWqNBF6579/uprcIUnM1TSywYq6AIjKTTTG5ziJl9Uy+pwuvpN3apuyVwflMbD60PraeTKT7uWH9XEQ==, - } + resolution: {integrity: sha512-WLiq84UYWqNBF6579/uprcIUnM1TSywYq6AIjKTTTG5ziJl9Uy+pwuvpN3apuyVwflMbD60PraeTKT7uWH9XEQ==} peerDependencies: - react: ">=16.8.6" + react: '>=16.8.6' react-markdown@9.0.1: - resolution: - { - integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==, - } + resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: - "@types/react": ">=18" - react: ">=18" + '@types/react': '>=18' + react: '>=18' react-medium-image-zoom@5.2.11: - resolution: - { - integrity: sha512-K3REdn96k2H+6iQlRSl7C7O5lMhdhRx3W1NFJXRar6wMeHpOwp5wI/6N0SfuF/NiKu+HIPxY0FSdvMIJwynTCw==, - } + resolution: {integrity: sha512-K3REdn96k2H+6iQlRSl7C7O5lMhdhRx3W1NFJXRar6wMeHpOwp5wI/6N0SfuF/NiKu+HIPxY0FSdvMIJwynTCw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 react-refresh@0.14.2: - resolution: - { - integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.2: + resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true react-router-dom@6.26.2: - resolution: - { - integrity: sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==} + engines: {node: '>=14.0.0'} peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" + react: '>=16.8' + react-dom: '>=16.8' react-router@6.26.2: - resolution: - { - integrity: sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==} + engines: {node: '>=14.0.0'} peerDependencies: - react: ">=16.8" + react: '>=16.8' + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true react@18.3.1: - resolution: - { - integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} read-cache@1.0.0: - resolution: - { - integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, - } + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: ">=8.10.0" } + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + reflect.getprototypeof@1.0.9: + resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} + engines: {node: '>= 0.4'} regenerator-runtime@0.14.1: - resolution: - { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, - } + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} remark-gfm@4.0.0: - resolution: - { - integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==, - } + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} remark-parse@11.0.0: - resolution: - { - integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==, - } + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} remark-rehype@11.1.1: - resolution: - { - integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==, - } + resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} remark-stringify@11.0.0: - resolution: - { - integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==, - } + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} resolve-protobuf-schema@2.1.0: - resolution: - { - integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==, - } + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} resolve@1.22.8: - resolution: - { - integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, - } + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, - } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rollup@4.23.0: - resolution: - { - integrity: sha512-vXB4IT9/KLDrS2WRXmY22sVB2wTsTwkpxjB8Q3mnakTENcYw3FRmfdYDy/acNmls+lHmDazgrRjK/yQ6hQAtwA==, - } - engines: { node: ">=18.0.0", npm: ">=8.0.0" } + resolution: {integrity: sha512-vXB4IT9/KLDrS2WRXmY22sVB2wTsTwkpxjB8Q3mnakTENcYw3FRmfdYDy/acNmls+lHmDazgrRjK/yQ6hQAtwA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rw@1.3.3: - resolution: - { - integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==, - } + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} scheduler@0.23.2: - resolution: - { - integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==, - } + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.6.3: - resolution: - { - integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} hasBin: true + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + set-value@2.0.1: - resolution: - { - integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} shallow-equal@1.2.1: - resolution: - { - integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==, - } + resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} shallowequal@1.1.0: - resolution: - { - integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==, - } + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} sort-asc@0.2.0: - resolution: - { - integrity: sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==} + engines: {node: '>=0.10.0'} sort-desc@0.2.0: - resolution: - { - integrity: sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==} + engines: {node: '>=0.10.0'} sort-object@3.0.3: - resolution: - { - integrity: sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==} + engines: {node: '>=0.10.0'} source-map-js@1.2.1: - resolution: - { - integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} space-separated-tokens@2.0.2: - resolution: - { - integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, - } + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} split-string@3.1.0: - resolution: - { - integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} string-width@5.1.2: - resolution: - { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} stringify-entities@4.0.4: - resolution: - { - integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==, - } + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} strip-ansi@7.1.0: - resolution: - { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} style-to-object@1.0.8: - resolution: - { - integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==, - } + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} sucrase@3.35.0: - resolution: - { - integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true supercluster@8.0.1: - resolution: - { - integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==, - } + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} sweepline-intersections@1.5.0: - resolution: - { - integrity: sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==, - } + resolution: {integrity: sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==} symbol-observable@1.2.0: - resolution: - { - integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} + engines: {node: '>=0.10.0'} synckit@0.9.1: - resolution: - { - integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} tailwind-merge@2.5.2: - resolution: - { - integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==, - } + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} tailwindcss@3.4.13: - resolution: - { - integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==} + engines: {node: '>=14.0.0'} hasBin: true terra-draw@1.0.0-beta.8: - resolution: - { - integrity: sha512-40kOjgOQkDDmRIkz7QZ4urjwb9v/+Zm7tPf3RqeDY4UtKm3JodZ5iz3fFm93u3nzd+QVQlOZF0VF15ew0esQ7A==, - } + resolution: {integrity: sha512-40kOjgOQkDDmRIkz7QZ4urjwb9v/+Zm7tPf3RqeDY4UtKm3JodZ5iz3fFm93u3nzd+QVQlOZF0VF15ew0esQ7A==} text-table@0.2.0: - resolution: - { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, - } + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} theming@3.3.0: - resolution: - { - integrity: sha512-u6l4qTJRDaWZsqa8JugaNt7Xd8PPl9+gonZaIe28vAhqgHMIG/DOyFPqiKN/gQLQYj05tHv+YQdNILL4zoiAVA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-u6l4qTJRDaWZsqa8JugaNt7Xd8PPl9+gonZaIe28vAhqgHMIG/DOyFPqiKN/gQLQYj05tHv+YQdNILL4zoiAVA==} + engines: {node: '>=8'} peerDependencies: - react: ">=16.3" + react: '>=16.3' thenify-all@1.6.0: - resolution: - { - integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, - } - engines: { node: ">=0.8" } + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} thenify@3.3.1: - resolution: - { - integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, - } + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} tiny-warning@1.0.3: - resolution: - { - integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==, - } + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} tinyqueue@2.0.3: - resolution: - { - integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==, - } + resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} tinyqueue@3.0.0: - resolution: - { - integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==, - } + resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==} to-fast-properties@2.0.0: - resolution: - { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} trim-lines@3.0.1: - resolution: - { - integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, - } + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} trough@2.2.0: - resolution: - { - integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==, - } + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} ts-api-utils@1.3.0: - resolution: - { - integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: - typescript: ">=4.2.0" + typescript: '>=4.2.0' ts-interface-checker@0.1.13: - resolution: - { - integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, - } + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} tsconfck@3.1.3: - resolution: - { - integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==, - } - engines: { node: ^18 || >=20 } + resolution: {integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==} + engines: {node: ^18 || >=20} hasBin: true peerDependencies: typescript: ^5.0.0 @@ -3918,155 +2956,141 @@ packages: optional: true tslib@2.7.0: - resolution: - { - integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==, - } + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} typescript-eslint@8.8.0: - resolution: - { - integrity: sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: "*" + typescript: '*' peerDependenciesMeta: typescript: optional: true typescript@5.6.2: - resolution: - { - integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==, - } - engines: { node: ">=14.17" } + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} hasBin: true typewise-core@1.2.0: - resolution: - { - integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==, - } + resolution: {integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==} typewise@1.0.3: - resolution: - { - integrity: sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==, - } + resolution: {integrity: sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} unified@11.0.5: - resolution: - { - integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==, - } + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} union-value@1.0.1: - resolution: - { - integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} unist-util-is@6.0.0: - resolution: - { - integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==, - } + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} unist-util-position@5.0.0: - resolution: - { - integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==, - } + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} unist-util-stringify-position@4.0.0: - resolution: - { - integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, - } + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} unist-util-visit-parents@6.0.1: - resolution: - { - integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==, - } + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} unist-util-visit@5.0.0: - resolution: - { - integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==, - } + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} update-browserslist-db@1.1.1: - resolution: - { - integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==, - } + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: - browserslist: ">= 4.21.0" + browserslist: '>= 4.21.0' uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vaul@1.1.2: + resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc vfile-message@4.0.2: - resolution: - { - integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==, - } + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} vfile@6.0.3: - resolution: - { - integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, - } + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} vite-tsconfig-paths@5.0.1: - resolution: - { - integrity: sha512-yqwv+LstU7NwPeNqajZzLEBVpUFU6Dugtb2P84FXuvaoYA+/70l9MHE+GYfYAycVyPSDYZ7mjOFuYBRqlEpTig==, - } + resolution: {integrity: sha512-yqwv+LstU7NwPeNqajZzLEBVpUFU6Dugtb2P84FXuvaoYA+/70l9MHE+GYfYAycVyPSDYZ7mjOFuYBRqlEpTig==} peerDependencies: - vite: "*" + vite: '*' peerDependenciesMeta: vite: optional: true vite@5.4.8: - resolution: - { - integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==, - } - engines: { node: ^18.0.0 || >=20.0.0 } + resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 - less: "*" + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' terser: ^5.4.0 peerDependenciesMeta: - "@types/node": + '@types/node': optional: true less: optional: true @@ -4084,109 +3108,93 @@ packages: optional: true vt-pbf@3.1.3: - resolution: - { - integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==, - } + resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true which@4.0.0: - resolution: - { - integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==, - } - engines: { node: ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} hasBin: true word-wrap@1.2.5: - resolution: - { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} xmlbuilder2@3.1.1: - resolution: - { - integrity: sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==, - } - engines: { node: ">=12.0" } + resolution: {integrity: sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==} + engines: {node: '>=12.0'} yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yaml@2.5.1: - resolution: - { - integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} hasBin: true yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} zwitch@2.0.4: - resolution: - { - integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, - } + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: - "@alloc/quick-lru@5.2.0": {} - "@ampproject/remapping@2.3.0": + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': dependencies: - "@jridgewell/gen-mapping": 0.3.5 - "@jridgewell/trace-mapping": 0.3.25 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - "@babel/code-frame@7.24.7": + '@babel/code-frame@7.24.7': dependencies: - "@babel/highlight": 7.24.7 + '@babel/highlight': 7.24.7 picocolors: 1.1.0 - "@babel/compat-data@7.25.4": {} + '@babel/compat-data@7.25.4': {} - "@babel/core@7.25.2": + '@babel/core@7.25.2': dependencies: - "@ampproject/remapping": 2.3.0 - "@babel/code-frame": 7.24.7 - "@babel/generator": 7.25.6 - "@babel/helper-compilation-targets": 7.25.2 - "@babel/helper-module-transforms": 7.25.2(@babel/core@7.25.2) - "@babel/helpers": 7.25.6 - "@babel/parser": 7.25.6 - "@babel/template": 7.25.0 - "@babel/traverse": 7.25.6 - "@babel/types": 7.25.6 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 debug: 4.3.7 gensync: 1.0.0-beta.2 @@ -4195,202 +3203,202 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/generator@7.25.6": + '@babel/generator@7.25.6': dependencies: - "@babel/types": 7.25.6 - "@jridgewell/gen-mapping": 0.3.5 - "@jridgewell/trace-mapping": 0.3.25 + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - "@babel/helper-compilation-targets@7.25.2": + '@babel/helper-compilation-targets@7.25.2': dependencies: - "@babel/compat-data": 7.25.4 - "@babel/helper-validator-option": 7.24.8 + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-module-imports@7.24.7": + '@babel/helper-module-imports@7.24.7': dependencies: - "@babel/traverse": 7.25.6 - "@babel/types": 7.25.6 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color - "@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)": + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - "@babel/core": 7.25.2 - "@babel/helper-module-imports": 7.24.7 - "@babel/helper-simple-access": 7.24.7 - "@babel/helper-validator-identifier": 7.24.7 - "@babel/traverse": 7.25.6 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color - "@babel/helper-plugin-utils@7.24.8": {} + '@babel/helper-plugin-utils@7.24.8': {} - "@babel/helper-simple-access@7.24.7": + '@babel/helper-simple-access@7.24.7': dependencies: - "@babel/traverse": 7.25.6 - "@babel/types": 7.25.6 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color - "@babel/helper-string-parser@7.24.8": {} + '@babel/helper-string-parser@7.24.8': {} - "@babel/helper-validator-identifier@7.24.7": {} + '@babel/helper-validator-identifier@7.24.7': {} - "@babel/helper-validator-option@7.24.8": {} + '@babel/helper-validator-option@7.24.8': {} - "@babel/helpers@7.25.6": + '@babel/helpers@7.25.6': dependencies: - "@babel/template": 7.25.0 - "@babel/types": 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 - "@babel/highlight@7.24.7": + '@babel/highlight@7.24.7': dependencies: - "@babel/helper-validator-identifier": 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.0 - "@babel/parser@7.25.6": + '@babel/parser@7.25.6': dependencies: - "@babel/types": 7.25.6 + '@babel/types': 7.25.6 - "@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)": + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': dependencies: - "@babel/core": 7.25.2 - "@babel/helper-plugin-utils": 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - "@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)": + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': dependencies: - "@babel/core": 7.25.2 - "@babel/helper-plugin-utils": 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - "@babel/runtime@7.25.6": + '@babel/runtime@7.25.6': dependencies: regenerator-runtime: 0.14.1 - "@babel/template@7.25.0": + '@babel/template@7.25.0': dependencies: - "@babel/code-frame": 7.24.7 - "@babel/parser": 7.25.6 - "@babel/types": 7.25.6 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 - "@babel/traverse@7.25.6": + '@babel/traverse@7.25.6': dependencies: - "@babel/code-frame": 7.24.7 - "@babel/generator": 7.25.6 - "@babel/parser": 7.25.6 - "@babel/template": 7.25.0 - "@babel/types": 7.25.6 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - "@babel/types@7.25.6": + '@babel/types@7.25.6': dependencies: - "@babel/helper-string-parser": 7.24.8 - "@babel/helper-validator-identifier": 7.24.7 + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - "@ctrl/tinycolor@4.1.0": {} + '@ctrl/tinycolor@4.1.0': {} - "@emotion/is-prop-valid@0.7.3": + '@emotion/is-prop-valid@0.7.3': dependencies: - "@emotion/memoize": 0.7.1 + '@emotion/memoize': 0.7.1 - "@emotion/memoize@0.7.1": {} + '@emotion/memoize@0.7.1': {} - "@esbuild/aix-ppc64@0.21.5": + '@esbuild/aix-ppc64@0.21.5': optional: true - "@esbuild/android-arm64@0.21.5": + '@esbuild/android-arm64@0.21.5': optional: true - "@esbuild/android-arm@0.21.5": + '@esbuild/android-arm@0.21.5': optional: true - "@esbuild/android-x64@0.21.5": + '@esbuild/android-x64@0.21.5': optional: true - "@esbuild/darwin-arm64@0.21.5": + '@esbuild/darwin-arm64@0.21.5': optional: true - "@esbuild/darwin-x64@0.21.5": + '@esbuild/darwin-x64@0.21.5': optional: true - "@esbuild/freebsd-arm64@0.21.5": + '@esbuild/freebsd-arm64@0.21.5': optional: true - "@esbuild/freebsd-x64@0.21.5": + '@esbuild/freebsd-x64@0.21.5': optional: true - "@esbuild/linux-arm64@0.21.5": + '@esbuild/linux-arm64@0.21.5': optional: true - "@esbuild/linux-arm@0.21.5": + '@esbuild/linux-arm@0.21.5': optional: true - "@esbuild/linux-ia32@0.21.5": + '@esbuild/linux-ia32@0.21.5': optional: true - "@esbuild/linux-loong64@0.21.5": + '@esbuild/linux-loong64@0.21.5': optional: true - "@esbuild/linux-mips64el@0.21.5": + '@esbuild/linux-mips64el@0.21.5': optional: true - "@esbuild/linux-ppc64@0.21.5": + '@esbuild/linux-ppc64@0.21.5': optional: true - "@esbuild/linux-riscv64@0.21.5": + '@esbuild/linux-riscv64@0.21.5': optional: true - "@esbuild/linux-s390x@0.21.5": + '@esbuild/linux-s390x@0.21.5': optional: true - "@esbuild/linux-x64@0.21.5": + '@esbuild/linux-x64@0.21.5': optional: true - "@esbuild/netbsd-x64@0.21.5": + '@esbuild/netbsd-x64@0.21.5': optional: true - "@esbuild/openbsd-x64@0.21.5": + '@esbuild/openbsd-x64@0.21.5': optional: true - "@esbuild/sunos-x64@0.21.5": + '@esbuild/sunos-x64@0.21.5': optional: true - "@esbuild/win32-arm64@0.21.5": + '@esbuild/win32-arm64@0.21.5': optional: true - "@esbuild/win32-ia32@0.21.5": + '@esbuild/win32-ia32@0.21.5': optional: true - "@esbuild/win32-x64@0.21.5": + '@esbuild/win32-x64@0.21.5': optional: true - "@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@1.21.6))": + '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@1.21.6))': dependencies: eslint: 9.11.1(jiti@1.21.6) eslint-visitor-keys: 3.4.3 - "@eslint-community/regexpp@4.11.1": {} + '@eslint-community/regexpp@4.11.1': {} - "@eslint/config-array@0.18.0": + '@eslint/config-array@0.18.0': dependencies: - "@eslint/object-schema": 2.1.4 + '@eslint/object-schema': 2.1.4 debug: 4.3.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - "@eslint/core@0.6.0": {} + '@eslint/core@0.6.0': {} - "@eslint/eslintrc@3.1.0": + '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 debug: 4.3.7 @@ -4404,30 +3412,30 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@9.11.1": {} + '@eslint/js@9.11.1': {} - "@eslint/object-schema@2.1.4": {} + '@eslint/object-schema@2.1.4': {} - "@eslint/plugin-kit@0.2.3": + '@eslint/plugin-kit@0.2.3': dependencies: levn: 0.4.1 - "@floating-ui/core@1.6.8": + '@floating-ui/core@1.6.8': dependencies: - "@floating-ui/utils": 0.2.8 + '@floating-ui/utils': 0.2.8 - "@floating-ui/dom@1.6.11": + '@floating-ui/dom@1.6.11': dependencies: - "@floating-ui/core": 1.6.8 - "@floating-ui/utils": 0.2.8 + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 - "@floating-ui/utils@0.2.8": {} + '@floating-ui/utils@0.2.8': {} - "@humanwhocodes/module-importer@1.0.1": {} + '@humanwhocodes/module-importer@1.0.1': {} - "@humanwhocodes/retry@0.3.0": {} + '@humanwhocodes/retry@0.3.0': {} - "@isaacs/cliui@8.0.2": + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 @@ -4436,56 +3444,56 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - "@jridgewell/gen-mapping@0.3.5": + '@jridgewell/gen-mapping@0.3.5': dependencies: - "@jridgewell/set-array": 1.2.1 - "@jridgewell/sourcemap-codec": 1.5.0 - "@jridgewell/trace-mapping": 0.3.25 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 - "@jridgewell/resolve-uri@3.1.2": {} + '@jridgewell/resolve-uri@3.1.2': {} - "@jridgewell/set-array@1.2.1": {} + '@jridgewell/set-array@1.2.1': {} - "@jridgewell/sourcemap-codec@1.5.0": {} + '@jridgewell/sourcemap-codec@1.5.0': {} - "@jridgewell/trace-mapping@0.3.25": + '@jridgewell/trace-mapping@0.3.25': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.0 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 - "@lit-labs/ssr-dom-shim@1.2.1": {} + '@lit-labs/ssr-dom-shim@1.2.1': {} - "@lit/react@1.0.5(@types/react@18.3.10)": + '@lit/react@1.0.5(@types/react@18.3.10)': dependencies: - "@types/react": 18.3.10 + '@types/react': 18.3.10 - "@lit/reactive-element@2.0.4": + '@lit/reactive-element@2.0.4': dependencies: - "@lit-labs/ssr-dom-shim": 1.2.1 + '@lit-labs/ssr-dom-shim': 1.2.1 - "@mapbox/geojson-rewind@0.5.2": + '@mapbox/geojson-rewind@0.5.2': dependencies: get-stream: 6.0.1 minimist: 1.2.8 - "@mapbox/jsonlint-lines-primitives@2.0.2": {} + '@mapbox/jsonlint-lines-primitives@2.0.2': {} - "@mapbox/point-geometry@0.1.0": {} + '@mapbox/point-geometry@0.1.0': {} - "@mapbox/tiny-sdf@2.0.6": {} + '@mapbox/tiny-sdf@2.0.6': {} - "@mapbox/unitbezier@0.0.1": {} + '@mapbox/unitbezier@0.0.1': {} - "@mapbox/vector-tile@1.3.1": + '@mapbox/vector-tile@1.3.1': dependencies: - "@mapbox/point-geometry": 0.1.0 + '@mapbox/point-geometry': 0.1.0 - "@mapbox/whoots-js@3.1.0": {} + '@mapbox/whoots-js@3.1.0': {} - "@maplibre/maplibre-gl-style-spec@20.3.1": + '@maplibre/maplibre-gl-style-spec@20.3.1': dependencies: - "@mapbox/jsonlint-lines-primitives": 2.0.2 - "@mapbox/unitbezier": 0.0.1 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/unitbezier': 0.0.1 json-stringify-pretty-compact: 4.0.0 minimist: 1.2.8 quickselect: 2.0.0 @@ -4493,108 +3501,243 @@ snapshots: sort-object: 3.0.3 tinyqueue: 3.0.0 - "@nodelib/fs.scandir@2.1.5": + '@nodelib/fs.scandir@2.1.5': dependencies: - "@nodelib/fs.stat": 2.0.5 + '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - "@nodelib/fs.stat@2.0.5": {} + '@nodelib/fs.stat@2.0.5': {} - "@nodelib/fs.walk@1.2.8": + '@nodelib/fs.walk@1.2.8': dependencies: - "@nodelib/fs.scandir": 2.1.5 + '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - "@oozcitak/dom@1.15.10": + '@oozcitak/dom@1.15.10': dependencies: - "@oozcitak/infra": 1.0.8 - "@oozcitak/url": 1.0.4 - "@oozcitak/util": 8.3.8 + '@oozcitak/infra': 1.0.8 + '@oozcitak/url': 1.0.4 + '@oozcitak/util': 8.3.8 - "@oozcitak/infra@1.0.8": + '@oozcitak/infra@1.0.8': dependencies: - "@oozcitak/util": 8.3.8 + '@oozcitak/util': 8.3.8 - "@oozcitak/url@1.0.4": + '@oozcitak/url@1.0.4': dependencies: - "@oozcitak/infra": 1.0.8 - "@oozcitak/util": 8.3.8 + '@oozcitak/infra': 1.0.8 + '@oozcitak/util': 8.3.8 - "@oozcitak/util@8.3.8": {} + '@oozcitak/util@8.3.8': {} - "@pkgjs/parseargs@0.11.0": + '@pkgjs/parseargs@0.11.0': optional: true - "@pkgr/core@0.1.1": {} + '@pkgr/core@0.1.1': {} + + '@radix-ui/primitive@1.1.1': {} + + '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.10)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.10)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 + + '@radix-ui/react-dialog@1.1.4(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.1(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.10)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.2(@types/react@18.3.10)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.10 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.10 + '@types/react-dom': 18.3.0 - "@remix-run/router@1.19.2": {} + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.10)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 - "@rollup/rollup-android-arm-eabi@4.23.0": + '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.10 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.10)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 + + '@radix-ui/react-portal@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.10 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.10)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.10 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-primitive@2.0.1(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.1(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.10 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-slot@1.1.1(@types/react@18.3.10)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.10)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.10)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.10)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.10)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.10)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.10 + + '@remix-run/router@1.19.2': {} + + '@rollup/rollup-android-arm-eabi@4.23.0': optional: true - "@rollup/rollup-android-arm64@4.23.0": + '@rollup/rollup-android-arm64@4.23.0': optional: true - "@rollup/rollup-darwin-arm64@4.23.0": + '@rollup/rollup-darwin-arm64@4.23.0': optional: true - "@rollup/rollup-darwin-x64@4.23.0": + '@rollup/rollup-darwin-x64@4.23.0': optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.23.0": + '@rollup/rollup-linux-arm-gnueabihf@4.23.0': optional: true - "@rollup/rollup-linux-arm-musleabihf@4.23.0": + '@rollup/rollup-linux-arm-musleabihf@4.23.0': optional: true - "@rollup/rollup-linux-arm64-gnu@4.23.0": + '@rollup/rollup-linux-arm64-gnu@4.23.0': optional: true - "@rollup/rollup-linux-arm64-musl@4.23.0": + '@rollup/rollup-linux-arm64-musl@4.23.0': optional: true - "@rollup/rollup-linux-powerpc64le-gnu@4.23.0": + '@rollup/rollup-linux-powerpc64le-gnu@4.23.0': optional: true - "@rollup/rollup-linux-riscv64-gnu@4.23.0": + '@rollup/rollup-linux-riscv64-gnu@4.23.0': optional: true - "@rollup/rollup-linux-s390x-gnu@4.23.0": + '@rollup/rollup-linux-s390x-gnu@4.23.0': optional: true - "@rollup/rollup-linux-x64-gnu@4.23.0": + '@rollup/rollup-linux-x64-gnu@4.23.0': optional: true - "@rollup/rollup-linux-x64-musl@4.23.0": + '@rollup/rollup-linux-x64-musl@4.23.0': optional: true - "@rollup/rollup-win32-arm64-msvc@4.23.0": + '@rollup/rollup-win32-arm64-msvc@4.23.0': optional: true - "@rollup/rollup-win32-ia32-msvc@4.23.0": + '@rollup/rollup-win32-ia32-msvc@4.23.0': optional: true - "@rollup/rollup-win32-x64-msvc@4.23.0": + '@rollup/rollup-win32-x64-msvc@4.23.0': optional: true - "@shoelace-style/animations@1.2.0": {} + '@shoelace-style/animations@1.2.0': {} - "@shoelace-style/localize@3.2.1": {} + '@shoelace-style/localize@3.2.1': {} - "@shoelace-style/shoelace@2.17.1(@types/react@18.3.10)": + '@shoelace-style/shoelace@2.17.1(@types/react@18.3.10)': dependencies: - "@ctrl/tinycolor": 4.1.0 - "@floating-ui/dom": 1.6.11 - "@lit/react": 1.0.5(@types/react@18.3.10) - "@shoelace-style/animations": 1.2.0 - "@shoelace-style/localize": 3.2.1 + '@ctrl/tinycolor': 4.1.0 + '@floating-ui/dom': 1.6.11 + '@lit/react': 1.0.5(@types/react@18.3.10) + '@shoelace-style/animations': 1.2.0 + '@shoelace-style/localize': 3.2.1 composed-offset-position: 0.0.4 lit: 3.2.0 qr-creator: 1.0.0 transitivePeerDependencies: - - "@types/react" + - '@types/react' - "@tailwindcss/typography@0.5.15(tailwindcss@3.4.13)": + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.13)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 @@ -4602,201 +3745,218 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.4.13 - "@tanstack/eslint-plugin-query@5.58.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)": + '@tanstack/eslint-plugin-query@5.58.1(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - "@typescript-eslint/utils": 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) eslint: 9.11.1(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - "@tanstack/query-core@5.59.0": {} + '@tanstack/query-core@5.59.0': {} - "@tanstack/query-devtools@5.58.0": {} + '@tanstack/query-devtools@5.58.0': {} - "@tanstack/react-query-devtools@5.59.0(@tanstack/react-query@5.59.0(react@18.3.1))(react@18.3.1)": + '@tanstack/react-query-devtools@5.59.0(@tanstack/react-query@5.59.0(react@18.3.1))(react@18.3.1)': dependencies: - "@tanstack/query-devtools": 5.58.0 - "@tanstack/react-query": 5.59.0(react@18.3.1) + '@tanstack/query-devtools': 5.58.0 + '@tanstack/react-query': 5.59.0(react@18.3.1) react: 18.3.1 - "@tanstack/react-query@5.59.0(react@18.3.1)": + '@tanstack/react-query@5.59.0(react@18.3.1)': dependencies: - "@tanstack/query-core": 5.59.0 + '@tanstack/query-core': 5.59.0 react: 18.3.1 - "@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + '@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - "@tanstack/table-core": 8.20.5 + '@tanstack/table-core': 8.20.5 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - "@tanstack/table-core@8.20.5": {} + '@tanstack/table-core@8.20.5': {} - "@terraformer/wkt@2.2.1": {} + '@terraformer/wkt@2.2.1': {} - "@turf/area@7.1.0": + '@turf/area@7.1.0': dependencies: - "@turf/helpers": 7.1.0 - "@turf/meta": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/helpers': 7.1.0 + '@turf/meta': 7.1.0 + '@types/geojson': 7946.0.14 tslib: 2.7.0 - "@turf/bbox@7.1.0": + '@turf/bbox@7.1.0': dependencies: - "@turf/helpers": 7.1.0 - "@turf/meta": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/helpers': 7.1.0 + '@turf/meta': 7.1.0 + '@types/geojson': 7946.0.14 tslib: 2.7.0 - "@turf/boolean-disjoint@7.1.0": + '@turf/boolean-disjoint@7.1.0': dependencies: - "@turf/boolean-point-in-polygon": 7.1.0 - "@turf/helpers": 7.1.0 - "@turf/line-intersect": 7.1.0 - "@turf/meta": 7.1.0 - "@turf/polygon-to-line": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/boolean-point-in-polygon': 7.1.0 + '@turf/helpers': 7.1.0 + '@turf/line-intersect': 7.1.0 + '@turf/meta': 7.1.0 + '@turf/polygon-to-line': 7.1.0 + '@types/geojson': 7946.0.14 tslib: 2.7.0 - "@turf/boolean-intersects@7.1.0": + '@turf/boolean-intersects@7.1.0': dependencies: - "@turf/boolean-disjoint": 7.1.0 - "@turf/helpers": 7.1.0 - "@turf/meta": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/boolean-disjoint': 7.1.0 + '@turf/helpers': 7.1.0 + '@turf/meta': 7.1.0 + '@types/geojson': 7946.0.14 tslib: 2.7.0 - "@turf/boolean-point-in-polygon@7.1.0": + '@turf/boolean-point-in-polygon@7.1.0': dependencies: - "@turf/helpers": 7.1.0 - "@turf/invariant": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/helpers': 7.1.0 + '@turf/invariant': 7.1.0 + '@types/geojson': 7946.0.14 point-in-polygon-hao: 1.1.0 tslib: 2.7.0 - "@turf/helpers@7.1.0": + '@turf/helpers@7.1.0': dependencies: - "@types/geojson": 7946.0.14 + '@types/geojson': 7946.0.14 tslib: 2.7.0 - "@turf/invariant@7.1.0": + '@turf/invariant@7.1.0': dependencies: - "@turf/helpers": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/helpers': 7.1.0 + '@types/geojson': 7946.0.14 tslib: 2.7.0 - "@turf/line-intersect@7.1.0": + '@turf/line-intersect@7.1.0': dependencies: - "@turf/helpers": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/helpers': 7.1.0 + '@types/geojson': 7946.0.14 sweepline-intersections: 1.5.0 tslib: 2.7.0 - "@turf/meta@7.1.0": + '@turf/meta@7.1.0': dependencies: - "@turf/helpers": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/helpers': 7.1.0 + '@types/geojson': 7946.0.14 - "@turf/polygon-to-line@7.1.0": + '@turf/polygon-to-line@7.1.0': dependencies: - "@turf/helpers": 7.1.0 - "@turf/invariant": 7.1.0 - "@types/geojson": 7946.0.14 + '@turf/helpers': 7.1.0 + '@turf/invariant': 7.1.0 + '@types/geojson': 7946.0.14 tslib: 2.7.0 - "@types/babel__core@7.20.5": + '@types/babel__core@7.20.5': dependencies: - "@babel/parser": 7.25.6 - "@babel/types": 7.25.6 - "@types/babel__generator": 7.6.8 - "@types/babel__template": 7.4.4 - "@types/babel__traverse": 7.20.6 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 - "@types/babel__generator@7.6.8": + '@types/babel__generator@7.6.8': dependencies: - "@babel/types": 7.25.6 + '@babel/types': 7.25.6 - "@types/babel__template@7.4.4": + '@types/babel__template@7.4.4': dependencies: - "@babel/parser": 7.25.6 - "@babel/types": 7.25.6 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 - "@types/babel__traverse@7.20.6": + '@types/babel__traverse@7.20.6': dependencies: - "@babel/types": 7.25.6 + '@babel/types': 7.25.6 - "@types/debug@4.1.12": + '@types/debug@4.1.12': dependencies: - "@types/ms": 0.7.34 + '@types/ms': 0.7.34 - "@types/estree-jsx@1.0.5": + '@types/estree-jsx@1.0.5': dependencies: - "@types/estree": 1.0.6 + '@types/estree': 1.0.6 - "@types/estree@1.0.6": {} + '@types/estree@1.0.6': {} - "@types/geojson-vt@3.2.5": + '@types/geojson-vt@3.2.5': dependencies: - "@types/geojson": 7946.0.14 + '@types/geojson': 7946.0.14 - "@types/geojson@7946.0.14": {} + '@types/geojson@7946.0.14': {} - "@types/hast@3.0.4": + '@types/hast@3.0.4': dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 - "@types/json-schema@7.0.15": {} + '@types/json-schema@7.0.15': {} - "@types/mapbox__point-geometry@0.1.4": {} + '@types/mapbox__point-geometry@0.1.4': {} - "@types/mapbox__vector-tile@1.3.4": + '@types/mapbox__vector-tile@1.3.4': dependencies: - "@types/geojson": 7946.0.14 - "@types/mapbox__point-geometry": 0.1.4 - "@types/pbf": 3.0.5 + '@types/geojson': 7946.0.14 + '@types/mapbox__point-geometry': 0.1.4 + '@types/pbf': 3.0.5 - "@types/mdast@4.0.4": + '@types/mdast@4.0.4': dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 - "@types/ms@0.7.34": {} + '@types/ms@0.7.34': {} - "@types/pbf@3.0.5": {} + '@types/pbf@3.0.5': {} - "@types/prop-types@15.7.13": {} + '@types/prop-types@15.7.13': {} - "@types/react-dom@18.3.0": + '@types/react-dom@18.3.0': dependencies: - "@types/react": 18.3.10 + '@types/react': 18.3.10 - "@types/react@18.3.10": + '@types/react@18.3.10': dependencies: - "@types/prop-types": 15.7.13 + '@types/prop-types': 15.7.13 csstype: 3.1.3 - "@types/supercluster@7.1.3": + '@types/supercluster@7.1.3': dependencies: - "@types/geojson": 7946.0.14 + '@types/geojson': 7946.0.14 - "@types/terraformer__wkt@2.0.3": + '@types/terraformer__wkt@2.0.3': dependencies: - "@types/geojson": 7946.0.14 + '@types/geojson': 7946.0.14 - "@types/trusted-types@2.0.7": {} + '@types/trusted-types@2.0.7': {} - "@types/unist@2.0.11": {} + '@types/unist@2.0.11': {} - "@types/unist@3.0.3": {} + '@types/unist@3.0.3': {} - "@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)": + '@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - "@eslint-community/regexpp": 4.11.1 - "@typescript-eslint/parser": 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - "@typescript-eslint/scope-manager": 8.8.0 - "@typescript-eslint/type-utils": 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - "@typescript-eslint/utils": 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - "@typescript-eslint/visitor-keys": 8.8.0 + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/type-utils': 8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.18.2 + eslint: 9.11.1(jiti@1.21.6) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': + dependencies: + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.8.0 + '@typescript-eslint/type-utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.8.0 eslint: 9.11.1(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 @@ -4807,12 +3967,24 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)": + '@typescript-eslint/parser@8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.18.2 + debug: 4.3.7 + eslint: 9.11.1(jiti@1.21.6) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - "@typescript-eslint/scope-manager": 8.8.0 - "@typescript-eslint/types": 8.8.0 - "@typescript-eslint/typescript-estree": 8.8.0(typescript@5.6.2) - "@typescript-eslint/visitor-keys": 8.8.0 + '@typescript-eslint/scope-manager': 8.8.0 + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.8.0 debug: 4.3.7 eslint: 9.11.1(jiti@1.21.6) optionalDependencies: @@ -4820,15 +3992,31 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.8.0": + '@typescript-eslint/scope-manager@8.18.2': + dependencies: + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 + + '@typescript-eslint/scope-manager@8.8.0': + dependencies: + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/visitor-keys': 8.8.0 + + '@typescript-eslint/type-utils@8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - "@typescript-eslint/types": 8.8.0 - "@typescript-eslint/visitor-keys": 8.8.0 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.6.2) + '@typescript-eslint/utils': 8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + debug: 4.3.7 + eslint: 9.11.1(jiti@1.21.6) + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color - "@typescript-eslint/type-utils@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)": + '@typescript-eslint/type-utils@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - "@typescript-eslint/typescript-estree": 8.8.0(typescript@5.6.2) - "@typescript-eslint/utils": 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -4837,12 +4025,28 @@ snapshots: - eslint - supports-color - "@typescript-eslint/types@8.8.0": {} - - "@typescript-eslint/typescript-estree@8.8.0(typescript@5.6.2)": + '@typescript-eslint/types@8.18.2': {} + + '@typescript-eslint/types@8.8.0': {} + + '@typescript-eslint/typescript-estree@8.18.2(typescript@5.6.2)': + dependencies: + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 + debug: 4.3.7 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.8.0(typescript@5.6.2)': dependencies: - "@typescript-eslint/types": 8.8.0 - "@typescript-eslint/visitor-keys": 8.8.0 + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/visitor-keys': 8.8.0 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -4854,30 +4058,46 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)": + '@typescript-eslint/utils@8.18.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.6.2) + eslint: 9.11.1(jiti@1.21.6) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@9.11.1(jiti@1.21.6)) - "@typescript-eslint/scope-manager": 8.8.0 - "@typescript-eslint/types": 8.8.0 - "@typescript-eslint/typescript-estree": 8.8.0(typescript@5.6.2) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.8.0 + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) eslint: 9.11.1(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - "@typescript-eslint/visitor-keys@8.8.0": + '@typescript-eslint/visitor-keys@8.18.2': + dependencies: + '@typescript-eslint/types': 8.18.2 + eslint-visitor-keys: 4.2.0 + + '@typescript-eslint/visitor-keys@8.8.0': dependencies: - "@typescript-eslint/types": 8.8.0 + '@typescript-eslint/types': 8.8.0 eslint-visitor-keys: 3.4.3 - "@ungap/structured-clone@1.2.0": {} + '@ungap/structured-clone@1.2.0': {} - "@vitejs/plugin-react@4.3.2(vite@5.4.8)": + '@vitejs/plugin-react@4.3.2(vite@5.4.8)': dependencies: - "@babel/core": 7.25.2 - "@babel/plugin-transform-react-jsx-self": 7.24.7(@babel/core@7.25.2) - "@babel/plugin-transform-react-jsx-source": 7.24.7(@babel/core@7.25.2) - "@types/babel__core": 7.20.5 + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 react-refresh: 0.14.2 vite: 5.4.8 transitivePeerDependencies: @@ -4925,10 +4145,73 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.4: + dependencies: + tslib: 2.7.0 + + aria-query@5.3.2: {} + arr-union@3.1.0: {} + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.6 + is-string: 1.1.1 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + is-array-buffer: 3.0.5 + assign-symbols@1.0.0: {} + ast-types-flow@0.0.8: {} + asynckit@0.4.0: {} attr-accept@2.2.4: {} @@ -4943,6 +4226,12 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axe-core@4.10.2: {} + axios@1.7.7: dependencies: follow-redirects: 1.15.9 @@ -4951,6 +4240,8 @@ snapshots: transitivePeerDependencies: - debug + axobject-query@4.1.0: {} + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -4986,6 +4277,23 @@ snapshots: bytewise-core: 1.2.3 typewise: 1.0.3 + call-bind-apply-helpers@1.0.1: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 + set-function-length: 1.2.2 + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.6 + callsites@3.1.0: {} camelcase-css@2.0.1: {} @@ -5061,19 +4369,39 @@ snapshots: css-jss@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-preset-default: 10.10.0 css-vendor@2.0.8: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 is-in-browser: 1.1.3 cssesc@3.0.0: {} csstype@3.1.3: {} + damerau-levenshtein@1.0.8: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + debug@4.3.7: dependencies: ms: 2.1.3 @@ -5084,10 +4412,24 @@ snapshots: deep-is@0.1.4: {} + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + delayed-stream@1.0.0: {} dequal@2.0.3: {} + detect-node-es@1.1.0: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -5096,6 +4438,16 @@ snapshots: dlv@1.1.3: {} + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + earcut@3.0.0: {} eastasianwidth@0.2.0: {} @@ -5106,31 +4458,126 @@ snapshots: emoji-regex@9.2.2: {} + es-abstract@1.23.8: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.6 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.0 + math-intrinsics: 1.1.0 + object-inspect: 1.13.3 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.0 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.6 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.4 + safe-array-concat: 1.1.3 + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.6 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + esbuild@0.21.5: optionalDependencies: - "@esbuild/aix-ppc64": 0.21.5 - "@esbuild/android-arm": 0.21.5 - "@esbuild/android-arm64": 0.21.5 - "@esbuild/android-x64": 0.21.5 - "@esbuild/darwin-arm64": 0.21.5 - "@esbuild/darwin-x64": 0.21.5 - "@esbuild/freebsd-arm64": 0.21.5 - "@esbuild/freebsd-x64": 0.21.5 - "@esbuild/linux-arm": 0.21.5 - "@esbuild/linux-arm64": 0.21.5 - "@esbuild/linux-ia32": 0.21.5 - "@esbuild/linux-loong64": 0.21.5 - "@esbuild/linux-mips64el": 0.21.5 - "@esbuild/linux-ppc64": 0.21.5 - "@esbuild/linux-riscv64": 0.21.5 - "@esbuild/linux-s390x": 0.21.5 - "@esbuild/linux-x64": 0.21.5 - "@esbuild/netbsd-x64": 0.21.5 - "@esbuild/openbsd-x64": 0.21.5 - "@esbuild/sunos-x64": 0.21.5 - "@esbuild/win32-arm64": 0.21.5 - "@esbuild/win32-ia32": 0.21.5 - "@esbuild/win32-x64": 0.21.5 + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 escalade@3.2.0: {} @@ -5144,6 +4591,25 @@ snapshots: dependencies: eslint: 9.11.1(jiti@1.21.6) + eslint-plugin-jsx-a11y@6.10.2(eslint@9.11.1(jiti@1.21.6)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.10.2 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.11.1(jiti@1.21.6) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6))(prettier@3.3.3): dependencies: eslint: 9.11.1(jiti@1.21.6) @@ -5161,6 +4627,34 @@ snapshots: dependencies: eslint: 9.11.1(jiti@1.21.6) + eslint-plugin-react@7.37.3(eslint@9.11.1(jiti@1.21.6)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.11.1(jiti@1.21.6) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.13): + dependencies: + fast-glob: 3.3.2 + postcss: 8.4.47 + tailwindcss: 3.4.13 + eslint-scope@8.1.0: dependencies: esrecurse: 4.3.0 @@ -5170,20 +4664,22 @@ snapshots: eslint-visitor-keys@4.1.0: {} + eslint-visitor-keys@4.2.0: {} + eslint@9.11.1(jiti@1.21.6): dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@9.11.1(jiti@1.21.6)) - "@eslint-community/regexpp": 4.11.1 - "@eslint/config-array": 0.18.0 - "@eslint/core": 0.6.0 - "@eslint/eslintrc": 3.1.0 - "@eslint/js": 9.11.1 - "@eslint/plugin-kit": 0.2.3 - "@humanwhocodes/module-importer": 1.0.1 - "@humanwhocodes/retry": 0.3.0 - "@nodelib/fs.walk": 1.2.8 - "@types/estree": 1.0.6 - "@types/json-schema": 7.0.15 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/regexpp': 4.11.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.6.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.11.1 + '@eslint/plugin-kit': 0.2.3 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 + '@nodelib/fs.walk': 1.2.8 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -5253,8 +4749,8 @@ snapshots: fast-glob@3.3.2: dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 @@ -5295,6 +4791,10 @@ snapshots: follow-redirects@1.15.9: {} + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.6 @@ -5312,7 +4812,7 @@ snapshots: dependencies: tslib: 2.7.0 optionalDependencies: - "@emotion/is-prop-valid": 0.7.3 + '@emotion/is-prop-valid': 0.7.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5321,14 +4821,46 @@ snapshots: function-bind@1.1.2: {} + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + gensync@1.0.0-beta.2: {} geojson-vt@4.0.2: {} geojson@0.5.0: {} + get-intrinsic@1.2.6: + dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + function-bind: 1.1.2 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + get-stream@6.0.1: {} + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + get-value@2.0.6: {} gl-matrix@3.4.3: {} @@ -5362,23 +4894,46 @@ snapshots: globals@15.10.0: {} + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + globrex@0.1.2: {} + gopd@1.2.0: {} + graphemer@1.4.0: {} + has-bigints@1.1.0: {} + has-flag@3.0.0: {} has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + hasown@2.0.2: dependencies: function-bind: 1.1.2 hast-util-to-jsx-runtime@2.3.2: dependencies: - "@types/estree": 1.0.6 - "@types/hast": 3.0.4 - "@types/unist": 3.0.3 + '@types/estree': 1.0.6 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -5396,7 +4951,7 @@ snapshots: hast-util-whitespace@3.0.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hoist-non-react-statics@3.3.2: dependencies: @@ -5421,6 +4976,12 @@ snapshots: inline-style-parser@0.2.4: {} + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -5432,14 +4993,46 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 + is-boolean-object@1.2.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + is-core-module@2.15.1: dependencies: hasown: 2.0.2 + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + is-decimal@2.0.1: {} is-extendable@0.1.1: {} @@ -5450,8 +5043,16 @@ snapshots: is-extglob@2.1.1: {} + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.3 + is-fullwidth-code-point@3.0.0: {} + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -5460,6 +5061,13 @@ snapshots: is-in-browser@1.1.3: {} + is-map@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + is-number@7.0.0: {} is-path-inside@3.0.3: {} @@ -5470,17 +5078,67 @@ snapshots: dependencies: isobject: 3.0.1 + is-regex@1.2.1: + dependencies: + call-bound: 1.0.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.3 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.3 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.18 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.0: + dependencies: + call-bound: 1.0.3 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + + isarray@2.0.5: {} + isexe@2.0.0: {} isexe@3.1.1: {} isobject@3.0.1: {} + iterator.prototype@1.1.4: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 + reflect.getprototypeof: 1.0.9 + set-function-name: 2.0.2 + jackspeak@3.4.3: dependencies: - "@isaacs/cliui": 8.0.2 + '@isaacs/cliui': 8.0.2 optionalDependencies: - "@pkgjs/parseargs": 0.11.0 + '@pkgjs/parseargs': 0.11.0 jiti@1.21.6: {} @@ -5509,75 +5167,75 @@ snapshots: jss-plugin-camel-case@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 hyphenate-style-name: 1.1.0 jss: 10.10.0 jss-plugin-compose@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-default-unit@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-plugin-expand@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-plugin-extend@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-global@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-plugin-nested@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-props-sort@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-plugin-rule-value-function@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-rule-value-observable@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 symbol-observable: 1.2.0 jss-plugin-template@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-vendor-prefixer@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 css-vendor: 2.0.8 jss: 10.10.0 jss-preset-default@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-plugin-camel-case: 10.10.0 jss-plugin-compose: 10.10.0 @@ -5594,11 +5252,18 @@ snapshots: jss@10.10.0: dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 csstype: 3.1.3 is-in-browser: 1.1.3 tiny-warning: 1.0.3 + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + kdbush@4.0.2: {} keyv@4.5.4: @@ -5607,6 +5272,12 @@ snapshots: kind-of@6.0.3: {} + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -5620,17 +5291,17 @@ snapshots: lit-element@4.1.0: dependencies: - "@lit-labs/ssr-dom-shim": 1.2.1 - "@lit/reactive-element": 2.0.4 + '@lit-labs/ssr-dom-shim': 1.2.1 + '@lit/reactive-element': 2.0.4 lit-html: 3.2.0 lit-html@3.2.0: dependencies: - "@types/trusted-types": 2.0.7 + '@types/trusted-types': 2.0.7 lit@3.2.0: dependencies: - "@lit/reactive-element": 2.0.4 + '@lit/reactive-element': 2.0.4 lit-element: 4.1.0 lit-html: 3.2.0 @@ -5660,20 +5331,20 @@ snapshots: maplibre-gl@4.7.1: dependencies: - "@mapbox/geojson-rewind": 0.5.2 - "@mapbox/jsonlint-lines-primitives": 2.0.2 - "@mapbox/point-geometry": 0.1.0 - "@mapbox/tiny-sdf": 2.0.6 - "@mapbox/unitbezier": 0.0.1 - "@mapbox/vector-tile": 1.3.1 - "@mapbox/whoots-js": 3.1.0 - "@maplibre/maplibre-gl-style-spec": 20.3.1 - "@types/geojson": 7946.0.14 - "@types/geojson-vt": 3.2.5 - "@types/mapbox__point-geometry": 0.1.4 - "@types/mapbox__vector-tile": 1.3.4 - "@types/pbf": 3.0.5 - "@types/supercluster": 7.1.3 + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 2.0.6 + '@mapbox/unitbezier': 0.0.1 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + '@maplibre/maplibre-gl-style-spec': 20.3.1 + '@types/geojson': 7946.0.14 + '@types/geojson-vt': 3.2.5 + '@types/mapbox__point-geometry': 0.1.4 + '@types/mapbox__vector-tile': 1.3.4 + '@types/pbf': 3.0.5 + '@types/supercluster': 7.1.3 earcut: 3.0.0 geojson-vt: 4.0.2 gl-matrix: 3.4.3 @@ -5689,17 +5360,19 @@ snapshots: markdown-table@3.0.4: {} + math-intrinsics@1.1.0: {} + mdast-util-find-and-replace@3.0.1: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 mdast-util-from-markdown@2.0.2: dependencies: - "@types/mdast": 4.0.4 - "@types/unist": 3.0.3 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 decode-named-character-reference: 1.0.2 devlop: 1.1.0 mdast-util-to-string: 4.0.0 @@ -5715,7 +5388,7 @@ snapshots: mdast-util-gfm-autolink-literal@2.0.1: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 @@ -5723,7 +5396,7 @@ snapshots: mdast-util-gfm-footnote@2.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -5733,7 +5406,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: @@ -5741,7 +5414,7 @@ snapshots: mdast-util-gfm-table@2.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 mdast-util-from-markdown: 2.0.2 @@ -5751,7 +5424,7 @@ snapshots: mdast-util-gfm-task-list-item@2.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -5772,9 +5445,9 @@ snapshots: mdast-util-mdx-expression@2.0.1: dependencies: - "@types/estree-jsx": 1.0.5 - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -5783,10 +5456,10 @@ snapshots: mdast-util-mdx-jsx@3.1.3: dependencies: - "@types/estree-jsx": 1.0.5 - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 - "@types/unist": 3.0.3 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 @@ -5800,9 +5473,9 @@ snapshots: mdast-util-mdxjs-esm@2.0.1: dependencies: - "@types/estree-jsx": 1.0.5 - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -5811,14 +5484,14 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 mdast-util-to-hast@13.2.0: dependencies: - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 - "@ungap/structured-clone": 1.2.0 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -5828,8 +5501,8 @@ snapshots: mdast-util-to-markdown@2.1.2: dependencies: - "@types/mdast": 4.0.4 - "@types/unist": 3.0.3 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 @@ -5840,7 +5513,7 @@ snapshots: mdast-util-to-string@4.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 merge2@1.4.1: {} @@ -6015,7 +5688,7 @@ snapshots: micromark@4.0.1: dependencies: - "@types/debug": 4.1.12 + '@types/debug': 4.1.12 debug: 4.3.7 decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -6082,6 +5755,39 @@ snapshots: object-hash@3.0.0: {} + object-inspect@1.13.3: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-object-atoms: 1.0.0 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -6091,6 +5797,12 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + own-keys@1.0.0: + dependencies: + get-intrinsic: 1.2.6 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -6107,7 +5819,7 @@ snapshots: parse-entities@4.0.1: dependencies: - "@types/unist": 2.0.11 + '@types/unist': 2.0.11 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -6146,6 +5858,8 @@ snapshots: point-in-polygon-hao@1.1.0: {} + possible-typed-array-names@1.0.0: {} + postcss-import@15.1.0(postcss@8.4.47): dependencies: postcss: 8.4.47 @@ -6244,7 +5958,7 @@ snapshots: react-error-boundary@4.0.13(react@18.3.1): dependencies: - "@babel/runtime": 7.25.6 + '@babel/runtime': 7.25.6 react: 18.3.1 react-fast-compare@3.2.2: {} @@ -6260,8 +5974,8 @@ snapshots: react-jss@10.10.0(react@18.3.1): dependencies: - "@babel/runtime": 7.25.6 - "@emotion/is-prop-valid": 0.7.3 + '@babel/runtime': 7.25.6 + '@emotion/is-prop-valid': 0.7.3 css-jss: 10.10.0 hoist-non-react-statics: 3.3.2 is-in-browser: 1.1.3 @@ -6275,8 +5989,8 @@ snapshots: react-markdown@9.0.1(@types/react@18.3.10)(react@18.3.1): dependencies: - "@types/hast": 3.0.4 - "@types/react": 18.3.10 + '@types/hast': 3.0.4 + '@types/react': 18.3.10 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.2 html-url-attributes: 3.0.1 @@ -6297,17 +6011,44 @@ snapshots: react-refresh@0.14.2: {} + react-remove-scroll-bar@2.3.8(@types/react@18.3.10)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.3.10)(react@18.3.1) + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.10 + + react-remove-scroll@2.6.2(@types/react@18.3.10)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.10)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.10)(react@18.3.1) + tslib: 2.7.0 + use-callback-ref: 1.3.3(@types/react@18.3.10)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.10)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.10 + react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - "@remix-run/router": 1.19.2 + '@remix-run/router': 1.19.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-router: 6.26.2(react@18.3.1) react-router@6.26.2(react@18.3.1): dependencies: - "@remix-run/router": 1.19.2 + '@remix-run/router': 1.19.2 + react: 18.3.1 + + react-style-singleton@2.2.3(@types/react@18.3.10)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.10 react@18.3.1: dependencies: @@ -6321,11 +6062,29 @@ snapshots: dependencies: picomatch: 2.3.1 + reflect.getprototypeof@1.0.9: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + dunder-proto: 1.0.1 + es-abstract: 1.23.8 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + which-builtin-type: 1.2.1 + regenerator-runtime@0.14.1: {} + regexp.prototype.flags@1.5.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + remark-gfm@4.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 @@ -6336,7 +6095,7 @@ snapshots: remark-parse@11.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2 micromark-util-types: 2.0.1 unified: 11.0.5 @@ -6345,15 +6104,15 @@ snapshots: remark-rehype@11.1.1: dependencies: - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.3 remark-stringify@11.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.2 unified: 11.0.5 @@ -6369,28 +6128,34 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + reusify@1.0.4: {} rollup@4.23.0: dependencies: - "@types/estree": 1.0.6 + '@types/estree': 1.0.6 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.23.0 - "@rollup/rollup-android-arm64": 4.23.0 - "@rollup/rollup-darwin-arm64": 4.23.0 - "@rollup/rollup-darwin-x64": 4.23.0 - "@rollup/rollup-linux-arm-gnueabihf": 4.23.0 - "@rollup/rollup-linux-arm-musleabihf": 4.23.0 - "@rollup/rollup-linux-arm64-gnu": 4.23.0 - "@rollup/rollup-linux-arm64-musl": 4.23.0 - "@rollup/rollup-linux-powerpc64le-gnu": 4.23.0 - "@rollup/rollup-linux-riscv64-gnu": 4.23.0 - "@rollup/rollup-linux-s390x-gnu": 4.23.0 - "@rollup/rollup-linux-x64-gnu": 4.23.0 - "@rollup/rollup-linux-x64-musl": 4.23.0 - "@rollup/rollup-win32-arm64-msvc": 4.23.0 - "@rollup/rollup-win32-ia32-msvc": 4.23.0 - "@rollup/rollup-win32-x64-msvc": 4.23.0 + '@rollup/rollup-android-arm-eabi': 4.23.0 + '@rollup/rollup-android-arm64': 4.23.0 + '@rollup/rollup-darwin-arm64': 4.23.0 + '@rollup/rollup-darwin-x64': 4.23.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.23.0 + '@rollup/rollup-linux-arm-musleabihf': 4.23.0 + '@rollup/rollup-linux-arm64-gnu': 4.23.0 + '@rollup/rollup-linux-arm64-musl': 4.23.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.23.0 + '@rollup/rollup-linux-riscv64-gnu': 4.23.0 + '@rollup/rollup-linux-s390x-gnu': 4.23.0 + '@rollup/rollup-linux-x64-gnu': 4.23.0 + '@rollup/rollup-linux-x64-musl': 4.23.0 + '@rollup/rollup-win32-arm64-msvc': 4.23.0 + '@rollup/rollup-win32-ia32-msvc': 4.23.0 + '@rollup/rollup-win32-x64-msvc': 4.23.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -6399,6 +6164,25 @@ snapshots: rw@1.3.3: {} + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-regex: 1.2.1 + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -6407,6 +6191,22 @@ snapshots: semver@7.6.3: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + set-value@2.0.1: dependencies: extend-shallow: 2.0.1 @@ -6424,6 +6224,34 @@ snapshots: shebang-regex@3.0.0: {} + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + signal-exit@4.1.0: {} sort-asc@0.2.0: {} @@ -6461,6 +6289,56 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.8 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.3 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.8 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.8 + es-object-atoms: 1.0.0 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -6482,7 +6360,7 @@ snapshots: sucrase@3.35.0: dependencies: - "@jridgewell/gen-mapping": 0.3.5 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 @@ -6512,14 +6390,14 @@ snapshots: synckit@0.9.1: dependencies: - "@pkgr/core": 0.1.1 + '@pkgr/core': 0.1.1 tslib: 2.7.0 tailwind-merge@2.5.2: {} tailwindcss@3.4.13: dependencies: - "@alloc/quick-lru": 5.2.0 + '@alloc/quick-lru': 5.2.0 arg: 5.0.2 chokidar: 3.6.0 didyoumean: 1.2.2 @@ -6596,11 +6474,44 @@ snapshots: dependencies: prelude-ls: 1.2.1 + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.9 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.9 + typescript-eslint@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2): dependencies: - "@typescript-eslint/eslint-plugin": 8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - "@typescript-eslint/parser": 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - "@typescript-eslint/utils": 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -6615,9 +6526,16 @@ snapshots: dependencies: typewise-core: 1.2.0 + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.3 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + unified@11.0.5: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 @@ -6634,24 +6552,24 @@ snapshots: unist-util-is@6.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-position@5.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-stringify-position@4.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-visit-parents@6.0.1: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit@5.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -6665,16 +6583,40 @@ snapshots: dependencies: punycode: 2.3.1 + use-callback-ref@1.3.3(@types/react@18.3.10)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.10 + + use-sidecar@1.1.3(@types/react@18.3.10)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.10 + util-deprecate@1.0.2: {} + vaul@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@radix-ui/react-dialog': 1.1.4(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + vfile-message@4.0.2: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 vfile@6.0.3: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 vfile-message: 4.0.2 vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.8): @@ -6698,10 +6640,50 @@ snapshots: vt-pbf@3.1.3: dependencies: - "@mapbox/point-geometry": 0.1.0 - "@mapbox/vector-tile": 1.3.1 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/vector-tile': 1.3.1 pbf: 3.3.0 + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.1 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.3 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.0.10 + is-regex: 1.2.1 + is-weakref: 1.1.0 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.18 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.18: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + for-each: 0.3.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -6726,9 +6708,9 @@ snapshots: xmlbuilder2@3.1.1: dependencies: - "@oozcitak/dom": 1.15.10 - "@oozcitak/infra": 1.0.8 - "@oozcitak/util": 8.3.8 + '@oozcitak/dom': 1.15.10 + '@oozcitak/infra': 1.0.8 + '@oozcitak/util': 8.3.8 js-yaml: 3.14.1 yallist@3.1.1: {} diff --git a/frontend/prettier.config.mjs b/frontend/prettier.config.mjs index 827b98f3..6016970d 100644 --- a/frontend/prettier.config.mjs +++ b/frontend/prettier.config.mjs @@ -8,4 +8,5 @@ export default { trailingComma: "all", printWidth: 80, useTabs: false, + endOfLine: "auto" }; diff --git a/frontend/src/app/index.tsx b/frontend/src/app/index.tsx index 5a1245e2..3dcf166a 100644 --- a/frontend/src/app/index.tsx +++ b/frontend/src/app/index.tsx @@ -1,32 +1,13 @@ import { AppRouter } from "@/app/router"; -import { useEffect } from "react"; -import { ENVS } from "@/config/env"; +import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; +import { showErrorToast } from "@/utils"; import { QueryCache, QueryClient, QueryClientProvider, } from "@tanstack/react-query"; -import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; -import { HOT_TRACKING_HTML_TAG_NAME, showErrorToast } from "@/utils"; export const App = () => { - const setupHotTracking = () => { - const hotTracking = document.createElement(HOT_TRACKING_HTML_TAG_NAME); - // adding a css class to style the component in the `styles/index.css` file. - hotTracking.classList.add("hot-matomo"); - // setting the other attributes. - hotTracking.setAttribute("site-id", ENVS.MATOMO_ID); - hotTracking.setAttribute("domain", ENVS.MATOMO_APP_DOMAIN); - hotTracking.setAttribute("force", "true"); - document.body.appendChild(hotTracking); - }; - useEffect(() => { - if (document.getElementsByTagName(HOT_TRACKING_HTML_TAG_NAME).length > 0) - return; - setupHotTracking(); - return; - }, []); - const queryClient = new QueryClient({ queryCache: new QueryCache({ onError: (error, query) => { diff --git a/frontend/src/app/providers/auth-provider.tsx b/frontend/src/app/providers/auth-provider.tsx index 6b89013c..06f82b81 100644 --- a/frontend/src/app/providers/auth-provider.tsx +++ b/frontend/src/app/providers/auth-provider.tsx @@ -1,16 +1,15 @@ -import { useLocalStorage, useSessionStorage } from "@/hooks/use-storage"; -import { authService } from "@/services"; +import React, { createContext, useContext, useEffect, useState } from "react"; import { apiClient } from "@/services/api-client"; +import { authService } from "@/services"; +import { showErrorToast, showSuccessToast } from "@/utils"; import { TUser } from "@/types/api"; +import { useLocalStorage, useSessionStorage } from "@/hooks/use-storage"; import { + TOAST_NOTIFICATIONS, HOT_FAIR_LOCAL_STORAGE_ACCESS_TOKEN_KEY, HOT_FAIR_LOGIN_SUCCESSFUL_SESSION_KEY, HOT_FAIR_SESSION_REDIRECT_KEY, - showErrorToast, - showSuccessToast, -} from "@/utils"; -import { TOAST_NOTIFICATIONS } from "@/constants"; -import React, { createContext, useContext, useState, useEffect } from "react"; +} from "@/constants"; type TAuthContext = { token: string; diff --git a/frontend/src/app/providers/index.tsx b/frontend/src/app/providers/index.tsx index 15954b76..e5ad9871 100644 --- a/frontend/src/app/providers/index.tsx +++ b/frontend/src/app/providers/index.tsx @@ -1,5 +1,5 @@ -import { HelmetProvider } from "react-helmet-async"; import { AuthProvider } from "@/app/providers/auth-provider"; +import { HelmetProvider } from "react-helmet-async"; const ContextProviders = ({ children }: { children: React.ReactNode }) => { return ( diff --git a/frontend/src/app/providers/models-provider.tsx b/frontend/src/app/providers/models-provider.tsx index 6e7ae18f..7bf6f136 100644 --- a/frontend/src/app/providers/models-provider.tsx +++ b/frontend/src/app/providers/models-provider.tsx @@ -1,14 +1,22 @@ -import { BASE_MODELS, TrainingType, TrainingDatasetOption } from "@/enums"; +import { APPLICATION_ROUTES, MODELS_BASE, MODELS_ROUTES } from "@/constants"; +import { BASE_MODELS, TrainingDatasetOption, TrainingType } from "@/enums"; +import { LngLatBoundsLike } from "maplibre-gl"; +import { TOAST_NOTIFICATIONS } from "@/constants"; +import { + TTrainingAreaFeature, + TTrainingDataset, + TTrainingDetails, +} from "@/types"; import { useCreateTrainingDataset } from "@/features/model-creation/hooks/use-training-datasets"; +import { useGetTrainingDataset } from "@/features/models/hooks/use-dataset"; +import { useLocation, useNavigate, useParams } from "react-router-dom"; +import { useModelDetails } from "@/features/models/hooks/use-models"; +import { UseMutationResult } from "@tanstack/react-query"; import { - APPLICATION_ROUTES, - MODELS_BASE, - MODELS_ROUTES, showErrorToast, showSuccessToast, TMS_URL_REGEX_PATTERN, } from "@/utils"; -import { UseMutationResult } from "@tanstack/react-query"; import React, { createContext, useContext, @@ -17,8 +25,6 @@ import React, { useRef, useState, } from "react"; -import { useLocation, useNavigate, useParams } from "react-router-dom"; -import { Feature, TTrainingDataset, TTrainingDetails } from "@/types"; import { TCreateTrainingDatasetArgs, TCreateTrainingRequestArgs, @@ -28,11 +34,6 @@ import { useCreateModelTrainingRequest, useUpdateModel, } from "@/features/model-creation/hooks/use-models"; -import { LngLatBoundsLike } from "maplibre-gl"; -import { useModelDetails } from "@/features/models/hooks/use-models"; -import { useGetTrainingDataset } from "@/features/models/hooks/use-dataset"; - -import { TOAST_NOTIFICATIONS } from "@/constants"; /** * The names here are the same with the `initialFormState` object keys. @@ -146,7 +147,7 @@ type FormData = { message: string; }; selectedTrainingDatasetId: string; - trainingAreas: Feature[]; + trainingAreas: TTrainingAreaFeature[]; oamTileName: string; oamBounds: number[]; trainingType: TrainingType; @@ -293,10 +294,8 @@ export const ModelsProvider: React.FC<{ ); // Will be used in the route validator component to delay the redirection for a while until the data are retrieved - const validateEditMode = useMemo( - () => formData.selectedTrainingDatasetId !== "" && formData.tmsURL !== "", - [formData], - ); + const validateEditMode = + formData.selectedTrainingDatasetId !== "" && formData.tmsURL !== ""; // Fetch and prefill model details useEffect(() => { @@ -421,22 +420,18 @@ export const ModelsProvider: React.FC<{ }); // Confirm that all the training areas labels has been retrieved - const hasLabeledTrainingAreas = useMemo(() => { - return ( - formData.trainingAreas.length > 0 && - formData.trainingAreas.filter( - (aoi: Feature) => aoi.properties.label_fetched === null, - ).length === 0 - ); - }, [formData]); + const hasLabeledTrainingAreas = + formData.trainingAreas.length > 0 && + formData.trainingAreas.filter( + (aoi: TTrainingAreaFeature) => aoi.properties.label_fetched === null, + ).length === 0; + // Confirm that all of the training areas has a geometry - const hasAOIsWithGeometry = useMemo(() => { - return ( - formData.trainingAreas.length > 0 && - formData.trainingAreas.filter((aoi: Feature) => aoi.geometry === null) - .length === 0 - ); - }, [formData]); + const hasAOIsWithGeometry = + formData.trainingAreas.length > 0 && + formData.trainingAreas.filter( + (aoi: TTrainingAreaFeature) => aoi.geometry === null, + ).length === 0; const resetState = () => { setFormData(initialFormState); diff --git a/frontend/src/app/router.tsx b/frontend/src/app/router.tsx index f464f707..b4668967 100644 --- a/frontend/src/app/router.tsx +++ b/frontend/src/app/router.tsx @@ -1,13 +1,12 @@ -import { RootLayout } from "@/components/layouts"; -import { APPLICATION_ROUTES } from "@/utils"; +import { APPLICATION_ROUTES } from '@/constants'; +import { MainErrorFallback } from '@/components/errors'; +import { ModelFormsLayout, RootLayout } from '@/layouts'; +import { ProtectedRoute } from '@/app/routes/protected-route'; import { Navigate, RouterProvider, createBrowserRouter, } from "react-router-dom"; -import { ProtectedPage } from "@/app/routes/protected-route"; -import { MainErrorFallback } from "@/components/errors"; -import ModelFormsLayout from "@/components/layouts/model-forms-layout"; const router = createBrowserRouter([ { @@ -48,7 +47,7 @@ const router = createBrowserRouter([ }, }, /** - * Training dataset route starts + * Training dataset route */ { path: APPLICATION_ROUTES.TRAINING_DATASETS, @@ -92,9 +91,9 @@ const router = createBrowserRouter([ */ { element: ( - + - + ), children: [ /** @@ -255,9 +254,9 @@ const router = createBrowserRouter([ ); return { Component: () => ( - + - + ), }; }, @@ -278,9 +277,9 @@ const router = createBrowserRouter([ ); return { Component: () => ( - + - + ), }; }, @@ -310,7 +309,11 @@ const router = createBrowserRouter([ "@/app/routes/account/models" ); return { - Component: () => , + Component: () => ( + + + + ), }; }, }, diff --git a/frontend/src/app/routes/about.tsx b/frontend/src/app/routes/about.tsx index 2898ad9a..bce29670 100644 --- a/frontend/src/app/routes/about.tsx +++ b/frontend/src/app/routes/about.tsx @@ -1,29 +1,29 @@ +import { ABOUT_PAGE_CONTENT } from "@/constants"; +import { AIIcon } from "@/assets/svgs"; +import { Head } from "@/components/seo"; import { Header } from "@/components/shared"; +import { HOTTeamLandscape } from "@/assets/images"; import { Image } from "@/components/ui/image"; -import HOTTeamLandscape from "@/assets/images/hot_team_landscape.png"; -import { Head } from "@/components/seo"; -import AIIcon from "@/assets/svgs/fair_ai_icon.svg"; -import { aboutPageContent } from "@/constants"; export const AboutPage = () => { return (
- -
+ +

- {aboutPageContent.heroHeading.firstSegment}{" "} + {ABOUT_PAGE_CONTENT.heroHeading.firstSegment}{" "} - {aboutPageContent.heroHeading.secondSegment} + {ABOUT_PAGE_CONTENT.heroHeading.secondSegment} {" "} - {aboutPageContent.heroHeading.thirdSegment}{" "} + {ABOUT_PAGE_CONTENT.heroHeading.thirdSegment}{" "}

{aboutPageContent.imageAlt} {

- {aboutPageContent.bodyContent.firstParagraph} + {ABOUT_PAGE_CONTENT.bodyContent.firstParagraph}

-

{aboutPageContent.bodyContent.secondParagraph}

+

{ABOUT_PAGE_CONTENT.bodyContent.secondParagraph}

AI Icon
diff --git a/frontend/src/app/routes/account/models.tsx b/frontend/src/app/routes/account/models.tsx index cafd222d..aa975878 100644 --- a/frontend/src/app/routes/account/models.tsx +++ b/frontend/src/app/routes/account/models.tsx @@ -1,8 +1,15 @@ -import Pagination, { PAGE_LIMIT } from "@/components/shared/pagination"; +import ModelNotFound from "@/features/models/components/model-not-found"; import { Head } from "@/components/seo"; -import { LayoutView } from "@/enums/models"; import { LayoutToggle, PageHeader } from "@/features/models/components"; +import { LayoutView } from "@/enums"; import { MobileModelFiltersDialog } from "@/features/models/components/dialogs"; +import { MODELS_CONTENT } from "@/constants"; +import { PAGE_LIMIT } from "@/components/shared"; +import { Pagination } from "@/components/shared"; +import { SEARCH_PARAMS } from "@/app/routes/models/models-list"; +import { useAuth } from "@/app/providers/auth-provider"; +import { useDialog } from "@/hooks/use-dialog"; +import { useModelsListFilters } from "@/features/models/hooks/use-models"; import { CategoryFilter, ClearFilters, @@ -12,18 +19,10 @@ import { SearchFilter, StatusFilter, } from "@/features/models/components/filters"; -import { useModelsListFilters } from "@/features/models/hooks/use-models"; import { ModelListGridLayout, ModelListTableLayout, } from "@/features/models/layouts"; -import { useDialog } from "@/hooks/use-dialog"; -import { APP_CONTENT } from "@/utils"; -import { useMemo } from "react"; -import ModelNotFound from "@/features/models/components/model-not-found"; -import { SEARCH_PARAMS } from "@/app/routes/models/models-list"; -import { useAuth } from "@/app/providers/auth-provider"; -import { modelPagesContent } from "@/constants"; export const UserModelsPage = () => { const { isOpened, openDialog, closeDialog } = useDialog(); @@ -39,12 +38,6 @@ export const UserModelsPage = () => { updateQuery, } = useModelsListFilters(undefined, user?.osm_id); - // Since it's just a static filter, it's better to memoize it. - const memoizedCategoryFilter = useMemo( - () => , - [isPending], - ); - const renderContent = () => { if (data?.count === 0) { return ; @@ -79,11 +72,11 @@ export const UserModelsPage = () => { updateQuery={updateQuery} disabled={isPending} /> - +
{/* Filters */}
@@ -91,7 +84,7 @@ export const UserModelsPage = () => {
- {memoizedCategoryFilter} + {

{data?.count}{" "} { - APP_CONTENT.models.modelsList.sortingAndPaginationSection + MODELS_CONTENT.models.modelsList.sortingAndPaginationSection .modelCountSuffix }

diff --git a/frontend/src/app/routes/landing.tsx b/frontend/src/app/routes/landing.tsx index f1dab738..d188e582 100644 --- a/frontend/src/app/routes/landing.tsx +++ b/frontend/src/app/routes/landing.tsx @@ -1,13 +1,15 @@ -import { Header } from "@/components/landing/header"; -import WhatIsFAIR from "@/components/landing/about-fair/about-fair"; -import CoreFeatures from "@/components/landing/core-features/core-features"; -import Corevalues from "@/components/landing/core-values/core-values"; -import CallToAction from "@/components/landing/cta/cta"; -import TheFAIRProcess from "@/components/shared/fair-process/fair-process"; import { FAQs } from "@/components/shared"; -import Kpi from "@/components/landing/kpi/kpi"; -import TaglineBanner from "@/components/landing/tagline/tagline"; import { Head } from "@/components/seo"; +import { + Header, + Kpi, + TaglineBanner, + TheFAIRProcess, + CallToAction, + Corevalues, + CoreFeatures, + WhatIsFAIR, +} from "@/components/landing"; export const LandingPage = () => { return ( @@ -19,7 +21,9 @@ export const LandingPage = () => { - +
+ +
diff --git a/frontend/src/app/routes/learn.tsx b/frontend/src/app/routes/learn.tsx index 32e518d8..43455f9d 100644 --- a/frontend/src/app/routes/learn.tsx +++ b/frontend/src/app/routes/learn.tsx @@ -1,41 +1,41 @@ -import { TheFAIRProcess } from "@/components/landing"; +import { Button } from "@/components/ui/button"; +import { ExternalLinkIcon, YouTubePlayCircleIcon } from "@/components/ui/icons"; +import { fAIrValues } from "@/assets/svgs"; +import { Head } from "@/components/seo"; import { Header, SectionHeader } from "@/components/shared"; import { Image } from "@/components/ui/image"; -import fAIrValues from "@/assets/svgs/fair_values.svg"; -import { ExternalLinkIcon, YouTubePlayCircleIcon } from "@/components/ui/icons"; -import { Button } from "@/components/ui/button"; +import { JumbotronBackgroundImage } from "@/assets/images"; +import { LEARN_PAGE_CONTENT } from "@/constants"; import { Link } from "@/components/ui/link"; import { SHOELACE_SIZES } from "@/enums"; -import { Head } from "@/components/seo"; -import { useState } from "react"; -import VideoPlaceholderImage from "@/assets/images/header_bg.jpg"; -import { learnPageContent } from "@/constants"; import { TGuide, TVideo } from "@/types"; +import { TheFAIRProcess } from "@/components/landing"; +import { useState } from "react"; export const LearnPage = () => { return (
- -
+ +

- {learnPageContent.heroHeading.firstSegment}{" "} + {LEARN_PAGE_CONTENT.heroHeading.firstSegment}{" "} - {learnPageContent.heroHeading.secondSegment} + {LEARN_PAGE_CONTENT.heroHeading.secondSegment} {" "} - {learnPageContent.heroHeading.thirdSegment}{" "} + {LEARN_PAGE_CONTENT.heroHeading.thirdSegment}{" "} - {learnPageContent.heroHeading.fourthSegment} + {LEARN_PAGE_CONTENT.heroHeading.fourthSegment} {" "} - {learnPageContent.heroHeading.fifthSegment}{" "} + {LEARN_PAGE_CONTENT.heroHeading.fifthSegment}{" "} - {learnPageContent.heroHeading.sixthSegment} + {LEARN_PAGE_CONTENT.heroHeading.sixthSegment} {" "} - {learnPageContent.heroHeading.seventhSegment} + {LEARN_PAGE_CONTENT.heroHeading.seventhSegment}

- {learnPageContent.heroDescription} + {LEARN_PAGE_CONTENT.heroDescription}

@@ -49,18 +49,18 @@ export const LearnPage = () => {
- +
- {learnPageContent.guides.map((guide, id) => ( + {LEARN_PAGE_CONTENT.guides.map((guide, id) => ( ))}
- +
- {learnPageContent.videos.map((video, id) => ( + {LEARN_PAGE_CONTENT.videos.map((video, id) => ( ))}
@@ -118,7 +118,7 @@ const VideoCard = ({ video }: { video: TVideo }) => {
{video.title} { @@ -31,24 +31,26 @@ export const ModelConfirmationPage = () => { Model {modelId} is {isEditMode ? "Updated" : "Created"}!

- {MODEL_CREATION_CONTENT.confirmation.description} + {MODELS_CONTENT.modelCreation.confirmation.description}

diff --git a/frontend/src/app/routes/models/model-details.tsx b/frontend/src/app/routes/models/model-details.tsx index cf088a48..0d867032 100644 --- a/frontend/src/app/routes/models/model-details.tsx +++ b/frontend/src/app/routes/models/model-details.tsx @@ -1,26 +1,27 @@ -import { Head } from "@/components/seo"; +import axios from "axios"; +import ModelEnhancementDialog from "@/features/models/components/dialogs/model-enhancement-dialog"; +import { APPLICATION_ROUTES, MODELS_CONTENT } from "@/constants"; import { BackButton, ButtonWithIcon } from "@/components/ui/button"; +import { Head } from "@/components/seo"; +import { Image } from "@/components/ui/image"; +import { ModelDetailsSkeleton } from "@/features/models/components/skeletons"; +import { ModelFilesDialog } from "@/features/models/components/dialogs"; import { StarStackIcon } from "@/components/ui/icons"; +import { TModelDetails, TTrainingDataset } from "@/types"; +import { TrainingAreaDrawer } from "@/features/models/components/training-area-drawer"; +import { TrainingInProgressImage } from "@/assets/images"; +import { useAuth } from "@/app/providers/auth-provider"; +import { useDialog } from "@/hooks/use-dialog"; +import { useEffect } from "react"; +import { useGetTrainingDataset } from "@/features/models/hooks/use-dataset"; +import { useModelDetails } from "@/features/models/hooks/use-models"; +import { useNavigate, useParams } from "react-router-dom"; import { ModelDetailsSection, ModelDetailsProperties, ModelDetailsInfo, TrainingHistoryTable, } from "@/features/models/components"; -import { ModelFilesDialog } from "@/features/models/components/dialogs"; -import { ModelDetailsSkeleton } from "@/features/models/components/skeletons"; -import { useModelDetails } from "@/features/models/hooks/use-models"; -import { useDialog } from "@/hooks/use-dialog"; -import { APP_CONTENT, APPLICATION_ROUTES } from "@/utils"; -import { useEffect } from "react"; -import { useNavigate, useParams } from "react-router-dom"; -import TrainingInProgressImage from "@/assets/images/training_in_progress.png"; -import { Image } from "@/components/ui/image"; -import ModelEnhancementDialog from "@/features/models/components/dialogs/model-enhancement-dialog"; -import { TModelDetails, TTrainingDataset } from "@/types"; -import { useAuth } from "@/app/providers/auth-provider"; -import { TrainingAreaDrawer } from "@/features/models/components/training-area-drawer"; -import { useGetTrainingDataset } from "@/features/models/hooks/use-dataset"; export const ModelDetailsPage = () => { const { id } = useParams<{ id: string }>(); @@ -41,14 +42,24 @@ export const ModelDetailsPage = () => { const { isAuthenticated } = useAuth(); useEffect(() => { - if (isError) { - navigate(APPLICATION_ROUTES.NOTFOUND, { - state: { - from: window.location.pathname, - //@ts-expect-error bad type definition - error: error?.response?.data?.detail, - }, - }); + if (isError && error) { + const currentPath = window.location.pathname; + if (axios.isAxiosError(error)) { + navigate(APPLICATION_ROUTES.NOTFOUND, { + state: { + from: currentPath, + error: error.response?.data?.detail, + }, + }); + } else { + const err = error as Error; + navigate(APPLICATION_ROUTES.NOTFOUND, { + state: { + from: currentPath, + error: err.message, + }, + }); + } } }, [isError, error, navigate]); @@ -107,7 +118,7 @@ export const ModelDetailsPage = () => { trainingDataset={trainingDataset as TTrainingDataset} /> {!data?.published_training ? (
@@ -130,7 +141,7 @@ export const ModelDetailsPage = () => {
{ {/* mobile */}
{
); -}; \ No newline at end of file +}; diff --git a/frontend/src/app/routes/models/models-list.tsx b/frontend/src/app/routes/models/models-list.tsx index 76b7a3d2..c1567641 100644 --- a/frontend/src/app/routes/models/models-list.tsx +++ b/frontend/src/app/routes/models/models-list.tsx @@ -1,8 +1,17 @@ +import ModelNotFound from "@/features/models/components/model-not-found"; +import { FeatureCollection } from "@/types"; +import { Head } from "@/components/seo"; +import { LayoutView } from "@/enums"; +import { MobileModelFiltersDialog } from "@/features/models/components/dialogs"; +import { MODELS_CONTENT } from "@/constants"; +import { PAGE_LIMIT, Pagination } from "@/components/shared"; +import { PageHeader } from "@/features/models/components/"; +import { useDialog } from "@/hooks/use-dialog"; +import { useEffect } from "react"; import { useModelsListFilters, useModelsMapData, } from "@/features/models/hooks/use-models"; -import { useEffect, useMemo } from "react"; import { ModelListGridLayout, ModelListTableLayout, @@ -20,15 +29,7 @@ import { OrderingFilter, SearchFilter, } from "@/features/models/components/filters"; -import Pagination, { PAGE_LIMIT } from "@/components/shared/pagination"; -import { APP_CONTENT } from "@/utils"; -import { PageHeader } from "@/features/models/components/"; -import { FeatureCollection } from "@/types"; -import ModelNotFound from "@/features/models/components/model-not-found"; -import { useDialog } from "@/hooks/use-dialog"; -import { MobileModelFiltersDialog } from "@/features/models/components/dialogs"; -import { Head } from "@/components/seo"; -import { LayoutView } from "@/enums/models"; + import { useScrollToElement, useScrollToTop, @@ -69,12 +70,6 @@ export const ModelsPage = () => { isError: modelsMapDataIsError, } = useModelsMapData(); - // Since it's just a static filter, it's better to memoize it. - const memoizedCategoryFilter = useMemo( - () => , - [isPending], - ); - // Mapview toggling interaction useEffect(() => { if (mapViewIsActive) { @@ -91,10 +86,7 @@ export const ModelsPage = () => { if (mapViewIsActive) { return ( -
+
{ isError={isError} />
-
+
{modelsMapDataIsPending || modelsMapDataIsError ? (
) : ( @@ -149,12 +141,12 @@ export const ModelsPage = () => {
{/* Filters */} -
-
+
+
- {memoizedCategoryFilter} + {/* Mobile filters */}
@@ -195,12 +187,12 @@ export const ModelsPage = () => { {isPending ? (
) : ( -
+

{data?.count}{" "} { - APP_CONTENT.models.modelsList.sortingAndPaginationSection + MODELS_CONTENT.models.modelsList.sortingAndPaginationSection .modelCountSuffix }

@@ -228,6 +220,7 @@ export const ModelsPage = () => { updateQuery={updateQuery} isPlaceholderData={isPlaceholderData} centerOnMobile={false} + scrollToTopOnPageSwitch />
@@ -247,6 +240,7 @@ export const ModelsPage = () => { query={query} updateQuery={updateQuery} isPlaceholderData={isPlaceholderData} + scrollToTopOnPageSwitch />
diff --git a/frontend/src/app/routes/not-found.tsx b/frontend/src/app/routes/not-found.tsx index c6f89d40..7c1a9492 100644 --- a/frontend/src/app/routes/not-found.tsx +++ b/frontend/src/app/routes/not-found.tsx @@ -1,8 +1,7 @@ +import { APPLICATION_ROUTES, SHARED_CONTENT } from "@/constants"; import { Button } from "@/components/ui/button"; -import { APPLICATION_ROUTES } from "@/utils/constants"; -import { APP_CONTENT } from "@/utils"; -import { useLocation, useNavigate } from "react-router-dom"; import { Head } from "@/components/seo"; +import { useLocation, useNavigate } from "react-router-dom"; export const PageNotFound = () => { const location = useLocation(); @@ -23,14 +22,14 @@ export const PageNotFound = () => {

- {APP_CONTENT.pageNotFound.messages.constant}{" "} + {SHARED_CONTENT.pageNotFound.messages.constant}{" "} {location.state?.error ? location.state?.error : modelNotFound - ? APP_CONTENT.pageNotFound.messages.modelNotFound + ? SHARED_CONTENT.pageNotFound.messages.modelNotFound : trainingDatasetNotFound - ? APP_CONTENT.pageNotFound.messages.trainingDatasetNotFound - : APP_CONTENT.pageNotFound.messages.pageNotFound} + ? SHARED_CONTENT.pageNotFound.messages.trainingDatasetNotFound + : SHARED_CONTENT.pageNotFound.messages.pageNotFound}

@@ -79,10 +78,11 @@ export const PageNotFound = () => { className="max-w-[300px]" > {modelNotFound - ? APP_CONTENT.pageNotFound.actionButtons.modelNotFound + ? SHARED_CONTENT.pageNotFound.actionButtons.modelNotFound : trainingDatasetNotFound - ? APP_CONTENT.pageNotFound.actionButtons.trainingDatasetNotFound - : APP_CONTENT.pageNotFound.actionButtons.pageNotFound} + ? SHARED_CONTENT.pageNotFound.actionButtons + .trainingDatasetNotFound + : SHARED_CONTENT.pageNotFound.actionButtons.pageNotFound}

diff --git a/frontend/src/app/routes/protected-route.tsx b/frontend/src/app/routes/protected-route.tsx index 48cb6522..d75ef27f 100644 --- a/frontend/src/app/routes/protected-route.tsx +++ b/frontend/src/app/routes/protected-route.tsx @@ -1,15 +1,15 @@ +import { Button } from "@/components/ui/button"; +import { Head } from "@/components/seo"; +import { SHARED_CONTENT } from "@/constants"; import { ShieldIcon } from "@/components/ui/icons"; import { useAuth } from "@/app/providers/auth-provider"; -import { APP_CONTENT } from "@/utils"; -import { Button } from "@/components/ui/button"; import { useLogin } from "@/hooks/use-login"; -import { Head } from "@/components/seo"; type ProtectedRouteProps = { children: React.ReactNode; }; -export const ProtectedPage: React.FC = ({ children }) => { +export const ProtectedRoute: React.FC = ({ children }) => { const { isAuthenticated } = useAuth(); const { handleLogin, loading } = useLogin(); @@ -24,10 +24,10 @@ export const ProtectedPage: React.FC = ({ children }) => {

- {APP_CONTENT.protectedPage.messageTitle} + {SHARED_CONTENT.protectedPage.messageTitle}

- {APP_CONTENT.protectedPage.messageParagraph} + {SHARED_CONTENT.protectedPage.messageParagraph}

@@ -38,8 +38,8 @@ export const ProtectedPage: React.FC = ({ children }) => { spinner={loading} > {loading - ? APP_CONTENT.loginButtonLoading - : APP_CONTENT.protectedPage.ctaButton} + ? SHARED_CONTENT.loginButtonLoading + : SHARED_CONTENT.protectedPage.ctaButton}
diff --git a/frontend/src/app/routes/resources.tsx b/frontend/src/app/routes/resources.tsx index 0947b176..b161ac97 100644 --- a/frontend/src/app/routes/resources.tsx +++ b/frontend/src/app/routes/resources.tsx @@ -1,36 +1,36 @@ +import { ChevronDownIcon } from "@/components/ui/icons"; import { FAQs, SectionHeader } from "@/components/shared"; import { Head } from "@/components/seo"; import { Header } from "@/components/shared"; -import { resourcesPageContent } from "@/constants"; -import { TArticle } from "@/types"; import { Image } from "@/components/ui/image"; -import { ChevronDownIcon } from "@/components/ui/icons"; import { Link } from "@/components/ui/link"; +import { RESOURCES_PAGE_CONTENT } from "@/constants"; +import { TArticle } from "@/types"; import { truncateString } from "@/utils"; export const ResourcesPage = () => { return (
- -
+ +

- {resourcesPageContent.hero.firstSegment}{" "} + {RESOURCES_PAGE_CONTENT.hero.firstSegment}{" "} - {resourcesPageContent.hero.secondSegment} + {RESOURCES_PAGE_CONTENT.hero.secondSegment} {" "} - {resourcesPageContent.hero.thirdSegment}{" "} + {RESOURCES_PAGE_CONTENT.hero.thirdSegment}{" "}

- +
- +
- {resourcesPageContent.articles.articles.map((article, id) => ( + {RESOURCES_PAGE_CONTENT.articles.articles.map((article, id) => ( ))}
diff --git a/frontend/src/app/routes/start-mapping.tsx b/frontend/src/app/routes/start-mapping.tsx index a0b11e31..cb0219ca 100644 --- a/frontend/src/app/routes/start-mapping.tsx +++ b/frontend/src/app/routes/start-mapping.tsx @@ -1,22 +1,57 @@ -import { useCallback, useEffect, useMemo, useState } from "react"; -import { useNavigate, useParams, useSearchParams } from "react-router-dom"; +import useScreenSize from "@/hooks/use-screen-size"; +import { APPLICATION_ROUTES } from "@/constants"; +import { BASE_MODELS } from "@/enums"; +import { + BBOX, + Feature, + TileJSON, + TModelPredictions, + TModelPredictionsConfig, +} from "@/types"; +import { FitToBounds, LayerControl, ZoomLevel } from "@/components/map"; import { Head } from "@/components/seo"; -import { BBOX, TileJSON, TModelPredictions } from "@/types"; -import { useModelDetails } from "@/features/models/hooks/use-models"; +import { LngLatBoundsLike } from "maplibre-gl"; +import { ModelDetailsPopUp } from "@/features/start-mapping/components"; +import { useCallback, useEffect, useState } from "react"; +import { useDropdownMenu } from "@/hooks/use-dropdown-menu"; +import { useGetTMSTileJSON } from "@/features/model-creation/hooks/use-tms-tilejson"; import { useGetTrainingDataset } from "@/features/models/hooks/use-dataset"; +import { useMapInstance } from "@/hooks/use-map-instance"; +import { useModelDetails } from "@/features/models/hooks/use-models"; +import { useNavigate, useParams, useSearchParams } from "react-router-dom"; +import { UserProfile } from "@/components/layout"; import { + BrandLogoWithDropDown, + Legend, StartMappingHeader, StartMappingMapComponent, + StartMappingMobileDrawer, } from "@/features/start-mapping/components"; -import { useGetTMSTileJSON } from "@/features/model-creation/hooks/use-tms-tilejson"; import { - APPLICATION_ROUTES, extractTileJSONURL, - PREDICTION_API_FILE_EXTENSIONS, + geoJSONDowloader, + openInJOSM, + showSuccessToast, } from "@/utils"; -import { BASE_MODELS } from "@/enums"; -import { startMappingPageContent } from "@/constants"; -import { useMapInstance } from "@/hooks/use-map-instance"; +import { + START_MAPPING_PAGE_CONTENT, + TOAST_NOTIFICATIONS, + PREDICTION_API_FILE_EXTENSIONS, + REJECTED_MODEL_PREDICTIONS_FILL_LAYER_ID, + REJECTED_MODEL_PREDICTIONS_OUTLINE_LAYER_ID, + MIN_ZOOM_LEVEL_FOR_START_MAPPING_PREDICTION, + ACCEPTED_MODEL_PREDICTIONS_FILL_LAYER_ID, + ACCEPTED_MODEL_PREDICTIONS_OUTLINE_LAYER_ID, + ALL_MODEL_PREDICTIONS_FILL_LAYER_ID, + ALL_MODEL_PREDICTIONS_OUTLINE_LAYER_ID, +} from "@/constants"; + +export type TDownloadOptions = { + name: string; + value: string; + onClick: () => void; + showOnMobile: boolean; +}[]; export const SEARCH_PARAMS = { useJOSMQ: "useJOSMQ", @@ -31,14 +66,13 @@ export const StartMappingPage = () => { const { modelId } = useParams(); const [searchParams, setSearchParams] = useSearchParams(); const { map, mapContainerRef, currentZoom } = useMapInstance(); - const defaultQueries = { - [SEARCH_PARAMS.useJOSMQ]: searchParams.get(SEARCH_PARAMS.useJOSMQ) || false, - [SEARCH_PARAMS.confidenceLevel]: - searchParams.get(SEARCH_PARAMS.confidenceLevel) || 90, - [SEARCH_PARAMS.tolerance]: searchParams.get(SEARCH_PARAMS.tolerance) || 0.3, - [SEARCH_PARAMS.area]: searchParams.get(SEARCH_PARAMS.area) || 4, - }; - const [query, setQuery] = useState(defaultQueries); + const { isSmallViewport } = useScreenSize(); + const navigate = useNavigate(); + const bounds = map?.getBounds(); + const [showModelDetailsPopup, setShowModelDetailsPopup] = + useState(false); + const { dropdownIsOpened, onDropdownHide, onDropdownShow } = + useDropdownMenu(); const { isError, isPending, data, error } = useModelDetails( modelId as string, @@ -59,55 +93,61 @@ export const StartMappingPage = () => { error: oamTileJSONError, } = useGetTMSTileJSON(tileJSONURL); - const navigate = useNavigate(); - useEffect(() => { if (isError) { navigate(APPLICATION_ROUTES.NOTFOUND, { state: { from: window.location.pathname, - //@ts-expect-error bad type definition + // @ts-expect-error: might not be typed error: error?.response?.data?.detail, }, }); } }, [isError, error, navigate]); + const [query, setQuery] = useState(() => { + return { + [SEARCH_PARAMS.useJOSMQ]: + searchParams.get(SEARCH_PARAMS.useJOSMQ) || false, + [SEARCH_PARAMS.confidenceLevel]: + searchParams.get(SEARCH_PARAMS.confidenceLevel) || 90, + [SEARCH_PARAMS.tolerance]: + searchParams.get(SEARCH_PARAMS.tolerance) || 0.3, + [SEARCH_PARAMS.area]: searchParams.get(SEARCH_PARAMS.area) || 4, + }; + }); + const [modelPredictions, setModelPredictions] = useState({ all: [], accepted: [], rejected: [], }); - const modelPredictionsExist = useMemo( - () => - modelPredictions.accepted.length > 0 || - modelPredictions.rejected.length > 0 || - modelPredictions.all.length > 0, - [modelPredictions], - ); + const modelPredictionsExist = + modelPredictions.accepted.length > 0 || + modelPredictions.rejected.length > 0 || + modelPredictions.all.length > 0; const updateQuery = useCallback( (newParams: TQueryParams) => { - setQuery((prevQuery) => ({ - ...prevQuery, - ...newParams, - })); + // Merge the new query values + setQuery((prev) => ({ ...prev, ...newParams })); + + // Update the URLSearchParams const updatedParams = new URLSearchParams(searchParams); - Object.entries(newParams).forEach(([key, value]) => { + for (const [key, value] of Object.entries(newParams)) { if (value !== undefined && value !== null) { updatedParams.set(key, String(value)); } else { updatedParams.delete(key); } - }); + } setSearchParams(updatedParams, { replace: true }); }, [searchParams, setSearchParams], ); - const bounds = map?.getBounds(); - const trainingConfig = { + const trainingConfig: TModelPredictionsConfig = { tolerance: query[SEARCH_PARAMS.tolerance] as number, area_threshold: query[SEARCH_PARAMS.area] as number, use_josm_q: query[SEARCH_PARAMS.useJOSMQ] as boolean, @@ -126,33 +166,237 @@ export const StartMappingPage = () => { ] as BBOX, }; + const disablePrediction = + currentZoom < MIN_ZOOM_LEVEL_FOR_START_MAPPING_PREDICTION; + + const popupAnchorId = "model-details"; + + const mapLayers = [ + ...(modelPredictions.accepted.length > 0 + ? [ + { + value: + START_MAPPING_PAGE_CONTENT.map.controls.legendControl + .acceptedPredictions, + subLayers: [ + ACCEPTED_MODEL_PREDICTIONS_FILL_LAYER_ID, + ACCEPTED_MODEL_PREDICTIONS_OUTLINE_LAYER_ID, + ], + }, + ] + : []), + ...(modelPredictions.rejected.length > 0 + ? [ + { + value: + START_MAPPING_PAGE_CONTENT.map.controls.legendControl + .rejectedPredictions, + subLayers: [ + REJECTED_MODEL_PREDICTIONS_FILL_LAYER_ID, + REJECTED_MODEL_PREDICTIONS_OUTLINE_LAYER_ID, + ], + }, + ] + : []), + ...(modelPredictions.all.length > 0 + ? [ + { + value: + START_MAPPING_PAGE_CONTENT.map.controls.legendControl + .predictionResults, + subLayers: [ + ALL_MODEL_PREDICTIONS_FILL_LAYER_ID, + ALL_MODEL_PREDICTIONS_OUTLINE_LAYER_ID, + ], + }, + ] + : []), + ]; + + const handleAllFeaturesDownload = useCallback(async () => { + geoJSONDowloader( + { + type: "FeatureCollection", + features: [ + ...modelPredictions.accepted, + ...modelPredictions.rejected, + ...modelPredictions.all, + ], + }, + `all_predictions_${data.dataset}`, + ); + showSuccessToast(TOAST_NOTIFICATIONS.startMapping.fileDownloadSuccess); + }, [modelPredictions]); + + const handleAcceptedFeaturesDownload = useCallback(async () => { + geoJSONDowloader( + { type: "FeatureCollection", features: modelPredictions.accepted }, + `accepted_predictions_${data.dataset}`, + ); + showSuccessToast(TOAST_NOTIFICATIONS.startMapping.fileDownloadSuccess); + }, [modelPredictions]); + + const handleFeaturesDownloadToJOSM = useCallback( + (features: Feature[]) => { + if (!map || !oamTileJSON?.name || !trainingDataset?.source_imagery) + return; + openInJOSM( + oamTileJSON.name, + trainingDataset.source_imagery, + features, + true, + ); + }, + [map, oamTileJSON, trainingDataset], + ); + + const handleAllFeaturesDownloadToJOSM = useCallback(() => { + handleFeaturesDownloadToJOSM(modelPredictions.all); + }, [handleFeaturesDownloadToJOSM, modelPredictions.all]); + + const handleAcceptedFeaturesDownloadToJOSM = useCallback(() => { + handleFeaturesDownloadToJOSM(modelPredictions.accepted); + }, [handleFeaturesDownloadToJOSM, modelPredictions.accepted]); + + const downloadOptions: TDownloadOptions = [ + { + name: START_MAPPING_PAGE_CONTENT.buttons.download.options.allFeatures( + isSmallViewport ? "All" : "Download all", + ), + value: START_MAPPING_PAGE_CONTENT.buttons.download.options.allFeatures( + isSmallViewport ? "All" : "Download all", + ), + onClick: handleAllFeaturesDownload, + showOnMobile: true, + }, + { + name: START_MAPPING_PAGE_CONTENT.buttons.download.options.acceptedFeatures( + isSmallViewport ? "Accepted" : "Download accepted", + ), + value: + START_MAPPING_PAGE_CONTENT.buttons.download.options.acceptedFeatures( + isSmallViewport ? "Accepted" : "Download accepted", + ), + onClick: handleAcceptedFeaturesDownload, + showOnMobile: true, + }, + { + name: START_MAPPING_PAGE_CONTENT.buttons.download.options + .openAllFeaturesInJOSM, + value: + START_MAPPING_PAGE_CONTENT.buttons.download.options + .openAllFeaturesInJOSM, + onClick: handleAllFeaturesDownloadToJOSM, + showOnMobile: false, + }, + { + name: START_MAPPING_PAGE_CONTENT.buttons.download.options + .openAcceptedFeaturesInJOSM, + value: + START_MAPPING_PAGE_CONTENT.buttons.download.options + .openAcceptedFeaturesInJOSM, + onClick: handleAcceptedFeaturesDownloadToJOSM, + showOnMobile: false, + }, + ]; + + const handleModelDetailsPopup = useCallback(() => { + setShowModelDetailsPopup((prev) => !prev); + }, [setShowModelDetailsPopup]); + + const clearPredictions = useCallback(() => { + setModelPredictions({ + accepted: [], + rejected: [], + all: [], + }); + }, [setModelPredictions]); + return ( <> - + + {/* Mobile dialog */}
-
+ +
+ {/* Model Details Popup */} + {data && ( + setShowModelDetailsPopup(false)} + anchor={popupAnchorId} + model={data} + trainingDataset={trainingDataset} + trainingDatasetIsPending={trainingDatasetIsPending} + trainingDatasetIsError={trainingDatasetIsError} + /> + )} + {/* Web Header */}
-
+
+ {/* Mobile Header and Map Controls */} +
+
+ +
+
+ +
+
+ + +
+
+ +
{map && modelPredictionsExist && }
+
+
+ {/* Map Component */} { mapContainerRef={mapContainerRef} map={map} currentZoom={currentZoom} + layers={mapLayers} + tmsBounds={oamTileJSON?.bounds as LngLatBoundsLike} />
diff --git a/frontend/src/assets/images/fAIr_logo.png b/frontend/src/assets/images/fAIr_logo.png new file mode 100644 index 00000000..a2377e4f Binary files /dev/null and b/frontend/src/assets/images/fAIr_logo.png differ diff --git a/frontend/src/assets/images/index.ts b/frontend/src/assets/images/index.ts new file mode 100644 index 00000000..c535dadd --- /dev/null +++ b/frontend/src/assets/images/index.ts @@ -0,0 +1,11 @@ +export { default as JumbotronBackgroundImage } from "@/assets/images/header_bg.jpg"; +export { default as CreativeCommonsBadge } from "@/assets/images/cc_by_badge.png"; +export { default as HOTTeamTwo } from "@/assets/images/hot_team_2.jpg"; +export { default as HOTTeamLandscape } from "@/assets/images/hot_team_landscape.png"; +export { default as HOTTeam } from "@/assets/images/hot_team.jpg"; +export { default as MapMarkerIcon } from "@/assets/images/map_marker.png"; +export { default as MapathonOngoing } from "@/assets/images/mapathon_ongoing.jpg"; +export { default as ModelFormConfirmation } from "@/assets/images/model_creation_success.png"; +export { default as FairModelPlaceholderImage } from "@/assets/images/model_placeholder_image.png"; +export { default as TrainingInProgressImage } from "@/assets/images/training_in_progress.png"; +export { default as fAIrLogo } from "@/assets/images/fAIr_logo.png"; diff --git a/frontend/src/assets/svgs/fair_logo.svg b/frontend/src/assets/svgs/fair_logo.svg new file mode 100644 index 00000000..8fef6c0f --- /dev/null +++ b/frontend/src/assets/svgs/fair_logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/frontend/src/assets/svgs/hot_fair_logo.svg b/frontend/src/assets/svgs/hot_fair_logo.svg deleted file mode 100644 index 78e2bb55..00000000 --- a/frontend/src/assets/svgs/hot_fair_logo.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/frontend/src/assets/svgs/index.ts b/frontend/src/assets/svgs/index.ts new file mode 100644 index 00000000..79963adc --- /dev/null +++ b/frontend/src/assets/svgs/index.ts @@ -0,0 +1,12 @@ +export { default as DashedLineConnector } from "@/assets/svgs/dashed_line.svg"; +export { default as AIIcon } from "@/assets/svgs/fair_ai_icon.svg"; +export { default as fAIrValues } from "@/assets/svgs/fair_values.svg"; +export { default as HamburgerIcon } from "@/assets/svgs/hamburger_icon.svg"; +export { default as JOSMLogo } from "@/assets/svgs/josm_logo.svg"; +export { default as OSMLogo } from "@/assets/svgs/osm_logo.svg"; +export { default as BrandLogo } from "./fair_logo.svg"; +export { default as FacebookIcon } from "./socials/facebook_logo.svg"; +export { default as YouTubeIcon } from "./socials/youtube_logo.svg"; +export { default as InstagramIcon } from "./socials/instagram_logo.svg"; +export { default as XIcon } from "./socials/x_logo.svg"; +export { default as GitHubIcon } from "./socials/github_logo.svg"; diff --git a/frontend/src/components/errors/fallback.tsx b/frontend/src/components/errors/fallback.tsx index d2a767ac..a00536e7 100644 --- a/frontend/src/components/errors/fallback.tsx +++ b/frontend/src/components/errors/fallback.tsx @@ -1,13 +1,13 @@ import { Button } from "@/components/ui/button"; -import { APP_CONTENT } from "@/utils"; +import { SHARED_CONTENT } from "@/constants"; -const MainErrorFallback = () => { +export const MainErrorFallback = () => { return ( <>

- {APP_CONTENT.errorBoundary.title} + {SHARED_CONTENT.errorBoundary.title}

@@ -16,11 +16,9 @@ const MainErrorFallback = () => { onClick={() => window.location.reload()} className="max-w-80" > - {APP_CONTENT.errorBoundary.button} + {SHARED_CONTENT.errorBoundary.button}
); }; - -export default MainErrorFallback; diff --git a/frontend/src/components/errors/index.ts b/frontend/src/components/errors/index.ts index d674f9cd..5bae486d 100644 --- a/frontend/src/components/errors/index.ts +++ b/frontend/src/components/errors/index.ts @@ -1,2 +1,2 @@ -export { default as MainErrorFallback } from "./fallback"; -export { default as PageUnderConstruction } from "./under-construction"; +export { MainErrorFallback } from "./fallback"; +export { PageUnderConstruction } from "./under-construction"; diff --git a/frontend/src/components/errors/under-construction.tsx b/frontend/src/components/errors/under-construction.tsx index 85caf879..9a243410 100644 --- a/frontend/src/components/errors/under-construction.tsx +++ b/frontend/src/components/errors/under-construction.tsx @@ -1,12 +1,12 @@ import { Button } from "@/components/ui/button"; -import { APP_CONTENT } from "@/utils"; +import { SHARED_CONTENT } from "@/constants"; -const PageUnderConstruction = () => { +export const PageUnderConstruction = () => { return (

- {APP_CONTENT.construction.message} + {SHARED_CONTENT.construction.message}

@@ -15,10 +15,8 @@ const PageUnderConstruction = () => { onClick={() => window.location.assign(window.location.origin)} className="max-w-80" > - {APP_CONTENT.construction.button} + {SHARED_CONTENT.construction.button}
); }; - -export default PageUnderConstruction; diff --git a/frontend/src/components/landing/about-fair/about-fair.module.css b/frontend/src/components/landing/about-fair/about-fair.module.css index 4613ac9b..8a2832c5 100644 --- a/frontend/src/components/landing/about-fair/about-fair.module.css +++ b/frontend/src/components/landing/about-fair/about-fair.module.css @@ -89,4 +89,4 @@ min-width: 366px; min-height: 366px; } -} \ No newline at end of file +} diff --git a/frontend/src/components/landing/about-fair/about-fair.tsx b/frontend/src/components/landing/about-fair/about-fair.tsx index 6ccb0dc5..56dde0a9 100644 --- a/frontend/src/components/landing/about-fair/about-fair.tsx +++ b/frontend/src/components/landing/about-fair/about-fair.tsx @@ -1,14 +1,16 @@ -import AIIcon from "@/assets/svgs/fair_ai_icon.svg"; import styles from "./about-fair.module.css"; -import { APP_CONTENT } from "@/utils/content"; +import { AIIcon } from "@/assets/svgs"; import { Image } from "@/components/ui/image"; +import { SHARED_CONTENT } from "@/constants"; -const WhatIsFAIR = () => { +export const WhatIsFAIR = () => { return (
-

{APP_CONTENT.homepage.aboutTitle}

-

{APP_CONTENT.homepage.aboutContent}

+

{SHARED_CONTENT.homepage.aboutTitle}

+

+ {SHARED_CONTENT.homepage.aboutContent} +

AI Icon @@ -17,5 +19,3 @@ const WhatIsFAIR = () => {
); }; - -export default WhatIsFAIR; diff --git a/frontend/src/components/landing/core-features/core-features.tsx b/frontend/src/components/landing/core-features/core-features.tsx index e1156faf..f92c5c90 100644 --- a/frontend/src/components/landing/core-features/core-features.tsx +++ b/frontend/src/components/landing/core-features/core-features.tsx @@ -1,7 +1,7 @@ -import { GuageIcon, LoopIcon, TimerIcon } from "@/components/ui/icons"; import styles from "./core-features.module.css"; +import { GuageIcon, LoopIcon, TimerIcon } from "@/components/ui/icons"; import { IconProps } from "@/types"; -import { APP_CONTENT } from "@/utils/content"; +import { SHARED_CONTENT } from "@/constants"; type TCoreFeatures = { title: string; @@ -9,20 +9,20 @@ type TCoreFeatures = { }; const coreFeatures: TCoreFeatures[] = [ { - title: APP_CONTENT.homepage.coreFeatures.featureOne, + title: SHARED_CONTENT.homepage.coreFeatures.featureOne, icon: TimerIcon, }, { - title: APP_CONTENT.homepage.coreFeatures.featureTwo, + title: SHARED_CONTENT.homepage.coreFeatures.featureTwo, icon: GuageIcon, }, { - title: APP_CONTENT.homepage.coreFeatures.featureThree, + title: SHARED_CONTENT.homepage.coreFeatures.featureThree, icon: LoopIcon, }, ]; -const CoreFeatures = () => { +export const CoreFeatures = () => { return (
{coreFeatures.map((feature, id) => ( @@ -36,5 +36,3 @@ const CoreFeatures = () => {
); }; - -export default CoreFeatures; diff --git a/frontend/src/components/landing/core-values/core-values.module.css b/frontend/src/components/landing/core-values/core-values.module.css index a3ffc6e3..b149ebbb 100644 --- a/frontend/src/components/landing/core-values/core-values.module.css +++ b/frontend/src/components/landing/core-values/core-values.module.css @@ -240,4 +240,4 @@ .dashedLineWrapper { top: 320px; } -} \ No newline at end of file +} diff --git a/frontend/src/components/landing/core-values/core-values.tsx b/frontend/src/components/landing/core-values/core-values.tsx index ac7e0a46..30a19954 100644 --- a/frontend/src/components/landing/core-values/core-values.tsx +++ b/frontend/src/components/landing/core-values/core-values.tsx @@ -1,15 +1,14 @@ import styles from "./core-values.module.css"; -import HOTTeam from "@/assets/images/hot_team.jpg"; -import MapathonOngoing from "@/assets/images/mapathon_ongoing.jpg"; -import { APP_CONTENT } from "@/utils/content"; -import DashedLineConnector from "@/assets/svgs/dashed_line.svg"; +import { DashedLineConnector } from "@/assets/svgs"; +import { HOTTeam, MapathonOngoing } from "@/assets/images"; import { Image } from "@/components/ui/image"; +import { SHARED_CONTENT } from "@/constants"; -const Corevalues = () => { +export const Corevalues = () => { return (
-

{APP_CONTENT.homepage.coreValues.sectionTitle.firstSegment}

+

{SHARED_CONTENT.homepage.coreValues.sectionTitle.firstSegment}

{ />

- {APP_CONTENT.homepage.coreValues.sectionTitle.secondSegment} + {SHARED_CONTENT.homepage.coreValues.sectionTitle.secondSegment}

- {APP_CONTENT.homepage.coreValues.sectionTitle.thirdSegment} + {SHARED_CONTENT.homepage.coreValues.sectionTitle.thirdSegment}

- {APP_CONTENT.homepage.coreValues.sectionTitle.fourthSegment} + {SHARED_CONTENT.homepage.coreValues.sectionTitle.fourthSegment}

- {APP_CONTENT.homepage.coreValues.sectionTitle.fifthSegment} + {SHARED_CONTENT.homepage.coreValues.sectionTitle.fifthSegment}

@@ -58,13 +57,13 @@ const Corevalues = () => { {/* Community Driven */}
-

{APP_CONTENT.homepage.coreValues.community.title}

-

{APP_CONTENT.homepage.coreValues.community.description}

+

{SHARED_CONTENT.homepage.coreValues.community.title}

+

{SHARED_CONTENT.homepage.coreValues.community.description}

{APP_CONTENT.homepage.coreValues.community.title} {/* The rectangles */} @@ -85,15 +84,17 @@ const Corevalues = () => { {/* Humans not replaced */}
-

{APP_CONTENT.homepage.coreValues.humansNotReplaced.title}

+

+ {SHARED_CONTENT.homepage.coreValues.humansNotReplaced.title} +

- {APP_CONTENT.homepage.coreValues.humansNotReplaced.description} + {SHARED_CONTENT.homepage.coreValues.humansNotReplaced.description}

{APP_CONTENT.homepage.coreValues.humansNotReplaced.title} {/* The rectangles */} @@ -109,5 +110,3 @@ const Corevalues = () => {
); }; - -export default Corevalues; diff --git a/frontend/src/components/landing/cta/cta.module.css b/frontend/src/components/landing/cta/cta.module.css index bdcd0e40..5f198eca 100644 --- a/frontend/src/components/landing/cta/cta.module.css +++ b/frontend/src/components/landing/cta/cta.module.css @@ -159,4 +159,4 @@ right: 0; left: -54px; } -} \ No newline at end of file +} diff --git a/frontend/src/components/landing/cta/cta.tsx b/frontend/src/components/landing/cta/cta.tsx index 67d5fd40..395c5afa 100644 --- a/frontend/src/components/landing/cta/cta.tsx +++ b/frontend/src/components/landing/cta/cta.tsx @@ -1,35 +1,35 @@ -import { Button } from "@/components/ui/button/"; -import HOTTeam from "@/assets/images/hot_team_2.jpg"; import styles from "./cta.module.css"; -import { APP_CONTENT } from "@/utils"; +import { Button } from "@/components/ui/button/"; +import { HOTTeamTwo } from "@/assets/images"; import { Image } from "@/components/ui/image"; import { Link } from "@/components/ui/link"; +import { SHARED_CONTENT } from "@/constants"; -const CallToAction = () => { +export const CallToAction = () => { return (
-

{APP_CONTENT.homepage.callToAction.title}

-

{APP_CONTENT.homepage.callToAction.paragraph}

+

{SHARED_CONTENT.homepage.callToAction.title}

+

{SHARED_CONTENT.homepage.callToAction.paragraph}

{APP_CONTENT.homepage.callToAction.ctaButton} {/* The rectangles */} @@ -39,5 +39,3 @@ const CallToAction = () => {
); }; - -export default CallToAction; diff --git a/frontend/src/components/landing/header/header.tsx b/frontend/src/components/landing/header/header.tsx index 47685837..674ccf1f 100644 --- a/frontend/src/components/landing/header/header.tsx +++ b/frontend/src/components/landing/header/header.tsx @@ -1,40 +1,44 @@ -import { Button } from "@/components/ui/button"; -import styles from "@/components/landing/header/header.module.css"; import BackgroundImage from "@/assets/images/header_bg.jpg"; -import { APP_CONTENT } from "@/utils/content"; +import styles from "@/components/landing/header/header.module.css"; +import { APPLICATION_ROUTES, SHARED_CONTENT } from "@/constants"; +import { Button } from "@/components/ui/button"; import { Image } from "@/components/ui/image"; import { Link } from "@/components/ui/link"; -import { APPLICATION_ROUTES } from "@/utils"; -const Header = () => { +export const Header = () => { return (
-

{APP_CONTENT.homepage.jumbotronTitle}

-

{APP_CONTENT.homepage.jumbotronHeadline}

+

{SHARED_CONTENT.homepage.jumbotronTitle}

+

{SHARED_CONTENT.homepage.jumbotronHeadline}

+ + + -
{APP_CONTENT.homepage.jumbotronImageAlt} @@ -43,5 +47,3 @@ const Header = () => {
); }; - -export default Header; diff --git a/frontend/src/components/landing/header/index.ts b/frontend/src/components/landing/header/index.ts index 5ed4e585..924cc88d 100644 --- a/frontend/src/components/landing/header/index.ts +++ b/frontend/src/components/landing/header/index.ts @@ -1 +1 @@ -export { default as Header } from "./header"; +export { Header } from "./header"; diff --git a/frontend/src/components/landing/index.ts b/frontend/src/components/landing/index.ts index c2c1f6e5..86e44dc5 100644 --- a/frontend/src/components/landing/index.ts +++ b/frontend/src/components/landing/index.ts @@ -1,7 +1,8 @@ -export { default as Kpi } from "./kpi/kpi"; -export { default as WhatIsFAIR } from "./about-fair/about-fair"; -export { default as TheFAIRProcess } from "../shared/fair-process/fair-process"; -export { default as CoreFeatures } from "./core-features/core-features"; -export { default as Corevalues } from "./core-values/core-values"; -export { default as TaglineBanner } from "./tagline/tagline"; -export { default as CallToAction } from "./cta/cta"; +export { Kpi } from "./kpi/kpi"; +export { WhatIsFAIR } from "./about-fair/about-fair"; +export { TheFAIRProcess } from "../shared/fair-process/fair-process"; +export { CoreFeatures } from "./core-features/core-features"; +export { Corevalues } from "./core-values/core-values"; +export { TaglineBanner } from "./tagline/tagline"; +export { CallToAction } from "./cta/cta"; +export * from "./header"; diff --git a/frontend/src/components/landing/kpi/kpi.tsx b/frontend/src/components/landing/kpi/kpi.tsx index 617a44da..9b339534 100644 --- a/frontend/src/components/landing/kpi/kpi.tsx +++ b/frontend/src/components/landing/kpi/kpi.tsx @@ -1,8 +1,7 @@ -import { APP_CONTENT, KPI_STATS_CACHE_TIME_MS } from "@/utils"; import styles from "./kpi.module.css"; import { API_ENDPOINTS, apiClient } from "@/services"; +import { KPI_STATS_CACHE_TIME_MS, SHARED_CONTENT } from "@/constants"; import { useQuery } from "@tanstack/react-query"; - type TKPIS = { figure?: number; label: string; @@ -20,7 +19,7 @@ const fetchKPIStats = async (): Promise => { return data; }; -const Kpi = () => { +export const Kpi = () => { const { data, isLoading, isError, error } = useQuery({ queryKey: ["kpis"], queryFn: fetchKPIStats, @@ -41,19 +40,19 @@ const Kpi = () => { const KPIs: TKPIS = [ { figure: data?.total_models_published ?? 0, - label: APP_CONTENT.homepage.kpi.publishedAIModels, + label: SHARED_CONTENT.homepage.kpi.publishedAIModels, }, { figure: data?.total_registered_users ?? 0, - label: APP_CONTENT.homepage.kpi.totalUsers, + label: SHARED_CONTENT.homepage.kpi.totalUsers, }, { figure: data?.total_feedback_labels ?? 0, - label: APP_CONTENT.homepage.kpi.humanFeedback, + label: SHARED_CONTENT.homepage.kpi.humanFeedback, }, { figure: data?.total_accepted_predictions ?? 0, - label: APP_CONTENT.homepage.kpi.acceptedPrediction, + label: SHARED_CONTENT.homepage.kpi.acceptedPrediction, }, ]; @@ -70,5 +69,3 @@ const Kpi = () => {
); }; - -export default Kpi; diff --git a/frontend/src/components/landing/tagline/tagline.module.css b/frontend/src/components/landing/tagline/tagline.module.css index 9bcb64d5..4927b66f 100644 --- a/frontend/src/components/landing/tagline/tagline.module.css +++ b/frontend/src/components/landing/tagline/tagline.module.css @@ -37,4 +37,4 @@ .taglineBanner { padding: 0 var(--hot-fair-spacing-extra-large); } -} \ No newline at end of file +} diff --git a/frontend/src/components/landing/tagline/tagline.tsx b/frontend/src/components/landing/tagline/tagline.tsx index a52a2dc6..a235447f 100644 --- a/frontend/src/components/landing/tagline/tagline.tsx +++ b/frontend/src/components/landing/tagline/tagline.tsx @@ -1,20 +1,18 @@ -import { APP_CONTENT } from "@/utils/content"; import styles from "./tagline.module.css"; +import { SHARED_CONTENT } from "@/constants"; -const TaglineBanner = () => { +export const TaglineBanner = () => { return (

- {APP_CONTENT.homepage.tagline.firstSegment} - {APP_CONTENT.homepage.tagline.secondSegment} + {SHARED_CONTENT.homepage.tagline.firstSegment} + {SHARED_CONTENT.homepage.tagline.secondSegment} - {APP_CONTENT.homepage.tagline.thirdSegment} + {SHARED_CONTENT.homepage.tagline.thirdSegment} - {APP_CONTENT.homepage.tagline.fourthSegment} - {APP_CONTENT.homepage.tagline.fifthSegment} + {SHARED_CONTENT.homepage.tagline.fourthSegment} + {SHARED_CONTENT.homepage.tagline.fifthSegment}

); }; - -export default TaglineBanner; diff --git a/frontend/src/components/ui/footer/footer.tsx b/frontend/src/components/layout/footer/footer.tsx similarity index 60% rename from frontend/src/components/ui/footer/footer.tsx rename to frontend/src/components/layout/footer/footer.tsx index 31b532de..26db9e1c 100644 --- a/frontend/src/components/ui/footer/footer.tsx +++ b/frontend/src/components/layout/footer/footer.tsx @@ -1,51 +1,53 @@ -import CreativeCommonsBadge from "@/assets/images/cc_by_badge.png"; -import FacebookLogo from "@/assets/svgs/socials/facebook_logo.svg"; -import GitHubLogo from "@/assets/svgs/socials/github_logo.svg"; -import XLogo from "@/assets/svgs/socials/x_logo.svg"; -import InstagramLogo from "@/assets/svgs/socials/instagram_logo.svg"; -import YoutTubeLogo from "@/assets/svgs/socials/youtube_logo.svg"; -import { APP_CONTENT } from "@/utils/content"; +import { CreativeCommonsBadge } from "@/assets/images"; import { Image } from "@/components/ui/image"; import { Link } from "@/components/ui/link"; +import { SHARED_CONTENT } from "@/constants"; +import { + FacebookIcon, + GitHubIcon, + InstagramIcon, + XIcon, + YouTubeIcon, +} from "@/assets/svgs"; const socials = [ { name: "Facebook", - url: "#", - logo: FacebookLogo, + url: "https://www.facebook.com/hotosm", + logo: FacebookIcon, }, { name: "X", - url: "#", - logo: XLogo, + url: "https://twitter.com/hotosm/", + logo: XIcon, }, { name: "GitHub", - url: "#", - logo: GitHubLogo, + url: "https://github.com/hotosm/fair", + logo: GitHubIcon, }, { name: "YouTube", - url: "#", - logo: YoutTubeLogo, + url: "https://www.youtube.com/user/hotosm", + logo: YouTubeIcon, }, { name: "Instagram", - url: "#", - logo: InstagramLogo, + url: "https://www.instagram.com/hot.osm/", + logo: InstagramIcon, }, ]; -const Footer = () => { +export const Footer = () => { return (
-

{APP_CONTENT.footer.title}

+

{SHARED_CONTENT.footer.title}

    - {APP_CONTENT.footer.siteMap.groupOne.map((route, id) => ( + {SHARED_CONTENT.footer.siteMap.groupOne.map((route, id) => (
  • {
    - {APP_CONTENT.footer.siteMap.groupTwo.map((route, id) => ( + {SHARED_CONTENT.footer.siteMap.groupTwo.map((route, id) => (
  • { />
-

{APP_CONTENT.footer.copyright.firstSegment}

-

{APP_CONTENT.footer.copyright.secondSegment}

+

{SHARED_CONTENT.footer.copyright.firstSegment}

+

{SHARED_CONTENT.footer.copyright.secondSegment}

@@ -107,21 +109,40 @@ const Footer = () => { ))} -

{APP_CONTENT.footer.socials.ctaText}

+ +

{SHARED_CONTENT.footer.socials.ctaText}

+

- {APP_CONTENT.footer.madeWithLove.firstSegment} - {APP_CONTENT.footer.madeWithLove.secondSegment} - {APP_CONTENT.footer.madeWithLove.thirdSegment} - {APP_CONTENT.footer.madeWithLove.fourthSegment} + {SHARED_CONTENT.footer.madeWithLove.firstSegment} + + {SHARED_CONTENT.footer.madeWithLove.secondSegment} + + {SHARED_CONTENT.footer.madeWithLove.thirdSegment} + + {SHARED_CONTENT.footer.madeWithLove.fourthSegment} +

); }; - -export default Footer; diff --git a/frontend/src/components/layout/footer/index.ts b/frontend/src/components/layout/footer/index.ts new file mode 100644 index 00000000..25eaacd6 --- /dev/null +++ b/frontend/src/components/layout/footer/index.ts @@ -0,0 +1 @@ +export { Footer } from "./footer"; diff --git a/frontend/src/components/layout/index.ts b/frontend/src/components/layout/index.ts new file mode 100644 index 00000000..b3208605 --- /dev/null +++ b/frontend/src/components/layout/index.ts @@ -0,0 +1,2 @@ +export * from "./footer"; +export * from "./navbar"; diff --git a/frontend/src/components/layout/navbar/index.ts b/frontend/src/components/layout/navbar/index.ts new file mode 100644 index 00000000..82411f84 --- /dev/null +++ b/frontend/src/components/layout/navbar/index.ts @@ -0,0 +1,3 @@ +export { NavBar } from "./navbar"; +export { UserProfile } from "./user-profile"; +export { NavLogo } from "./nav-logo"; diff --git a/frontend/src/components/layout/navbar/nav-logo.tsx b/frontend/src/components/layout/navbar/nav-logo.tsx new file mode 100644 index 00000000..1257d67c --- /dev/null +++ b/frontend/src/components/layout/navbar/nav-logo.tsx @@ -0,0 +1,36 @@ +import { APPLICATION_ROUTES, SHARED_CONTENT } from "@/constants"; +import { BrandLogo } from "@/assets/svgs"; +import { Image } from "@/components/ui/image"; +import { useNavigate } from "react-router-dom"; + +export const NavLogo = ({ + onClick, + smallerSize, +}: { + onClick?: () => void; + smallerSize?: boolean; +}) => { + const navigate = useNavigate(); + const handleClick = () => { + onClick ? onClick() : navigate(APPLICATION_ROUTES.HOMEPAGE); + }; + + const width = smallerSize ? "50px" : "60px"; + const height = smallerSize ? "50px" : "22px"; + + return ( + + ); +}; diff --git a/frontend/src/components/ui/navbar/navbar.module.css b/frontend/src/components/layout/navbar/navbar.module.css similarity index 100% rename from frontend/src/components/ui/navbar/navbar.module.css rename to frontend/src/components/layout/navbar/navbar.module.css diff --git a/frontend/src/components/layout/navbar/navbar.tsx b/frontend/src/components/layout/navbar/navbar.tsx new file mode 100644 index 00000000..7f06dc94 --- /dev/null +++ b/frontend/src/components/layout/navbar/navbar.tsx @@ -0,0 +1,114 @@ +import styles from "@/components/layout/navbar/navbar.module.css"; +import { Button } from "@/components/ui/button"; +import { Drawer } from "@/components/ui/drawer"; +import { DrawerPlacements } from "@/enums"; +import { HamburgerIcon } from "@/assets/svgs"; +import { Image } from "@/components/ui/image"; +import { Link } from "@/components/ui/link"; +import { navLinks } from "@/constants/general"; +import { NavLogo } from "@/components/layout"; +import { SHARED_CONTENT } from "@/constants"; +import { useAuth } from "@/app/providers/auth-provider"; +import { useLocation } from "react-router-dom"; +import { useLogin } from "@/hooks/use-login"; +import { UserProfile } from "@/components/layout"; +import { useState } from "react"; + +export const NavBar = () => { + const [open, setOpen] = useState(false); + const { isAuthenticated } = useAuth(); + const { handleLogin, loading } = useLogin(); + + return ( + <> + +
+
+ + +
+
+ +
+
+ {isAuthenticated ? ( + + ) : ( + + )} +
+
+
+ + + ); +}; + +type NavBarLinksProps = { + className: string; + setOpen?: (arg: boolean) => void; +}; + +const NavBarLinks: React.FC = ({ className, setOpen }) => { + const location = useLocation(); + + return ( +
    + {navLinks.map((link, id) => ( +
  • { + //close the drawer after navigating to a new page on mobile + setOpen && setOpen(false); + }} + className={`${styles.navLinkItem} ${location.pathname.includes(link.href) && styles.activeLink}`} + > + + {link.title} + +
  • + ))} +
+ ); +}; diff --git a/frontend/src/components/ui/navbar/user-profile.tsx b/frontend/src/components/layout/navbar/user-profile.tsx similarity index 52% rename from frontend/src/components/ui/navbar/user-profile.tsx rename to frontend/src/components/layout/navbar/user-profile.tsx index c21e351a..082f8a8f 100644 --- a/frontend/src/components/ui/navbar/user-profile.tsx +++ b/frontend/src/components/layout/navbar/user-profile.tsx @@ -1,18 +1,33 @@ -import styles from "@/components/ui/navbar/navbar.module.css"; import SlAvatar from "@shoelace-style/shoelace/dist/react/avatar/index.js"; +import styles from "@/components/layout/navbar/navbar.module.css"; +import useScreenSize from "@/hooks/use-screen-size"; import { DropDown } from "@/components/ui/dropdown"; -import { useNavigate } from "react-router-dom"; -import { APP_CONTENT, APPLICATION_ROUTES } from "@/utils"; -import { useDropdownMenu } from "@/hooks/use-dropdown-menu"; +import { DropdownPlacement } from "@/enums"; +import { TCSSWithVars } from "@/types"; +import { truncateString } from "@/utils"; import { useAuth } from "@/app/providers/auth-provider"; +import { useDropdownMenu } from "@/hooks/use-dropdown-menu"; +import { useNavigate } from "react-router-dom"; +import { + APPLICATION_ROUTES, + ELEMENT_DISTANCE_FROM_NAVBAR, + SHARED_CONTENT, +} from "@/constants"; -const UserProfile = ({ hideFullName }: { hideFullName?: boolean }) => { +export const UserProfile = ({ + hideFullName, + smallerSize, +}: { + hideFullName?: boolean; + smallerSize?: boolean; +}) => { const { user, logout } = useAuth(); const { onDropdownHide, onDropdownShow, dropdownIsOpened } = useDropdownMenu(); const navigate = useNavigate(); - + const { isMobile, isTablet } = useScreenSize(); + const size = smallerSize ? "35px" : isTablet || isMobile ? "28px" : "40px"; return ( { dropdownIsOpened={dropdownIsOpened} menuItems={[ { - value: APP_CONTENT.navbar.userProfile.models, + value: SHARED_CONTENT.navbar.userProfile.models, onClick: () => { navigate(APPLICATION_ROUTES.ACCOUNT_MODELS); onDropdownHide(); }, }, { - value: APP_CONTENT.navbar.userProfile.settings, + value: SHARED_CONTENT.navbar.userProfile.settings, onClick: () => { navigate(APPLICATION_ROUTES.ACCOUNT_SETTINGS); onDropdownHide(); }, }, { - value: APP_CONTENT.navbar.userProfile.logout, + value: SHARED_CONTENT.navbar.userProfile.logout, onClick: () => { logout(); onDropdownHide(); @@ -42,23 +57,24 @@ const UserProfile = ({ hideFullName }: { hideFullName?: boolean }) => { className: "logoutButton", }, ]} - distance={0} - placement="bottom-end" + distance={ELEMENT_DISTANCE_FROM_NAVBAR} + placement={DropdownPlacement.BOTTOM_END} triggerComponent={
{!hideFullName && ( -

{user.username}

+

+ {truncateString(user?.username, 20)} +

)}
} >
); }; - -export default UserProfile; diff --git a/frontend/src/components/layouts/index.ts b/frontend/src/components/layouts/index.ts deleted file mode 100644 index 59957d1e..00000000 --- a/frontend/src/components/layouts/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as RootLayout } from "./root-layout"; diff --git a/frontend/src/components/layouts/root-layout.tsx b/frontend/src/components/layouts/root-layout.tsx deleted file mode 100644 index 397cd2e9..00000000 --- a/frontend/src/components/layouts/root-layout.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { NavBar } from "@/components/ui/navbar"; -import { Outlet, useLocation } from "react-router-dom"; -import { Footer } from "@/components/ui/footer"; -import { useEffect } from "react"; -import { Banner } from "@/components/ui/banner"; -import { APPLICATION_ROUTES } from "@/utils"; -import { useScrollToTop } from "@/hooks/use-scroll-to-element"; - -const RootLayout = () => { - const { pathname } = useLocation(); - const { scrollToTop } = useScrollToTop(); - // Scroll to top on pages switch. - useEffect(() => { - scrollToTop(); - }, [pathname]); - - return ( -
- - {!pathname.includes(APPLICATION_ROUTES.START_MAPPING_BASE) && } - -
- -
-
-
- ); -}; - -export default RootLayout; diff --git a/frontend/src/components/map/controls/current-zoom-control.tsx b/frontend/src/components/map/controls/current-zoom-control.tsx index abbe3b13..20c7bb1a 100644 --- a/frontend/src/components/map/controls/current-zoom-control.tsx +++ b/frontend/src/components/map/controls/current-zoom-control.tsx @@ -1,6 +1,6 @@ export const ZoomLevel = ({ currentZoom }: { currentZoom: number }) => { return ( -
+

Zoom level: {currentZoom}

); diff --git a/frontend/src/components/map/controls/draw-control.tsx b/frontend/src/components/map/controls/draw-control.tsx index f68d29fe..352ab824 100644 --- a/frontend/src/components/map/controls/draw-control.tsx +++ b/frontend/src/components/map/controls/draw-control.tsx @@ -1,8 +1,8 @@ import { DrawingModes, ToolTipPlacement } from "@/enums"; -import { useCallback } from "react"; -import { ToolTip } from "@/components/ui/tooltip"; import { PenIcon } from "@/components/ui/icons"; import { TerraDraw } from "terra-draw"; +import { ToolTip } from "@/components/ui/tooltip"; +import { useCallback } from "react"; export const DrawControl = ({ drawingMode, diff --git a/frontend/src/components/map/controls/fit-to-bounds-control.tsx b/frontend/src/components/map/controls/fit-to-bounds-control.tsx index 7b254146..399db45b 100644 --- a/frontend/src/components/map/controls/fit-to-bounds-control.tsx +++ b/frontend/src/components/map/controls/fit-to-bounds-control.tsx @@ -1,15 +1,31 @@ +import useScreenSize from "@/hooks/use-screen-size"; +import { ArrowMoveIcon } from "@/components/ui/icons"; +import { Map } from "maplibre-gl"; +import { MAP_CONTENT } from "@/constants"; import { ToolTip } from "@/components/ui/tooltip"; -import { FullScreenIcon } from "@/components/ui/icons"; -import { mapContents } from "@/constants"; +import { useCallback } from "react"; + +export const FitToBounds = ({ + map, + bounds, +}: { + map: Map | null; + bounds: any; +}) => { + const { isSmallViewport } = useScreenSize(); + + const fitToBounds = useCallback(() => { + if (!map || !bounds) return; + map?.fitBounds(bounds); + }, [map, bounds]); -export const FitToBounds = ({ onClick }: { onClick: () => void }) => { return ( - + ); diff --git a/frontend/src/components/map/controls/geolocation-control.tsx b/frontend/src/components/map/controls/geolocation-control.tsx index f06806d1..f8ef5e0b 100644 --- a/frontend/src/components/map/controls/geolocation-control.tsx +++ b/frontend/src/components/map/controls/geolocation-control.tsx @@ -1,10 +1,10 @@ import { GeolocationIcon } from "@/components/ui/icons"; -import { useCallback } from "react"; -import { ToolTip } from "@/components/ui/tooltip"; -import { ToolTipPlacement } from "@/enums"; +import { Map } from "maplibre-gl"; import { showErrorToast, showWarningToast } from "@/utils"; import { TOAST_NOTIFICATIONS } from "@/constants"; -import { Map } from "maplibre-gl"; +import { ToolTip } from "@/components/ui/tooltip"; +import { ToolTipPlacement } from "@/enums"; +import { useCallback } from "react"; export const GeolocationControl = ({ map }: { map: Map | null }) => { const handleGeolocationClick = useCallback(() => { diff --git a/frontend/src/components/map/controls/index.ts b/frontend/src/components/map/controls/index.ts index 750d8444..01f1409a 100644 --- a/frontend/src/components/map/controls/index.ts +++ b/frontend/src/components/map/controls/index.ts @@ -3,5 +3,5 @@ export { DrawControl } from "./draw-control"; export { ZoomLevel } from "./current-zoom-control"; export { LayerControl } from "./layer-control"; export { MapCursorToolTip } from "./map-cursor-tooltip"; -export { Legend } from "./legend-control"; export { FitToBounds } from "./fit-to-bounds-control"; +export { GeolocationControl } from "./geolocation-control"; diff --git a/frontend/src/components/map/controls/layer-control.tsx b/frontend/src/components/map/controls/layer-control.tsx index 283419f7..c2dbba5e 100644 --- a/frontend/src/components/map/controls/layer-control.tsx +++ b/frontend/src/components/map/controls/layer-control.tsx @@ -1,11 +1,16 @@ -import { LayerStackIcon } from "@/components/ui/icons"; +import { BASEMAPS, ToolTipPlacement } from "@/enums"; +import { CheckboxGroup } from "@/components/ui/form"; import { DropDown } from "@/components/ui/dropdown"; -import { useDropdownMenu } from "@/hooks/use-dropdown-menu"; +import { LayerStackIcon } from "@/components/ui/icons"; import { Map } from "maplibre-gl"; -import { useEffect, useState } from "react"; -import { CheckboxGroup } from "../../ui/form"; -import { ToolTip } from "../../ui/tooltip"; -import { BASEMAPS, ToolTipPlacement } from "@/enums"; +import { ToolTip } from "@/components/ui/tooltip"; +import { useDropdownMenu } from "@/hooks/use-dropdown-menu"; +import { useEffect, useMemo, useState } from "react"; +import { + GOOGLE_SATELLITE_BASEMAP_LAYER_ID, + OSM_BASEMAP_LAYER_ID, + TMS_LAYER_ID, +} from "@/constants"; type TLayers = { id?: string; subLayers: string[]; value: string }[]; type TBasemaps = { id?: string; subLayer: string; value: string }[]; @@ -13,15 +18,36 @@ type TBasemaps = { id?: string; subLayer: string; value: string }[]; export const LayerControl = ({ map, layers, - basemaps, + basemaps = true, + openAerialMap = false, }: { map: Map | null; layers: TLayers; - basemaps: TBasemaps; + basemaps?: boolean; + openAerialMap?: boolean; }) => { const { dropdownIsOpened, onDropdownHide, onDropdownShow } = useDropdownMenu(); + const layerControlData = useMemo(() => { + const layers_ = [ + ...layers, + ...(openAerialMap + ? [{ value: "TMS Layer", subLayers: [TMS_LAYER_ID] }] + : []), + ]; + const baseLayers: TBasemaps = basemaps + ? [ + { value: BASEMAPS.OSM, subLayer: OSM_BASEMAP_LAYER_ID }, + { + value: BASEMAPS.GOOGLE_SATELLITE, + subLayer: GOOGLE_SATELLITE_BASEMAP_LAYER_ID, + }, + ] + : []; + return { layers_, baseLayers }; + }, [layers, openAerialMap, basemaps]); + const [layerVisibility, setLayerVisibility] = useState<{ [key: string]: boolean; }>({}); @@ -30,7 +56,7 @@ export const LayerControl = ({ }>({}); useEffect(() => { - const initialVisibility = layers.reduce( + const initialVisibility = layerControlData.layers_.reduce( (acc, { value }) => { acc[value] = layerVisibility[value] !== undefined ? layerVisibility[value] : true; @@ -40,10 +66,10 @@ export const LayerControl = ({ ); setLayerVisibility(initialVisibility); - }, [layers]); + }, [layerControlData.layers_]); useEffect(() => { - const initialVisibility = basemaps.reduce( + const initialVisibility = layerControlData.baseLayers.reduce( (acc, { value }) => { acc[value] = basemapVisibility[value] !== undefined @@ -55,12 +81,12 @@ export const LayerControl = ({ ); setBasemapVisibility(initialVisibility); - }, [basemaps]); + }, [layerControlData.baseLayers]); const handleLayerSelection = (newSelectedLayers: string[]) => { const updatedVisibility = { ...layerVisibility }; - layers.forEach(({ value, subLayers }) => { + layerControlData.layers_.forEach(({ value, subLayers }) => { updatedVisibility[value] = newSelectedLayers.includes(value); if (map?.isStyleLoaded) { @@ -83,7 +109,7 @@ export const LayerControl = ({ const handleBasemapSelection = (newSelectedBasemap: string[]) => { const updatedVisibility = { ...basemapVisibility }; - basemaps.forEach(({ value, subLayer }) => { + layerControlData.baseLayers.forEach(({ value, subLayer }) => { updatedVisibility[value] = newSelectedBasemap.includes(value); if (map?.isStyleLoaded) { if (map.getLayer(subLayer)) { @@ -107,26 +133,30 @@ export const LayerControl = ({ onDropdownShow={onDropdownShow} disableCheveronIcon triggerComponent={ -
+
} withCheckbox distance={10} > -
- {basemaps.length > 0 && ( +
+ {layerControlData.baseLayers.length > 0 ? ( <>

Basemap

- )} - {layers.length > 0 && ( + ) : null} + {layerControlData.layers_.length > 0 ? ( <>

Layers

layerVisibility[layer], )} multiple - options={layers} + options={layerControlData.layers_} // @ts-expect-error bad type definition onCheck={handleLayerSelection} /> - )} + ) : null}
diff --git a/frontend/src/components/map/controls/legend-control.tsx b/frontend/src/components/map/controls/legend-control.tsx deleted file mode 100644 index eb9e5cab..00000000 --- a/frontend/src/components/map/controls/legend-control.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { useState } from "react"; -import { LegendBookIcon } from "../../ui/icons"; -import { LEGEND_NAME_MAPPING, MAP_STYLES_PREFIX } from "@/utils"; -import { Map } from "maplibre-gl"; - -const FillLegendStyle = ({ - fillColor, - fillOpacity, -}: { - fillColor: string; - fillOpacity: number; -}) => { - return ( - - ); -}; - -export const Legend = ({ map }: { map: Map | null }) => { - const [expandLegend, setExpandLegend] = useState(true); - - const activeLayers = map - ?.getStyle() - .layers?.filter( - (layer) => - layer.id.includes(MAP_STYLES_PREFIX) && - layer.layout?.visibility === "visible", - ); - - return ( - - ); -}; diff --git a/frontend/src/components/map/controls/zoom-control.tsx b/frontend/src/components/map/controls/zoom-control.tsx index 33d051dd..164c8509 100644 --- a/frontend/src/components/map/controls/zoom-control.tsx +++ b/frontend/src/components/map/controls/zoom-control.tsx @@ -1,8 +1,8 @@ import { cn } from "@/utils"; -import { useCallback } from "react"; +import { Map } from "maplibre-gl"; import { ToolTip } from "../../ui/tooltip"; import { ToolTipPlacement } from "@/enums"; -import { Map } from "maplibre-gl"; +import { useCallback } from "react"; const ZoomButton = ({ onClick, diff --git a/frontend/src/components/map/layers/basemaps.tsx b/frontend/src/components/map/layers/basemaps.tsx index 17333677..87c4f007 100644 --- a/frontend/src/components/map/layers/basemaps.tsx +++ b/frontend/src/components/map/layers/basemaps.tsx @@ -1,9 +1,9 @@ +import { Map } from "maplibre-gl"; import { useMapLayers } from "@/hooks/use-map-layer"; import { GOOGLE_SATELLITE_BASEMAP_LAYER_ID, GOOGLE_SATELLITE_BASEMAP_SOURCE_ID, -} from "@/utils"; -import { Map } from "maplibre-gl"; +} from "@/constants"; export const Basemaps = ({ map }: { map: Map | null }) => { useMapLayers( diff --git a/frontend/src/components/map/layers/open-aerial-map.tsx b/frontend/src/components/map/layers/open-aerial-map.tsx index 1256c967..2a8ef186 100644 --- a/frontend/src/components/map/layers/open-aerial-map.tsx +++ b/frontend/src/components/map/layers/open-aerial-map.tsx @@ -1,6 +1,6 @@ -import { useMapLayers } from "@/hooks/use-map-layer"; -import { TMS_LAYER_ID, TMS_SOURCE_ID } from "@/utils"; import { Map } from "maplibre-gl"; +import { TMS_LAYER_ID, TMS_SOURCE_ID } from "@/constants"; +import { useMapLayers } from "@/hooks/use-map-layer"; export const OpenAerialMap = ({ tileJSONURL, diff --git a/frontend/src/components/map/layers/tile-boundaries.tsx b/frontend/src/components/map/layers/tile-boundaries.tsx index d355c620..e06e723f 100644 --- a/frontend/src/components/map/layers/tile-boundaries.tsx +++ b/frontend/src/components/map/layers/tile-boundaries.tsx @@ -1,12 +1,9 @@ -import { useMapLayers } from "@/hooks/use-map-layer"; -import { GeoJSONType } from "@/types"; -import { - getTileBoundariesGeoJSON, - TILE_BOUNDARY_LAYER_ID, - TILE_BOUNDARY_SOURCE_ID, -} from "@/utils"; import { GeoJSONSource, Map } from "maplibre-gl"; +import { GeoJSONType } from "@/types"; +import { getTileBoundariesGeoJSON } from "@/utils"; +import { TILE_BOUNDARY_LAYER_ID, TILE_BOUNDARY_SOURCE_ID } from "@/constants"; import { useCallback, useEffect } from "react"; +import { useMapLayers } from "@/hooks/use-map-layer"; export const TileBoundaries = ({ map }: { map: Map | null }) => { useMapLayers( @@ -17,7 +14,7 @@ export const TileBoundaries = ({ map }: { map: Map | null }) => { source: TILE_BOUNDARY_SOURCE_ID, paint: { "line-color": "#FFF", - "line-width": 1, + "line-width": 0.5, }, layout: { visibility: "visible" }, }, diff --git a/frontend/src/components/map/map.tsx b/frontend/src/components/map/map.tsx index 09c3250f..4128a85d 100644 --- a/frontend/src/components/map/map.tsx +++ b/frontend/src/components/map/map.tsx @@ -1,25 +1,20 @@ -import { - GOOGLE_SATELLITE_BASEMAP_LAYER_ID, - OSM_BASEMAP_LAYER_ID, - TMS_LAYER_ID, -} from "@/utils"; -import "maplibre-gl/dist/maplibre-gl.css"; -import { RefObject, useMemo } from "react"; -import { BASEMAPS, DrawingModes } from "@/enums"; - -import { ZoomControls } from "@/components/map/controls/zoom-control"; -import { GeolocationControl } from "@/components/map/controls/geolocation-control"; -import { DrawControl } from "@/components/map/controls/draw-control"; -import { ZoomLevel } from "@/components/map/controls/current-zoom-control"; -import { LayerControl } from "@/components/map/controls/layer-control"; -import { Legend } from "@/components/map/controls/legend-control"; -import { TileBoundaries } from "@/components/map/layers/tile-boundaries"; -import { OpenAerialMap } from "@/components/map/layers/open-aerial-map"; import { Basemaps } from "@/components/map/layers/basemaps"; import { ControlsPosition } from "@/enums"; +import { DrawingModes } from "@/enums"; import { LngLatBoundsLike, Map } from "maplibre-gl"; -import { FitToBounds } from "./controls"; +import { OpenAerialMap } from "@/components/map/layers/open-aerial-map"; +import { RefObject } from "react"; import { TerraDraw } from "terra-draw"; +import { TileBoundaries } from "@/components/map/layers/tile-boundaries"; +import "maplibre-gl/dist/maplibre-gl.css"; +import { + GeolocationControl, + FitToBounds, + DrawControl, + ZoomLevel, + LayerControl, + ZoomControls, +} from "@/components/map/controls"; type MapComponentProps = { geolocationControl?: boolean; @@ -31,9 +26,8 @@ type MapComponentProps = { value: string; subLayers: string[]; }[]; - showTileBoundary?: boolean; + showTileBoundaries?: boolean; children?: React.ReactNode; - showLegend?: boolean; openAerialMap?: boolean; oamTileJSONURL?: string; basemaps?: boolean; @@ -48,6 +42,7 @@ type MapComponentProps = { currentZoom?: number; drawingMode?: DrawingModes; setDrawingMode?: (newMode: DrawingModes) => void; + zoomControls?: boolean; }; export const MapComponent: React.FC = ({ @@ -57,8 +52,7 @@ export const MapComponent: React.FC = ({ showCurrentZoom = false, layerControl = false, layerControlLayers = [], - showTileBoundary = false, - showLegend = false, + showTileBoundaries = false, openAerialMap = false, oamTileJSONURL, basemaps = false, @@ -70,96 +64,60 @@ export const MapComponent: React.FC = ({ terraDraw, currentZoom, drawingMode, + zoomControls = true, setDrawingMode, }) => { - const layerControlData = useMemo(() => { - const layers = [ - ...layerControlLayers, - ...(openAerialMap - ? [{ value: "TMS Layer", subLayers: [TMS_LAYER_ID] }] - : []), - ]; - const baseLayers = basemaps - ? [ - { value: BASEMAPS.OSM, subLayer: OSM_BASEMAP_LAYER_ID }, - { - value: BASEMAPS.GOOGLE_SATELLITE, - subLayer: GOOGLE_SATELLITE_BASEMAP_LAYER_ID, - }, - ] - : []; - return { layers, baseLayers }; - }, [layerControlLayers, openAerialMap, basemaps]); - - const Controls = useMemo(() => { - if (!map) return; - return ( - <> -
- {currentZoom ? ( - - ) : null} - {geolocationControl && } - {drawControl && terraDraw && drawingMode && setDrawingMode && ( - - )} -
-
- {showCurrentZoom && currentZoom ? ( - - ) : null} - {layerControl && ( - - )} -
- - ); - }, [ - map, - geolocationControl, - drawControl, - terraDraw, - controlsPosition, - layerControl, - showCurrentZoom, - layerControlData, - currentZoom, - drawingMode && setDrawingMode, - ]); - return (
- {Controls} - {map && showLegend && } + {map ? ( + <> +
+ {currentZoom && zoomControls ? ( + + ) : null} + {geolocationControl && } + {drawControl && terraDraw && drawingMode && setDrawingMode && ( + + )} +
+ {fitToBounds && ( +
+ +
+ )} +
+ {showCurrentZoom && currentZoom ? ( + + ) : null} + {layerControl && ( + + )} +
+ + ) : null} {/* Order according to how they'll be rendered */} {basemaps && } {openAerialMap && oamTileJSONURL && ( )} - {showTileBoundary && } - {fitToBounds && map && ( - - map?.fitBounds(bounds as LngLatBoundsLike, { padding: 10 }) - } - /> - )} + {showTileBoundaries && } {children}
); diff --git a/frontend/src/components/map/setups/setup-maplibre.ts b/frontend/src/components/map/setups/setup-maplibre.ts index 8d2070f4..53e5745f 100644 --- a/frontend/src/components/map/setups/setup-maplibre.ts +++ b/frontend/src/components/map/setups/setup-maplibre.ts @@ -1,10 +1,11 @@ -import { MAX_ZOOM_LEVEL } from "@/utils"; -import maplibregl, { Map, StyleSpecification } from "maplibre-gl"; +import maplibregl, { Map } from "maplibre-gl"; +import { BASEMAPS } from "@/enums"; +import { MAP_STYLES, MAX_ZOOM_LEVEL } from "@/constants"; import { Protocol } from "pmtiles"; export const setupMaplibreMap = ( containerRef: React.RefObject, - style: StyleSpecification | string, + pmtiles: boolean, ): Map => { // Check if RTL plugin is needed and set it if (maplibregl.getRTLTextPluginStatus() === "unavailable") { @@ -14,15 +15,33 @@ export const setupMaplibreMap = ( ); } - let protocol = new Protocol(); - maplibregl.addProtocol("pmtiles", protocol.tile); + if (pmtiles) { + let protocol = new Protocol(); + maplibregl.addProtocol("pmtiles", protocol.tile); + } - return new maplibregl.Map({ + const map = new maplibregl.Map({ container: containerRef.current!, - style: style, + style: MAP_STYLES[BASEMAPS.OSM], center: [0, 0], zoom: 0.5, minZoom: 1, maxZoom: MAX_ZOOM_LEVEL, + pitchWithRotate: false, + }); + + // Prevent the map from rotating + map.on("rotatestart", () => { + map.setBearing(0); + }); + + map.on("rotate", () => { + map.setBearing(0); + }); + + map.on("rotateend", () => { + map.setBearing(0); }); + + return map; }; diff --git a/frontend/src/components/map/setups/setup-terra-draw.ts b/frontend/src/components/map/setups/setup-terra-draw.ts index 653b0b5d..fbc4e39a 100644 --- a/frontend/src/components/map/setups/setup-terra-draw.ts +++ b/frontend/src/components/map/setups/setup-terra-draw.ts @@ -1,16 +1,16 @@ +import maplibregl from "maplibre-gl"; import { TerraDraw, TerraDrawMapLibreGLAdapter, ValidateNotSelfIntersecting, TerraDrawRectangleMode, } from "terra-draw"; -import maplibregl from "maplibre-gl"; import { TRAINING_AREAS_AOI_FILL_COLOR, TRAINING_AREAS_AOI_FILL_OPACITY, TRAINING_AREAS_AOI_OUTLINE_COLOR, TRAINING_AREAS_AOI_OUTLINE_WIDTH, -} from "@/utils"; +} from "@/constants"; export const setupTerraDraw = (map: maplibregl.Map) => { return new TerraDraw({ diff --git a/frontend/src/components/seo/head.tsx b/frontend/src/components/seo/head.tsx index 7dd0e234..a0b12a45 100644 --- a/frontend/src/components/seo/head.tsx +++ b/frontend/src/components/seo/head.tsx @@ -10,7 +10,7 @@ export const Head = ({ title = "", description = "" }: HeadProps = {}) => { {title - ? `${title} | fAIr | Humanitarian OpenStreetMap Team (HOT)` + ? `${title} | fAIr - Humanitarian OpenStreetMap Team (HOT)` : undefined} diff --git a/frontend/src/components/shared/fair-process/fair-process.module.css b/frontend/src/components/shared/fair-process/fair-process.module.css index 43376dc9..427cfb98 100644 --- a/frontend/src/components/shared/fair-process/fair-process.module.css +++ b/frontend/src/components/shared/fair-process/fair-process.module.css @@ -8,4 +8,4 @@ .fairProcess { padding: 100px var(--hot-fair-spacing-extra-large); } -} \ No newline at end of file +} diff --git a/frontend/src/components/shared/fair-process/fair-process.tsx b/frontend/src/components/shared/fair-process/fair-process.tsx index c3d614d1..18d2f1ba 100644 --- a/frontend/src/components/shared/fair-process/fair-process.tsx +++ b/frontend/src/components/shared/fair-process/fair-process.tsx @@ -1,3 +1,9 @@ +import styles from "./fair-process.module.css"; +import { AnimatedBeam } from "@/components/ui/animated-beam"; +import { BotIcon, FeedbackIcon, PredictionsIcon } from "@/components/ui/icons"; +import { DesktopFlowIcon } from "@/components/ui/icons"; +import { IconProps } from "@/types"; +import { SHARED_CONTENT } from "@/constants"; import React, { useCallback, useEffect, @@ -5,12 +11,6 @@ import React, { useState, useRef, } from "react"; -import styles from "./fair-process.module.css"; -import { AnimatedBeam } from "@/components/ui/animated-beam"; -import { BotIcon, FeedbackIcon, PredictionsIcon } from "@/components/ui/icons"; -import { IconProps } from "@/types"; -import { DesktopFlowIcon } from "@/components/ui/icons"; -import { APP_CONTENT } from "@/utils/content"; /** * The delay in seconds before switching to the next step. This can be adjust accordingly. @@ -26,28 +26,28 @@ type TSteps = { const steps: TSteps[] = [ { - title: APP_CONTENT.homepage.fairProcess.stepOne.title, - paragraph: APP_CONTENT.homepage.fairProcess.stepOne.description, + title: SHARED_CONTENT.homepage.fairProcess.stepOne.title, + paragraph: SHARED_CONTENT.homepage.fairProcess.stepOne.description, icon: BotIcon, }, { - title: APP_CONTENT.homepage.fairProcess.stepTwo.title, - paragraph: APP_CONTENT.homepage.fairProcess.stepTwo.description, + title: SHARED_CONTENT.homepage.fairProcess.stepTwo.title, + paragraph: SHARED_CONTENT.homepage.fairProcess.stepTwo.description, icon: PredictionsIcon, }, { - title: APP_CONTENT.homepage.fairProcess.stepThree.title, - paragraph: APP_CONTENT.homepage.fairProcess.stepThree.description, + title: SHARED_CONTENT.homepage.fairProcess.stepThree.title, + paragraph: SHARED_CONTENT.homepage.fairProcess.stepThree.description, icon: FeedbackIcon, }, { - title: APP_CONTENT.homepage.fairProcess.stepFour.title, - paragraph: APP_CONTENT.homepage.fairProcess.stepFour.description, + title: SHARED_CONTENT.homepage.fairProcess.stepFour.title, + paragraph: SHARED_CONTENT.homepage.fairProcess.stepFour.description, icon: DesktopFlowIcon, }, ]; -const TheFAIRProcess = ({ +export const TheFAIRProcess = ({ disableStyle = false, }: { disableStyle?: boolean; @@ -103,7 +103,7 @@ const TheFAIRProcess = ({ ref={containerRef} >

- {APP_CONTENT.homepage.fairProcess.title} + {SHARED_CONTENT.homepage.fairProcess.title}

    {steps.map((step, id) => ( @@ -156,5 +156,3 @@ const TheFAIRProcess = ({
); }; - -export default TheFAIRProcess; diff --git a/frontend/src/components/shared/faqs/faqs.module.css b/frontend/src/components/shared/faqs/faqs.module.css index 4379cac7..5ca5eb40 100644 --- a/frontend/src/components/shared/faqs/faqs.module.css +++ b/frontend/src/components/shared/faqs/faqs.module.css @@ -1,7 +1,3 @@ -.FAQS { - padding: 0 var(--sl-spacing-large); -} - .heading { width: auto; text-align: center; @@ -31,10 +27,6 @@ /* md: */ @media (min-width: 768px) { - .FAQS { - padding: 0 var(--hot-fair-spacing-extra-large); - } - .heading { max-width: 218px; font-size: var(--hot-fair-font-size-title-2); @@ -45,4 +37,4 @@ margin: 0 auto; max-width: 844px; } -} \ No newline at end of file +} diff --git a/frontend/src/components/shared/faqs/faqs.tsx b/frontend/src/components/shared/faqs/faqs.tsx index db53b9a1..9206b76b 100644 --- a/frontend/src/components/shared/faqs/faqs.tsx +++ b/frontend/src/components/shared/faqs/faqs.tsx @@ -1,50 +1,46 @@ import styles from "./faqs.module.css"; -import { APP_CONTENT } from "@/utils/content"; import { Accordion } from "@/components/ui/accordion"; +import { APPLICATION_ROUTES, SHARED_CONTENT } from "@/constants"; +import { ChevronDownIcon } from "@/components/ui/icons"; import { Link } from "@/components/ui/link"; -import { APPLICATION_ROUTES } from "@/utils"; import { TFAQs } from "@/types"; -import React from "react"; -import { ChevronDownIcon } from "@/components/ui/icons"; -export const FAQs = React.memo( - ({ - faqs = APP_CONTENT.homepage.faqs.content, - disableSeeMoreButton, - }: { - faqs?: TFAQs; - disableSeeMoreButton?: boolean; - }) => { - return ( -
-

- {APP_CONTENT.homepage.faqs.sectionTitle} -

-
-
- {faqs.map((faq, id) => ( - - ))} -
- {!disableSeeMoreButton && ( - -

- {APP_CONTENT.homepage.faqs.cta} - -

- - )} +export const FAQs = ({ + faqs = SHARED_CONTENT.homepage.faqs.content, + disableSeeMoreButton, +}: { + faqs?: TFAQs; + disableSeeMoreButton?: boolean; +}) => { + return ( +
+

+ {SHARED_CONTENT.homepage.faqs.sectionTitle} +

+
+
+ {faqs.map((faq, id) => ( + + ))}
-
- ); - }, -); + {!disableSeeMoreButton && ( + +

+ {SHARED_CONTENT.homepage.faqs.cta} + +

+ + )} +
+
+ ); +}; diff --git a/frontend/src/components/shared/header/header.module.css b/frontend/src/components/shared/header/header.module.css deleted file mode 100644 index 0e639ba1..00000000 --- a/frontend/src/components/shared/header/header.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.headerBackground { - background-image: url("../../../src/assets/svgs/header_bg_contour.svg"); -} diff --git a/frontend/src/components/shared/hot-tracking.tsx b/frontend/src/components/shared/hot-tracking.tsx new file mode 100644 index 00000000..a18bf0d7 --- /dev/null +++ b/frontend/src/components/shared/hot-tracking.tsx @@ -0,0 +1,28 @@ +import { APPLICATION_ROUTES } from "@/constants"; +import { ENVS } from "@/config/env"; +import { HOT_TRACKING_HTML_TAG_NAME } from "@/constants"; +import { useEffect } from "react"; +import { useLocation } from "react-router-dom"; + +export const HotTracking = ({ homepagePath = APPLICATION_ROUTES.HOMEPAGE }) => { + const { pathname } = useLocation(); + + useEffect(() => { + if (document.getElementsByTagName(HOT_TRACKING_HTML_TAG_NAME).length > 0) + return; + + if (pathname === homepagePath) { + const hotTracking = document.createElement(HOT_TRACKING_HTML_TAG_NAME); + // CSS classname to customize it + hotTracking.classList.add("hot-matomo"); + hotTracking.setAttribute("site-id", ENVS.MATOMO_ID); + hotTracking.setAttribute("domain", ENVS.MATOMO_APP_DOMAIN); + hotTracking.setAttribute("force", "true"); + + // Append element to body + document.body.appendChild(hotTracking); + } + }, [pathname, homepagePath]); + + return null; +}; diff --git a/frontend/src/components/shared/index.ts b/frontend/src/components/shared/index.ts index 1ac79a69..e4a50853 100644 --- a/frontend/src/components/shared/index.ts +++ b/frontend/src/components/shared/index.ts @@ -1,3 +1,6 @@ -export { Header } from "./header/header"; +export { Header } from "./static-page-header/header"; export { FAQs } from "./faqs/faqs"; -export { SectionHeader } from "./section-header/section-header"; +export { SectionHeader } from "./section-header"; +export * from "./pagination"; +export { TheFAIRProcess } from "./fair-process/fair-process"; +export { HotTracking } from "./hot-tracking"; diff --git a/frontend/src/components/shared/pagination.tsx b/frontend/src/components/shared/pagination.tsx index 2d7ac0c1..af6a9694 100644 --- a/frontend/src/components/shared/pagination.tsx +++ b/frontend/src/components/shared/pagination.tsx @@ -19,9 +19,10 @@ type PaginationProps = { setOffset?: (offset: number) => void; showCountOnMobile?: boolean; centerOnMobile?: boolean; + scrollToTopOnPageSwitch?: boolean; }; -const Pagination: React.FC = ({ +export const Pagination: React.FC = ({ hasNextPage, hasPrevPage, disableNextPage, @@ -35,6 +36,7 @@ const Pagination: React.FC = ({ setOffset, showCountOnMobile = false, centerOnMobile = true, + scrollToTopOnPageSwitch = false, }) => { const _offset = offset ?? (query?.[SEARCH_PARAMS.offset] as number); const { scrollToTop } = useScrollToTop(); @@ -45,8 +47,10 @@ const Pagination: React.FC = ({ [SEARCH_PARAMS.offset]: _offset + pageLimit, }); setOffset?.(nextOffset); - // scroll to top - scrollToTop(); + // scroll to top only on models page + if (scrollToTopOnPageSwitch) { + scrollToTop(); + } } }; @@ -57,14 +61,16 @@ const Pagination: React.FC = ({ [SEARCH_PARAMS.offset]: Math.max(prevOffset, 0), }); setOffset?.(Math.max(prevOffset, 0)); - // scroll to top - scrollToTop(); + // scroll to top only on models page + if (scrollToTopOnPageSwitch) { + scrollToTop(); + } } }; return (

= ({

); }; - -export default Pagination; diff --git a/frontend/src/components/shared/section-header/section-header.tsx b/frontend/src/components/shared/section-header.tsx similarity index 50% rename from frontend/src/components/shared/section-header/section-header.tsx rename to frontend/src/components/shared/section-header.tsx index 7a768cfa..13cf202c 100644 --- a/frontend/src/components/shared/section-header/section-header.tsx +++ b/frontend/src/components/shared/section-header.tsx @@ -1,9 +1,7 @@ -import React from "react"; - -export const SectionHeader = React.memo(({ title }: { title: string }) => { +export const SectionHeader = ({ title }: { title: string }) => { return (

{title}

); -}); +}; diff --git a/frontend/src/components/shared/static-page-header/header.module.css b/frontend/src/components/shared/static-page-header/header.module.css new file mode 100644 index 00000000..a3917d99 --- /dev/null +++ b/frontend/src/components/shared/static-page-header/header.module.css @@ -0,0 +1,6 @@ +.headerBackground { + background-image: url("../../../assets/svgs/header_bg_contour.svg"); + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} diff --git a/frontend/src/components/shared/header/header.tsx b/frontend/src/components/shared/static-page-header/header.tsx similarity index 75% rename from frontend/src/components/shared/header/header.tsx rename to frontend/src/components/shared/static-page-header/header.tsx index 67a92d2f..b88382a1 100644 --- a/frontend/src/components/shared/header/header.tsx +++ b/frontend/src/components/shared/static-page-header/header.tsx @@ -1,10 +1,9 @@ -import React from "react"; import styles from "./header.module.css"; -export const Header = React.memo(({ title }: { title: string }) => { +export const Header = ({ title }: { title: string }) => { return (
{title} @@ -15,9 +14,9 @@ export const Header = React.memo(({ title }: { title: string }) => {
); -}); +}; -const Rectangles = React.memo(() => { +const Rectangles = () => { return (
@@ -26,4 +25,4 @@ const Rectangles = React.memo(() => {
); -}); +}; diff --git a/frontend/src/components/ui/accordion/accordion.tsx b/frontend/src/components/ui/accordion/accordion.tsx index ed43d68a..2288af9c 100644 --- a/frontend/src/components/ui/accordion/accordion.tsx +++ b/frontend/src/components/ui/accordion/accordion.tsx @@ -1,5 +1,5 @@ -import { SlDetails } from "@shoelace-style/shoelace/dist/react"; import { ChevronDownIcon } from "@/components/ui/icons"; +import { SlDetails } from "@shoelace-style/shoelace/dist/react"; import "./accordion.css"; type AccordionProps = { diff --git a/frontend/src/components/ui/animated-beam/animated-beam.tsx b/frontend/src/components/ui/animated-beam/animated-beam.tsx index 94133808..c03506ca 100644 --- a/frontend/src/components/ui/animated-beam/animated-beam.tsx +++ b/frontend/src/components/ui/animated-beam/animated-beam.tsx @@ -1,10 +1,9 @@ +import { cn } from "@/utils"; +import { motion } from "framer-motion"; +import { RefObject, useEffect, useId, useState } from "react"; // Reference - https://magicui.design/docs/components/animated-beam // Accessed on 19/09/2024. -import { RefObject, useEffect, useId, useState } from "react"; -import { motion } from "framer-motion"; -import { cn } from "@/utils"; - type AnimatedBeamProps = { className?: string; containerRef: RefObject; diff --git a/frontend/src/components/ui/badge/badge.tsx b/frontend/src/components/ui/badge/badge.tsx index 9174a218..ab76b0b0 100644 --- a/frontend/src/components/ui/badge/badge.tsx +++ b/frontend/src/components/ui/badge/badge.tsx @@ -1,5 +1,5 @@ -import { TBadgeVariants } from "@/types"; import { cn } from "@/utils"; +import { TBadgeVariants } from "@/types"; type BadgeProps = { variant: TBadgeVariants; diff --git a/frontend/src/components/ui/banner/banner.tsx b/frontend/src/components/ui/banner/banner.tsx index f8ef176c..693c0bc1 100644 --- a/frontend/src/components/ui/banner/banner.tsx +++ b/frontend/src/components/ui/banner/banner.tsx @@ -1,8 +1,8 @@ -import { API_ENDPOINTS, apiClient } from "@/services"; -import { useQuery } from "@tanstack/react-query"; -import { useMemo, useState } from "react"; import Markdown from "react-markdown"; import remarkGfm from "remark-gfm"; +import { API_ENDPOINTS, apiClient } from "@/services"; +import { useQuery } from "@tanstack/react-query"; +import { useState } from "react"; type TBannerResponse = { start_date: string; @@ -27,28 +27,23 @@ const Banner = () => { setIsBannerVisible(false); }; - const banner = useMemo( - () => ( -
- - {data?.[0]?.message} - - -
- ), - [data], - ); - if (!isBannerVisible || isError || data?.length === 0 || isLoading) { return null; } - return banner; + return ( +
+ + {data?.[0]?.message} + + +
+ ); }; export default Banner; diff --git a/frontend/src/components/ui/button/back-button.tsx b/frontend/src/components/ui/button/back-button.tsx index 35ff2e37..5754a419 100644 --- a/frontend/src/components/ui/button/back-button.tsx +++ b/frontend/src/components/ui/button/back-button.tsx @@ -1,5 +1,5 @@ -import { useNavigate } from "react-router-dom"; import { ArrowBackIcon } from "@/components/ui/icons"; +import { useNavigate } from "react-router-dom"; const BackButton = ({ className }: { className?: string }) => { const navigate = useNavigate(); diff --git a/frontend/src/components/ui/button/button.tsx b/frontend/src/components/ui/button/button.tsx index b0a1fef3..f528c618 100644 --- a/frontend/src/components/ui/button/button.tsx +++ b/frontend/src/components/ui/button/button.tsx @@ -1,9 +1,9 @@ +import useScreenSize from "@/hooks/use-screen-size"; +import { ButtonSize, ButtonVariant } from "@/types"; +import { cn } from "@/utils"; import { SlButton } from "@shoelace-style/shoelace/dist/react"; -import "./button.css"; import { Spinner } from "@/components/ui/spinner"; -import { cn } from "@/utils"; -import { ButtonSize, ButtonVariant } from "@/types"; -import useScreenSize from "@/hooks/use-screen-size"; +import "./button.css"; type ButtonProps = { children: React.ReactNode; diff --git a/frontend/src/components/ui/button/icon-button.tsx b/frontend/src/components/ui/button/icon-button.tsx index dd72ba8b..dad918dd 100644 --- a/frontend/src/components/ui/button/icon-button.tsx +++ b/frontend/src/components/ui/button/icon-button.tsx @@ -1,5 +1,5 @@ -import { ButtonSize, ButtonVariant } from "@/types"; import { Button } from "@/components/ui/button"; +import { ButtonSize, ButtonVariant } from "@/types"; import { cn } from "@/utils"; type ButtonWithIconProps = { @@ -8,7 +8,7 @@ type ButtonWithIconProps = { variant: ButtonVariant; prefixIcon?: React.ElementType; suffixIcon?: React.ElementType; - + textClassName?: string; className?: string; iconClassName?: string; disabled?: boolean; @@ -26,6 +26,7 @@ const ButtonWithIcon: React.FC = ({ disabled, size, uppercase, + textClassName, }) => { return (
@@ -38,7 +39,7 @@ const ButtonWithIcon: React.FC = ({ uppercase={uppercase} > {PrefixIcon && } -

{label}

+

{label}

{SuffixIcon && }
diff --git a/frontend/src/components/ui/dialog/dialog.css b/frontend/src/components/ui/dialog/dialog.css index 80bd3743..899f4af4 100644 --- a/frontend/src/components/ui/dialog/dialog.css +++ b/frontend/src/components/ui/dialog/dialog.css @@ -1,8 +1,14 @@ sl-dialog::part(title) { - font-size: var(--hot-fair-font-size-title-3); + font-size: var(--hot-fair-font-size-title-4); font-weight: var(--hot-fair-font-weight-semibold); } sl-dialog.primary::part(title) { color: var(--hot-fair-color-primary); } + +@media (min-width: 768px) { + sl-dialog::part(title) { + font-size: var(--hot-fair-font-size-title-3); + } +} diff --git a/frontend/src/components/ui/dialog/dialog.tsx b/frontend/src/components/ui/dialog/dialog.tsx index f3b91c44..67f2a962 100644 --- a/frontend/src/components/ui/dialog/dialog.tsx +++ b/frontend/src/components/ui/dialog/dialog.tsx @@ -1,7 +1,7 @@ +import useScreenSize from "@/hooks/use-screen-size"; +import { SHOELACE_SIZES } from "@/enums"; import { SlDialog } from "@shoelace-style/shoelace/dist/react"; import "./dialog.css"; -import { SHOELACE_SIZES } from "@/enums"; -import useScreenSize from "@/hooks/use-screen-size"; type DialogProps = { label: string; @@ -25,6 +25,7 @@ const Dialog: React.FC = ({ event.preventDefault(); } } + const { isMobile, isTablet, isLaptop } = useScreenSize(); const size = diff --git a/frontend/src/components/ui/drawer/drawer.tsx b/frontend/src/components/ui/drawer/drawer.tsx index ef1577e5..7dec64ab 100644 --- a/frontend/src/components/ui/drawer/drawer.tsx +++ b/frontend/src/components/ui/drawer/drawer.tsx @@ -1,6 +1,6 @@ +import { DrawerPlacements } from "@/enums"; import { SlDrawer } from "@shoelace-style/shoelace/dist/react"; import "./drawer.css"; -import { DrawerPlacements } from "@/enums"; type DrawerProps = { open: boolean; diff --git a/frontend/src/components/ui/drawer/index.ts b/frontend/src/components/ui/drawer/index.ts index d76109c7..9040e68b 100644 --- a/frontend/src/components/ui/drawer/index.ts +++ b/frontend/src/components/ui/drawer/index.ts @@ -1 +1,2 @@ export { default as Drawer } from "./drawer"; +export { MobileDrawer } from "./mobile-drawer"; diff --git a/frontend/src/components/ui/drawer/mobile-drawer.tsx b/frontend/src/components/ui/drawer/mobile-drawer.tsx new file mode 100644 index 00000000..0ad91949 --- /dev/null +++ b/frontend/src/components/ui/drawer/mobile-drawer.tsx @@ -0,0 +1,71 @@ +import React, { useState } from "react"; +import { cn } from "@/utils"; +import { Drawer } from "vaul"; + +export const MobileDrawer = ({ + open, + children, + dialogTitle, + canClose = false, + closeDrawer, + snapPoints = [0.2, 0.5, 0.8], +}: { + open: boolean; + children: React.ReactNode; + dialogTitle: string; + closeDrawer?: () => void; + canClose?: boolean; + startingSnapPoint?: number | string; + snapPoints?: number[]; +}) => { + const [snap, setSnap] = useState(snapPoints[0]); + const lastSnapPoint = snapPoints[snapPoints.length - 1]; + + return ( + + + + + {canClose ? ( + + + {" "} + ✕ + + + ) : null} + + +
+
+ {children} +
+ + + + ); +}; diff --git a/frontend/src/components/ui/dropdown/dropdown.css b/frontend/src/components/ui/dropdown/dropdown.css index 1af51f4a..650f6bc2 100644 --- a/frontend/src/components/ui/dropdown/dropdown.css +++ b/frontend/src/components/ui/dropdown/dropdown.css @@ -6,6 +6,7 @@ sl-menu-item::part(base) { color: var(--hot-fair-color-dark); background-color: var(--hot-fair-color-white); + font-size: var(--hot-fair-font-size-body-text-3); } sl-menu-item::part(base):hover { @@ -16,10 +17,6 @@ sl-menu-item.logoutButton::part(base) { color: var(--hot-fair-color-primary); } -sl-menu-item.small::part(base) { - font-size: var(--hot-fair-font-size-body-text-3); -} - /* Checkbox customization */ sl-checkbox::part(control) { diff --git a/frontend/src/components/ui/dropdown/dropdown.tsx b/frontend/src/components/ui/dropdown/dropdown.tsx index a4edd895..9b0591d4 100644 --- a/frontend/src/components/ui/dropdown/dropdown.tsx +++ b/frontend/src/components/ui/dropdown/dropdown.tsx @@ -1,11 +1,12 @@ +import { ChevronDownIcon } from "@/components/ui/icons"; +import { cn } from "@/utils"; +import { DropdownPlacement } from "@/enums"; +import { SlCheckbox } from "@shoelace-style/shoelace/dist/react"; import { SlDropdown } from "@shoelace-style/shoelace/dist/react"; import { SlMenu } from "@shoelace-style/shoelace/dist/react"; import { SlMenuItem } from "@shoelace-style/shoelace/dist/react"; -import { SlCheckbox } from "@shoelace-style/shoelace/dist/react"; -import "./dropdown.css"; -import { ChevronDownIcon } from "@/components/ui/icons"; import { useEffect, useState } from "react"; -import { cn } from "@/utils"; +import "./dropdown.css"; export type DropdownMenuItem = { value: string; @@ -17,7 +18,7 @@ export type DropdownMenuItem = { }; type DropDownProps = { - placement?: "bottom-end" | "top-end" | "bottom-start"; + placement?: DropdownPlacement; children?: React.ReactNode; onDropdownShow?: (event: React.MouseEvent) => void; onDropdownHide?: (event: React.MouseEvent) => void; @@ -29,7 +30,7 @@ type DropDownProps = { withCheckbox?: boolean; defaultSelectedItems?: string[]; defaultSelectedItem?: string; - menuItemTextSize?: "default" | "small"; + multiSelect?: boolean; triggerComponent: React.ReactNode; distance?: number; @@ -39,7 +40,7 @@ type DropDownProps = { const DropDown: React.FC = ({ children, menuItems, - placement = "bottom-start", + placement = DropdownPlacement.BOTTOM_START, onDropdownHide, onDropdownShow, dropdownIsOpened, @@ -50,7 +51,7 @@ const DropDown: React.FC = ({ defaultSelectedItems = [], defaultSelectedItem = "", multiSelect = false, - menuItemTextSize = "default", + triggerComponent, distance = 20, disableCheveronIcon = false, @@ -121,14 +122,18 @@ const DropDown: React.FC = ({ /> )}
-
+
{menuItems && menuItems.length > 0 ? ( {menuItems?.map((menuItem, id) => ( diff --git a/frontend/src/components/ui/footer/index.ts b/frontend/src/components/ui/footer/index.ts deleted file mode 100644 index a357e420..00000000 --- a/frontend/src/components/ui/footer/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as Footer } from "./footer"; diff --git a/frontend/src/components/ui/form/checkbox-group/checkbox-group.tsx b/frontend/src/components/ui/form/checkbox-group/checkbox-group.tsx index 3007a59d..2c980bee 100644 --- a/frontend/src/components/ui/form/checkbox-group/checkbox-group.tsx +++ b/frontend/src/components/ui/form/checkbox-group/checkbox-group.tsx @@ -1,8 +1,8 @@ import { cn } from "@/utils"; +import { SHOELACE_SIZES } from "@/enums"; import { SlCheckbox } from "@shoelace-style/shoelace/dist/react/index.js"; import { useEffect, useState } from "react"; import "./checkbox-group.css"; -import { SHOELACE_SIZES } from "@/enums"; type CheckboxGroupProps = { options: { @@ -79,9 +79,8 @@ const CheckboxGroup: React.FC = ({ onSlChange={(e) => { e.preventDefault(); e.stopPropagation(); - //@ts-expect-error bad type definition - const selectedValue = String(e.target.value); - handleCheckboxChange(selectedValue); + const target = e.target as HTMLInputElement; + handleCheckboxChange(target.value); }} > {option.value} diff --git a/frontend/src/components/ui/form/date-picker/date-picker.tsx b/frontend/src/components/ui/form/date-picker/date-picker.tsx index eeff3480..3323a3a2 100644 --- a/frontend/src/components/ui/form/date-picker/date-picker.tsx +++ b/frontend/src/components/ui/form/date-picker/date-picker.tsx @@ -1,7 +1,7 @@ -import { Button } from "@/components/ui/button"; import Input from "@/components/ui/form/input/input"; -import { INPUT_TYPES, SHOELACE_SIZES } from "@/enums"; +import { Button } from "@/components/ui/button"; import { cn } from "@/utils"; +import { INPUT_TYPES, SHOELACE_SIZES } from "@/enums"; type DateRangePickerProps = { startDate: string; diff --git a/frontend/src/components/ui/form/input/input.module.css b/frontend/src/components/ui/form/input/input.module.css index 54eb9269..678a2e9d 100644 --- a/frontend/src/components/ui/form/input/input.module.css +++ b/frontend/src/components/ui/form/input/input.module.css @@ -21,10 +21,10 @@ sl-input.customInput::part(form-control-input):focus { sl-input.customInput::part(input)::placeholder { color: var(--hot-fair-color-gray); - font-size: var(--hot-fair-font-size-body-text-2base); + font-size: var(--hot-fair-font-size-body-text-3); } sl-input::part(input) { color: var(--hot-fair-color-dark); - font-size: var(--hot-fair-font-size-body-text-2base); + font-size: var(--hot-fair-font-size-body-text-3); } diff --git a/frontend/src/components/ui/form/input/input.tsx b/frontend/src/components/ui/form/input/input.tsx index 1926618a..77146a6d 100644 --- a/frontend/src/components/ui/form/input/input.tsx +++ b/frontend/src/components/ui/form/input/input.tsx @@ -1,12 +1,12 @@ -import { SlInput } from "@shoelace-style/shoelace/dist/react"; import styles from "./input.module.css"; -import { CalenderIcon } from "@/components/ui/icons"; import useBrowserType from "@/hooks/use-browser-type"; -import { useRef } from "react"; import useScreenSize from "@/hooks/use-screen-size"; -import { HelpText, FormLabel } from "@/components/ui/form"; +import { CalenderIcon } from "@/components/ui/icons"; import { CheckIcon } from "@/components/ui/icons"; +import { FormLabel, HelpText } from "@/components/ui/form"; import { INPUT_TYPES, SHOELACE_SIZES } from "@/enums"; +import { SlInput } from "@shoelace-style/shoelace/dist/react"; +import { useRef } from "react"; type InputProps = { handleInput: (arg: React.ChangeEvent) => void; diff --git a/frontend/src/components/ui/form/select/select.css b/frontend/src/components/ui/form/select/select.css index 205d8bbc..2a8359fc 100644 --- a/frontend/src/components/ui/form/select/select.css +++ b/frontend/src/components/ui/form/select/select.css @@ -8,3 +8,17 @@ sl-select::part(display-input) { color: var(--hot-fair-color-dark); font-size: var(--hot-fair-font-size-body-text-3); } + +sl-select::part(listbox) { + color: var(--hot-fair-color-dark); + font-size: var(--hot-fair-font-size-body-text-3); +} + +sl-option::part(base) { + flex-wrap: wrap; +} + +sl-option::part(suffix) { + padding: 0 12px; + width: 100%; +} diff --git a/frontend/src/components/ui/form/select/select.tsx b/frontend/src/components/ui/form/select/select.tsx index 4e6fd985..17446b8e 100644 --- a/frontend/src/components/ui/form/select/select.tsx +++ b/frontend/src/components/ui/form/select/select.tsx @@ -1,8 +1,9 @@ -import { SlOption, SlSelect } from "@shoelace-style/shoelace/dist/react"; import useScreenSize from "@/hooks/use-screen-size"; -import { HelpText, FormLabel } from "@/components/ui/form"; +import { FormLabel, HelpText } from "@/components/ui/form"; +import { SHOELACE_SELECT_SIZES } from "@/enums"; +import { SlOption, SlSelect } from "@shoelace-style/shoelace/dist/react"; +import { TShoelaceSize } from "@/types"; import "./select.css"; -import { SHOELACE_SIZES } from "@/enums"; type SelectProps = { label?: string; @@ -16,9 +17,9 @@ type SelectProps = { suffix?: string; }[]; defaultValue: string | number; - handleChange: (e: React.ChangeEvent) => void; + handleChange: (value: number | string) => void; required?: boolean; - size?: SHOELACE_SIZES | undefined; + size?: TShoelaceSize | undefined; className?: string; }; @@ -36,20 +37,27 @@ const Select: React.FC = ({ className = "", }) => { const { isMobile } = useScreenSize(); + + const getSize = (): TShoelaceSize => { + if (size) return size; + return isMobile + ? SHOELACE_SELECT_SIZES.MEDIUM + : SHOELACE_SELECT_SIZES.LARGE; + }; + return ( { - e.preventDefault(); - e.stopImmediatePropagation(); e.stopPropagation(); - //@ts-expect-error bad type definition - handleChange(e); + e.stopImmediatePropagation(); + e.preventDefault(); + const target = e.target as HTMLSelectElement | null; + if (target) { + handleChange(target.value); + } }} className={className} > @@ -63,13 +71,11 @@ const Select: React.FC = ({ )} {helpText && } {options?.map((option, id) => ( - - {option.name} - {option.suffix} + + {option.name} + + {option.suffix} + ))} diff --git a/frontend/src/components/ui/form/switch/switch.tsx b/frontend/src/components/ui/form/switch/switch.tsx index 330f8028..33761aff 100644 --- a/frontend/src/components/ui/form/switch/switch.tsx +++ b/frontend/src/components/ui/form/switch/switch.tsx @@ -1,6 +1,6 @@ -import { SlSwitch } from "@shoelace-style/shoelace/dist/react"; import styles from "./switch.module.css"; import { cn } from "@/utils"; +import { SlSwitch } from "@shoelace-style/shoelace/dist/react"; type SwitchProps = { disabled?: boolean; diff --git a/frontend/src/components/ui/form/text-area/text-area.css b/frontend/src/components/ui/form/text-area/text-area.css index 6329ed1e..c9e17b60 100644 --- a/frontend/src/components/ui/form/text-area/text-area.css +++ b/frontend/src/components/ui/form/text-area/text-area.css @@ -7,10 +7,10 @@ sl-textarea::part(base) { sl-textarea::part(textarea)::placeholder { color: var(--hot-fair-color-gray); - font-size: var(--hot-fair-font-size-body-text-2base); + font-size: var(--hot-fair-font-size-body-text-3); } sl-textarea::part(textarea) { color: var(--hot-fair-color-dark); - font-size: var(--hot-fair-font-size-body-text-2base); + font-size: var(--hot-fair-font-size-body-text-3); } diff --git a/frontend/src/components/ui/form/text-area/text-area.tsx b/frontend/src/components/ui/form/text-area/text-area.tsx index 42d6ad46..5a27051c 100644 --- a/frontend/src/components/ui/form/text-area/text-area.tsx +++ b/frontend/src/components/ui/form/text-area/text-area.tsx @@ -1,6 +1,6 @@ +import { FormLabel, HelpText } from "@/components/ui/form"; import { SlTextarea } from "@shoelace-style/shoelace/dist/react"; import "./text-area.css"; -import { HelpText, FormLabel } from "@/components/ui/form"; type TextAreaProps = { toolTipContent?: string; diff --git a/frontend/src/components/ui/icons/arrow-move-icon.tsx b/frontend/src/components/ui/icons/arrow-move-icon.tsx new file mode 100644 index 00000000..d614921a --- /dev/null +++ b/frontend/src/components/ui/icons/arrow-move-icon.tsx @@ -0,0 +1,16 @@ +import { IconProps } from "@/types"; +import React from "react"; + +export const ArrowMoveIcon: React.FC = (props) => ( + + + +); diff --git a/frontend/src/components/ui/icons/index.ts b/frontend/src/components/ui/icons/index.ts index 761e1c26..7d5eed6a 100644 --- a/frontend/src/components/ui/icons/index.ts +++ b/frontend/src/components/ui/icons/index.ts @@ -54,3 +54,5 @@ export { BookTemplateIcon } from "./book-template-icon"; export { YouTubePlayCircleIcon } from "./youtube-play-circle-icon"; export { CheckIcon } from "./check-icon"; export { DesktopFlowIcon } from "./desktop-flow-icon"; +export { NoTrainingAreaIcon } from "./no-training-area-icon"; +export { ArrowMoveIcon } from "./arrow-move-icon"; diff --git a/frontend/src/components/ui/icons/no-training-area-icon.tsx b/frontend/src/components/ui/icons/no-training-area-icon.tsx new file mode 100644 index 00000000..2922961d --- /dev/null +++ b/frontend/src/components/ui/icons/no-training-area-icon.tsx @@ -0,0 +1,30 @@ +import { IconProps } from "@/types"; + +export const NoTrainingAreaIcon: React.FC = (props) => ( + + + + + +); diff --git a/frontend/src/components/ui/link/link.tsx b/frontend/src/components/ui/link/link.tsx index a416ff2e..e42466f5 100644 --- a/frontend/src/components/ui/link/link.tsx +++ b/frontend/src/components/ui/link/link.tsx @@ -1,5 +1,5 @@ -import { cn } from "@/utils"; import styles from "./link.module.css"; +import { cn } from "@/utils"; import { Link as ReactRouterLink } from "react-router-dom"; type LinkProps = { diff --git a/frontend/src/components/ui/navbar/index.ts b/frontend/src/components/ui/navbar/index.ts deleted file mode 100644 index e64cf5f4..00000000 --- a/frontend/src/components/ui/navbar/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as NavBar } from "./navbar"; -export { default as UserProfile } from "./user-profile"; -export { default as NavLogo } from "./nav-logo"; diff --git a/frontend/src/components/ui/navbar/nav-logo.tsx b/frontend/src/components/ui/navbar/nav-logo.tsx deleted file mode 100644 index 7096a6b8..00000000 --- a/frontend/src/components/ui/navbar/nav-logo.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { APP_CONTENT, APPLICATION_ROUTES } from "@/utils"; -import { Image } from "@/components/ui/image"; -import HOTFairLogo from "@/assets/svgs/hot_fair_logo.svg"; -import { useNavigate } from "react-router-dom"; - -const NavLogo = ({ - onClick, - width = "125px", - height = "72px", -}: { - onClick?: () => void; - width?: string; - height?: string; -}) => { - const navigate = useNavigate(); - const handleClick = () => { - onClick ? onClick() : navigate(APPLICATION_ROUTES.HOMEPAGE); - }; - return ( - - ); -}; - -export default NavLogo; diff --git a/frontend/src/components/ui/navbar/navbar.tsx b/frontend/src/components/ui/navbar/navbar.tsx index fe2448c0..9a5b2bd9 100644 --- a/frontend/src/components/ui/navbar/navbar.tsx +++ b/frontend/src/components/ui/navbar/navbar.tsx @@ -1,19 +1,19 @@ +import styles from "@/components/layouts/navbar/navbar.module.css"; +import { APPLICATION_ROUTES, SHARED_CONTENT } from "@/constants"; import { Button } from "@/components/ui/button"; -import styles from "@/components/ui/navbar/navbar.module.css"; -import HamburgerIcon from "@/assets/svgs/hamburger_icon.svg"; import { Drawer } from "@/components/ui/drawer"; -import { useState } from "react"; -import { Link } from "@/components/ui/link"; +import { DrawerPlacements } from "@/enums"; +import { HamburgerIcon } from "@/assets/svgs"; import { Image } from "@/components/ui/image"; -import { APP_CONTENT, APPLICATION_ROUTES } from "@/utils"; +import { Link } from "@/components/ui/link"; +import { NavLogo } from "@/components/layout"; import { useAuth } from "@/app/providers/auth-provider"; -import UserProfile from "@/components/ui/navbar/user-profile"; -import { useLogin } from "@/hooks/use-login"; import { useLocation } from "react-router-dom"; -import NavLogo from "./nav-logo"; -import { DrawerPlacements } from "@/enums"; +import { useLogin } from "@/hooks/use-login"; +import { UserProfile } from "@/components/layout"; +import { useState } from "react"; -const NavBar = () => { +export const NavBar = () => { const [open, setOpen] = useState(false); const { isAuthenticated } = useAuth(); const { handleLogin, loading } = useLogin(); @@ -40,8 +40,8 @@ const NavBar = () => { ) : ( )}
@@ -65,16 +65,16 @@ const NavBar = () => { spinner={loading} > {loading - ? APP_CONTENT.loginButtonLoading - : APP_CONTENT.navbar.loginButton} + ? SHARED_CONTENT.loginButtonLoading + : SHARED_CONTENT.navbar.loginButton} )}
- {/* Removed ProgressBar */} + - - ); - }); - }, [acceptedFiles, disabled, uploadInProgress]); + + + ); + }); return ( = ({ <>

{ - MODEL_CREATION_CONTENT.trainingArea.fileUploadDialog + MODELS_CONTENT.modelCreation.trainingArea.fileUploadDialog .mainInstruction }

{ - MODEL_CREATION_CONTENT.trainingArea.fileUploadDialog + MODELS_CONTENT.modelCreation.trainingArea.fileUploadDialog .fleSizeInstruction } {!disableFileSizeValidation && ( { - MODEL_CREATION_CONTENT.trainingArea.fileUploadDialog + MODELS_CONTENT.modelCreation.trainingArea.fileUploadDialog .aoiAreaInstruction } @@ -277,7 +333,7 @@ const FileUploadDialog: React.FC = ({ ) : ( - MODEL_CREATION_CONTENT.trainingArea.form.upload + MODELS_CONTENT.modelCreation.trainingArea.form.upload )} diff --git a/frontend/src/features/model-creation/components/model-details/model-description-input.tsx b/frontend/src/features/model-creation/components/model-details/model-description-input.tsx index b1c40a7e..00a99a49 100644 --- a/frontend/src/features/model-creation/components/model-details/model-description-input.tsx +++ b/frontend/src/features/model-creation/components/model-details/model-description-input.tsx @@ -1,9 +1,9 @@ +import { MODELS_CONTENT } from "@/constants"; +import { TextArea } from "@/components/ui/form"; import { FORM_VALIDATION_CONFIG, MODEL_CREATION_FORM_NAME, } from "@/app/providers/models-provider"; -import { TextArea } from "@/components/ui/form"; -import { MODEL_CREATION_CONTENT } from "@/utils"; const ModelDescriptionFormInput = ({ handleChange, @@ -15,16 +15,19 @@ const ModelDescriptionFormInput = ({ return (