@skele/classic
Version:
Skele is an architectural framework that assists with building data-driven apps with React or React Native.
1 lines • 3.59 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var R=_interopRequireWildcard(require("ramda"));var _immutable=require("immutable");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 readDependentRegistryAttribute='@@skele/_readDependentEnhanceRegistry';var readIndependentListAttribute='@@skele/_readIndependentEnhanceList';var MultivalueRegistry=_core.registry.MultivalueRegistry,chainMultivalueRegistries=_core.registry.chainMultivalueRegistries;var isElementRef=_core.data.isElementRef;SubSystem.extend(function(){var _enhance;var readDependentRegistry=new MultivalueRegistry();var readIndependentList=(0,_immutable.List)().asMutable();return{enhance:(_enhance={},_defineProperty(_enhance,readDependentRegistryAttribute,readDependentRegistry),_defineProperty(_enhance,readIndependentListAttribute,readIndependentList),_defineProperty(_enhance,"register",function register(kind,enhancer){if(enhancer==null){enhancer=kind;kind=null;}(0,_invariant.default)(isElementRef(kind)||kind==null,'You must provide a valid element reference to register');(0,_invariant.default)(enhancer!=null&&typeof enhancer==='function','You must provide an enhancer function');kind!=null?readDependentRegistry.register(kind,enhancer):readIndependentList.push(enhancer);}),_defineProperty(_enhance,"reset",function reset(){readDependentRegistry.reset();readIndependentList.clear();}),_enhance)};});var _default=SubSystem.create(function(system){return{name:'enhance',buildEnhanceHelper:function buildEnhanceHelper(){var combinedReadDependentRegistry=getCombinedRegistry(system.subsystemSequence);var combinedReadIndependentList=getCombinedList(system.subsystemSequence);if(combinedReadDependentRegistry.isEmpty()&&combinedReadIndependentList.isEmpty()){return{readDependentEnhancers:R.always((0,_immutable.List)()),readIndependentEnhancers:R.always((0,_immutable.List)()),runEnhancers:function runEnhancers(x){return Promise.all([Promise.resolve(x)]);},applyEnhancements:R.identity};}return{readDependentEnhancers:function readDependentEnhancers(kind){return combinedReadDependentRegistry.get(kind);},readIndependentEnhancers:function readIndependentEnhancers(){return combinedReadIndependentList;},runEnhancers:impl.runEnhancers,applyEnhancements:impl.applyEnhancements};}};});exports.default=_default;var getRegistry=R.path(['enhance',readDependentRegistryAttribute]);var getCombinedRegistry=R.pipe(R.map(getRegistry),R.reject(R.isNil),chainMultivalueRegistries);var getList=R.path(['enhance',readIndependentListAttribute]);var iconcat=function iconcat(a,b){return a.concat(b);};var getCombinedList=R.pipe(R.map(getList),R.reject(R.isNil),R.map(function(l){return l.asImmutable();}),R.reduce(iconcat,(0,_immutable.List)()));