diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..7c5adfb --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,10 @@ +{ + "permissions": { + "allow": [ + "Bash(yarn add:*)", + "Bash(mkdir:*)" + ], + "deny": [], + "ask": [] + } +} diff --git a/TUTORIAL_README.md b/TUTORIAL_README.md new file mode 100644 index 0000000..f8ae5bf --- /dev/null +++ b/TUTORIAL_README.md @@ -0,0 +1,223 @@ +# 📚 SystĂšme de Tutoriel Flowsint + +SystĂšme de tutoriel global basĂ© sur **React Joyride**, intĂ©grĂ© avec **TanStack Router**. + +## ✅ Installation complĂšte + +Le systĂšme est dĂ©jĂ  installĂ© et configurĂ© : + +```bash +✓ react-joyride installĂ© +✓ TutorialProvider intĂ©grĂ© dans main.tsx +✓ Structure de fichiers créée +``` + +## 📁 Structure + +``` +src/components/tutorial/ +├── tutorial-provider.tsx # Provider React + logique Joyride +├── use-tutorial.ts # Hook pour contrĂŽler le tutoriel +├── tutorial-steps.ts # Configuration des Ă©tapes par route +└── index.ts # Exports +``` + +## 🚀 Utilisation + +### 1. Ajouter des Ă©tapes pour une route + +Éditez `src/components/tutorial/tutorial-steps.ts` : + +```typescript +export const tutorialSteps: Record = { + '/ma-route': [ + { + target: '[data-tour-id="mon-element"]', + content: 'Description de l\'Ă©lĂ©ment', + disableBeacon: true, // DĂ©marre sans animation initiale + }, + { + target: '[data-tour-id="autre-element"]', + content: 'Autre description', + }, + ], +}; +``` + +### 2. Annoter vos composants + +Ajoutez `data-tour-id` aux Ă©lĂ©ments cibles : + +```tsx +
+ +
+ + +``` + +### 3. Ajouter un bouton d'aide (optionnel) + +```tsx +import { useTutorial } from '@/components/tutorial'; + +function MyPage() { + const { startTutorial } = useTutorial(); + + return ( +
+ + {/* Votre contenu */} +
+ ); +} +``` + +## 🎯 FonctionnalitĂ©s + +- ✅ **DĂ©tection automatique** : Le tutoriel se lance Ă  la premiĂšre visite d'une route +- ✅ **Persistance** : Historique sauvegardĂ© dans `localStorage` +- ✅ **Multi-routes** : Chaque page a ses propres Ă©tapes +- ✅ **ContrĂŽle manuel** : Hook `useTutorial()` pour contrĂŽler le tutoriel +- ✅ **Traduction FR** : Boutons et textes en français +- ✅ **Style personnalisable** : Couleurs et thĂšme configurables + +## 🔧 API du hook + +```tsx +const { + startTutorial, // DĂ©marre le tutoriel pour la route actuelle + stopTutorial, // ArrĂȘte le tutoriel + resetTutorial, // Efface l'historique (force la revisite) + isRunning, // État du tutoriel (boolean) +} = useTutorial(); +``` + +## 📝 Exemple complet + +Voir `TUTORIAL_EXAMPLE.tsx` pour des exemples dĂ©taillĂ©s. + +### Page avec tutoriel + +```tsx +import { useTutorial } from '@/components/tutorial'; + +export function GraphPage() { + const { startTutorial } = useTutorial(); + + return ( +
+ + +
Barre d'outils
+
Menu latéral
+
Canvas principal
+
+ ); +} +``` + +### Configuration des Ă©tapes + +```typescript +// src/components/tutorial/tutorial-steps.ts +export const tutorialSteps = { + '/graph/$id': [ + { + target: '[data-tour-id="toolbar"]', + content: 'Voici la barre d\'outils', + disableBeacon: true, + }, + { + target: '[data-tour-id="sidebar"]', + content: 'Le panneau latĂ©ral affiche vos sources', + }, + { + target: '[data-tour-id="canvas"]', + content: 'Le canvas affiche votre graphe', + }, + ], +}; +``` + +## 🎹 Personnalisation + +### Modifier le style + +Dans `tutorial-provider.tsx`, ligne 100+ : + +```tsx + +``` + +### DĂ©lai de dĂ©marrage + +Ligne 77 du `tutorial-provider.tsx` : + +```tsx +setTimeout(() => { + setRun(true); +}, 500); // Modifier le dĂ©lai (ms) +``` + +## 📊 ClĂ© localStorage + +Le systĂšme utilise `flowsint-tutorial-completed` pour stocker les routes visitĂ©es. + +### RĂ©initialiser manuellement + +```tsx +const { resetTutorial } = useTutorial(); +resetTutorial(); // Efface tout l'historique +``` + +Ou via console : + +```javascript +localStorage.removeItem('flowsint-tutorial-completed'); +``` + +## 🔍 DĂ©bogage + +### Le tutoriel ne se lance pas ? + +1. VĂ©rifiez que la route est dans `tutorialSteps.ts` +2. VĂ©rifiez que les `data-tour-id` correspondent +3. VĂ©rifiez que les Ă©lĂ©ments sont montĂ©s dans le DOM (dĂ©lai de 500ms configurĂ©) +4. Consultez la console pour les erreurs + +### Forcer le redĂ©marrage + +```tsx +const { resetTutorial, startTutorial } = useTutorial(); + +resetTutorial(); // Efface l'historique +startTutorial(); // Relance immĂ©diatement +``` + +## 📚 Documentation React Joyride + +https://docs.react-joyride.com/ + +## đŸ€ Contribuer + +Pour ajouter des Ă©tapes Ă  une nouvelle page : + +1. Ajouter la route dans `tutorial-steps.ts` +2. Annoter les Ă©lĂ©ments avec `data-tour-id` +3. Tester en visitant la page (effacer localStorage si besoin) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index c1c17e7..9d89bd5 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -30,7 +30,7 @@ services: POSTGRES_PASSWORD: flowsint POSTGRES_DB: flowsint ports: - - "5433:5432" # 5433 sur l'hĂŽte pour Ă©viter conflit local + - "5433:5432" volumes: - pg_data:/var/lib/postgresql/data networks: @@ -45,7 +45,6 @@ services: networks: - flowsint_network - # Neo4j graph database neo4j: image: neo4j:5 container_name: flowsint-neo4j @@ -67,7 +66,6 @@ services: networks: - flowsint_network - # Flowsint frontend app (production) flowsint-app: build: context: ./flowsint-app diff --git a/dynamic.yml b/dynamic.yml deleted file mode 100644 index 76240ea..0000000 --- a/dynamic.yml +++ /dev/null @@ -1,6 +0,0 @@ -tls: - certificates: - - certFile: '/etc/traefik/certs/localhost.flowsint.*.cert.pem' - keyFile: '/etc/traefik/certs/localhost.flowsint.*.key.pem' - stores: - - default diff --git a/flowsint-app/package.json b/flowsint-app/package.json index b6bfff9..032723e 100644 --- a/flowsint-app/package.json +++ b/flowsint-app/package.json @@ -96,6 +96,7 @@ "react-force-graph-2d": "^1.27.1", "react-force-graph-3d": "^1.26.1", "react-hook-form": "^7.56.4", + "react-joyride": "^2.9.3", "react-markdown": "^10.1.0", "react-medium-image-zoom": "^5.2.14", "react-resizable-panels": "^3.0.2", diff --git a/flowsint-app/src/components/tutorial/index.ts b/flowsint-app/src/components/tutorial/index.ts new file mode 100644 index 0000000..baf1d84 --- /dev/null +++ b/flowsint-app/src/components/tutorial/index.ts @@ -0,0 +1,3 @@ +export { TutorialProvider } from './tutorial-provider'; +export { useTutorial } from './use-tutorial'; +export { tutorialSteps, getStepsForRoute, hasStepsForRoute } from './tutorial-steps'; diff --git a/flowsint-app/src/components/tutorial/tutorial-provider.tsx b/flowsint-app/src/components/tutorial/tutorial-provider.tsx new file mode 100644 index 0000000..d30e90b --- /dev/null +++ b/flowsint-app/src/components/tutorial/tutorial-provider.tsx @@ -0,0 +1,127 @@ +import React, { createContext, useCallback, useEffect, useState } from 'react'; +import Joyride, { CallBackProps, STATUS, Step } from 'react-joyride'; +import { useLocation } from '@tanstack/react-router'; +import { getStepsForRoute } from './tutorial-steps'; + +interface TutorialContextValue { + startTutorial: () => void; + stopTutorial: () => void; + resetTutorial: () => void; + isRunning: boolean; +} + +export const TutorialContext = createContext(null); + +const STORAGE_KEY = 'flowsint-tutorial-completed'; + +interface TutorialProviderProps { + children: React.ReactNode; +} + +export function TutorialProvider({ children }: TutorialProviderProps) { + const location = useLocation(); + const [run, setRun] = useState(false); + const [steps, setSteps] = useState([]); + const [stepIndex, setStepIndex] = useState(0); + + const getCompletedRoutes = useCallback((): Set => { + try { + const stored = localStorage.getItem(STORAGE_KEY); + return stored ? new Set(JSON.parse(stored)) : new Set(); + } catch { + return new Set(); + } + }, []); + + const markRouteAsCompleted = useCallback((route: string) => { + const completed = getCompletedRoutes(); + completed.add(route); + localStorage.setItem(STORAGE_KEY, JSON.stringify([...completed])); + }, [getCompletedRoutes]); + + const startTutorial = useCallback(() => { + const currentPath = location.pathname; + const routeSteps = getStepsForRoute(currentPath); + + if (routeSteps.length > 0) { + setSteps(routeSteps); + setStepIndex(0); + setRun(true); + } + }, [location.pathname]); + + const stopTutorial = useCallback(() => { + setRun(false); + }, []); + + const resetTutorial = useCallback(() => { + localStorage.removeItem(STORAGE_KEY); + setRun(false); + setSteps([]); + setStepIndex(0); + }, []); + + useEffect(() => { + const currentPath = location.pathname; + const routeSteps = getStepsForRoute(currentPath); + + if (routeSteps.length > 0) { + const completed = getCompletedRoutes(); + + if (!completed.has(currentPath)) { + setSteps(routeSteps); + setStepIndex(0); + setTimeout(() => { + setRun(true); + }, 500); + } + } else { + setRun(false); + } + }, [location.pathname, getCompletedRoutes]); + + const handleJoyrideCallback = useCallback((data: CallBackProps) => { + const { status } = data; + const finishedStatuses: string[] = [STATUS.FINISHED, STATUS.SKIPPED]; + + if (finishedStatuses.includes(status)) { + setRun(false); + markRouteAsCompleted(location.pathname); + } + }, [location.pathname, markRouteAsCompleted]); + + const contextValue: TutorialContextValue = { + startTutorial, + stopTutorial, + resetTutorial, + isRunning: run, + }; + + return ( + + + {children} + + ); +} diff --git a/flowsint-app/src/components/tutorial/tutorial-steps.ts b/flowsint-app/src/components/tutorial/tutorial-steps.ts new file mode 100644 index 0000000..e72add3 --- /dev/null +++ b/flowsint-app/src/components/tutorial/tutorial-steps.ts @@ -0,0 +1,87 @@ +import { Step } from 'react-joyride'; + +export const tutorialSteps: Record = { + '/dashboard': [ + { + target: '[data-tour-id="welcome"]', + content: 'Welcome to Flowsint! This tutorial will guide you through the main features.', + disableBeacon: true, + }, + { + target: '[data-tour-id="navigation"]', + content: 'Use this navigation bar to access different sections.', + }, + ], + + '/dashboard/flows/$flowId': [ + { + target: '[data-tour-id="flow-sidebar"]', + content: 'Welcome to the flow editor! Use the sidebar to drag transforms into your flow.', + disableBeacon: true, + }, + { + target: '[data-tour-id="flow-canvas"]', + content: 'The canvas is your workspace. Drag and drop transforms here and connect them to create your data pipeline.', + }, + { + target: '[data-tour-id="add-type-node"]', + content: 'Start by adding a Type node to define the input data type for your flow.', + }, + { + target: '[data-tour-id="add-transform-node"]', + content: 'Then add transforms to process your data. Connect them by clicking on the connection points.', + }, + { + target: '[data-tour-id="node-params"]', + content: 'Double-click on a node or right-click to configure its parameters.', + }, + { + target: '[data-tour-id="layout-button"]', + content: 'Use the auto-layout button to organize your nodes neatly.', + }, + { + target: '[data-tour-id="save-button"]', + content: 'Save your flow to reuse and share it.', + }, + { + target: '[data-tour-id="compute-button"]', + content: 'Use the "Compute" button to simulate your flow execution and visualize the data path.', + }, + { + target: '[data-tour-id="simulation-controls"]', + content: 'Control the simulation with Pause, Skip, and Reset buttons. Adjust the speed as needed.', + }, + ], + + '/dashboard/flows': [ + { + target: '[data-tour-id="create-flow"]', + content: 'Click here to create a new data transformation flow.', + disableBeacon: true, + }, + { + target: '[data-tour-id="flow-list"]', + content: 'All your flows are listed here. Click on a flow to edit or launch it.', + }, + ], + + '/dashboard/investigations': [ + { + target: '[data-tour-id="create-investigation"]', + content: 'Start a new investigation here.', + disableBeacon: true, + }, + { + target: '[data-tour-id="investigation-list"]', + content: 'Manage your ongoing investigations and access their relationship graphs.', + }, + ], +}; + +export function hasStepsForRoute(route: string): boolean { + return route in tutorialSteps; +} + +export function getStepsForRoute(route: string): Step[] { + return tutorialSteps[route] || []; +} diff --git a/flowsint-app/src/components/tutorial/use-tutorial.ts b/flowsint-app/src/components/tutorial/use-tutorial.ts new file mode 100644 index 0000000..4392544 --- /dev/null +++ b/flowsint-app/src/components/tutorial/use-tutorial.ts @@ -0,0 +1,12 @@ +import { useContext } from 'react'; +import { TutorialContext } from './tutorial-provider'; + +export function useTutorial() { + const context = useContext(TutorialContext); + + if (!context) { + throw new Error('useTutorial must be used within TutorialProvider'); + } + + return context; +} diff --git a/flowsint-app/src/routes/__root.tsx b/flowsint-app/src/routes/__root.tsx index 42bfab5..0b9def6 100644 --- a/flowsint-app/src/routes/__root.tsx +++ b/flowsint-app/src/routes/__root.tsx @@ -3,6 +3,7 @@ import type { QueryClient } from '@tanstack/react-query' import { Toaster } from '@/components/ui/sonner' import '@/styles.css' import { useTheme } from '@/components/theme-provider' +import { TutorialProvider } from '@/components/tutorial/tutorial-provider' export interface MyRouterContext { queryClient: QueryClient @@ -12,10 +13,10 @@ export const Route = createRootRouteWithContext()({ component: () => { const { theme } = useTheme() return ( - <> + - + ) } }) diff --git a/flowsint-app/src/stores/graph-settings-store.ts b/flowsint-app/src/stores/graph-settings-store.ts index 02cfece..86d242f 100644 --- a/flowsint-app/src/stores/graph-settings-store.ts +++ b/flowsint-app/src/stores/graph-settings-store.ts @@ -7,7 +7,7 @@ const DEFAULT_SETTINGS = { general: { showFlow: { type: 'boolean', - value: true, + value: false, description: 'Display Flo, your AI assistant.' }, }, diff --git a/flowsint-app/yarn.lock b/flowsint-app/yarn.lock index d567bee..6011c9d 100644 --- a/flowsint-app/yarn.lock +++ b/flowsint-app/yarn.lock @@ -288,61 +288,6 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" -"@cosmograph/cosmograph@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@cosmograph/cosmograph/-/cosmograph-1.4.2.tgz#73956de6908e0a2b99cf78186aba3af926bb328f" - integrity sha512-kXO1IyayWUbl1IY3UCt2W9vjwmBKmChi7MBVSgKByGM5kyfRcqNbY3xCGRjUA0MYglxm1tjqCMh1DjgQkUdsEQ== - dependencies: - "@cosmograph/cosmos" "1.6.2-beta.1" - "@cosmograph/ui" "1.4.2" - "@interacta/css-labels" "^0.1.2-beta.1" - "@supabase/supabase-js" "^2.38.4" - crossfilter2 "^1.5.4" - d3-color "^3.1.0" - rollup-plugin-rename-node-modules "^1.3.1" - -"@cosmograph/cosmos@1.6.2-beta.1": - version "1.6.2-beta.1" - resolved "https://registry.yarnpkg.com/@cosmograph/cosmos/-/cosmos-1.6.2-beta.1.tgz#fa8455490ed3fb842088468383b9c699ffa9df3c" - integrity sha512-kk9C/ywjG9LL8nzcVP5BOUWsUov6rvzJXkfOpakktNLeLMZJ2m9tT8XMVWLHwPW7sehvqPBVKseqY0xY/YL5iA== - dependencies: - d3-array "^3.2.0" - d3-color "^3.1.0" - d3-ease "^3.0.1" - d3-scale "^4.0.2" - d3-selection "^3.0.0" - d3-transition "^3.0.1" - d3-zoom "^3.0.0" - gl-bench "^1.0.42" - gl-matrix "^3.4.3" - random "^4.1.0" - regl "npm:@plotly/regl@^2.1.2" - -"@cosmograph/react@^1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@cosmograph/react/-/react-1.4.2.tgz#f4deb08c4b510c4b98841c312a1599e872498000" - integrity sha512-J4f6jqCIyhroDX6SMxbW0LqF83RV+yAQ0qfm72jKhbTbkgfm52H++U7HBZRvR+XCvPKDFMKUgrZzJo5PnKGW9Q== - dependencies: - "@cosmograph/cosmograph" "1.4.2" - "@cosmograph/cosmos" "1.6.2-beta.1" - -"@cosmograph/ui@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@cosmograph/ui/-/ui-1.4.2.tgz#6bd7e13ed2864d2698cd205df1b9f764638f737a" - integrity sha512-yaCm6dqSOSm4cnjYo7BDY8d76KB8PyL82l5NrkxsQLM8EKlhvfGdeZPN2DGDCAVMQhGRnLb/DBLe1O4x+ELcJA== - dependencies: - "@juggle/resize-observer" "^3.4.0" - d3-array "^3.2.4" - d3-axis "^3.0.0" - d3-brush "^3.0.0" - d3-format "^3.1.0" - d3-scale "^4.0.2" - d3-selection "^3.0.0" - d3-time "^3.1.0" - d3-time-format "^4.1.0" - d3-transition "^3.0.1" - escape-string-regexp "^5.0.0" - "@dagrejs/dagre@^1.1.4": version "1.1.5" resolved "https://registry.yarnpkg.com/@dagrejs/dagre/-/dagre-1.1.5.tgz#af392e24723c479f00661af3f4e8ede5c6acce51" @@ -681,6 +626,16 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== +"@gilbarbara/deep-equal@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@gilbarbara/deep-equal/-/deep-equal-0.1.2.tgz#1a106721368dba5e7e9fb7e9a3a6f9efbd8df36d" + integrity sha512-jk+qzItoEb0D0xSSmrKDDzf9sheQj/BAPxlgNxgmOaA3mxpUa6ndJLYGZKsJnIVEQSD8zcTbyILz7I0HcnBCRA== + +"@gilbarbara/deep-equal@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@gilbarbara/deep-equal/-/deep-equal-0.3.1.tgz#9c72ed0b2e6f8edb1580217e28d78b5b03ad4aee" + integrity sha512-I7xWjLs2YSVMc5gGx1Z3ZG1lgFpITPndpi8Ku55GeEIKpACCPQNS/OTqQbxgTCfq0Ncvcc+CrFov96itVh6Qvw== + "@hookform/resolvers@^5.0.1": version "5.1.1" resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-5.1.1.tgz#91074ba4fb749cc74e6465e75d38256146b0c4ab" @@ -707,11 +662,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@interacta/css-labels@^0.1.2-beta.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@interacta/css-labels/-/css-labels-0.1.2.tgz#6e730ebf3f4497538c793ca8b04b1653757fd419" - integrity sha512-BYEU8LDKevrua77e6eruGrJ32JMi9s+OOmzPq8GEUPAU6wMQCiUk0Sebg77VAtFZ3XARMQR5kXRhKMfdt3HTKg== - "@isaacs/fs-minipass@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32" @@ -745,11 +695,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@juggle/resize-observer@^3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" - integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== - "@lukemorales/query-key-factory@^1.3.4": version "1.3.4" resolved "https://registry.yarnpkg.com/@lukemorales/query-key-factory/-/query-key-factory-1.3.4.tgz#d14001dbd781b024df93ca73bd785db590924486" @@ -1385,11 +1330,6 @@ resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.1.tgz#78244efe12930c56fd255d7923865857c41ac8cb" integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw== -"@ranfdev/deepobj@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@ranfdev/deepobj/-/deepobj-1.0.2.tgz#9dba923578fa24aed3d3961975037b6423a03771" - integrity sha512-FM3y6kfJaj5MCoAjdv24EDCTDbuFz+4+pgAunbjYfugwIE4O/xx8mPNji1n/ouG8pHCntSnBr1xwTOensF23Gg== - "@react-sigma/core@^5.0.4": version "5.0.4" resolved "https://registry.yarnpkg.com/@react-sigma/core/-/core-5.0.4.tgz#8207e340c2103a3aad7871be5a6d31b27d198072" @@ -1619,71 +1559,6 @@ resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.6.14.tgz#1e0740193fbfd4a66e9ff5f75c7f976e16028752" integrity sha512-ez0Zihuy17udLbfHZQXkGqwtep0mSGgHcNzGN7iZrMP1m+VmNo+7aGCJJdvXi7+iU3yq8weXSQFWg5DqWgLS7g== -"@supabase/auth-js@2.70.0": - version "2.70.0" - resolved "https://registry.yarnpkg.com/@supabase/auth-js/-/auth-js-2.70.0.tgz#d4a0021d8a229d1ec23dd49ca76c486a686b6c14" - integrity sha512-BaAK/tOAZFJtzF1sE3gJ2FwTjLf4ky3PSvcvLGEgEmO4BSBkwWKu8l67rLLIBZPDnCyV7Owk2uPyKHa0kj5QGg== - dependencies: - "@supabase/node-fetch" "^2.6.14" - -"@supabase/functions-js@2.4.5": - version "2.4.5" - resolved "https://registry.yarnpkg.com/@supabase/functions-js/-/functions-js-2.4.5.tgz#0a87d1a296bb32a1474c9322c932d9bbd4993d74" - integrity sha512-v5GSqb9zbosquTo6gBwIiq7W9eQ7rE5QazsK/ezNiQXdCbY+bH8D9qEaBIkhVvX4ZRW5rP03gEfw5yw9tiq4EQ== - dependencies: - "@supabase/node-fetch" "^2.6.14" - -"@supabase/node-fetch@2.6.15", "@supabase/node-fetch@^2.6.14": - version "2.6.15" - resolved "https://registry.yarnpkg.com/@supabase/node-fetch/-/node-fetch-2.6.15.tgz#731271430e276983191930816303c44159e7226c" - integrity sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ== - dependencies: - whatwg-url "^5.0.0" - -"@supabase/node-fetch@^2.6.13": - version "2.6.13" - resolved "https://registry.yarnpkg.com/@supabase/node-fetch/-/node-fetch-2.6.13.tgz#0d36219a9e2134049a7317591e1d4fbf73a42ec4" - integrity sha512-rEHQaDVzxLZMCK3p+JW2nzEsK4AJpOQhetppaqAzrFum0Ub8wcnoM/8f1dWRZSulY5fRDP6rJaWT/8X3VleCzg== - dependencies: - whatwg-url "^5.0.0" - -"@supabase/postgrest-js@1.19.4": - version "1.19.4" - resolved "https://registry.yarnpkg.com/@supabase/postgrest-js/-/postgrest-js-1.19.4.tgz#41de1e4310ce8ddba87becd7e0878f4ad7a659a2" - integrity sha512-O4soKqKtZIW3olqmbXXbKugUtByD2jPa8kL2m2c1oozAO11uCcGrRhkZL0kVxjBLrXHE0mdSkFsMj7jDSfyNpw== - dependencies: - "@supabase/node-fetch" "^2.6.14" - -"@supabase/realtime-js@2.11.15": - version "2.11.15" - resolved "https://registry.yarnpkg.com/@supabase/realtime-js/-/realtime-js-2.11.15.tgz#74e520eee0dda51fdc83902abaaefacad6f3f0a9" - integrity sha512-HQKRnwAqdVqJW/P9TjKVK+/ETpW4yQ8tyDPPtRMKOH4Uh3vQD74vmj353CYs8+YwVBKubeUOOEpI9CT8mT4obw== - dependencies: - "@supabase/node-fetch" "^2.6.13" - "@types/phoenix" "^1.6.6" - "@types/ws" "^8.18.1" - isows "^1.0.7" - ws "^8.18.2" - -"@supabase/storage-js@2.7.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@supabase/storage-js/-/storage-js-2.7.1.tgz#761482f237deec98a59e5af1ace18c7a5e0a69af" - integrity sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA== - dependencies: - "@supabase/node-fetch" "^2.6.14" - -"@supabase/supabase-js@^2.38.4": - version "2.50.3" - resolved "https://registry.yarnpkg.com/@supabase/supabase-js/-/supabase-js-2.50.3.tgz#f01371f5a2466d6ed1df0e8ffb76e057e30d3c97" - integrity sha512-Ld42AbfSXKnbCE2ObRvrGC5wj9OrfTOzswQZg0OcGQGx+QqcWYN/IqsLqrt4gCFrD57URbNRfGESSWzchzKAuQ== - dependencies: - "@supabase/auth-js" "2.70.0" - "@supabase/functions-js" "2.4.5" - "@supabase/node-fetch" "2.6.15" - "@supabase/postgrest-js" "1.19.4" - "@supabase/realtime-js" "2.11.15" - "@supabase/storage-js" "2.7.1" - "@tailwindcss/node@4.1.11": version "4.1.11" resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.1.11.tgz#d626af65fc9872e5e9d8884791d7e3856e945359" @@ -2414,13 +2289,6 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== -"@types/node@*": - version "24.0.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.10.tgz#f65a169779bf0d70203183a1890be7bee8ca2ddb" - integrity sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA== - dependencies: - undici-types "~7.8.0" - "@types/node@^22.15.29": version "22.16.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.16.0.tgz#352bc4951fd089df32f2b6412a61d339b67ded8b" @@ -2433,11 +2301,6 @@ resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz#90267db13f64d6e9ccb5ae3eac92786a7c77a516" integrity sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A== -"@types/phoenix@^1.6.6": - version "1.6.6" - resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.6.6.tgz#3c1ab53fd5a23634b8e37ea72ccacbf07fbc7816" - integrity sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A== - "@types/prop-types@*": version "15.7.15" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.15.tgz#e6e5a86d602beaca71ce5163fadf5f95d70931c7" @@ -2499,13 +2362,6 @@ resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.22.tgz#d8a14c12bbfaaa4a13de21ec2d4a8197b3e1b532" integrity sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A== -"@types/ws@^8.18.1": - version "8.18.1" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" - integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== - dependencies: - "@types/node" "*" - "@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" @@ -3042,13 +2898,6 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -crossfilter2@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/crossfilter2/-/crossfilter2-1.5.4.tgz#855a11245d9dc18631cd49d88101dc31a2bcffce" - integrity sha512-oOGqOM0RocwQFOXJnEaUKqYV6Mc1TNCRv3LrNUa0QlofQTutGAXyQaLW1aGKLls2sfnbwBEtsa6tPD3jY+ycqQ== - dependencies: - "@ranfdev/deepobj" "1.0.2" - css-what@^6.1.0: version "6.2.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" @@ -3069,35 +2918,19 @@ cytoscape@^3.32.0: resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.32.0.tgz#34bc2402c9bc7457ab7d9492745f034b7bf47644" integrity sha512-5JHBC9n75kz5851jeklCPmZWcg3hUe6sjqJvyk3+hVqFaKcHwHgxsjeN1yLmggoUc6STbtm9/NQyabQehfjvWQ== -"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6, d3-array@^3.2.0, d3-array@^3.2.4: +"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6, d3-array@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== dependencies: internmap "1 - 2" -d3-axis@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" - integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== - d3-binarytree@1: version "1.0.2" resolved "https://registry.yarnpkg.com/d3-binarytree/-/d3-binarytree-1.0.2.tgz#ed43ebc13c70fbabfdd62df17480bc5a425753cc" integrity sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw== -d3-brush@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" - integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== - dependencies: - d3-dispatch "1 - 3" - d3-drag "2 - 3" - d3-interpolate "1 - 3" - d3-selection "3" - d3-transition "3" - -"d3-color@1 - 3", d3-color@^3.1.0: +"d3-color@1 - 3": version "3.1.0" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== @@ -3140,7 +2973,7 @@ d3-force@^3.0.0: d3-quadtree "1 - 3" d3-timer "1 - 3" -"d3-format@1 - 3", d3-format@^3.1.0: +"d3-format@1 - 3": version "3.1.0" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== @@ -3203,14 +3036,14 @@ d3-shape@^3.1.0: dependencies: d3-path "^3.1.0" -"d3-time-format@2 - 4", d3-time-format@^4.1.0: +"d3-time-format@2 - 4": version "4.1.0" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== dependencies: d3-time "1 - 3" -"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@^3.0.0, d3-time@^3.1.0: +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== @@ -3222,7 +3055,7 @@ d3-shape@^3.1.0: resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== -"d3-transition@2 - 3", d3-transition@3, d3-transition@^3.0.1: +"d3-transition@2 - 3": version "3.0.1" resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== @@ -3307,11 +3140,21 @@ decode-named-character-reference@^1.0.0: dependencies: character-entities "^2.0.0" +deep-diff@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-1.0.2.tgz#afd3d1f749115be965e89c63edc7abb1506b9c26" + integrity sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" @@ -3770,11 +3613,6 @@ estree-util-is-identifier-name@^3.0.0: resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4018,16 +3856,6 @@ get-tsconfig@^4.7.5: dependencies: resolve-pkg-maps "^1.0.0" -gl-bench@^1.0.42: - version "1.0.42" - resolved "https://registry.yarnpkg.com/gl-bench/-/gl-bench-1.0.42.tgz#f82b9a1556bc89db2a7d095aec3f51f4eda85cfc" - integrity sha512-zuMsA/NCPmI8dPy6q3zTUH8OUM5cqKg7uVWwqzrtXJPBqoypM0XeFWEc8iFOqbf/1qtXieWOrbmgFEByKTQt4Q== - -gl-matrix@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" - integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== - glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" @@ -4507,6 +4335,16 @@ is-hexadecimal@^2.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== +is-lite@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/is-lite/-/is-lite-0.8.2.tgz#26ab98b32aae8cc8b226593b9a641d2bf4bd3b6a" + integrity sha512-JZfH47qTsslwaAsqbMI3Q6HNNjUuq6Cmzzww50TdP5Esb6e1y2sK2UAaZZuzfAzpoI2AkxoPQapZdlDuP6Vlsw== + +is-lite@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-lite/-/is-lite-1.2.1.tgz#401f30bfccd34cb8cc1283f958907c97859d8f25" + integrity sha512-pgF+L5bxC+10hLBgf6R2P4ZZUBOQIIacbdo8YvuCP8/JvsWxG7aZ9p10DYuLtifFci4l3VITphhMlMV4Y+urPw== + is-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" @@ -4626,11 +4464,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isows@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915" - integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== - iterator.prototype@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" @@ -4904,13 +4737,6 @@ maath@^0.10.8: resolved "https://registry.yarnpkg.com/maath/-/maath-0.10.8.tgz#cf647544430141bf6982da6e878abb6c4b804e24" integrity sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g== -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - magic-string@^0.30.17: version "0.30.17" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" @@ -5717,6 +5543,11 @@ polished@4: dependencies: "@babel/runtime" "^7.17.8" +popper.js@^1.16.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + possible-typed-array-names@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" @@ -5972,13 +5803,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -random@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/random/-/random-4.1.0.tgz#3e0fff0eea0d311e6a80fd2c91e72bb064dec363" - integrity sha512-6Ajb7XmMSE9EFAMGC3kg9mvE7fGlBip25mYYuSMzw/uUSrmGilvZo2qwX3RnTRjwXkwkS+4swse9otZ92VjAtQ== - dependencies: - seedrandom "^3.0.5" - react-day-picker@8.10.1: version "8.10.1" resolved "https://registry.yarnpkg.com/react-day-picker/-/react-day-picker-8.10.1.tgz#4762ec298865919b93ec09ba69621580835b8e80" @@ -5992,6 +5816,17 @@ react-dom@^18.3.1: loose-envify "^1.1.0" scheduler "^0.23.2" +react-floater@^0.7.9: + version "0.7.9" + resolved "https://registry.yarnpkg.com/react-floater/-/react-floater-0.7.9.tgz#b15a652e817f200bfa42a2023ee8d3105803b968" + integrity sha512-NXqyp9o8FAXOATOEo0ZpyaQ2KPb4cmPMXGWkx377QtJkIXHlHRAGer7ai0r0C1kG5gf+KJ6Gy+gdNIiosvSicg== + dependencies: + deepmerge "^4.3.1" + is-lite "^0.8.2" + popper.js "^1.16.0" + prop-types "^15.8.1" + tree-changes "^0.9.1" + react-force-graph-2d@^1.27.1: version "1.27.1" resolved "https://registry.yarnpkg.com/react-force-graph-2d/-/react-force-graph-2d-1.27.1.tgz#3c8be8c3a3295f8f10c1489fe1369aa52254d6dd" @@ -6020,6 +5855,11 @@ react-icons@^5.4.0: resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.5.0.tgz#8aa25d3543ff84231685d3331164c00299cdfaf2" integrity sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw== +react-innertext@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/react-innertext/-/react-innertext-1.1.5.tgz#8147ac54db3f7067d95f49e2d2c05a720d27d8d0" + integrity sha512-PWAqdqhxhHIv80dT9znP2KvS+hfkbRovFp4zFYHFFlOoQLRiawIic81gKb3U1wEyJZgMwgs3JoLtwryASRWP3Q== + react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -6030,6 +5870,23 @@ react-is@^18.3.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +react-joyride@^2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/react-joyride/-/react-joyride-2.9.3.tgz#97633aa78dfe70b16b45fafa59ce2ee06b14c78f" + integrity sha512-1+Mg34XK5zaqJ63eeBhqdbk7dlGCFp36FXwsEvgpjqrtyywX2C6h9vr3jgxP0bGHCw8Ilsp/nRDzNVq6HJ3rNw== + dependencies: + "@gilbarbara/deep-equal" "^0.3.1" + deep-diff "^1.0.2" + deepmerge "^4.3.1" + is-lite "^1.2.1" + react-floater "^0.7.9" + react-innertext "^1.1.5" + react-is "^16.13.1" + scroll "^3.0.1" + scrollparent "^2.1.0" + tree-changes "^0.11.2" + type-fest "^4.27.0" + react-kapsule@^2.5: version "2.5.7" resolved "https://registry.yarnpkg.com/react-kapsule/-/react-kapsule-2.5.7.tgz#dcd957ae8e897ff48055fc8ff48ed04ebe3c5bd2" @@ -6248,11 +6105,6 @@ regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: gopd "^1.2.0" set-function-name "^2.0.2" -"regl@npm:@plotly/regl@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@plotly/regl/-/regl-2.1.2.tgz#fd31e3e820ed8824d59a67ab5e766bb101b810b6" - integrity sha512-Mdk+vUACbQvjd0m/1JJjOOafmkp/EpmHjISsopEz5Av44CBq7rPC05HHNbYGKVyNUF2zmEoBS/TT0pd0SPFFyw== - remark-gfm@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.1.tgz#33227b2a74397670d357bf05c098eaf8513f0d6b" @@ -6336,14 +6188,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup-plugin-rename-node-modules@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-rename-node-modules/-/rollup-plugin-rename-node-modules-1.3.1.tgz#d80091fc817ce726e7cdfc388ec2f4da286e280f" - integrity sha512-46TUPqO94GXuACYqVZjdbzNXTQAp+wTdZg/vUx2gaINb0da/ZPdaOtno2RGUOKBF4sbVM9v2ZqV98r4TQbp1UA== - dependencies: - estree-walker "^2.0.1" - magic-string "^0.25.7" - rollup@^4.20.0: version "4.44.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.44.1.tgz#641723932894e7acbe6052aea34b8e72ef8b7c8f" @@ -6425,10 +6269,15 @@ scheduler@^0.25.0: resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015" integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== -seedrandom@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" - integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== +scroll@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scroll/-/scroll-3.0.1.tgz#d5afb59fb3592ee3df31c89743e78b39e4cd8a26" + integrity sha512-pz7y517OVls1maEzlirKO5nPYle9AXsFzTMNJrRGmT951mzpIBy7sNHOg5o/0MQd/NqliCiWnAi0kZneMPFLcg== + +scrollparent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scrollparent/-/scrollparent-2.1.0.tgz#6cae915c953835886a6ba0d77fdc2bb1ed09076d" + integrity sha512-bnnvJL28/Rtz/kz2+4wpBjHzWoEzXhVg/TE8BeVGJHUqE8THNIRnDxDWMktwM+qahvlRdvlLdsQfYe+cuqfZeA== semver@^6.3.1: version "6.3.1" @@ -6565,11 +6414,6 @@ source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" @@ -6850,10 +6694,21 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-changes@^0.11.2: + version "0.11.3" + resolved "https://registry.yarnpkg.com/tree-changes/-/tree-changes-0.11.3.tgz#032b754e53c2005d10f5d089b9a62373cb24663b" + integrity sha512-r14mvDZ6tqz8PRQmlFKjhUVngu4VZ9d92ON3tp0EGpFBE6PAHOq8Bx8m8ahbNoGE3uI/npjYcJiqVydyOiYXag== + dependencies: + "@gilbarbara/deep-equal" "^0.3.1" + is-lite "^1.2.1" + +tree-changes@^0.9.1: + version "0.9.3" + resolved "https://registry.yarnpkg.com/tree-changes/-/tree-changes-0.9.3.tgz#89433ab3b4250c2910d386be1f83912b7144efcc" + integrity sha512-vvvS+O6kEeGRzMglTKbc19ltLWNtmNt1cpBoSYLj/iEcPVvpJasemKOlxBrmZaCtDJoF+4bwv3m01UKYi8mukQ== + dependencies: + "@gilbarbara/deep-equal" "^0.1.1" + is-lite "^0.8.2" trim-lines@^3.0.0: version "3.0.1" @@ -6924,6 +6779,11 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^4.27.0: + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -6994,11 +6854,6 @@ undici-types@~6.21.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -undici-types@~7.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" - integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== - unified@^11.0.0: version "11.0.5" resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.5.tgz#f66677610a5c0a9ee90cab2b8d4d66037026d9e1" @@ -7180,24 +7035,11 @@ webgl-sdf-generator@1.1.1: resolved "https://registry.yarnpkg.com/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz#3e1b422b3d87cd3cc77f2602c9db63bc0f6accbd" integrity sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA== -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - webpack-virtual-modules@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8" integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" @@ -7277,11 +7119,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^8.18.2: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== - xtend@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..a28171a --- /dev/null +++ b/yarn.lock @@ -0,0 +1,133 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@gilbarbara/deep-equal@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@gilbarbara/deep-equal/-/deep-equal-0.1.2.tgz#1a106721368dba5e7e9fb7e9a3a6f9efbd8df36d" + integrity sha512-jk+qzItoEb0D0xSSmrKDDzf9sheQj/BAPxlgNxgmOaA3mxpUa6ndJLYGZKsJnIVEQSD8zcTbyILz7I0HcnBCRA== + +"@gilbarbara/deep-equal@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@gilbarbara/deep-equal/-/deep-equal-0.3.1.tgz#9c72ed0b2e6f8edb1580217e28d78b5b03ad4aee" + integrity sha512-I7xWjLs2YSVMc5gGx1Z3ZG1lgFpITPndpi8Ku55GeEIKpACCPQNS/OTqQbxgTCfq0Ncvcc+CrFov96itVh6Qvw== + +deep-diff@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-1.0.2.tgz#afd3d1f749115be965e89c63edc7abb1506b9c26" + integrity sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg== + +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +is-lite@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/is-lite/-/is-lite-0.8.2.tgz#26ab98b32aae8cc8b226593b9a641d2bf4bd3b6a" + integrity sha512-JZfH47qTsslwaAsqbMI3Q6HNNjUuq6Cmzzww50TdP5Esb6e1y2sK2UAaZZuzfAzpoI2AkxoPQapZdlDuP6Vlsw== + +is-lite@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-lite/-/is-lite-1.2.1.tgz#401f30bfccd34cb8cc1283f958907c97859d8f25" + integrity sha512-pgF+L5bxC+10hLBgf6R2P4ZZUBOQIIacbdo8YvuCP8/JvsWxG7aZ9p10DYuLtifFci4l3VITphhMlMV4Y+urPw== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +popper.js@^1.16.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +react-floater@^0.7.9: + version "0.7.9" + resolved "https://registry.yarnpkg.com/react-floater/-/react-floater-0.7.9.tgz#b15a652e817f200bfa42a2023ee8d3105803b968" + integrity sha512-NXqyp9o8FAXOATOEo0ZpyaQ2KPb4cmPMXGWkx377QtJkIXHlHRAGer7ai0r0C1kG5gf+KJ6Gy+gdNIiosvSicg== + dependencies: + deepmerge "^4.3.1" + is-lite "^0.8.2" + popper.js "^1.16.0" + prop-types "^15.8.1" + tree-changes "^0.9.1" + +react-innertext@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/react-innertext/-/react-innertext-1.1.5.tgz#8147ac54db3f7067d95f49e2d2c05a720d27d8d0" + integrity sha512-PWAqdqhxhHIv80dT9znP2KvS+hfkbRovFp4zFYHFFlOoQLRiawIic81gKb3U1wEyJZgMwgs3JoLtwryASRWP3Q== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-joyride@^2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/react-joyride/-/react-joyride-2.9.3.tgz#97633aa78dfe70b16b45fafa59ce2ee06b14c78f" + integrity sha512-1+Mg34XK5zaqJ63eeBhqdbk7dlGCFp36FXwsEvgpjqrtyywX2C6h9vr3jgxP0bGHCw8Ilsp/nRDzNVq6HJ3rNw== + dependencies: + "@gilbarbara/deep-equal" "^0.3.1" + deep-diff "^1.0.2" + deepmerge "^4.3.1" + is-lite "^1.2.1" + react-floater "^0.7.9" + react-innertext "^1.1.5" + react-is "^16.13.1" + scroll "^3.0.1" + scrollparent "^2.1.0" + tree-changes "^0.11.2" + type-fest "^4.27.0" + +scroll@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scroll/-/scroll-3.0.1.tgz#d5afb59fb3592ee3df31c89743e78b39e4cd8a26" + integrity sha512-pz7y517OVls1maEzlirKO5nPYle9AXsFzTMNJrRGmT951mzpIBy7sNHOg5o/0MQd/NqliCiWnAi0kZneMPFLcg== + +scrollparent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scrollparent/-/scrollparent-2.1.0.tgz#6cae915c953835886a6ba0d77fdc2bb1ed09076d" + integrity sha512-bnnvJL28/Rtz/kz2+4wpBjHzWoEzXhVg/TE8BeVGJHUqE8THNIRnDxDWMktwM+qahvlRdvlLdsQfYe+cuqfZeA== + +tree-changes@^0.11.2: + version "0.11.3" + resolved "https://registry.yarnpkg.com/tree-changes/-/tree-changes-0.11.3.tgz#032b754e53c2005d10f5d089b9a62373cb24663b" + integrity sha512-r14mvDZ6tqz8PRQmlFKjhUVngu4VZ9d92ON3tp0EGpFBE6PAHOq8Bx8m8ahbNoGE3uI/npjYcJiqVydyOiYXag== + dependencies: + "@gilbarbara/deep-equal" "^0.3.1" + is-lite "^1.2.1" + +tree-changes@^0.9.1: + version "0.9.3" + resolved "https://registry.yarnpkg.com/tree-changes/-/tree-changes-0.9.3.tgz#89433ab3b4250c2910d386be1f83912b7144efcc" + integrity sha512-vvvS+O6kEeGRzMglTKbc19ltLWNtmNt1cpBoSYLj/iEcPVvpJasemKOlxBrmZaCtDJoF+4bwv3m01UKYi8mukQ== + dependencies: + "@gilbarbara/deep-equal" "^0.1.1" + is-lite "^0.8.2" + +type-fest@^4.27.0: + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==