From 0f47a4988b449fbc1a7bb3f7a4f11fa8c8629810 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 10 Jun 2025 22:22:47 +0300 Subject: [PATCH] refactor(canvas): proof of concept for preact-based canvas --- apps/client/package.json | 9 +- .../client/src/widgets/type_widgets/canvas.ts | 112 +---- .../src/widgets/type_widgets/canvas_el.ts | 7 + apps/client/vite.config.mts | 16 +- pnpm-lock.yaml | 404 +++++++++--------- 5 files changed, 224 insertions(+), 324 deletions(-) create mode 100644 apps/client/src/widgets/type_widgets/canvas_el.ts diff --git a/apps/client/package.json b/apps/client/package.json index 0b33bdacd..1f2d2aa38 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -51,8 +51,7 @@ "mind-elixir": "4.6.0", "normalize.css": "8.0.1", "panzoom": "9.4.3", - "react": "19.1.0", - "react-dom": "19.1.0", + "preact": "10.26.8", "split.js": "1.6.5", "svg-pan-zoom": "3.6.2", "vanilla-js-wheel-zoom": "9.0.4" @@ -64,8 +63,6 @@ "@types/leaflet": "1.9.18", "@types/leaflet-gpx": "1.3.7", "@types/mark.js": "8.11.12", - "@types/react": "19.1.7", - "@types/react-dom": "19.1.6", "copy-webpack-plugin": "13.0.0", "happy-dom": "17.6.3", "script-loader": "0.7.2", @@ -75,7 +72,9 @@ "name": "client", "targets": { "serve": { - "dependsOn": ["^build"] + "dependsOn": [ + "^build" + ] } } } diff --git a/apps/client/src/widgets/type_widgets/canvas.ts b/apps/client/src/widgets/type_widgets/canvas.ts index 53c940970..6ce7a3b83 100644 --- a/apps/client/src/widgets/type_widgets/canvas.ts +++ b/apps/client/src/widgets/type_widgets/canvas.ts @@ -1,16 +1,8 @@ import TypeWidget from "./type_widget.js"; import utils from "../../services/utils.js"; -import linkService from "../../services/link.js"; import server from "../../services/server.js"; import type FNote from "../../entities/fnote.js"; import options from "../../services/options.js"; -import type { ExcalidrawElement, Theme } from "@excalidraw/excalidraw/element/types"; -import type { AppState, BinaryFileData, ExcalidrawImperativeAPI, ExcalidrawProps, LibraryItem, SceneData } from "@excalidraw/excalidraw/types"; -import type { JSX } from "react"; -import type React from "react"; -import type { Root } from "react-dom/client"; -import "@excalidraw/excalidraw/index.css"; -import asset_path from "../../asset_path.js"; const TPL = /*html*/`
@@ -121,7 +113,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget { private excalidrawWrapperRef!: React.RefObject; private $render!: JQuery; - private root?: Root; private reactHandlers!: JQuery; constructor() { @@ -191,14 +182,8 @@ export default class ExcalidrawTypeWidget extends TypeWidget { } (window.process.env as any).PREACT = false; - const excalidraw = await import("@excalidraw/excalidraw"); - this.excalidrawLib = excalidraw; - - const { createRoot } = await import("react-dom/client"); - const React = (await import("react")).default; - this.root?.unmount(); - this.root = createRoot(renderElement); - this.root.render(React.createElement(() => this.createExcalidrawReactApp(React, excalidraw.Excalidraw))); + const renderCanvas = (await import("./canvas_el.js")).default; + renderCanvas(renderElement); } /** @@ -470,99 +455,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget { } } - createExcalidrawReactApp(react: typeof React, excalidrawComponent: React.MemoExoticComponent<(props: ExcalidrawProps) => JSX.Element>) { - const excalidrawWrapperRef = react.useRef(null); - this.excalidrawWrapperRef = excalidrawWrapperRef; - const [dimensions, setDimensions] = react.useState<{ width?: number; height?: number }>({ - width: undefined, - height: undefined - }); - - react.useEffect(() => { - if (excalidrawWrapperRef.current) { - const dimensions = { - width: excalidrawWrapperRef.current.getBoundingClientRect().width, - height: excalidrawWrapperRef.current.getBoundingClientRect().height - }; - setDimensions(dimensions); - } - - const onResize = () => { - if (this.note?.type !== "canvas") { - return; - } - - if (excalidrawWrapperRef.current) { - const dimensions = { - width: excalidrawWrapperRef.current.getBoundingClientRect().width, - height: excalidrawWrapperRef.current.getBoundingClientRect().height - }; - setDimensions(dimensions); - } - }; - - window.addEventListener("resize", onResize); - - return () => window.removeEventListener("resize", onResize); - }, [excalidrawWrapperRef]); - - const onLinkOpen = react.useCallback>((element, event) => { - let link = element.link; - if (!link) { - return false; - } - - if (link.startsWith("root/")) { - link = "#" + link; - } - - const { nativeEvent } = event.detail; - - event.preventDefault(); - - return linkService.goToLinkExt(nativeEvent, link, null); - }, []); - - return react.createElement( - react.Fragment, - null, - react.createElement( - "div", - { - className: "excalidraw-wrapper", - ref: excalidrawWrapperRef - }, - react.createElement(excalidrawComponent, { - // this makes sure that 1) manual theme switch button is hidden 2) theme stays as it should after opening menu - theme: this.themeStyle, - excalidrawAPI: (api: ExcalidrawImperativeAPI) => { - this.excalidrawApi = api; - }, - onLibraryChange: () => { - this.libraryChanged = true; - - this.saveData(); - }, - onChange: () => this.onChangeHandler(), - viewModeEnabled: options.is("databaseReadonly"), - zenModeEnabled: false, - gridModeEnabled: false, - isCollaborating: false, - detectScroll: false, - handleKeyboardGlobally: false, - autoFocus: false, - onLinkOpen, - UIOptions: { - canvasActions: { - saveToActiveFile: false, - export: false - } - } - }) - ) - ); - } - /** * needed to ensure, that multipleOnChangeHandler calls do not trigger a save. * we compare the scene version as suggested in: diff --git a/apps/client/src/widgets/type_widgets/canvas_el.ts b/apps/client/src/widgets/type_widgets/canvas_el.ts new file mode 100644 index 000000000..814018519 --- /dev/null +++ b/apps/client/src/widgets/type_widgets/canvas_el.ts @@ -0,0 +1,7 @@ +import "@excalidraw/excalidraw/index.css"; +import { Excalidraw } from "@excalidraw/excalidraw"; +import { h, render } from "preact"; + +export default function renderCanvas(targetEl: HTMLElement) { + render(h(Excalidraw, null, "Hello world"), targetEl); +} diff --git a/apps/client/vite.config.mts b/apps/client/vite.config.mts index 05dd85e53..a3f00a714 100644 --- a/apps/client/vite.config.mts +++ b/apps/client/vite.config.mts @@ -43,11 +43,22 @@ export default defineConfig(() => ({ { find: "@triliumnext/highlightjs", replacement: resolve(__dirname, "node_modules/@triliumnext/highlightjs/dist") + }, + { + find: "react", + replacement: "preact/compat" + }, + { + find: "react-dom", + replacement: "preact/compat" } ], dedupe: [ "react", - "react-dom" + "react-dom", + "preact", + "preact/compat", + "preact/hooks" ] }, // Uncomment this if you are using workers. @@ -97,5 +108,8 @@ export default defineConfig(() => ({ }, commonjsOptions: { transformMixedEsModules: true, + }, + define: { + "process.env.IS_PREACT": JSON.stringify("true"), } })); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8158b90c2..6e34d4dba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -158,7 +158,7 @@ importers: version: 9.28.0 '@excalidraw/excalidraw': specifier: 0.18.0 - version: 0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) '@fullcalendar/core': specifier: 6.1.17 version: 6.1.17 @@ -276,12 +276,9 @@ importers: panzoom: specifier: 9.4.3 version: 9.4.3 - react: - specifier: 19.1.0 - version: 19.1.0 - react-dom: - specifier: 19.1.0 - version: 19.1.0(react@19.1.0) + preact: + specifier: 10.26.8 + version: 10.26.8 split.js: specifier: 1.6.5 version: 1.6.5 @@ -310,12 +307,6 @@ importers: '@types/mark.js': specifier: 8.11.12 version: 8.11.12 - '@types/react': - specifier: 19.1.7 - version: 19.1.7 - '@types/react-dom': - specifier: 19.1.6 - version: 19.1.6(@types/react@19.1.7) copy-webpack-plugin: specifier: 13.0.0 version: 13.0.0(webpack@5.99.9(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.5)) @@ -10781,8 +10772,8 @@ packages: preact@10.12.1: resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==} - preact@10.26.5: - resolution: {integrity: sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==} + preact@10.26.8: + resolution: {integrity: sha512-1nMfdFjucm5hKvq0IClqZwK4FJkGXhRrQstOQ3P4vp8HxKrJEMFcY6RdBRVTdfQS/UlnX6gfbPuTvaqx/bDoeQ==} prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} @@ -11016,10 +11007,6 @@ packages: resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} engines: {node: '>=0.10.0'} - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} - engines: {node: '>=0.10.0'} - read-binary-file-arch@1.0.6: resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} hasBin: true @@ -15566,14 +15553,14 @@ snapshots: '@eslint/core': 0.14.0 levn: 0.4.1 - '@excalidraw/excalidraw@0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@excalidraw/excalidraw@0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@braintree/sanitize-url': 6.0.2 '@excalidraw/laser-pointer': 1.3.1 '@excalidraw/mermaid-to-excalidraw': 1.1.2 '@excalidraw/random-username': 1.1.0 - '@radix-ui/react-popover': 1.1.6(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-tabs': 1.0.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-popover': 1.1.6(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-tabs': 1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0) browser-fs-access: 0.29.1 canvas-roundrect-polyfill: 0.0.1 clsx: 1.1.1 @@ -15582,8 +15569,8 @@ snapshots: fractional-indexing: 3.2.0 fuzzy: 0.1.3 image-blob-reduce: 3.0.1 - jotai: 2.11.0(@types/react@19.1.7)(react@19.1.0) - jotai-scope: 0.7.2(jotai@2.11.0(@types/react@19.1.7)(react@19.1.0))(react@19.1.0) + jotai: 2.11.0(@types/react@19.1.7)(react@16.14.0) + jotai-scope: 0.7.2(jotai@2.11.0(@types/react@19.1.7)(react@16.14.0))(react@16.14.0) lodash.debounce: 4.0.8 lodash.throttle: 4.1.1 nanoid: 4.0.2 @@ -15596,11 +15583,11 @@ snapshots: png-chunks-extract: 1.0.0 points-on-curve: 1.0.1 pwacompat: 2.0.17 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) roughjs: 4.6.4 sass: 1.51.0 - tunnel-rat: 0.1.2(@types/react@19.1.7)(react@19.1.0) + tunnel-rat: 0.1.2(@types/react@19.1.7)(react@16.14.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -15637,11 +15624,11 @@ snapshots: '@floating-ui/core': 1.6.9 '@floating-ui/utils': 0.2.9 - '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@floating-ui/dom': 1.6.13 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) '@floating-ui/utils@0.2.9': {} @@ -16973,275 +16960,275 @@ snapshots: '@radix-ui/primitive@1.1.1': {} - '@radix-ui/react-arrow@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-arrow@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-collection@1.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - '@radix-ui/react-compose-refs': 1.0.0(react@19.1.0) - '@radix-ui/react-context': 1.0.0(react@19.1.0) - '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.0.1(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) + '@radix-ui/react-context': 1.0.0(react@16.14.0) + '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-slot': 1.0.1(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) - '@radix-ui/react-compose-refs@1.0.0(react@19.1.0)': + '@radix-ui/react-compose-refs@1.0.0(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - react: 19.1.0 + react: 16.14.0 - '@radix-ui/react-compose-refs@1.1.1(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.1.7)(react@16.14.0)': dependencies: - react: 19.1.0 + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-context@1.0.0(react@19.1.0)': + '@radix-ui/react-context@1.0.0(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - react: 19.1.0 + react: 16.14.0 - '@radix-ui/react-context@1.1.1(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-context@1.1.1(@types/react@19.1.7)(react@16.14.0)': dependencies: - react: 19.1.0 + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-direction@1.0.0(react@19.1.0)': + '@radix-ui/react-direction@1.0.0(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - react: 19.1.0 + react: 16.14.0 - '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-focus-guards@1.1.1(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-focus-guards@1.1.1(@types/react@19.1.7)(react@16.14.0)': dependencies: - react: 19.1.0 + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-id@1.0.0(react@19.1.0)': + '@radix-ui/react-id@1.0.0(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - '@radix-ui/react-use-layout-effect': 1.0.0(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.0.0(react@16.14.0) + react: 16.14.0 - '@radix-ui/react-id@1.1.0(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-id@1.1.0(@types/react@19.1.7)(react@16.14.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-popover@1.1.6(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-popover@1.1.6(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.1.7)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.1.7)(react@16.14.0) aria-hidden: 1.2.4 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.7)(react@19.1.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) + react-remove-scroll: 2.6.3(@types/react@19.1.7)(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-popper@1.2.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-popper@1.2.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.1.7)(react@19.1.0) + '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-arrow': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.1.7)(react@16.14.0) '@radix-ui/rect': 1.1.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-portal@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-presence@1.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.0.0(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - '@radix-ui/react-compose-refs': 1.0.0(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.0.0(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) + '@radix-ui/react-use-layout-effect': 1.0.0(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) - '@radix-ui/react-presence@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-primitive@1.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - '@radix-ui/react-slot': 1.0.1(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-slot': 1.0.1(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) - '@radix-ui/react-primitive@2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: - '@radix-ui/react-slot': 1.1.2(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-roving-focus@1.0.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-roving-focus@1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-collection': 1.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.0.0(react@19.1.0) - '@radix-ui/react-context': 1.0.0(react@19.1.0) - '@radix-ui/react-direction': 1.0.0(react@19.1.0) - '@radix-ui/react-id': 1.0.0(react@19.1.0) - '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.0.0(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.0.0(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collection': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) + '@radix-ui/react-context': 1.0.0(react@16.14.0) + '@radix-ui/react-direction': 1.0.0(react@16.14.0) + '@radix-ui/react-id': 1.0.0(react@16.14.0) + '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-use-callback-ref': 1.0.0(react@16.14.0) + '@radix-ui/react-use-controllable-state': 1.0.0(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) - '@radix-ui/react-slot@1.0.1(react@19.1.0)': + '@radix-ui/react-slot@1.0.1(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - '@radix-ui/react-compose-refs': 1.0.0(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) + react: 16.14.0 - '@radix-ui/react-slot@1.1.2(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-slot@1.1.2(@types/react@19.1.7)(react@16.14.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-tabs@1.0.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tabs@1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-context': 1.0.0(react@19.1.0) - '@radix-ui/react-direction': 1.0.0(react@19.1.0) - '@radix-ui/react-id': 1.0.0(react@19.1.0) - '@radix-ui/react-presence': 1.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.0.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.0.0(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-context': 1.0.0(react@16.14.0) + '@radix-ui/react-direction': 1.0.0(react@16.14.0) + '@radix-ui/react-id': 1.0.0(react@16.14.0) + '@radix-ui/react-presence': 1.0.0(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-roving-focus': 1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-use-controllable-state': 1.0.0(react@16.14.0) + react: 16.14.0 + react-dom: 19.1.0(react@16.14.0) - '@radix-ui/react-use-callback-ref@1.0.0(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.0.0(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - react: 19.1.0 + react: 16.14.0 - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.1.7)(react@16.14.0)': dependencies: - react: 19.1.0 + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-use-controllable-state@1.0.0(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.0.0(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - '@radix-ui/react-use-callback-ref': 1.0.0(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-callback-ref': 1.0.0(react@16.14.0) + react: 16.14.0 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.1.7)(react@16.14.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.1.7)(react@16.14.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-use-layout-effect@1.0.0(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.0.0(react@16.14.0)': dependencies: '@babel/runtime': 7.27.1 - react: 19.1.0 + react: 16.14.0 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.1.7)(react@16.14.0)': dependencies: - react: 19.1.0 + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-use-rect@1.1.0(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-use-rect@1.1.0(@types/react@19.1.7)(react@16.14.0)': dependencies: '@radix-ui/rect': 1.1.0 - react: 19.1.0 + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-use-size@1.1.0(@types/react@19.1.7)(react@19.1.0)': + '@radix-ui/react-use-size@1.1.0(@types/react@19.1.7)(react@16.14.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 optionalDependencies: '@types/react': 19.1.7 @@ -18016,10 +18003,12 @@ snapshots: '@types/react-dom@19.1.6(@types/react@19.1.7)': dependencies: '@types/react': 19.1.7 + optional: true '@types/react@19.1.7': dependencies: csstype: 3.1.3 + optional: true '@types/readdir-glob@1.1.5': dependencies: @@ -20281,7 +20270,8 @@ snapshots: '@asamuzakjp/css-color': 3.1.4 rrweb-cssom: 0.8.0 - csstype@3.1.3: {} + csstype@3.1.3: + optional: true cytoscape-cose-bilkent@4.1.0(cytoscape@3.31.2): dependencies: @@ -21695,7 +21685,7 @@ snapshots: dependencies: d3-selection: 3.0.0 kapsule: 1.16.3 - preact: 10.26.5 + preact: 10.26.8 flora-colossus@2.0.0: dependencies: @@ -23137,15 +23127,15 @@ snapshots: dependencies: '@panva/asn1.js': 1.0.0 - jotai-scope@0.7.2(jotai@2.11.0(@types/react@19.1.7)(react@19.1.0))(react@19.1.0): + jotai-scope@0.7.2(jotai@2.11.0(@types/react@19.1.7)(react@16.14.0))(react@16.14.0): dependencies: - jotai: 2.11.0(@types/react@19.1.7)(react@19.1.0) - react: 19.1.0 + jotai: 2.11.0(@types/react@19.1.7)(react@16.14.0) + react: 16.14.0 - jotai@2.11.0(@types/react@19.1.7)(react@19.1.0): + jotai@2.11.0(@types/react@19.1.7)(react@16.14.0): optionalDependencies: '@types/react': 19.1.7 - react: 19.1.0 + react: 16.14.0 jpeg-js@0.4.4: {} @@ -25431,7 +25421,7 @@ snapshots: preact@10.12.1: {} - preact@10.26.5: {} + preact@10.26.8: {} prebuild-install@7.1.3: dependencies: @@ -25614,9 +25604,9 @@ snapshots: react: 16.14.0 scheduler: 0.19.1 - react-dom@19.1.0(react@19.1.0): + react-dom@19.1.0(react@16.14.0): dependencies: - react: 19.1.0 + react: 16.14.0 scheduler: 0.26.0 react-interactive@0.8.3(react@16.14.0): @@ -25634,22 +25624,22 @@ snapshots: react-refresh@0.17.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.1.7)(react@19.1.0): + react-remove-scroll-bar@2.3.8(@types/react@19.1.7)(react@16.14.0): dependencies: - react: 19.1.0 - react-style-singleton: 2.2.3(@types/react@19.1.7)(react@19.1.0) + react: 16.14.0 + react-style-singleton: 2.2.3(@types/react@19.1.7)(react@16.14.0) tslib: 2.8.1 optionalDependencies: '@types/react': 19.1.7 - react-remove-scroll@2.6.3(@types/react@19.1.7)(react@19.1.0): + react-remove-scroll@2.6.3(@types/react@19.1.7)(react@16.14.0): dependencies: - react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.1.7)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.1.7)(react@19.1.0) + react: 16.14.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.7)(react@16.14.0) + react-style-singleton: 2.2.3(@types/react@19.1.7)(react@16.14.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.1.7)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.1.7)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.1.7)(react@16.14.0) + use-sidecar: 1.1.3(@types/react@19.1.7)(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 @@ -25674,10 +25664,10 @@ snapshots: react: 16.14.0 warning: 4.0.3 - react-style-singleton@2.2.3(@types/react@19.1.7)(react@19.1.0): + react-style-singleton@2.2.3(@types/react@19.1.7)(react@16.14.0): dependencies: get-nonce: 1.0.1 - react: 19.1.0 + react: 16.14.0 tslib: 2.8.1 optionalDependencies: '@types/react': 19.1.7 @@ -25688,8 +25678,6 @@ snapshots: object-assign: 4.1.1 prop-types: 15.8.1 - react@19.1.0: {} - read-binary-file-arch@1.0.6: dependencies: debug: 4.4.1(supports-color@6.0.0) @@ -27341,9 +27329,9 @@ snapshots: dependencies: safe-buffer: 5.2.1 - tunnel-rat@0.1.2(@types/react@19.1.7)(react@19.1.0): + tunnel-rat@0.1.2(@types/react@19.1.7)(react@16.14.0): dependencies: - zustand: 4.5.6(@types/react@19.1.7)(react@19.1.0) + zustand: 4.5.6(@types/react@19.1.7)(react@16.14.0) transitivePeerDependencies: - '@types/react' - immer @@ -27562,24 +27550,24 @@ snapshots: urlpattern-polyfill@10.0.0: {} - use-callback-ref@1.3.3(@types/react@19.1.7)(react@19.1.0): + use-callback-ref@1.3.3(@types/react@19.1.7)(react@16.14.0): dependencies: - react: 19.1.0 + react: 16.14.0 tslib: 2.8.1 optionalDependencies: '@types/react': 19.1.7 - use-sidecar@1.1.3(@types/react@19.1.7)(react@19.1.0): + use-sidecar@1.1.3(@types/react@19.1.7)(react@16.14.0): dependencies: detect-node-es: 1.1.0 - react: 19.1.0 + react: 16.14.0 tslib: 2.8.1 optionalDependencies: '@types/react': 19.1.7 - use-sync-external-store@1.5.0(react@19.1.0): + use-sync-external-store@1.5.0(react@16.14.0): dependencies: - react: 19.1.0 + react: 16.14.0 userhome@1.0.1: {} @@ -27723,11 +27711,11 @@ snapshots: vite@6.3.5(@types/node@22.15.30)(jiti@2.4.2)(less@4.1.3)(sass-embedded@1.87.0)(sass@1.87.0)(stylus@0.64.0)(sugarss@4.0.1(postcss@8.5.3))(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0): dependencies: esbuild: 0.25.5 - fdir: 6.4.4(picomatch@4.0.2) + fdir: 6.4.5(picomatch@4.0.2) picomatch: 4.0.2 postcss: 8.5.3 rollup: 4.40.0 - tinyglobby: 0.2.13 + tinyglobby: 0.2.14 optionalDependencies: '@types/node': 22.15.30 fsevents: 2.3.3 @@ -28362,9 +28350,9 @@ snapshots: zod@3.24.4: {} - zustand@4.5.6(@types/react@19.1.7)(react@19.1.0): + zustand@4.5.6(@types/react@19.1.7)(react@16.14.0): dependencies: - use-sync-external-store: 1.5.0(react@19.1.0) + use-sync-external-store: 1.5.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 - react: 19.1.0 + react: 16.14.0