UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

22 lines 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useDeepMemo = void 0; const react_1 = require("react"); const ExtendedObject_1 = require("../ExtendedObject"); /** * Behaves the same as useMemo, except only updates when values are deeply different instead of shallowly * @param getVal The function to retrieve the value * @param dependencies The dependencies * @param depth The depth to which to check equality * @returns The memoed value */ const useDeepMemo = (getVal, deps, depth = 1) => { const count = react_1.useRef(0); const prevDeps = react_1.useRef(deps); if (!ExtendedObject_1.ExtendedObject.deepEquals(deps, prevDeps.current, depth + 1)) count.current++; prevDeps.current = deps; return react_1.useMemo(getVal, [count.current]); }; exports.useDeepMemo = useDeepMemo; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRGVlcE1lbW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaG9va3MvdXNlRGVlcE1lbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQXNDO0FBQ3RDLHNEQUFpRDtBQUVqRDs7Ozs7O0dBTUc7QUFDSSxNQUFNLFdBQVcsR0FBRyxDQUFJLE1BQWUsRUFBRSxJQUFXLEVBQUUsUUFBZ0IsQ0FBQyxFQUFLLEVBQUU7SUFDakYsTUFBTSxLQUFLLEdBQUcsY0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sUUFBUSxHQUFHLGNBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsK0JBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUVuRixRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUV4QixPQUFPLGVBQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUM7QUFSVyxRQUFBLFdBQVcsZUFRdEIifQ==