UNPKG

simple-pure-utils

Version:

Funciones puras para manipulación de objetos, arreglos, promesas y observables

37 lines 2.82 kB
import { referenceEquals, union, all } from "./logic"; /** * Si a y b son funciones, devuelve true. * Si no, devuelve a === b. * * Útil para comparar props de componentes de react, donde no importa si cambian las funciones pero si importa si cambian todos los demás props * @param a * @param b */ export function referenceFuncIgnoreEquals(a, b) { if (typeof (a) == "function" && typeof (b) == "function") { return true; } return a === b; } /**Compara cada uno de los props del objeto con un comparador custom por cada key, * útil para comparar props en el shouldComponentUpdate de react. * * Si una propiedad existe en un valor no pero en el otro no si se compara ese par de propiedades, con undefined para la parte que no tiene la propiedad * @param config Indica por cada propiedad que comparador usar * Si se especifica null ese prop no se va a comparar * @param defaultComparer Comparador que se usa para las propiedades que no se especifiquen en el config. Si no se especifica se usa el operador * === para comparar * */ export function shallowEqualsCustom(a, b, config, defaultComparer) { const props = union(Object.keys(a), Object.keys(b)); const valueProps = props.map(x => ({ comparer: config[x] || defaultComparer || referenceEquals, a: a[x], b: b[x] })); const compares = valueProps.map(x => x.comparer(x.a, x.b)); const ret = all(compares); return ret; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWlCLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFZckU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxDQUFNLEVBQUUsQ0FBTTtJQUNwRCxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsRUFBRTtRQUN0RCxPQUFPLElBQUksQ0FBQztLQUNmO0lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7O0VBU0U7QUFDRixNQUFNLFVBQVUsbUJBQW1CLENBQy9CLENBQUksRUFDSixDQUFJLEVBQ0osTUFBOEIsRUFDOUIsZUFBZ0M7SUFFaEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztJQUNuRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixRQUFRLEVBQUcsTUFBTSxDQUFDLENBQUMsQ0FBb0IsSUFBSSxlQUFlLElBQUksZUFBZTtRQUM3RSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ1YsQ0FBQyxDQUFDLENBQUM7SUFFSixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUMifQ==