aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/context
diff options
context:
space:
mode:
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);