From 6ec259a0e71174651bae95d4628138bf6fd68742 Mon Sep 17 00:00:00 2001 From: kj_sh604 Date: Sun, 15 Mar 2026 16:19:35 -0400 Subject: refactor: packages/ --- packages/excalidraw/context/tunnels.ts | 45 ++++++++++++++++++++++++++++++ packages/excalidraw/context/ui-appState.ts | 5 ++++ 2 files changed, 50 insertions(+) create mode 100644 packages/excalidraw/context/tunnels.ts create mode 100644 packages/excalidraw/context/ui-appState.ts (limited to 'packages/excalidraw/context') diff --git a/packages/excalidraw/context/tunnels.ts b/packages/excalidraw/context/tunnels.ts new file mode 100644 index 0000000..73b85ba --- /dev/null +++ b/packages/excalidraw/context/tunnels.ts @@ -0,0 +1,45 @@ +import React from "react"; +import tunnel from "tunnel-rat"; +import { createIsolation } from "jotai-scope"; + +export type Tunnel = ReturnType; + +type TunnelsContextValue = { + MainMenuTunnel: Tunnel; + WelcomeScreenMenuHintTunnel: Tunnel; + WelcomeScreenToolbarHintTunnel: Tunnel; + WelcomeScreenHelpHintTunnel: Tunnel; + WelcomeScreenCenterTunnel: Tunnel; + FooterCenterTunnel: Tunnel; + DefaultSidebarTriggerTunnel: Tunnel; + DefaultSidebarTabTriggersTunnel: Tunnel; + OverwriteConfirmDialogTunnel: Tunnel; + TTDDialogTriggerTunnel: Tunnel; + // this can be removed once we create jotai stores per each editor + // instance + tunnelsJotai: ReturnType; +}; + +export const TunnelsContext = React.createContext(null!); + +export const useTunnels = () => React.useContext(TunnelsContext); + +const tunnelsJotai = createIsolation(); + +export const useInitializeTunnels = () => { + return React.useMemo((): TunnelsContextValue => { + return { + MainMenuTunnel: tunnel(), + WelcomeScreenMenuHintTunnel: tunnel(), + WelcomeScreenToolbarHintTunnel: tunnel(), + WelcomeScreenHelpHintTunnel: tunnel(), + WelcomeScreenCenterTunnel: tunnel(), + FooterCenterTunnel: tunnel(), + DefaultSidebarTriggerTunnel: tunnel(), + DefaultSidebarTabTriggersTunnel: tunnel(), + OverwriteConfirmDialogTunnel: tunnel(), + TTDDialogTriggerTunnel: tunnel(), + tunnelsJotai, + }; + }, []); +}; diff --git a/packages/excalidraw/context/ui-appState.ts b/packages/excalidraw/context/ui-appState.ts new file mode 100644 index 0000000..f94ce28 --- /dev/null +++ b/packages/excalidraw/context/ui-appState.ts @@ -0,0 +1,5 @@ +import React from "react"; +import type { UIAppState } from "../types"; + +export const UIAppStateContext = React.createContext(null!); +export const useUIAppState = () => React.useContext(UIAppStateContext); -- cgit v1.2.3