UNPKG

patronum

Version:

☄️ Effector utility library delivering modularity and convenience

60 lines (58 loc) 1.41 kB
import { createEvent, sample } from 'effector'; var hasPropBase = {}.hasOwnProperty; var 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] }) * }) */ export function spread(args) { var argsShape = isTargets(args) ? { targets: args } : args; var { targets, source = createEvent({ name: "source", sid: "-u92i8l" }) } = argsShape; var _loop = function _loop(targetKey) { if (hasOwnProp(targets, targetKey)) { var currentTarget = targets[targetKey]; 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" } }); } }; for (var targetKey in targets) { _loop(targetKey); } return source; } function isTargets(args) { return !Object.keys(args).some(key => ['targets', 'source'].includes(key)); }