feat: remove dynamic.yml file + react-joyride

This commit is contained in:
dextmorgn
2025-10-20 12:03:43 +02:00
parent 58ec5b3d29
commit d2127346d5
13 changed files with 704 additions and 278 deletions

View File

@@ -0,0 +1,10 @@
{
"permissions": {
"allow": [
"Bash(yarn add:*)",
"Bash(mkdir:*)"
],
"deny": [],
"ask": []
}
}

223
TUTORIAL_README.md Normal file
View File

@@ -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<string, Step[]> = {
'/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
<div data-tour-id="graph-toolbar">
<button>Zoom</button>
</div>
<aside data-tour-id="sidebar">
Panneau latéral
</aside>
```
### 3. Ajouter un bouton d'aide (optionnel)
```tsx
import { useTutorial } from '@/components/tutorial';
function MyPage() {
const { startTutorial } = useTutorial();
return (
<div>
<button onClick={startTutorial}>? Aide</button>
{/* Votre contenu */}
</div>
);
}
```
## 🎯 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 (
<div>
<button onClick={startTutorial}>? Aide</button>
<div data-tour-id="toolbar">Barre d'outils</div>
<div data-tour-id="sidebar">Menu latéral</div>
<div data-tour-id="canvas">Canvas principal</div>
</div>
);
}
```
### 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
<Joyride
styles={{
options: {
primaryColor: '#3b82f6', // Couleur principale
zIndex: 10000, // Z-index
},
}}
locale={{
back: 'Retour',
next: 'Suivant',
skip: 'Passer',
// ...
}}
/>
```
### 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)

View File

@@ -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

View File

@@ -1,6 +0,0 @@
tls:
certificates:
- certFile: '/etc/traefik/certs/localhost.flowsint.*.cert.pem'
keyFile: '/etc/traefik/certs/localhost.flowsint.*.key.pem'
stores:
- default

View File

@@ -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",

View File

@@ -0,0 +1,3 @@
export { TutorialProvider } from './tutorial-provider';
export { useTutorial } from './use-tutorial';
export { tutorialSteps, getStepsForRoute, hasStepsForRoute } from './tutorial-steps';

View File

@@ -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<TutorialContextValue | null>(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<Step[]>([]);
const [stepIndex, setStepIndex] = useState(0);
const getCompletedRoutes = useCallback((): Set<string> => {
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 (
<TutorialContext.Provider value={contextValue}>
<Joyride
steps={steps}
run={run}
stepIndex={stepIndex}
continuous
showProgress
showSkipButton
callback={handleJoyrideCallback}
styles={{
options: {
primaryColor: '#3b82f6',
zIndex: 10000,
},
}}
locale={{
back: 'Back',
close: 'Close',
last: 'Last',
next: 'Next',
skip: 'Skip',
}}
/>
{children}
</TutorialContext.Provider>
);
}

View File

@@ -0,0 +1,87 @@
import { Step } from 'react-joyride';
export const tutorialSteps: Record<string, Step[]> = {
'/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] || [];
}

View File

@@ -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;
}

View File

@@ -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<MyRouterContext>()({
component: () => {
const { theme } = useTheme()
return (
<>
<TutorialProvider>
<Toaster theme={theme} position="top-right" richColors />
<Outlet />
</>
</TutorialProvider>
)
}
})

View File

@@ -7,7 +7,7 @@ const DEFAULT_SETTINGS = {
general: {
showFlow: {
type: 'boolean',
value: true,
value: false,
description: 'Display Flo, your AI assistant.'
},
},

View File

@@ -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"

133
yarn.lock Normal file
View File

@@ -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==