Socket
Socket
Sign inDemoInstall

@limble/limble-tree

Package Overview
Dependencies
5
Maintainers
2
Versions
50
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.10.0 to 0.10.1

2

bundles/limble-limble-tree.umd.min.js

@@ -15,3 +15,3 @@ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("@limble/limble-tree",["exports","@angular/core","rxjs","rxjs/operators","@angular/common"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).limble=e.limble||{},e.limble["limble-tree"]={}),e.ng.core,e.rxjs,e.rxjs.operators,e.ng.common)}(this,(function(e,t,r,n,o){"use strict";

PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */Object.create;function i(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function a(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function s(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(a(arguments[t]));return e}Object.create;function l(e,t){var r,n;if(e.length!==t.length)return!1;try{for(var o=i(e.entries()),s=o.next();!s.done;s=o.next()){var d=a(s.value,2),c=d[0],p=d[1],h=t[c];if(p instanceof Array&&h instanceof Array){if(!l(p,h))return!1}else if(p!==h)return!1}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return!0}function d(e,t){return void 0!==e&&(!0===e.allowNesting||"function"==typeof e.allowNesting&&void 0!==t&&!0===e.allowNesting(t))}var c=function(){function e(e,t){this.parentCoordinates=e,this.insertIndex=t}return e.prototype.getFullInsertCoordinates=function(){return s(this.parentCoordinates,[this.insertIndex])},e}(),p=function(){function e(e,t){this.location=new c(e,t),this.visible=!1,this.active=!1,this.commChannel=new r.Subject}return e.dropZoneLocationsAreEqual=function(e,t){return l(e.getFullInsertCoordinates(),t.getFullInsertCoordinates())},e.prototype.isVisible=function(e){return void 0===e&&(e=void 0),void 0!==e&&(this.visible=e,void 0!==this.commChannel&&this.commChannel.next("checkVisible"),!1===this.visible&&this.isActive(!1)),this.visible},e.prototype.isActive=function(e){return void 0===e&&(e=void 0),void 0!==e&&(this.active=e,void 0!==this.commChannel&&this.commChannel.next("checkActive")),this.active},e.prototype.getLocation=function(){return this.location},e.prototype.getFamily=function(){return this.family},e.prototype.setFamily=function(e){this.family=e},e.prototype.getCommChannel=function(){return this.commChannel},e.prototype.getFullInsertCoordinates=function(){return this.location.getFullInsertCoordinates()},e}(),h=function(){function e(){this.state="idle",this.state$=new r.BehaviorSubject(this.state)}return e.prototype.dragging=function(e){this._tempData=e,this.state="dragging",this.state$.next(this.state)},e.prototype.droppable=function(){if("dragging"!==this.state)throw new Error("Can only call `droppable` when state is `dragging`");this.state="droppable",this.state$.next(this.state)},e.prototype.notDroppable=function(){if("droppable"!==this.state)throw new Error("Can only call `notDroppable` when state is `droppable`");this.state="dragging",this.state$.next(this.state)},e.prototype.capture=function(){if("droppable"!==this.state)throw new Error("Can only move to `captured` state from `droppable` state");return this.state="captured",this.state$.next(this.state),this._tempData},e.prototype.release=function(){this._tempData=void 0,this.state="idle",this.state$.next(this.state)},e.prototype.getData=function(){return this._tempData},e.prototype.getState=function(){return this.state},e}();function u(e,t){var r=e.getFullInsertCoordinates(),n=t.getFullInsertCoordinates();return r.length>n.length?-1:r.length<n.length?1:0}h.ɵfac=function(e){return new(e||h)},h.ɵprov=t.ɵɵdefineInjectable({token:h,factory:h.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(h,[{type:t.Injectable}],(function(){return[]}),null);var v=function(){function e(e){this.dragStateService=e,this.dropZoneInventory=[],this.dropZoneFamilies=[],this.visibleFamily=null,this.activeDropZone=null,this.tempFamilies=[],this.setActiveDropZone(null)}return e.prototype.addDropZone=function(e){return void 0===this.dropZoneInventory.find((function(t){return p.dropZoneLocationsAreEqual(t,e)}))&&(this.dropZoneInventory.push(e),!0)},e.prototype.clear=function(){var e,t;if(null!==this.visibleFamily){try{for(var r=i(this.visibleFamily.members),n=r.next();!n.done;n=r.next()){n.value.isVisible(!1)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.visibleFamily=null}this.restoreFamilies(),this.setActiveDropZone(null)},e.prototype.getActiveDropZone=function(){return this.activeDropZone},e.prototype.init=function(e,t){this.tree=e,this.treeOptions=t,this.reset(),this.assignFamilies()},e.prototype.reset=function(){this.clear(),this.dropZoneFamilies.length=0},e.prototype.restart=function(){this.reset(),this.dropZoneInventory.length=0},e.prototype.restoreFamilies=function(){var e,t,r,n;if(2===this.tempFamilies.length){this.dropZoneFamilies.pop(),this.dropZoneFamilies.push(this.tempFamilies[0]);try{for(var o=i(this.tempFamilies[0].members),a=o.next();!a.done;a=o.next()){a.value.setFamily(this.tempFamilies[0])}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}if(null!==this.tempFamilies[1]){this.dropZoneFamilies.push(this.tempFamilies[1]);try{for(var s=i(this.tempFamilies[1].members),l=s.next();!l.done;l=s.next()){l.value.setFamily(this.tempFamilies[1])}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}}this.tempFamilies=[]}},e.prototype.showDropZoneFamily=function(e,t){var r,n,o,a,l,d;if(void 0===t&&(t={joinFamilies:!1,activateLowestInsteadOfFounder:!1}),null===this.activeDropZone||!p.dropZoneLocationsAreEqual(this.activeDropZone,e)){null===this.visibleFamily&&null===this.activeDropZone||this.clear();var h=this.dropZoneInventory.find((function(t){return p.dropZoneLocationsAreEqual(t,e)}));if(void 0===h)throw new Error("Could not find drop zone to show. location: "+JSON.stringify(e.getLocation()));var v=h.getFamily();if(!0===t.joinFamilies){var f=e.getLocation(),g=new c(s(f.parentCoordinates),f.insertIndex+1),y=this.dropZoneInventory.find((function(e){return p.dropZoneLocationsAreEqual(e,g)}));if(void 0===y)throw new Error("Could not find drop zone to show");var m=y.getFamily();if(void 0===v||void 0===m)throw new Error("No family");var b={founder:v.founder,members:s(v.members)};this.showDropZone(v.founder,!0);try{for(var w=i(v.members.sort(u)),D=w.next();!D.done;D=w.next()){(M=D.value).setFamily(b),M!==v.founder&&(null===this.activeDropZone?this.showDropZone(M,!0):this.showDropZone(M))}}catch(e){r={error:e}}finally{try{D&&!D.done&&(n=w.return)&&n.call(w)}finally{if(r)throw r.error}}try{for(var C=i(m.members),Z=C.next();!Z.done;Z=C.next()){(M=Z.value).setFamily(b),M.getLocation().parentCoordinates.length<y.getLocation().parentCoordinates.length&&(b.members.push(M),this.showDropZone(M))}}catch(e){o={error:e}}finally{try{Z&&!Z.done&&(a=C.return)&&a.call(C)}finally{if(o)throw o.error}}this.tempFamilies=[v,m];var I=this.dropZoneFamilies.indexOf(v);this.dropZoneFamilies.splice(I,1);var S=this.dropZoneFamilies.indexOf(m);this.dropZoneFamilies.splice(S,1),this.dropZoneFamilies.push(b),this.visibleFamily=b}else{if(void 0===v)throw new Error("No family");this.visibleFamily=v,this.showDropZone(v.founder,!0);try{for(var x=i(v.members.sort(u)),E=x.next();!E.done;E=x.next()){var M;(M=E.value)!==v.founder&&(null===this.activeDropZone?this.showDropZone(M,!0):this.showDropZone(M))}}catch(e){l={error:e}}finally{try{E&&!E.done&&(d=x.return)&&d.call(x)}finally{if(l)throw l.error}}}if(!0===t.activateLowestInsteadOfFounder){var F=s(this.visibleFamily.members).sort(u).pop();if(void 0===F)throw new Error("Could not get lowest member");this.swapActiveDropZone(F)}}},e.prototype.swapActiveDropZone=function(e){if(null===this.visibleFamily)throw new Error("No visible family available for swapping");if(-1===this.visibleFamily.members.findIndex((function(t){return t===e})))throw new Error("failed to swap active drop zone");this.setActiveDropZone(e)},e.prototype.assignFamilies=function(){var e,t,r,n,o,a,d=s(this.dropZoneInventory),c=d.filter((function(e){var t=e.getLocation();return 0===t.insertIndex&&t.parentCoordinates.length>0})).sort((function(e,t){for(var r,n,o,i,a=e.getFullInsertCoordinates(),s=t.getFullInsertCoordinates(),l=Math.max(a.length,s.length),d=0;d<l;d++){if((null!==(r=a[d])&&void 0!==r?r:-1)>(null!==(n=s[d])&&void 0!==n?n:-1))return-1;if((null!==(o=a[d])&&void 0!==o?o:-1)<(null!==(i=s[d])&&void 0!==i?i:-1))return 1}return 0})),p=function(e){if(!d.includes(e))return"continue";var t={founder:e,members:[]};e.setFamily(t);for(var r=s(e.getFullInsertCoordinates());r.length>0;){var n=d.findIndex((function(e){return l(e.getFullInsertCoordinates(),r)}));if(-1!==n){var o=d.splice(n,1)[0];t.members.push(o),o.setFamily(t)}r.pop(),r[r.length-1]++}h.dropZoneFamilies.push(t)},h=this;try{for(var u=i(c),v=u.next();!v.done;v=u.next()){p(y=v.value)}}catch(t){e={error:t}}finally{try{v&&!v.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}try{for(var f=i(d.filter((function(e){return 1===e.getFullInsertCoordinates().length}))),g=f.next();!g.done;g=f.next()){var y,m={founder:y=g.value,members:[y]};y.setFamily(m),this.dropZoneFamilies.push(m),d.splice(d.indexOf(y),1)}}catch(e){r={error:e}}finally{try{g&&!g.done&&(n=f.return)&&n.call(f)}finally{if(r)throw r.error}}if(0!==d.length){var b="";try{for(var w=i(d),D=w.next();!D.done;D=w.next()){var C=D.value;b+=JSON.stringify(C.getLocation())+", "}}catch(e){o={error:e}}finally{try{D&&!D.done&&(a=w.return)&&a.call(w)}finally{if(o)throw o.error}}throw b=b.slice(0,b.length-2),new Error("Some zones were not assigned to a family. The orphan zones have the following locations: "+b)}},e.prototype.setActiveDropZone=function(e){null!==this.activeDropZone&&this.activeDropZone.isActive(!1),this.activeDropZone=e,null!==this.activeDropZone&&"droppable"!==this.dragStateService.getState()?this.dragStateService.droppable():null===this.activeDropZone&&"droppable"===this.dragStateService.getState()&&this.dragStateService.notDroppable(),null!==this.activeDropZone&&this.activeDropZone.isActive(!0)},e.prototype.showDropZone=function(e,t){if(void 0===t&&(t=!1),void 0===this.tree)throw new Error("DropZoneService not initialized");if(!this.zoneIsAllowed(e))return!1;if(void 0===this.tree.findByCoordinates(e.getLocation().parentCoordinates))throw new Error("Bad family member");return e.isVisible(!0),!0===t&&this.setActiveDropZone(e),!0},e.prototype.zoneIsAllowed=function(e){if(void 0===this.treeOptions||void 0===this.tree)throw new Error("dropZoneService not initialized");var t=this.dragStateService.getData();if(void 0===t)throw new Error("Can't get dragged node");var r=this.tree.findByCoordinates(e.getLocation().parentCoordinates);if(void 0===r)throw new Error("Could not get drop zone parent");var n=e.getLocation().insertIndex;if(void 0===n)throw new Error("Could not get drop zone index");return!!this.treeOptions.allowDrop(t.data,r.data,n)},e}();v.ɵfac=function(e){return new(e||v)(t.ɵɵinject(h))},v.ɵprov=t.ɵɵdefineInjectable({token:v,factory:v.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(v,[{type:t.Injectable}],(function(){return[{type:h}]}),null);var f=function(){function e(e){this.data=e,this.children=[],this.parent=null}return e.prototype.isRoot=function(){return null===this.parent},e.prototype.getParent=function(){return this.parent},e.prototype.setParent=function(e){this.parent=e},e.prototype.findByCoordinates=function(e){var t,r,n=this;try{for(var o=i(e.values()),a=o.next();!a.done;a=o.next()){var s=a.value;if(void 0===(n=n.getChild(s)))return}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getCoordinates=function(){for(var e=[],t=this;null!==t.parent;){var r=t.getIndex();if(null==r)throw new Error("Could not get cursor index");e.unshift(r),t=t.parent}return e},e.prototype.getChild=function(e){return this.children[e]},e.prototype.getChildren=function(){return this.children},e.prototype.clearChildren=function(){var e,t;try{for(var r=i(this.children),n=r.next();!n.done;n=r.next()){n.value.setParent(null)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.children.length=0},e.prototype.getIndex=function(){var e=this;if(null===this.parent)return null;var t=this.parent.children.findIndex((function(t){return t===e}));return-1!==t?t:void 0},e.prototype.getDescendant=function(e){var t,r,n=this;try{for(var o=i(e),a=o.next();!a.done;a=o.next()){var s=a.value;if(void 0===(n=n.children[s]))return}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.findDescendant=function(e){var t,r;if(!0===e(this.data))return this;if(this.children.length>0)try{for(var n=i(this.children),o=n.next();!o.done;o=n.next()){var a=o.value.findDescendant(e);if(void 0!==a)return a}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},e.prototype.getAncestors=function(){for(var e=[],t=this;null!==t.parent;)e.push(t.parent),t=t.parent;return e},e.prototype.appendChild=function(e){return null!==e.getParent()&&e.remove(),e.setParent(this),this.children.push(e),e},e.prototype.insertChild=function(e,t){var r=this.children.indexOf(e);return-1===r?(null!==e.getParent()&&e.remove(),e.setParent(this),this.children.splice(t,0,e)):t>r?(this.children.splice(t,0,e),this.removeChild(r),e.setParent(this)):(e.remove(),this.children.splice(t,0,e),e.setParent(this)),e},e.prototype.removeChild=function(e){var t=this.children.splice(e,1)[0];return t.setParent(null),t},e.prototype.remove=function(){var e=this.getIndex();if(null===this.parent||null==e)throw new Error("can't remove root");return this.parent.removeChild(e)},e.prototype.copy=function(){var e=this.copyHelper();return e.setParent(null),e},e.prototype.copyHelper=function(){var t,r,n=new e(this.data);try{for(var o=i(this.children),a=o.next();!a.done;a=o.next()){var s=a.value;n.appendChild(s.copyHelper()).parent=n}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e}(),g=function(){function e(e){this.factoryResolver=e,this.factoryResolver=e}return e.prototype.appendComponent=function(e,t,r){void 0===r&&(r=null);var n=this.factoryResolver.resolveComponentFactory(e),o=t.createComponent(n);if(null!==r){var i=t.indexOf(o.hostView);t.detach(i),t.insert(o.hostView,r)}return o},e}();function y(e){var t,r,n,o=/(auto|scroll)/,a=function(e,t){return null===e||null===e.parentNode?t:a(e.parentElement,t.concat([e]))},s=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},l=function(e){return o.test(function(e){return s(e,"overflow")+s(e,"overflow-y")+s(e,"overflow-x")}(e))},d=a(e.parentElement,[]);try{for(var c=i(d),p=c.next();!p.done;p=c.next()){var h=p.value;if(l(h))return h}}catch(e){t={error:e}}finally{try{p&&!p.done&&(r=c.return)&&r.call(c)}finally{if(t)throw t.error}}return null!==(n=document.scrollingElement)&&void 0!==n?n:document.documentElement}g.ɵfac=function(e){return new(e||g)(t.ɵɵinject(t.ComponentFactoryResolver))},g.ɵprov=t.ɵɵdefineInjectable({token:g,factory:g.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(g,[{type:t.Injectable}],(function(){return[{type:t.ComponentFactoryResolver}]}),null);var m=function(){function e(e){var t=this;this.ngZone=e,this.ngZone.runOutsideAngular((function(){t.globalDrag$=r.fromEvent(document,"drag")})),this.scrolling=!1}return e.prototype.addScrolling=function(){var e=this;this.ngZone.runOutsideAngular((function(){if(void 0===e.globalDragSubscription){if(void 0===e.globalDrag$)throw new Error("Could not get observable");var t,r,o,i,a,s,l,d,c;e.globalDragSubscription=e.globalDrag$.pipe(n.throttleTime(25),n.filter((function(e){if(!e.target)return!1;d=y(e.target),t=d.clientHeight;var n,l=d.clientWidth;if("fixed"===window.getComputedStyle(d).getPropertyValue("position").toLowerCase())n=e.clientX,c=e.clientY;else{var p=d.getBoundingClientRect(),h=y(d);n=e.clientX-(p.left+h.scrollLeft),c=e.clientY-(p.top+h.scrollTop)}return!(n<0||n>l||c<0||c>t)&&(r=Math.max(.1*t,100),s=c>(i=t-r),(a=c<(o=r))||s)}))).subscribe((function(){if(null!==d){var n,p=d.scrollHeight-t,h=d.scrollTop;if(a&&h>0){n=h-75*((o-c)/r)}else{if(!s||!(h<p))return;n=h+75*((c-i)/r)}(n=Math.max(0,Math.min(p,n)))!==h&&(d.scrollTo({top:n}),e.scrolling=!0,clearTimeout(l),l=setTimeout((function(){e.scrolling=!1}),100))}}))}}))},e.prototype.removeScrolling=function(){void 0!==this.globalDragSubscription&&this.globalDragSubscription.unsubscribe()},e}();m.ɵfac=function(e){return new(e||m)(t.ɵɵinject(t.NgZone))},m.ɵprov=t.ɵɵdefineInjectable({token:m,factory:m.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(m,[{type:t.Injectable}],(function(){return[{type:t.NgZone}]}),null);var b=["nodeHost"],w=["draggableDiv"];function D(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",6),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneAbove)}}function C(e,t){}function Z(e,r){if(1&e&&t.ɵɵelement(0,"limble-tree-branch",7),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("branch",n.branch)("dropZoneInside",n.dropZoneInside)("renderDropZoneInside",n.renderDropZoneInside)}}function I(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",6),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneBelow)}}var S=function(){function e(e,t,r,n,o,i){this.componentCreatorService=e,this.changeDetectorRef=t,this.dragStateService=r,this.dropZoneService=n,this.treeService=o,this.globalEventsService=i,void 0!==this.treeService.treeOptions&&!0!==this.treeService.treeOptions.listMode&&!0!==this.treeService.getPlaceholder()?this.renderInnerBranch=!0:this.renderInnerBranch=!1,this.renderDropZoneBelow=!1,this.renderDropZoneAbove=!1,this.renderDropZoneInside=!1}return e.prototype.ngOnInit=function(){this.registerDropZones()},e.prototype.ngAfterViewInit=function(){this.renderNode(),this.checkForHandle(),this.changeDetectorRef.detectChanges()},e.prototype.dragstartHandler=function(e){var t,r=this;if(e.stopPropagation(),null===e.dataTransfer||void 0===this.branch)throw new Error("failed to run dragstartHandler");var n=e.target;"LIMBLE-TREE-NODE"===(null===(t=n.parentElement)||void 0===t?void 0:t.tagName)?(e.dataTransfer.effectAllowed="move",this.dragStateService.dragging(this.branch),setTimeout((function(){var e;if(n.classList.add("dragging"),void 0===r.branch)throw new Error("Could not show surrounding drop zones");var t,o=r.branch.getParent(),i=!0;null!==(null==o?void 0:o.data)&&(t=null==o?void 0:o.data,i=d(r.treeService.treeOptions,t)),void 0!==r.dropZoneAbove&&i&&(r.dropZoneService.showDropZoneFamily(r.dropZoneAbove,{joinFamilies:!0}),1===(null===(e=r.treeService.treeData)||void 0===e?void 0:e.length)&&1===r.branch.getCoordinates().length&&r.treeService.usePlaceholder())}))):e.preventDefault()},e.prototype.dragendHandler=function(e){var t=this;if(e.stopPropagation(),e.target.classList.remove("dragging"),"captured"!==this.dragStateService.getState())return this.dragStateService.release(),this.dropZoneService.clear(),this.dropZoneService.restoreFamilies(),void this.treeService.removePlaceholder();this.dragStateService.state$.pipe(n.take(2)).subscribe((function(e){"captured"===e&&void 0!==t.branch&&(t.treeService.remove(t.branch),t.dragStateService.release())}))},e.prototype.dragoverHandler=function(e){if(!0!==this.globalEventsService.scrolling){if(void 0===this.branch)throw new Error("Can't get current branch during dragover event");var t=this.dragStateService.getData();if(void 0!==t&&t!==this.branch&&!this.branch.getAncestors().includes(t))if(!0!==this.treeService.getPlaceholder()||void 0===this.dropZoneAbove){var r,n=e.currentTarget.offsetHeight/3,o=2*n,i=this.branch.getParent(),a=!0;null!==(null==i?void 0:i.data)&&(r=null==i?void 0:i.data,a=d(this.treeService.treeOptions,r));var s=this.dropZoneService.getActiveDropZone();if(e.offsetY<n&&void 0!==this.dropZoneAbove&&(null===s||!p.dropZoneLocationsAreEqual(s,this.dropZoneAbove))&&a){if(null==this.branch.getIndex())throw new Error("can't get branch index");this.dropZoneService.showDropZoneFamily(this.dropZoneAbove,{activateLowestInsteadOfFounder:!0})}else if(e.offsetY<o&&void 0!==this.dropZoneInside&&(null===s||!p.dropZoneLocationsAreEqual(s,this.dropZoneInside)))this.dropZoneService.showDropZoneFamily(this.dropZoneInside);else if(e.offsetY>=o&&void 0!==this.dropZoneBelow&&(null===s||!p.dropZoneLocationsAreEqual(s,this.dropZoneBelow))&&0===this.branch.getChildren().length&&a){if(null==this.branch.getIndex())throw new Error("can't get branch index");this.dropZoneService.showDropZoneFamily(this.dropZoneBelow)}}else this.dropZoneService.showDropZoneFamily(this.dropZoneAbove)}},e.prototype.renderNode=function(){var e;if(void 0===this.nodeHost||void 0===this.branch)throw new Error("Failed to render tree node");var t=this.branch.data.component;if(void 0===t&&(t=null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.defaultComponent),void 0===t)throw new Error("limbleTree requires a component to render");var r=this.componentCreatorService.appendComponent(t.class,this.nodeHost);for(var n in r.instance.nodeData=this.branch.data,t.bindings)r.instance[n]=t.bindings[n]},e.prototype.registerDropZones=function(){var e;if(!1!==(null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.allowDragging)){if(void 0===this.branch)throw new Error("failed to register drop zones");var t,r=this.branch.getParent();(null===(null==r?void 0:r.data)||(t=null==r?void 0:r.data,d(this.treeService.treeOptions,t)))&&(this.addDropZoneAbove(),!0!==this.treeService.getPlaceholder()&&(this.addDropZoneBelow(),d(this.treeService.treeOptions,this.branch.data)&&this.addDropZoneInside()))}},e.prototype.addDropZoneAbove=function(){var e;if(void 0===this.branch)throw new Error("failed to register drop zone above");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1];this.dropZoneAbove=new p(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[]),n);var o=this.dropZoneService.addDropZone(this.dropZoneAbove);this.renderDropZoneAbove=!0===o},e.prototype.addDropZoneBelow=function(){var e;if(void 0===this.branch)throw new Error("failed to register drop zone above");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1];this.dropZoneBelow=new p(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[]),n+1);var o=this.dropZoneService.addDropZone(this.dropZoneBelow);this.renderDropZoneBelow=!0===o},e.prototype.addDropZoneInside=function(){if(void 0===this.branch)throw new Error("failed to register drop zone above");this.dropZoneInside=new p(s(this.branch.getCoordinates()),0);var e=this.dropZoneService.addDropZone(this.dropZoneInside);this.renderDropZoneInside=!0===e},e.prototype.checkForHandle=function(){var e,t=this;if(void 0!==this.draggableDiv){var r,o,i=this.draggableDiv.nativeElement,a=i.querySelector(".limble-tree-handle");r=this.treeService.treeOptions,o=null===(e=this.branch)||void 0===e?void 0:e.data,void 0===r||!0!==r.allowDragging&&("function"!=typeof r.allowDragging||void 0===o||!0!==r.allowDragging(o))?i.setAttribute("draggable","false"):null===a?i.setAttribute("draggable","true"):a.addEventListener("mousedown",(function(){i.setAttribute("draggable","true");var e=t.dragStateService.state$.pipe(n.filter((function(e){return"dragging"===e})),n.first());t.dragStateService.state$.pipe(n.skipUntil(e),n.filter((function(e){return"idle"===e})),n.first()).subscribe((function(){i.setAttribute("draggable","false")}))}))}},e}();S.ɵfac=function(e){return new(e||S)(t.ɵɵdirectiveInject(g),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(h),t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(E),t.ɵɵdirectiveInject(m))},S.ɵcmp=t.ɵɵdefineComponent({type:S,selectors:[["limble-tree-node"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(b,1,t.ViewContainerRef),t.ɵɵviewQuery(w,1,t.ElementRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.nodeHost=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.draggableDiv=n.first)}},inputs:{branch:"branch"},decls:8,vars:4,consts:[[3,"dropZone",4,"ngIf"],[1,"limble-parent-container",3,"dragstart","dragend"],["draggableDiv",""],[3,"dragoverEventThrottle","dragoverNoChangeDetect"],["nodeHost",""],[3,"branch","dropZoneInside","renderDropZoneInside",4,"ngIf"],[3,"dropZone"],[3,"branch","dropZoneInside","renderDropZoneInside"]],template:function(e,r){1&e&&(t.ɵɵtemplate(0,D,1,1,"drop-zone",0),t.ɵɵelementStart(1,"div",1,2),t.ɵɵlistener("dragstart",(function(e){return r.dragstartHandler(e)}))("dragend",(function(e){return r.dragendHandler(e)})),t.ɵɵelementStart(3,"div",3),t.ɵɵlistener("dragoverNoChangeDetect",(function(e){return r.dragoverHandler(e)})),t.ɵɵtemplate(4,C,0,0,"ng-template",null,4,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵtemplate(6,Z,1,3,"limble-tree-branch",5),t.ɵɵelementEnd(),t.ɵɵtemplate(7,I,1,1,"drop-zone",0)),2&e&&(t.ɵɵproperty("ngIf",!0===r.renderDropZoneAbove),t.ɵɵadvance(3),t.ɵɵproperty("dragoverEventThrottle",10),t.ɵɵadvance(3),t.ɵɵproperty("ngIf",void 0!==r.branch&&!0===r.renderInnerBranch),t.ɵɵadvance(1),t.ɵɵproperty("ngIf",!0===r.renderDropZoneBelow))},styles:[".dragging[_ngcontent-%COMP%]{position:absolute;transition:transform .01s;transform:translateX(-9999px)}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(S,[{type:t.Component,args:[{selector:"limble-tree-node",templateUrl:"./limble-tree-node.component.html",styleUrls:["./limble-tree-node.component.scss"]}]}],(function(){return[{type:g},{type:t.ChangeDetectorRef},{type:h},{type:v},{type:E},{type:m}]}),{branch:[{type:t.Input}],nodeHost:[{type:t.ViewChild,args:["nodeHost",{read:t.ViewContainerRef}]}],draggableDiv:[{type:t.ViewChild,args:["draggableDiv",{read:t.ElementRef}]}]});var x=function(){};x.ɵfac=function(e){return new(e||x)},x.ɵcmp=t.ɵɵdefineComponent({type:x,selectors:[["limble-tree-placeholder"]],decls:1,vars:0,consts:[[1,"placeholder"]],template:function(e,r){1&e&&t.ɵɵelement(0,"div",0)},styles:[".placeholder[_ngcontent-%COMP%]{width:100%;height:20px}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(x,[{type:t.Component,args:[{selector:"limble-tree-placeholder",templateUrl:"./limble-tree-placeholder.component.html",styleUrls:["./limble-tree-placeholder.component.scss"]}]}],null,null);var E=function(){function e(e,t){this.componentCreatorService=e,this.dropZoneService=t,this.changes$=new r.ReplaySubject(1),this.drops$=new r.ReplaySubject(1),this.treeModel=new f(null),this.placeholder=!1}return e.prototype.init=function(e,t,r,n,o){if(this.host=e,this.uncutData=t,this.treeOptions=this.processOptions(r,n,o),!0===this.treeOptions.listMode){var i=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(i)&&(i=0);var a=i+this.treeOptions.itemsPerPage;this.treeData=this.uncutData.slice(i,a)}else this.treeData=this.uncutData;this.render()},e.prototype.usePlaceholder=function(){if(!0!==this.placeholder){if(void 0===this.host)throw new Error("TreeModel not initialized");this.placeholder=!0;var e=new f({component:{class:x}});this.treeModel.appendChild(e),this.componentCreatorService.appendComponent(S,this.host).instance.branch=e}},e.prototype.removePlaceholder=function(){if(!1!==this.placeholder){var e=this.treeModel.getChildren().length-1;-1!==e&&this.treeModel.removeChild(e),this.placeholder=!1}},e.prototype.render=function(){var e,t,r,n,o=this;if(void 0===this.host||void 0===this.treeData||void 0===this.treeOptions)throw new Error("TreeModel not initialized");if(this.host.clear(),this.dropZoneService.restart(),this.placeholder=!1,this.treeModel=new f(null),0===this.treeData.length)this.usePlaceholder();else{try{for(var a=i(this.treeData),s=a.next();!s.done;s=a.next()){var l=s.value,d=new f(l);this.treeModel.appendChild(d)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}try{for(var c=i(this.treeModel.getChildren()),p=c.next();!p.done;p=c.next()){d=p.value;this.componentCreatorService.appendComponent(S,this.host).instance.branch=d}}catch(e){r={error:e}}finally{try{p&&!p.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}}var h=this.treeData;setTimeout((function(){if(void 0===o.treeOptions)throw new Error("TreeModel not initialized");o.changes$.next(null),o.treeData===h&&o.dropZoneService.init(o.treeModel,o.treeOptions)}))},e.prototype.renderBranch=function(e,t){var r,n,o,a;if(void 0===this.treeModel)throw new Error("TreeModel not initialized");e.clear(),t.clearChildren();try{for(var s=i(null!==(a=null===(o=t.data)||void 0===o?void 0:o.nodes)&&void 0!==a?a:[]),l=s.next();!l.done;l=s.next()){var d=l.value,c=new f(d);t.appendChild(c),this.componentCreatorService.appendComponent(S,e).instance.branch=c}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}},e.prototype.processOptions=function(e,t,r){var n,o,i,a,s;return void 0===e&&(e={}),void 0===t&&(t=1/0),void 0===r&&(r=1),!0===e.listMode&&void 0!==e.allowNesting&&!1!==e.allowNesting&&console.warn("The value of `allowNesting` will be ignored; it must be false when `listMode` is true"),{defaultComponent:e.defaultComponent,indent:null!==(n=e.indent)&&void 0!==n?n:45,allowNesting:!0!==e.listMode&&(null===(o=e.allowNesting)||void 0===o||o),allowDragging:null===(i=e.allowDragging)||void 0===i||i,allowDrop:null!==(a=e.allowDrop)&&void 0!==a?a:function(){return!0},listMode:null!==(s=e.listMode)&&void 0!==s&&s,itemsPerPage:e.listMode?t:void 0,page:e.listMode?r:void 0}},e.prototype.drop=function(e,t){var r,n,o=e.getParent(),i=e.getIndex();if(null==i)throw new Error("Cannot move the hidden root node");if(!0===this.placeholder?(r=[],n=0,this.removePlaceholder()):n=(r=s(t)).pop(),void 0===n)throw new Error("target coordinates are empty");var a=this.treeModel.getDescendant(r);if(void 0===a)throw new Error("could not get to target");a.insertChild(e,n),this.rebuildTreeData(),this.drops$.next({target:e.data,oldParent:null==o?void 0:o.data,oldIndex:i,newParent:a.data,newIndex:n}),this.render()},e.prototype.remove=function(e){e.remove(),this.removePlaceholder(),this.rebuildTreeData(),this.render()},e.prototype.rebuildTreeData=function(){var e,t,r;if(void 0===this.uncutData||void 0===this.treeData||void 0===this.treeOptions)throw new Error("Tree data not initialized");this.treeData.length=0;try{for(var n=i(this.treeModel.getChildren()),o=n.next();!o.done;o=n.next()){var a=o.value;this.treeData.push(this.rebuildBranch(a))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}if(!0===this.treeOptions.listMode){var l=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(l)&&(l=0);var d=l+this.treeOptions.itemsPerPage;(r=this.uncutData).splice.apply(r,s([l,this.treeOptions.itemsPerPage],this.treeData)),this.treeData=this.uncutData.slice(l,d)}else this.uncutData=this.treeData},e.prototype.rebuildBranch=function(e){var t,r,n=e.data;n.nodes=[];try{for(var o=i(e.getChildren()),a=o.next();!a.done;a=o.next()){var s=a.value;n.nodes.push(this.rebuildBranch(s))}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getPlaceholder=function(){return this.placeholder},e}();E.ɵfac=function(e){return new(e||E)(t.ɵɵinject(g),t.ɵɵinject(v))},E.ɵprov=t.ɵɵdefineInjectable({token:E,factory:E.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(E,[{type:t.Injectable}],(function(){return[{type:g},{type:v}]}),null);var M=function(){function e(e,r){this.ngZone=e,this.el=r,this.dragoverNoChangeDetect=new t.EventEmitter,this.dragoverEventThrottle=0}return e.prototype.ngOnInit=function(){var e=this;this.ngZone.runOutsideAngular((function(){e.eventSubscription=r.fromEvent(e.el.nativeElement,"dragover").pipe(n.throttleTime(e.dragoverEventThrottle)).subscribe((function(t){e.dragoverNoChangeDetect.emit(t)}))}))},e.prototype.ngOnDestroy=function(){void 0!==this.eventSubscription&&this.eventSubscription.unsubscribe()},e}();M.ɵfac=function(e){return new(e||M)(t.ɵɵdirectiveInject(t.NgZone),t.ɵɵdirectiveInject(t.ElementRef))},M.ɵdir=t.ɵɵdefineDirective({type:M,selectors:[["","dragoverNoChangeDetect",""]],inputs:{dragoverEventThrottle:"dragoverEventThrottle"},outputs:{dragoverNoChangeDetect:"dragoverNoChangeDetect"}}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(M,[{type:t.Directive,args:[{selector:"[dragoverNoChangeDetect]"}]}],(function(){return[{type:t.NgZone},{type:t.ElementRef}]}),{dragoverEventThrottle:[{type:t.Input}],dragoverNoChangeDetect:[{type:t.Output}]});var F=function(){function e(e,r){this.ngZone=e,this.el=r,this.dragleaveNoChangeDetect=new t.EventEmitter,this.dragleaveEventThrottle=0}return e.prototype.ngOnInit=function(){var e=this;this.ngZone.runOutsideAngular((function(){e.eventSubscription=r.fromEvent(e.el.nativeElement,"dragleave").pipe(n.throttleTime(e.dragleaveEventThrottle)).subscribe((function(t){e.dragleaveNoChangeDetect.emit(t)}))}))},e.prototype.ngOnDestroy=function(){void 0!==this.eventSubscription&&this.eventSubscription.unsubscribe()},e}();F.ɵfac=function(e){return new(e||F)(t.ɵɵdirectiveInject(t.NgZone),t.ɵɵdirectiveInject(t.ElementRef))},F.ɵdir=t.ɵɵdefineDirective({type:F,selectors:[["","dragleaveNoChangeDetect",""]],inputs:{dragleaveEventThrottle:"dragleaveEventThrottle"},outputs:{dragleaveNoChangeDetect:"dragleaveNoChangeDetect"}}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(F,[{type:t.Directive,args:[{selector:"[dragleaveNoChangeDetect]"}]}],(function(){return[{type:t.NgZone},{type:t.ElementRef}]}),{dragleaveEventThrottle:[{type:t.Input}],dragleaveNoChangeDetect:[{type:t.Output}]});var O=["host"],P=["dropZoneInside"];function N(e,t){}function A(e,t){}var j=function(){function e(e,n,o,i,a){var s=this;this.treeService=e,this.dropZoneService=n,this.dragStateService=o,this.globalEventsService=i,this.changeDetectorRef=a,this.treeChange=new t.EventEmitter,this.treeDrop=new t.EventEmitter,this.dropZoneInside$=new r.BehaviorSubject(this.dropZoneInside),this.changesSubscription=this.treeService.changes$.subscribe((function(){s.treeChange.emit()})),this.dropSubscription=this.treeService.drops$.subscribe((function(e){s.treeDrop.emit(e)}))}return e.prototype.ngAfterViewInit=function(){var e;this.dropZoneInside$.next(this.dropZoneInside),this.dropZoneInside$.complete(),!0===(null===(e=this.options)||void 0===e?void 0:e.listMode)||void 0===this.itemsPerPage&&void 0===this.page||console.warn("pagination is only allowed in listMode; `itemsPerPage` and `page` inputs will be ignored"),this.update(),this.changeDetectorRef.detectChanges()},e.prototype.ngOnChanges=function(){void 0!==this.host&&void 0!==this.data&&this.update()},e.prototype.update=function(){if(void 0===this.host)throw new Error("Failed to render limble tree. Failure occurred at root.");if(void 0===this.data)throw new Error("limbleTree requires a data object");this.treeService.init(this.host,this.data,this.options,this.itemsPerPage,this.page),this.globalEventsService.addScrolling()},e.prototype.dragoverHandler=function(e){null!==e.dataTransfer&&(e.stopPropagation(),e.preventDefault(),e.dataTransfer.dropEffect="move")},e.prototype.dragleaveHandler=function(e){var t=e.currentTarget,r=e.relatedTarget;t instanceof Node&&r instanceof Node&&!1===function(e,t){if(e===t)return!0;for(var r=t.parentNode;r!==document;){if(null===r)return;if(r===e)return!0;r=r.parentNode}return!1}(t,r)&&(this.dropZoneService.clear(),this.changeDetectorRef.detectChanges())},e.prototype.dropHandler=function(e){e.stopPropagation();var t=this.dropZoneService.getActiveDropZone();if("droppable"===this.dragStateService.getState()){if(null===t)throw new Error("failed to get active drop zone at drop handler");var r=this.dragStateService.capture();if(void 0===r)throw new Error("failed to get current branch in dragendHandler");this.dropZoneService.clear(),this.treeService.drop(r,t.getFullInsertCoordinates())}},e.prototype.ngOnDestroy=function(){this.changesSubscription.unsubscribe(),this.dropSubscription.unsubscribe()},e}();j.ɵfac=function(e){return new(e||j)(t.ɵɵdirectiveInject(E),t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(h),t.ɵɵdirectiveInject(m),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},j.ɵcmp=t.ɵɵdefineComponent({type:j,selectors:[["limble-tree-root"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(O,1,t.ViewContainerRef),t.ɵɵviewQuery(P,1,t.ViewContainerRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneInside=n.first)}},inputs:{data:"data",options:"options",itemsPerPage:"itemsPerPage",page:"page"},outputs:{dropZoneInside$:"dropZoneInside$",treeChange:"treeChange",treeDrop:"treeDrop"},features:[t.ɵɵProvidersFeature([E,v]),t.ɵɵNgOnChangesFeature],decls:5,vars:0,consts:[[3,"dragoverNoChangeDetect","dragleaveNoChangeDetect","drop"],["dropZoneInside",""],["host",""]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div",0),t.ɵɵlistener("dragoverNoChangeDetect",(function(e){return r.dragoverHandler(e)}))("dragleaveNoChangeDetect",(function(e){return r.dragleaveHandler(e)}))("drop",(function(e){return r.dropHandler(e)})),t.ɵɵtemplate(1,N,0,0,"ng-template",null,1,t.ɵɵtemplateRefExtractor),t.ɵɵtemplate(3,A,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd())},directives:[M,F],styles:[""]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(j,[{type:t.Component,args:[{selector:"limble-tree-root",templateUrl:"./limble-tree-root.component.html",styleUrls:["./limble-tree-root.component.scss"],providers:[E,v]}]}],(function(){return[{type:E},{type:v},{type:h},{type:m},{type:t.ChangeDetectorRef}]}),{data:[{type:t.Input}],options:[{type:t.Input}],itemsPerPage:[{type:t.Input}],page:[{type:t.Input}],host:[{type:t.ViewChild,args:["host",{read:t.ViewContainerRef}]}],dropZoneInside:[{type:t.ViewChild,args:["dropZoneInside",{read:t.ViewContainerRef}]}],dropZoneInside$:[{type:t.Output}],treeChange:[{type:t.Output}],treeDrop:[{type:t.Output}]});var R=function(e,t){return{active:e,related:t}};function T(e,r){if(1&e){var n=t.ɵɵgetCurrentView();t.ɵɵelementStart(0,"div",1),t.ɵɵlistener("dragenter",(function(){return t.ɵɵrestoreView(n),t.ɵɵnextContext().dragenterHandler()})),t.ɵɵelement(1,"div",2),t.ɵɵelementEnd()}if(2&e){var o=t.ɵɵnextContext();t.ɵɵadvance(1),t.ɵɵproperty("ngClass",t.ɵɵpureFunction2(1,R,o.active,!o.active))}}var z=function(){function e(e,t){this.dropZoneService=e,this.changeDetectorRef=t,this.visible=!1,this.active=!1}return e.prototype.dragenterHandler=function(){void 0!==this.dropZone&&!0!==this.active&&this.dropZoneService.swapActiveDropZone(this.dropZone)},e.prototype.ngOnInit=function(){var e=this;if(void 0===this.dropZone)throw new Error("No drop zone object at component initialization");this.commSubscription=this.dropZone.getCommChannel().subscribe((function(t){var r,n,o,i,a,s,l,d;switch(t){case"checkVisible":e.visible=null!==(n=null===(r=e.dropZone)||void 0===r?void 0:r.isVisible())&&void 0!==n&&n;break;case"checkActive":e.active=null!==(i=null===(o=e.dropZone)||void 0===o?void 0:o.isActive())&&void 0!==i&&i;break;case"checkBoth":e.visible=null!==(s=null===(a=e.dropZone)||void 0===a?void 0:a.isVisible())&&void 0!==s&&s,e.active=null!==(d=null===(l=e.dropZone)||void 0===l?void 0:l.isActive())&&void 0!==d&&d;break;default:throw new Error("unhandled comm message")}e.changeDetectorRef.detectChanges()}))},e.prototype.ngOnDestroy=function(){void 0!==this.commSubscription&&this.commSubscription.unsubscribe()},e}();z.ɵfac=function(e){return new(e||z)(t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},z.ɵcmp=t.ɵɵdefineComponent({type:z,selectors:[["drop-zone"]],inputs:{dropZone:"dropZone"},decls:1,vars:1,consts:[["class","dropZoneContainer",3,"dragenter",4,"ngIf"],[1,"dropZoneContainer",3,"dragenter"],[3,"ngClass"]],template:function(e,r){1&e&&t.ɵɵtemplate(0,T,2,4,"div",0),2&e&&t.ɵɵproperty("ngIf",r.visible)},directives:[o.NgIf,o.NgClass],styles:[".active[_ngcontent-%COMP%]{height:105px;border-radius:5px;background:#f0f9ff;border:2px dashed #bed2db}.active[_ngcontent-%COMP%], .related[_ngcontent-%COMP%]{margin:10px 0;width:calc(100% - 20px);box-sizing:border-box}.related[_ngcontent-%COMP%]{height:30px;border-radius:5px;background:#fff6f0;border:1px dashed #dbccbe;opacity:.8}.dropZoneContainer[_ngcontent-%COMP%]{position:relative}"],changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(z,[{type:t.Component,args:[{selector:"drop-zone",templateUrl:"./drop-zone.component.html",styleUrls:["./drop-zone.component.scss"],changeDetection:t.ChangeDetectionStrategy.OnPush}]}],(function(){return[{type:v},{type:t.ChangeDetectorRef}]}),{dropZone:[{type:t.Input}]});var H=["host"];function L(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",3),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneInside)}}function V(e,t){}var B=function(){function e(e,t){var r;this.treeService=e,this.changeDetectorRef=t,this.indent=null===(r=this.treeService.treeOptions)||void 0===r?void 0:r.indent,this.renderDropZoneInside=!1}return e.prototype.ngAfterViewInit=function(){this.reRender(),this.changeDetectorRef.detectChanges()},e.prototype.reRender=function(){if(void 0===this.host||void 0===this.branch)throw new Error("Failed to render limble tree branch");this.treeService.renderBranch(this.host,this.branch)},e}();B.ɵfac=function(e){return new(e||B)(t.ɵɵdirectiveInject(E),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},B.ɵcmp=t.ɵɵdefineComponent({type:B,selectors:[["limble-tree-branch"]],viewQuery:function(e,r){if(1&e&&t.ɵɵviewQuery(H,1,t.ViewContainerRef),2&e){var n;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first)}},inputs:{branch:"branch",dropZoneInside:"dropZoneInside",renderDropZoneInside:"renderDropZoneInside"},decls:5,vars:4,consts:[[3,"dropZone",4,"ngIf"],[1,"limble-child-nodes",3,"hidden"],["host",""],[3,"dropZone"]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div"),t.ɵɵtemplate(1,L,1,1,"drop-zone",0),t.ɵɵelementStart(2,"span",1),t.ɵɵtemplate(3,V,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵelementEnd()),2&e&&(t.ɵɵstyleProp("margin-left",r.indent,"px"),t.ɵɵadvance(1),t.ɵɵproperty("ngIf",r.renderDropZoneInside),t.ɵɵadvance(1),t.ɵɵproperty("hidden",r.branch&&r.branch.data.collapsed))},directives:[o.NgIf,z],styles:["./limble-tree-branch.component.scss"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(B,[{type:t.Component,args:[{selector:"limble-tree-branch",templateUrl:"./limble-tree-branch.component.html",styles:["./limble-tree-branch.component.scss"]}]}],(function(){return[{type:E},{type:t.ChangeDetectorRef}]}),{branch:[{type:t.Input}],host:[{type:t.ViewChild,args:["host",{read:t.ViewContainerRef}]}],dropZoneInside:[{type:t.Input}],renderDropZoneInside:[{type:t.Input}]});var $=function(){};$.ɵmod=t.ɵɵdefineNgModule({type:$}),$.ɵinj=t.ɵɵdefineInjector({factory:function(e){return new(e||$)},providers:[g,h,m],imports:[[o.CommonModule]]}),("undefined"==typeof ngJitMode||ngJitMode)&&t.ɵɵsetNgModuleScope($,{declarations:[B,z,S,j,x,M,F],imports:[o.CommonModule],exports:[j]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata($,[{type:t.NgModule,args:[{declarations:[B,z,S,j,x,M,F],imports:[o.CommonModule],exports:[j],providers:[g,h,m]}]}],null,null),t.ɵɵsetComponentScope(S,[o.NgIf,z,M,B],[]),e.LimbleTreeModule=$,e.LimbleTreeRootComponent=j,Object.defineProperty(e,"__esModule",{value:!0})}));
***************************************************************************** */Object.create;function i(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function a(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function s(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(a(arguments[t]));return e}Object.create;function l(e,t){var r,n;if(e.length!==t.length)return!1;try{for(var o=i(e.entries()),s=o.next();!s.done;s=o.next()){var d=a(s.value,2),c=d[0],p=d[1],h=t[c];if(p instanceof Array&&h instanceof Array){if(!l(p,h))return!1}else if(p!==h)return!1}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return!0}function d(e,t){return void 0!==e&&(!0===e.allowNesting||"function"==typeof e.allowNesting&&void 0!==t&&!0===e.allowNesting(t))}var c=function(){function e(e,t){this.parentCoordinates=e,this.insertIndex=t}return e.prototype.getFullInsertCoordinates=function(){return s(this.parentCoordinates,[this.insertIndex])},e}(),p=function(){function e(e,t){this.location=new c(e,t),this.visible=!1,this.active=!1,this.commChannel=new r.Subject}return e.dropZoneLocationsAreEqual=function(e,t){return l(e.getFullInsertCoordinates(),t.getFullInsertCoordinates())},e.prototype.isVisible=function(e){return void 0===e&&(e=void 0),void 0!==e&&(this.visible=e,void 0!==this.commChannel&&this.commChannel.next("checkVisible"),!1===this.visible&&this.isActive(!1)),this.visible},e.prototype.isActive=function(e){return void 0===e&&(e=void 0),void 0!==e&&(this.active=e,void 0!==this.commChannel&&this.commChannel.next("checkActive")),this.active},e.prototype.getLocation=function(){return this.location},e.prototype.getFamily=function(){return this.family},e.prototype.setFamily=function(e){this.family=e},e.prototype.getCommChannel=function(){return this.commChannel},e.prototype.getFullInsertCoordinates=function(){return this.location.getFullInsertCoordinates()},e}(),h=function(){function e(){this.state="idle",this.state$=new r.BehaviorSubject(this.state)}return e.prototype.dragging=function(e){this._tempData=e,this.state="dragging",this.state$.next(this.state)},e.prototype.droppable=function(){if("dragging"!==this.state)throw new Error("Can only call `droppable` when state is `dragging`");this.state="droppable",this.state$.next(this.state)},e.prototype.notDroppable=function(){if("droppable"!==this.state)throw new Error("Can only call `notDroppable` when state is `droppable`");this.state="dragging",this.state$.next(this.state)},e.prototype.capture=function(){if("droppable"!==this.state)throw new Error("Can only move to `captured` state from `droppable` state");return this.state="captured",this.state$.next(this.state),this._tempData},e.prototype.release=function(){this._tempData=void 0,this.state="idle",this.state$.next(this.state)},e.prototype.getData=function(){return this._tempData},e.prototype.getState=function(){return this.state},e}();function u(e,t){var r=e.getFullInsertCoordinates(),n=t.getFullInsertCoordinates();return r.length>n.length?-1:r.length<n.length?1:0}h.ɵfac=function(e){return new(e||h)},h.ɵprov=t.ɵɵdefineInjectable({token:h,factory:h.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(h,[{type:t.Injectable}],(function(){return[]}),null);var v=function(){function e(e){this.dragStateService=e,this.dropZoneInventory=[],this.dropZoneFamilies=[],this.visibleFamily=null,this.activeDropZone=null,this.tempFamilies=[],this.setActiveDropZone(null)}return e.prototype.addDropZone=function(e){return void 0===this.dropZoneInventory.find((function(t){return p.dropZoneLocationsAreEqual(t,e)}))&&(this.dropZoneInventory.push(e),!0)},e.prototype.clear=function(){var e,t;if(null!==this.visibleFamily){try{for(var r=i(this.visibleFamily.members),n=r.next();!n.done;n=r.next()){n.value.isVisible(!1)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.visibleFamily=null}this.restoreFamilies(),this.setActiveDropZone(null)},e.prototype.getActiveDropZone=function(){return this.activeDropZone},e.prototype.init=function(e,t){this.tree=e,this.treeOptions=t,this.reset(),this.assignFamilies()},e.prototype.reset=function(){this.clear(),this.dropZoneFamilies.length=0},e.prototype.restart=function(){this.reset(),this.dropZoneInventory.length=0},e.prototype.restoreFamilies=function(){var e,t,r,n;if(2===this.tempFamilies.length){this.dropZoneFamilies.pop(),this.dropZoneFamilies.push(this.tempFamilies[0]);try{for(var o=i(this.tempFamilies[0].members),a=o.next();!a.done;a=o.next()){a.value.setFamily(this.tempFamilies[0])}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}if(null!==this.tempFamilies[1]){this.dropZoneFamilies.push(this.tempFamilies[1]);try{for(var s=i(this.tempFamilies[1].members),l=s.next();!l.done;l=s.next()){l.value.setFamily(this.tempFamilies[1])}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}}this.tempFamilies=[]}},e.prototype.showDropZoneFamily=function(e,t){var r,n,o,a,l,d;if(void 0===t&&(t={joinFamilies:!1,activateLowestInsteadOfFounder:!1}),null===this.activeDropZone||!p.dropZoneLocationsAreEqual(this.activeDropZone,e)){null===this.visibleFamily&&null===this.activeDropZone||this.clear();var h=this.dropZoneInventory.find((function(t){return p.dropZoneLocationsAreEqual(t,e)}));if(void 0===h)throw new Error("Could not find drop zone to show. location: "+JSON.stringify(e.getLocation()));var v=h.getFamily();if(!0===t.joinFamilies){var f=e.getLocation(),g=new c(s(f.parentCoordinates),f.insertIndex+1),y=this.dropZoneInventory.find((function(e){return p.dropZoneLocationsAreEqual(e,g)}));if(void 0===y)throw new Error("Could not find drop zone to show");var m=y.getFamily();if(void 0===v||void 0===m)throw new Error("No family");var b={founder:v.founder,members:s(v.members)};this.showDropZone(v.founder,!0);try{for(var w=i(v.members.sort(u)),D=w.next();!D.done;D=w.next()){(M=D.value).setFamily(b),M!==v.founder&&(null===this.activeDropZone?this.showDropZone(M,!0):this.showDropZone(M))}}catch(e){r={error:e}}finally{try{D&&!D.done&&(n=w.return)&&n.call(w)}finally{if(r)throw r.error}}try{for(var C=i(m.members),Z=C.next();!Z.done;Z=C.next()){(M=Z.value).setFamily(b),M.getLocation().parentCoordinates.length<y.getLocation().parentCoordinates.length&&(b.members.push(M),this.showDropZone(M))}}catch(e){o={error:e}}finally{try{Z&&!Z.done&&(a=C.return)&&a.call(C)}finally{if(o)throw o.error}}this.tempFamilies=[v,m];var I=this.dropZoneFamilies.indexOf(v);this.dropZoneFamilies.splice(I,1);var S=this.dropZoneFamilies.indexOf(m);this.dropZoneFamilies.splice(S,1),this.dropZoneFamilies.push(b),this.visibleFamily=b}else{if(void 0===v)throw new Error("No family");this.visibleFamily=v,this.showDropZone(v.founder,!0);try{for(var x=i(v.members.sort(u)),E=x.next();!E.done;E=x.next()){var M;(M=E.value)!==v.founder&&(null===this.activeDropZone?this.showDropZone(M,!0):this.showDropZone(M))}}catch(e){l={error:e}}finally{try{E&&!E.done&&(d=x.return)&&d.call(x)}finally{if(l)throw l.error}}}if(!0===t.activateLowestInsteadOfFounder){var F=s(this.visibleFamily.members).sort(u).pop();if(void 0===F)throw new Error("Could not get lowest member");this.swapActiveDropZone(F)}}},e.prototype.swapActiveDropZone=function(e){if(null===this.visibleFamily)throw new Error("No visible family available for swapping");if(-1===this.visibleFamily.members.findIndex((function(t){return t===e})))throw new Error("failed to swap active drop zone");this.setActiveDropZone(e)},e.prototype.assignFamilies=function(){var e,t,r,n,o,a,d=s(this.dropZoneInventory),c=d.filter((function(e){var t=e.getLocation();return 0===t.insertIndex&&t.parentCoordinates.length>0})).sort((function(e,t){for(var r,n,o,i,a=e.getFullInsertCoordinates(),s=t.getFullInsertCoordinates(),l=Math.max(a.length,s.length),d=0;d<l;d++){if((null!==(r=a[d])&&void 0!==r?r:-1)>(null!==(n=s[d])&&void 0!==n?n:-1))return-1;if((null!==(o=a[d])&&void 0!==o?o:-1)<(null!==(i=s[d])&&void 0!==i?i:-1))return 1}return 0})),p=function(e){if(!d.includes(e))return"continue";var t={founder:e,members:[]};e.setFamily(t);for(var r=s(e.getFullInsertCoordinates());r.length>0;){var n=d.findIndex((function(e){return l(e.getFullInsertCoordinates(),r)}));if(-1!==n){var o=d.splice(n,1)[0];t.members.push(o),o.setFamily(t)}r.pop(),r[r.length-1]++}h.dropZoneFamilies.push(t)},h=this;try{for(var u=i(c),v=u.next();!v.done;v=u.next()){p(y=v.value)}}catch(t){e={error:t}}finally{try{v&&!v.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}try{for(var f=i(d.filter((function(e){return 1===e.getFullInsertCoordinates().length}))),g=f.next();!g.done;g=f.next()){var y,m={founder:y=g.value,members:[y]};y.setFamily(m),this.dropZoneFamilies.push(m),d.splice(d.indexOf(y),1)}}catch(e){r={error:e}}finally{try{g&&!g.done&&(n=f.return)&&n.call(f)}finally{if(r)throw r.error}}if(0!==d.length){var b="";try{for(var w=i(d),D=w.next();!D.done;D=w.next()){var C=D.value;b+=JSON.stringify(C.getLocation())+", "}}catch(e){o={error:e}}finally{try{D&&!D.done&&(a=w.return)&&a.call(w)}finally{if(o)throw o.error}}throw b=b.slice(0,b.length-2),new Error("Some zones were not assigned to a family. The orphan zones have the following locations: "+b)}},e.prototype.setActiveDropZone=function(e){null!==this.activeDropZone&&this.activeDropZone.isActive(!1),this.activeDropZone=e,null!==this.activeDropZone&&"droppable"!==this.dragStateService.getState()?this.dragStateService.droppable():null===this.activeDropZone&&"droppable"===this.dragStateService.getState()&&this.dragStateService.notDroppable(),null!==this.activeDropZone&&this.activeDropZone.isActive(!0)},e.prototype.showDropZone=function(e,t){if(void 0===t&&(t=!1),void 0===this.tree)throw new Error("DropZoneService not initialized");if(!this.zoneIsAllowed(e))return!1;if(void 0===this.tree.findByCoordinates(e.getLocation().parentCoordinates))throw new Error("Bad family member");return e.isVisible(!0),!0===t&&this.setActiveDropZone(e),!0},e.prototype.zoneIsAllowed=function(e){if(void 0===this.treeOptions||void 0===this.tree)throw new Error("dropZoneService not initialized");var t=this.dragStateService.getData();if(void 0===t)throw new Error("Can't get dragged node");var r=this.tree.findByCoordinates(e.getLocation().parentCoordinates);if(void 0===r)throw new Error("Could not get drop zone parent");var n=e.getLocation().insertIndex;if(void 0===n)throw new Error("Could not get drop zone index");return!!this.treeOptions.allowDrop(t.data,r.data,n)},e}();v.ɵfac=function(e){return new(e||v)(t.ɵɵinject(h))},v.ɵprov=t.ɵɵdefineInjectable({token:v,factory:v.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(v,[{type:t.Injectable}],(function(){return[{type:h}]}),null);var f=function(){function e(e){this.data=e,this.children=[],this.parent=null}return e.prototype.isRoot=function(){return null===this.parent},e.prototype.getParent=function(){return this.parent},e.prototype.setParent=function(e){this.parent=e},e.prototype.findByCoordinates=function(e){var t,r,n=this;try{for(var o=i(e.values()),a=o.next();!a.done;a=o.next()){var s=a.value;if(void 0===(n=n.getChild(s)))return}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getCoordinates=function(){for(var e=[],t=this;null!==t.parent;){var r=t.getIndex();if(null==r)throw new Error("Could not get cursor index");e.unshift(r),t=t.parent}return e},e.prototype.getChild=function(e){return this.children[e]},e.prototype.getChildren=function(){return this.children},e.prototype.clearChildren=function(){var e,t;try{for(var r=i(this.children),n=r.next();!n.done;n=r.next()){n.value.setParent(null)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.children.length=0},e.prototype.getIndex=function(){var e=this;if(null===this.parent)return null;var t=this.parent.children.findIndex((function(t){return t===e}));return-1!==t?t:void 0},e.prototype.getDescendant=function(e){var t,r,n=this;try{for(var o=i(e),a=o.next();!a.done;a=o.next()){var s=a.value;if(void 0===(n=n.children[s]))return}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.findDescendant=function(e){var t,r;if(!0===e(this.data))return this;if(this.children.length>0)try{for(var n=i(this.children),o=n.next();!o.done;o=n.next()){var a=o.value.findDescendant(e);if(void 0!==a)return a}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},e.prototype.getAncestors=function(){for(var e=[],t=this;null!==t.parent;)e.push(t.parent),t=t.parent;return e},e.prototype.appendChild=function(e){return null!==e.getParent()&&e.remove(),e.setParent(this),this.children.push(e),e},e.prototype.insertChild=function(e,t){var r=this.children.indexOf(e);return-1===r?(null!==e.getParent()&&e.remove(),e.setParent(this),this.children.splice(t,0,e)):t>r?(this.children.splice(t,0,e),this.removeChild(r),e.setParent(this)):(e.remove(),this.children.splice(t,0,e),e.setParent(this)),e},e.prototype.removeChild=function(e){var t=this.children.splice(e,1)[0];return t.setParent(null),t},e.prototype.remove=function(){var e=this.getIndex();if(null===this.parent||null==e)throw new Error("can't remove root");return this.parent.removeChild(e)},e.prototype.copy=function(){var e=this.copyHelper();return e.setParent(null),e},e.prototype.copyHelper=function(){var t,r,n=new e(this.data);try{for(var o=i(this.children),a=o.next();!a.done;a=o.next()){var s=a.value;n.appendChild(s.copyHelper()).parent=n}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e}(),g=function(){function e(e){this.factoryResolver=e,this.factoryResolver=e}return e.prototype.appendComponent=function(e,t,r){void 0===r&&(r=null);var n=this.factoryResolver.resolveComponentFactory(e),o=t.createComponent(n);if(null!==r){var i=t.indexOf(o.hostView);t.detach(i),t.insert(o.hostView,r)}return o},e}();function y(e){var t,r,n,o=/(auto|scroll)/,a=function(e,t){return null===e||null===e.parentNode?t:a(e.parentElement,t.concat([e]))},s=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},l=function(e){return o.test(function(e){return s(e,"overflow")+s(e,"overflow-y")+s(e,"overflow-x")}(e))},d=a(e.parentElement,[]);try{for(var c=i(d),p=c.next();!p.done;p=c.next()){var h=p.value;if(l(h))return h}}catch(e){t={error:e}}finally{try{p&&!p.done&&(r=c.return)&&r.call(c)}finally{if(t)throw t.error}}return null!==(n=document.scrollingElement)&&void 0!==n?n:document.documentElement}g.ɵfac=function(e){return new(e||g)(t.ɵɵinject(t.ComponentFactoryResolver))},g.ɵprov=t.ɵɵdefineInjectable({token:g,factory:g.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(g,[{type:t.Injectable}],(function(){return[{type:t.ComponentFactoryResolver}]}),null);var m=function(){function e(e){var t=this;this.ngZone=e,this.ngZone.runOutsideAngular((function(){t.globalDrag$=r.fromEvent(document,"drag")})),this.scrolling=!1}return e.prototype.addScrolling=function(){var e=this;this.ngZone.runOutsideAngular((function(){if(void 0===e.globalDragSubscription){if(void 0===e.globalDrag$)throw new Error("Could not get observable");var t,r,o,i,a,s,l,d,c;e.globalDragSubscription=e.globalDrag$.pipe(n.throttleTime(25),n.filter((function(e){if(!e.target)return!1;d=y(e.target),t=d.clientHeight;var n,l=d.clientWidth;if("fixed"===window.getComputedStyle(d).getPropertyValue("position").toLowerCase())n=e.clientX,c=e.clientY;else{var p=d.getBoundingClientRect(),h=y(d);n=e.clientX-(p.left+h.scrollLeft),c=e.clientY-(p.top+h.scrollTop)}return!(n<0||n>l||c<0||c>t)&&(r=Math.max(.1*t,100),s=c>(i=t-r),(a=c<(o=r))||s)}))).subscribe((function(){if(null!==d){var n,p=d.scrollHeight-t,h=d.scrollTop;if(a&&h>0){n=h-75*((o-c)/r)}else{if(!s||!(h<p))return;n=h+75*((c-i)/r)}(n=Math.max(0,Math.min(p,n)))!==h&&(d.scrollTo({top:n}),e.scrolling=!0,clearTimeout(l),l=setTimeout((function(){e.scrolling=!1}),100))}}))}}))},e.prototype.removeScrolling=function(){void 0!==this.globalDragSubscription&&this.globalDragSubscription.unsubscribe()},e}();m.ɵfac=function(e){return new(e||m)(t.ɵɵinject(t.NgZone))},m.ɵprov=t.ɵɵdefineInjectable({token:m,factory:m.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(m,[{type:t.Injectable}],(function(){return[{type:t.NgZone}]}),null);var b=["nodeHost"],w=["draggableDiv"],D=["nodeHostContainer"];function C(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",7),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneAbove)}}function Z(e,t){}function I(e,r){if(1&e&&t.ɵɵelement(0,"limble-tree-branch",8),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("branch",n.branch)("dropZoneInside",n.dropZoneInside)("renderDropZoneInside",n.renderDropZoneInside)}}function S(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",7),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneBelow)}}var x=function(){function e(e,t,r,n,o,i){this.componentCreatorService=e,this.changeDetectorRef=t,this.dragStateService=r,this.dropZoneService=n,this.treeService=o,this.globalEventsService=i,void 0!==this.treeService.treeOptions&&!0!==this.treeService.treeOptions.listMode&&!0!==this.treeService.getPlaceholder()?this.renderInnerBranch=!0:this.renderInnerBranch=!1,this.renderDropZoneBelow=!1,this.renderDropZoneAbove=!1,this.renderDropZoneInside=!1}return e.prototype.ngOnInit=function(){this.registerDropZones()},e.prototype.ngAfterViewInit=function(){this.renderNode(),this.checkForHandle(),this.changeDetectorRef.detectChanges()},e.prototype.dragstartHandler=function(e){var t,r=this;if(e.stopPropagation(),null===e.dataTransfer||void 0===this.branch)throw new Error("failed to run dragstartHandler");var n=e.target;"LIMBLE-TREE-NODE"===(null===(t=n.parentElement)||void 0===t?void 0:t.tagName)?(e.dataTransfer.effectAllowed="move",this.dragStateService.dragging(this.branch),setTimeout((function(){var e;if(n.classList.add("dragging"),void 0===r.branch)throw new Error("Could not show surrounding drop zones");var t,o=r.branch.getParent(),i=!0;null!==(null==o?void 0:o.data)&&(t=null==o?void 0:o.data,i=d(r.treeService.treeOptions,t)),void 0!==r.dropZoneAbove&&i&&(r.dropZoneService.showDropZoneFamily(r.dropZoneAbove,{joinFamilies:!0}),1===(null===(e=r.treeService.treeData)||void 0===e?void 0:e.length)&&1===r.branch.getCoordinates().length&&r.treeService.usePlaceholder())}))):e.preventDefault()},e.prototype.dragendHandler=function(e){var t=this;if(e.stopPropagation(),e.target.classList.remove("dragging"),"captured"!==this.dragStateService.getState())return this.dragStateService.release(),this.dropZoneService.clear(),this.dropZoneService.restoreFamilies(),void this.treeService.removePlaceholder();this.dragStateService.state$.pipe(n.take(2)).subscribe((function(e){"captured"===e&&void 0!==t.branch&&(t.treeService.remove(t.branch),t.dragStateService.release())}))},e.prototype.dragoverHandler=function(e){if(!0!==this.globalEventsService.scrolling){if(void 0===this.branch)throw new Error("Can't get current branch during dragover event");var t=this.dragStateService.getData();if(void 0!==t&&t!==this.branch&&!this.branch.getAncestors().includes(t))if(!0!==this.treeService.getPlaceholder()||void 0===this.dropZoneAbove){var r,n=e.currentTarget.offsetHeight/3,o=2*n,i=this.branch.getParent(),a=!0;null!==(null==i?void 0:i.data)&&(r=null==i?void 0:i.data,a=d(this.treeService.treeOptions,r));var s=this.dropZoneService.getActiveDropZone();if(e.offsetY<n&&void 0!==this.dropZoneAbove&&(null===s||!p.dropZoneLocationsAreEqual(s,this.dropZoneAbove))&&a){if(null==this.branch.getIndex())throw new Error("can't get branch index");this.dropZoneService.showDropZoneFamily(this.dropZoneAbove,{activateLowestInsteadOfFounder:!0})}else if(e.offsetY<o&&void 0!==this.dropZoneInside&&(null===s||!p.dropZoneLocationsAreEqual(s,this.dropZoneInside)))this.dropZoneService.showDropZoneFamily(this.dropZoneInside);else if(e.offsetY>=o&&void 0!==this.dropZoneBelow&&(null===s||!p.dropZoneLocationsAreEqual(s,this.dropZoneBelow))&&0===this.branch.getChildren().length&&a){if(null==this.branch.getIndex())throw new Error("can't get branch index");this.dropZoneService.showDropZoneFamily(this.dropZoneBelow)}}else this.dropZoneService.showDropZoneFamily(this.dropZoneAbove)}},e.prototype.renderNode=function(){var e;if(void 0===this.nodeHost||void 0===this.branch)throw new Error("Failed to render tree node");var t=this.branch.data.component;if(void 0===t&&(t=null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.defaultComponent),void 0===t)throw new Error("limbleTree requires a component to render");var r=this.componentCreatorService.appendComponent(t.class,this.nodeHost);for(var n in r.instance.nodeData=this.branch.data,t.bindings)r.instance[n]=t.bindings[n]},e.prototype.registerDropZones=function(){var e;if(!1!==(null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.allowDragging)){if(void 0===this.branch)throw new Error("failed to register drop zones");var t,r=this.branch.getParent();(null===(null==r?void 0:r.data)||(t=null==r?void 0:r.data,d(this.treeService.treeOptions,t)))&&(this.addDropZoneAbove(),!0!==this.treeService.getPlaceholder()&&(this.addDropZoneBelow(),d(this.treeService.treeOptions,this.branch.data)&&this.addDropZoneInside()))}},e.prototype.addDropZoneAbove=function(){var e;if(void 0===this.branch)throw new Error("failed to register drop zone above");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1];this.dropZoneAbove=new p(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[]),n);var o=this.dropZoneService.addDropZone(this.dropZoneAbove);this.renderDropZoneAbove=!0===o},e.prototype.addDropZoneBelow=function(){var e;if(void 0===this.branch)throw new Error("failed to register drop zone above");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1];this.dropZoneBelow=new p(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[]),n+1);var o=this.dropZoneService.addDropZone(this.dropZoneBelow);this.renderDropZoneBelow=!0===o},e.prototype.addDropZoneInside=function(){if(void 0===this.branch)throw new Error("failed to register drop zone above");this.dropZoneInside=new p(s(this.branch.getCoordinates()),0);var e=this.dropZoneService.addDropZone(this.dropZoneInside);this.renderDropZoneInside=!0===e},e.prototype.checkForHandle=function(){var e,t=this;if(void 0!==this.nodeHostContainer&&void 0!==this.draggableDiv){var r,o,i=this.nodeHostContainer.nativeElement.querySelector(".limble-tree-handle"),a=this.draggableDiv.nativeElement;r=this.treeService.treeOptions,o=null===(e=this.branch)||void 0===e?void 0:e.data,void 0===r||!0!==r.allowDragging&&("function"!=typeof r.allowDragging||void 0===o||!0!==r.allowDragging(o))?a.setAttribute("draggable","false"):null===i?a.setAttribute("draggable","true"):i.addEventListener("mousedown",(function(){a.setAttribute("draggable","true");var e=t.dragStateService.state$.pipe(n.filter((function(e){return"dragging"===e})),n.first());t.dragStateService.state$.pipe(n.skipUntil(e),n.filter((function(e){return"idle"===e})),n.first()).subscribe((function(){a.setAttribute("draggable","false")}))}))}},e}();x.ɵfac=function(e){return new(e||x)(t.ɵɵdirectiveInject(g),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(h),t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(M),t.ɵɵdirectiveInject(m))},x.ɵcmp=t.ɵɵdefineComponent({type:x,selectors:[["limble-tree-node"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(b,1,t.ViewContainerRef),t.ɵɵviewQuery(w,1,t.ElementRef),t.ɵɵviewQuery(D,1,t.ElementRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.nodeHost=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.draggableDiv=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.nodeHostContainer=n.first)}},inputs:{branch:"branch"},decls:9,vars:4,consts:[[3,"dropZone",4,"ngIf"],[1,"limble-parent-container",3,"dragstart","dragend"],["draggableDiv",""],[3,"dragoverEventThrottle","dragoverNoChangeDetect"],["nodeHostContainer",""],["nodeHost",""],[3,"branch","dropZoneInside","renderDropZoneInside",4,"ngIf"],[3,"dropZone"],[3,"branch","dropZoneInside","renderDropZoneInside"]],template:function(e,r){1&e&&(t.ɵɵtemplate(0,C,1,1,"drop-zone",0),t.ɵɵelementStart(1,"div",1,2),t.ɵɵlistener("dragstart",(function(e){return r.dragstartHandler(e)}))("dragend",(function(e){return r.dragendHandler(e)})),t.ɵɵelementStart(3,"div",3,4),t.ɵɵlistener("dragoverNoChangeDetect",(function(e){return r.dragoverHandler(e)})),t.ɵɵtemplate(5,Z,0,0,"ng-template",null,5,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵtemplate(7,I,1,3,"limble-tree-branch",6),t.ɵɵelementEnd(),t.ɵɵtemplate(8,S,1,1,"drop-zone",0)),2&e&&(t.ɵɵproperty("ngIf",!0===r.renderDropZoneAbove),t.ɵɵadvance(3),t.ɵɵproperty("dragoverEventThrottle",10),t.ɵɵadvance(4),t.ɵɵproperty("ngIf",void 0!==r.branch&&!0===r.renderInnerBranch),t.ɵɵadvance(1),t.ɵɵproperty("ngIf",!0===r.renderDropZoneBelow))},styles:[".dragging[_ngcontent-%COMP%]{position:absolute;transition:transform .01s;transform:translateX(-9999px)}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(x,[{type:t.Component,args:[{selector:"limble-tree-node",templateUrl:"./limble-tree-node.component.html",styleUrls:["./limble-tree-node.component.scss"]}]}],(function(){return[{type:g},{type:t.ChangeDetectorRef},{type:h},{type:v},{type:M},{type:m}]}),{branch:[{type:t.Input}],nodeHost:[{type:t.ViewChild,args:["nodeHost",{read:t.ViewContainerRef}]}],draggableDiv:[{type:t.ViewChild,args:["draggableDiv",{read:t.ElementRef}]}],nodeHostContainer:[{type:t.ViewChild,args:["nodeHostContainer",{read:t.ElementRef}]}]});var E=function(){};E.ɵfac=function(e){return new(e||E)},E.ɵcmp=t.ɵɵdefineComponent({type:E,selectors:[["limble-tree-placeholder"]],decls:1,vars:0,consts:[[1,"placeholder"]],template:function(e,r){1&e&&t.ɵɵelement(0,"div",0)},styles:[".placeholder[_ngcontent-%COMP%]{width:100%;height:20px}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(E,[{type:t.Component,args:[{selector:"limble-tree-placeholder",templateUrl:"./limble-tree-placeholder.component.html",styleUrls:["./limble-tree-placeholder.component.scss"]}]}],null,null);var M=function(){function e(e,t){this.componentCreatorService=e,this.dropZoneService=t,this.changes$=new r.ReplaySubject(1),this.drops$=new r.ReplaySubject(1),this.treeModel=new f(null),this.placeholder=!1}return e.prototype.init=function(e,t,r,n,o){if(this.host=e,this.uncutData=t,this.treeOptions=this.processOptions(r,n,o),!0===this.treeOptions.listMode){var i=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(i)&&(i=0);var a=i+this.treeOptions.itemsPerPage;this.treeData=this.uncutData.slice(i,a)}else this.treeData=this.uncutData;this.render()},e.prototype.usePlaceholder=function(){if(!0!==this.placeholder){if(void 0===this.host)throw new Error("TreeModel not initialized");this.placeholder=!0;var e=new f({component:{class:E}});this.treeModel.appendChild(e),this.componentCreatorService.appendComponent(x,this.host).instance.branch=e}},e.prototype.removePlaceholder=function(){if(!1!==this.placeholder){var e=this.treeModel.getChildren().length-1;-1!==e&&this.treeModel.removeChild(e),this.placeholder=!1}},e.prototype.render=function(){var e,t,r,n,o=this;if(void 0===this.host||void 0===this.treeData||void 0===this.treeOptions)throw new Error("TreeModel not initialized");if(this.host.clear(),this.dropZoneService.restart(),this.placeholder=!1,this.treeModel=new f(null),0===this.treeData.length)this.usePlaceholder();else{try{for(var a=i(this.treeData),s=a.next();!s.done;s=a.next()){var l=s.value,d=new f(l);this.treeModel.appendChild(d)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=a.return)&&t.call(a)}finally{if(e)throw e.error}}try{for(var c=i(this.treeModel.getChildren()),p=c.next();!p.done;p=c.next()){d=p.value;this.componentCreatorService.appendComponent(x,this.host).instance.branch=d}}catch(e){r={error:e}}finally{try{p&&!p.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}}var h=this.treeData;setTimeout((function(){if(void 0===o.treeOptions)throw new Error("TreeModel not initialized");o.changes$.next(null),o.treeData===h&&o.dropZoneService.init(o.treeModel,o.treeOptions)}))},e.prototype.renderBranch=function(e,t){var r,n,o,a;if(void 0===this.treeModel)throw new Error("TreeModel not initialized");e.clear(),t.clearChildren();try{for(var s=i(null!==(a=null===(o=t.data)||void 0===o?void 0:o.nodes)&&void 0!==a?a:[]),l=s.next();!l.done;l=s.next()){var d=l.value,c=new f(d);t.appendChild(c),this.componentCreatorService.appendComponent(x,e).instance.branch=c}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}},e.prototype.processOptions=function(e,t,r){var n,o,i,a,s;return void 0===e&&(e={}),void 0===t&&(t=1/0),void 0===r&&(r=1),!0===e.listMode&&void 0!==e.allowNesting&&!1!==e.allowNesting&&console.warn("The value of `allowNesting` will be ignored; it must be false when `listMode` is true"),{defaultComponent:e.defaultComponent,indent:null!==(n=e.indent)&&void 0!==n?n:45,allowNesting:!0!==e.listMode&&(null===(o=e.allowNesting)||void 0===o||o),allowDragging:null===(i=e.allowDragging)||void 0===i||i,allowDrop:null!==(a=e.allowDrop)&&void 0!==a?a:function(){return!0},listMode:null!==(s=e.listMode)&&void 0!==s&&s,itemsPerPage:e.listMode?t:void 0,page:e.listMode?r:void 0}},e.prototype.drop=function(e,t){var r,n,o=e.getParent(),i=e.getIndex();if(null==i)throw new Error("Cannot move the hidden root node");if(!0===this.placeholder?(r=[],n=0,this.removePlaceholder()):n=(r=s(t)).pop(),void 0===n)throw new Error("target coordinates are empty");var a=this.treeModel.getDescendant(r);if(void 0===a)throw new Error("could not get to target");a.insertChild(e,n),this.rebuildTreeData(),this.drops$.next({target:e.data,oldParent:null==o?void 0:o.data,oldIndex:i,newParent:a.data,newIndex:n}),this.render()},e.prototype.remove=function(e){e.remove(),this.removePlaceholder(),this.rebuildTreeData(),this.render()},e.prototype.rebuildTreeData=function(){var e,t,r;if(void 0===this.uncutData||void 0===this.treeData||void 0===this.treeOptions)throw new Error("Tree data not initialized");this.treeData.length=0;try{for(var n=i(this.treeModel.getChildren()),o=n.next();!o.done;o=n.next()){var a=o.value;this.treeData.push(this.rebuildBranch(a))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}if(!0===this.treeOptions.listMode){var l=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(l)&&(l=0);var d=l+this.treeOptions.itemsPerPage;(r=this.uncutData).splice.apply(r,s([l,this.treeOptions.itemsPerPage],this.treeData)),this.treeData=this.uncutData.slice(l,d)}else this.uncutData=this.treeData},e.prototype.rebuildBranch=function(e){var t,r,n=e.data;n.nodes=[];try{for(var o=i(e.getChildren()),a=o.next();!a.done;a=o.next()){var s=a.value;n.nodes.push(this.rebuildBranch(s))}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getPlaceholder=function(){return this.placeholder},e}();M.ɵfac=function(e){return new(e||M)(t.ɵɵinject(g),t.ɵɵinject(v))},M.ɵprov=t.ɵɵdefineInjectable({token:M,factory:M.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(M,[{type:t.Injectable}],(function(){return[{type:g},{type:v}]}),null);var F=function(){function e(e,r){this.ngZone=e,this.el=r,this.dragoverNoChangeDetect=new t.EventEmitter,this.dragoverEventThrottle=0}return e.prototype.ngOnInit=function(){var e=this;this.ngZone.runOutsideAngular((function(){e.eventSubscription=r.fromEvent(e.el.nativeElement,"dragover").pipe(n.throttleTime(e.dragoverEventThrottle)).subscribe((function(t){e.dragoverNoChangeDetect.emit(t)}))}))},e.prototype.ngOnDestroy=function(){void 0!==this.eventSubscription&&this.eventSubscription.unsubscribe()},e}();F.ɵfac=function(e){return new(e||F)(t.ɵɵdirectiveInject(t.NgZone),t.ɵɵdirectiveInject(t.ElementRef))},F.ɵdir=t.ɵɵdefineDirective({type:F,selectors:[["","dragoverNoChangeDetect",""]],inputs:{dragoverEventThrottle:"dragoverEventThrottle"},outputs:{dragoverNoChangeDetect:"dragoverNoChangeDetect"}}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(F,[{type:t.Directive,args:[{selector:"[dragoverNoChangeDetect]"}]}],(function(){return[{type:t.NgZone},{type:t.ElementRef}]}),{dragoverEventThrottle:[{type:t.Input}],dragoverNoChangeDetect:[{type:t.Output}]});var O=function(){function e(e,r){this.ngZone=e,this.el=r,this.dragleaveNoChangeDetect=new t.EventEmitter,this.dragleaveEventThrottle=0}return e.prototype.ngOnInit=function(){var e=this;this.ngZone.runOutsideAngular((function(){e.eventSubscription=r.fromEvent(e.el.nativeElement,"dragleave").pipe(n.throttleTime(e.dragleaveEventThrottle)).subscribe((function(t){e.dragleaveNoChangeDetect.emit(t)}))}))},e.prototype.ngOnDestroy=function(){void 0!==this.eventSubscription&&this.eventSubscription.unsubscribe()},e}();O.ɵfac=function(e){return new(e||O)(t.ɵɵdirectiveInject(t.NgZone),t.ɵɵdirectiveInject(t.ElementRef))},O.ɵdir=t.ɵɵdefineDirective({type:O,selectors:[["","dragleaveNoChangeDetect",""]],inputs:{dragleaveEventThrottle:"dragleaveEventThrottle"},outputs:{dragleaveNoChangeDetect:"dragleaveNoChangeDetect"}}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(O,[{type:t.Directive,args:[{selector:"[dragleaveNoChangeDetect]"}]}],(function(){return[{type:t.NgZone},{type:t.ElementRef}]}),{dragleaveEventThrottle:[{type:t.Input}],dragleaveNoChangeDetect:[{type:t.Output}]});var P=["host"],N=["dropZoneInside"];function A(e,t){}function j(e,t){}var R=function(){function e(e,n,o,i,a){var s=this;this.treeService=e,this.dropZoneService=n,this.dragStateService=o,this.globalEventsService=i,this.changeDetectorRef=a,this.treeChange=new t.EventEmitter,this.treeDrop=new t.EventEmitter,this.dropZoneInside$=new r.BehaviorSubject(this.dropZoneInside),this.changesSubscription=this.treeService.changes$.subscribe((function(){s.treeChange.emit()})),this.dropSubscription=this.treeService.drops$.subscribe((function(e){s.treeDrop.emit(e)}))}return e.prototype.ngAfterViewInit=function(){var e;this.dropZoneInside$.next(this.dropZoneInside),this.dropZoneInside$.complete(),!0===(null===(e=this.options)||void 0===e?void 0:e.listMode)||void 0===this.itemsPerPage&&void 0===this.page||console.warn("pagination is only allowed in listMode; `itemsPerPage` and `page` inputs will be ignored"),this.update(),this.changeDetectorRef.detectChanges()},e.prototype.ngOnChanges=function(){void 0!==this.host&&void 0!==this.data&&this.update()},e.prototype.update=function(){if(void 0===this.host)throw new Error("Failed to render limble tree. Failure occurred at root.");if(void 0===this.data)throw new Error("limbleTree requires a data object");this.treeService.init(this.host,this.data,this.options,this.itemsPerPage,this.page),this.globalEventsService.addScrolling()},e.prototype.dragoverHandler=function(e){null!==e.dataTransfer&&(e.stopPropagation(),e.preventDefault(),e.dataTransfer.dropEffect="move")},e.prototype.dragleaveHandler=function(e){var t=e.currentTarget,r=e.relatedTarget;t instanceof Node&&r instanceof Node&&!1===function(e,t){if(e===t)return!0;for(var r=t.parentNode;r!==document;){if(null===r)return;if(r===e)return!0;r=r.parentNode}return!1}(t,r)&&(this.dropZoneService.clear(),this.changeDetectorRef.detectChanges())},e.prototype.dropHandler=function(e){e.stopPropagation();var t=this.dropZoneService.getActiveDropZone();if("droppable"===this.dragStateService.getState()){if(null===t)throw new Error("failed to get active drop zone at drop handler");var r=this.dragStateService.capture();if(void 0===r)throw new Error("failed to get current branch in dragendHandler");this.dropZoneService.clear(),this.treeService.drop(r,t.getFullInsertCoordinates())}},e.prototype.ngOnDestroy=function(){this.changesSubscription.unsubscribe(),this.dropSubscription.unsubscribe()},e}();R.ɵfac=function(e){return new(e||R)(t.ɵɵdirectiveInject(M),t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(h),t.ɵɵdirectiveInject(m),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},R.ɵcmp=t.ɵɵdefineComponent({type:R,selectors:[["limble-tree-root"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(P,1,t.ViewContainerRef),t.ɵɵviewQuery(N,1,t.ViewContainerRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneInside=n.first)}},inputs:{data:"data",options:"options",itemsPerPage:"itemsPerPage",page:"page"},outputs:{dropZoneInside$:"dropZoneInside$",treeChange:"treeChange",treeDrop:"treeDrop"},features:[t.ɵɵProvidersFeature([M,v]),t.ɵɵNgOnChangesFeature],decls:5,vars:0,consts:[[3,"dragoverNoChangeDetect","dragleaveNoChangeDetect","drop"],["dropZoneInside",""],["host",""]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div",0),t.ɵɵlistener("dragoverNoChangeDetect",(function(e){return r.dragoverHandler(e)}))("dragleaveNoChangeDetect",(function(e){return r.dragleaveHandler(e)}))("drop",(function(e){return r.dropHandler(e)})),t.ɵɵtemplate(1,A,0,0,"ng-template",null,1,t.ɵɵtemplateRefExtractor),t.ɵɵtemplate(3,j,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd())},directives:[F,O],styles:[""]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(R,[{type:t.Component,args:[{selector:"limble-tree-root",templateUrl:"./limble-tree-root.component.html",styleUrls:["./limble-tree-root.component.scss"],providers:[M,v]}]}],(function(){return[{type:M},{type:v},{type:h},{type:m},{type:t.ChangeDetectorRef}]}),{data:[{type:t.Input}],options:[{type:t.Input}],itemsPerPage:[{type:t.Input}],page:[{type:t.Input}],host:[{type:t.ViewChild,args:["host",{read:t.ViewContainerRef}]}],dropZoneInside:[{type:t.ViewChild,args:["dropZoneInside",{read:t.ViewContainerRef}]}],dropZoneInside$:[{type:t.Output}],treeChange:[{type:t.Output}],treeDrop:[{type:t.Output}]});var T=function(e,t){return{active:e,related:t}};function H(e,r){if(1&e){var n=t.ɵɵgetCurrentView();t.ɵɵelementStart(0,"div",1),t.ɵɵlistener("dragenter",(function(){return t.ɵɵrestoreView(n),t.ɵɵnextContext().dragenterHandler()})),t.ɵɵelement(1,"div",2),t.ɵɵelementEnd()}if(2&e){var o=t.ɵɵnextContext();t.ɵɵadvance(1),t.ɵɵproperty("ngClass",t.ɵɵpureFunction2(1,T,o.active,!o.active))}}var z=function(){function e(e,t){this.dropZoneService=e,this.changeDetectorRef=t,this.visible=!1,this.active=!1}return e.prototype.dragenterHandler=function(){void 0!==this.dropZone&&!0!==this.active&&this.dropZoneService.swapActiveDropZone(this.dropZone)},e.prototype.ngOnInit=function(){var e=this;if(void 0===this.dropZone)throw new Error("No drop zone object at component initialization");this.commSubscription=this.dropZone.getCommChannel().subscribe((function(t){var r,n,o,i,a,s,l,d;switch(t){case"checkVisible":e.visible=null!==(n=null===(r=e.dropZone)||void 0===r?void 0:r.isVisible())&&void 0!==n&&n;break;case"checkActive":e.active=null!==(i=null===(o=e.dropZone)||void 0===o?void 0:o.isActive())&&void 0!==i&&i;break;case"checkBoth":e.visible=null!==(s=null===(a=e.dropZone)||void 0===a?void 0:a.isVisible())&&void 0!==s&&s,e.active=null!==(d=null===(l=e.dropZone)||void 0===l?void 0:l.isActive())&&void 0!==d&&d;break;default:throw new Error("unhandled comm message")}e.changeDetectorRef.detectChanges()}))},e.prototype.ngOnDestroy=function(){void 0!==this.commSubscription&&this.commSubscription.unsubscribe()},e}();z.ɵfac=function(e){return new(e||z)(t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},z.ɵcmp=t.ɵɵdefineComponent({type:z,selectors:[["drop-zone"]],inputs:{dropZone:"dropZone"},decls:1,vars:1,consts:[["class","dropZoneContainer",3,"dragenter",4,"ngIf"],[1,"dropZoneContainer",3,"dragenter"],[3,"ngClass"]],template:function(e,r){1&e&&t.ɵɵtemplate(0,H,2,4,"div",0),2&e&&t.ɵɵproperty("ngIf",r.visible)},directives:[o.NgIf,o.NgClass],styles:[".active[_ngcontent-%COMP%]{height:105px;border-radius:5px;background:#f0f9ff;border:2px dashed #bed2db}.active[_ngcontent-%COMP%], .related[_ngcontent-%COMP%]{margin:10px 0;width:calc(100% - 20px);box-sizing:border-box}.related[_ngcontent-%COMP%]{height:30px;border-radius:5px;background:#fff6f0;border:1px dashed #dbccbe;opacity:.8}.dropZoneContainer[_ngcontent-%COMP%]{position:relative}"],changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(z,[{type:t.Component,args:[{selector:"drop-zone",templateUrl:"./drop-zone.component.html",styleUrls:["./drop-zone.component.scss"],changeDetection:t.ChangeDetectionStrategy.OnPush}]}],(function(){return[{type:v},{type:t.ChangeDetectorRef}]}),{dropZone:[{type:t.Input}]});var L=["host"];function V(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",3),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneInside)}}function B(e,t){}var $=function(){function e(e,t){var r;this.treeService=e,this.changeDetectorRef=t,this.indent=null===(r=this.treeService.treeOptions)||void 0===r?void 0:r.indent,this.renderDropZoneInside=!1}return e.prototype.ngAfterViewInit=function(){this.reRender(),this.changeDetectorRef.detectChanges()},e.prototype.reRender=function(){if(void 0===this.host||void 0===this.branch)throw new Error("Failed to render limble tree branch");this.treeService.renderBranch(this.host,this.branch)},e}();$.ɵfac=function(e){return new(e||$)(t.ɵɵdirectiveInject(M),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},$.ɵcmp=t.ɵɵdefineComponent({type:$,selectors:[["limble-tree-branch"]],viewQuery:function(e,r){if(1&e&&t.ɵɵviewQuery(L,1,t.ViewContainerRef),2&e){var n;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first)}},inputs:{branch:"branch",dropZoneInside:"dropZoneInside",renderDropZoneInside:"renderDropZoneInside"},decls:5,vars:4,consts:[[3,"dropZone",4,"ngIf"],[1,"limble-child-nodes",3,"hidden"],["host",""],[3,"dropZone"]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div"),t.ɵɵtemplate(1,V,1,1,"drop-zone",0),t.ɵɵelementStart(2,"span",1),t.ɵɵtemplate(3,B,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵelementEnd()),2&e&&(t.ɵɵstyleProp("margin-left",r.indent,"px"),t.ɵɵadvance(1),t.ɵɵproperty("ngIf",r.renderDropZoneInside),t.ɵɵadvance(1),t.ɵɵproperty("hidden",r.branch&&r.branch.data.collapsed))},directives:[o.NgIf,z],styles:["./limble-tree-branch.component.scss"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata($,[{type:t.Component,args:[{selector:"limble-tree-branch",templateUrl:"./limble-tree-branch.component.html",styles:["./limble-tree-branch.component.scss"]}]}],(function(){return[{type:M},{type:t.ChangeDetectorRef}]}),{branch:[{type:t.Input}],host:[{type:t.ViewChild,args:["host",{read:t.ViewContainerRef}]}],dropZoneInside:[{type:t.Input}],renderDropZoneInside:[{type:t.Input}]});var q=function(){};q.ɵmod=t.ɵɵdefineNgModule({type:q}),q.ɵinj=t.ɵɵdefineInjector({factory:function(e){return new(e||q)},providers:[g,h,m],imports:[[o.CommonModule]]}),("undefined"==typeof ngJitMode||ngJitMode)&&t.ɵɵsetNgModuleScope(q,{declarations:[$,z,x,R,E,F,O],imports:[o.CommonModule],exports:[R]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(q,[{type:t.NgModule,args:[{declarations:[$,z,x,R,E,F,O],imports:[o.CommonModule],exports:[R],providers:[g,h,m]}]}],null,null),t.ɵɵsetComponentScope(x,[o.NgIf,z,F,$],[]),e.LimbleTreeModule=q,e.LimbleTreeRootComponent=R,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=limble-limble-tree.umd.min.js.map

@@ -13,4 +13,5 @@ import { Component, ElementRef, Input, ViewChild, ViewContainerRef } from "@angular/core";

const _c1 = ["draggableDiv"];
const _c2 = ["nodeHostContainer"];
function LimbleTreeNodeComponent_drop_zone_0_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "drop-zone", 6);
i0.ɵɵelement(0, "drop-zone", 7);
} if (rf & 2) {

@@ -20,14 +21,14 @@ const ctx_r0 = i0.ɵɵnextContext();

} }
function LimbleTreeNodeComponent_ng_template_4_Template(rf, ctx) { }
function LimbleTreeNodeComponent_limble_tree_branch_6_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "limble-tree-branch", 7);
function LimbleTreeNodeComponent_ng_template_5_Template(rf, ctx) { }
function LimbleTreeNodeComponent_limble_tree_branch_7_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "limble-tree-branch", 8);
} if (rf & 2) {
const ctx_r4 = i0.ɵɵnextContext();
i0.ɵɵproperty("branch", ctx_r4.branch)("dropZoneInside", ctx_r4.dropZoneInside)("renderDropZoneInside", ctx_r4.renderDropZoneInside);
const ctx_r5 = i0.ɵɵnextContext();
i0.ɵɵproperty("branch", ctx_r5.branch)("dropZoneInside", ctx_r5.dropZoneInside)("renderDropZoneInside", ctx_r5.renderDropZoneInside);
} }
function LimbleTreeNodeComponent_drop_zone_7_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "drop-zone", 6);
function LimbleTreeNodeComponent_drop_zone_8_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "drop-zone", 7);
} if (rf & 2) {
const ctx_r5 = i0.ɵɵnextContext();
i0.ɵɵproperty("dropZone", ctx_r5.dropZoneBelow);
const ctx_r6 = i0.ɵɵnextContext();
i0.ɵɵproperty("dropZone", ctx_r6.dropZoneBelow);
} }

@@ -282,16 +283,18 @@ export class LimbleTreeNodeComponent {

var _a;
if (this.draggableDiv === undefined) {
if (this.nodeHostContainer === undefined ||
this.draggableDiv === undefined) {
return;
}
const element = this.draggableDiv.nativeElement;
const handle = element.querySelector(".limble-tree-handle");
const nodeHostContainerElement = this.nodeHostContainer.nativeElement;
const handle = nodeHostContainerElement.querySelector(".limble-tree-handle");
const draggableDivElement = this.draggableDiv.nativeElement;
if (!isDraggingAllowed(this.treeService.treeOptions, (_a = this.branch) === null || _a === void 0 ? void 0 : _a.data)) {
element.setAttribute("draggable", "false");
draggableDivElement.setAttribute("draggable", "false");
}
else if (handle === null) {
element.setAttribute("draggable", "true");
draggableDivElement.setAttribute("draggable", "true");
}
else {
handle.addEventListener("mousedown", () => {
element.setAttribute("draggable", "true");
draggableDivElement.setAttribute("draggable", "true");
//For some reason mouseup doesn't fire after a drag, so we use this observable sequence instead.

@@ -302,3 +305,3 @@ const dragging = this.dragStateService.state$.pipe(filter((state) => state === "dragging"), first());

.subscribe(() => {
element.setAttribute("draggable", "false");
draggableDivElement.setAttribute("draggable", "false");
});

@@ -313,2 +316,3 @@ });

i0.ɵɵviewQuery(_c1, 1, ElementRef);
i0.ɵɵviewQuery(_c2, 1, ElementRef);
} if (rf & 2) {

@@ -318,13 +322,14 @@ let _t;

i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.draggableDiv = _t.first);
} }, inputs: { branch: "branch" }, decls: 8, vars: 4, consts: [[3, "dropZone", 4, "ngIf"], [1, "limble-parent-container", 3, "dragstart", "dragend"], ["draggableDiv", ""], [3, "dragoverEventThrottle", "dragoverNoChangeDetect"], ["nodeHost", ""], [3, "branch", "dropZoneInside", "renderDropZoneInside", 4, "ngIf"], [3, "dropZone"], [3, "branch", "dropZoneInside", "renderDropZoneInside"]], template: function LimbleTreeNodeComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nodeHostContainer = _t.first);
} }, inputs: { branch: "branch" }, decls: 9, vars: 4, consts: [[3, "dropZone", 4, "ngIf"], [1, "limble-parent-container", 3, "dragstart", "dragend"], ["draggableDiv", ""], [3, "dragoverEventThrottle", "dragoverNoChangeDetect"], ["nodeHostContainer", ""], ["nodeHost", ""], [3, "branch", "dropZoneInside", "renderDropZoneInside", 4, "ngIf"], [3, "dropZone"], [3, "branch", "dropZoneInside", "renderDropZoneInside"]], template: function LimbleTreeNodeComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵtemplate(0, LimbleTreeNodeComponent_drop_zone_0_Template, 1, 1, "drop-zone", 0);
i0.ɵɵelementStart(1, "div", 1, 2);
i0.ɵɵlistener("dragstart", function LimbleTreeNodeComponent_Template_div_dragstart_1_listener($event) { return ctx.dragstartHandler($event); })("dragend", function LimbleTreeNodeComponent_Template_div_dragend_1_listener($event) { return ctx.dragendHandler($event); });
i0.ɵɵelementStart(3, "div", 3);
i0.ɵɵelementStart(3, "div", 3, 4);
i0.ɵɵlistener("dragoverNoChangeDetect", function LimbleTreeNodeComponent_Template_div_dragoverNoChangeDetect_3_listener($event) { return ctx.dragoverHandler($event); });
i0.ɵɵtemplate(4, LimbleTreeNodeComponent_ng_template_4_Template, 0, 0, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
i0.ɵɵtemplate(5, LimbleTreeNodeComponent_ng_template_5_Template, 0, 0, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(6, LimbleTreeNodeComponent_limble_tree_branch_6_Template, 1, 3, "limble-tree-branch", 5);
i0.ɵɵtemplate(7, LimbleTreeNodeComponent_limble_tree_branch_7_Template, 1, 3, "limble-tree-branch", 6);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(7, LimbleTreeNodeComponent_drop_zone_7_Template, 1, 1, "drop-zone", 0);
i0.ɵɵtemplate(8, LimbleTreeNodeComponent_drop_zone_8_Template, 1, 1, "drop-zone", 0);
} if (rf & 2) {

@@ -334,3 +339,3 @@ i0.ɵɵproperty("ngIf", ctx.renderDropZoneAbove === true);

i0.ɵɵproperty("dragoverEventThrottle", 10);
i0.ɵɵadvance(3);
i0.ɵɵadvance(4);
i0.ɵɵproperty("ngIf", ctx.branch !== undefined && ctx.renderInnerBranch === true);

@@ -355,3 +360,6 @@ i0.ɵɵadvance(1);

args: ["draggableDiv", { read: ElementRef }]
}], nodeHostContainer: [{
type: ViewChild,
args: ["nodeHostContainer", { read: ElementRef }]
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLW5vZGUvbGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLW5vZGUvbGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0osU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztJQ2xCL0MsK0JBR2E7OztJQURWLCtDQUEwQjs7OztJQWMxQix3Q0FLc0I7OztJQUhuQixzQ0FBaUIseUNBQUEscURBQUE7OztJQUt2QiwrQkFHYTs7O0lBRFYsK0NBQTBCOztBREE3QixNQUFNLE9BQU8sdUJBQXVCO0lBZ0JqQyxZQUNvQix1QkFBZ0QsRUFDaEQsaUJBQW9DLEVBQ3BDLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixtQkFBd0M7UUFMeEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgs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OzhGQXhVUyx1QkFBdUI7NERBQXZCLHVCQUF1QjsrQkFFRixnQkFBZ0I7K0JBVVosVUFBVTs7Ozs7O1FDckNoRCxvRkFHYTtRQUNiLGlDQUtDO1FBSkUsK0dBQWEsNEJBQXdCLElBQUMsOEZBQzNCLDBCQUFzQixJQURLO1FBS3RDLDhCQUdDO1FBRkUseUlBQTBCLDJCQUF1QixJQUFDO1FBR2xELHlIQUFxQztRQUN4QyxpQkFBTTtRQUNOLHNHQUtzQjtRQUN6QixpQkFBTTtRQUNOLG9GQUdhOztRQXpCVCx1REFBa0M7UUFXaEMsZUFBNEI7UUFBNUIsMENBQTRCO1FBSzNCLGVBQXdEO1FBQXhELGlGQUF3RDtRQU8zRCxlQUFrQztRQUFsQyx1REFBa0M7O3VGREN6Qix1QkFBdUI7Y0FMbkMsU0FBUztlQUFDO2dCQUNSLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFdBQVcsRUFBRSxtQ0FBbUM7Z0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2FBQ2xEO21PQUVXLE1BQU07a0JBQWQsS0FBSztZQUNxRCxRQUFRO2tCQUFsRSxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQVVRLFlBQVk7a0JBQXBFLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgIEFmdGVyVmlld0luaXQsXHJcbiAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICBDb21wb25lbnQsXHJcbiAgIEVsZW1lbnRSZWYsXHJcbiAgIElucHV0LFxyXG4gICBPbkluaXQsXHJcbiAgIFZpZXdDaGlsZCxcclxuICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcm9vdC9kcm9wLXpvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcmFnU3RhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvZHJhZy1zdGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVOb2RlLCBUcmVlU2VydmljZSB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcmFuY2ggfSBmcm9tIFwiLi4vY2xhc3Nlcy9CcmFuY2hcIjtcclxuaW1wb3J0IHsgaXNEcmFnZ2luZ0FsbG93ZWQsIGlzTmVzdGluZ0FsbG93ZWQgfSBmcm9tIFwiLi4vdXRpbFwiO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBza2lwVW50aWwsIHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgR2xvYmFsRXZlbnRzU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2dsb2JhbC1ldmVudHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZSB9IGZyb20gXCIuLi9jbGFzc2VzL0Ryb3Bab25lXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgc2VsZWN0b3I6IFwibGltYmxlLXRyZWUtbm9kZVwiLFxyXG4gICB0ZW1wbGF0ZVVybDogXCIuL2xpbWJsZS10cmVlLW5vZGUuY29tcG9uZW50Lmh0bWxcIixcclxuICAgc3R5bGVVcmxzOiBbXCIuL2xpbWJsZS10cmVlLW5vZGUuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICAgQElucHV0KCkgYnJhbmNoOiBCcmFuY2g8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgQFZpZXdDaGlsZChcIm5vZGVIb3N0XCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBwcml2YXRlIG5vZGVIb3N0OlxyXG4gICAgICB8IFZpZXdDb250YWluZXJSZWZcclxuICAgICAgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyBkcm9wWm9uZUFib3ZlOiBEcm9wWm9uZSB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHJlbmRlckRyb3Bab25lQWJvdmU6IGJvb2xlYW47XHJcbiAgIHB1YmxpYyBkcm9wWm9uZUJlbG93OiBEcm9wWm9uZSB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHJlbmRlckRyb3Bab25lQmVsb3c6IGJvb2xlYW47XHJcbiAgIHB1YmxpYyBkcm9wWm9uZUluc2lkZTogRHJvcFpvbmUgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyByZW5kZXJEcm9wWm9uZUluc2lkZTogYm9vbGVhbjtcclxuICAgcHVibGljIHJlYWRvbmx5IHJlbmRlcklubmVyQnJhbmNoOiBCb29sZWFuO1xyXG4gICBAVmlld0NoaWxkKFwiZHJhZ2dhYmxlRGl2XCIsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIGRyYWdnYWJsZURpdjpcclxuICAgICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxyXG4gICAgICB8IHVuZGVmaW5lZDtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudENyZWF0b3JTZXJ2aWNlOiBDb21wb25lbnRDcmVhdG9yU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZ1N0YXRlU2VydmljZTogRHJhZ1N0YXRlU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wWm9uZVNlcnZpY2U6IERyb3Bab25lU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmVlU2VydmljZTogVHJlZVNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsRXZlbnRzU2VydmljZTogR2xvYmFsRXZlbnRzU2VydmljZVxyXG4gICApIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVPcHRpb25zICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgdGhpcy50cmVlU2VydmljZS50cmVlT3B0aW9ucy5saXN0TW9kZSAhPT0gdHJ1ZSAmJlxyXG4gICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFBsYWNlaG9sZGVyKCkgIT09IHRydWVcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRoaXMucmVuZGVySW5uZXJCcmFuY2ggPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnJlbmRlcklubmVyQnJhbmNoID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW5kZXJEcm9wWm9uZUJlbG93ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVBYm92ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlbmRlckRyb3Bab25lSW5zaWRlID0gZmFsc2U7XHJcbiAgIH1cclxuXHJcbiAgIG5nT25Jbml0KCkge1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyRHJvcFpvbmVzKCk7XHJcbiAgIH1cclxuXHJcbiAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgdGhpcy5yZW5kZXJOb2RlKCk7XHJcbiAgICAgIHRoaXMuY2hlY2tGb3JIYW5kbGUoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcmFnc3RhcnRIYW5kbGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIgPT09IG51bGwgfHwgdGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gcnVuIGRyYWdzdGFydEhhbmRsZXJcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZHJhZ2dlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmIChkcmFnZ2VkRWxlbWVudC5wYXJlbnRFbGVtZW50Py50YWdOYW1lICE9PSBcIkxJTUJMRS1UUkVFLU5PREVcIikge1xyXG4gICAgICAgICAvL0Rvbid0IGRyYWcgc3R1ZmYgdGhhdCBpc24ndCBwYXJ0IG9mIHRoZSB0cmVlXHJcbiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IFwibW92ZVwiO1xyXG4gICAgICB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZHJhZ2dpbmcodGhpcy5icmFuY2gpO1xyXG4gICAgICAvL1dlIGhhdmUgdG8gdXNlIGEgc2V0VGltZW91dCBkdWUgdG8gYSBidWcgaW4gY2hyb21lOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjA3MzM4NzAvODc5NjY1MVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgZHJhZ2dlZEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImRyYWdnaW5nXCIpO1xyXG4gICAgICAgICBpZiAodGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3Qgc2hvdyBzdXJyb3VuZGluZyBkcm9wIHpvbmVzXCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuYnJhbmNoLmdldFBhcmVudCgpO1xyXG4gICAgICAgICBsZXQgcGFyZW50RGF0YTogTGltYmxlVHJlZU5vZGU7XHJcbiAgICAgICAgIGxldCBwYXJlbnROZXN0aW5nQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgIGlmIChwYXJlbnQ/LmRhdGEgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcGFyZW50RGF0YSA9IHBhcmVudD8uZGF0YSBhcyBMaW1ibGVUcmVlTm9kZTtcclxuICAgICAgICAgICAgcGFyZW50TmVzdGluZ0FsbG93ZWQgPSBpc05lc3RpbmdBbGxvd2VkKFxyXG4gICAgICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVPcHRpb25zLFxyXG4gICAgICAgICAgICAgICBwYXJlbnREYXRhXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgaWYgKHRoaXMuZHJvcFpvbmVBYm92ZSAhPT0gdW5kZWZpbmVkICYmIHBhcmVudE5lc3RpbmdBbGxvd2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnNob3dEcm9wWm9uZUZhbWlseSh0aGlzLmRyb3Bab25lQWJvdmUsIHtcclxuICAgICAgICAgICAgICAgam9pbkZhbWlsaWVzOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UudHJlZURhdGE/Lmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgICAgICAgICB0aGlzLmJyYW5jaC5nZXRDb29yZGluYXRlcygpLmxlbmd0aCA9PT0gMVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgLy9XZSBhcmUgZHJhZ2dpbmcgdGhlIG9ubHkgZWxlbWVudCBpbiB0aGUgdHJlZSwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHBsYWNlaG9sZGVyIHN5c3RlbVxyXG4gICAgICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLnVzZVBsYWNlaG9sZGVyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyYWdlbmRIYW5kbGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGRyYWdnZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBkcmFnZ2VkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZHJhZ2dpbmdcIik7XHJcbiAgICAgIGlmICh0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKSAhPT0gXCJjYXB0dXJlZFwiKSB7XHJcbiAgICAgICAgIC8vV2Fzbid0IGRyb3BwZWQgaW50byBhIHZhbGlkIHRyZWUsIHNvIHJlc2V0IGZvciBuZXh0IGRyYWcgYW5kXHJcbiAgICAgICAgIC8vZG9uJ3QgZG8gYW55dGhpbmcgZWxzZS5cclxuICAgICAgICAgdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLnJlbGVhc2UoKTtcclxuICAgICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UuY2xlYXIoKTtcclxuICAgICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UucmVzdG9yZUZhbWlsaWVzKCk7XHJcbiAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UucmVtb3ZlUGxhY2Vob2xkZXIoKTtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJhZ1N0YXRlU2VydmljZS5zdGF0ZSQucGlwZSh0YWtlKDIpKS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgIGlmIChzdGF0ZSA9PT0gXCJjYXB0dXJlZFwiICYmIHRoaXMuYnJhbmNoICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS5yZW1vdmUodGhpcy5icmFuY2gpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UucmVsZWFzZSgpO1xyXG4gICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZHJhZ292ZXJIYW5kbGVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgICAgaWYgKHRoaXMuZ2xvYmFsRXZlbnRzU2VydmljZS5zY3JvbGxpbmcgPT09IHRydWUpIHtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGdldCBjdXJyZW50IGJyYW5jaCBkdXJpbmcgZHJhZ292ZXIgZXZlbnRcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc291cmNlQnJhbmNoID0gdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLmdldERhdGEoKTtcclxuICAgICAgaWYgKHNvdXJjZUJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIC8vVGhleSBtaWdodCBiZSBkcmFnZ2luZyBzb21ldGhpbmcgdGhhdCBpc24ndCBhIG5vZGUuIEp1c3QgaWdub3JlIGl0LlxyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy9JZiB0cnlpbmcgdG8gZHJvcCBvbiBzZWxmLCByZXR1cm4uXHJcbiAgICAgIGlmIChcclxuICAgICAgICAgc291cmNlQnJhbmNoID09PSB0aGlzLmJyYW5jaCB8fFxyXG4gICAgICAgICB0aGlzLmJyYW5jaC5nZXRBbmNlc3RvcnMoKS5pbmNsdWRlcyhzb3VyY2VCcmFuY2gpXHJcbiAgICAgICkge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFBsYWNlaG9sZGVyKCkgPT09IHRydWUgJiZcclxuICAgICAgICAgdGhpcy5kcm9wWm9uZUFib3ZlICE9PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIC8vSWYgcGxhY2Vob2xkZXIgc3lzdGVtIGlzIGFjdGl2ZSwgdGhlbiBhY3RpdmF0ZSB0aGUgb25seSBleGlzdGluZyBkcm9wIHpvbmVcclxuICAgICAgICAgLy9hbmQgc2tpcCB0aGUgcmVzdCBvZiB0aGUgbG9naWMgaW4gdGhpcyBmdW5jdGlvblxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5zaG93RHJvcFpvbmVGYW1pbHkodGhpcy5kcm9wWm9uZUFib3ZlKTtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IHRvcExpbmUgPSB0YXJnZXQub2Zmc2V0SGVpZ2h0IC8gMzsgLy9hbiBpbWFnaW5hcnkgbGluZSAxLzMgb2YgdGhlIHdheSBkb3duIGZyb20gdGhlIHRvcCBvZiB0aGUgZWxlbWVudDtcclxuICAgICAgY29uc3QgYm90dG9tTGluZSA9IHRvcExpbmUgKiAyOyAvL2FuIGltYWdpbmFyeSBsaW5lIDEvMyBvZiB0aGUgd2F5IHVwIGZyb20gdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudDtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5icmFuY2guZ2V0UGFyZW50KCk7XHJcbiAgICAgIGxldCBwYXJlbnREYXRhOiBMaW1ibGVUcmVlTm9kZTtcclxuICAgICAgbGV0IHBhcmVudE5lc3RpbmdBbGxvd2VkID0gdHJ1ZTtcclxuICAgICAgaWYgKHBhcmVudD8uZGF0YSAhPT0gbnVsbCkge1xyXG4gICAgICAgICBwYXJlbnREYXRhID0gcGFyZW50Py5kYXRhIGFzIExpbWJsZVRyZWVOb2RlO1xyXG4gICAgICAgICBwYXJlbnROZXN0aW5nQWxsb3dlZCA9IGlzTmVzdGluZ0FsbG93ZWQoXHJcbiAgICAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnMsXHJcbiAgICAgICAgICAgIHBhcmVudERhdGFcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBhY3RpdmVEcm9wWm9uZSA9IHRoaXMuZHJvcFpvbmVTZXJ2aWNlLmdldEFjdGl2ZURyb3Bab25lKCk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgZXZlbnQub2Zmc2V0WSA8IHRvcExpbmUgJiZcclxuICAgICAgICAgdGhpcy5kcm9wWm9uZUFib3ZlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgKGFjdGl2ZURyb3Bab25lID09PSBudWxsIHx8XHJcbiAgICAgICAgICAgICFEcm9wWm9uZS5kcm9wWm9uZUxvY2F0aW9uc0FyZUVxdWFsKFxyXG4gICAgICAgICAgICAgICBhY3RpdmVEcm9wWm9uZSxcclxuICAgICAgICAgICAgICAgdGhpcy5kcm9wWm9uZUFib3ZlXHJcbiAgICAgICAgICAgICkpICYmXHJcbiAgICAgICAgIHBhcmVudE5lc3RpbmdBbGxvd2VkXHJcbiAgICAgICkge1xyXG4gICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYnJhbmNoLmdldEluZGV4KCk7XHJcbiAgICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhbid0IGdldCBicmFuY2ggaW5kZXhcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2Uuc2hvd0Ryb3Bab25lRmFtaWx5KHRoaXMuZHJvcFpvbmVBYm92ZSwge1xyXG4gICAgICAgICAgICBhY3RpdmF0ZUxvd2VzdEluc3RlYWRPZkZvdW5kZXI6IHRydWVcclxuICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgIGV2ZW50Lm9mZnNldFkgPCBib3R0b21MaW5lICYmXHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVJbnNpZGUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAoYWN0aXZlRHJvcFpvbmUgPT09IG51bGwgfHxcclxuICAgICAgICAgICAgIURyb3Bab25lLmRyb3Bab25lTG9jYXRpb25zQXJlRXF1YWwoXHJcbiAgICAgICAgICAgICAgIGFjdGl2ZURyb3Bab25lLFxyXG4gICAgICAgICAgICAgICB0aGlzLmRyb3Bab25lSW5zaWRlXHJcbiAgICAgICAgICAgICkpXHJcbiAgICAgICkge1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5zaG93RHJvcFpvbmVGYW1pbHkodGhpcy5kcm9wWm9uZUluc2lkZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgIGV2ZW50Lm9mZnNldFkgPj0gYm90dG9tTGluZSAmJlxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lQmVsb3cgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAoYWN0aXZlRHJvcFpvbmUgPT09IG51bGwgfHxcclxuICAgICAgICAgICAgIURyb3Bab25lLmRyb3Bab25lTG9jYXRpb25zQXJlRXF1YWwoXHJcbiAgICAgICAgICAgICAgIGFjdGl2ZURyb3Bab25lLFxyXG4gICAgICAgICAgICAgICB0aGlzLmRyb3Bab25lQmVsb3dcclxuICAgICAgICAgICAgKSkgJiZcclxuICAgICAgICAgdGhpcy5icmFuY2guZ2V0Q2hpbGRyZW4oKS5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICAgcGFyZW50TmVzdGluZ0FsbG93ZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5icmFuY2guZ2V0SW5kZXgoKTtcclxuICAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2FuJ3QgZ2V0IGJyYW5jaCBpbmRleFwiKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5zaG93RHJvcFpvbmVGYW1pbHkodGhpcy5kcm9wWm9uZUJlbG93KTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlbmRlck5vZGUoKSB7XHJcbiAgICAgIGlmICh0aGlzLm5vZGVIb3N0ID09PSB1bmRlZmluZWQgfHwgdGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gcmVuZGVyIHRyZWUgbm9kZVwiKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5icmFuY2guZGF0YS5jb21wb25lbnQ7XHJcbiAgICAgIGlmIChjb21wb25lbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICBjb21wb25lbnQgPSB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVPcHRpb25zPy5kZWZhdWx0Q29tcG9uZW50O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb21wb25lbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJsaW1ibGVUcmVlIHJlcXVpcmVzIGEgY29tcG9uZW50IHRvIHJlbmRlclwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxhbnk+KFxyXG4gICAgICAgICBjb21wb25lbnQuY2xhc3MsXHJcbiAgICAgICAgIHRoaXMubm9kZUhvc3RcclxuICAgICAgKTtcclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm5vZGVEYXRhID0gdGhpcy5icmFuY2guZGF0YTtcclxuICAgICAgZm9yIChjb25zdCBiaW5kaW5nIGluIGNvbXBvbmVudC5iaW5kaW5ncykge1xyXG4gICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2VbYmluZGluZ10gPSBjb21wb25lbnQuYmluZGluZ3NbYmluZGluZ107XHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSByZWdpc3RlckRyb3Bab25lcygpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnM/LmFsbG93RHJhZ2dpbmcgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gcmVnaXN0ZXIgZHJvcCB6b25lc1wiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmJyYW5jaC5nZXRQYXJlbnQoKTtcclxuICAgICAgbGV0IHBhcmVudERhdGE6IExpbWJsZVRyZWVOb2RlO1xyXG4gICAgICBpZiAocGFyZW50Py5kYXRhICE9PSBudWxsKSB7XHJcbiAgICAgICAgIHBhcmVudERhdGEgPSBwYXJlbnQ/LmRhdGEgYXMgTGltYmxlVHJlZU5vZGU7XHJcbiAgICAgICAgIGlmICghaXNOZXN0aW5nQWxsb3dlZCh0aGlzLnRyZWVTZXJ2aWNlLnRyZWVPcHRpb25zLCBwYXJlbnREYXRhKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFkZERyb3Bab25lQWJvdmUoKTtcclxuICAgICAgaWYgKHRoaXMudHJlZVNlcnZpY2UuZ2V0UGxhY2Vob2xkZXIoKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAvL09ubHkgcmVnaXN0ZXIgb25lIGRyb3Agem9uZSBpZiB0aGUgcGxhY2Vob2xkZXIgc3lzdGVtIGlzIGFjdGl2ZVxyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hZGREcm9wWm9uZUJlbG93KCk7XHJcbiAgICAgIGlmIChpc05lc3RpbmdBbGxvd2VkKHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnMsIHRoaXMuYnJhbmNoLmRhdGEpKSB7XHJcbiAgICAgICAgIHRoaXMuYWRkRHJvcFpvbmVJbnNpZGUoKTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIGFkZERyb3Bab25lQWJvdmUoKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byByZWdpc3RlciBkcm9wIHpvbmUgYWJvdmVcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5icmFuY2guZ2V0UGFyZW50KCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRDb29yZGluYXRlcyA9IHRoaXMuYnJhbmNoLmdldENvb3JkaW5hdGVzKCk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY3VycmVudENvb3JkaW5hdGVzW2N1cnJlbnRDb29yZGluYXRlcy5sZW5ndGggLSAxXTtcclxuICAgICAgdGhpcy5kcm9wWm9uZUFib3ZlID0gbmV3IERyb3Bab25lKFxyXG4gICAgICAgICBbLi4uKHBhcmVudD8uZ2V0Q29vcmRpbmF0ZXMoKSA/PyBbXSldLFxyXG4gICAgICAgICBpbmRleFxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBhZGRlZEFib3ZlID0gdGhpcy5kcm9wWm9uZVNlcnZpY2UuYWRkRHJvcFpvbmUodGhpcy5kcm9wWm9uZUFib3ZlKTtcclxuICAgICAgaWYgKGFkZGVkQWJvdmUgPT09IHRydWUpIHtcclxuICAgICAgICAgdGhpcy5yZW5kZXJEcm9wWm9uZUFib3ZlID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy5yZW5kZXJEcm9wWm9uZUFib3ZlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBhZGREcm9wWm9uZUJlbG93KCk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gcmVnaXN0ZXIgZHJvcCB6b25lIGFib3ZlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuYnJhbmNoLmdldFBhcmVudCgpO1xyXG4gICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSB0aGlzLmJyYW5jaC5nZXRDb29yZGluYXRlcygpO1xyXG4gICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRDb29yZGluYXRlc1tjdXJyZW50Q29vcmRpbmF0ZXMubGVuZ3RoIC0gMV07XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVCZWxvdyA9IG5ldyBEcm9wWm9uZShcclxuICAgICAgICAgWy4uLihwYXJlbnQ/LmdldENvb3JkaW5hdGVzKCkgPz8gW10pXSxcclxuICAgICAgICAgaW5kZXggKyAxXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGFkZGVkQmVsb3cgPSB0aGlzLmRyb3Bab25lU2VydmljZS5hZGREcm9wWm9uZSh0aGlzLmRyb3Bab25lQmVsb3cpO1xyXG4gICAgICBpZiAoYWRkZWRCZWxvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICB0aGlzLnJlbmRlckRyb3Bab25lQmVsb3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnJlbmRlckRyb3Bab25lQmVsb3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIGFkZERyb3Bab25lSW5zaWRlKCk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gcmVnaXN0ZXIgZHJvcCB6b25lIGFib3ZlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVJbnNpZGUgPSBuZXcgRHJvcFpvbmUoWy4uLnRoaXMuYnJhbmNoLmdldENvb3JkaW5hdGVzKCldLCAwKTtcclxuICAgICAgY29uc3QgYWRkZWRJbnNpZGUgPSB0aGlzLmRyb3Bab25lU2VydmljZS5hZGREcm9wWm9uZSh0aGlzLmRyb3Bab25lSW5zaWRlKTtcclxuICAgICAgaWYgKGFkZGVkSW5zaWRlID09PSB0cnVlKSB7XHJcbiAgICAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVJbnNpZGUgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnJlbmRlckRyb3Bab25lSW5zaWRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBjaGVja0ZvckhhbmRsZSgpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMuZHJhZ2dhYmxlRGl2ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmRyYWdnYWJsZURpdi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjb25zdCBoYW5kbGUgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubGltYmxlLXRyZWUtaGFuZGxlXCIpO1xyXG4gICAgICBpZiAoIWlzRHJhZ2dpbmdBbGxvd2VkKHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnMsIHRoaXMuYnJhbmNoPy5kYXRhKSkge1xyXG4gICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImRyYWdnYWJsZVwiLCBcImZhbHNlXCIpO1xyXG4gICAgICB9IGVsc2UgaWYgKGhhbmRsZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImRyYWdnYWJsZVwiLCBcInRydWVcIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIGhhbmRsZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsICgpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkcmFnZ2FibGVcIiwgXCJ0cnVlXCIpO1xyXG4gICAgICAgICAgICAvL0ZvciBzb21lIHJlYXNvbiBtb3VzZXVwIGRvZXNuJ3QgZmlyZSBhZnRlciBhIGRyYWcsIHNvIHdlIHVzZSB0aGlzIG9ic2VydmFibGUgc2VxdWVuY2UgaW5zdGVhZC5cclxuICAgICAgICAgICAgY29uc3QgZHJhZ2dpbmcgPSB0aGlzLmRyYWdTdGF0ZVNlcnZpY2Uuc3RhdGUkLnBpcGUoXHJcbiAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdGUpID0+IHN0YXRlID09PSBcImRyYWdnaW5nXCIpLFxyXG4gICAgICAgICAgICAgICBmaXJzdCgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXRlU2VydmljZS5zdGF0ZSRcclxuICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgIHNraXBVbnRpbChkcmFnZ2luZyksXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdGUpID0+IHN0YXRlID09PSBcImlkbGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIGZpcnN0KClcclxuICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkcmFnZ2FibGVcIiwgXCJmYWxzZVwiKTtcclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgIH1cclxufVxyXG4iLCI8ZHJvcC16b25lXHJcbiAgICpuZ0lmPVwicmVuZGVyRHJvcFpvbmVBYm92ZSA9PT0gdHJ1ZVwiXHJcbiAgIFtkcm9wWm9uZV09XCJkcm9wWm9uZUFib3ZlXCJcclxuPjwvZHJvcC16b25lPlxyXG48ZGl2XHJcbiAgIChkcmFnc3RhcnQpPVwiZHJhZ3N0YXJ0SGFuZGxlcigkZXZlbnQpXCJcclxuICAgKGRyYWdlbmQpPVwiZHJhZ2VuZEhhbmRsZXIoJGV2ZW50KVwiXHJcbiAgIGNsYXNzPVwibGltYmxlLXBhcmVudC1jb250YWluZXJcIlxyXG4gICAjZHJhZ2dhYmxlRGl2XHJcbj5cclxuICAgPGRpdlxyXG4gICAgICAoZHJhZ292ZXJOb0NoYW5nZURldGVjdCk9XCJkcmFnb3ZlckhhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgIFtkcmFnb3ZlckV2ZW50VGhyb3R0bGVdPVwiMTBcIlxyXG4gICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9kZUhvc3Q+PC9uZy10ZW1wbGF0ZT5cclxuICAgPC9kaXY+XHJcbiAgIDxsaW1ibGUtdHJlZS1icmFuY2hcclxuICAgICAgKm5nSWY9XCJicmFuY2ggIT09IHVuZGVmaW5lZCAmJiByZW5kZXJJbm5lckJyYW5jaCA9PT0gdHJ1ZVwiXHJcbiAgICAgIFticmFuY2hdPVwiYnJhbmNoXCJcclxuICAgICAgW2Ryb3Bab25lSW5zaWRlXT1cImRyb3Bab25lSW5zaWRlXCJcclxuICAgICAgW3JlbmRlckRyb3Bab25lSW5zaWRlXT1cInJlbmRlckRyb3Bab25lSW5zaWRlXCJcclxuICAgPjwvbGltYmxlLXRyZWUtYnJhbmNoPlxyXG48L2Rpdj5cclxuPGRyb3Atem9uZVxyXG4gICAqbmdJZj1cInJlbmRlckRyb3Bab25lQmVsb3cgPT09IHRydWVcIlxyXG4gICBbZHJvcFpvbmVdPVwiZHJvcFpvbmVCZWxvd1wiXHJcbj48L2Ryb3Atem9uZT5cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLW5vZGUvbGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLW5vZGUvbGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0osU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7SUNsQi9DLCtCQUdhOzs7SUFEViwrQ0FBMEI7Ozs7SUFlMUIsd0NBS3NCOzs7SUFIbkIsc0NBQWlCLHlDQUFBLHFEQUFBOzs7SUFLdkIsK0JBR2E7OztJQURWLCtDQUEwQjs7QUREN0IsTUFBTSxPQUFPLHVCQUF1QjtJQWtCakMsWUFDb0IsdUJBQWdELEVBQ2hELGlCQUFvQyxFQUNwQyxnQkFBa0MsRUFDbEMsZUFBZ0MsRUFDaEMsV0FBd0IsRUFDeEIsbUJBQXdDO1FBTHhDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxnQkFBVyxHQUFY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QUFtQixDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ1QsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNKLENBQUM7OzhGQWhWUyx1QkFBdUI7NERBQXZCLHVCQUF1QjsrQkFFRixnQkFBZ0I7K0JBVVosVUFBVTsrQkFHTCxVQUFVOzs7Ozs7O1FDeENyRCxvRkFHYTtRQUNiLGlDQUtDO1FBSkUsK0dBQWEsNEJBQXdCLElBQUMsOEZBQzNCLDBCQUFzQixJQURLO1FBS3RDLGlDQUlDO1FBSEUseUlBQTBCLDJCQUF1QixJQUFDO1FBSWxELHlIQUFxQztRQUN4QyxpQkFBTTtRQUNOLHNHQUtzQjtRQUN6QixpQkFBTTtRQUNOLG9GQUdhOztRQTFCVCx1REFBa0M7UUFXaEMsZUFBNEI7UUFBNUIsMENBQTRCO1FBTTNCLGVBQXdEO1FBQXhELGlGQUF3RDtRQU8zRCxlQUFrQztRQUFsQyx1REFBa0M7O3VGREF6Qix1QkFBdUI7Y0FMbkMsU0FBUztlQUFDO2dCQUNSLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFdBQVcsRUFBRSxtQ0FBbUM7Z0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2FBQ2xEO21PQUVXLE1BQU07a0JBQWQsS0FBSztZQUNxRCxRQUFRO2tCQUFsRSxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQVVRLFlBQVk7a0JBQXBFLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUl2QyxpQkFBaUI7a0JBRHhCLFNBQVM7bUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgIENvbXBvbmVudCxcclxuICAgRWxlbWVudFJlZixcclxuICAgSW5wdXQsXHJcbiAgIE9uSW5pdCxcclxuICAgVmlld0NoaWxkLFxyXG4gICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50Q3JlYXRvclNlcnZpY2UgfSBmcm9tIFwiLi4vc2luZ2xldG9ucy9jb21wb25lbnQtY3JlYXRvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERyb3Bab25lU2VydmljZSB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1yb290L2Ryb3Atem9uZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERyYWdTdGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2luZ2xldG9ucy9kcmFnLXN0YXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGltYmxlVHJlZU5vZGUsIFRyZWVTZXJ2aWNlIH0gZnJvbSBcIi4uL2xpbWJsZS10cmVlLXJvb3QvdHJlZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJyYW5jaCB9IGZyb20gXCIuLi9jbGFzc2VzL0JyYW5jaFwiO1xyXG5pbXBvcnQgeyBpc0RyYWdnaW5nQWxsb3dlZCwgaXNOZXN0aW5nQWxsb3dlZCB9IGZyb20gXCIuLi91dGlsXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIHNraXBVbnRpbCwgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxFdmVudHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvZ2xvYmFsLWV2ZW50cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERyb3Bab25lIH0gZnJvbSBcIi4uL2NsYXNzZXMvRHJvcFpvbmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICBzZWxlY3RvcjogXCJsaW1ibGUtdHJlZS1ub2RlXCIsXHJcbiAgIHRlbXBsYXRlVXJsOiBcIi4vbGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICBzdHlsZVVybHM6IFtcIi4vbGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gICBASW5wdXQoKSBicmFuY2g6IEJyYW5jaDxhbnk+IHwgdW5kZWZpbmVkO1xyXG4gICBAVmlld0NoaWxkKFwibm9kZUhvc3RcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHByaXZhdGUgbm9kZUhvc3Q6XHJcbiAgICAgIHwgVmlld0NvbnRhaW5lclJlZlxyXG4gICAgICB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIGRyb3Bab25lQWJvdmU6IERyb3Bab25lIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgcmVuZGVyRHJvcFpvbmVBYm92ZTogYm9vbGVhbjtcclxuICAgcHVibGljIGRyb3Bab25lQmVsb3c6IERyb3Bab25lIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgcmVuZGVyRHJvcFpvbmVCZWxvdzogYm9vbGVhbjtcclxuICAgcHVibGljIGRyb3Bab25lSW5zaWRlOiBEcm9wWm9uZSB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHJlbmRlckRyb3Bab25lSW5zaWRlOiBib29sZWFuO1xyXG4gICBwdWJsaWMgcmVhZG9ubHkgcmVuZGVySW5uZXJCcmFuY2g6IEJvb2xlYW47XHJcbiAgIEBWaWV3Q2hpbGQoXCJkcmFnZ2FibGVEaXZcIiwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgZHJhZ2dhYmxlRGl2OlxyXG4gICAgICB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XHJcbiAgICAgIHwgdW5kZWZpbmVkO1xyXG4gICBAVmlld0NoaWxkKFwibm9kZUhvc3RDb250YWluZXJcIiwgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgIHByaXZhdGUgbm9kZUhvc3RDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q3JlYXRvclNlcnZpY2U6IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcmFnU3RhdGVTZXJ2aWNlOiBEcmFnU3RhdGVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bab25lU2VydmljZTogRHJvcFpvbmVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHRyZWVTZXJ2aWNlOiBUcmVlU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBnbG9iYWxFdmVudHNTZXJ2aWNlOiBHbG9iYWxFdmVudHNTZXJ2aWNlXHJcbiAgICkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVPcHRpb25zLmxpc3RNb2RlICE9PSB0cnVlICYmXHJcbiAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UuZ2V0UGxhY2Vob2xkZXIoKSAhPT0gdHJ1ZVxyXG4gICAgICApIHtcclxuICAgICAgICAgdGhpcy5yZW5kZXJJbm5lckJyYW5jaCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMucmVuZGVySW5uZXJCcmFuY2ggPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlckRyb3Bab25lQmVsb3cgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZW5kZXJEcm9wWm9uZUFib3ZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVJbnNpZGUgPSBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgbmdPbkluaXQoKSB7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJEcm9wWm9uZXMoKTtcclxuICAgfVxyXG5cclxuICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLnJlbmRlck5vZGUoKTtcclxuICAgICAgdGhpcy5jaGVja0ZvckhhbmRsZSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyYWdzdGFydEhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2ZlciA9PT0gbnVsbCB8fCB0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byBydW4gZHJhZ3N0YXJ0SGFuZGxlclwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkcmFnZ2VkRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKGRyYWdnZWRFbGVtZW50LnBhcmVudEVsZW1lbnQ/LnRhZ05hbWUgIT09IFwiTElNQkxFLVRSRUUtTk9ERVwiKSB7XHJcbiAgICAgICAgIC8vRG9uJ3QgZHJhZyBzdHVmZiB0aGF0IGlzbid0IHBhcnQgb2YgdGhlIHRyZWVcclxuICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gXCJtb3ZlXCI7XHJcbiAgICAgIHRoaXMuZHJhZ1N0YXRlU2VydmljZS5kcmFnZ2luZyh0aGlzLmJyYW5jaCk7XHJcbiAgICAgIC8vV2UgaGF2ZSB0byB1c2UgYSBzZXRUaW1lb3V0IGR1ZSB0byBhIGJ1ZyBpbiBjaHJvbWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMDczMzg3MC84Nzk2NjUxXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICBkcmFnZ2VkRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHJhZ2dpbmdcIik7XHJcbiAgICAgICAgIGlmICh0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBzaG93IHN1cnJvdW5kaW5nIGRyb3Agem9uZXNcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5icmFuY2guZ2V0UGFyZW50KCk7XHJcbiAgICAgICAgIGxldCBwYXJlbnREYXRhOiBMaW1ibGVUcmVlTm9kZTtcclxuICAgICAgICAgbGV0IHBhcmVudE5lc3RpbmdBbGxvd2VkID0gdHJ1ZTtcclxuICAgICAgICAgaWYgKHBhcmVudD8uZGF0YSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBwYXJlbnREYXRhID0gcGFyZW50Py5kYXRhIGFzIExpbWJsZVRyZWVOb2RlO1xyXG4gICAgICAgICAgICBwYXJlbnROZXN0aW5nQWxsb3dlZCA9IGlzTmVzdGluZ0FsbG93ZWQoXHJcbiAgICAgICAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgIHBhcmVudERhdGFcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBpZiAodGhpcy5kcm9wWm9uZUFib3ZlICE9PSB1bmRlZmluZWQgJiYgcGFyZW50TmVzdGluZ0FsbG93ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2Uuc2hvd0Ryb3Bab25lRmFtaWx5KHRoaXMuZHJvcFpvbmVBYm92ZSwge1xyXG4gICAgICAgICAgICAgICBqb2luRmFtaWxpZXM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS50cmVlRGF0YT8ubGVuZ3RoID09PSAxICYmXHJcbiAgICAgICAgICAgICAgIHRoaXMuYnJhbmNoLmdldENvb3JkaW5hdGVzKCkubGVuZ3RoID09PSAxXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAvL1dlIGFyZSBkcmFnZ2luZyB0aGUgb25seSBlbGVtZW50IGluIHRoZSB0cmVlLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcGxhY2Vob2xkZXIgc3lzdGVtXHJcbiAgICAgICAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UudXNlUGxhY2Vob2xkZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZHJhZ2VuZEhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgY29uc3QgZHJhZ2dlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGRyYWdnZWRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkcmFnZ2luZ1wiKTtcclxuICAgICAgaWYgKHRoaXMuZHJhZ1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpICE9PSBcImNhcHR1cmVkXCIpIHtcclxuICAgICAgICAgLy9XYXNuJ3QgZHJvcHBlZCBpbnRvIGEgdmFsaWQgdHJlZSwgc28gcmVzZXQgZm9yIG5leHQgZHJhZyBhbmRcclxuICAgICAgICAgLy9kb24ndCBkbyBhbnl0aGluZyBlbHNlLlxyXG4gICAgICAgICB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UucmVsZWFzZSgpO1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5jbGVhcigpO1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5yZXN0b3JlRmFtaWxpZXMoKTtcclxuICAgICAgICAgdGhpcy50cmVlU2VydmljZS5yZW1vdmVQbGFjZWhvbGRlcigpO1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLnN0YXRlJC5waXBlKHRha2UoMikpLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcclxuICAgICAgICAgaWYgKHN0YXRlID09PSBcImNhcHR1cmVkXCIgJiYgdGhpcy5icmFuY2ggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLnJlbW92ZSh0aGlzLmJyYW5jaCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXRlU2VydmljZS5yZWxlYXNlKCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcmFnb3ZlckhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgICBpZiAodGhpcy5nbG9iYWxFdmVudHNTZXJ2aWNlLnNjcm9sbGluZyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYnJhbmNoID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZ2V0IGN1cnJlbnQgYnJhbmNoIGR1cmluZyBkcmFnb3ZlciBldmVudFwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBzb3VyY2VCcmFuY2ggPSB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0RGF0YSgpO1xyXG4gICAgICBpZiAoc291cmNlQnJhbmNoID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgLy9UaGV5IG1pZ2h0IGJlIGRyYWdnaW5nIHNvbWV0aGluZyB0aGF0IGlzbid0IGEgbm9kZS4gSnVzdCBpZ25vcmUgaXQuXHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvL0lmIHRyeWluZyB0byBkcm9wIG9uIHNlbGYsIHJldHVybi5cclxuICAgICAgaWYgKFxyXG4gICAgICAgICBzb3VyY2VCcmFuY2ggPT09IHRoaXMuYnJhbmNoIHx8XHJcbiAgICAgICAgIHRoaXMuYnJhbmNoLmdldEFuY2VzdG9ycygpLmluY2x1ZGVzKHNvdXJjZUJyYW5jaClcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UuZ2V0UGxhY2Vob2xkZXIoKSA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lQWJvdmUgIT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICAgLy9JZiBwbGFjZWhvbGRlciBzeXN0ZW0gaXMgYWN0aXZlLCB0aGVuIGFjdGl2YXRlIHRoZSBvbmx5IGV4aXN0aW5nIGRyb3Agem9uZVxyXG4gICAgICAgICAvL2FuZCBza2lwIHRoZSByZXN0IG9mIHRoZSBsb2dpYyBpbiB0aGlzIGZ1bmN0aW9uXHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnNob3dEcm9wWm9uZUZhbWlseSh0aGlzLmRyb3Bab25lQWJvdmUpO1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgY29uc3QgdG9wTGluZSA9IHRhcmdldC5vZmZzZXRIZWlnaHQgLyAzOyAvL2FuIGltYWdpbmFyeSBsaW5lIDEvMyBvZiB0aGUgd2F5IGRvd24gZnJvbSB0aGUgdG9wIG9mIHRoZSBlbGVtZW50O1xyXG4gICAgICBjb25zdCBib3R0b21MaW5lID0gdG9wTGluZSAqIDI7IC8vYW4gaW1hZ2luYXJ5IGxpbmUgMS8zIG9mIHRoZSB3YXkgdXAgZnJvbSB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50O1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmJyYW5jaC5nZXRQYXJlbnQoKTtcclxuICAgICAgbGV0IHBhcmVudERhdGE6IExpbWJsZVRyZWVOb2RlO1xyXG4gICAgICBsZXQgcGFyZW50TmVzdGluZ0FsbG93ZWQgPSB0cnVlO1xyXG4gICAgICBpZiAocGFyZW50Py5kYXRhICE9PSBudWxsKSB7XHJcbiAgICAgICAgIHBhcmVudERhdGEgPSBwYXJlbnQ/LmRhdGEgYXMgTGltYmxlVHJlZU5vZGU7XHJcbiAgICAgICAgIHBhcmVudE5lc3RpbmdBbGxvd2VkID0gaXNOZXN0aW5nQWxsb3dlZChcclxuICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS50cmVlT3B0aW9ucyxcclxuICAgICAgICAgICAgcGFyZW50RGF0YVxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGFjdGl2ZURyb3Bab25lID0gdGhpcy5kcm9wWm9uZVNlcnZpY2UuZ2V0QWN0aXZlRHJvcFpvbmUoKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICBldmVudC5vZmZzZXRZIDwgdG9wTGluZSAmJlxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lQWJvdmUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAoYWN0aXZlRHJvcFpvbmUgPT09IG51bGwgfHxcclxuICAgICAgICAgICAgIURyb3Bab25lLmRyb3Bab25lTG9jYXRpb25zQXJlRXF1YWwoXHJcbiAgICAgICAgICAgICAgIGFjdGl2ZURyb3Bab25lLFxyXG4gICAgICAgICAgICAgICB0aGlzLmRyb3Bab25lQWJvdmVcclxuICAgICAgICAgICAgKSkgJiZcclxuICAgICAgICAgcGFyZW50TmVzdGluZ0FsbG93ZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5icmFuY2guZ2V0SW5kZXgoKTtcclxuICAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2FuJ3QgZ2V0IGJyYW5jaCBpbmRleFwiKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5zaG93RHJvcFpvbmVGYW1pbHkodGhpcy5kcm9wWm9uZUFib3ZlLCB7XHJcbiAgICAgICAgICAgIGFjdGl2YXRlTG93ZXN0SW5zdGVhZE9mRm91bmRlcjogdHJ1ZVxyXG4gICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgZXZlbnQub2Zmc2V0WSA8IGJvdHRvbUxpbmUgJiZcclxuICAgICAgICAgdGhpcy5kcm9wWm9uZUluc2lkZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgIChhY3RpdmVEcm9wWm9uZSA9PT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAhRHJvcFpvbmUuZHJvcFpvbmVMb2NhdGlvbnNBcmVFcXVhbChcclxuICAgICAgICAgICAgICAgYWN0aXZlRHJvcFpvbmUsXHJcbiAgICAgICAgICAgICAgIHRoaXMuZHJvcFpvbmVJbnNpZGVcclxuICAgICAgICAgICAgKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnNob3dEcm9wWm9uZUZhbWlseSh0aGlzLmRyb3Bab25lSW5zaWRlKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgZXZlbnQub2Zmc2V0WSA+PSBib3R0b21MaW5lICYmXHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVCZWxvdyAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgIChhY3RpdmVEcm9wWm9uZSA9PT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAhRHJvcFpvbmUuZHJvcFpvbmVMb2NhdGlvbnNBcmVFcXVhbChcclxuICAgICAgICAgICAgICAgYWN0aXZlRHJvcFpvbmUsXHJcbiAgICAgICAgICAgICAgIHRoaXMuZHJvcFpvbmVCZWxvd1xyXG4gICAgICAgICAgICApKSAmJlxyXG4gICAgICAgICB0aGlzLmJyYW5jaC5nZXRDaGlsZHJlbigpLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICBwYXJlbnROZXN0aW5nQWxsb3dlZFxyXG4gICAgICApIHtcclxuICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmJyYW5jaC5nZXRJbmRleCgpO1xyXG4gICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjYW4ndCBnZXQgYnJhbmNoIGluZGV4XCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnNob3dEcm9wWm9uZUZhbWlseSh0aGlzLmRyb3Bab25lQmVsb3cpO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcmVuZGVyTm9kZSgpIHtcclxuICAgICAgaWYgKHRoaXMubm9kZUhvc3QgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZW5kZXIgdHJlZSBub2RlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBjb21wb25lbnQgPSB0aGlzLmJyYW5jaC5kYXRhLmNvbXBvbmVudDtcclxuICAgICAgaWYgKGNvbXBvbmVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIGNvbXBvbmVudCA9IHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnM/LmRlZmF1bHRDb21wb25lbnQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbXBvbmVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImxpbWJsZVRyZWUgcmVxdWlyZXMgYSBjb21wb25lbnQgdG8gcmVuZGVyXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Q3JlYXRvclNlcnZpY2UuYXBwZW5kQ29tcG9uZW50PGFueT4oXHJcbiAgICAgICAgIGNvbXBvbmVudC5jbGFzcyxcclxuICAgICAgICAgdGhpcy5ub2RlSG9zdFxyXG4gICAgICApO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uubm9kZURhdGEgPSB0aGlzLmJyYW5jaC5kYXRhO1xyXG4gICAgICBmb3IgKGNvbnN0IGJpbmRpbmcgaW4gY29tcG9uZW50LmJpbmRpbmdzKSB7XHJcbiAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZVtiaW5kaW5nXSA9IGNvbXBvbmVudC5iaW5kaW5nc1tiaW5kaW5nXTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlZ2lzdGVyRHJvcFpvbmVzKCk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy50cmVlU2VydmljZS50cmVlT3B0aW9ucz8uYWxsb3dEcmFnZ2luZyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byByZWdpc3RlciBkcm9wIHpvbmVzXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuYnJhbmNoLmdldFBhcmVudCgpO1xyXG4gICAgICBsZXQgcGFyZW50RGF0YTogTGltYmxlVHJlZU5vZGU7XHJcbiAgICAgIGlmIChwYXJlbnQ/LmRhdGEgIT09IG51bGwpIHtcclxuICAgICAgICAgcGFyZW50RGF0YSA9IHBhcmVudD8uZGF0YSBhcyBMaW1ibGVUcmVlTm9kZTtcclxuICAgICAgICAgaWYgKCFpc05lc3RpbmdBbGxvd2VkKHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnMsIHBhcmVudERhdGEpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWRkRHJvcFpvbmVBYm92ZSgpO1xyXG4gICAgICBpZiAodGhpcy50cmVlU2VydmljZS5nZXRQbGFjZWhvbGRlcigpID09PSB0cnVlKSB7XHJcbiAgICAgICAgIC8vT25seSByZWdpc3RlciBvbmUgZHJvcCB6b25lIGlmIHRoZSBwbGFjZWhvbGRlciBzeXN0ZW0gaXMgYWN0aXZlXHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFkZERyb3Bab25lQmVsb3coKTtcclxuICAgICAgaWYgKGlzTmVzdGluZ0FsbG93ZWQodGhpcy50cmVlU2VydmljZS50cmVlT3B0aW9ucywgdGhpcy5icmFuY2guZGF0YSkpIHtcclxuICAgICAgICAgdGhpcy5hZGREcm9wWm9uZUluc2lkZSgpO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgYWRkRHJvcFpvbmVBYm92ZSgpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMuYnJhbmNoID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZmFpbGVkIHRvIHJlZ2lzdGVyIGRyb3Agem9uZSBhYm92ZVwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmJyYW5jaC5nZXRQYXJlbnQoKTtcclxuICAgICAgY29uc3QgY3VycmVudENvb3JkaW5hdGVzID0gdGhpcy5icmFuY2guZ2V0Q29vcmRpbmF0ZXMoKTtcclxuICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50Q29vcmRpbmF0ZXNbY3VycmVudENvb3JkaW5hdGVzLmxlbmd0aCAtIDFdO1xyXG4gICAgICB0aGlzLmRyb3Bab25lQWJvdmUgPSBuZXcgRHJvcFpvbmUoXHJcbiAgICAgICAgIFsuLi4ocGFyZW50Py5nZXRDb29yZGluYXRlcygpID8/IFtdKV0sXHJcbiAgICAgICAgIGluZGV4XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGFkZGVkQWJvdmUgPSB0aGlzLmRyb3Bab25lU2VydmljZS5hZGREcm9wWm9uZSh0aGlzLmRyb3Bab25lQWJvdmUpO1xyXG4gICAgICBpZiAoYWRkZWRBYm92ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICB0aGlzLnJlbmRlckRyb3Bab25lQWJvdmUgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnJlbmRlckRyb3Bab25lQWJvdmUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIGFkZERyb3Bab25lQmVsb3coKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byByZWdpc3RlciBkcm9wIHpvbmUgYWJvdmVcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5icmFuY2guZ2V0UGFyZW50KCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRDb29yZGluYXRlcyA9IHRoaXMuYnJhbmNoLmdldENvb3JkaW5hdGVzKCk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY3VycmVudENvb3JkaW5hdGVzW2N1cnJlbnRDb29yZGluYXRlcy5sZW5ndGggLSAxXTtcclxuICAgICAgdGhpcy5kcm9wWm9uZUJlbG93ID0gbmV3IERyb3Bab25lKFxyXG4gICAgICAgICBbLi4uKHBhcmVudD8uZ2V0Q29vcmRpbmF0ZXMoKSA/PyBbXSldLFxyXG4gICAgICAgICBpbmRleCArIDFcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgYWRkZWRCZWxvdyA9IHRoaXMuZHJvcFpvbmVTZXJ2aWNlLmFkZERyb3Bab25lKHRoaXMuZHJvcFpvbmVCZWxvdyk7XHJcbiAgICAgIGlmIChhZGRlZEJlbG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVCZWxvdyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVCZWxvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgYWRkRHJvcFpvbmVJbnNpZGUoKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byByZWdpc3RlciBkcm9wIHpvbmUgYWJvdmVcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kcm9wWm9uZUluc2lkZSA9IG5ldyBEcm9wWm9uZShbLi4udGhpcy5icmFuY2guZ2V0Q29vcmRpbmF0ZXMoKV0sIDApO1xyXG4gICAgICBjb25zdCBhZGRlZEluc2lkZSA9IHRoaXMuZHJvcFpvbmVTZXJ2aWNlLmFkZERyb3Bab25lKHRoaXMuZHJvcFpvbmVJbnNpZGUpO1xyXG4gICAgICBpZiAoYWRkZWRJbnNpZGUgPT09IHRydWUpIHtcclxuICAgICAgICAgdGhpcy5yZW5kZXJEcm9wWm9uZUluc2lkZSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVJbnNpZGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIGNoZWNrRm9ySGFuZGxlKCk6IHZvaWQge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMubm9kZUhvc3RDb250YWluZXIgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLmRyYWdnYWJsZURpdiA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgbm9kZUhvc3RDb250YWluZXJFbGVtZW50ID0gdGhpcy5ub2RlSG9zdENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjb25zdCBoYW5kbGUgPSBub2RlSG9zdENvbnRhaW5lckVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgXCIubGltYmxlLXRyZWUtaGFuZGxlXCJcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgZHJhZ2dhYmxlRGl2RWxlbWVudCA9IHRoaXMuZHJhZ2dhYmxlRGl2Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIGlmICghaXNEcmFnZ2luZ0FsbG93ZWQodGhpcy50cmVlU2VydmljZS50cmVlT3B0aW9ucywgdGhpcy5icmFuY2g/LmRhdGEpKSB7XHJcbiAgICAgICAgIGRyYWdnYWJsZURpdkVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZHJhZ2dhYmxlXCIsIFwiZmFsc2VcIik7XHJcbiAgICAgIH0gZWxzZSBpZiAoaGFuZGxlID09PSBudWxsKSB7XHJcbiAgICAgICAgIGRyYWdnYWJsZURpdkVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZHJhZ2dhYmxlXCIsIFwidHJ1ZVwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgaGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBkcmFnZ2FibGVEaXZFbGVtZW50LnNldEF0dHJpYnV0ZShcImRyYWdnYWJsZVwiLCBcInRydWVcIik7XHJcbiAgICAgICAgICAgIC8vRm9yIHNvbWUgcmVhc29uIG1vdXNldXAgZG9lc24ndCBmaXJlIGFmdGVyIGEgZHJhZywgc28gd2UgdXNlIHRoaXMgb2JzZXJ2YWJsZSBzZXF1ZW5jZSBpbnN0ZWFkLlxyXG4gICAgICAgICAgICBjb25zdCBkcmFnZ2luZyA9IHRoaXMuZHJhZ1N0YXRlU2VydmljZS5zdGF0ZSQucGlwZShcclxuICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUgPT09IFwiZHJhZ2dpbmdcIiksXHJcbiAgICAgICAgICAgICAgIGZpcnN0KClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLnN0YXRlJFxyXG4gICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgc2tpcFVudGlsKGRyYWdnaW5nKSxcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUgPT09IFwiaWRsZVwiKSxcclxuICAgICAgICAgICAgICAgICAgZmlyc3QoKVxyXG4gICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBkcmFnZ2FibGVEaXZFbGVtZW50LnNldEF0dHJpYnV0ZShcImRyYWdnYWJsZVwiLCBcImZhbHNlXCIpO1xyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgfVxyXG59XHJcbiIsIjxkcm9wLXpvbmVcclxuICAgKm5nSWY9XCJyZW5kZXJEcm9wWm9uZUFib3ZlID09PSB0cnVlXCJcclxuICAgW2Ryb3Bab25lXT1cImRyb3Bab25lQWJvdmVcIlxyXG4+PC9kcm9wLXpvbmU+XHJcbjxkaXZcclxuICAgKGRyYWdzdGFydCk9XCJkcmFnc3RhcnRIYW5kbGVyKCRldmVudClcIlxyXG4gICAoZHJhZ2VuZCk9XCJkcmFnZW5kSGFuZGxlcigkZXZlbnQpXCJcclxuICAgY2xhc3M9XCJsaW1ibGUtcGFyZW50LWNvbnRhaW5lclwiXHJcbiAgICNkcmFnZ2FibGVEaXZcclxuPlxyXG4gICA8ZGl2XHJcbiAgICAgIChkcmFnb3Zlck5vQ2hhbmdlRGV0ZWN0KT1cImRyYWdvdmVySGFuZGxlcigkZXZlbnQpXCJcclxuICAgICAgW2RyYWdvdmVyRXZlbnRUaHJvdHRsZV09XCIxMFwiXHJcbiAgICAgICNub2RlSG9zdENvbnRhaW5lclxyXG4gICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9kZUhvc3Q+PC9uZy10ZW1wbGF0ZT5cclxuICAgPC9kaXY+XHJcbiAgIDxsaW1ibGUtdHJlZS1icmFuY2hcclxuICAgICAgKm5nSWY9XCJicmFuY2ggIT09IHVuZGVmaW5lZCAmJiByZW5kZXJJbm5lckJyYW5jaCA9PT0gdHJ1ZVwiXHJcbiAgICAgIFticmFuY2hdPVwiYnJhbmNoXCJcclxuICAgICAgW2Ryb3Bab25lSW5zaWRlXT1cImRyb3Bab25lSW5zaWRlXCJcclxuICAgICAgW3JlbmRlckRyb3Bab25lSW5zaWRlXT1cInJlbmRlckRyb3Bab25lSW5zaWRlXCJcclxuICAgPjwvbGltYmxlLXRyZWUtYnJhbmNoPlxyXG48L2Rpdj5cclxuPGRyb3Atem9uZVxyXG4gICAqbmdJZj1cInJlbmRlckRyb3Bab25lQmVsb3cgPT09IHRydWVcIlxyXG4gICBbZHJvcFpvbmVdPVwiZHJvcFpvbmVCZWxvd1wiXHJcbj48L2Ryb3Atem9uZT5cclxuIl19

@@ -27,2 +27,3 @@ import { AfterViewInit, ChangeDetectorRef, OnInit } from "@angular/core";

private draggableDiv;
private nodeHostContainer;
constructor(componentCreatorService: ComponentCreatorService, changeDetectorRef: ChangeDetectorRef, dragStateService: DragStateService, dropZoneService: DropZoneService, treeService: TreeService, globalEventsService: GlobalEventsService);

@@ -29,0 +30,0 @@ ngOnInit(): void;

{
"name": "@limble/limble-tree",
"version": "0.10.0",
"version": "0.10.1",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": "^11.2.3",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc