UNPKG

redext

Version:

A simple global store based on React Context and Hooks

81 lines (77 loc) 2.37 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/hooks/useDeepMemoize.ts var useDeepMemoize_exports = {}; __export(useDeepMemoize_exports, { default: () => useDeepMemoize_default }); module.exports = __toCommonJS(useDeepMemoize_exports); var import_react = require("react"); // src/utils/deepEqual.ts var equal = (a, b) => { let ctor; let len; if (a === b) { return true; } if (a && b && (ctor = a.constructor) === b.constructor) { if (ctor === Date) { return a.getTime() === b.getTime(); } if (ctor === RegExp) { return a.toString() === b.toString(); } if (ctor === Array && (len = a.length) === b.length) { while (len-- && equal(a[len], b[len])) ; return len === -1; } if (ctor === Object) { if (Object.keys(a).length !== Object.keys(b).length) { return false; } for (len in a) { if (!(len in b) || !equal(a[len], b[len])) { return false; } } return true; } } return a !== a && b !== b; }; function deepEqual(a, b) { try { return equal(a, b); } catch (error) { if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) { console.warn("Warning: deepEqual does not handle circular references.", error.name, error.message); return false; } throw error; } } // src/hooks/useDeepMemoize.ts var useDeepMemoize = (value) => { const ref = (0, import_react.useRef)([]); if (!deepEqual(value, ref.current)) { ref.current = value; } return ref.current; }; var useDeepMemoize_default = useDeepMemoize;