simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
42 lines • 3.06 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.shallowEqualsCustom = exports.referenceFuncIgnoreEquals = void 0;
const logic_1 = require("./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
*/
function referenceFuncIgnoreEquals(a, b) {
if (typeof (a) == "function" && typeof (b) == "function") {
return true;
}
return a === b;
}
exports.referenceFuncIgnoreEquals = referenceFuncIgnoreEquals;
/**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
*
*/
function shallowEqualsCustom(a, b, config, defaultComparer) {
const props = (0, logic_1.union)(Object.keys(a), Object.keys(b));
const valueProps = props.map(x => ({
comparer: config[x] || defaultComparer || logic_1.referenceEquals,
a: a[x],
b: b[x]
}));
const compares = valueProps.map(x => x.comparer(x.a, x.b));
const ret = (0, logic_1.all)(compares);
return ret;
}
exports.shallowEqualsCustom = shallowEqualsCustom;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFxRTtBQVlyRTs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsQ0FBTSxFQUFFLENBQU07SUFDcEQsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUU7UUFDdEQsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQixDQUFDO0FBTkQsOERBTUM7QUFFRDs7Ozs7Ozs7O0VBU0U7QUFDRixTQUFnQixtQkFBbUIsQ0FDL0IsQ0FBSSxFQUNKLENBQUksRUFDSixNQUE4QixFQUM5QixlQUFnQztJQUVoQyxNQUFNLEtBQUssR0FBRyxJQUFBLGFBQUssRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7SUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0IsUUFBUSxFQUFHLE1BQU0sQ0FBQyxDQUFDLENBQW9CLElBQUksZUFBZSxJQUFJLHVCQUFlO1FBQzdFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDVixDQUFDLENBQUMsQ0FBQztJQUVKLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsTUFBTSxHQUFHLEdBQUcsSUFBQSxXQUFHLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBaEJELGtEQWdCQyJ9
;