UNPKG

@girders-elements/core

Version:

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

107 lines (73 loc) 3.69 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true}); var _ramda=require('ramda');var _ramda2=_interopRequireDefault(_ramda); var _immutable=require('immutable'); var _invariant=require('invariant');var _invariant2=_interopRequireDefault(_invariant); var _data=require('../data'); var _subsystem=require('../subsystem');var SubSystem=_interopRequireWildcard(_subsystem); var _registry=require('../registry'); var _impl=require('./impl');var impl=_interopRequireWildcard(_impl);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))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}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= '@@girders-elements/_readDependentEnhanceRegistry'; var readIndependentListAttribute= '@@girders-elements/_readIndependentEnhanceList'; SubSystem.extend(function(){var _enhance; var readDependentRegistry=new _registry.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,_invariant2.default)( (0,_data.isElementRef)(kind)||kind==null, 'You must provide a valid element reference to register'); (0,_invariant2.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)}; });exports.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:_ramda2.default.always((0,_immutable.List)()), readIndependentEnhancers:_ramda2.default.always((0,_immutable.List)()), runEnhancers:function runEnhancers(x){return Promise.all([Promise.resolve(x)]);}, applyEnhancements:_ramda2.default.identity}; } return{ readDependentEnhancers:function readDependentEnhancers(kind){return combinedReadDependentRegistry.get(kind);}, readIndependentEnhancers:function readIndependentEnhancers(){return combinedReadIndependentList;}, runEnhancers:impl.runEnhancers, applyEnhancements:impl.applyEnhancements}; }};}); var getRegistry=_ramda2.default.path(['enhance',readDependentRegistryAttribute]); var getCombinedRegistry=_ramda2.default.pipe( _ramda2.default.map(getRegistry), _ramda2.default.reject(_ramda2.default.isNil),_registry.chainMultivalueRegistries); var getList=_ramda2.default.path(['enhance',readIndependentListAttribute]); var iconcat=function iconcat(a,b){return a.concat(b);}; var getCombinedList=_ramda2.default.pipe( _ramda2.default.map(getList), _ramda2.default.reject(_ramda2.default.isNil), _ramda2.default.map(function(l){return l.asImmutable();}), _ramda2.default.reduce(iconcat,(0,_immutable.List)()));