@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
JavaScript
;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)()));