import ReactExports from 'react'; import useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js'; import { createStore } from 'zustand/vanilla'; const { useDebugValue } = ReactExports; const { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports; const identity = (arg) => arg; function useStoreWithEqualityFn(api, selector = identity, equalityFn) { const slice = useSyncExternalStoreWithSelector( api.subscribe, api.getState, api.getServerState || api.getInitialState, selector, equalityFn ); useDebugValue(slice); return slice; } const createWithEqualityFnImpl = (createState, defaultEqualityFn) => { const api = createStore(createState); const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn); Object.assign(useBoundStoreWithEqualityFn, api); return useBoundStoreWithEqualityFn; }; const createWithEqualityFn = (createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl; export { createWithEqualityFn, useStoreWithEqualityFn };