← Files DataARCHIVED FILE
templates/data-app/base/src/DataAppContext.jsx
1.03 KB · Sep 30, 2026 · 23:19 UTC
import { createContext, useContext, useLayoutEffect } from "react";
export const DataAppContext = createContext(null);
export const DataAppBlockLayoutContext = createContext(null);
export function useDataAppShell() {
const shell = useContext(DataAppContext);
if (!shell) {
throw new Error("Data app content must render inside the protected DataAppShell.");
}
return shell;
}
export function useOptionalDataAppShell() {
return useContext(DataAppContext);
}
export function useDashboardTabs(definitions = []) {
const { activeTabId, registerDashboardTabs } = useDataAppShell();
const serializedDefinitions = JSON.stringify(definitions);
useLayoutEffect(() => {
registerDashboardTabs?.(JSON.parse(serializedDefinitions));
}, [registerDashboardTabs, serializedDefinitions]);
return { activeTabId };
}
export function useDataAppBlockLayouts() {
const layouts = useContext(DataAppBlockLayoutContext);
if (!layouts) throw new Error("Sortable blocks must render inside the protected DataAppShell.");
return layouts;
}
SHA-256: 309d971e9fd4494b2f704087c81ded8837ec955ae4a57898f54dd776c8fca30f