simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
37 lines • 2.82 kB
JavaScript
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==