UNPKG

@girders-elements/core

Version:

Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.

22 lines (16 loc) 596 B
'use strict' import R from 'ramda' import { kindOf } from '../data/element' import { memoize } from '../impl/util' import { postWalk, root, value } from '../zip' import { flow } from '../data' export function transformer(registry, elementZipper) { const elementTransformer = memoize(kind => registry .get(kind) .reduce((f, g) => (x, context) => g(f(x, context), context), R.identity) ) const transform = context => el => elementTransformer(kindOf(el))(el, context) return (el, context = {}) => flow(el, elementZipper, postWalk(transform(context)), root, value) }