UNPKG

mt-flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

65 lines (64 loc) 2.27 kB
"use strict"; 'use client'; Object.defineProperty(exports, "__esModule", { value: true }); exports.useDashStore = exports.DashProvider = exports.createDashStore = exports.createDashSlice = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const zustand_1 = require("zustand"); const middleware_1 = require("zustand/middleware"); const mtmapi_1 = require("../mtmapi/mtmapi"); const createDashSlice = (set, get, initState) => { const DEFAULT_PROPS = {}; return { ...DEFAULT_PROPS, isLoadingDashConfig: false, isOpenNavSheet: false, async loadDashConfig() { set({ ...get(), isLoadingDashConfig: true }); const dashConfig = await (0, mtmapi_1.loadDashConfig)(); set({ ...get(), isLoadingDashConfig: false, dashConfig }); }, setOpenNavSheet: (isOpenNavSheet) => set((s) => ({ isOpenNavSheet, })), ...initState, }; }; exports.createDashSlice = createDashSlice; const createDashStore = (initProps) => { return (0, zustand_1.create)()((0, middleware_1.persist)((...a) => ({ ...(0, exports.createDashSlice)(...a), // ...createFishSlice(...a), }), { name: 'dash', version: 1, // skipHydration: true, onRehydrateStorage(state) { // console.log("onRehydrateStorage[dash]", state) }, })); }; exports.createDashStore = createDashStore; //练习: 合并并且使用中间件。 // export const useDashStore = createDashStore() const Context = (0, react_1.createContext)(null); function DashProvider({ children, ...props }) { const storeRef = (0, react_1.useRef)(); if (!storeRef.current) { storeRef.current = (0, exports.createDashStore)(props); } return (0, jsx_runtime_1.jsx)(Context.Provider, { value: storeRef.current, children: children }); } exports.DashProvider = DashProvider; function useDashStore(selector, equals) { const store = (0, react_1.useContext)(Context); if (!store) throw new Error('Missing DashProvider'); if (selector) { return (0, zustand_1.useStore)(store, selector, equals); } else { return store; } } exports.useDashStore = useDashStore;