UNPKG

mt-flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

83 lines (82 loc) 3.16 kB
"use strict"; 'use client'; Object.defineProperty(exports, "__esModule", { value: true }); exports.useAppStore = exports.AppProvider = exports.createResAppStore = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const error_slice_1 = require("@/store/error.slice"); const react_1 = require("react"); const zustand_1 = require("zustand"); const middleware_1 = require("zustand/middleware"); const app_admin_slice_1 = require("./app-admin.slice"); const app_slice_1 = require("./app.slice"); const config_slice_1 = require("./config.slice"); const design_slice_1 = require("./design.slice"); const createResAppStore = (initProps) => { return (0, zustand_1.create)()((0, middleware_1.devtools)((0, middleware_1.persist)((0, middleware_1.subscribeWithSelector)((...a) => { return { ...(0, app_slice_1.createAppSlice)(...a), ...(0, design_slice_1.createDesignSlice)(...a), ...(0, app_admin_slice_1.createAppAdminSlice)(...a), ...(0, config_slice_1.createConfigSlice)(...a), ...(0, error_slice_1.createErrorSlice)(...a), //初始值, //提示:可以用SSR的方式设置初始值,能覆盖各个Slice中内部的初始值,这样,Slice内部可以不用管初始值的相关部分。 ...initProps, }; }), { name: `app`, version: 1, // skipHydration: true, onRehydrateStorage(state) { // console.log("onRehydrateStorage[res]", state) }, }))); }; exports.createResAppStore = createResAppStore; //-----------context const Context = (0, react_1.createContext)(null); function AppProvider({ children, ...props }) { const storeRef = (0, react_1.useRef)(); if (!storeRef.current) { storeRef.current = (0, exports.createResAppStore)(props); } return ((0, jsx_runtime_1.jsxs)(Context.Provider, { value: storeRef.current, children: [children, (0, jsx_runtime_1.jsx)(SubscriptionSetup, {})] })); } exports.AppProvider = AppProvider; //------------事件订阅 function SubscriptionSetup() { // const store = useAppStore() // const setDebug = useAppStore(x => x.setDebug) // useEffect(() => { // const unsub2 = store.subscribe((state) => state.items, (a) => { // // console.log("items 事件:", a) // }) // const unsubActivateId = store.subscribe((state) => state.activateId, (value) => { // // console.log("activateId 事件:", value) // }) // return () => { // unsub2() // unsubActivateId() // } // }, []) // useEffect(() => { // store.getState().LoadViewConfig() // }, []) // useEffect(() => { // setDebug(true) // }, []) return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}); } function useAppStore(selector, equals) { const store = (0, react_1.useContext)(Context); if (!store) throw new Error('Missing AppProvider'); if (selector) { // eslint-disable-next-line return (0, zustand_1.useStore)(store, selector, equals); } else { return store; } } exports.useAppStore = useAppStore;