@launchmenu/core
Version:
An environment for visual keyboard controlled applets
22 lines • 1.71 kB
JavaScript
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==
;