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.11.3 to 0.11.4

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],h=d[1],p=t[c];if(h instanceof Array&&p instanceof Array){if(!l(h,p))return!1}else if(h!==p)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.prototype.setParentCoordinates=function(e){this.parentCoordinates=e},e.prototype.setInsertIndex=function(e){this.insertIndex=e},e}(),h=function(){function e(e,t){this.location=new c(e,t),this.rendered=!1,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.isRendered=function(e){return void 0===e&&(e=void 0),void 0!==e&&(this.rendered=e,void 0!==this.commChannel&&this.commChannel.next("checkRendered"),!1===this.rendered&&this.isVisible(!1)),this.rendered},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.prototype.setHost=function(e){return this.host=e,this.host},e.prototype.getHost=function(){return this.host},e}(),p=function(){function e(){this.state="idle",this.state$=new r.BehaviorSubject(this.state)}return e.prototype.dragging=function(e,t){this._tempData={branch:e,parentContainer:t},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(){var e;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),null===(e=this._tempData)||void 0===e?void 0:e.branch},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}p.ɵfac=function(e){return new(e||p)},p.ɵprov=t.ɵɵdefineInjectable({token:p,factory:p.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(p,[{type:t.Injectable}],(function(){return[]}),null);var v=function(){function e(e){this.dragStateService=e,this.dropZoneArchive=new Set,this.dropZoneInventory=[],this.dropZoneFamilies=[],this.visibleFamily=null,this.activeDropZone=null,this.tempFamilies=[],this.setActiveDropZone(null)}return e.prototype.addDropZone=function(e){this.dropZoneArchive.add(e)},e.prototype.clearVisibleZones=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.setActiveDropZone(null)},e.prototype.getActiveDropZone=function(){return this.activeDropZone},e.prototype.getDropZone=function(e){var t=s(e);t.pop();var r=e[e.length-1],n=new c(t,r);return this.dropZoneInventory.find((function(e){return h.dropZoneLocationsAreEqual(e,n)}))},e.prototype.init=function(e,t){this.tree=e,this.treeOptions=t,this.update()},e.prototype.removeDropZone=function(e){this.dropZoneArchive.delete(e)},e.prototype.reset=function(){this.clearVisibleZones(),this.dropZoneFamilies.length=0,this.dropZoneInventory.length=0},e.prototype.restart=function(){this.reset(),this.dropZoneArchive.clear()},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||!h.dropZoneLocationsAreEqual(this.activeDropZone,e)){null===this.visibleFamily&&null===this.activeDropZone||this.clearVisibleZones();var p=this.dropZoneInventory.find((function(t){return h.dropZoneLocationsAreEqual(t,e)}));if(void 0===p)throw new Error("Could not find drop zone to show. location: "+JSON.stringify(e.getLocation()));var v=p.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 h.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)),Z=w.next();!Z.done;Z=w.next()){(F=Z.value).setFamily(b),F!==v.founder&&(null===this.activeDropZone?this.showDropZone(F,!0):this.showDropZone(F))}}catch(e){r={error:e}}finally{try{Z&&!Z.done&&(n=w.return)&&n.call(w)}finally{if(r)throw r.error}}try{for(var C=i(m.members),D=C.next();!D.done;D=C.next()){(F=D.value).setFamily(b),F.getLocation().parentCoordinates.length<y.getLocation().parentCoordinates.length&&(b.members.push(F),this.showDropZone(F))}}catch(e){o={error:e}}finally{try{D&&!D.done&&(a=C.return)&&a.call(C)}finally{if(o)throw o.error}}this.tempFamilies=[v,m];var S=this.dropZoneFamilies.indexOf(v);this.dropZoneFamilies.splice(S,1);var I=this.dropZoneFamilies.indexOf(m);this.dropZoneFamilies.splice(I,1),this.dropZoneFamilies.push(b),this.visibleFamily=b}else{if(void 0===v)throw new Error("No family");if(this.visibleFamily=v,this.showDropZone(v.founder,!0),v.members.length>1)try{for(var x=i(v.members.sort(u)),E=x.next();!E.done;E=x.next()){var F;(F=E.value)!==v.founder&&(null===this.activeDropZone?this.showDropZone(F,!0):this.showDropZone(F))}}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&&this.visibleFamily.members.length>1){var M=s(this.visibleFamily.members).sort(u).pop();if(void 0===M)throw new Error("Could not get lowest member");this.swapActiveDropZone(M)}}},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.update=function(){this.reset(),this.buildInventory(),this.assignFamilies()},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})),h=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]++}p.dropZoneFamilies.push(t)},p=this;try{for(var u=i(c),v=u.next();!v.done;v=u.next()){h(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),Z=w.next();!Z.done;Z=w.next()){var C=Z.value;b+=JSON.stringify(C.getLocation())+", "}}catch(e){o={error:e}}finally{try{Z&&!Z.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.buildInventory=function(){var e,t,r=[];try{for(var n=i(this.dropZoneArchive),o=n.next();!o.done;o=n.next()){var a=o.value,s=a.getFullInsertCoordinates().join(",");r.includes(s)?a.isRendered(!1):(this.dropZoneInventory.push(a),r.push(s),a.isRendered(!0))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}},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");var o=t.branch;return!!this.treeOptions.allowDrop(o.data,r.data,n)},e}();v.ɵfac=function(e){return new(e||v)(t.ɵɵinject(p))},v.ɵprov=t.ɵɵdefineInjectable({token:v,factory:v.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(v,[{type:t.Injectable}],(function(){return[{type:p}]}),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=["children"];function y(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",3),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneInside)}}function m(e,t){}var b=function(){function e(e,t,r){var n;this.treeService=e,this.changeDetectorRef=t,this.dropZoneService=r,this.indent=null===(n=this.treeService.treeOptions)||void 0===n?void 0:n.indent,this.renderDropZoneInside=!1}return e.prototype.ngOnInit=function(){var e=this;if(this.addDropZoneInside(),void 0===this.dropZoneInside)throw new Error("drop zone inside is not defined");this.dropZoneInside.getCommChannel().pipe(n.filter((function(e){return"checkRendered"===e}))).subscribe((function(){if(void 0===e.dropZoneInside||void 0===e.branch)throw new Error("Zones not registered");d(e.treeService.treeOptions,e.branch.data)&&(e.renderDropZoneInside=e.dropZoneInside.isRendered())}))},e.prototype.ngAfterViewInit=function(){this.reRender(),this.setDropZoneHost(),this.changeDetectorRef.detectChanges()},e.prototype.ngOnDestroy=function(){void 0!==this.dropZoneInside&&this.dropZoneService.removeDropZone(this.dropZoneInside),this.treeService.cleanupSignal$.next(null)},e.prototype.addDropZoneInside=function(){if(void 0===this.branch)throw new Error("failed to register drop zone inside");this.dropZoneInside=new h(s(this.branch.getCoordinates()),0),this.dropZoneService.addDropZone(this.dropZoneInside)},e.prototype.reRender=function(){if(void 0===this.children||void 0===this.branch)throw new Error("Failed to render limble tree branch");this.treeService.renderBranch(this.children,this.branch)},e.prototype.setDropZoneHost=function(){if(void 0===this.children||void 0===this.dropZoneInside)throw new Error("Failed to add drop zone host");this.dropZoneInside.setHost(this.children)},e}();b.ɵfac=function(e){return new(e||b)(t.ɵɵdirectiveInject(H),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(v))},b.ɵcmp=t.ɵɵdefineComponent({type:b,selectors:[["limble-tree-branch"]],viewQuery:function(e,r){if(1&e&&t.ɵɵviewQuery(g,1,t.ViewContainerRef),2&e){var n;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.children=n.first)}},inputs:{branch:"branch"},decls:5,vars:4,consts:[[3,"dropZone",4,"ngIf"],[1,"limble-child-nodes",3,"hidden"],["children",""],[3,"dropZone"]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div"),t.ɵɵtemplate(1,y,1,1,"drop-zone",0),t.ɵɵelementStart(2,"span",1),t.ɵɵtemplate(3,m,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))},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:H},{type:t.ChangeDetectorRef},{type:v}]}),{branch:[{type:t.Input}],children:[{type:t.ViewChild,args:["children",{read:t.ViewContainerRef}]}]});var w=function(){function e(e){this.factoryResolver=e,this.factoryResolver=e}return e.prototype.appendComponent=function(e,t,r){void 0===r&&(r=void 0);var n=this.factoryResolver.resolveComponentFactory(e);return t.createComponent(n,r)},e}();function Z(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),h=c.next();!h.done;h=c.next()){var p=h.value;if(l(p))return p}}catch(e){t={error:e}}finally{try{h&&!h.done&&(r=c.return)&&r.call(c)}finally{if(t)throw t.error}}return null!==(n=document.scrollingElement)&&void 0!==n?n:document.documentElement}w.ɵfac=function(e){return new(e||w)(t.ɵɵinject(t.ComponentFactoryResolver))},w.ɵprov=t.ɵɵdefineInjectable({token:w,factory:w.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(w,[{type:t.Injectable}],(function(){return[{type:t.ComponentFactoryResolver}]}),null);var C=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=Z(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 h=d.getBoundingClientRect(),p=Z(d);n=e.clientX-(h.left+p.scrollLeft),c=e.clientY-(h.top+p.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,h=d.scrollHeight-t,p=d.scrollTop;if(a&&p>0){n=p-75*((o-c)/r)}else{if(!s||!(p<h))return;n=p+75*((c-i)/r)}(n=Math.max(0,Math.min(h,n)))!==p&&(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}();C.ɵfac=function(e){return new(e||C)(t.ɵɵinject(t.NgZone))},C.ɵprov=t.ɵɵdefineInjectable({token:C,factory:C.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(C,[{type:t.Injectable}],(function(){return[{type:t.NgZone}]}),null);var D=["nodeHost"],S=["draggableDiv"],I=["nodeHostContainer"],x=["innerBranch"];function E(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",7),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneAbove)}}function F(e,t){}function M(e,r){if(1&e&&t.ɵɵelement(0,"limble-tree-branch",8,9),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("branch",n.branch)}}function A(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",7),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneBelow)}}var O=function(){function e(e,t,r,o,i,a,s){var l=this;this.componentCreatorService=e,this.changeDetectorRef=t,this.dragStateService=r,this.dropZoneService=o,this.treeService=i,this.globalEventsService=a,this.ngZone=s,void 0!==this.treeService.treeOptions&&!0!==this.treeService.treeOptions.listMode?this.renderInnerBranch=!0:this.renderInnerBranch=!1,this.renderDropZoneBelow=!1,this.renderDropZoneAbove=!1,this.treeChangeSubscription=this.treeService.changes$.pipe(n.skip(1)).subscribe((function(){l.treeChangeHandler()}))}return e.prototype.treeChangeHandler=function(){void 0===this.branch||void 0===this.currentBranchCoordinates||l(this.branch.getCoordinates(),this.currentBranchCoordinates)||this.updateDropZones()},e.prototype.ngOnInit=function(){var e,t,o,i=this;if(!1!==(null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.allowDragging)){var a=null===(t=this.branch)||void 0===t?void 0:t.getParent();if(null!==(null==a?void 0:a.data)){var s=null==a?void 0:a.data;if(!d(this.treeService.treeOptions,s))return void(this.renderInnerBranch=!1)}this.registerDropZones(),this.currentBranchCoordinates=null===(o=this.branch)||void 0===o?void 0:o.getCoordinates(),this.ngZone.runOutsideAngular((function(){if(void 0===i.dropZoneAbove||void 0===i.dropZoneBelow)throw new Error("Zones not registered");r.merge(i.dropZoneAbove.getCommChannel(),i.dropZoneBelow.getCommChannel()).pipe(n.filter((function(e){return"checkRendered"===e}))).subscribe((function(){if(void 0===i.dropZoneAbove||void 0===i.dropZoneBelow||void 0===i.branch)throw new Error("Zones not registered");i.renderDropZoneAbove=i.dropZoneAbove.isRendered(),i.renderDropZoneBelow=i.dropZoneBelow.isRendered()}))}))}},e.prototype.ngAfterViewInit=function(){this.renderNode(),this.setDropZoneHosts(),this.checkForHandle(),this.changeDetectorRef.detectChanges()},e.prototype.ngOnDestroy=function(){this.treeChangeSubscription.unsubscribe(),void 0!==this.dropZoneAbove&&this.dropZoneService.removeDropZone(this.dropZoneAbove),void 0!==this.dropZoneBelow&&this.dropZoneService.removeDropZone(this.dropZoneBelow),this.treeService.cleanupSignal$.next(null)},e.prototype.dragstartHandler=function(e){var t,o=this;if(e.stopPropagation(),null===e.dataTransfer||void 0===this.branch||void 0===this.parentHost)throw new Error("failed to run dragstartHandler");var i=e.target;if("LIMBLE-TREE-NODE"===(null===(t=i.parentElement)||void 0===t?void 0:t.tagName)){e.dataTransfer.effectAllowed="move",this.dragStateService.dragging(this.branch,this.parentHost);var a=i.closest("limble-tree-root");if(null===a)throw new Error("could not get root of tree");this.ngZone.runOutsideAngular((function(){setTimeout((function(){var e,t;i.classList.add("dragging"),1===(null===(e=o.treeService.treeData)||void 0===e?void 0:e.length)&&1===(null===(t=o.branch)||void 0===t?void 0:t.getCoordinates().length)&&o.treeService.placeholder$.next(!0)}));var e=r.fromEvent(a,"dragover").pipe(n.first()).subscribe((function(e){if(e.stopPropagation(),void 0===o.branch)throw new Error("Could not show surrounding drop zones");var t,r=o.branch.getParent(),n=!0;null!==(null==r?void 0:r.data)&&(t=null==r?void 0:r.data,n=d(o.treeService.treeOptions,t)),void 0!==o.dropZoneAbove&&n&&o.dropZoneService.showDropZoneFamily(o.dropZoneAbove,{joinFamilies:!0})}));setTimeout((function(){e.closed||e.unsubscribe()}),500)}))}else e.preventDefault()},e.prototype.dragendHandler=function(e){var t,r;if(null==e||e.stopPropagation(),void 0===this.draggableDiv)throw new Error("could not get draggable div");if(this.draggableDiv.nativeElement.classList.remove("dragging"),"captured"===this.dragStateService.getState()){if(!1===this.treeService.captured){if(void 0===this.branch)throw new Error("could not get branch in dragendHandler");this.treeService.cleanupSignal$.next(null),this.treeService.captured=!1}this.dragStateService.release()}else this.dragStateService.release(),this.dropZoneService.clearVisibleZones(),this.dropZoneService.restoreFamilies(),1===(null===(t=this.treeService.treeData)||void 0===t?void 0:t.length)&&1===(null===(r=this.branch)||void 0===r?void 0:r.getCoordinates().length)&&this.treeService.placeholder$.next(!1)},e.prototype.dragoverHandler=function(e){var t,r;if(!0!==this.globalEventsService.scrolling){if(void 0===this.branch)throw new Error("Can't get current branch during dragover event");var n=this.dragStateService.getData();if(void 0!==n){var o=n.branch;if(o!==this.branch&&!this.branch.getAncestors().includes(o)){var i,a,s=e.currentTarget;a=void 0===(null===(t=this.innerBranch)||void 0===t?void 0:t.dropZoneInside)?i=s.offsetHeight/2-6:2*(i=s.offsetHeight/3-3);var l,c=this.branch.getParent(),p=!0;null!==(null==c?void 0:c.data)&&(l=null==c?void 0:c.data,p=d(this.treeService.treeOptions,l));var u=this.dropZoneService.getActiveDropZone();if(e.offsetY<i&&void 0!==this.dropZoneAbove&&(null===u||!h.dropZoneLocationsAreEqual(u,this.dropZoneAbove))&&p){if(null==this.branch.getIndex())throw new Error("can't get branch index");this.dropZoneService.showDropZoneFamily(this.dropZoneAbove,{activateLowestInsteadOfFounder:!0})}else if(e.offsetY<a&&void 0!==(null===(r=this.innerBranch)||void 0===r?void 0:r.dropZoneInside)&&(null===u||!h.dropZoneLocationsAreEqual(u,this.innerBranch.dropZoneInside)))this.dropZoneService.showDropZoneFamily(this.innerBranch.dropZoneInside);else if(e.offsetY>=a&&void 0!==this.dropZoneBelow&&(null===u||!h.dropZoneLocationsAreEqual(u,this.dropZoneBelow))&&0===this.branch.getChildren().length&&p){if(null==this.branch.getIndex())throw new Error("can't get branch index");this.dropZoneService.showDropZoneFamily(this.dropZoneBelow)}}}}},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(){this.addDropZoneAbove(),this.addDropZoneBelow()},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 h(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[]),n),this.dropZoneService.addDropZone(this.dropZoneAbove)},e.prototype.addDropZoneBelow=function(){var e;if(void 0===this.branch)throw new Error("failed to register drop zone below");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1];this.dropZoneBelow=new h(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[]),n+1),this.dropZoneService.addDropZone(this.dropZoneBelow)},e.prototype.updateDropZones=function(){var e;this.currentBranchCoordinates=null===(e=this.branch)||void 0===e?void 0:e.getCoordinates(),this.updateDropZoneAbove(),this.updateDropZoneBelow(),this.updateDropZoneInside(),this.setDropZoneHosts()},e.prototype.updateDropZoneAbove=function(){var e;if(void 0===this.branch||void 0===this.dropZoneAbove)throw new Error("failed to update drop zone above");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1],o=this.dropZoneAbove.getLocation();o.setParentCoordinates(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[])),o.setInsertIndex(n)},e.prototype.updateDropZoneBelow=function(){var e;if(void 0===this.branch||void 0===this.dropZoneBelow)throw new Error("failed to update drop zone below");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1],o=this.dropZoneBelow.getLocation();o.setParentCoordinates(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[])),o.setInsertIndex(n+1)},e.prototype.updateDropZoneInside=function(){var e;if(void 0!==(null===(e=this.innerBranch)||void 0===e?void 0:e.dropZoneInside)){if(void 0===this.branch)throw new Error("failed to update drop zone inside");this.innerBranch.dropZoneInside.getLocation().setParentCoordinates(s(this.branch.getCoordinates()))}},e.prototype.setDropZoneHosts=function(){if(void 0===this.dropZoneAbove||void 0===this.dropZoneBelow)throw new Error("could not set drop zone hosts");this.dropZoneAbove.setHost(this.parentHost),this.dropZoneBelow.setHost(this.parentHost)},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}();O.ɵfac=function(e){return new(e||O)(t.ɵɵdirectiveInject(w),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(p),t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(H),t.ɵɵdirectiveInject(C),t.ɵɵdirectiveInject(t.NgZone))},O.ɵcmp=t.ɵɵdefineComponent({type:O,selectors:[["limble-tree-node"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(D,1,t.ViewContainerRef),t.ɵɵviewQuery(S,1,t.ElementRef),t.ɵɵviewQuery(I,1,t.ElementRef),t.ɵɵviewQuery(x,1,b)),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),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.innerBranch=n.first)}},inputs:{branch:"branch",parentHost:"parentHost"},decls:9,vars:4,consts:[[3,"dropZone",4,"ngIf"],[1,"limble-parent-container",3,"dragstart","dragend"],["draggableDiv",""],[3,"dragoverEventThrottle","dragoverNoChangeDetect"],["nodeHostContainer",""],["nodeHost",""],[3,"branch",4,"ngIf"],[3,"dropZone"],[3,"branch"],["innerBranch",""]],template:function(e,r){1&e&&(t.ɵɵtemplate(0,E,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,F,0,0,"ng-template",null,5,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵtemplate(7,M,2,1,"limble-tree-branch",6),t.ɵɵelementEnd(),t.ɵɵtemplate(8,A,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(O,[{type:t.Component,args:[{selector:"limble-tree-node",templateUrl:"./limble-tree-node.component.html",styleUrls:["./limble-tree-node.component.scss"]}]}],(function(){return[{type:w},{type:t.ChangeDetectorRef},{type:p},{type:v},{type:H},{type:C},{type:t.NgZone}]}),{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}]}],parentHost:[{type:t.Input}],innerBranch:[{type:t.ViewChild,args:["innerBranch",{read:b}]}]});var H=function(){function e(e,t,o){var i=this;this.componentCreatorService=e,this.dropZoneService=t,this.dragStateService=o,this.changes$=new r.Subject,this.drops$=new r.Subject,this.treeModel=new f(null),this.placeholder=!1,this.captured=!1,this.cleanupSignal$=new r.Subject,this.cleanupSignal$.pipe(n.debounceTime(5)).subscribe((function(){i.cleanup()})),this.synchronizer=!1,this.placeholder$=new r.BehaviorSubject(!1),this.placeholder$.subscribe((function(e){i.placeholder=e}))}return e.prototype.drop=function(e,t){var r,n=e.getParent();if(null===n)throw new Error("can't drop root of tree");var o,i,a=e.getIndex();if(null==a)throw new Error("Cannot move the hidden root node");if(!0===this.placeholder?(o=[],i=0):i=(o=s(t)).pop(),void 0===i)throw new Error("target coordinates are empty");var d=this.treeModel.getDescendant(o);if(void 0===d)throw new Error("could not get to target");var c=this.dropZoneService.getDropZone(t),h=null==c?void 0:c.getLocation().insertIndex,p=null==c?void 0:c.getHost(),u=null===(r=this.dragStateService.getData())||void 0===r?void 0:r.parentContainer;if(!0===this.placeholder&&this.placeholder$.next(!1),d.insertChild(e,i),void 0===p||void 0===u||void 0===h)return console.warn("Could not perform a precise update. Re-rendering the entire tree instead"),this.render(),void this.changes$.next(null);var v=u.length,f=this.componentCreatorService.appendComponent(O,p,i);f.instance.branch=e,f.instance.parentHost=p,h<a&&u.length>v&&l(n.getCoordinates(),o)?u.remove(a+1):u.remove(a),this.rebuildTreeData(),this.drops$.next({target:e.data,oldParent:n.data,oldIndex:a,newParent:d.data,newIndex:i}),this.cleanupSignal$.next(null)},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=s(this.uncutData);this.synchronizer=!1,this.render()},e.prototype.cleanup=function(){var e;this.rebuildTreeData(),0===(null===(e=this.treeData)||void 0===e?void 0:e.length)?this.render():(this.changes$.next(null),this.dropZoneService.update())},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$.next(!1),this.treeModel=new f(null),0===this.treeData.length)this.placeholder$.next(!0);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()),h=c.next();!h.done;h=c.next()){d=h.value;var p=this.componentCreatorService.appendComponent(O,this.host);p.instance.branch=d,p.instance.parentHost=this.host}}catch(e){r={error:e}}finally{try{h&&!h.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}}this.synchronizer=!0,setTimeout((function(){if(void 0===o.treeOptions)throw new Error("TreeModel not initialized");o.changes$.next(null),!1!==o.synchronizer&&(o.synchronizer=!1,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);var h=this.componentCreatorService.appendComponent(O,e);h.instance.branch=c,h.instance.parentHost=e}}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.rebuildTreeData=function(){var e,t;if(void 0===this.uncutData||void 0===this.treeData||void 0===this.treeOptions)throw new Error("Tree data not initialized");this.uncutData.length=0;try{for(var r=i(this.treeModel.getChildren()),n=r.next();!n.done;n=r.next()){var o=n.value;this.uncutData.push(this.rebuildBranch(o))}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}if(!0===this.treeOptions.listMode){var a=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(a)&&(a=0);var l=a+this.treeOptions.itemsPerPage;this.treeData=this.uncutData.slice(a,l)}else this.treeData=s(this.uncutData)},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}();H.ɵfac=function(e){return new(e||H)(t.ɵɵinject(w),t.ɵɵinject(v),t.ɵɵinject(p))},H.ɵprov=t.ɵɵdefineInjectable({token:H,factory:H.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(H,[{type:t.Injectable}],(function(){return[{type:w},{type:v},{type:p}]}),null);var N=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}();N.ɵfac=function(e){return new(e||N)(t.ɵɵdirectiveInject(t.NgZone),t.ɵɵdirectiveInject(t.ElementRef))},N.ɵdir=t.ɵɵdefineDirective({type:N,selectors:[["","dragoverNoChangeDetect",""]],inputs:{dragoverEventThrottle:"dragoverEventThrottle"},outputs:{dragoverNoChangeDetect:"dragoverNoChangeDetect"}}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(N,[{type:t.Directive,args:[{selector:"[dragoverNoChangeDetect]"}]}],(function(){return[{type:t.NgZone},{type:t.ElementRef}]}),{dragoverEventThrottle:[{type:t.Input}],dragoverNoChangeDetect:[{type:t.Output}]});var R=function(){function e(e,r){this.ngZone=e,this.el=r,this.dragleaveNoChangeDetect=new t.EventEmitter}return e.prototype.ngOnInit=function(){var e=this;this.ngZone.runOutsideAngular((function(){e.eventSubscription=r.fromEvent(e.el.nativeElement,"dragleave").subscribe((function(t){e.dragleaveNoChangeDetect.emit(t)}))}))},e.prototype.ngOnDestroy=function(){void 0!==this.eventSubscription&&this.eventSubscription.unsubscribe()},e}();R.ɵfac=function(e){return new(e||R)(t.ɵɵdirectiveInject(t.NgZone),t.ɵɵdirectiveInject(t.ElementRef))},R.ɵdir=t.ɵɵdefineDirective({type:R,selectors:[["","dragleaveNoChangeDetect",""]],outputs:{dragleaveNoChangeDetect:"dragleaveNoChangeDetect"}}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(R,[{type:t.Directive,args:[{selector:"[dragleaveNoChangeDetect]"}]}],(function(){return[{type:t.NgZone},{type:t.ElementRef}]}),{dragleaveNoChangeDetect:[{type:t.Output}]});var P=function(e,t){return{active:e,related:t}};function j(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,P,o.active,!o.active))}}var B=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;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"checkRendered":break;default:throw new Error("unhandled comm message")}e.changeDetectorRef.detectChanges()}))},e.prototype.ngOnDestroy=function(){void 0!==this.commSubscription&&this.commSubscription.unsubscribe()},e}();B.ɵfac=function(e){return new(e||B)(t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},B.ɵcmp=t.ɵɵdefineComponent({type:B,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,j,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(B,[{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 z=function(){function e(e,t,r){var n=this;this.dropZoneService=e,this.changeDetectorRef=t,this.treeService=r,this.placeholderSubscription=this.treeService.placeholder$.subscribe((function(e){void 0!==n.dropZone&&(n.dropZoneService.removeDropZone(n.dropZone),!0===e&&(n.dropZoneService.addDropZone(n.dropZone),n.dropZone.setHost(n.treeService.host)))}))}return e.prototype.ngOnInit=function(){this.dropZone=new h([],0),this.dropZoneService.addDropZone(this.dropZone)},e.prototype.ngAfterViewInit=function(){if(void 0===this.dropZone)throw new Error("placeholder drop zone is not defined");this.dropZone.setHost(this.treeService.host),this.changeDetectorRef.detectChanges()},e.prototype.dragoverHandler=function(){void 0!==this.dropZone&&this.dropZoneService.showDropZoneFamily(this.dropZone)},e.prototype.ngOnDestroy=function(){if(this.placeholderSubscription.unsubscribe(),void 0===this.dropZone)throw new Error("could not remove placeholder drop zone");this.dropZoneService.removeDropZone(this.dropZone)},e}();z.ɵfac=function(e){return new(e||z)(t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(H))},z.ɵcmp=t.ɵɵdefineComponent({type:z,selectors:[["limble-tree-placeholder"]],decls:2,vars:1,consts:[[3,"dropZone"],[1,"placeholder",3,"dragoverNoChangeDetect"]],template:function(e,r){1&e&&(t.ɵɵelement(0,"drop-zone",0),t.ɵɵelementStart(1,"div",1),t.ɵɵlistener("dragoverNoChangeDetect",(function(){return r.dragoverHandler()})),t.ɵɵelementEnd()),2&e&&t.ɵɵproperty("dropZone",r.dropZone)},directives:[B,N],styles:[".placeholder[_ngcontent-%COMP%]{width:100%;height:20px}"],changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(z,[{type:t.Component,args:[{selector:"limble-tree-placeholder",templateUrl:"./limble-tree-placeholder.component.html",styleUrls:["./limble-tree-placeholder.component.scss"],changeDetection:t.ChangeDetectionStrategy.OnPush}]}],(function(){return[{type:v},{type:t.ChangeDetectorRef},{type:H}]}),null);var T=["host"];function $(e,r){1&e&&t.ɵɵelement(0,"limble-tree-placeholder")}function L(e,t){}var V=function(){function e(e,r,n,o,i){var a=this;this.treeService=e,this.dropZoneService=r,this.dragStateService=n,this.globalEventsService=o,this.changeDetectorRef=i,this.treeChange=new t.EventEmitter,this.treeDrop=new t.EventEmitter,this.changesSubscription=this.treeService.changes$.subscribe((function(){a.treeChange.emit()})),this.dropSubscription=this.treeService.drops$.subscribe((function(e){a.treeDrop.emit(e)})),this.placeholder=!1,this.treeService.placeholder$.subscribe((function(e){a.placeholder=e,t.NgZone.isInAngularZone()||a.changeDetectorRef.detectChanges()}))}return e.prototype.ngAfterViewInit=function(){var e;!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.clearVisibleZones(),this.changeDetectorRef.detectChanges())},e.prototype.dropHandler=function(e){var t=this;if(e.stopPropagation(),"droppable"===this.dragStateService.getState()){var r=this.dragStateService.capture();if(void 0===r)throw new Error("failed to get current branch in dragendHandler");var o=this.dropZoneService.getActiveDropZone();if(null===o)throw new Error("failed to get active drop zone at drop handler");this.treeService.captured=!0,this.dragStateService.state$.pipe(n.first((function(e){return"idle"===e}))).subscribe((function(){t.treeService.captured=!1})),this.dropZoneService.clearVisibleZones(),this.treeService.drop(r,o.getFullInsertCoordinates())}},e.prototype.ngOnDestroy=function(){this.changesSubscription.unsubscribe(),this.dropSubscription.unsubscribe()},e}();V.ɵfac=function(e){return new(e||V)(t.ɵɵdirectiveInject(H),t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(p),t.ɵɵdirectiveInject(C),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},V.ɵcmp=t.ɵɵdefineComponent({type:V,selectors:[["limble-tree-root"]],viewQuery:function(e,r){if(1&e&&t.ɵɵviewQuery(T,1,t.ViewContainerRef),2&e){var n;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first)}},inputs:{data:"data",options:"options",itemsPerPage:"itemsPerPage",page:"page"},outputs:{treeChange:"treeChange",treeDrop:"treeDrop"},features:[t.ɵɵProvidersFeature([H,v]),t.ɵɵNgOnChangesFeature],decls:4,vars:1,consts:[[3,"dragoverNoChangeDetect","dragleaveNoChangeDetect","drop"],[4,"ngIf"],["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,$,1,0,"limble-tree-placeholder",1),t.ɵɵtemplate(2,L,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd()),2&e&&(t.ɵɵadvance(1),t.ɵɵproperty("ngIf",!0===r.placeholder))},directives:[N,R,o.NgIf,z],styles:[""]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(V,[{type:t.Component,args:[{selector:"limble-tree-root",templateUrl:"./limble-tree-root.component.html",styleUrls:["./limble-tree-root.component.scss"],providers:[H,v]}]}],(function(){return[{type:H},{type:v},{type:p},{type:C},{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}]}],treeChange:[{type:t.Output}],treeDrop:[{type:t.Output}]});var k=function(){};k.ɵfac=function(e){return new(e||k)},k.ɵmod=t.ɵɵdefineNgModule({type:k}),k.ɵinj=t.ɵɵdefineInjector({providers:[w,p,C],imports:[[o.CommonModule]]}),("undefined"==typeof ngJitMode||ngJitMode)&&t.ɵɵsetNgModuleScope(k,{declarations:[b,B,O,V,z,N,R],imports:[o.CommonModule],exports:[V]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(k,[{type:t.NgModule,args:[{declarations:[b,B,O,V,z,N,R],imports:[o.CommonModule],exports:[V],providers:[w,p,C]}]}],null,null),t.ɵɵsetComponentScope(b,[o.NgIf,B],[]),t.ɵɵsetComponentScope(O,[o.NgIf,B,N,b],[]),e.LimbleTreeModule=k,e.LimbleTreeRootComponent=V,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],h=d[1],p=t[c];if(h instanceof Array&&p instanceof Array){if(!l(h,p))return!1}else if(h!==p)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.prototype.setParentCoordinates=function(e){this.parentCoordinates=e},e.prototype.setInsertIndex=function(e){this.insertIndex=e},e}(),h=function(){function e(e,t){this.location=new c(e,t),this.rendered=!1,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.isRendered=function(e){return void 0===e&&(e=void 0),void 0!==e&&(this.rendered=e,void 0!==this.commChannel&&this.commChannel.next("checkRendered"),!1===this.rendered&&this.isVisible(!1)),this.rendered},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.prototype.setHost=function(e){return this.host=e,this.host},e.prototype.getHost=function(){return this.host},e}(),p=function(){function e(){this.state="idle",this.state$=new r.BehaviorSubject(this.state)}return e.prototype.dragging=function(e,t){this._tempData={branch:e,parentContainer:t},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(){var e;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),null===(e=this._tempData)||void 0===e?void 0:e.branch},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}p.ɵfac=function(e){return new(e||p)},p.ɵprov=t.ɵɵdefineInjectable({token:p,factory:p.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(p,[{type:t.Injectable}],(function(){return[]}),null);var v=function(){function e(e){this.dragStateService=e,this.dropZoneArchive=new Set,this.dropZoneInventory=[],this.dropZoneFamilies=[],this.visibleFamily=null,this.activeDropZone=null,this.tempFamilies=[],this.setActiveDropZone(null)}return e.prototype.addDropZone=function(e){this.dropZoneArchive.add(e)},e.prototype.clearVisibleZones=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.setActiveDropZone(null)},e.prototype.getActiveDropZone=function(){return this.activeDropZone},e.prototype.getDropZone=function(e){var t=s(e);t.pop();var r=e[e.length-1],n=new c(t,r);return this.dropZoneInventory.find((function(e){return h.dropZoneLocationsAreEqual(e,n)}))},e.prototype.init=function(e,t){this.tree=e,this.treeOptions=t,this.update()},e.prototype.removeDropZone=function(e){this.dropZoneArchive.delete(e)},e.prototype.reset=function(){this.clearVisibleZones(),this.dropZoneFamilies.length=0,this.dropZoneInventory.length=0},e.prototype.restart=function(){this.reset(),this.dropZoneArchive.clear()},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||!h.dropZoneLocationsAreEqual(this.activeDropZone,e)){null===this.visibleFamily&&null===this.activeDropZone||this.clearVisibleZones();var p=this.dropZoneInventory.find((function(t){return h.dropZoneLocationsAreEqual(t,e)}));if(void 0===p)throw new Error("Could not find drop zone to show. location: "+JSON.stringify(e.getLocation()));var v=p.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 h.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)),Z=w.next();!Z.done;Z=w.next()){(F=Z.value).setFamily(b),F!==v.founder&&(null===this.activeDropZone?this.showDropZone(F,!0):this.showDropZone(F))}}catch(e){r={error:e}}finally{try{Z&&!Z.done&&(n=w.return)&&n.call(w)}finally{if(r)throw r.error}}try{for(var C=i(m.members),D=C.next();!D.done;D=C.next()){(F=D.value).setFamily(b),F.getLocation().parentCoordinates.length<y.getLocation().parentCoordinates.length&&(b.members.push(F),this.showDropZone(F))}}catch(e){o={error:e}}finally{try{D&&!D.done&&(a=C.return)&&a.call(C)}finally{if(o)throw o.error}}this.tempFamilies=[v,m];var S=this.dropZoneFamilies.indexOf(v);this.dropZoneFamilies.splice(S,1);var I=this.dropZoneFamilies.indexOf(m);this.dropZoneFamilies.splice(I,1),this.dropZoneFamilies.push(b),this.visibleFamily=b}else{if(void 0===v)throw new Error("No family");if(this.visibleFamily=v,this.showDropZone(v.founder,!0),v.members.length>1)try{for(var x=i(v.members.sort(u)),E=x.next();!E.done;E=x.next()){var F;(F=E.value)!==v.founder&&(null===this.activeDropZone?this.showDropZone(F,!0):this.showDropZone(F))}}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&&this.visibleFamily.members.length>1){var M=s(this.visibleFamily.members).sort(u).pop();if(void 0===M)throw new Error("Could not get lowest member");this.swapActiveDropZone(M)}}},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.update=function(){this.reset(),this.buildInventory(),this.assignFamilies()},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})),h=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]++}p.dropZoneFamilies.push(t)},p=this;try{for(var u=i(c),v=u.next();!v.done;v=u.next()){h(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),Z=w.next();!Z.done;Z=w.next()){var C=Z.value;b+=JSON.stringify(C.getLocation())+", "}}catch(e){o={error:e}}finally{try{Z&&!Z.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.buildInventory=function(){var e,t,r=[];try{for(var n=i(this.dropZoneArchive),o=n.next();!o.done;o=n.next()){var a=o.value,s=a.getFullInsertCoordinates().join(",");r.includes(s)?a.isRendered(!1):(this.dropZoneInventory.push(a),r.push(s),a.isRendered(!0))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}},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");var o=t.branch;return!!this.treeOptions.allowDrop(o.data,r.data,n)},e}();v.ɵfac=function(e){return new(e||v)(t.ɵɵinject(p))},v.ɵprov=t.ɵɵdefineInjectable({token:v,factory:v.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(v,[{type:t.Injectable}],(function(){return[{type:p}]}),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=["children"];function y(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",3),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneInside)}}function m(e,t){}var b=function(){function e(e,t,r){var n;this.treeService=e,this.changeDetectorRef=t,this.dropZoneService=r,this.indent=null===(n=this.treeService.treeOptions)||void 0===n?void 0:n.indent,this.renderDropZoneInside=!1}return e.prototype.ngOnInit=function(){var e=this;if(this.addDropZoneInside(),void 0===this.dropZoneInside)throw new Error("drop zone inside is not defined");this.dropZoneInside.getCommChannel().pipe(n.filter((function(e){return"checkRendered"===e}))).subscribe((function(){if(void 0===e.dropZoneInside||void 0===e.branch)throw new Error("Zones not registered");d(e.treeService.treeOptions,e.branch.data)&&(e.renderDropZoneInside=e.dropZoneInside.isRendered())}))},e.prototype.ngAfterViewInit=function(){this.reRender(),this.setDropZoneHost(),this.changeDetectorRef.detectChanges()},e.prototype.ngOnDestroy=function(){void 0!==this.dropZoneInside&&this.dropZoneService.removeDropZone(this.dropZoneInside),this.treeService.cleanupSignal$.next(!0)},e.prototype.addDropZoneInside=function(){if(void 0===this.branch)throw new Error("failed to register drop zone inside");this.dropZoneInside=new h(s(this.branch.getCoordinates()),0),this.dropZoneService.addDropZone(this.dropZoneInside)},e.prototype.reRender=function(){if(void 0===this.children||void 0===this.branch)throw new Error("Failed to render limble tree branch");this.treeService.renderBranch(this.children,this.branch)},e.prototype.setDropZoneHost=function(){if(void 0===this.children||void 0===this.dropZoneInside)throw new Error("Failed to add drop zone host");this.dropZoneInside.setHost(this.children)},e}();b.ɵfac=function(e){return new(e||b)(t.ɵɵdirectiveInject(P),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(v))},b.ɵcmp=t.ɵɵdefineComponent({type:b,selectors:[["limble-tree-branch"]],viewQuery:function(e,r){if(1&e&&t.ɵɵviewQuery(g,1,t.ViewContainerRef),2&e){var n;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.children=n.first)}},inputs:{branch:"branch"},decls:5,vars:4,consts:[[3,"dropZone",4,"ngIf"],[1,"limble-child-nodes",3,"hidden"],["children",""],[3,"dropZone"]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div"),t.ɵɵtemplate(1,y,1,1,"drop-zone",0),t.ɵɵelementStart(2,"span",1),t.ɵɵtemplate(3,m,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))},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:P},{type:t.ChangeDetectorRef},{type:v}]}),{branch:[{type:t.Input}],children:[{type:t.ViewChild,args:["children",{read:t.ViewContainerRef}]}]});var w=function(){function e(e){this.factoryResolver=e,this.factoryResolver=e}return e.prototype.appendComponent=function(e,t,r){void 0===r&&(r=void 0);var n=this.factoryResolver.resolveComponentFactory(e);return t.createComponent(n,r)},e}();function Z(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),h=c.next();!h.done;h=c.next()){var p=h.value;if(l(p))return p}}catch(e){t={error:e}}finally{try{h&&!h.done&&(r=c.return)&&r.call(c)}finally{if(t)throw t.error}}return null!==(n=document.scrollingElement)&&void 0!==n?n:document.documentElement}w.ɵfac=function(e){return new(e||w)(t.ɵɵinject(t.ComponentFactoryResolver))},w.ɵprov=t.ɵɵdefineInjectable({token:w,factory:w.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(w,[{type:t.Injectable}],(function(){return[{type:t.ComponentFactoryResolver}]}),null);var C=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=Z(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 h=d.getBoundingClientRect(),p=Z(d);n=e.clientX-(h.left+p.scrollLeft),c=e.clientY-(h.top+p.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,h=d.scrollHeight-t,p=d.scrollTop;if(a&&p>0){n=p-75*((o-c)/r)}else{if(!s||!(p<h))return;n=p+75*((c-i)/r)}(n=Math.max(0,Math.min(h,n)))!==p&&(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}();C.ɵfac=function(e){return new(e||C)(t.ɵɵinject(t.NgZone))},C.ɵprov=t.ɵɵdefineInjectable({token:C,factory:C.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(C,[{type:t.Injectable}],(function(){return[{type:t.NgZone}]}),null);var D=["nodeHost"],S=["draggableDiv"],I=["nodeHostContainer"],x=["innerBranch"];function E(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",7),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneAbove)}}function F(e,t){}function M(e,r){if(1&e&&t.ɵɵelement(0,"limble-tree-branch",8,9),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("branch",n.branch)}}function A(e,r){if(1&e&&t.ɵɵelement(0,"drop-zone",7),2&e){var n=t.ɵɵnextContext();t.ɵɵproperty("dropZone",n.dropZoneBelow)}}var O=function(){function e(e,t,r,o,i,a,s){var l=this;this.componentCreatorService=e,this.changeDetectorRef=t,this.dragStateService=r,this.dropZoneService=o,this.treeService=i,this.globalEventsService=a,this.ngZone=s,void 0!==this.treeService.treeOptions&&!0!==this.treeService.treeOptions.listMode?this.renderInnerBranch=!0:this.renderInnerBranch=!1,this.renderDropZoneBelow=!1,this.renderDropZoneAbove=!1,this.treeChangeSubscription=this.treeService.changes$.pipe(n.skip(1)).subscribe((function(){l.treeChangeHandler()}))}return e.prototype.treeChangeHandler=function(){void 0===this.branch||void 0===this.currentBranchCoordinates||l(this.branch.getCoordinates(),this.currentBranchCoordinates)||this.updateDropZones()},e.prototype.ngOnInit=function(){var e,t,o,i=this;if(!1!==(null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.allowDragging)){var a=null===(t=this.branch)||void 0===t?void 0:t.getParent();if(null!==(null==a?void 0:a.data)){var s=null==a?void 0:a.data;if(!d(this.treeService.treeOptions,s))return void(this.renderInnerBranch=!1)}this.registerDropZones(),this.currentBranchCoordinates=null===(o=this.branch)||void 0===o?void 0:o.getCoordinates(),this.ngZone.runOutsideAngular((function(){if(void 0===i.dropZoneAbove||void 0===i.dropZoneBelow)throw new Error("Zones not registered");r.merge(i.dropZoneAbove.getCommChannel(),i.dropZoneBelow.getCommChannel()).pipe(n.filter((function(e){return"checkRendered"===e}))).subscribe((function(){if(void 0===i.dropZoneAbove||void 0===i.dropZoneBelow||void 0===i.branch)throw new Error("Zones not registered");i.renderDropZoneAbove=i.dropZoneAbove.isRendered(),i.renderDropZoneBelow=i.dropZoneBelow.isRendered()}))}))}},e.prototype.ngAfterViewInit=function(){this.renderNode(),this.setDropZoneHosts(),this.checkForHandle(),this.changeDetectorRef.detectChanges()},e.prototype.ngOnDestroy=function(){this.treeChangeSubscription.unsubscribe(),void 0!==this.dropZoneAbove&&this.dropZoneService.removeDropZone(this.dropZoneAbove),void 0!==this.dropZoneBelow&&this.dropZoneService.removeDropZone(this.dropZoneBelow),this.treeService.cleanupSignal$.next(!0)},e.prototype.dragstartHandler=function(e){var t,o=this;if(e.stopPropagation(),null===e.dataTransfer||void 0===this.branch||void 0===this.parentHost)throw new Error("failed to run dragstartHandler");var i=e.target;if("LIMBLE-TREE-NODE"===(null===(t=i.parentElement)||void 0===t?void 0:t.tagName)){e.dataTransfer.effectAllowed="move",this.dragStateService.dragging(this.branch,this.parentHost);var a=i.closest("limble-tree-root");if(null===a)throw new Error("could not get root of tree");this.ngZone.runOutsideAngular((function(){setTimeout((function(){var e,t;i.classList.add("dragging"),1===(null===(e=o.treeService.treeData)||void 0===e?void 0:e.length)&&1===(null===(t=o.branch)||void 0===t?void 0:t.getCoordinates().length)&&o.treeService.placeholder$.next(!0)}));var e=r.fromEvent(a,"dragover").pipe(n.first()).subscribe((function(e){if(e.stopPropagation(),void 0===o.branch)throw new Error("Could not show surrounding drop zones");var t,r=o.branch.getParent(),n=!0;null!==(null==r?void 0:r.data)&&(t=null==r?void 0:r.data,n=d(o.treeService.treeOptions,t)),void 0!==o.dropZoneAbove&&n&&o.dropZoneService.showDropZoneFamily(o.dropZoneAbove,{joinFamilies:!0})}));setTimeout((function(){e.closed||e.unsubscribe()}),500)}))}else e.preventDefault()},e.prototype.dragendHandler=function(e){var t,r;if(null==e||e.stopPropagation(),void 0===this.draggableDiv)throw new Error("could not get draggable div");if(this.draggableDiv.nativeElement.classList.remove("dragging"),"captured"===this.dragStateService.getState()){if(!1===this.treeService.captured){if(void 0===this.branch)throw new Error("could not get branch in dragendHandler");this.treeService.cleanupSignal$.next(!0),this.treeService.captured=!1}this.dragStateService.release()}else this.dragStateService.release(),this.dropZoneService.clearVisibleZones(),this.dropZoneService.restoreFamilies(),1===(null===(t=this.treeService.treeData)||void 0===t?void 0:t.length)&&1===(null===(r=this.branch)||void 0===r?void 0:r.getCoordinates().length)&&this.treeService.placeholder$.next(!1)},e.prototype.dragoverHandler=function(e){var t,r;if(!0!==this.globalEventsService.scrolling){if(void 0===this.branch)throw new Error("Can't get current branch during dragover event");var n=this.dragStateService.getData();if(void 0!==n){var o=n.branch;if(o!==this.branch&&!this.branch.getAncestors().includes(o)){var i,a,s=e.currentTarget;a=void 0===(null===(t=this.innerBranch)||void 0===t?void 0:t.dropZoneInside)?i=s.offsetHeight/2-6:2*(i=s.offsetHeight/3-3);var l,c=this.branch.getParent(),p=!0;null!==(null==c?void 0:c.data)&&(l=null==c?void 0:c.data,p=d(this.treeService.treeOptions,l));var u=this.dropZoneService.getActiveDropZone();if(e.offsetY<i&&void 0!==this.dropZoneAbove&&(null===u||!h.dropZoneLocationsAreEqual(u,this.dropZoneAbove))&&p){if(null==this.branch.getIndex())throw new Error("can't get branch index");this.dropZoneService.showDropZoneFamily(this.dropZoneAbove,{activateLowestInsteadOfFounder:!0})}else if(e.offsetY<a&&void 0!==(null===(r=this.innerBranch)||void 0===r?void 0:r.dropZoneInside)&&(null===u||!h.dropZoneLocationsAreEqual(u,this.innerBranch.dropZoneInside)))this.dropZoneService.showDropZoneFamily(this.innerBranch.dropZoneInside);else if(e.offsetY>=a&&void 0!==this.dropZoneBelow&&(null===u||!h.dropZoneLocationsAreEqual(u,this.dropZoneBelow))&&0===this.branch.getChildren().length&&p){if(null==this.branch.getIndex())throw new Error("can't get branch index");this.dropZoneService.showDropZoneFamily(this.dropZoneBelow)}}}}},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(){this.addDropZoneAbove(),this.addDropZoneBelow()},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 h(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[]),n),this.dropZoneService.addDropZone(this.dropZoneAbove)},e.prototype.addDropZoneBelow=function(){var e;if(void 0===this.branch)throw new Error("failed to register drop zone below");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1];this.dropZoneBelow=new h(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[]),n+1),this.dropZoneService.addDropZone(this.dropZoneBelow)},e.prototype.updateDropZones=function(){var e;this.currentBranchCoordinates=null===(e=this.branch)||void 0===e?void 0:e.getCoordinates(),this.updateDropZoneAbove(),this.updateDropZoneBelow(),this.updateDropZoneInside(),this.setDropZoneHosts()},e.prototype.updateDropZoneAbove=function(){var e;if(void 0===this.branch||void 0===this.dropZoneAbove)throw new Error("failed to update drop zone above");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1],o=this.dropZoneAbove.getLocation();o.setParentCoordinates(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[])),o.setInsertIndex(n)},e.prototype.updateDropZoneBelow=function(){var e;if(void 0===this.branch||void 0===this.dropZoneBelow)throw new Error("failed to update drop zone below");var t=this.branch.getParent(),r=this.branch.getCoordinates(),n=r[r.length-1],o=this.dropZoneBelow.getLocation();o.setParentCoordinates(s(null!==(e=null==t?void 0:t.getCoordinates())&&void 0!==e?e:[])),o.setInsertIndex(n+1)},e.prototype.updateDropZoneInside=function(){var e;if(void 0!==(null===(e=this.innerBranch)||void 0===e?void 0:e.dropZoneInside)){if(void 0===this.branch)throw new Error("failed to update drop zone inside");this.innerBranch.dropZoneInside.getLocation().setParentCoordinates(s(this.branch.getCoordinates()))}},e.prototype.setDropZoneHosts=function(){if(void 0===this.dropZoneAbove||void 0===this.dropZoneBelow)throw new Error("could not set drop zone hosts");this.dropZoneAbove.setHost(this.parentHost),this.dropZoneBelow.setHost(this.parentHost)},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}();O.ɵfac=function(e){return new(e||O)(t.ɵɵdirectiveInject(w),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(p),t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(P),t.ɵɵdirectiveInject(C),t.ɵɵdirectiveInject(t.NgZone))},O.ɵcmp=t.ɵɵdefineComponent({type:O,selectors:[["limble-tree-node"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(D,1,t.ViewContainerRef),t.ɵɵviewQuery(S,1,t.ElementRef),t.ɵɵviewQuery(I,1,t.ElementRef),t.ɵɵviewQuery(x,1,b)),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),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.innerBranch=n.first)}},inputs:{branch:"branch",parentHost:"parentHost"},decls:9,vars:4,consts:[[3,"dropZone",4,"ngIf"],[1,"limble-parent-container",3,"dragstart","dragend"],["draggableDiv",""],[3,"dragoverEventThrottle","dragoverNoChangeDetect"],["nodeHostContainer",""],["nodeHost",""],[3,"branch",4,"ngIf"],[3,"dropZone"],[3,"branch"],["innerBranch",""]],template:function(e,r){1&e&&(t.ɵɵtemplate(0,E,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,F,0,0,"ng-template",null,5,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵtemplate(7,M,2,1,"limble-tree-branch",6),t.ɵɵelementEnd(),t.ɵɵtemplate(8,A,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(O,[{type:t.Component,args:[{selector:"limble-tree-node",templateUrl:"./limble-tree-node.component.html",styleUrls:["./limble-tree-node.component.scss"]}]}],(function(){return[{type:w},{type:t.ChangeDetectorRef},{type:p},{type:v},{type:P},{type:C},{type:t.NgZone}]}),{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}]}],parentHost:[{type:t.Input}],innerBranch:[{type:t.ViewChild,args:["innerBranch",{read:b}]}]});var P=function(){function e(e,t,o){var i=this;this.componentCreatorService=e,this.dropZoneService=t,this.dragStateService=o,this.changes$=new r.Subject,this.drops$=new r.Subject,this.treeModel=new f(null),this.placeholder=!1,this.captured=!1,this.cleanupSignal$=new r.Subject;var a=!1;this.cleanupSignal$.pipe(n.tap((function(e){a=e})),n.debounceTime(5)).subscribe((function(){i.cleanup(a),a=!1})),this.synchronizer=!1,this.placeholder$=new r.BehaviorSubject(!1),this.placeholder$.subscribe((function(e){i.placeholder=e}))}return e.prototype.drop=function(e,t){var r,n=e.getParent();if(null===n)throw new Error("can't drop root of tree");var o,i,a=e.getIndex();if(null==a)throw new Error("Cannot move the hidden root node");if(!0===this.placeholder?(o=[],i=0):i=(o=s(t)).pop(),void 0===i)throw new Error("target coordinates are empty");var d=this.treeModel.getDescendant(o);if(void 0===d)throw new Error("could not get to target");var c=this.dropZoneService.getDropZone(t),h=null==c?void 0:c.getLocation().insertIndex,p=null==c?void 0:c.getHost(),u=null===(r=this.dragStateService.getData())||void 0===r?void 0:r.parentContainer;if(!0===this.placeholder&&this.placeholder$.next(!1),d.insertChild(e,i),void 0===p||void 0===u||void 0===h)return console.warn("Could not perform a precise update. Re-rendering the entire tree instead"),this.render(),void this.changes$.next(null);var v=u.length,f=this.componentCreatorService.appendComponent(O,p,i);f.instance.branch=e,f.instance.parentHost=p,h<a&&u.length>v&&l(n.getCoordinates(),o)?u.remove(a+1):u.remove(a),this.rebuildTreeData(),this.drops$.next({target:e.data,oldParent:n.data,oldIndex:a,newParent:d.data,newIndex:i}),this.cleanupSignal$.next(!1)},e.prototype.init=function(e,t,r,n,o){if(this.host=e,this.originalData=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.originalData.slice(i,a)}else this.treeData=s(this.originalData);this.synchronizer=!1,this.render()},e.prototype.cleanup=function(e){var t;void 0===e&&(e=!1),e&&this.rebuildTreeData(),0===(null===(t=this.treeData)||void 0===t?void 0:t.length)?this.render():(this.changes$.next(null),this.dropZoneService.update())},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$.next(!1),this.treeModel=new f(null),0===this.treeData.length)this.placeholder$.next(!0);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()),h=c.next();!h.done;h=c.next()){d=h.value;var p=this.componentCreatorService.appendComponent(O,this.host);p.instance.branch=d,p.instance.parentHost=this.host}}catch(e){r={error:e}}finally{try{h&&!h.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}}this.synchronizer=!0,setTimeout((function(){if(void 0===o.treeOptions)throw new Error("TreeModel not initialized");o.changes$.next(null),!1!==o.synchronizer&&(o.synchronizer=!1,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);var h=this.componentCreatorService.appendComponent(O,e);h.instance.branch=c,h.instance.parentHost=e}}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.rebuildTreeData=function(){var e,t,r,n;if(void 0===this.originalData||void 0===this.treeData||void 0===this.treeOptions)throw new Error("Tree data not initialized");this.treeData=[];try{for(var o=i(this.treeModel.getChildren()),a=o.next();!a.done;a=o.next()){var l=a.value;this.treeData.push(this.rebuildBranch(l))}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}if(!0===this.treeOptions.listMode&&this.treeOptions.itemsPerPage<1/0){var d=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);(r=this.originalData).splice.apply(r,s([d,this.treeOptions.itemsPerPage],this.treeData))}else this.originalData.length=0,(n=this.originalData).push.apply(n,s(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}();P.ɵfac=function(e){return new(e||P)(t.ɵɵinject(w),t.ɵɵinject(v),t.ɵɵinject(p))},P.ɵprov=t.ɵɵdefineInjectable({token:P,factory:P.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(P,[{type:t.Injectable}],(function(){return[{type:w},{type:v},{type:p}]}),null);var H=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}();H.ɵfac=function(e){return new(e||H)(t.ɵɵdirectiveInject(t.NgZone),t.ɵɵdirectiveInject(t.ElementRef))},H.ɵdir=t.ɵɵdefineDirective({type:H,selectors:[["","dragoverNoChangeDetect",""]],inputs:{dragoverEventThrottle:"dragoverEventThrottle"},outputs:{dragoverNoChangeDetect:"dragoverNoChangeDetect"}}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(H,[{type:t.Directive,args:[{selector:"[dragoverNoChangeDetect]"}]}],(function(){return[{type:t.NgZone},{type:t.ElementRef}]}),{dragoverEventThrottle:[{type:t.Input}],dragoverNoChangeDetect:[{type:t.Output}]});var R=function(){function e(e,r){this.ngZone=e,this.el=r,this.dragleaveNoChangeDetect=new t.EventEmitter}return e.prototype.ngOnInit=function(){var e=this;this.ngZone.runOutsideAngular((function(){e.eventSubscription=r.fromEvent(e.el.nativeElement,"dragleave").subscribe((function(t){e.dragleaveNoChangeDetect.emit(t)}))}))},e.prototype.ngOnDestroy=function(){void 0!==this.eventSubscription&&this.eventSubscription.unsubscribe()},e}();R.ɵfac=function(e){return new(e||R)(t.ɵɵdirectiveInject(t.NgZone),t.ɵɵdirectiveInject(t.ElementRef))},R.ɵdir=t.ɵɵdefineDirective({type:R,selectors:[["","dragleaveNoChangeDetect",""]],outputs:{dragleaveNoChangeDetect:"dragleaveNoChangeDetect"}}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(R,[{type:t.Directive,args:[{selector:"[dragleaveNoChangeDetect]"}]}],(function(){return[{type:t.NgZone},{type:t.ElementRef}]}),{dragleaveNoChangeDetect:[{type:t.Output}]});var j=function(e,t){return{active:e,related:t}};function N(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,j,o.active,!o.active))}}var B=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;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"checkRendered":break;default:throw new Error("unhandled comm message")}e.changeDetectorRef.detectChanges()}))},e.prototype.ngOnDestroy=function(){void 0!==this.commSubscription&&this.commSubscription.unsubscribe()},e}();B.ɵfac=function(e){return new(e||B)(t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},B.ɵcmp=t.ɵɵdefineComponent({type:B,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,N,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(B,[{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 z=function(){function e(e,t,r){var n=this;this.dropZoneService=e,this.changeDetectorRef=t,this.treeService=r,this.placeholderSubscription=this.treeService.placeholder$.subscribe((function(e){void 0!==n.dropZone&&(n.dropZoneService.removeDropZone(n.dropZone),!0===e&&(n.dropZoneService.addDropZone(n.dropZone),n.dropZone.setHost(n.treeService.host)))}))}return e.prototype.ngOnInit=function(){this.dropZone=new h([],0),this.dropZoneService.addDropZone(this.dropZone)},e.prototype.ngAfterViewInit=function(){if(void 0===this.dropZone)throw new Error("placeholder drop zone is not defined");this.dropZone.setHost(this.treeService.host),this.changeDetectorRef.detectChanges()},e.prototype.dragoverHandler=function(){void 0!==this.dropZone&&this.dropZoneService.showDropZoneFamily(this.dropZone)},e.prototype.ngOnDestroy=function(){if(this.placeholderSubscription.unsubscribe(),void 0===this.dropZone)throw new Error("could not remove placeholder drop zone");this.dropZoneService.removeDropZone(this.dropZone)},e}();z.ɵfac=function(e){return new(e||z)(t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(P))},z.ɵcmp=t.ɵɵdefineComponent({type:z,selectors:[["limble-tree-placeholder"]],decls:2,vars:1,consts:[[3,"dropZone"],[1,"placeholder",3,"dragoverNoChangeDetect"]],template:function(e,r){1&e&&(t.ɵɵelement(0,"drop-zone",0),t.ɵɵelementStart(1,"div",1),t.ɵɵlistener("dragoverNoChangeDetect",(function(){return r.dragoverHandler()})),t.ɵɵelementEnd()),2&e&&t.ɵɵproperty("dropZone",r.dropZone)},directives:[B,H],styles:[".placeholder[_ngcontent-%COMP%]{width:100%;height:20px}"],changeDetection:0}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(z,[{type:t.Component,args:[{selector:"limble-tree-placeholder",templateUrl:"./limble-tree-placeholder.component.html",styleUrls:["./limble-tree-placeholder.component.scss"],changeDetection:t.ChangeDetectionStrategy.OnPush}]}],(function(){return[{type:v},{type:t.ChangeDetectorRef},{type:P}]}),null);var T=["host"];function $(e,r){1&e&&t.ɵɵelement(0,"limble-tree-placeholder")}function L(e,t){}var V=function(){function e(e,r,n,o,i){var a=this;this.treeService=e,this.dropZoneService=r,this.dragStateService=n,this.globalEventsService=o,this.changeDetectorRef=i,this.treeChange=new t.EventEmitter,this.treeDrop=new t.EventEmitter,this.changesSubscription=this.treeService.changes$.subscribe((function(){a.treeChange.emit()})),this.dropSubscription=this.treeService.drops$.subscribe((function(e){a.treeDrop.emit(e)})),this.placeholder=!1,this.treeService.placeholder$.subscribe((function(e){a.placeholder=e,t.NgZone.isInAngularZone()||a.changeDetectorRef.detectChanges()}))}return e.prototype.ngAfterViewInit=function(){var e;!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.clearVisibleZones(),this.changeDetectorRef.detectChanges())},e.prototype.dropHandler=function(e){var t=this;if(e.stopPropagation(),"droppable"===this.dragStateService.getState()){var r=this.dragStateService.capture();if(void 0===r)throw new Error("failed to get current branch in dragendHandler");var o=this.dropZoneService.getActiveDropZone();if(null===o)throw new Error("failed to get active drop zone at drop handler");this.treeService.captured=!0,this.dragStateService.state$.pipe(n.first((function(e){return"idle"===e}))).subscribe((function(){t.treeService.captured=!1})),this.dropZoneService.clearVisibleZones(),this.treeService.drop(r,o.getFullInsertCoordinates())}},e.prototype.ngOnDestroy=function(){this.changesSubscription.unsubscribe(),this.dropSubscription.unsubscribe()},e}();V.ɵfac=function(e){return new(e||V)(t.ɵɵdirectiveInject(P),t.ɵɵdirectiveInject(v),t.ɵɵdirectiveInject(p),t.ɵɵdirectiveInject(C),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},V.ɵcmp=t.ɵɵdefineComponent({type:V,selectors:[["limble-tree-root"]],viewQuery:function(e,r){if(1&e&&t.ɵɵviewQuery(T,1,t.ViewContainerRef),2&e){var n;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first)}},inputs:{data:"data",options:"options",itemsPerPage:"itemsPerPage",page:"page"},outputs:{treeChange:"treeChange",treeDrop:"treeDrop"},features:[t.ɵɵProvidersFeature([P,v]),t.ɵɵNgOnChangesFeature],decls:4,vars:1,consts:[[3,"dragoverNoChangeDetect","dragleaveNoChangeDetect","drop"],[4,"ngIf"],["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,$,1,0,"limble-tree-placeholder",1),t.ɵɵtemplate(2,L,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd()),2&e&&(t.ɵɵadvance(1),t.ɵɵproperty("ngIf",!0===r.placeholder))},directives:[H,R,o.NgIf,z],styles:[""]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(V,[{type:t.Component,args:[{selector:"limble-tree-root",templateUrl:"./limble-tree-root.component.html",styleUrls:["./limble-tree-root.component.scss"],providers:[P,v]}]}],(function(){return[{type:P},{type:v},{type:p},{type:C},{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}]}],treeChange:[{type:t.Output}],treeDrop:[{type:t.Output}]});var k=function(){};k.ɵfac=function(e){return new(e||k)},k.ɵmod=t.ɵɵdefineNgModule({type:k}),k.ɵinj=t.ɵɵdefineInjector({providers:[w,p,C],imports:[[o.CommonModule]]}),("undefined"==typeof ngJitMode||ngJitMode)&&t.ɵɵsetNgModuleScope(k,{declarations:[b,B,O,V,z,H,R],imports:[o.CommonModule],exports:[V]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(k,[{type:t.NgModule,args:[{declarations:[b,B,O,V,z,H,R],imports:[o.CommonModule],exports:[V],providers:[w,p,C]}]}],null,null),t.ɵɵsetComponentScope(b,[o.NgIf,B],[]),t.ɵɵsetComponentScope(O,[o.NgIf,B,H,b],[]),e.LimbleTreeModule=k,e.LimbleTreeRootComponent=V,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=limble-limble-tree.umd.min.js.map

@@ -52,3 +52,3 @@ import { Component, Input, ViewChild, ViewContainerRef } from "@angular/core";

}
this.treeService.cleanupSignal$.next(null);
this.treeService.cleanupSignal$.next(true);
}

@@ -108,2 +108,2 @@ addDropZoneInside() {

}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvbGltYmxlLXRyZWUtYnJhbmNoL2xpbWJsZS10cmVlLWJyYW5jaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLWJyYW5jaC9saW1ibGUtdHJlZS1icmFuY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdKLFNBQVMsRUFDVCxLQUFLLEVBR0wsU0FBUyxFQUNULGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7O0lDYnhDLCtCQUdhOzs7SUFEVixnREFBMkI7OztBRG1CakMsTUFBTSxPQUFPLHlCQUF5QjtJQWFuQyxZQUNXLFdBQXdCLEVBQ2YsaUJBQW9DLEVBQ3BDLGVBQWdDOztRQUZ6QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRWpELElBQUksQ0FBQyxNQUFNLFNBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLDBDQUFFLE1BQU0sQ0FBQztRQUNuRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxRQUFRO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNwQyxNQUFNLElB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QUdXLE1BQU07a0JBQWQsS0FBSztZQUU2QyxRQUFRO2tCQUExRCxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgIEFmdGVyVmlld0luaXQsXHJcbiAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICBDb21wb25lbnQsXHJcbiAgIElucHV0LFxyXG4gICBPbkRlc3Ryb3ksXHJcbiAgIE9uSW5pdCxcclxuICAgVmlld0NoaWxkLFxyXG4gICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJlZVNlcnZpY2UgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcm9vdC90cmVlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHR5cGUgeyBCcmFuY2ggfSBmcm9tIFwiLi4vY2xhc3Nlcy9CcmFuY2hcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmUgfSBmcm9tIFwiLi4vY2xhc3Nlcy9Ecm9wWm9uZVwiO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgaXNOZXN0aW5nQWxsb3dlZCB9IGZyb20gXCIuLi91dGlsXCI7XHJcbmltcG9ydCB7IERyb3Bab25lU2VydmljZSB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1yb290L2Ryb3Atem9uZS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgc2VsZWN0b3I6IFwibGltYmxlLXRyZWUtYnJhbmNoXCIsXHJcbiAgIHRlbXBsYXRlVXJsOiBcIi4vbGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgIHN0eWxlczogW1wiLi9saW1ibGUtdHJlZS1icmFuY2guY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpbWJsZVRyZWVCcmFuY2hDb21wb25lbnRcclxuICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgIEBJbnB1dCgpIGJyYW5jaDogQnJhbmNoPGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gICBAVmlld0NoaWxkKFwiY2hpbGRyZW5cIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNoaWxkcmVuOlxyXG4gICAgICB8IFZpZXdDb250YWluZXJSZWZcclxuICAgICAgfCB1bmRlZmluZWQ7XHJcblxyXG4gICBwdWJsaWMgZHJvcFpvbmVJbnNpZGU6IERyb3Bab25lIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgcmVuZGVyRHJvcFpvbmVJbnNpZGU6IGJvb2xlYW47XHJcblxyXG4gICBwdWJsaWMgcmVhZG9ubHkgaW5kZW50O1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFRyZWVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wWm9uZVNlcnZpY2U6IERyb3Bab25lU2VydmljZVxyXG4gICApIHtcclxuICAgICAgdGhpcy5pbmRlbnQgPSB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVPcHRpb25zPy5pbmRlbnQ7XHJcbiAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVJbnNpZGUgPSBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICB0aGlzLmFkZERyb3Bab25lSW5zaWRlKCk7XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bab25lSW5zaWRlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZHJvcCB6b25lIGluc2lkZSBpcyBub3QgZGVmaW5lZFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRyb3Bab25lSW5zaWRlXHJcbiAgICAgICAgIC5nZXRDb21tQ2hhbm5lbCgpXHJcbiAgICAgICAgIC5waXBlKGZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZSA9PT0gXCJjaGVja1JlbmRlcmVkXCIpKVxyXG4gICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICB0aGlzLmRyb3Bab25lSW5zaWRlID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAgdGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWm9uZXMgbm90IHJlZ2lzdGVyZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICBpc05lc3RpbmdBbGxvd2VkKHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnMsIHRoaXMuYnJhbmNoLmRhdGEpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICB0aGlzLnJlbmRlckRyb3Bab25lSW5zaWRlID0gdGhpcy5kcm9wWm9uZUluc2lkZS5pc1JlbmRlcmVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgIHRoaXMucmVSZW5kZXIoKTtcclxuICAgICAgdGhpcy5zZXREcm9wWm9uZUhvc3QoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgaWYgKHRoaXMuZHJvcFpvbmVJbnNpZGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5yZW1vdmVEcm9wWm9uZSh0aGlzLmRyb3Bab25lSW5zaWRlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyZWVTZXJ2aWNlLmNsZWFudXBTaWduYWwkLm5leHQobnVsbCk7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgYWRkRHJvcFpvbmVJbnNpZGUoKSB7XHJcbiAgICAgIGlmICh0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byByZWdpc3RlciBkcm9wIHpvbmUgaW5zaWRlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVJbnNpZGUgPSBuZXcgRHJvcFpvbmUoWy4uLnRoaXMuYnJhbmNoLmdldENvb3JkaW5hdGVzKCldLCAwKTtcclxuICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UuYWRkRHJvcFpvbmUodGhpcy5kcm9wWm9uZUluc2lkZSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyByZVJlbmRlcigpIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZW5kZXIgbGltYmxlIHRyZWUgYnJhbmNoXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJlZVNlcnZpY2UucmVuZGVyQnJhbmNoKHRoaXMuY2hpbGRyZW4sIHRoaXMuYnJhbmNoKTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBzZXREcm9wWm9uZUhvc3QoKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuID09PSB1bmRlZmluZWQgfHwgdGhpcy5kcm9wWm9uZUluc2lkZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBhZGQgZHJvcCB6b25lIGhvc3RcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kcm9wWm9uZUluc2lkZS5zZXRIb3N0KHRoaXMuY2hpbGRyZW4pO1xyXG4gICB9XHJcbn1cclxuIiwiPGRpdiBbc3R5bGUubWFyZ2luTGVmdC5weF09XCJpbmRlbnRcIj5cclxuICAgPGRyb3Atem9uZVxyXG4gICAgICAqbmdJZj1cInJlbmRlckRyb3Bab25lSW5zaWRlXCJcclxuICAgICAgW2Ryb3Bab25lXT1cImRyb3Bab25lSW5zaWRlXCJcclxuICAgPjwvZHJvcC16b25lPlxyXG4gICA8c3BhbiBbaGlkZGVuXT1cImJyYW5jaCAmJiBicmFuY2guZGF0YS5jb2xsYXBzZWRcIiBjbGFzcz1cImxpbWJsZS1jaGlsZC1ub2Rlc1wiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2NoaWxkcmVuPjwvbmctdGVtcGxhdGU+XHJcbiAgIDwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvbGltYmxlLXRyZWUtYnJhbmNoL2xpbWJsZS10cmVlLWJyYW5jaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLWJyYW5jaC9saW1ibGUtdHJlZS1icmFuY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdKLFNBQVMsRUFDVCxLQUFLLEVBR0wsU0FBUyxFQUNULGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7O0lDYnhDLCtCQUdhOzs7SUFEVixnREFBMkI7OztBRG1CakMsTUFBTSxPQUFPLHlCQUF5QjtJQWFuQyxZQUNXLFdBQXdCLEVBQ2YsaUJBQW9DLEVBQ3BDLGVBQWdDOztRQUZ6QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRWpELElBQUksQ0FBQyxNQUFNLFNBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLDBDQUFFLE1BQU0sQ0FBQztRQUNuRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxRQUFRO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNwQyxNQUFNLElB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QUdXLE1BQU07a0JBQWQsS0FBSztZQUU2QyxRQUFRO2tCQUExRCxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgIEFmdGVyVmlld0luaXQsXHJcbiAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICBDb21wb25lbnQsXHJcbiAgIElucHV0LFxyXG4gICBPbkRlc3Ryb3ksXHJcbiAgIE9uSW5pdCxcclxuICAgVmlld0NoaWxkLFxyXG4gICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJlZVNlcnZpY2UgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcm9vdC90cmVlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHR5cGUgeyBCcmFuY2ggfSBmcm9tIFwiLi4vY2xhc3Nlcy9CcmFuY2hcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmUgfSBmcm9tIFwiLi4vY2xhc3Nlcy9Ecm9wWm9uZVwiO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgaXNOZXN0aW5nQWxsb3dlZCB9IGZyb20gXCIuLi91dGlsXCI7XHJcbmltcG9ydCB7IERyb3Bab25lU2VydmljZSB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1yb290L2Ryb3Atem9uZS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgc2VsZWN0b3I6IFwibGltYmxlLXRyZWUtYnJhbmNoXCIsXHJcbiAgIHRlbXBsYXRlVXJsOiBcIi4vbGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgIHN0eWxlczogW1wiLi9saW1ibGUtdHJlZS1icmFuY2guY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpbWJsZVRyZWVCcmFuY2hDb21wb25lbnRcclxuICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgIEBJbnB1dCgpIGJyYW5jaDogQnJhbmNoPGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gICBAVmlld0NoaWxkKFwiY2hpbGRyZW5cIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNoaWxkcmVuOlxyXG4gICAgICB8IFZpZXdDb250YWluZXJSZWZcclxuICAgICAgfCB1bmRlZmluZWQ7XHJcblxyXG4gICBwdWJsaWMgZHJvcFpvbmVJbnNpZGU6IERyb3Bab25lIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgcmVuZGVyRHJvcFpvbmVJbnNpZGU6IGJvb2xlYW47XHJcblxyXG4gICBwdWJsaWMgcmVhZG9ubHkgaW5kZW50O1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFRyZWVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wWm9uZVNlcnZpY2U6IERyb3Bab25lU2VydmljZVxyXG4gICApIHtcclxuICAgICAgdGhpcy5pbmRlbnQgPSB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVPcHRpb25zPy5pbmRlbnQ7XHJcbiAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVJbnNpZGUgPSBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICB0aGlzLmFkZERyb3Bab25lSW5zaWRlKCk7XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bab25lSW5zaWRlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZHJvcCB6b25lIGluc2lkZSBpcyBub3QgZGVmaW5lZFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRyb3Bab25lSW5zaWRlXHJcbiAgICAgICAgIC5nZXRDb21tQ2hhbm5lbCgpXHJcbiAgICAgICAgIC5waXBlKGZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZSA9PT0gXCJjaGVja1JlbmRlcmVkXCIpKVxyXG4gICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICB0aGlzLmRyb3Bab25lSW5zaWRlID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAgdGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWm9uZXMgbm90IHJlZ2lzdGVyZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICBpc05lc3RpbmdBbGxvd2VkKHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnMsIHRoaXMuYnJhbmNoLmRhdGEpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICB0aGlzLnJlbmRlckRyb3Bab25lSW5zaWRlID0gdGhpcy5kcm9wWm9uZUluc2lkZS5pc1JlbmRlcmVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgIHRoaXMucmVSZW5kZXIoKTtcclxuICAgICAgdGhpcy5zZXREcm9wWm9uZUhvc3QoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgaWYgKHRoaXMuZHJvcFpvbmVJbnNpZGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5yZW1vdmVEcm9wWm9uZSh0aGlzLmRyb3Bab25lSW5zaWRlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyZWVTZXJ2aWNlLmNsZWFudXBTaWduYWwkLm5leHQodHJ1ZSk7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgYWRkRHJvcFpvbmVJbnNpZGUoKSB7XHJcbiAgICAgIGlmICh0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byByZWdpc3RlciBkcm9wIHpvbmUgaW5zaWRlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVJbnNpZGUgPSBuZXcgRHJvcFpvbmUoWy4uLnRoaXMuYnJhbmNoLmdldENvb3JkaW5hdGVzKCldLCAwKTtcclxuICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UuYWRkRHJvcFpvbmUodGhpcy5kcm9wWm9uZUluc2lkZSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyByZVJlbmRlcigpIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZW5kZXIgbGltYmxlIHRyZWUgYnJhbmNoXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJlZVNlcnZpY2UucmVuZGVyQnJhbmNoKHRoaXMuY2hpbGRyZW4sIHRoaXMuYnJhbmNoKTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBzZXREcm9wWm9uZUhvc3QoKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuID09PSB1bmRlZmluZWQgfHwgdGhpcy5kcm9wWm9uZUluc2lkZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBhZGQgZHJvcCB6b25lIGhvc3RcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kcm9wWm9uZUluc2lkZS5zZXRIb3N0KHRoaXMuY2hpbGRyZW4pO1xyXG4gICB9XHJcbn1cclxuIiwiPGRpdiBbc3R5bGUubWFyZ2luTGVmdC5weF09XCJpbmRlbnRcIj5cclxuICAgPGRyb3Atem9uZVxyXG4gICAgICAqbmdJZj1cInJlbmRlckRyb3Bab25lSW5zaWRlXCJcclxuICAgICAgW2Ryb3Bab25lXT1cImRyb3Bab25lSW5zaWRlXCJcclxuICAgPjwvZHJvcC16b25lPlxyXG4gICA8c3BhbiBbaGlkZGVuXT1cImJyYW5jaCAmJiBicmFuY2guZGF0YS5jb2xsYXBzZWRcIiBjbGFzcz1cImxpbWJsZS1jaGlsZC1ub2Rlc1wiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2NoaWxkcmVuPjwvbmctdGVtcGxhdGU+XHJcbiAgIDwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==

@@ -6,3 +6,3 @@ import { Injectable } from "@angular/core";

import { arraysAreEqual } from "../util";
import { debounceTime } from "rxjs/operators";
import { debounceTime, tap } from "rxjs/operators";
import * as i0 from "@angular/core";

@@ -25,4 +25,10 @@ import * as i1 from "../singletons/component-creator.service";

this.cleanupSignal$ = new Subject();
this.cleanupSignal$.pipe(debounceTime(5)).subscribe(() => {
this.cleanup();
let rebuild = false;
this.cleanupSignal$
.pipe(tap((value) => {
rebuild = value;
}), debounceTime(5))
.subscribe(() => {
this.cleanup(rebuild);
rebuild = false;
});

@@ -106,3 +112,3 @@ this.synchronizer = false;

});
this.cleanupSignal$.next(null);
this.cleanupSignal$.next(false);
}

@@ -117,3 +123,3 @@ /** Initializes the service and renders the tree.

this.host = host;
this.uncutData = data;
this.originalData = data;
this.treeOptions = this.processOptions(options, itemsPerPage, page);

@@ -128,6 +134,6 @@ if (this.treeOptions.listMode === true) {

const end = start + this.treeOptions.itemsPerPage;
this.treeData = this.uncutData.slice(start, end);
this.treeData = this.originalData.slice(start, end);
}
else {
this.treeData = [...this.uncutData];
this.treeData = [...this.originalData];
}

@@ -137,8 +143,7 @@ this.synchronizer = false;

}
cleanup() {
cleanup(rebuild = false) {
var _a;
/* TODO: if the drop occurred in the node's tree of origin, rebuildTreeData()
is called for the second time here. We can probably find a way to avoid rebuilding
the tree twice in this scenario. */
this.rebuildTreeData();
if (rebuild) {
this.rebuildTreeData();
}
if (((_a = this.treeData) === null || _a === void 0 ? void 0 : _a.length) === 0) {

@@ -238,3 +243,3 @@ //We do a full render here because it isn't actually any slower

rebuildTreeData() {
if (this.uncutData === undefined ||
if (this.originalData === undefined ||
this.treeData === undefined ||

@@ -244,18 +249,14 @@ this.treeOptions === undefined) {

}
this.uncutData.length = 0;
this.treeData = [];
for (const branch of this.treeModel.getChildren()) {
this.uncutData.push(this.rebuildBranch(branch));
this.treeData.push(this.rebuildBranch(branch));
}
if (this.treeOptions.listMode === true) {
let start = this.treeOptions.itemsPerPage * (this.treeOptions.page - 1);
if (isNaN(start)) {
//This catches the case where itemsPerPage was not passed by the user,
//causing `start` to equal infinity*0, which is NaN.
start = 0;
}
const end = start + this.treeOptions.itemsPerPage;
this.treeData = this.uncutData.slice(start, end);
if (this.treeOptions.listMode === true &&
this.treeOptions.itemsPerPage < Infinity) {
const start = this.treeOptions.itemsPerPage * (this.treeOptions.page - 1);
this.originalData.splice(start, this.treeOptions.itemsPerPage, ...this.treeData);
}
else {
this.treeData = [...this.uncutData];
this.originalData.length = 0;
this.originalData.push(...this.treeData);
}

@@ -277,2 +278,2 @@ }

}], function () { return [{ type: i1.ComponentCreatorService }, { type: i2.DropZoneService }, { type: i3.DragStateService }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUduRSxPQUFPLEVBQUUsTUFBTSxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQThEOUMsZ0RBQWdEO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFrRHpCLE1BQU0sT0FBTyxXQUFXO0lBY3JCLFlBQ29CLHVCQUFnRCxFQUNoRCxlQUFnQyxFQUNoQyxnQkFBa0M7UUFGbEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUVuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJ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QUFDO0lBRU8sYUFBYSxDQUFDLE1BQW1CO1FBQ3RDLE1BQU0sSUFBSSxHQUFtQixNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM3QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2YsQ0FBQzs7c0VBNVNTLFdBQVc7bURBQVgsV0FBVyxXQUFYLFdBQVc7dUZBQVgsV0FBVztjQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi9kcm9wLXpvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcmFuY2gsIEJyYW5jaENvb3JkaW5hdGVzIH0gZnJvbSBcIi4uL2NsYXNzZXMvQnJhbmNoXCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2xpbWJsZS10cmVlLW5vZGUvbGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRHJhZ1N0YXRlU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2RyYWctc3RhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBhcnJheXNBcmVFcXVhbCB9IGZyb20gXCIuLi91dGlsXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLyoqIEFuIG9iamVjdCBkZXNjcmliaW5nIGEgbm9kZSBvZiB0aGUgdHJlZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExpbWJsZVRyZWVOb2RlIHtcclxuICAgLyoqIEEgbGlzdCBvZiBub2RlcyB0byBiZSByZW5kZXJlZCBcInVuZGVyXCIgdGhpcyBvbmUsIG9uZSBsZXZlbCBkZWVwZXIgaW4gdGhlIHRyZWUuICovXHJcbiAgIG5vZGVzPzogTGltYmxlVHJlZURhdGE7XHJcbiAgIC8vIC8qKiBBIGN1c3RvbSBkYXRhIG9iamVjdCB0aGF0IHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIGNvbXBvbmVudCBhcyBhbiBgSW5wdXQoKWAgYmluZGluZyBjYWxsZWQgYG5vZGVEYXRhYCAqL1xyXG4gICAvLyBkYXRhOiB1bmtub3duO1xyXG4gICAvKiogQW4gb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZSBjb21wb25lbnQgd2hpY2ggd2lsbCByZXByZXNlbnQgdGhpcyBub2RlIGluIHRoZSB2aXN1YWwgdHJlZSAqL1xyXG4gICBjb21wb25lbnQ/OiBDb21wb25lbnRPYmo7XHJcbiAgIGNvbGxhcHNlZD86IGJvb2xlYW47XHJcbiAgIFtpbmRleDogc3RyaW5nXTogdW5rbm93bjtcclxufVxyXG5cclxuLyoqIEFuIG9iamVjdCB0aGF0IHRoZSBsaW1ibGUtdHJlZS1yb290IGNvbXBvbmVudCB1c2VzIHRvIGJ1aWxkIHRoZSB0cmVlICovXHJcbmV4cG9ydCB0eXBlIExpbWJsZVRyZWVEYXRhID0gQXJyYXk8TGltYmxlVHJlZU5vZGU+O1xyXG5cclxuLyoqIEEgZ3JvdXAgb2Ygc2V0dGluZ3MgZm9yIGNoYW5naW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0cmVlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGltYmxlVHJlZU9wdGlvbnMge1xyXG4gICAvKiogVGhlIGNvbXBvbmVudCBvYmplY3QgdG8gdXNlIGlmIG9uZSBpcyBub3Qgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgbm9kZSAqL1xyXG4gICBkZWZhdWx0Q29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICAvKiogVGhlIG51bWJlciBvZiBwaXhlbHMgdG8gaW5kZW50IGVhY2ggbGV2ZWwgb2YgdGhlIHRyZWUuIERlZmF1bHRzIHRvIDQ1ICovXHJcbiAgIGluZGVudD86IG51bWJlcjtcclxuICAgLyoqXHJcbiAgICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJuZXN0aW5nXCIgKHBsYWNpbmcgYSBub2RlIG9uZSBsZXZlbCBkZWVwZXIgdGhhbiBjdXJyZW50bHkgZXhpc3RzIG9uIHRoZSBicmFuY2gpLlxyXG4gICAgKiBXaGVuIHRoaXMgaXMgYSBib29sZWFuLCBpdCBhcHBsaWVzIHRvIGFsbCBub2Rlcy4gV2hlbiB0aGlzIGlzIGEgZnVuY3Rpb24sIHRoZSBub2RlIGluIHF1ZXN0aW9uXHJcbiAgICAqIGlzIHBhc3NlZCBpbi4gRGVmYXVsdHMgdG8gdHJ1ZS5cclxuICAgICovXHJcbiAgIGFsbG93TmVzdGluZz86IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIC8qKlxyXG4gICAgKiBXaGV0aGVyIHRvIGFsbG93IGEgbm9kZSB0byBiZSBkcmFnZ2VkLiBXaGVuIHRoaXMgaXMgYSBib29sZWFuLCBpdCBhcHBsaWVzIHRvIGFsbCBub2Rlcy4gV2hlbiB0aGlzXHJcbiAgICAqIGlzIGEgZnVuY3Rpb24sIHRoZSBub2RlIGluIHF1ZXN0aW9uIGlzIHBhc3NlZCBpbi4gRGVmYXVsdHMgdG8gdHJ1ZS5cclxuICAgICovXHJcbiAgIGFsbG93RHJhZ2dpbmc/OiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICAvKiogQSBjYWxsYmFjayB0byBkZXRlcm1pbmUgd2hldGhlciBhIHNvdXJjZU5vZGUgY2FuIGJlIGRyb3BwZWQgYXQgYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLiAqL1xyXG4gICBhbGxvd0Ryb3A/OiAoXHJcbiAgICAgIHNvdXJjZU5vZGU6IExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICBwcm9wb3NlZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsLFxyXG4gICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcclxuICAgKSA9PiBib29sZWFuO1xyXG4gICAvKiogV2hlbiBzZXQgdG8gdHJ1ZSwgbGlzdCBtb2RlIHdpbGwgZW5mb3JjZSBhIGZsYXQgdHJlZSBzdHJ1Y3R1cmUsIG1lYW5pbmcgdGhlcmVcclxuICAgICogY2FuIG9ubHkgYmUgb25lIGxldmVsIG9mIHRoZSB0cmVlLiBgYWxsb3dOZXN0aW5nYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byBgZmFsc2VgXHJcbiAgICAqIGFuZCBhbnkgY2hpbGRyZW4gd2lsbCBiZSBkZWxldGVkLlxyXG4gICAgKlxyXG4gICAgKiBUaGlzIG1vZGUgY2FuIGJlIHVzZWQgd2hlbiB0aGUgc2FtZSBkeW5hbWljIGRyYWcgYW5kIGRyb3AgZnVuY3Rpb25hbGl0eSBvZlxyXG4gICAgKiB0aGUgdHJlZSBpcyBkZXNpcmVkLCBidXQgdGhlIHRyZWUgc3RydWN0dXJlIGl0c2VsZiBpcyBub3QgbmVjZXNzYXJ5LiBUaGlzXHJcbiAgICAqIGFsc28gb3BlbnMgdXAgdGhlIHBhZ2luYXRpb24gQVBJIG9uIHRoZSBsaW1ibGUtdHJlZS1yb290IGNvbXBvbmVudC4gU2VlIHRoZVxyXG4gICAgKiBSRUFETUUgZm9yIGRldGFpbHMgb24gcGFnaW5hdGlvbi5cclxuICAgICovXHJcbiAgIGxpc3RNb2RlPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIEFuIG9iamVjdCB0aGF0IHJlZmVyZW5jZXMgdGhlIGNvbXBvbmVudCB0byBiZSByZW5kZXJlZCBhbmQgaXRzIGJpbmRpbmdzICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50T2JqIHtcclxuICAgLyoqIFRoZSBjb21wb25lbnQgY2xhc3MgKi9cclxuICAgY2xhc3M6IFR5cGU8dW5rbm93bj47XHJcbiAgIC8qKiBUaGUgYmluZGluZ3MgKGlucHV0cyBhbmQgb3V0cHV0cykgb2YgdGhlIGNsYXNzICovXHJcbiAgIGJpbmRpbmdzPzoge1xyXG4gICAgICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XHJcbiAgIH07XHJcbn1cclxuXHJcbi8qKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGBpbmRlbnRgIG9wdGlvbiAqL1xyXG5leHBvcnQgY29uc3QgSU5ERU5UID0gNDU7XHJcblxyXG4vKiogQW4gb3B0aW9ucyBvYmplY3Qgd2l0aCBkZWZhdWx0IHZhbHVlcyBsb2FkZWQgd2hlcmUgYXBwbGljYWJsZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNCYXNlIGV4dGVuZHMgTGltYmxlVHJlZU9wdGlvbnMge1xyXG4gICBkZWZhdWx0Q29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICBpbmRlbnQ6IG51bWJlcjtcclxuICAgYWxsb3dOZXN0aW5nOiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICBhbGxvd0RyYWdnaW5nOiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICBhbGxvd0Ryb3A6IChcclxuICAgICAgc291cmNlTm9kZTogTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgIHByb3Bvc2VkUGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGwsXHJcbiAgICAgIHByb3Bvc2VkSW5kZXg6IG51bWJlclxyXG4gICApID0+IGJvb2xlYW47XHJcbiAgIGxpc3RNb2RlOiBib29sZWFuO1xyXG4gICBpdGVtc1BlclBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICAgcGFnZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNXaXRoUGFnaW5hdGlvbiBleHRlbmRzIFByb2Nlc3NlZE9wdGlvbnNCYXNlIHtcclxuICAgbGlzdE1vZGU6IHRydWU7XHJcbiAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gICBwYWdlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkT3B0aW9uc1dpdGhvdXRQYWdpbmF0aW9uXHJcbiAgIGV4dGVuZHMgUHJvY2Vzc2VkT3B0aW9uc0Jhc2Uge1xyXG4gICBsaXN0TW9kZTogZmFsc2U7XHJcbiAgIGl0ZW1zUGVyUGFnZTogdW5kZWZpbmVkO1xyXG4gICBwYWdlOiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb2Nlc3NlZE9wdGlvbnMgPVxyXG4gICB8IFByb2Nlc3NlZE9wdGlvbnNXaXRoUGFnaW5hdGlvblxyXG4gICB8IFByb2Nlc3NlZE9wdGlvbnNXaXRob3V0UGFnaW5hdGlvbjtcclxuXHJcbi8qKiB0aGUgdmFsdWUgZW1pdHRlZCBmcm9tIHRoZSByb290IGNvbXBvbmVudCBhZnRlciBhIG5vZGUgaXMgZHJvcHBlZCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVEcm9wIHtcclxuICAgLyoqIFRoZSBub2RlIHRoYXQgd2FzIGRyb3BwZWQgKi9cclxuICAgdGFyZ2V0OiBMaW1ibGVUcmVlTm9kZTtcclxuICAgLyoqIHRoZSB0YXJnZXQncyBwYXJlbnQgYmVmb3JlIHRoZSBkcmFnIGFuZCBkcm9wLCBvciBudWxsIGlmIGl0IHdhcyBhIHRvcC1sZXZlbCBub2RlICovXHJcbiAgIG9sZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsO1xyXG4gICAvKiogdGhlIGluZGV4IG9mIHRoZSBub2RlIGJlZm9yZSB0aGUgZHJhZyBhbmQgZHJvcCByZWxhdGl2ZSB0byBpdHMgb2xkIHNpYmxpbmdzICovXHJcbiAgIG9sZEluZGV4OiBudW1iZXI7XHJcbiAgIC8qKiB0aGUgdGFyZ2V0J3MgcGFyZW50IGFmdGVyIHRoZSBkcmFnIGFuZCBkcm9wLCBvciBudWxsIGlmIGl0IGlzIG5vdyBhIHRvcC1sZXZlbCBub2RlICovXHJcbiAgIG5ld1BhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsO1xyXG4gICAvKiogdGhlIGluZGV4IG9mIHRoZSBub2RlIGFmdGVyIHRoZSBkcmFnIGFuZCBkcm9wIHJlbGF0aXZlIHRvIGl0cyBuZXcgc2libGluZ3MgKi9cclxuICAgbmV3SW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJlZVNlcnZpY2Uge1xyXG4gICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlcyQ6IFN1YmplY3Q8bnVsbD47XHJcbiAgIHB1YmxpYyByZWFkb25seSBkcm9wcyQ6IFN1YmplY3Q8VHJlZURyb3A+O1xyXG4gICBwdWJsaWMgaG9zdDogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHRyZWVEYXRhOiBMaW1ibGVUcmVlRGF0YSB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSB1bmN1dERhdGE6IExpbWJsZVRyZWVEYXRhIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgdHJlZU9wdGlvbnM6IFByb2Nlc3NlZE9wdGlvbnMgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB0cmVlTW9kZWw6IEJyYW5jaDxhbnk+O1xyXG4gICBwcml2YXRlIHBsYWNlaG9sZGVyOiBib29sZWFuO1xyXG4gICBwdWJsaWMgY2FwdHVyZWQ6IGJvb2xlYW47XHJcbiAgIHB1YmxpYyByZWFkb25seSBjbGVhbnVwU2lnbmFsJDogU3ViamVjdDxudWxsPjtcclxuICAgcHJpdmF0ZSBzeW5jaHJvbml6ZXI6IGJvb2xlYW47XHJcbiAgIHB1YmxpYyBwbGFjZWhvbGRlciQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudENyZWF0b3JTZXJ2aWNlOiBDb21wb25lbnRDcmVhdG9yU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wWm9uZVNlcnZpY2U6IERyb3Bab25lU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcmFnU3RhdGVTZXJ2aWNlOiBEcmFnU3RhdGVTZXJ2aWNlXHJcbiAgICkge1xyXG4gICAgICB0aGlzLmNoYW5nZXMkID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5kcm9wcyQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICB0aGlzLnRyZWVNb2RlbCA9IG5ldyBCcmFuY2gobnVsbCk7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jYXB0dXJlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsZWFudXBTaWduYWwkID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5jbGVhbnVwU2lnbmFsJC5waXBlKGRlYm91bmNlVGltZSg1KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnN5bmNocm9uaXplciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB2YWx1ZTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcm9wKHNvdXJjZTogQnJhbmNoPGFueT4sIHRhcmdldENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcykge1xyXG4gICAgICAvL3ByZXBcclxuICAgICAgY29uc3Qgc291cmNlUGFyZW50ID0gc291cmNlLmdldFBhcmVudCgpO1xyXG4gICAgICBpZiAoc291cmNlUGFyZW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhbid0IGRyb3Agcm9vdCBvZiB0cmVlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gc291cmNlLmdldEluZGV4KCk7XHJcbiAgICAgIGlmIChzb3VyY2VJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHNvdXJjZUluZGV4ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtb3ZlIHRoZSBoaWRkZW4gcm9vdCBub2RlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0YXJnZXRQYXJlbnRDb29yZGluYXRlczogQnJhbmNoQ29vcmRpbmF0ZXM7XHJcbiAgICAgIGxldCBuZXdJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlcyA9IFtdO1xyXG4gICAgICAgICBuZXdJbmRleCA9IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRhcmdldFBhcmVudENvb3JkaW5hdGVzID0gWy4uLnRhcmdldENvb3JkaW5hdGVzXTtcclxuICAgICAgICAgbmV3SW5kZXggPSB0YXJnZXRQYXJlbnRDb29yZGluYXRlcy5wb3AoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobmV3SW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0YXJnZXQgY29vcmRpbmF0ZXMgYXJlIGVtcHR5XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRhcmdldFBhcmVudCA9IHRoaXMudHJlZU1vZGVsLmdldERlc2NlbmRhbnQoXHJcbiAgICAgICAgIHRhcmdldFBhcmVudENvb3JkaW5hdGVzXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0YXJnZXRQYXJlbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZCBub3QgZ2V0IHRvIHRhcmdldFwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmRyb3Bab25lU2VydmljZS5nZXREcm9wWm9uZSh0YXJnZXRDb29yZGluYXRlcyk7XHJcbiAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gdGFyZ2V0Py5nZXRMb2NhdGlvbigpLmluc2VydEluZGV4O1xyXG4gICAgICBjb25zdCB0YXJnZXRIb3N0ID0gdGFyZ2V0Py5nZXRIb3N0KCk7XHJcbiAgICAgIGNvbnN0IHNvdXJjZUhvc3QgPSB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0RGF0YSgpPy5wYXJlbnRDb250YWluZXI7XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vQ2hhbmdlIHRoZSB0cmVlTW9kZWxcclxuICAgICAgdGFyZ2V0UGFyZW50Lmluc2VydENoaWxkKHNvdXJjZSwgbmV3SW5kZXgpO1xyXG4gICAgICAvL1ByZXBhcmUgdG8gdXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGFyZ2V0SG9zdCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHNvdXJjZUhvc3QgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0YXJnZXRJbmRleCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICAvL0hpdHRpbmcgdGhpcyBtZWFucyB0aGVyZSBpcyBhIGJ1ZywgYnV0IG5vdCBhIGZhdGFsIG9uZS5cclxuICAgICAgICAgLy9KdXN0IHJlbmRlciB0aGUgd2hvbGUgdHJlZSBhZ2Fpbi5cclxuICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBwZXJmb3JtIGEgcHJlY2lzZSB1cGRhdGUuIFJlLXJlbmRlcmluZyB0aGUgZW50aXJlIHRyZWUgaW5zdGVhZFwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChudWxsKTtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8vVXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgIGNvbnN0IG5vZGVzSW5Tb3VyY2UgPSBzb3VyY2VIb3N0Lmxlbmd0aDtcclxuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRDcmVhdG9yU2VydmljZS5hcHBlbmRDb21wb25lbnQoXHJcbiAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICB0YXJnZXRIb3N0LFxyXG4gICAgICAgICBuZXdJbmRleFxyXG4gICAgICApO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gc291cmNlO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFyZW50SG9zdCA9IHRhcmdldEhvc3Q7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGFyZ2V0SW5kZXggPCBzb3VyY2VJbmRleCAmJlxyXG4gICAgICAgICBzb3VyY2VIb3N0Lmxlbmd0aCA+IG5vZGVzSW5Tb3VyY2UgJiZcclxuICAgICAgICAgYXJyYXlzQXJlRXF1YWwoc291cmNlUGFyZW50LmdldENvb3JkaW5hdGVzKCksIHRhcmdldFBhcmVudENvb3JkaW5hdGVzKVxyXG4gICAgICApIHtcclxuICAgICAgICAgc291cmNlSG9zdC5yZW1vdmUoc291cmNlSW5kZXggKyAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgc291cmNlSG9zdC5yZW1vdmUoc291cmNlSW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vVXBkYXRlIHRoZSB0cmVlIGRhdGFcclxuICAgICAgdGhpcy5yZWJ1aWxkVHJlZURhdGEoKTtcclxuICAgICAgLy9QdWJsaXNoIGRyb3AgZGF0YVxyXG4gICAgICB0aGlzLmRyb3BzJC5uZXh0KHtcclxuICAgICAgICAgdGFyZ2V0OiBzb3VyY2UuZGF0YSxcclxuICAgICAgICAgb2xkUGFyZW50OiBzb3VyY2VQYXJlbnQuZGF0YSBhcyBMaW1ibGVUcmVlTm9kZSxcclxuICAgICAgICAgb2xkSW5kZXg6IHNvdXJjZUluZGV4LFxyXG4gICAgICAgICBuZXdQYXJlbnQ6IHRhcmdldFBhcmVudC5kYXRhLFxyXG4gICAgICAgICBuZXdJbmRleDogbmV3SW5kZXhcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2xlYW51cFNpZ25hbCQubmV4dChudWxsKTtcclxuICAgfVxyXG5cclxuICAgLyoqIEluaXRpYWxpemVzIHRoZSBzZXJ2aWNlIGFuZCByZW5kZXJzIHRoZSB0cmVlLlxyXG4gICAgKiBAcGFyYW0gaG9zdCAtIFRoZSBWaWV3Q29udGFpbmVyUmVmIGludG8gd2hpY2ggdGhlIHRyZWUgd2lsbCBiZSByZW5kZXJlZC5cclxuICAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBhcnJheSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gTGltYmxlVHJlZVJvb3QsIHdoaWNoIGlzXHJcbiAgICAqIHRoZSB1c2VycycgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRyZWVcclxuICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QgdGhhdCB3YXMgcGFzc2VkIGluIHRvIExpbWJsZVRyZWVSb290XHJcbiAgICAqL1xyXG4gICBwdWJsaWMgaW5pdChcclxuICAgICAgaG9zdDogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgZGF0YTogTGltYmxlVHJlZURhdGEsXHJcbiAgICAgIG9wdGlvbnM/OiBMaW1ibGVUcmVlT3B0aW9ucyxcclxuICAgICAgaXRlbXNQZXJQYWdlPzogbnVtYmVyLFxyXG4gICAgICBwYWdlPzogbnVtYmVyXHJcbiAgICk6IHZvaWQge1xyXG4gICAgICB0aGlzLmhvc3QgPSBob3N0O1xyXG4gICAgICB0aGlzLnVuY3V0RGF0YSA9IGRhdGE7XHJcbiAgICAgIHRoaXMudHJlZU9wdGlvbnMgPSB0aGlzLnByb2Nlc3NPcHRpb25zKG9wdGlvbnMsIGl0ZW1zUGVyUGFnZSwgcGFnZSk7XHJcbiAgICAgIGlmICh0aGlzLnRyZWVPcHRpb25zLmxpc3RNb2RlID09PSB0cnVlKSB7XHJcbiAgICAgICAgIGxldCBzdGFydCA9XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlICogKHRoaXMudHJlZU9wdGlvbnMucGFnZSAtIDEpO1xyXG4gICAgICAgICBpZiAoaXNOYU4oc3RhcnQpKSB7XHJcbiAgICAgICAgICAgIC8vVGhpcyBjYXRjaGVzIHRoZSBjYXNlIHdoZXJlIGl0ZW1zUGVyUGFnZSB3YXMgbm90IHBhc3NlZCBieSB0aGUgdXNlcixcclxuICAgICAgICAgICAgLy9jYXVzaW5nIGBzdGFydGAgdG8gZXF1YWwgaW5maW5pdHkqMCwgd2hpY2ggaXMgTmFOLlxyXG4gICAgICAgICAgICBzdGFydCA9IDA7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9IHRoaXMudW5jdXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gWy4uLnRoaXMudW5jdXREYXRhXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN5bmNocm9uaXplciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIGNsZWFudXAoKTogdm9pZCB7XHJcbiAgICAgIC8qIFRPRE86IGlmIHRoZSBkcm9wIG9jY3VycmVkIGluIHRoZSBub2RlJ3MgdHJlZSBvZiBvcmlnaW4sIHJlYnVpbGRUcmVlRGF0YSgpXHJcbiAgICAgIGlzIGNhbGxlZCBmb3IgdGhlIHNlY29uZCB0aW1lIGhlcmUuIFdlIGNhbiBwcm9iYWJseSBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlYnVpbGRpbmdcclxuICAgICAgdGhlIHRyZWUgdHdpY2UgaW4gdGhpcyBzY2VuYXJpby4gKi9cclxuICAgICAgdGhpcy5yZWJ1aWxkVHJlZURhdGEoKTtcclxuICAgICAgaWYgKHRoaXMudHJlZURhdGE/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAvL1dlIGRvIGEgZnVsbCByZW5kZXIgaGVyZSBiZWNhdXNlIGl0IGlzbid0IGFjdHVhbGx5IGFueSBzbG93ZXJcclxuICAgICAgICAgLy93aGVuIHRoZXJlIGFyZSBubyBub2RlcywgYW5kIGl0IHNhdmVzIHVzIGZyb20gaGF2aW5nIHRvIGhhbmRsZVxyXG4gICAgICAgICAvL3NvbWUgcmFjZSBjb25kaXRpb25zIHdpdGggdGhlIHBsYWNlaG9sZGVyIGNvbXBvbmVudFxyXG4gICAgICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLmNoYW5nZXMkLm5leHQobnVsbCk7XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnVwZGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBSZW5kZXJzIHRoZSBlbnRpcmUgdHJlZSBmcm9tIHJvb3QgdG8gbGVhdmVzICovXHJcbiAgIHByaXZhdGUgcmVuZGVyKCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMuaG9zdCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ob3N0LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnJlc3RhcnQoKTtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlciQubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsID0gbmV3IEJyYW5jaChudWxsKTtcclxuICAgICAgaWYgKHRoaXMudHJlZURhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgIC8vVHJlZSBpcyBlbXB0eSwgYnV0IHdlIGhhdmUgdG8gdG8gaGF2ZSBzb21ldGhpbmcgdGhlcmUgc28gb3RoZXIgdHJlZXMnIGl0ZW1zIGNhbiBiZSBkcm9wcGVkIGludG8gaXRcclxuICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciQubmV4dCh0cnVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMudHJlZURhdGEpIHtcclxuICAgICAgICAgICAgY29uc3QgYnJhbmNoID0gbmV3IEJyYW5jaChub2RlKTtcclxuICAgICAgICAgICAgdGhpcy50cmVlTW9kZWwuYXBwZW5kQ2hpbGQoYnJhbmNoKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Q3JlYXRvclNlcnZpY2UuYXBwZW5kQ29tcG9uZW50PExpbWJsZVRyZWVOb2RlQ29tcG9uZW50PihcclxuICAgICAgICAgICAgICAgTGltYmxlVHJlZU5vZGVDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgIHRoaXMuaG9zdFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gYnJhbmNoO1xyXG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFyZW50SG9zdCA9IHRoaXMuaG9zdDtcclxuICAgICAgICAgICAgLy9UaGUgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgd2lsbCAoaW5kaXJlY3RseSkgY2FsbCB0aGUgYHJlbmRlckJyYW5jaGAgbWV0aG9kIG9mIHRoaXMgc2VydmljZSB0byByZW5kZXJcclxuICAgICAgICAgICAgLy9pdHMgb3duIGNoaWxkcmVuXHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN5bmNocm9uaXplciA9IHRydWU7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICBpZiAodGhpcy50cmVlT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5jaGFuZ2VzJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICBpZiAodGhpcy5zeW5jaHJvbml6ZXIgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIC8vVGhlIHRyZWUgc2VydmljZSBoYXMgYmVlbiByZWluaXRpYWxpemVkIHNpbmNlIHRoaXMgdGltZW91dCB3YXMgY2FsbGVkLlxyXG4gICAgICAgICAgICAvL1RoZSBuZXcgdHJlZSBkYXRhIHdpbGwganVzdCBvdmVyd3JpdGUgdGhlIGRyb3Agem9uZSBkYXRhIGFueXdheSwgc29cclxuICAgICAgICAgICAgLy93ZSBjYW4gc2tpcCB0aGUgZHJvcCB6b25lIGluaXRpYWxpemF0aW9uIG9uIHRoaXMgcm91bmQgZm9yIGVmZmljaWVuY3lcclxuICAgICAgICAgICAgLy9hbmQgYWxzbyB0byBhdm9pZCBzb21lIHBvc3NpYmxlICg/KSByYWNlIGNvbmRpdGlvbnNcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMuc3luY2hyb25pemVyID0gZmFsc2U7XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLmluaXQodGhpcy50cmVlTW9kZWwsIHRoaXMudHJlZU9wdGlvbnMpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgLyoqIFJlbmRlcnMgYSBicmFuY2ggb2YgdGhlIHRyZWUgYW5kIGFsbCBvZiBpdHMgZGVzY2VuZGFudHMgKi9cclxuICAgcHVibGljIHJlbmRlckJyYW5jaChob3N0OiBWaWV3Q29udGFpbmVyUmVmLCBicmFuY2g6IEJyYW5jaDxhbnk+KSB7XHJcbiAgICAgIGlmICh0aGlzLnRyZWVNb2RlbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgaG9zdC5jbGVhcigpO1xyXG4gICAgICBicmFuY2guY2xlYXJDaGlsZHJlbigpO1xyXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYnJhbmNoLmRhdGE/Lm5vZGVzID8/IFtdKSB7XHJcbiAgICAgICAgIGNvbnN0IG5ld0JyYW5jaCA9IG5ldyBCcmFuY2gobm9kZSk7XHJcbiAgICAgICAgIGJyYW5jaC5hcHBlbmRDaGlsZChuZXdCcmFuY2gpO1xyXG4gICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICBob3N0XHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5icmFuY2ggPSBuZXdCcmFuY2g7XHJcbiAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYXJlbnRIb3N0ID0gaG9zdDtcclxuICAgICAgICAgLy9UaGUgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgd2lsbCAoaW5kaXJlY3RseSkgY2FsbCB0aGUgYHJlbmRlckJyYW5jaGAgbWV0aG9kIG9mIHRoaXMgc2VydmljZSB0byByZW5kZXJcclxuICAgICAgICAgLy9pdHMgb3duIGNoaWxkcmVuXHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBwcm9jZXNzT3B0aW9ucyhcclxuICAgICAgb3B0aW9uczogTGltYmxlVHJlZU9wdGlvbnMgPSB7fSxcclxuICAgICAgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSBJbmZpbml0eSxcclxuICAgICAgcGFnZTogbnVtYmVyID0gMVxyXG4gICApOiBQcm9jZXNzZWRPcHRpb25zIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICBvcHRpb25zLmxpc3RNb2RlID09PSB0cnVlICYmXHJcbiAgICAgICAgIG9wdGlvbnMuYWxsb3dOZXN0aW5nICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgb3B0aW9ucy5hbGxvd05lc3RpbmcgIT09IGZhbHNlXHJcbiAgICAgICkge1xyXG4gICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIFwiVGhlIHZhbHVlIG9mIGBhbGxvd05lc3RpbmdgIHdpbGwgYmUgaWdub3JlZDsgaXQgbXVzdCBiZSBmYWxzZSB3aGVuIGBsaXN0TW9kZWAgaXMgdHJ1ZVwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVzdWx0OiBQcm9jZXNzZWRPcHRpb25zQmFzZSA9IHtcclxuICAgICAgICAgZGVmYXVsdENvbXBvbmVudDogb3B0aW9ucy5kZWZhdWx0Q29tcG9uZW50LFxyXG4gICAgICAgICBpbmRlbnQ6IG9wdGlvbnMuaW5kZW50ID8/IElOREVOVCxcclxuICAgICAgICAgYWxsb3dOZXN0aW5nOlxyXG4gICAgICAgICAgICBvcHRpb25zLmxpc3RNb2RlICE9PSB0cnVlICYmIChvcHRpb25zLmFsbG93TmVzdGluZyA/PyB0cnVlKSxcclxuICAgICAgICAgYWxsb3dEcmFnZ2luZzogb3B0aW9ucy5hbGxvd0RyYWdnaW5nID8/IHRydWUsXHJcbiAgICAgICAgIGFsbG93RHJvcDogb3B0aW9ucy5hbGxvd0Ryb3AgPz8gKCgpID0+IHRydWUpLFxyXG4gICAgICAgICBsaXN0TW9kZTogb3B0aW9ucy5saXN0TW9kZSA/PyBmYWxzZSxcclxuICAgICAgICAgaXRlbXNQZXJQYWdlOiBvcHRpb25zLmxpc3RNb2RlID8gaXRlbXNQZXJQYWdlIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICBwYWdlOiBvcHRpb25zLmxpc3RNb2RlID8gcGFnZSA6IHVuZGVmaW5lZFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIFByb2Nlc3NlZE9wdGlvbnM7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcmVidWlsZFRyZWVEYXRhKCk6IHZvaWQge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMgPT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZSBkYXRhIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVuY3V0RGF0YS5sZW5ndGggPSAwO1xyXG4gICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhLnB1c2godGhpcy5yZWJ1aWxkQnJhbmNoKGJyYW5jaCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRyZWVPcHRpb25zLmxpc3RNb2RlID09PSB0cnVlKSB7XHJcbiAgICAgICAgIGxldCBzdGFydCA9XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlICogKHRoaXMudHJlZU9wdGlvbnMucGFnZSAtIDEpO1xyXG4gICAgICAgICBpZiAoaXNOYU4oc3RhcnQpKSB7XHJcbiAgICAgICAgICAgIC8vVGhpcyBjYXRjaGVzIHRoZSBjYXNlIHdoZXJlIGl0ZW1zUGVyUGFnZSB3YXMgbm90IHBhc3NlZCBieSB0aGUgdXNlcixcclxuICAgICAgICAgICAgLy9jYXVzaW5nIGBzdGFydGAgdG8gZXF1YWwgaW5maW5pdHkqMCwgd2hpY2ggaXMgTmFOLlxyXG4gICAgICAgICAgICBzdGFydCA9IDA7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9IHRoaXMudW5jdXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gWy4uLnRoaXMudW5jdXREYXRhXTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlYnVpbGRCcmFuY2goYnJhbmNoOiBCcmFuY2g8YW55Pik6IExpbWJsZVRyZWVOb2RlIHtcclxuICAgICAgY29uc3QgdGVtcDogTGltYmxlVHJlZU5vZGUgPSBicmFuY2guZGF0YTtcclxuICAgICAgdGVtcC5ub2RlcyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGJyYW5jaC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRlbXAubm9kZXMucHVzaCh0aGlzLnJlYnVpbGRCcmFuY2goY2hpbGQpKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGVtcDtcclxuICAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUduRSxPQUFPLEVBQUUsTUFBTSxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUE4RG5ELGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBa0R6QixNQUFNLE9BQU8sV0FBVztJQWVyQixZQUNvQix1QkFBZ0QsRUFDaEQsZUFBZ0MsRUFDaEMsZ0JBQWtDO1FBRmxDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFFbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFj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LENBQUM7U0FDSjthQUFNO1lBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFtQjtRQUN0QyxNQUFNLElBQUksR0FBbUIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNmLENBQUM7O3NFQXZUUyxXQUFXO21EQUFYLFdBQVcsV0FBWCxXQUFXO3VGQUFYLFdBQVc7Y0FEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDcmVhdG9yU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2NvbXBvbmVudC1jcmVhdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vZHJvcC16b25lLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnJhbmNoLCBCcmFuY2hDb29yZGluYXRlcyB9IGZyb20gXCIuLi9jbGFzc2VzL0JyYW5jaFwiO1xyXG5pbXBvcnQgeyBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1ub2RlL2xpbWJsZS10cmVlLW5vZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IERyYWdTdGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2luZ2xldG9ucy9kcmFnLXN0YXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgYXJyYXlzQXJlRXF1YWwgfSBmcm9tIFwiLi4vdXRpbFwiO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLyoqIEFuIG9iamVjdCBkZXNjcmliaW5nIGEgbm9kZSBvZiB0aGUgdHJlZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExpbWJsZVRyZWVOb2RlIHtcclxuICAgLyoqIEEgbGlzdCBvZiBub2RlcyB0byBiZSByZW5kZXJlZCBcInVuZGVyXCIgdGhpcyBvbmUsIG9uZSBsZXZlbCBkZWVwZXIgaW4gdGhlIHRyZWUuICovXHJcbiAgIG5vZGVzPzogTGltYmxlVHJlZURhdGE7XHJcbiAgIC8vIC8qKiBBIGN1c3RvbSBkYXRhIG9iamVjdCB0aGF0IHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIGNvbXBvbmVudCBhcyBhbiBgSW5wdXQoKWAgYmluZGluZyBjYWxsZWQgYG5vZGVEYXRhYCAqL1xyXG4gICAvLyBkYXRhOiB1bmtub3duO1xyXG4gICAvKiogQW4gb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZSBjb21wb25lbnQgd2hpY2ggd2lsbCByZXByZXNlbnQgdGhpcyBub2RlIGluIHRoZSB2aXN1YWwgdHJlZSAqL1xyXG4gICBjb21wb25lbnQ/OiBDb21wb25lbnRPYmo7XHJcbiAgIGNvbGxhcHNlZD86IGJvb2xlYW47XHJcbiAgIFtpbmRleDogc3RyaW5nXTogdW5rbm93bjtcclxufVxyXG5cclxuLyoqIEFuIG9iamVjdCB0aGF0IHRoZSBsaW1ibGUtdHJlZS1yb290IGNvbXBvbmVudCB1c2VzIHRvIGJ1aWxkIHRoZSB0cmVlICovXHJcbmV4cG9ydCB0eXBlIExpbWJsZVRyZWVEYXRhID0gQXJyYXk8TGltYmxlVHJlZU5vZGU+O1xyXG5cclxuLyoqIEEgZ3JvdXAgb2Ygc2V0dGluZ3MgZm9yIGNoYW5naW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0cmVlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGltYmxlVHJlZU9wdGlvbnMge1xyXG4gICAvKiogVGhlIGNvbXBvbmVudCBvYmplY3QgdG8gdXNlIGlmIG9uZSBpcyBub3Qgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgbm9kZSAqL1xyXG4gICBkZWZhdWx0Q29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICAvKiogVGhlIG51bWJlciBvZiBwaXhlbHMgdG8gaW5kZW50IGVhY2ggbGV2ZWwgb2YgdGhlIHRyZWUuIERlZmF1bHRzIHRvIDQ1ICovXHJcbiAgIGluZGVudD86IG51bWJlcjtcclxuICAgLyoqXHJcbiAgICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJuZXN0aW5nXCIgKHBsYWNpbmcgYSBub2RlIG9uZSBsZXZlbCBkZWVwZXIgdGhhbiBjdXJyZW50bHkgZXhpc3RzIG9uIHRoZSBicmFuY2gpLlxyXG4gICAgKiBXaGVuIHRoaXMgaXMgYSBib29sZWFuLCBpdCBhcHBsaWVzIHRvIGFsbCBub2Rlcy4gV2hlbiB0aGlzIGlzIGEgZnVuY3Rpb24sIHRoZSBub2RlIGluIHF1ZXN0aW9uXHJcbiAgICAqIGlzIHBhc3NlZCBpbi4gRGVmYXVsdHMgdG8gdHJ1ZS5cclxuICAgICovXHJcbiAgIGFsbG93TmVzdGluZz86IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIC8qKlxyXG4gICAgKiBXaGV0aGVyIHRvIGFsbG93IGEgbm9kZSB0byBiZSBkcmFnZ2VkLiBXaGVuIHRoaXMgaXMgYSBib29sZWFuLCBpdCBhcHBsaWVzIHRvIGFsbCBub2Rlcy4gV2hlbiB0aGlzXHJcbiAgICAqIGlzIGEgZnVuY3Rpb24sIHRoZSBub2RlIGluIHF1ZXN0aW9uIGlzIHBhc3NlZCBpbi4gRGVmYXVsdHMgdG8gdHJ1ZS5cclxuICAgICovXHJcbiAgIGFsbG93RHJhZ2dpbmc/OiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICAvKiogQSBjYWxsYmFjayB0byBkZXRlcm1pbmUgd2hldGhlciBhIHNvdXJjZU5vZGUgY2FuIGJlIGRyb3BwZWQgYXQgYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLiAqL1xyXG4gICBhbGxvd0Ryb3A/OiAoXHJcbiAgICAgIHNvdXJjZU5vZGU6IExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICBwcm9wb3NlZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsLFxyXG4gICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcclxuICAgKSA9PiBib29sZWFuO1xyXG4gICAvKiogV2hlbiBzZXQgdG8gdHJ1ZSwgbGlzdCBtb2RlIHdpbGwgZW5mb3JjZSBhIGZsYXQgdHJlZSBzdHJ1Y3R1cmUsIG1lYW5pbmcgdGhlcmVcclxuICAgICogY2FuIG9ubHkgYmUgb25lIGxldmVsIG9mIHRoZSB0cmVlLiBgYWxsb3dOZXN0aW5nYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byBgZmFsc2VgXHJcbiAgICAqIGFuZCBhbnkgY2hpbGRyZW4gd2lsbCBiZSBkZWxldGVkLlxyXG4gICAgKlxyXG4gICAgKiBUaGlzIG1vZGUgY2FuIGJlIHVzZWQgd2hlbiB0aGUgc2FtZSBkeW5hbWljIGRyYWcgYW5kIGRyb3AgZnVuY3Rpb25hbGl0eSBvZlxyXG4gICAgKiB0aGUgdHJlZSBpcyBkZXNpcmVkLCBidXQgdGhlIHRyZWUgc3RydWN0dXJlIGl0c2VsZiBpcyBub3QgbmVjZXNzYXJ5LiBUaGlzXHJcbiAgICAqIGFsc28gb3BlbnMgdXAgdGhlIHBhZ2luYXRpb24gQVBJIG9uIHRoZSBsaW1ibGUtdHJlZS1yb290IGNvbXBvbmVudC4gU2VlIHRoZVxyXG4gICAgKiBSRUFETUUgZm9yIGRldGFpbHMgb24gcGFnaW5hdGlvbi5cclxuICAgICovXHJcbiAgIGxpc3RNb2RlPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIEFuIG9iamVjdCB0aGF0IHJlZmVyZW5jZXMgdGhlIGNvbXBvbmVudCB0byBiZSByZW5kZXJlZCBhbmQgaXRzIGJpbmRpbmdzICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50T2JqIHtcclxuICAgLyoqIFRoZSBjb21wb25lbnQgY2xhc3MgKi9cclxuICAgY2xhc3M6IFR5cGU8dW5rbm93bj47XHJcbiAgIC8qKiBUaGUgYmluZGluZ3MgKGlucHV0cyBhbmQgb3V0cHV0cykgb2YgdGhlIGNsYXNzICovXHJcbiAgIGJpbmRpbmdzPzoge1xyXG4gICAgICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XHJcbiAgIH07XHJcbn1cclxuXHJcbi8qKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGBpbmRlbnRgIG9wdGlvbiAqL1xyXG5leHBvcnQgY29uc3QgSU5ERU5UID0gNDU7XHJcblxyXG4vKiogQW4gb3B0aW9ucyBvYmplY3Qgd2l0aCBkZWZhdWx0IHZhbHVlcyBsb2FkZWQgd2hlcmUgYXBwbGljYWJsZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNCYXNlIGV4dGVuZHMgTGltYmxlVHJlZU9wdGlvbnMge1xyXG4gICBkZWZhdWx0Q29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICBpbmRlbnQ6IG51bWJlcjtcclxuICAgYWxsb3dOZXN0aW5nOiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICBhbGxvd0RyYWdnaW5nOiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICBhbGxvd0Ryb3A6IChcclxuICAgICAgc291cmNlTm9kZTogTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgIHByb3Bvc2VkUGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGwsXHJcbiAgICAgIHByb3Bvc2VkSW5kZXg6IG51bWJlclxyXG4gICApID0+IGJvb2xlYW47XHJcbiAgIGxpc3RNb2RlOiBib29sZWFuO1xyXG4gICBpdGVtc1BlclBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICAgcGFnZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNXaXRoUGFnaW5hdGlvbiBleHRlbmRzIFByb2Nlc3NlZE9wdGlvbnNCYXNlIHtcclxuICAgbGlzdE1vZGU6IHRydWU7XHJcbiAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gICBwYWdlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkT3B0aW9uc1dpdGhvdXRQYWdpbmF0aW9uXHJcbiAgIGV4dGVuZHMgUHJvY2Vzc2VkT3B0aW9uc0Jhc2Uge1xyXG4gICBsaXN0TW9kZTogZmFsc2U7XHJcbiAgIGl0ZW1zUGVyUGFnZTogdW5kZWZpbmVkO1xyXG4gICBwYWdlOiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb2Nlc3NlZE9wdGlvbnMgPVxyXG4gICB8IFByb2Nlc3NlZE9wdGlvbnNXaXRoUGFnaW5hdGlvblxyXG4gICB8IFByb2Nlc3NlZE9wdGlvbnNXaXRob3V0UGFnaW5hdGlvbjtcclxuXHJcbi8qKiB0aGUgdmFsdWUgZW1pdHRlZCBmcm9tIHRoZSByb290IGNvbXBvbmVudCBhZnRlciBhIG5vZGUgaXMgZHJvcHBlZCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVEcm9wIHtcclxuICAgLyoqIFRoZSBub2RlIHRoYXQgd2FzIGRyb3BwZWQgKi9cclxuICAgdGFyZ2V0OiBMaW1ibGVUcmVlTm9kZTtcclxuICAgLyoqIHRoZSB0YXJnZXQncyBwYXJlbnQgYmVmb3JlIHRoZSBkcmFnIGFuZCBkcm9wLCBvciBudWxsIGlmIGl0IHdhcyBhIHRvcC1sZXZlbCBub2RlICovXHJcbiAgIG9sZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsO1xyXG4gICAvKiogdGhlIGluZGV4IG9mIHRoZSBub2RlIGJlZm9yZSB0aGUgZHJhZyBhbmQgZHJvcCByZWxhdGl2ZSB0byBpdHMgb2xkIHNpYmxpbmdzICovXHJcbiAgIG9sZEluZGV4OiBudW1iZXI7XHJcbiAgIC8qKiB0aGUgdGFyZ2V0J3MgcGFyZW50IGFmdGVyIHRoZSBkcmFnIGFuZCBkcm9wLCBvciBudWxsIGlmIGl0IGlzIG5vdyBhIHRvcC1sZXZlbCBub2RlICovXHJcbiAgIG5ld1BhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsO1xyXG4gICAvKiogdGhlIGluZGV4IG9mIHRoZSBub2RlIGFmdGVyIHRoZSBkcmFnIGFuZCBkcm9wIHJlbGF0aXZlIHRvIGl0cyBuZXcgc2libGluZ3MgKi9cclxuICAgbmV3SW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJlZVNlcnZpY2Uge1xyXG4gICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlcyQ6IFN1YmplY3Q8bnVsbD47XHJcbiAgIHB1YmxpYyByZWFkb25seSBkcm9wcyQ6IFN1YmplY3Q8VHJlZURyb3A+O1xyXG4gICBwdWJsaWMgaG9zdDogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHRyZWVEYXRhOiBMaW1ibGVUcmVlRGF0YSB8IHVuZGVmaW5lZDtcclxuICAgLyoqIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYXNzaWduZWQuIEl0IGlzIGFzc2lnbmVkIGluIGluaXQoKSBhbmQgbm8gd2hlcmUgZWxzZS4gV2UgbmVlZCB0byBrZWVwIHRoZSByZWZlcmVuY2UgZnJvbSBicmVha2luZy4gKi9cclxuICAgcHJpdmF0ZSBvcmlnaW5hbERhdGE6IExpbWJsZVRyZWVEYXRhIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgdHJlZU9wdGlvbnM6IFByb2Nlc3NlZE9wdGlvbnMgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB0cmVlTW9kZWw6IEJyYW5jaDxhbnk+O1xyXG4gICBwcml2YXRlIHBsYWNlaG9sZGVyOiBib29sZWFuO1xyXG4gICBwdWJsaWMgY2FwdHVyZWQ6IGJvb2xlYW47XHJcbiAgIHB1YmxpYyByZWFkb25seSBjbGVhbnVwU2lnbmFsJDogU3ViamVjdDxib29sZWFuPjtcclxuICAgcHJpdmF0ZSBzeW5jaHJvbml6ZXI6IGJvb2xlYW47XHJcbiAgIHB1YmxpYyBwbGFjZWhvbGRlciQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudENyZWF0b3JTZXJ2aWNlOiBDb21wb25lbnRDcmVhdG9yU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wWm9uZVNlcnZpY2U6IERyb3Bab25lU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcmFnU3RhdGVTZXJ2aWNlOiBEcmFnU3RhdGVTZXJ2aWNlXHJcbiAgICkge1xyXG4gICAgICB0aGlzLmNoYW5nZXMkID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5kcm9wcyQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICB0aGlzLnRyZWVNb2RlbCA9IG5ldyBCcmFuY2gobnVsbCk7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jYXB0dXJlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNsZWFudXBTaWduYWwkID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgbGV0IHJlYnVpbGQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jbGVhbnVwU2lnbmFsJFxyXG4gICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICByZWJ1aWxkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoNSlcclxuICAgICAgICAgKVxyXG4gICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhbnVwKHJlYnVpbGQpO1xyXG4gICAgICAgICAgICByZWJ1aWxkID0gZmFsc2U7XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICB0aGlzLnN5bmNocm9uaXplciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB2YWx1ZTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcm9wKHNvdXJjZTogQnJhbmNoPGFueT4sIHRhcmdldENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcykge1xyXG4gICAgICAvL3ByZXBcclxuICAgICAgY29uc3Qgc291cmNlUGFyZW50ID0gc291cmNlLmdldFBhcmVudCgpO1xyXG4gICAgICBpZiAoc291cmNlUGFyZW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhbid0IGRyb3Agcm9vdCBvZiB0cmVlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gc291cmNlLmdldEluZGV4KCk7XHJcbiAgICAgIGlmIChzb3VyY2VJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHNvdXJjZUluZGV4ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtb3ZlIHRoZSBoaWRkZW4gcm9vdCBub2RlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0YXJnZXRQYXJlbnRDb29yZGluYXRlczogQnJhbmNoQ29vcmRpbmF0ZXM7XHJcbiAgICAgIGxldCBuZXdJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlcyA9IFtdO1xyXG4gICAgICAgICBuZXdJbmRleCA9IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRhcmdldFBhcmVudENvb3JkaW5hdGVzID0gWy4uLnRhcmdldENvb3JkaW5hdGVzXTtcclxuICAgICAgICAgbmV3SW5kZXggPSB0YXJnZXRQYXJlbnRDb29yZGluYXRlcy5wb3AoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobmV3SW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0YXJnZXQgY29vcmRpbmF0ZXMgYXJlIGVtcHR5XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRhcmdldFBhcmVudCA9IHRoaXMudHJlZU1vZGVsLmdldERlc2NlbmRhbnQoXHJcbiAgICAgICAgIHRhcmdldFBhcmVudENvb3JkaW5hdGVzXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0YXJnZXRQYXJlbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZCBub3QgZ2V0IHRvIHRhcmdldFwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmRyb3Bab25lU2VydmljZS5nZXREcm9wWm9uZSh0YXJnZXRDb29yZGluYXRlcyk7XHJcbiAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gdGFyZ2V0Py5nZXRMb2NhdGlvbigpLmluc2VydEluZGV4O1xyXG4gICAgICBjb25zdCB0YXJnZXRIb3N0ID0gdGFyZ2V0Py5nZXRIb3N0KCk7XHJcbiAgICAgIGNvbnN0IHNvdXJjZUhvc3QgPSB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0RGF0YSgpPy5wYXJlbnRDb250YWluZXI7XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vQ2hhbmdlIHRoZSB0cmVlTW9kZWxcclxuICAgICAgdGFyZ2V0UGFyZW50Lmluc2VydENoaWxkKHNvdXJjZSwgbmV3SW5kZXgpO1xyXG4gICAgICAvL1ByZXBhcmUgdG8gdXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGFyZ2V0SG9zdCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHNvdXJjZUhvc3QgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0YXJnZXRJbmRleCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICAvL0hpdHRpbmcgdGhpcyBtZWFucyB0aGVyZSBpcyBhIGJ1ZywgYnV0IG5vdCBhIGZhdGFsIG9uZS5cclxuICAgICAgICAgLy9KdXN0IHJlbmRlciB0aGUgd2hvbGUgdHJlZSBhZ2Fpbi5cclxuICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBwZXJmb3JtIGEgcHJlY2lzZSB1cGRhdGUuIFJlLXJlbmRlcmluZyB0aGUgZW50aXJlIHRyZWUgaW5zdGVhZFwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChudWxsKTtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8vVXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgIGNvbnN0IG5vZGVzSW5Tb3VyY2UgPSBzb3VyY2VIb3N0Lmxlbmd0aDtcclxuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRDcmVhdG9yU2VydmljZS5hcHBlbmRDb21wb25lbnQoXHJcbiAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICB0YXJnZXRIb3N0LFxyXG4gICAgICAgICBuZXdJbmRleFxyXG4gICAgICApO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gc291cmNlO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFyZW50SG9zdCA9IHRhcmdldEhvc3Q7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGFyZ2V0SW5kZXggPCBzb3VyY2VJbmRleCAmJlxyXG4gICAgICAgICBzb3VyY2VIb3N0Lmxlbmd0aCA+IG5vZGVzSW5Tb3VyY2UgJiZcclxuICAgICAgICAgYXJyYXlzQXJlRXF1YWwoc291cmNlUGFyZW50LmdldENvb3JkaW5hdGVzKCksIHRhcmdldFBhcmVudENvb3JkaW5hdGVzKVxyXG4gICAgICApIHtcclxuICAgICAgICAgc291cmNlSG9zdC5yZW1vdmUoc291cmNlSW5kZXggKyAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgc291cmNlSG9zdC5yZW1vdmUoc291cmNlSW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vVXBkYXRlIHRoZSB0cmVlIGRhdGFcclxuICAgICAgdGhpcy5yZWJ1aWxkVHJlZURhdGEoKTtcclxuICAgICAgLy9QdWJsaXNoIGRyb3AgZGF0YVxyXG4gICAgICB0aGlzLmRyb3BzJC5uZXh0KHtcclxuICAgICAgICAgdGFyZ2V0OiBzb3VyY2UuZGF0YSxcclxuICAgICAgICAgb2xkUGFyZW50OiBzb3VyY2VQYXJlbnQuZGF0YSBhcyBMaW1ibGVUcmVlTm9kZSxcclxuICAgICAgICAgb2xkSW5kZXg6IHNvdXJjZUluZGV4LFxyXG4gICAgICAgICBuZXdQYXJlbnQ6IHRhcmdldFBhcmVudC5kYXRhLFxyXG4gICAgICAgICBuZXdJbmRleDogbmV3SW5kZXhcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2xlYW51cFNpZ25hbCQubmV4dChmYWxzZSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBJbml0aWFsaXplcyB0aGUgc2VydmljZSBhbmQgcmVuZGVycyB0aGUgdHJlZS5cclxuICAgICogQHBhcmFtIGhvc3QgLSBUaGUgVmlld0NvbnRhaW5lclJlZiBpbnRvIHdoaWNoIHRoZSB0cmVlIHdpbGwgYmUgcmVuZGVyZWQuXHJcbiAgICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgYXJyYXkgdGhhdCB3YXMgcGFzc2VkIGluIHRvIExpbWJsZVRyZWVSb290LCB3aGljaCBpc1xyXG4gICAgKiB0aGUgdXNlcnMnIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0cmVlXHJcbiAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IHRoYXQgd2FzIHBhc3NlZCBpbiB0byBMaW1ibGVUcmVlUm9vdFxyXG4gICAgKi9cclxuICAgcHVibGljIGluaXQoXHJcbiAgICAgIGhvc3Q6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgIGRhdGE6IExpbWJsZVRyZWVEYXRhLFxyXG4gICAgICBvcHRpb25zPzogTGltYmxlVHJlZU9wdGlvbnMsXHJcbiAgICAgIGl0ZW1zUGVyUGFnZT86IG51bWJlcixcclxuICAgICAgcGFnZT86IG51bWJlclxyXG4gICApOiB2b2lkIHtcclxuICAgICAgdGhpcy5ob3N0ID0gaG9zdDtcclxuICAgICAgdGhpcy5vcmlnaW5hbERhdGEgPSBkYXRhO1xyXG4gICAgICB0aGlzLnRyZWVPcHRpb25zID0gdGhpcy5wcm9jZXNzT3B0aW9ucyhvcHRpb25zLCBpdGVtc1BlclBhZ2UsIHBhZ2UpO1xyXG4gICAgICBpZiAodGhpcy50cmVlT3B0aW9ucy5saXN0TW9kZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICBsZXQgc3RhcnQgPVxyXG4gICAgICAgICAgICB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZSAqICh0aGlzLnRyZWVPcHRpb25zLnBhZ2UgLSAxKTtcclxuICAgICAgICAgaWYgKGlzTmFOKHN0YXJ0KSkge1xyXG4gICAgICAgICAgICAvL1RoaXMgY2F0Y2hlcyB0aGUgY2FzZSB3aGVyZSBpdGVtc1BlclBhZ2Ugd2FzIG5vdCBwYXNzZWQgYnkgdGhlIHVzZXIsXHJcbiAgICAgICAgICAgIC8vY2F1c2luZyBgc3RhcnRgIHRvIGVxdWFsIGluZmluaXR5KjAsIHdoaWNoIGlzIE5hTi5cclxuICAgICAgICAgICAgc3RhcnQgPSAwO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPSB0aGlzLm9yaWdpbmFsRGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9IFsuLi50aGlzLm9yaWdpbmFsRGF0YV07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zeW5jaHJvbml6ZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBjbGVhbnVwKHJlYnVpbGQgPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgICBpZiAocmVidWlsZCkge1xyXG4gICAgICAgICB0aGlzLnJlYnVpbGRUcmVlRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRyZWVEYXRhPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgLy9XZSBkbyBhIGZ1bGwgcmVuZGVyIGhlcmUgYmVjYXVzZSBpdCBpc24ndCBhY3R1YWxseSBhbnkgc2xvd2VyXHJcbiAgICAgICAgIC8vd2hlbiB0aGVyZSBhcmUgbm8gbm9kZXMsIGFuZCBpdCBzYXZlcyB1cyBmcm9tIGhhdmluZyB0byBoYW5kbGVcclxuICAgICAgICAgLy9zb21lIHJhY2UgY29uZGl0aW9ucyB3aXRoIHRoZSBwbGFjZWhvbGRlciBjb21wb25lbnRcclxuICAgICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy5jaGFuZ2VzJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS51cGRhdGUoKTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICAvKiogUmVuZGVycyB0aGUgZW50aXJlIHRyZWUgZnJvbSByb290IHRvIGxlYXZlcyAqL1xyXG4gICBwcml2YXRlIHJlbmRlcigpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLmhvc3QgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgdGhpcy50cmVlT3B0aW9ucyA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaG9zdC5jbGVhcigpO1xyXG4gICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5yZXN0YXJ0KCk7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLnRyZWVNb2RlbCA9IG5ldyBCcmFuY2gobnVsbCk7XHJcbiAgICAgIGlmICh0aGlzLnRyZWVEYXRhLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAvL1RyZWUgaXMgZW1wdHksIGJ1dCB3ZSBoYXZlIHRvIHRvIGhhdmUgc29tZXRoaW5nIHRoZXJlIHNvIG90aGVyIHRyZWVzJyBpdGVtcyBjYW4gYmUgZHJvcHBlZCBpbnRvIGl0XHJcbiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIkLm5leHQodHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLnRyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IG5ldyBCcmFuY2gobm9kZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU1vZGVsLmFwcGVuZENoaWxkKGJyYW5jaCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgdGhpcy50cmVlTW9kZWwuZ2V0Q2hpbGRyZW4oKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhcmVudEhvc3QgPSB0aGlzLmhvc3Q7XHJcbiAgICAgICAgICAgIC8vVGhlIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IHdpbGwgKGluZGlyZWN0bHkpIGNhbGwgdGhlIGByZW5kZXJCcmFuY2hgIG1ldGhvZCBvZiB0aGlzIHNlcnZpY2UgdG8gcmVuZGVyXHJcbiAgICAgICAgICAgIC8vaXRzIG93biBjaGlsZHJlblxyXG4gICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zeW5jaHJvbml6ZXIgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChudWxsKTtcclxuICAgICAgICAgaWYgKHRoaXMuc3luY2hyb25pemVyID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAvL1RoZSB0cmVlIHNlcnZpY2UgaGFzIGJlZW4gcmVpbml0aWFsaXplZCBzaW5jZSB0aGlzIHRpbWVvdXQgd2FzIGNhbGxlZC5cclxuICAgICAgICAgICAgLy9UaGUgbmV3IHRyZWUgZGF0YSB3aWxsIGp1c3Qgb3ZlcndyaXRlIHRoZSBkcm9wIHpvbmUgZGF0YSBhbnl3YXksIHNvXHJcbiAgICAgICAgICAgIC8vd2UgY2FuIHNraXAgdGhlIGRyb3Agem9uZSBpbml0aWFsaXphdGlvbiBvbiB0aGlzIHJvdW5kIGZvciBlZmZpY2llbmN5XHJcbiAgICAgICAgICAgIC8vYW5kIGFsc28gdG8gYXZvaWQgc29tZSBwb3NzaWJsZSAoPykgcmFjZSBjb25kaXRpb25zXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgfVxyXG4gICAgICAgICB0aGlzLnN5bmNocm9uaXplciA9IGZhbHNlO1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5pbml0KHRoaXMudHJlZU1vZGVsLCB0aGlzLnRyZWVPcHRpb25zKTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBSZW5kZXJzIGEgYnJhbmNoIG9mIHRoZSB0cmVlIGFuZCBhbGwgb2YgaXRzIGRlc2NlbmRhbnRzICovXHJcbiAgIHB1YmxpYyByZW5kZXJCcmFuY2goaG9zdDogVmlld0NvbnRhaW5lclJlZiwgYnJhbmNoOiBCcmFuY2g8YW55Pikge1xyXG4gICAgICBpZiAodGhpcy50cmVlTW9kZWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGhvc3QuY2xlYXIoKTtcclxuICAgICAgYnJhbmNoLmNsZWFyQ2hpbGRyZW4oKTtcclxuICAgICAgZm9yIChjb25zdCBub2RlIG9mIGJyYW5jaC5kYXRhPy5ub2RlcyA/PyBbXSkge1xyXG4gICAgICAgICBjb25zdCBuZXdCcmFuY2ggPSBuZXcgQnJhbmNoKG5vZGUpO1xyXG4gICAgICAgICBicmFuY2guYXBwZW5kQ2hpbGQobmV3QnJhbmNoKTtcclxuICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRDcmVhdG9yU2VydmljZS5hcHBlbmRDb21wb25lbnQ8TGltYmxlVHJlZU5vZGVDb21wb25lbnQ+KFxyXG4gICAgICAgICAgICBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCxcclxuICAgICAgICAgICAgaG9zdFxyXG4gICAgICAgICApO1xyXG4gICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gbmV3QnJhbmNoO1xyXG4gICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFyZW50SG9zdCA9IGhvc3Q7XHJcbiAgICAgICAgIC8vVGhlIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IHdpbGwgKGluZGlyZWN0bHkpIGNhbGwgdGhlIGByZW5kZXJCcmFuY2hgIG1ldGhvZCBvZiB0aGlzIHNlcnZpY2UgdG8gcmVuZGVyXHJcbiAgICAgICAgIC8vaXRzIG93biBjaGlsZHJlblxyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcHJvY2Vzc09wdGlvbnMoXHJcbiAgICAgIG9wdGlvbnM6IExpbWJsZVRyZWVPcHRpb25zID0ge30sXHJcbiAgICAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gSW5maW5pdHksXHJcbiAgICAgIHBhZ2U6IG51bWJlciA9IDFcclxuICAgKTogUHJvY2Vzc2VkT3B0aW9ucyB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgb3B0aW9ucy5saXN0TW9kZSA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgICBvcHRpb25zLmFsbG93TmVzdGluZyAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgIG9wdGlvbnMuYWxsb3dOZXN0aW5nICE9PSBmYWxzZVxyXG4gICAgICApIHtcclxuICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICBcIlRoZSB2YWx1ZSBvZiBgYWxsb3dOZXN0aW5nYCB3aWxsIGJlIGlnbm9yZWQ7IGl0IG11c3QgYmUgZmFsc2Ugd2hlbiBgbGlzdE1vZGVgIGlzIHRydWVcIlxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogUHJvY2Vzc2VkT3B0aW9uc0Jhc2UgPSB7XHJcbiAgICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IG9wdGlvbnMuZGVmYXVsdENvbXBvbmVudCxcclxuICAgICAgICAgaW5kZW50OiBvcHRpb25zLmluZGVudCA/PyBJTkRFTlQsXHJcbiAgICAgICAgIGFsbG93TmVzdGluZzpcclxuICAgICAgICAgICAgb3B0aW9ucy5saXN0TW9kZSAhPT0gdHJ1ZSAmJiAob3B0aW9ucy5hbGxvd05lc3RpbmcgPz8gdHJ1ZSksXHJcbiAgICAgICAgIGFsbG93RHJhZ2dpbmc6IG9wdGlvbnMuYWxsb3dEcmFnZ2luZyA/PyB0cnVlLFxyXG4gICAgICAgICBhbGxvd0Ryb3A6IG9wdGlvbnMuYWxsb3dEcm9wID8/ICgoKSA9PiB0cnVlKSxcclxuICAgICAgICAgbGlzdE1vZGU6IG9wdGlvbnMubGlzdE1vZGUgPz8gZmFsc2UsXHJcbiAgICAgICAgIGl0ZW1zUGVyUGFnZTogb3B0aW9ucy5saXN0TW9kZSA/IGl0ZW1zUGVyUGFnZSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgcGFnZTogb3B0aW9ucy5saXN0TW9kZSA/IHBhZ2UgOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyBQcm9jZXNzZWRPcHRpb25zO1xyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlYnVpbGRUcmVlRGF0YSgpOiB2b2lkIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWUgZGF0YSBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmVlRGF0YSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEucHVzaCh0aGlzLnJlYnVpbGRCcmFuY2goYnJhbmNoKSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zLmxpc3RNb2RlID09PSB0cnVlICYmXHJcbiAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlIDwgSW5maW5pdHlcclxuICAgICAgKSB7XHJcbiAgICAgICAgIGNvbnN0IHN0YXJ0ID1cclxuICAgICAgICAgICAgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2UgKiAodGhpcy50cmVlT3B0aW9ucy5wYWdlIC0gMSk7XHJcbiAgICAgICAgIHRoaXMub3JpZ2luYWxEYXRhLnNwbGljZShcclxuICAgICAgICAgICAgc3RhcnQsXHJcbiAgICAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlLFxyXG4gICAgICAgICAgICAuLi50aGlzLnRyZWVEYXRhXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMub3JpZ2luYWxEYXRhLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgIHRoaXMub3JpZ2luYWxEYXRhLnB1c2goLi4udGhpcy50cmVlRGF0YSk7XHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSByZWJ1aWxkQnJhbmNoKGJyYW5jaDogQnJhbmNoPGFueT4pOiBMaW1ibGVUcmVlTm9kZSB7XHJcbiAgICAgIGNvbnN0IHRlbXA6IExpbWJsZVRyZWVOb2RlID0gYnJhbmNoLmRhdGE7XHJcbiAgICAgIHRlbXAubm9kZXMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBicmFuY2guZ2V0Q2hpbGRyZW4oKSkge1xyXG4gICAgICAgICB0ZW1wLm5vZGVzLnB1c2godGhpcy5yZWJ1aWxkQnJhbmNoKGNoaWxkKSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRlbXA7XHJcbiAgIH1cclxufVxyXG4iXX0=

@@ -103,3 +103,4 @@ import { Type, ViewContainerRef } from "@angular/core";

treeData: LimbleTreeData | undefined;
private uncutData;
/** This should never be reassigned. It is assigned in init() and no where else. We need to keep the reference from breaking. */
private originalData;
treeOptions: ProcessedOptions | undefined;

@@ -109,3 +110,3 @@ treeModel: Branch<any>;

captured: boolean;
readonly cleanupSignal$: Subject<null>;
readonly cleanupSignal$: Subject<boolean>;
private synchronizer;

@@ -112,0 +113,0 @@ placeholder$: BehaviorSubject<boolean>;

{
"name": "@limble/limble-tree",
"version": "0.11.3",
"version": "0.11.4",
"peerDependencies": {

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

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 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