UNPKG

@tanstack/react-store

Version:

Framework agnostic type-safe store w/ reactive framework adapters

65 lines (64 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const withSelector_js = require("use-sync-external-store/shim/with-selector.js"); const store = require("@tanstack/store"); function useStore(store2, selector = (d) => d) { const slice = withSelector_js.useSyncExternalStoreWithSelector( store2.subscribe, () => store2.state, () => store2.state, selector, shallow ); return slice; } function shallow(objA, objB) { if (Object.is(objA, objB)) { return true; } if (typeof objA !== "object" || objA === null || typeof objB !== "object" || objB === null) { return false; } if (objA instanceof Map && objB instanceof Map) { if (objA.size !== objB.size) return false; for (const [k, v] of objA) { if (!objB.has(k) || !Object.is(v, objB.get(k))) return false; } return true; } if (objA instanceof Set && objB instanceof Set) { if (objA.size !== objB.size) return false; for (const v of objA) { if (!objB.has(v)) return false; } return true; } if (objA instanceof Date && objB instanceof Date) { if (objA.getTime() !== objB.getTime()) return false; return true; } const keysA = getOwnKeys(objA); if (keysA.length !== getOwnKeys(objB).length) { return false; } for (let i = 0; i < keysA.length; i++) { if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) { return false; } } return true; } function getOwnKeys(obj) { return Object.keys(obj).concat( Object.getOwnPropertySymbols(obj) ); } exports.shallow = shallow; exports.useStore = useStore; Object.keys(store).forEach((k) => { if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { enumerable: true, get: () => store[k] }); }); //# sourceMappingURL=index.cjs.map