UNPKG

zustand

Version:

🐻 Bear necessities for state management in React

35 lines (31 loc) 1.91 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('use-sync-external-store/shim/with-selector'), require('zustand/vanilla')) : typeof define === 'function' && define.amd ? define(['exports', 'react', 'use-sync-external-store/shim/with-selector', 'zustand/vanilla'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.zustandTraditional = {}, global.React, global.useSyncExternalStoreShimWithSelector, global.zustandVanilla)); })(this, (function (exports, react, useSyncExternalStoreExports, vanilla) { 'use strict'; var useSyncExternalStoreWithSelector = useSyncExternalStoreExports.useSyncExternalStoreWithSelector; function useStoreWithEqualityFn(api, selector, equalityFn) { if (selector === void 0) { selector = api.getState; } var slice = useSyncExternalStoreWithSelector(api.subscribe, api.getState, api.getServerState || api.getState, selector, equalityFn); react.useDebugValue(slice); return slice; } var createWithEqualityFnImpl = function createWithEqualityFnImpl(createState, defaultEqualityFn) { var api = vanilla.createStore(createState); var useBoundStoreWithEqualityFn = function useBoundStoreWithEqualityFn(selector, equalityFn) { if (equalityFn === void 0) { equalityFn = defaultEqualityFn; } return useStoreWithEqualityFn(api, selector, equalityFn); }; Object.assign(useBoundStoreWithEqualityFn, api); return useBoundStoreWithEqualityFn; }; var createWithEqualityFn = function createWithEqualityFn(createState, defaultEqualityFn) { return createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl; }; exports.createWithEqualityFn = createWithEqualityFn; exports.useStoreWithEqualityFn = useStoreWithEqualityFn; }));