UNPKG

zustand-utils

Version:
46 lines (45 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createContext = void 0; var _react = require("react"); var _shallow = require("zustand/shallow"); var _traditional = require("zustand/traditional"); /** * create context for individual App * mostly use for component */ var createContext = exports.createContext = function createContext() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var defaultEqualityFn = params.equalityFn || _shallow.shallow; var ZustandContext = /*#__PURE__*/(0, _react.createContext)(undefined); var Provider = function Provider(_ref) { var createStore = _ref.createStore, children = _ref.children; var storeRef = (0, _react.useRef)(); if (!storeRef.current) { storeRef.current = createStore(); } return /*#__PURE__*/(0, _react.createElement)(ZustandContext.Provider, { value: storeRef.current }, children); }; var useStoreApi = function useStoreApi() { var store = (0, _react.useContext)(ZustandContext); if (!store) { throw new Error('Seems like you have not used zustand provider as an ancestor.'); } return store; }; var useContextStore = function useContextStore(selector) { var equalityFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityFn; var store = useStoreApi(); return (0, _traditional.useStoreWithEqualityFn)(store, selector, equalityFn); }; return { Provider: Provider, useStore: useContextStore, useStoreApi: useStoreApi }; };