@skele/classic
Version:
Skele is an architectural framework that assists with building data-driven apps with React or React Native.
1 lines • 2.3 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var R=_interopRequireWildcard(require("ramda"));var _invariant=_interopRequireDefault(require("invariant"));var _core=require("@skele/core");var SubSystem=_interopRequireWildcard(require("../subsystem"));var impl=_interopRequireWildcard(require("./impl"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}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;}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}var isElementRef=_core.data.isElementRef;var MultivalueRegistry=_core.registry.MultivalueRegistry,chainMultivalueRegistries=_core.registry.chainMultivalueRegistries;var registryAttribute='@@skele/_transformRegistry';SubSystem.extend(function(){var _transform;var registry=new MultivalueRegistry();return{transform:(_transform={},_defineProperty(_transform,registryAttribute,registry),_defineProperty(_transform,"register",function register(kind,transformer){(0,_invariant.default)(isElementRef(kind),'You must provide a valid element reference to register');(0,_invariant.default)(transformer!=null&&typeof transformer==='function','You must provide a transformer function');registry.register(kind,transformer);}),_defineProperty(_transform,"reset",function reset(){registry.reset();}),_transform)};});var _default=SubSystem.create(function(system){return{name:'transform',buildTransformer:function buildTransformer(){var combinedRegistry=getCombinedRegistry(system.subsystemSequence);if(combinedRegistry==null){return R.identity;}return impl.transformer(combinedRegistry,system.elementZipper);}};});exports.default=_default;var getRegistry=R.path(['transform',registryAttribute]);var getCombinedRegistry=R.pipe(R.map(getRegistry),R.reject(R.isNil),chainMultivalueRegistries);