UNPKG

patronum

Version:

☄️ Effector utility library delivering modularity and convenience

63 lines (60 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.spread = spread; var _effector = require("effector"); const hasPropBase = {}.hasOwnProperty; const hasOwnProp = (object, key) => hasPropBase.call(object, key); /** * @example * spread({ * source: dataObject, * targets: { first: targetA, second: [target1, target2] }, * }) * * sample({ * source: dataObject, * target: spread({ targets: { first: targetA, second: [target1, target2] } }) * }) * * sample({ * source: dataObject, * target: spread({ first: targetA, second: [target1, target2] }) * }) */ function spread(args) { const argsShape = isTargets(args) ? { targets: args } : args; const { targets, source = (0, _effector.createEvent)({ name: "source", sid: "-u92i8l" }) } = argsShape; for (const targetKey in targets) { if (hasOwnProp(targets, targetKey)) { const currentTarget = targets[targetKey]; (0, _effector.sample)({ and: [{ source, filter: object => { return typeof object === 'object' && object !== null && targetKey in object; }, fn: object => object[targetKey], target: currentTarget, batch: false }], or: { sid: "motx3n" } }); } } return source; } function isTargets(args) { return !Object.keys(args).some(key => ['targets', 'source'].includes(key)); }