import {type IStoreProviderComponent} from "@leight/context"; import {isCallable} from "@leight/utils"; import {type ICreateStore, type IStoreContext, type IStoreProps} from "@leight/zustand"; import {useMemo} from "react"; export interface ICreateProviderProps { name: string; createStore: ICreateStore; Context: IStoreContext; } export const withProvider = ( { name, createStore, Context, }: ICreateProviderProps): IStoreProviderComponent => { return function StoreProvider( { children, defaults, state, }) { const Children = children; const memo = useMemo(() => { const store = createStore({defaults, state}); return {name, state: store.getState(), store}; }, []); return ( {isCallable(Children) ? : Children} ); }; };