UNPKG

@skele/classic

Version:

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

1 lines 2.67 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.runEnhancers=runEnhancers;exports.applyEnhancements=applyEnhancements;var R=_interopRequireWildcard(require("ramda"));var _immutable=_interopRequireDefault(require("immutable"));var _core=require("@skele/core");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 _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance");}function _iterableToArray(iter){if((typeof Symbol==="function"?Symbol.iterator:"@@iterator")in Object(iter)||Object.prototype.toString.call(iter)==="[object Arguments]")return Array.from(iter);}function _arrayWithoutHoles(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i<arr.length;i++){arr2[i]=arr[i];}return arr2;}}function runEnhancers(el,context,enhancers){return regeneratorRuntime.async(function runEnhancers$(_context){while(1){switch(_context.prev=_context.next){case 0:return _context.abrupt("return",Promise.all(asArray(enhancers).map(function(e){return el==null?e(context):e(el,context);})));case 1:case"end":return _context.stop();}}},null,this);}function applyEnhancements(result,context,enhancements){var elementZipper=context.elementZipper;var updates=compressUpdates(asArray(enhancements),elementZipper);return R.reduce(function(el,update){return update(el);},result,updates);}function compressUpdates(updates,elementZipper){var slices=partitionBy(Array.isArray,updates);return R.chain(R.when(R.pipe(R.head,Array.isArray),function(slice){return[R.pipe(elementZipper,_core.zip.editCond(concatAll(slice)),_core.zip.node)];}),slices);}function partitionBy(fn,list){if(!R.isEmpty(list)){var v=R.head(list);var fv=fn(v);var run=[v].concat(_toConsumableArray(R.takeWhile(function(x){return R.equals(fv,fn(x));},R.tail(list))));return[run].concat(_toConsumableArray(partitionBy(fn,R.drop(R.length(run),list))));}return[];}var concatAll=function concatAll(lists){return R.reduce(R.concat,[],lists);};var asArray=function asArray(enhancements){return _immutable.default.Iterable.isIterable(enhancements)?enhancements.toArray():enhancements;};