@skele/classic
Version:
Skele is an architectural framework that assists with building data-driven apps with React or React Native.
1 lines • 1.22 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.transformer=transformer;var R=_interopRequireWildcard(require("ramda"));var _core=require("@skele/core");function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};if(desc.get||desc.set){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}}newObj.default=obj;return newObj;}}var memoize=_core.registry.memoize;var postWalk=_core.zip.postWalk,root=_core.zip.root;var flow=_core.data.flow,kindOf=_core.data.kindOf;function transformer(registry,elementZipper){var elementTransformer=memoize(function(kind){return registry.get(kind).reduce(function(f,g){return function(x,context){return g(f(x,context),context);};},R.identity);});var transform=function transform(context){return function(el){return elementTransformer(kindOf(el))(el,context);};};return function(el){var context=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return flow(el,elementZipper,postWalk(transform(context)),root);};}