From 77a286369cceb61b6b89bfb0d2d6fa4c9e77f9f2 Mon Sep 17 00:00:00 2001 From: w8r Date: Fri, 13 Sep 2024 16:24:48 +0200 Subject: [PATCH] Fixed and upgraded tests --- demo/index.tsx | 10 +- demo/src/App.tsx | 5 +- demo/src/components/Controls.tsx | 148 +- demo/src/components/Logo.tsx | 20 +- demo/src/components/ReactIcon.tsx | 3 +- demo/src/index.css | 17 +- package-lock.json | 1306 +++++++++++++---- package.json | 17 +- test/styles.test.tsx | 206 ++- test/transformations/edgeFilter.test.tsx | 7 +- test/transformations/edgeGrouping.test.tsx | 7 +- .../neighborGeneration.test.tsx | 7 +- test/transformations/neighborMerging.test.tsx | 7 +- test/transformations/nodeCollapsing.test.tsx | 5 +- test/transformations/nodeFilter.test.tsx | 7 +- test/transformations/nodeGrouping.test.tsx | 9 +- tsconfig.json | 2 +- 17 files changed, 1248 insertions(+), 535 deletions(-) diff --git a/demo/index.tsx b/demo/index.tsx index d4a2faa..f2549d8 100644 --- a/demo/index.tsx +++ b/demo/index.tsx @@ -2,16 +2,18 @@ import React from "react"; import { createRoot } from "react-dom/client"; import "./src/index.css"; import App from "./src/App"; -import { GeistProvider, CssBaseline } from "@geist-ui/core"; +import "@mantine/core/styles.css"; +import { MantineProvider, createTheme } from "@mantine/core"; const container = document.getElementById("root")!; const root = createRoot(container); +const theme = createTheme({}); + root.render( - - + - + ); diff --git a/demo/src/App.tsx b/demo/src/App.tsx index 28bb262..42d8da7 100644 --- a/demo/src/App.tsx +++ b/demo/src/App.tsx @@ -7,7 +7,7 @@ import OgmaLib, { } from "@linkurious/ogma"; import { useEffect, useState, createRef, useCallback } from "react"; // loading indicator -import { Loading } from "@geist-ui/core"; +import { LoadingOverlay } from "@mantine/core"; // for geo mode import * as L from "leaflet"; // components @@ -32,6 +32,7 @@ import { Controls } from "./components/Controls"; import { MousePosition } from "./components/MousePosition"; import { Logo } from "./components/Logo"; import { UpdateGroupingButton } from "./components/UpdateGroupingButton"; +import "@mantine/core/styles.css"; // to enable geo mode integration OgmaLib.libraries["leaflet"] = L; @@ -96,7 +97,7 @@ export default function App() { }, []); // nothing to render yet - if (loading) return ; + if (loading) return ; return (
diff --git a/demo/src/components/Controls.tsx b/demo/src/components/Controls.tsx index f7604f5..5baa536 100644 --- a/demo/src/components/Controls.tsx +++ b/demo/src/components/Controls.tsx @@ -1,6 +1,14 @@ import { useState } from "react"; -import { Drawer, Text, Button, Toggle, Slider, Spacer } from "@geist-ui/core"; -import { Menu as MenuIcon, X as XIcon } from "@geist-ui/icons"; +import { + Drawer, + Text, + Title, + Switch as Toggle, + Slider, + ActionIcon, + Space, +} from "@mantine/core"; +import { Menu as MenuIcon } from "react-feather"; interface ControlsProps { toggleNodeGrouping: (value: boolean) => void; @@ -25,84 +33,90 @@ export function Controls({ }: ControlsProps) { //const ogma = useOgma(); const [drawerShown, setDrawerShown] = useState(false); + const [nodeSize, setNodeSizeLocal] = useState(5); + const [edgeWidth, setEdgeWidthLocal] = useState(0.25); return ( <>
-
setDrawerShown(false)} - placement="right" + position="right" className="controls" > - - Controls -
); }; diff --git a/demo/src/components/ReactIcon.tsx b/demo/src/components/ReactIcon.tsx index a18b9d4..c76c2aa 100644 --- a/demo/src/components/ReactIcon.tsx +++ b/demo/src/components/ReactIcon.tsx @@ -1,10 +1,11 @@ -export const Icon = ({ width = 12, height = 12 }) => ( +export const Icon = ({ width = 12, height = 12, ...props }) => ( =17.0.0", + "react-dom": ">=17.0.0" } }, "node_modules/@adobe/css-tools": { @@ -974,6 +978,19 @@ "node": "*" } }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/js": { "version": "8.57.0", "resolved": "https://nexus3.linkurious.net/repository/npm/@eslint/js/-/js-8.57.0.tgz", @@ -984,10 +1001,68 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.7", + "resolved": "https://nexus3.linkurious.net/repository/npm/@floating-ui/core/-/core-1.6.7.tgz", + "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.7" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.10", + "resolved": "https://nexus3.linkurious.net/repository/npm/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.7" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.23", + "resolved": "https://nexus3.linkurious.net/repository/npm/@floating-ui/react/-/react-0.26.23.tgz", + "integrity": "sha512-9u3i62fV0CFF3nIegiWiRDwOs7OW/KhSUJDNx2MkQM3LbE5zQOY01sL3nelcVBXvX7Ovvo3A49I8ql+20Wg/Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.1", + "@floating-ui/utils": "^0.2.7", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.7", + "resolved": "https://nexus3.linkurious.net/repository/npm/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==", + "dev": true, + "license": "MIT" + }, "node_modules/@geist-ui/core": { - "version": "2.3.8", - "resolved": "https://nexus3.linkurious.net/repository/npm/@geist-ui/core/-/core-2.3.8.tgz", - "integrity": "sha512-OKwGgTA4+fBM41eQbqDoUj4XBycZbYH7Ynrn6LPO5yKX7zeWPu/R7HN3vB4/oHt34VTDQI5sDNb1SirHvNyB5w==", + "version": "2.3.6", + "resolved": "https://nexus3.linkurious.net/repository/npm/@geist-ui/core/-/core-2.3.6.tgz", + "integrity": "sha512-IltILuADOMwgWW7Kfol/yHbBra9F1Is1FYizmyjsHnYd94e+LpIcjC/2vCWXTIz6Atx0auLvRqonbbMKXjZKVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1312,9 +1387,9 @@ } }, "node_modules/@linkurious/ogma": { - "version": "5.1.4", - "resolved": "https://nexus3.linkurious.net/repository/npm/@linkurious/ogma/-/ogma-5.1.4.tgz", - "integrity": "sha512-6UGt1I+i8MHXyIabywOMaJPituvpahUOJunO88qRSOMwi3i/duzqnNqJ4sbs8mRfCpgFpvyQfGGlWLLSHmBixA==", + "version": "5.1.7", + "resolved": "https://nexus3.linkurious.net/repository/npm/@linkurious/ogma/-/ogma-5.1.7.tgz", + "integrity": "sha512-QfGejc+Woj9dvhpQ/WX77W9p7RXSHWvsMa2hOt0MobUU6pjE2qBuKRLwfAMPIqPoFmtvKldIYJaZZBJqzYjZbQ==", "peer": true, "optionalDependencies": { "@mapbox/mapbox-gl-rtl-text": "^0.2.0", @@ -1323,6 +1398,37 @@ "xlsx": "0.17.0" } }, + "node_modules/@mantine/core": { + "version": "7.12.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/@mantine/core/-/core-7.12.2.tgz", + "integrity": "sha512-FrMHOKq4s3CiPIxqZ9xnVX7H4PEGNmbtHMvWO/0YlfPgoV0Er/N/DNJOFW1ys4WSnidPTayYeB41riyxxGOpRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.26.9", + "clsx": "^2.1.1", + "react-number-format": "^5.3.1", + "react-remove-scroll": "^2.5.7", + "react-textarea-autosize": "8.5.3", + "type-fest": "^4.12.0" + }, + "peerDependencies": { + "@mantine/hooks": "7.12.2", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } + }, + "node_modules/@mantine/hooks": { + "version": "7.12.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/@mantine/hooks/-/hooks-7.12.2.tgz", + "integrity": "sha512-dVMw8jpM0hAzc8e7/GNvzkk9N0RN/m+PKycETB3H6lJGuXJJSRR4wzzgQKpEhHwPccktDpvb4rkukKDq2jA8Fg==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@mapbox/geojson-rewind": { "version": "0.5.2", "resolved": "https://nexus3.linkurious.net/repository/npm/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", @@ -1446,15 +1552,185 @@ } }, "node_modules/@next/bundle-analyzer": { - "version": "14.2.9", - "resolved": "https://nexus3.linkurious.net/repository/npm/@next/bundle-analyzer/-/bundle-analyzer-14.2.9.tgz", - "integrity": "sha512-r+h5vdrx3+tZoMysJmDsfy3OXPqwuTTiQYytCPl5qfngHqeusV3im8Bjbmm4ZsOsIcqh/BQrChO8u7wFXavHKA==", + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/bundle-analyzer/-/bundle-analyzer-14.2.11.tgz", + "integrity": "sha512-wFPjuXVlLkheng8BTG/K8UN8lRg93E5ZdE9gSmxpRP0XwC58w1B8wITXWeTD/Js4ObxyhxhiCrZzt2X+QJrrMw==", "dev": true, "license": "MIT", "dependencies": { "webpack-bundle-analyzer": "4.10.1" } }, + "node_modules/@next/env": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/env/-/env-14.2.11.tgz", + "integrity": "sha512-HYsQRSIXwiNqvzzYThrBwq6RhXo3E0n8j8nQnAs8i4fCEo2Zf/3eS0IiRA8XnRg9Ha0YnpkyJZIZg1qEwemrHw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.11.tgz", + "integrity": "sha512-eiY9u7wEJZWp/Pga07Qy3ZmNEfALmmSS1HtsJF3y1QEyaExu7boENz11fWqDmZ3uvcyAxCMhTrA1jfVxITQW8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.11.tgz", + "integrity": "sha512-lnB0zYCld4yE0IX3ANrVMmtAbziBb7MYekcmR6iE9bujmgERl6+FK+b0MBq0pl304lYe7zO4yxJus9H/Af8jbg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.11.tgz", + "integrity": "sha512-Ulo9TZVocYmUAtzvZ7FfldtwUoQY0+9z3BiXZCLSUwU2bp7GqHA7/bqrfsArDlUb2xeGwn3ZuBbKtNK8TR0A8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.11.tgz", + "integrity": "sha512-fH377DnKGyUnkWlmUpFF1T90m0dADBfK11dF8sOQkiELF9M+YwDRCGe8ZyDzvQcUd20Rr5U7vpZRrAxKwd3Rzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.11.tgz", + "integrity": "sha512-a0TH4ZZp4NS0LgXP/488kgvWelNpwfgGTUCDXVhPGH6pInb7yIYNgM4kmNWOxBFt+TIuOH6Pi9NnGG4XWFUyXQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.11.tgz", + "integrity": "sha512-DYYZcO4Uir2gZxA4D2JcOAKVs8ZxbOFYPpXSVIgeoQbREbeEHxysVsg3nY4FrQy51e5opxt5mOHl/LzIyZBoKA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.11.tgz", + "integrity": "sha512-PwqHeKG3/kKfPpM6of1B9UJ+Er6ySUy59PeFu0Un0LBzJTRKKAg2V6J60Yqzp99m55mLa+YTbU6xj61ImTv9mg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.11.tgz", + "integrity": "sha512-0U7PWMnOYIvM74GY6rbH6w7v+vNPDVH1gUhlwHpfInJnNe5LkmUZqhp7FNWeNa5wbVgRcRi1F1cyxp4dmeLLvA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.11.tgz", + "integrity": "sha512-gQpS7mcgovWoaTG1FbS5/ojF7CGfql1Q0ZLsMrhcsi2Sr9HEqsUZ70MPJyaYBXbk6iEAP7UXMD9HC8KY1qNwvA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://nexus3.linkurious.net/repository/npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1525,9 +1801,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz", - "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", "cpu": [ "arm" ], @@ -1539,9 +1815,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz", - "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", "cpu": [ "arm64" ], @@ -1553,9 +1829,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz", - "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", "cpu": [ "arm64" ], @@ -1567,9 +1843,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz", - "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", "cpu": [ "x64" ], @@ -1581,9 +1857,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz", - "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", "cpu": [ "arm" ], @@ -1595,9 +1871,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz", - "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", "cpu": [ "arm" ], @@ -1609,9 +1885,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz", - "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", "cpu": [ "arm64" ], @@ -1623,9 +1899,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz", - "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", "cpu": [ "arm64" ], @@ -1637,9 +1913,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz", - "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", "cpu": [ "ppc64" ], @@ -1651,9 +1927,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz", - "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", "cpu": [ "riscv64" ], @@ -1665,9 +1941,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz", - "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", "cpu": [ "s390x" ], @@ -1679,9 +1955,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz", - "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", "cpu": [ "x64" ], @@ -1693,9 +1969,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz", - "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", "cpu": [ "x64" ], @@ -1707,9 +1983,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz", - "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", "cpu": [ "arm64" ], @@ -1721,9 +1997,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz", - "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", "cpu": [ "ia32" ], @@ -1735,9 +2011,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz", - "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", "cpu": [ "x64" ], @@ -1755,6 +2031,26 @@ "dev": true, "license": "MIT" }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://nexus3.linkurious.net/repository/npm/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, "node_modules/@testing-library/dom": { "version": "10.4.0", "resolved": "https://nexus3.linkurious.net/repository/npm/@testing-library/dom/-/dom-10.4.0.tgz", @@ -1970,9 +2266,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.12", - "resolved": "https://nexus3.linkurious.net/repository/npm/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "version": "29.5.13", + "resolved": "https://nexus3.linkurious.net/repository/npm/@types/jest/-/jest-29.5.13.tgz", + "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", "dev": true, "license": "MIT", "dependencies": { @@ -2342,20 +2638,20 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/coverage-v8/-/coverage-v8-2.0.5.tgz", - "integrity": "sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/coverage-v8/-/coverage-v8-2.1.0.tgz", + "integrity": "sha512-yqCkr2nrV4o58VcVMxTVkS6Ggxzy7pmSD8JbTbhbH5PsQfUIES1QT716VUzo33wf2lX9EcWYdT3Vl2MMmjR59g==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.5", + "debug": "^4.3.6", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.10", + "magic-string": "^0.30.11", "magicast": "^0.3.4", "std-env": "^3.7.0", "test-exclude": "^7.0.1", @@ -2365,18 +2661,24 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "2.0.5" + "@vitest/browser": "2.1.0", + "vitest": "2.1.0" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, "node_modules/@vitest/expect": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/expect/-/expect-2.0.5.tgz", - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/expect/-/expect-2.1.0.tgz", + "integrity": "sha512-N3/xR4fSu0+6sVZETEtPT1orUs2+Y477JOXTcU3xKuu3uBlsgbD7/7Mz2LZ1Jr1XjwilEWlrIgSCj4N1+5ZmsQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", + "@vitest/spy": "2.1.0", + "@vitest/utils": "2.1.0", "chai": "^5.1.1", "tinyrainbow": "^1.2.0" }, @@ -2384,10 +2686,38 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/mocker": { + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/mocker/-/mocker-2.1.0.tgz", + "integrity": "sha512-ZxENovUqhzl+QiOFpagiHUNUuZ1qPd5yYTCYHomGIZOFArzn4mgX2oxZmiAItJWAaXHG6bbpb/DpSPhlk5DgtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "^2.1.0-beta.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.11" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/spy": "2.1.0", + "msw": "^2.3.5", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, "node_modules/@vitest/pretty-format": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/pretty-format/-/pretty-format-2.1.0.tgz", + "integrity": "sha512-7sxf2F3DNYatgmzXXcTh6cq+/fxwB47RIQqZJFoSH883wnVAoccSRT6g+dTKemUBo8Q5N4OYYj1EBXLuRKvp3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2398,13 +2728,13 @@ } }, "node_modules/@vitest/runner": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/runner/-/runner-2.0.5.tgz", - "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/runner/-/runner-2.1.0.tgz", + "integrity": "sha512-D9+ZiB8MbMt7qWDRJc4CRNNUlne/8E1X7dcKhZVAbcOKG58MGGYVDqAq19xlhNfMFZsW0bpVKgztBwks38Ko0w==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.0.5", + "@vitest/utils": "2.1.0", "pathe": "^1.1.2" }, "funding": { @@ -2412,14 +2742,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/snapshot/-/snapshot-2.0.5.tgz", - "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/snapshot/-/snapshot-2.1.0.tgz", + "integrity": "sha512-x69CygGMzt9VCO283K2/FYQ+nBrOj66OTKpsPykjCR4Ac3lLV+m85hj9reaIGmjBSsKzVvbxWmjWE3kF5ha3uQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.0.5", - "magic-string": "^0.30.10", + "@vitest/pretty-format": "2.1.0", + "magic-string": "^0.30.11", "pathe": "^1.1.2" }, "funding": { @@ -2427,9 +2757,9 @@ } }, "node_modules/@vitest/spy": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/spy/-/spy-2.0.5.tgz", - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/spy/-/spy-2.1.0.tgz", + "integrity": "sha512-IXX5NkbdgTYTog3F14i2LgnBc+20YmkXMx0IWai84mcxySUDRgm0ihbOfR4L0EVRBDFG85GjmQQEZNNKVVpkZw==", "dev": true, "license": "MIT", "dependencies": { @@ -2440,36 +2770,35 @@ } }, "node_modules/@vitest/ui": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/ui/-/ui-2.0.5.tgz", - "integrity": "sha512-m+ZpVt/PVi/nbeRKEjdiYeoh0aOfI9zr3Ria9LO7V2PlMETtAXJS3uETEZkc8Be2oOl8mhd7Ew+5SRBXRYncNw==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/ui/-/ui-2.1.0.tgz", + "integrity": "sha512-e1kSwO6/D65TDRxi/rdeFRNUhCfKMWhA7dFZbc3AvLNw+HLvbTkYUvF/ldGtqGPghiHyYw/crMsA2CiT9S86Rg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.0.5", - "fast-glob": "^3.3.2", + "@vitest/utils": "2.1.0", "fflate": "^0.8.2", "flatted": "^3.3.1", "pathe": "^1.1.2", "sirv": "^2.0.4", + "tinyglobby": "^0.2.6", "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "2.0.5" + "vitest": "2.1.0" } }, "node_modules/@vitest/utils": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/utils/-/utils-2.0.5.tgz", - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/@vitest/utils/-/utils-2.1.0.tgz", + "integrity": "sha512-rreyfVe0PuNqJfKYUwfPDfi6rrp0VSu0Wgvp5WBqJonP+4NvXHk48X6oBam1Lj47Hy6jbJtnMj3OcRdrkTP0tA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.0.5", - "estree-walker": "^3.0.3", + "@vitest/pretty-format": "2.1.0", "loupe": "^3.1.1", "tinyrainbow": "^1.2.0" }, @@ -2876,6 +3205,19 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "peer": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://nexus3.linkurious.net/repository/npm/cac/-/cac-6.7.14.tgz", @@ -3049,6 +3391,21 @@ "node": ">=8" } }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "dev": true, + "license": "MIT" + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://nexus3.linkurious.net/repository/npm/cliui/-/cliui-8.0.1.tgz", @@ -3064,6 +3421,16 @@ "node": ">=12" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/codepage": { "version": "1.14.0", "resolved": "https://nexus3.linkurious.net/repository/npm/codepage/-/codepage-1.14.0.tgz", @@ -3171,6 +3538,18 @@ "dev": true, "license": "MIT" }, + "node_modules/core-js": { + "version": "3.38.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/crc-32": { "version": "1.2.2", "resolved": "https://nexus3.linkurious.net/repository/npm/crc-32/-/crc-32-1.2.2.tgz", @@ -3478,6 +3857,13 @@ "node": ">=8" } }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dev": true, + "license": "MIT" + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://nexus3.linkurious.net/repository/npm/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -3561,9 +3947,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.18", - "resolved": "https://nexus3.linkurious.net/repository/npm/electron-to-chromium/-/electron-to-chromium-1.5.18.tgz", - "integrity": "sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==", + "version": "1.5.22", + "resolved": "https://nexus3.linkurious.net/repository/npm/electron-to-chromium/-/electron-to-chromium-1.5.22.tgz", + "integrity": "sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==", "dev": true, "license": "ISC" }, @@ -4126,6 +4512,19 @@ "node": "*" } }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://nexus3.linkurious.net/repository/npm/espree/-/espree-9.6.1.tgz", @@ -4200,56 +4599,6 @@ "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://nexus3.linkurious.net/repository/npm/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://nexus3.linkurious.net/repository/npm/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/exit-on-epipe": { "version": "1.0.1", "resolved": "https://nexus3.linkurious.net/repository/npm/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", @@ -4346,6 +4695,17 @@ "reusify": "^1.0.4" } }, + "node_modules/feather-icons": { + "version": "4.29.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/feather-icons/-/feather-icons-4.29.2.tgz", + "integrity": "sha512-0TaCFTnBTVCz6U+baY2UJNKne5ifGh7sMG4ZC2LoBWCZdIyPa+y6UiR4lEYGws1JOFWdee8KAsAIvu0VcXqiqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "classnames": "^2.2.5", + "core-js": "^3.1.3" + } + }, "node_modules/fflate": { "version": "0.8.2", "resolved": "https://nexus3.linkurious.net/repository/npm/fflate/-/fflate-0.8.2.tgz", @@ -4661,6 +5021,16 @@ "node": ">=10" } }, + "node_modules/geist": { + "version": "1.3.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/geist/-/geist-1.3.1.tgz", + "integrity": "sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==", + "dev": true, + "license": "SIL OPEN FONT LICENSE", + "peerDependencies": { + "next": ">=13.2.0" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://nexus3.linkurious.net/repository/npm/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4719,6 +5089,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://nexus3.linkurious.net/repository/npm/get-stream/-/get-stream-6.0.1.tgz", @@ -5126,16 +5506,6 @@ "node": ">= 6" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://nexus3.linkurious.net/repository/npm/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -5252,6 +5622,16 @@ "node": ">= 0.4" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://nexus3.linkurious.net/repository/npm/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://nexus3.linkurious.net/repository/npm/is-arguments/-/is-arguments-1.1.1.tgz", @@ -5535,19 +5915,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://nexus3.linkurious.net/repository/npm/is-string/-/is-string-1.0.7.tgz", @@ -6146,7 +6513,6 @@ "resolved": "https://nexus3.linkurious.net/repository/npm/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", - "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -6267,13 +6633,6 @@ "node": ">=6.4.0" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://nexus3.linkurious.net/repository/npm/merge2/-/merge2-1.4.1.tgz", @@ -6321,19 +6680,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mimic-response": { "version": "2.1.0", "resolved": "https://nexus3.linkurious.net/repository/npm/mimic-response/-/mimic-response-2.1.0.tgz", @@ -6498,6 +6844,58 @@ "dev": true, "license": "MIT" }, + "node_modules/next": { + "version": "14.2.11", + "resolved": "https://nexus3.linkurious.net/repository/npm/next/-/next-14.2.11.tgz", + "integrity": "sha512-8MDFqHBhdmR2wdfaWc8+lW3A/hppFe1ggQ9vgIu/g2/2QEMYJrPoQP6b+VNk56gIug/bStysAmrpUKtj3XN8Bw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@next/env": "14.2.11", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.11", + "@next/swc-darwin-x64": "14.2.11", + "@next/swc-linux-arm64-gnu": "14.2.11", + "@next/swc-linux-arm64-musl": "14.2.11", + "@next/swc-linux-x64-gnu": "14.2.11", + "@next/swc-linux-x64-musl": "14.2.11", + "@next/swc-win32-arm64-msvc": "14.2.11", + "@next/swc-win32-ia32-msvc": "14.2.11", + "@next/swc-win32-x64-msvc": "14.2.11" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://nexus3.linkurious.net/repository/npm/node-fetch/-/node-fetch-2.7.0.tgz", @@ -6567,35 +6965,6 @@ "node": ">=6" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://nexus3.linkurious.net/repository/npm/npmlog/-/npmlog-5.0.1.tgz", @@ -6748,22 +7117,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/opener": { "version": "1.5.2", "resolved": "https://nexus3.linkurious.net/repository/npm/opener/-/opener-1.5.2.tgz", @@ -7103,9 +7456,9 @@ } }, "node_modules/postcss": { - "version": "8.4.45", - "resolved": "https://nexus3.linkurious.net/repository/npm/postcss/-/postcss-8.4.45.tgz", - "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "version": "8.4.31", + "resolved": "https://nexus3.linkurious.net/repository/npm/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -7122,10 +7475,11 @@ } ], "license": "MIT", + "peer": true, "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -7220,6 +7574,25 @@ "node": ">=0.8" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/protocol-buffers-schema": { "version": "3.6.0", "resolved": "https://nexus3.linkurious.net/repository/npm/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", @@ -7308,6 +7681,19 @@ "react": "^18.3.1" } }, + "node_modules/react-feather": { + "version": "2.0.10", + "resolved": "https://nexus3.linkurious.net/repository/npm/react-feather/-/react-feather-2.0.10.tgz", + "integrity": "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">=16.8.6" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://nexus3.linkurious.net/repository/npm/react-is/-/react-is-17.0.2.tgz", @@ -7315,6 +7701,17 @@ "dev": true, "license": "MIT" }, + "node_modules/react-number-format": { + "version": "5.4.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/react-number-format/-/react-number-format-5.4.2.tgz", + "integrity": "sha512-cg//jVdS49PYDgmcYoBnMMHl4XNTMuV723ZnHD2aXYtWWWqbVF3hjQ8iB+UZEuXapLbeA8P8H+1o6ZB1lcw3vg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://nexus3.linkurious.net/repository/npm/react-refresh/-/react-refresh-0.14.2.tgz", @@ -7325,6 +7722,97 @@ "node": ">=0.10.0" } }, + "node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://nexus3.linkurious.net/repository/npm/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://nexus3.linkurious.net/repository/npm/readable-stream/-/readable-stream-3.6.2.tgz", @@ -7465,9 +7953,9 @@ } }, "node_modules/rollup": { - "version": "4.21.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/rollup/-/rollup-4.21.2.tgz", - "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==", + "version": "4.21.3", + "resolved": "https://nexus3.linkurious.net/repository/npm/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", "dev": true, "license": "MIT", "dependencies": { @@ -7481,22 +7969,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.21.2", - "@rollup/rollup-android-arm64": "4.21.2", - "@rollup/rollup-darwin-arm64": "4.21.2", - "@rollup/rollup-darwin-x64": "4.21.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", - "@rollup/rollup-linux-arm-musleabihf": "4.21.2", - "@rollup/rollup-linux-arm64-gnu": "4.21.2", - "@rollup/rollup-linux-arm64-musl": "4.21.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", - "@rollup/rollup-linux-riscv64-gnu": "4.21.2", - "@rollup/rollup-linux-s390x-gnu": "4.21.2", - "@rollup/rollup-linux-x64-gnu": "4.21.2", - "@rollup/rollup-linux-x64-musl": "4.21.2", - "@rollup/rollup-win32-arm64-msvc": "4.21.2", - "@rollup/rollup-win32-ia32-msvc": "4.21.2", - "@rollup/rollup-win32-x64-msvc": "4.21.2", + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", "fsevents": "~2.3.2" } }, @@ -7869,6 +8357,16 @@ "node": ">= 0.4" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://nexus3.linkurious.net/repository/npm/string_decoder/-/string_decoder-1.3.0.tgz", @@ -7999,19 +8497,6 @@ "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://nexus3.linkurious.net/repository/npm/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://nexus3.linkurious.net/repository/npm/strip-indent/-/strip-indent-3.0.0.tgz", @@ -8061,6 +8546,31 @@ "node": ">=0.8.0" } }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/supercluster": { "version": "7.1.5", "resolved": "https://nexus3.linkurious.net/repository/npm/supercluster/-/supercluster-7.1.5.tgz", @@ -8122,6 +8632,13 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true, + "license": "MIT" + }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://nexus3.linkurious.net/repository/npm/tar/-/tar-6.2.1.tgz", @@ -8207,6 +8724,55 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyexec": { + "version": "0.3.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/tinyexec/-/tinyexec-0.3.0.tgz", + "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.6", + "resolved": "https://nexus3.linkurious.net/repository/npm/tinyglobby/-/tinyglobby-0.2.6.tgz", + "integrity": "sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==", + "dev": true, + "license": "ISC", + "dependencies": { + "fdir": "^6.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.3.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/fdir/-/fdir-6.3.0.tgz", + "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { "version": "1.0.1", "resolved": "https://nexus3.linkurious.net/repository/npm/tinypool/-/tinypool-1.0.1.tgz", @@ -8400,13 +8966,13 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://nexus3.linkurious.net/repository/npm/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "4.26.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8588,6 +9154,94 @@ "requires-port": "^1.0.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://nexus3.linkurious.net/repository/npm/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://nexus3.linkurious.net/repository/npm/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://nexus3.linkurious.net/repository/npm/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -8596,9 +9250,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.4.3", - "resolved": "https://nexus3.linkurious.net/repository/npm/vite/-/vite-5.4.3.tgz", - "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==", + "version": "5.4.5", + "resolved": "https://nexus3.linkurious.net/repository/npm/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", "dev": true, "license": "MIT", "dependencies": { @@ -8656,16 +9310,15 @@ } }, "node_modules/vite-node": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/vite-node/-/vite-node-2.0.5.tgz", - "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/vite-node/-/vite-node-2.1.0.tgz", + "integrity": "sha512-+ybYqBVUjYyIscoLzMWodus2enQDZOpGhcU6HdOVD6n8WZdk12w1GFL3mbnxLs7hPtRtqs1Wo5YF6/Tsr6fmhg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.5", + "debug": "^4.3.6", "pathe": "^1.1.2", - "tinyrainbow": "^1.2.0", "vite": "^5.0.0" }, "bin": { @@ -8678,31 +9331,60 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite/node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://nexus3.linkurious.net/repository/npm/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/vitest": { - "version": "2.0.5", - "resolved": "https://nexus3.linkurious.net/repository/npm/vitest/-/vitest-2.0.5.tgz", - "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==", + "version": "2.1.0", + "resolved": "https://nexus3.linkurious.net/repository/npm/vitest/-/vitest-2.1.0.tgz", + "integrity": "sha512-XuuEeyNkqbfr0FtAvd9vFbInSSNY1ykCQTYQ0sj9wPy4hx+1gR7gqVNdW0AX2wrrM1wWlN5fnJDjF9xG6mYRSQ==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.5", - "@vitest/pretty-format": "^2.0.5", - "@vitest/runner": "2.0.5", - "@vitest/snapshot": "2.0.5", - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", + "@vitest/expect": "2.1.0", + "@vitest/mocker": "2.1.0", + "@vitest/pretty-format": "^2.1.0", + "@vitest/runner": "2.1.0", + "@vitest/snapshot": "2.1.0", + "@vitest/spy": "2.1.0", + "@vitest/utils": "2.1.0", "chai": "^5.1.1", - "debug": "^4.3.5", - "execa": "^8.0.1", - "magic-string": "^0.30.10", + "debug": "^4.3.6", + "magic-string": "^0.30.11", "pathe": "^1.1.2", "std-env": "^3.7.0", - "tinybench": "^2.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.0", "tinypool": "^1.0.0", "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.0.5", + "vite-node": "2.1.0", "why-is-node-running": "^2.3.0" }, "bin": { @@ -8717,8 +9399,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.0.5", - "@vitest/ui": "2.0.5", + "@vitest/browser": "2.1.0", + "@vitest/ui": "2.1.0", "happy-dom": "*", "jsdom": "*" }, @@ -9192,4 +9874,4 @@ } } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index a438283..21cfb9a 100644 --- a/package.json +++ b/package.json @@ -48,14 +48,15 @@ }, "peerDependencies": { "@linkurious/ogma": "^5.1.0", - "react": "^18.0.8", - "react-dom": "^18.0.8" + "react": ">=17.0.0", + "react-dom": ">=17.0.0" }, "devDependencies": { - "@geist-ui/core": "^2.3.8", - "@geist-ui/icons": "^1.0.1", + "@geist-ui/core": "2.3.6", + "@geist-ui/icons": "^1.0.2", "@linkurious/code-tools": "^0.0.14", "@linkurious/eslint-config-ogma": "^1.0.5", + "@mantine/core": "^7.12.2", "@next/bundle-analyzer": "^14.0.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^14.0.0", @@ -70,10 +71,13 @@ "@vitest/ui": "latest", "canvas": "^2.11.0", "dts-bundle-generator": "^9.0.0", + "feather-icons": "^4.29.2", + "geist": "^1.3.1", "gh-pages": "^6.0.0", "jsdom": "latest", "leaflet": "^1.8.0", "prettier": "^3.0.0", + "react-feather": "^2.0.10", "tslib": "^2.5.0", "typescript": "^5.3.2", "vite": "latest", @@ -88,6 +92,5 @@ "bugs": { "url": "https://github.com/linkurious/ogma-react/issues" }, - "homepage": "https://github.com/linkurious/ogma-react#readme", - "dependencies": {} -} \ No newline at end of file + "homepage": "https://github.com/linkurious/ogma-react#readme" +} diff --git a/test/styles.test.tsx b/test/styles.test.tsx index 7b822fd..7ad48fa 100644 --- a/test/styles.test.tsx +++ b/test/styles.test.tsx @@ -1,155 +1,151 @@ -import React from "react"; -import { render } from "react-dom"; -import { act } from "react-dom/test-utils"; +import React, { act, createRef } from "react"; +import { Root, createRoot } from "react-dom/client"; +import { userEvent, waitFor } from "./utils"; import OgmaLib from "@linkurious/ogma"; import { Ogma, NodeStyleRule, EdgeStyleRule } from "../src"; import graph from "./fixtures/simple_graph.json"; describe("styles", () => { - let div: HTMLDivElement; - beforeEach(() => (div = document.createElement("div"))); + let div: Root; + let element: HTMLDivElement; + + beforeEach(() => { + element = document.createElement("div"); + div = createRoot(element); + }); it("Node style component renders without crashing", () => { - render( - - - , - div + act(() => + div.render( + + + + ) ); }); - it("Passes node attributes", () => { - return new Promise((resolve) => { - const onReady = (ogma: OgmaLib) => { - ogma.view.afterNextFrame().then(() => { - expect(ogma.getNodes().getAttribute("color")).toStrictEqual([ - "red", - "red", - "red", - ]); - resolve(null); - }); - }; - render( - + it("Passes node attributes", async () => { + const ref = createRef(); + act(() => + div.render( + - , - div - ); - }); + + ) + ); + await waitFor(() => expect(ref.current).toBeTruthy()); + const ogma = ref.current!; + await ogma.view.afterNextFrame(); + expect(ogma.getNodes().getAttribute("color")).toStrictEqual([ + "red", + "red", + "red", + ]); }); - it("Uses selector for NodeStyle", () => { - return new Promise((resolve) => { - const onReady = (ogma: OgmaLib) => { - ogma.view.afterNextFrame().then(() => { - expect(ogma.getNodes().getAttribute("color")).toStrictEqual([ - "red", - "red", - "green", - ]); - resolve(null); - }); - }; - render( - + it("Uses selector for NodeStyle", async () => { + const ref = createRef(); + act(() => + div.render( + Number(node.getId()) < 2} /> - , - div - ); - }); + + ) + ); + await waitFor(() => expect(ref.current).toBeTruthy()); + const ogma = ref.current!; + await ogma.view.afterNextFrame(); + expect(ogma.getNodes().getAttribute("color")).toStrictEqual([ + "red", + "red", + "green", + ]); }); - it("NodeStyle cleans up after being removed", () => { - const Test = ({ onReady }: { onReady: (ogma: OgmaLib) => void }) => { + it("NodeStyle cleans up after being removed", async () => { + const ref = createRef(); + const Test = () => { const [style, setStyle] = React.useState(true); return ( - + {style && } ); }; - let ogmaRef: OgmaLib; - act(() => { - render( (ogmaRef = ogma)} />, div); - }); - const button = div.querySelector("button") as HTMLButtonElement; - act(() => button.click()); - expect(ogmaRef!.styles.getNodeRules().length).toBe(0); + act(() => div.render()); + await waitFor(() => expect(ref.current).toBeTruthy()); + const button = element.querySelector("button") as HTMLButtonElement; + await act(() => userEvent.click(button)); + expect(ref.current!.styles.getNodeRules().length).toBe(0); }); it("Edge style component renders without crashing", () => { - render( - - - , - div + act(() => + div.render( + + + + ) ); }); - it("Passes edge attributes", () => { - return new Promise((resolve) => { - const onReady = (ogma: OgmaLib) => { - ogma.view.afterNextFrame().then(() => { - expect(ogma.getEdges().getAttribute("color")).toStrictEqual([ - "red", - "red", - ]); - resolve(null); - }); - }; - render( - + it("Passes edge attributes", async () => { + const ref = createRef(); + act(() => + div.render( + - , - div - ); - }); + + ) + ); + await waitFor(() => expect(ref.current).toBeTruthy()); + await ref.current!.view.afterNextFrame(); + + expect(ref.current!.getEdges().getAttribute("color")).toStrictEqual([ + "red", + "red", + ]); }); - it("Uses selector for EdgeStyle", () => { - return new Promise((resolve) => { - const onReady = (ogma: OgmaLib) => { - ogma.view.afterNextFrame().then(() => { - expect(ogma.getEdges().getAttribute("color")).toStrictEqual([ - "grey", - "green", - ]); - resolve(null); - }); - }; - render( - + it("Uses selector for EdgeStyle", async () => { + const ref = createRef(); + act(() => + div.render( + Number(edge.getId()) > 0} /> - , - div - ); - }); + + ) + ); + await waitFor(() => expect(ref.current).toBeTruthy()); + await ref.current!.view.afterNextFrame(); + expect(ref.current!.getEdges().getAttribute("color")).toStrictEqual([ + "grey", + "green", + ]); }); - it("EdgeStyle cleans up after being removed", () => { - const Test = ({ onReady }: { onReady: (ogma: OgmaLib) => void }) => { + it("EdgeStyle cleans up after being removed", async () => { + const ref = createRef(); + const Test = () => { const [style, setStyle] = React.useState(true); return ( - + {style && } ); }; - let ogmaRef: OgmaLib; - act(() => { - render( (ogmaRef = ogma)} />, div); - }); - const button = div.querySelector("button") as HTMLButtonElement; - act(() => button.click()); - expect(ogmaRef!.styles.getEdgeRules().length).toBe(0); + act(() => div.render()); + await waitFor(() => expect(ref.current).toBeTruthy()); + const button = element.querySelector("button") as HTMLButtonElement; + await act(() => userEvent.click(button)); + expect(ref.current!.styles.getEdgeRules().length).toBe(0); }); }); diff --git a/test/transformations/edgeFilter.test.tsx b/test/transformations/edgeFilter.test.tsx index 1a764ca..af88497 100644 --- a/test/transformations/edgeFilter.test.tsx +++ b/test/transformations/edgeFilter.test.tsx @@ -1,5 +1,6 @@ import { EdgeFilterTest, ref } from "./test-components"; import { render, userEvent, screen } from "../utils"; +import { act } from "react"; import OgmaLib from "@linkurious/ogma"; describe("Edge filter", () => { let div: HTMLDivElement; @@ -12,7 +13,7 @@ describe("Edge filter", () => { .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0, 1]); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0]); @@ -26,7 +27,7 @@ describe("Edge filter", () => { .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0]); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0, 1]); @@ -40,7 +41,7 @@ describe("Edge filter", () => { .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0]); }) - .then(() => userEvent.click(screen.getByText("setCriteria"))) + .then(() => act(() => userEvent.click(screen.getByText("setCriteria")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().getId()).toEqual([1]); diff --git a/test/transformations/edgeGrouping.test.tsx b/test/transformations/edgeGrouping.test.tsx index 6e49719..294989f 100644 --- a/test/transformations/edgeGrouping.test.tsx +++ b/test/transformations/edgeGrouping.test.tsx @@ -1,5 +1,6 @@ import { EdgeGroupingTest, ref } from "./test-components"; import { render, userEvent, screen } from "../utils"; +import { act } from "react"; import OgmaLib from "@linkurious/ogma"; describe("Edge grouping", () => { let div: HTMLDivElement; @@ -12,7 +13,7 @@ describe("Edge grouping", () => { .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0, 1, 2, 3]); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0, 2, `group-1[0-2]`]); @@ -26,7 +27,7 @@ describe("Edge grouping", () => { .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0, 2, `group-1[0-2]`]); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0, 1, 2, 3]); @@ -40,7 +41,7 @@ describe("Edge grouping", () => { .then(() => { expect(ref.current?.getEdges().getId()).toEqual([0, 2, `group-1[0-2]`]); }) - .then(() => userEvent.click(screen.getByText("setGrouping"))) + .then(() => act(() => userEvent.click(screen.getByText("setGrouping")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().getId()).toEqual([ diff --git a/test/transformations/neighborGeneration.test.tsx b/test/transformations/neighborGeneration.test.tsx index 9b1a5b6..7f359c4 100644 --- a/test/transformations/neighborGeneration.test.tsx +++ b/test/transformations/neighborGeneration.test.tsx @@ -1,5 +1,6 @@ import { NeighborGenerationTest, ref } from "./test-components"; import { render, userEvent, screen } from "../utils"; +import { act } from "react"; import OgmaLib from "@linkurious/ogma"; describe("Neighbor generation", () => { let div: HTMLDivElement; @@ -12,7 +13,7 @@ describe("Neighbor generation", () => { .then(() => { expect(ref.current?.getEdges().size).toEqual(0); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().size).toEqual(2); @@ -26,7 +27,7 @@ describe("Neighbor generation", () => { .then(() => { expect(ref.current?.getEdges().size).toEqual(2); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().size).toEqual(0); @@ -40,7 +41,7 @@ describe("Neighbor generation", () => { .then(() => { expect(ref.current?.getEdges().size).toEqual(2); }) - .then(() => userEvent.click(screen.getByText("setGenerator"))) + .then(() => act(() => userEvent.click(screen.getByText("setGenerator")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().size).toEqual(3); diff --git a/test/transformations/neighborMerging.test.tsx b/test/transformations/neighborMerging.test.tsx index 507a70e..0294e50 100644 --- a/test/transformations/neighborMerging.test.tsx +++ b/test/transformations/neighborMerging.test.tsx @@ -1,5 +1,6 @@ import { NeighborMergingTest, ref } from "./test-components"; import { render, userEvent, screen } from "../utils"; +import { act } from "react"; import OgmaLib from "@linkurious/ogma"; describe("Neighbor merging", () => { let div: HTMLDivElement; @@ -12,7 +13,7 @@ describe("Neighbor merging", () => { .then(() => { expect(ref.current?.getEdges().size).toEqual(2); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().size).toEqual(1); @@ -26,7 +27,7 @@ describe("Neighbor merging", () => { .then(() => { expect(ref.current?.getEdges().size).toEqual(1); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().size).toEqual(2); @@ -40,7 +41,7 @@ describe("Neighbor merging", () => { .then(() => { expect(ref.current?.getEdges().size).toEqual(1); }) - .then(() => userEvent.click(screen.getByText("setGenerator"))) + .then(() => act(() => userEvent.click(screen.getByText("setGenerator")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().size).toEqual(0); diff --git a/test/transformations/nodeCollapsing.test.tsx b/test/transformations/nodeCollapsing.test.tsx index d780bdd..1f10ee9 100644 --- a/test/transformations/nodeCollapsing.test.tsx +++ b/test/transformations/nodeCollapsing.test.tsx @@ -1,5 +1,6 @@ import { NodeCollapsingTest, ref } from "./test-components"; import { render, userEvent, screen } from "../utils"; +import { act } from "react"; import OgmaLib from "@linkurious/ogma"; describe("Node Collapsing", () => { let div: HTMLDivElement; @@ -12,7 +13,7 @@ describe("Node Collapsing", () => { .then(() => { expect(ref.current?.getEdges().size).toEqual(2); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().size).toEqual(1); @@ -26,7 +27,7 @@ describe("Node Collapsing", () => { .then(() => { expect(ref.current?.getEdges().size).toEqual(1); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getEdges().size).toEqual(2); diff --git a/test/transformations/nodeFilter.test.tsx b/test/transformations/nodeFilter.test.tsx index 5e2e6ef..dbc7ae4 100644 --- a/test/transformations/nodeFilter.test.tsx +++ b/test/transformations/nodeFilter.test.tsx @@ -1,5 +1,6 @@ import { NodeFilterTest, ref } from "./test-components"; import { render, userEvent, screen } from "../utils"; +import { act } from "react"; import OgmaLib from "@linkurious/ogma"; describe("Node filter", () => { let div: HTMLDivElement; @@ -12,7 +13,7 @@ describe("Node filter", () => { .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0, 1, 2]); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0]); @@ -26,7 +27,7 @@ describe("Node filter", () => { .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0]); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0, 1, 2]); @@ -40,7 +41,7 @@ describe("Node filter", () => { .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0]); }) - .then(() => userEvent.click(screen.getByText("setCriteria"))) + .then(() => act(() => userEvent.click(screen.getByText("setCriteria")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getNodes().getId()).toEqual([1]); diff --git a/test/transformations/nodeGrouping.test.tsx b/test/transformations/nodeGrouping.test.tsx index 355dc14..9dd6c71 100644 --- a/test/transformations/nodeGrouping.test.tsx +++ b/test/transformations/nodeGrouping.test.tsx @@ -1,5 +1,6 @@ import { NodeGroupingTest, ref } from "./test-components"; import { render, userEvent, screen } from "../utils"; +import { act } from "react"; import OgmaLib from "@linkurious/ogma"; describe("Node grouping", () => { let div: HTMLDivElement; @@ -12,7 +13,7 @@ describe("Node grouping", () => { .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0, 1, 2]); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0, 2, `group-1`]); @@ -26,7 +27,7 @@ describe("Node grouping", () => { .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0, 2, `group-1`]); }) - .then(() => userEvent.click(screen.getByText("toggle"))) + .then(() => act(() => userEvent.click(screen.getByText("toggle")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0, 1, 2]); @@ -40,7 +41,7 @@ describe("Node grouping", () => { .then(() => { expect(ref.current?.getNodes().getId()).toEqual([0, 2, `group-1`]); }) - .then(() => userEvent.click(screen.getByText("setGrouping"))) + .then(() => act(() => userEvent.click(screen.getByText("setGrouping")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { expect(ref.current?.getNodes().getId()).toEqual([`group-1`, `group-0`]); @@ -67,7 +68,7 @@ describe("Node grouping", () => { .then(() => { expect(count).toEqual(10); }) - .then(() => userEvent.click(screen.getByText("setGrouping"))) + .then(() => act(() => userEvent.click(screen.getByText("setGrouping")))) .then(() => ref.current?.transformations.afterNextUpdate()) .then(() => { //expect(count).toEqual(10); diff --git a/tsconfig.json b/tsconfig.json index 38fd2f2..582c5a1 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -31,5 +31,5 @@ "**/*.ts", "**/*.tsx" ], - "exclude": ["node_modules", "demo", "test"] + "exclude": ["node_modules"] }