aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/context
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commit6ec259a0e71174651bae95d4628138bf6fd68742 (patch)
tree5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/context
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
Diffstat (limited to 'packages/excalidraw/context')
-rw-r--r--packages/excalidraw/context/tunnels.ts45
-rw-r--r--packages/excalidraw/context/ui-appState.ts5
2 files changed, 50 insertions, 0 deletions
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<typeof tunnel>;
+
+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<typeof createIsolation>;
+};
+
+export const TunnelsContext = React.createContext<TunnelsContextValue>(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<UIAppState>(null!);
+export const useUIAppState = () => React.useContext(UIAppStateContext);