UNPKG

@skele/classic

Version:

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

1 lines 6.16 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.ActionRegistry=ActionRegistry;exports.ActionMultivalueRegistry=ActionMultivalueRegistry;exports.cacheKey=exports.findParentEntry=exports.keyFromAction=exports.keyFor=void 0;var _immutable=require("immutable");var _core=require("@skele/core");var actions=_interopRequireWildcard(require("../action"));var _cursor=require("../impl/cursor");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 Registry=_core.registry.Registry;var keyFor=function keyFor(kind,action){return{kind:kind instanceof _immutable.List?kind.toArray():kind,action:action};};exports.keyFor=keyFor;var keyFromAction=function keyFromAction(_ref){var kind=_ref[actions.actionMetaProperty].kind,type=_ref.type;return keyFor(kind,type);};exports.keyFromAction=keyFromAction;var findParentEntry=function findParentEntry(lookupFn,type,cursor){for(var _iterator=(0,_cursor.ancestors)(cursor),_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[typeof Symbol==="function"?Symbol.iterator:"@@iterator"]();;){var _ref2;if(_isArray){if(_i>=_iterator.length)break;_ref2=_iterator[_i++];}else{_i=_iterator.next();if(_i.done)break;_ref2=_i.value;}var _c=_ref2;if(!_core.data.isElement(_c))continue;var key=keyFor(_core.data.kindOf(_c),type);var entry=lookupFn(key);if(entry!=null){return{element:_c,entry:entry};}}return undefined;};exports.findParentEntry=findParentEntry;var sep='$$sep$$';var cacheKey=function cacheKey(key){var kind=key.kind;var res=_immutable.Iterable.isIndexed(kind)?kind.toArray():Array.isArray(kind)?kind:[kind];res.push(sep,key.action);return res;};exports.cacheKey=cacheKey;function ActionRegistry(){this._registry=new Registry();this.register=function(key,obj){var en=this._registry.getEntry(key.kind);var aMap;if(en==null||en.key.length!==key.kind.length){aMap={};this._registry.register(key.kind,aMap);}else{aMap=en.value;}aMap[key.action]=obj;};this.get=function(key){var en=this.getEntry(key);return en!=null?en.value:undefined;};this.getEntry=function(key){var bestMatch;for(var _iterator2=this.collector(key),_isArray2=Array.isArray(_iterator2),_i2=0,_iterator2=_isArray2?_iterator2:_iterator2[typeof Symbol==="function"?Symbol.iterator:"@@iterator"]();;){var _ref3;if(_isArray2){if(_i2>=_iterator2.length)break;_ref3=_iterator2[_i2++];}else{_i2=_iterator2.next();if(_i2.done)break;_ref3=_i2.value;}var _en=_ref3;bestMatch=_en;}return bestMatch;};this.collector=regeneratorRuntime.mark(function _callee(key){var _iterator3,_isArray3,_i3,_ref4,_en2,value;return regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:_iterator3=this._registry.collector(key.kind),_isArray3=Array.isArray(_iterator3),_i3=0,_iterator3=_isArray3?_iterator3:_iterator3[typeof Symbol==="function"?typeof Symbol==="function"?Symbol.iterator:"@@iterator":"@@iterator"]();case 1:if(!_isArray3){_context.next=7;break;}if(!(_i3>=_iterator3.length)){_context.next=4;break;}return _context.abrupt("break",18);case 4:_ref4=_iterator3[_i3++];_context.next=11;break;case 7:_i3=_iterator3.next();if(!_i3.done){_context.next=10;break;}return _context.abrupt("break",18);case 10:_ref4=_i3.value;case 11:_en2=_ref4;value=_en2.value[key.action];if(!(value!=null)){_context.next=16;break;}_context.next=16;return{key:{kind:_en2.key},value:value};case 16:_context.next=1;break;case 18:case"end":return _context.stop();}}},_callee,this);});this.isEmpty=function(){return this._registry.isEmpty();};this.reset=function(){this._registry=new Registry();};}ActionRegistry.keyFor=keyFor;ActionRegistry.cacheKey=cacheKey;ActionRegistry.keyFromAction=keyFromAction;function ActionMultivalueRegistry(){this._registry=new Registry();this.register=function(key,obj){var en=this._registry.getEntry(key.kind);var aMap;if(en==null||en.key.length!==key.kind.length){aMap={};this._registry.register(key.kind,aMap);}else{aMap=en.value;}var objs=aMap[key.action];if(objs==null){objs=[];aMap[key.action]=objs;}objs.push(obj);};this.get=function(key){var en=this.getEntry(key);return en!=null?en.value:undefined;};this.getEntry=function(key){var all=[];for(var _iterator4=this.collector(key),_isArray4=Array.isArray(_iterator4),_i4=0,_iterator4=_isArray4?_iterator4:_iterator4[typeof Symbol==="function"?Symbol.iterator:"@@iterator"]();;){var _ref5;if(_isArray4){if(_i4>=_iterator4.length)break;_ref5=_iterator4[_i4++];}else{_i4=_iterator4.next();if(_i4.done)break;_ref5=_i4.value;}var _en3=_ref5;Array.prototype.push.apply(all,_en3.value);}return all;};this.collector=regeneratorRuntime.mark(function _callee2(key){var _iterator5,_isArray5,_i5,_ref6,_en4,objs;return regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_iterator5=this._registry.collector(key.kind),_isArray5=Array.isArray(_iterator5),_i5=0,_iterator5=_isArray5?_iterator5:_iterator5[typeof Symbol==="function"?typeof Symbol==="function"?Symbol.iterator:"@@iterator":"@@iterator"]();case 1:if(!_isArray5){_context2.next=7;break;}if(!(_i5>=_iterator5.length)){_context2.next=4;break;}return _context2.abrupt("break",18);case 4:_ref6=_iterator5[_i5++];_context2.next=11;break;case 7:_i5=_iterator5.next();if(!_i5.done){_context2.next=10;break;}return _context2.abrupt("break",18);case 10:_ref6=_i5.value;case 11:_en4=_ref6;objs=_en4.value[key.action];if(!(objs!=null)){_context2.next=16;break;}_context2.next=16;return{key:{kind:_en4.key},objs:objs};case 16:_context2.next=1;break;case 18:case"end":return _context2.stop();}}},_callee2,this);});this.isEmpty=function(){return this._registry.isEmpty();};this.reset=function(){this._registry=new Registry();};}ActionMultivalueRegistry.keyFor=keyFor;ActionMultivalueRegistry.cacheKey=cacheKey;ActionMultivalueRegistry.keyFromAction=keyFromAction;