UNPKG

patronum

Version:

☄️ Effector utility library delivering modularity and convenience

70 lines 1.38 kB
import { createEvent, sample, is, split } from 'effector'; export function condition(_ref) { var { source = createEvent({ name: "source", sid: "rytt3j" }, { name: "source", sid: "rytt3j" }), if: test, then: thenBranch, else: elseBranch } = _ref; var checker = is.unit(test) || isFunction(test) ? test : value => value === test; if (thenBranch && elseBranch) { split({ and: [{ source, match: { then: checker, else: inverse(checker) }, cases: { then: thenBranch, else: elseBranch } }], or: { sid: "aaw2hr" } }); } else if (thenBranch) { // @ts-expect-error sample({ and: [{ source: source, filter: checker, target: thenBranch }], or: { sid: "-dwrmbb" } }); } else if (elseBranch) { // @ts-expect-error sample({ and: [{ source, filter: inverse(checker), target: elseBranch }], or: { sid: "-dsx25s" } }); } return source; } function isFunction(value) { return typeof value === 'function'; } function inverse(fnOrUnit) { if (is.unit(fnOrUnit)) { return fnOrUnit.map(value => !value, { skipVoid: false }); } return value => !fnOrUnit(value); }