34 lines
895 B
TypeScript
34 lines
895 B
TypeScript
|
|
import { create } from "zustand";
|
||
|
|
|
||
|
|
type WidgetData = {
|
||
|
|
id: string;
|
||
|
|
type: string;
|
||
|
|
position: [number, number, number];
|
||
|
|
};
|
||
|
|
|
||
|
|
type ZoneWidgetStore = {
|
||
|
|
zoneWidgetData: Record<string, WidgetData[]>;
|
||
|
|
setZoneWidgetData: (zoneId: string, widgets: WidgetData[]) => void;
|
||
|
|
addWidget: (zoneId: string, widget: WidgetData) => void;
|
||
|
|
};
|
||
|
|
|
||
|
|
export const useZoneWidgetStore = create<ZoneWidgetStore>((set) => ({
|
||
|
|
zoneWidgetData: {},
|
||
|
|
|
||
|
|
setZoneWidgetData: (zoneId, widgets) =>
|
||
|
|
set((state) => ({
|
||
|
|
zoneWidgetData: {
|
||
|
|
...state.zoneWidgetData,
|
||
|
|
[zoneId]: widgets,
|
||
|
|
},
|
||
|
|
})),
|
||
|
|
|
||
|
|
addWidget: (zoneId, widget) =>
|
||
|
|
set((state) => ({
|
||
|
|
zoneWidgetData: {
|
||
|
|
...state.zoneWidgetData,
|
||
|
|
[zoneId]: [...(state.zoneWidgetData[zoneId] || []), widget],
|
||
|
|
},
|
||
|
|
})),
|
||
|
|
}));
|