UNPKG

lisn.js

Version:

Simply handle user gestures and actions. Includes widgets.

71 lines (67 loc) 2.06 kB
/** * @module * @ignore * @internal */ import * as MH from "../globals/minification-helpers.js"; import { roundNumTo } from "./math.js"; export const copyExistingKeys = (fromObj, toObj) => { for (const key in toObj) { if (!MH.hasOwnProp(toObj, key)) { continue; } if (key in fromObj) { if (MH.isNonPrimitive(fromObj[key]) && MH.isNonPrimitive(toObj[key])) { copyExistingKeys(fromObj[key], toObj[key]); } else { toObj[key] = fromObj[key]; } } } }; // Omits the keys in object keysToRm from obj. This is to avoid hardcording the // key names as a string so as to allow minifier to mangle them, and to avoid // using object spread. export const omitKeys = (obj, keysToRm) => { const res = {}; let key; for (key in obj) { if (!(key in keysToRm)) { res[key] = obj[key]; } } return res; }; // Returns true if the two objects are equal. If values are numeric, it will // round to the given number of decimal places. export const compareValuesIn = (objA, objB, roundTo = 3) => { for (const key in objA) { if (!MH.hasOwnProp(objA, key)) { continue; } const valA = objA[key]; const valB = objB[key]; if (MH.isNonPrimitive(valA) && MH.isNonPrimitive(valB)) { if (!compareValuesIn(valA, valB)) { return false; } } else if (MH.isNumber(valA) && MH.isNumber(valB)) { if (roundNumTo(valA, roundTo) !== roundNumTo(valB, roundTo)) { return false; } } else if (valA !== valB) { return false; } } return true; }; export const keyExists = (obj, key) => MH.isNonPrimitive(obj) && key in obj; export const toArrayIfSingle = value => MH.isArray(value) ? value : !MH.isNullish(value) ? [value] : []; export const toBoolean = value => value === true || value === "true" || value === "" ? true : MH.isNullish(value) || value === false || value === "false" ? false : null; /** * @deprecated * * Deprecated alias for {@link toBoolean} */ export const toBool = toBoolean; //# sourceMappingURL=misc.js.map