UNPKG

mt-flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

56 lines (55 loc) 1.75 kB
'use client'; import { jsx as _jsx } from "react/jsx-runtime"; import { createContext, useContext, useRef } from 'react'; import { create, useStore } from 'zustand'; import { persist } from 'zustand/middleware'; export const createDashSlice = (set, get, initState) => { const DEFAULT_PROPS = { resAction: undefined, }; return { ...DEFAULT_PROPS, // isLoadingDashConfig: false, // isOpenNavSheet: false, // async loadDashConfig() { // set({ ...get(), isLoadingDashConfig: true }) // const dashConfig = await loadDashConfig() // set({ ...get(), isLoadingDashConfig: false, dashConfig }) // }, // setOpenNavSheet: (isOpenNavSheet) => (set((s) => ({ // isOpenNavSheet // }))) }; }; export const createResActionStore = (initProps) => { return create()(persist((...a) => ({ ...createDashSlice(...a), // ...createFishSlice(...a), }), { name: 'dash2', version: 1, skipHydration: true, onRehydrateStorage(state) { // console.log("onRehydrateStorage[dash]", state) }, })); }; const Context = createContext(null); export function ResActionProvider({ children, ...props }) { const storeRef = useRef(); if (!storeRef.current) { storeRef.current = createResActionStore(props); } return _jsx(Context.Provider, { value: storeRef.current, children: children }); } export function useResActionStore(selector, equals) { const store = useContext(Context); if (!store) throw new Error('Missing ResActionProvider'); if (selector) { return useStore(store, selector, equals); } else { return store; } }