@skele/core
Version:
Core package of the Skele framework. Element definitions, registrations and traversal.
1 lines • 4.66 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.isElementRef=isElementRef;exports.kindOf=kindOf;exports.isElement=isElement;exports.ancestorKinds=ancestorKinds;exports.pathsToChildElements=pathsToChildElements;exports.childPositions=exports.asList=exports.childrenProperty=exports.canonical=exports.isExactlyOfKind=exports.isOfKind=void 0;var R=_interopRequireWildcard(require("ramda"));var _invariant=_interopRequireDefault(require("invariant"));var _immutable=require("immutable");var _memoize=_interopRequireDefault(require("../registry/memoize"));var _deprecated=_interopRequireDefault(require("../log/deprecated"));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;}}var isOfKind=R.curry(function isOfKind(kind,element){if(element==null){return false;}var normalized=canonical(kind);var elementKindNormalized=canonical(element.get('kind'));(0,_invariant.default)(normalized!=null,'You must provide a valid element kind');(0,_invariant.default)(elementKindNormalized,'You must provide an element that has a valid kind');return(0,_immutable.is)(elementKindNormalized.take(normalized.count()),normalized);});exports.isOfKind=isOfKind;function isElementRef(obj){var isString=function isString(o){return typeof o==='string';};if(isString(obj))return true;if(Array.isArray(obj)&&(R.all(isString)(obj)||obj.length===0))return true;if(obj instanceof _immutable.List&&(obj.every(isString)||obj.isEmpty()))return true;return false;}var isExactlyOfKind=R.curry(function isExactlyOfKind(kind,element){if(element==null){return false;}var normalized=normalize(kind);var elementKindNormalized=normalize(element.get('kind'));return(0,_immutable.is)(elementKindNormalized,normalized);});exports.isExactlyOfKind=isExactlyOfKind;function kindOf(element){var kind=element.get('kind');if(kind!=null){return canonical(kind);}return null;}function isElement(obj){return _immutable.Iterable.isIterable(obj)&&kindOf(obj)!=null;}function ancestorKinds(ref){var _marked=regeneratorRuntime.mark(subKinds);var cRef=canonical(ref);(0,_invariant.default)(cRef!=null,'you must provide a valid element reference');function subKinds(){var current;return regeneratorRuntime.wrap(function subKinds$(_context){while(1){switch(_context.prev=_context.next){case 0:current=(0,_immutable.List)(cRef);case 1:if(!(current!=null&&!current.isEmpty())){_context.next=7;break;}_context.next=4;return current;case 4:current=current.butLast();_context.next=1;break;case 7:case"end":return _context.stop();}}},_marked,this);}if(Array.isArray(ref)&&ref.length===0){return(0,_immutable.List)();}return(0,_immutable.Seq)(subKinds());}function _normalize(kind){if(typeof kind==='string'){return _immutable.List.of(kind);}if(Array.isArray(kind)){return(0,_immutable.List)(kind);}if(_immutable.List.isList(kind)){return kind;}if(_immutable.Seq.isSeq(kind)){return kind.toList();}return null;}var normalize=(0,_memoize.default)(_normalize);var canonical=normalize;exports.canonical=canonical;function pathsToChildElements(element){return childPositions(element).flatMap(function(childrenPath){var children=element.get(childrenPath);if(_immutable.Iterable.isIndexed(children)){return children.map(function(_,i){return _immutable.List.of(childrenPath,i);});}else if(_immutable.Iterable.isAssociative(children)){return _immutable.List.of(_immutable.List.of(childrenPath));}else{return(0,_immutable.List)();}});}var childrenProperty='@@skele/children';exports.childrenProperty=childrenProperty;var deprecatedChildrenProperty='@@girders-elements/children';var asList=function asList(v){return _immutable.Iterable.isIndexed(v)?v:Array.isArray(v)?(0,_immutable.List)(v):v!=null?_immutable.List.of(v):(0,_immutable.List)();};exports.asList=asList;var deprecatedChildrenGetter=(0,_deprecated.default)('The use of `@@girders-elements/children` to demarcate child positions in an element '+'is deprecated. Please use `@@skele/children` or `propNames.children` instead',function(el){return el.get(deprecatedChildrenProperty);});var childPositions=function childPositions(element){return asList(element.get(childrenProperty)||(element.has(deprecatedChildrenProperty)?deprecatedChildrenGetter(element):null));};exports.childPositions=childPositions;