import { WidgetDictionary, WidgetDictionaryItem, WidgetsIds, } from "@engine/App/Widgets/_actions/widgetsTypes"; import { HasChildren } from "@granity/helpers"; import { createContext, Dispatch, FC, SetStateAction, useState } from "react"; export interface WidgetsContextModel { widgets: WidgetDictionary; widgetsIds: WidgetsIds; selectedWidgets: WidgetDictionaryItem[]; setWidgetsIds: Dispatch>; setWidgets: Dispatch>; setSelectedWidgets: Dispatch>; } export const widgetsDefaultContext: WidgetsContextModel = { widgets: {}, widgetsIds: [], selectedWidgets: [], setWidgets: () => {}, setWidgetsIds: () => {}, setSelectedWidgets: () => {}, }; export const WidgetsContext = createContext(widgetsDefaultContext); type Props = HasChildren; const WidgetsContextProvider: FC = ({ children }) => { const [widgets, setWidgets] = useState({}); const [widgetsIds, setWidgetsIds] = useState([]); const [selectedWidgets, setSelectedWidgets] = useState([]); const providerValue: WidgetsContextModel = { widgets, selectedWidgets, widgetsIds, setWidgets, setWidgetsIds, setSelectedWidgets, }; return {children}; }; export default WidgetsContextProvider;