-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Expand file tree
/
Copy pathgrid-stack-context.ts
More file actions
35 lines (32 loc) · 1.07 KB
/
grid-stack-context.ts
File metadata and controls
35 lines (32 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import type { GridStack, GridStackOptions, GridStackWidget } from "gridstack";
import { createContext, useContext } from "react";
export const GridStackContext = createContext<{
initialOptions: GridStackOptions;
gridStack: GridStack | null;
addWidget: (fn: (id: string) => Omit<GridStackWidget, "id">) => void;
removeWidget: (id: string) => void;
addSubGrid: (
fn: (
id: string,
withWidget: (w: Omit<GridStackWidget, "id">) => GridStackWidget
) => Omit<GridStackWidget, "id">
) => void;
saveOptions: () => GridStackOptions | GridStackWidget[] | undefined;
_gridStack: {
value: GridStack | null;
set: React.Dispatch<React.SetStateAction<GridStack | null>>;
};
_rawWidgetMetaMap: {
value: Map<string, GridStackWidget>;
set: React.Dispatch<React.SetStateAction<Map<string, GridStackWidget>>>;
};
} | null>(null);
export function useGridStackContext() {
const context = useContext(GridStackContext);
if (!context) {
throw new Error(
"useGridStackContext must be used within a GridStackProvider"
);
}
return context;
}