@girders-elements/core
Version:
Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.
21 lines (10 loc) • 971 B
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.
transformer=transformer;var _ramda=require('ramda');var _ramda2=_interopRequireDefault(_ramda);var _element=require('../data/element');var _util=require('../impl/util');var _zip=require('../zip');var _data=require('../data');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function transformer(registry,elementZipper){
var elementTransformer=(0,_util.memoize)(function(kind){return(
registry.
get(kind).
reduce(function(f,g){return function(x,context){return g(f(x,context),context);};},_ramda2.default.identity));});
var transform=function transform(context){return function(el){return elementTransformer((0,_element.kindOf)(el))(el,context);};};
return function(el){var context=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return(
(0,_data.flow)(el,elementZipper,(0,_zip.postWalk)(transform(context)),_zip.root,_zip.value));};
}