Socket
Socket
Sign inDemoInstall

@limble/limble-tree

Package Overview
Dependencies
5
Maintainers
2
Versions
50
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.10.1 to 0.11.0

2

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

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

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

@@ -7,2 +7,3 @@ import { arraysAreEqual } from "../util";

this.location = new DropZoneLocation(parentCoordinates, insertIndex);
this.rendered = false;
this.visible = false;

@@ -15,2 +16,14 @@ this.active = false;

}
isRendered(set = undefined) {
if (set !== undefined) {
this.rendered = set;
if (this.commChannel !== undefined) {
this.commChannel.next("checkRendered");
}
if (this.rendered === false) {
this.isVisible(false);
}
}
return this.rendered;
}
isVisible(set = undefined) {

@@ -52,3 +65,10 @@ if (set !== undefined) {

}
setHost(host) {
this.host = host;
return this.host;
}
getHost() {
return this.host;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcFpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NsYXNzZXMvRHJvcFpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXRELE1BQU0sT0FBTyxRQUFRO0lBaUJsQixZQUNHLGlCQUFvQyxFQUNwQyxXQUFtQjtRQUVuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUF4Qk0sTUFBTSxDQUFDLHlCQUF5QixDQUNwQyxNQUFtQyxFQUNuQyxNQUFtQztRQUVuQyxPQUFPLGNBQWMsQ0FDbEIsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQ2pDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQWtCTSxTQUFTLENBQUMsTUFBMkIsU0FBUztRQUNsRCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDeEM7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFO2dCQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxNQUEyQixTQUFTO1FBQ2pELElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUN2QztTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxTQUFTO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxTQUFTLENBQUMsTUFBc0I7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVNLGNBQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFTSx3QkFBd0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbkQsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJhbmNoQ29vcmRpbmF0ZXMgfSBmcm9tIFwiLi9CcmFuY2hcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmVGYW1pbHkgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcm9vdC9kcm9wLXpvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBhcnJheXNBcmVFcXVhbCB9IGZyb20gXCIuLi91dGlsXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZUxvY2F0aW9uIH0gZnJvbSBcIi4vRHJvcFpvbmVMb2NhdGlvblwiO1xyXG5cclxuZXhwb3J0IHR5cGUgQ29tbU1lc3NhZ2UgPSBcImNoZWNrQWN0aXZlXCIgfCBcImNoZWNrVmlzaWJsZVwiIHwgXCJjaGVja0JvdGhcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBEcm9wWm9uZSB7XHJcbiAgIHB1YmxpYyBzdGF0aWMgZHJvcFpvbmVMb2NhdGlvbnNBcmVFcXVhbChcclxuICAgICAgdmFsdWVBOiBEcm9wWm9uZSB8IERyb3Bab25lTG9jYXRpb24sXHJcbiAgICAgIHZhbHVlQjogRHJvcFpvbmUgfCBEcm9wWm9uZUxvY2F0aW9uXHJcbiAgICkge1xyXG4gICAgICByZXR1cm4gYXJyYXlzQXJlRXF1YWwoXHJcbiAgICAgICAgIHZhbHVlQS5nZXRGdWxsSW5zZXJ0Q29vcmRpbmF0ZXMoKSxcclxuICAgICAgICAgdmFsdWVCLmdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpXHJcbiAgICAgICk7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IERyb3Bab25lTG9jYXRpb247XHJcbiAgIHByaXZhdGUgdmlzaWJsZTogYm9vbGVhbjtcclxuICAgcHJpdmF0ZSBhY3RpdmU6IGJvb2xlYW47XHJcbiAgIHByaXZhdGUgZmFtaWx5OiBEcm9wWm9uZUZhbWlseSB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSBjb21tQ2hhbm5lbDogU3ViamVjdDxDb21tTWVzc2FnZT47XHJcblxyXG4gICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICAgIHBhcmVudENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcyxcclxuICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlclxyXG4gICApIHtcclxuICAgICAgdGhpcy5sb2NhdGlvbiA9IG5ldyBEcm9wWm9uZUxvY2F0aW9uKHBhcmVudENvb3JkaW5hdGVzLCBpbnNlcnRJbmRleCk7XHJcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1DaGFubmVsID0gbmV3IFN1YmplY3QoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGlzVmlzaWJsZShzZXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBEcm9wWm9uZVtcInZpc2libGVcIl0ge1xyXG4gICAgICBpZiAoc2V0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhpcy52aXNpYmxlID0gc2V0O1xyXG4gICAgICAgICBpZiAodGhpcy5jb21tQ2hhbm5lbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbUNoYW5uZWwubmV4dChcImNoZWNrVmlzaWJsZVwiKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBpZiAodGhpcy52aXNpYmxlID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzQWN0aXZlKGZhbHNlKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnZpc2libGU7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBpc0FjdGl2ZShzZXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBEcm9wWm9uZVtcImFjdGl2ZVwiXSB7XHJcbiAgICAgIGlmIChzZXQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aGlzLmFjdGl2ZSA9IHNldDtcclxuICAgICAgICAgaWYgKHRoaXMuY29tbUNoYW5uZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1DaGFubmVsLm5leHQoXCJjaGVja0FjdGl2ZVwiKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldExvY2F0aW9uKCk6IERyb3Bab25lW1wibG9jYXRpb25cIl0ge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhdGlvbjtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldEZhbWlseSgpOiBEcm9wWm9uZVtcImZhbWlseVwiXSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZhbWlseTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHNldEZhbWlseShmYW1pbHk6IERyb3Bab25lRmFtaWx5KTogdm9pZCB7XHJcbiAgICAgIHRoaXMuZmFtaWx5ID0gZmFtaWx5O1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZ2V0Q29tbUNoYW5uZWwoKTogU3ViamVjdDxDb21tTWVzc2FnZT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb21tQ2hhbm5lbDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb24uZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCk7XHJcbiAgIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcFpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2NsYXNzZXMvRHJvcFpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBS3RELE1BQU0sT0FBTyxRQUFRO0lBbUJsQixZQUNHLGlCQUFvQyxFQUNwQyxXQUFtQjtRQUVuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUEzQk0sTUFBTSxDQUFDLHlCQUF5QixDQUNwQyxNQUFtQyxFQUNuQyxNQUFtQztRQUVuQyxPQUFPLGNBQWMsQ0FDbEIsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQ2pDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQXFCTSxVQUFVLENBQ2QsTUFBMkIsU0FBUztRQUVwQyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDekM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO2dCQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hCO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDeEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUEyQixTQUFTO1FBQ2xELElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUN4QztZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdkI7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQTJCLFNBQVM7UUFDakQsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1lBQ2xCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3ZDO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVNLFdBQVc7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDeEIsQ0FBQztJQUVNLFNBQVM7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFzQjtRQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRU0sY0FBYztRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVNLHdCQUF3QjtRQUM1QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU0sT0FBTyxDQUFDLElBQWtDO1FBQzlDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRU0sT0FBTztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNwQixDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFuY2hDb29yZGluYXRlcyB9IGZyb20gXCIuL0JyYW5jaFwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZUZhbWlseSB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1yb290L2Ryb3Atem9uZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGFycmF5c0FyZUVxdWFsIH0gZnJvbSBcIi4uL3V0aWxcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IERyb3Bab25lTG9jYXRpb24gfSBmcm9tIFwiLi9Ecm9wWm9uZUxvY2F0aW9uXCI7XHJcbmltcG9ydCB7IFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgQ29tbU1lc3NhZ2UgPSBcImNoZWNrQWN0aXZlXCIgfCBcImNoZWNrVmlzaWJsZVwiIHwgXCJjaGVja1JlbmRlcmVkXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcFpvbmUge1xyXG4gICBwdWJsaWMgc3RhdGljIGRyb3Bab25lTG9jYXRpb25zQXJlRXF1YWwoXHJcbiAgICAgIHZhbHVlQTogRHJvcFpvbmUgfCBEcm9wWm9uZUxvY2F0aW9uLFxyXG4gICAgICB2YWx1ZUI6IERyb3Bab25lIHwgRHJvcFpvbmVMb2NhdGlvblxyXG4gICApIHtcclxuICAgICAgcmV0dXJuIGFycmF5c0FyZUVxdWFsKFxyXG4gICAgICAgICB2YWx1ZUEuZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCksXHJcbiAgICAgICAgIHZhbHVlQi5nZXRGdWxsSW5zZXJ0Q29vcmRpbmF0ZXMoKVxyXG4gICAgICApO1xyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIGhvc3Q6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XHJcbiAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IERyb3Bab25lTG9jYXRpb247XHJcbiAgIHByaXZhdGUgdmlzaWJsZTogYm9vbGVhbjtcclxuICAgcHJpdmF0ZSBhY3RpdmU6IGJvb2xlYW47XHJcbiAgIHByaXZhdGUgcmVuZGVyZWQ6IGJvb2xlYW47XHJcbiAgIHByaXZhdGUgZmFtaWx5OiBEcm9wWm9uZUZhbWlseSB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSByZWFkb25seSBjb21tQ2hhbm5lbDogU3ViamVjdDxDb21tTWVzc2FnZT47XHJcblxyXG4gICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICAgIHBhcmVudENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcyxcclxuICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlclxyXG4gICApIHtcclxuICAgICAgdGhpcy5sb2NhdGlvbiA9IG5ldyBEcm9wWm9uZUxvY2F0aW9uKHBhcmVudENvb3JkaW5hdGVzLCBpbnNlcnRJbmRleCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbUNoYW5uZWwgPSBuZXcgU3ViamVjdCgpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgaXNSZW5kZXJlZChcclxuICAgICAgc2V0OiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXHJcbiAgICk6IERyb3Bab25lW1wicmVuZGVyZWRcIl0ge1xyXG4gICAgICBpZiAoc2V0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhpcy5yZW5kZXJlZCA9IHNldDtcclxuICAgICAgICAgaWYgKHRoaXMuY29tbUNoYW5uZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1DaGFubmVsLm5leHQoXCJjaGVja1JlbmRlcmVkXCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVkID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzVmlzaWJsZShmYWxzZSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJlZDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGlzVmlzaWJsZShzZXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBEcm9wWm9uZVtcInZpc2libGVcIl0ge1xyXG4gICAgICBpZiAoc2V0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhpcy52aXNpYmxlID0gc2V0O1xyXG4gICAgICAgICBpZiAodGhpcy5jb21tQ2hhbm5lbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbUNoYW5uZWwubmV4dChcImNoZWNrVmlzaWJsZVwiKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBpZiAodGhpcy52aXNpYmxlID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzQWN0aXZlKGZhbHNlKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLnZpc2libGU7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBpc0FjdGl2ZShzZXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBEcm9wWm9uZVtcImFjdGl2ZVwiXSB7XHJcbiAgICAgIGlmIChzZXQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aGlzLmFjdGl2ZSA9IHNldDtcclxuICAgICAgICAgaWYgKHRoaXMuY29tbUNoYW5uZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1DaGFubmVsLm5leHQoXCJjaGVja0FjdGl2ZVwiKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldExvY2F0aW9uKCk6IERyb3Bab25lW1wibG9jYXRpb25cIl0ge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhdGlvbjtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldEZhbWlseSgpOiBEcm9wWm9uZVtcImZhbWlseVwiXSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZhbWlseTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHNldEZhbWlseShmYW1pbHk6IERyb3Bab25lRmFtaWx5KTogdm9pZCB7XHJcbiAgICAgIHRoaXMuZmFtaWx5ID0gZmFtaWx5O1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZ2V0Q29tbUNoYW5uZWwoKTogU3ViamVjdDxDb21tTWVzc2FnZT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb21tQ2hhbm5lbDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb24uZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBzZXRIb3N0KGhvc3Q6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5ob3N0ID0gaG9zdDtcclxuICAgICAgcmV0dXJuIHRoaXMuaG9zdDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldEhvc3QoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhvc3Q7XHJcbiAgIH1cclxufVxyXG4iXX0=

@@ -9,3 +9,9 @@ export class DropZoneLocation {

}
setParentCoordinates(coordinates) {
this.parentCoordinates = coordinates;
}
setInsertIndex(index) {
this.insertIndex = index;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcFpvbmVMb2NhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY2xhc3Nlcy9Ecm9wWm9uZUxvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxnQkFBZ0I7SUFJMUIsWUFBWSxpQkFBb0MsRUFBRSxXQUFtQjtRQUNsRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVNLHdCQUF3QjtRQUM1QixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYW5jaENvb3JkaW5hdGVzIH0gZnJvbSBcIi4vQnJhbmNoXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcFpvbmVMb2NhdGlvbiB7XHJcbiAgIHB1YmxpYyBwYXJlbnRDb29yZGluYXRlczogQnJhbmNoQ29vcmRpbmF0ZXM7XHJcbiAgIHB1YmxpYyBpbnNlcnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAgY29uc3RydWN0b3IocGFyZW50Q29vcmRpbmF0ZXM6IEJyYW5jaENvb3JkaW5hdGVzLCBpbnNlcnRJbmRleDogbnVtYmVyKSB7XHJcbiAgICAgIHRoaXMucGFyZW50Q29vcmRpbmF0ZXMgPSBwYXJlbnRDb29yZGluYXRlcztcclxuICAgICAgdGhpcy5pbnNlcnRJbmRleCA9IGluc2VydEluZGV4O1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCkge1xyXG4gICAgICByZXR1cm4gWy4uLnRoaXMucGFyZW50Q29vcmRpbmF0ZXMsIHRoaXMuaW5zZXJ0SW5kZXhdO1xyXG4gICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcFpvbmVMb2NhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvY2xhc3Nlcy9Ecm9wWm9uZUxvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxnQkFBZ0I7SUFJMUIsWUFBWSxpQkFBb0MsRUFBRSxXQUFtQjtRQUNsRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVNLHdCQUF3QjtRQUM1QixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxXQUE4QjtRQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFuY2hDb29yZGluYXRlcyB9IGZyb20gXCIuL0JyYW5jaFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIERyb3Bab25lTG9jYXRpb24ge1xyXG4gICBwdWJsaWMgcGFyZW50Q29vcmRpbmF0ZXM6IEJyYW5jaENvb3JkaW5hdGVzO1xyXG4gICBwdWJsaWMgaW5zZXJ0SW5kZXg6IG51bWJlcjtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKHBhcmVudENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcywgaW5zZXJ0SW5kZXg6IG51bWJlcikge1xyXG4gICAgICB0aGlzLnBhcmVudENvb3JkaW5hdGVzID0gcGFyZW50Q29vcmRpbmF0ZXM7XHJcbiAgICAgIHRoaXMuaW5zZXJ0SW5kZXggPSBpbnNlcnRJbmRleDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpIHtcclxuICAgICAgcmV0dXJuIFsuLi50aGlzLnBhcmVudENvb3JkaW5hdGVzLCB0aGlzLmluc2VydEluZGV4XTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHNldFBhcmVudENvb3JkaW5hdGVzKGNvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcykge1xyXG4gICAgICB0aGlzLnBhcmVudENvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXM7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBzZXRJbnNlcnRJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgIHRoaXMuaW5zZXJ0SW5kZXggPSBpbmRleDtcclxuICAgfVxyXG59XHJcbiJdfQ==

@@ -1,4 +0,3 @@

import { Directive, EventEmitter, Input, Output } from "@angular/core";
import { Directive, EventEmitter, Output } from "@angular/core";
import { fromEvent } from "rxjs";
import { throttleTime } from "rxjs/operators";
import * as i0 from "@angular/core";

@@ -10,9 +9,6 @@ export class DragleaveNoChangeDetectDirective {

this.dragleaveNoChangeDetect = new EventEmitter();
this.dragleaveEventThrottle = 0;
}
ngOnInit() {
this.ngZone.runOutsideAngular(() => {
this.eventSubscription = fromEvent(this.el.nativeElement, "dragleave")
.pipe(throttleTime(this.dragleaveEventThrottle))
.subscribe(($event) => {
this.eventSubscription = fromEvent(this.el.nativeElement, "dragleave").subscribe(($event) => {
this.dragleaveNoChangeDetect.emit($event);

@@ -29,3 +25,3 @@ });

DragleaveNoChangeDetectDirective.ɵfac = function DragleaveNoChangeDetectDirective_Factory(t) { return new (t || DragleaveNoChangeDetectDirective)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef)); };
DragleaveNoChangeDetectDirective.ɵdir = i0.ɵɵdefineDirective({ type: DragleaveNoChangeDetectDirective, selectors: [["", "dragleaveNoChangeDetect", ""]], inputs: { dragleaveEventThrottle: "dragleaveEventThrottle" }, outputs: { dragleaveNoChangeDetect: "dragleaveNoChangeDetect" } });
DragleaveNoChangeDetectDirective.ɵdir = i0.ɵɵdefineDirective({ type: DragleaveNoChangeDetectDirective, selectors: [["", "dragleaveNoChangeDetect", ""]], outputs: { dragleaveNoChangeDetect: "dragleaveNoChangeDetect" } });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DragleaveNoChangeDetectDirective, [{

@@ -36,7 +32,5 @@ type: Directive,

}]
}], function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }]; }, { dragleaveEventThrottle: [{
type: Input
}], dragleaveNoChangeDetect: [{
}], function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }]; }, { dragleaveNoChangeDetect: [{
type: Output
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2xlYXZlLW5vLWNoYW5nZS1kZXRlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jdXN0b20tZXZlbnQtYmluZGluZ3MvZHJhZ2xlYXZlLW5vLWNoYW5nZS1kZXRlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUs5QyxNQUFNLE9BQU8sZ0NBQWdDO0lBSzFDLFlBQ29CLE1BQWMsRUFDZCxFQUF1QjtRQUR2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFFeEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDN0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUNyQixXQUFXLENBQ2I7aUJBQ0csSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztpQkFDL0MsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXO1FBQ1IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztJQUNKLENBQUM7O2dIQTlCUyxnQ0FBZ0M7cUVBQWhDLGdDQUFnQzt1RkFBaEMsZ0NBQWdDO2NBSDVDLFNBQVM7ZUFBQztnQkFDUixRQUFRLEVBQUUsMkJBQTJCO2FBQ3ZDO2tGQUVXLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNhLHVCQUF1QjtrQkFBekMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICBEaXJlY3RpdmUsXG4gICBFbGVtZW50UmVmLFxuICAgRXZlbnRFbWl0dGVyLFxuICAgSW5wdXQsXG4gICBOZ1pvbmUsXG4gICBPbkRlc3Ryb3ksXG4gICBPbkluaXQsXG4gICBPdXRwdXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRocm90dGxlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgIHNlbGVjdG9yOiBcIltkcmFnbGVhdmVOb0NoYW5nZURldGVjdF1cIlxufSlcbmV4cG9ydCBjbGFzcyBEcmFnbGVhdmVOb0NoYW5nZURldGVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgIEBJbnB1dCgpIGRyYWdsZWF2ZUV2ZW50VGhyb3R0bGU6IG51bWJlcjtcbiAgIEBPdXRwdXQoKSByZWFkb25seSBkcmFnbGVhdmVOb0NoYW5nZURldGVjdDogRXZlbnRFbWl0dGVyPERyYWdFdmVudD47XG4gICBwcml2YXRlIGV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWY8RWxlbWVudD5cbiAgICkge1xuICAgICAgdGhpcy5kcmFnbGVhdmVOb0NoYW5nZURldGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuICAgICAgdGhpcy5kcmFnbGVhdmVFdmVudFRocm90dGxlID0gMDtcbiAgIH1cblxuICAgbmdPbkluaXQoKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICB0aGlzLmV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PERyYWdFdmVudD4oXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcImRyYWdsZWF2ZVwiXG4gICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0aHJvdHRsZVRpbWUodGhpcy5kcmFnbGVhdmVFdmVudFRocm90dGxlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgdGhpcy5kcmFnbGVhdmVOb0NoYW5nZURldGVjdC5lbWl0KCRldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBuZ09uRGVzdHJveSgpIHtcbiAgICAgIGlmICh0aGlzLmV2ZW50U3Vic2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2xlYXZlLW5vLWNoYW5nZS1kZXRlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9jdXN0b20tZXZlbnQtYmluZGluZ3MvZHJhZ2xlYXZlLW5vLWNoYW5nZS1kZXRlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSixTQUFTLEVBRVQsWUFBWSxFQUlaLE1BQU0sRUFDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLGdDQUFnQztJQUkxQyxZQUNvQixNQUFjLEVBQ2QsRUFBdUI7UUFEdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBRXhDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxRQUFRO1FBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQ3JCLFdBQVcsQ0FDYixDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVztRQUNSLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7SUFDSixDQUFDOztnSEExQlMsZ0NBQWdDO3FFQUFoQyxnQ0FBZ0M7dUZBQWhDLGdDQUFnQztjQUg1QyxTQUFTO2VBQUM7Z0JBQ1IsUUFBUSxFQUFFLDJCQUEyQjthQUN2QztrRkFFcUIsdUJBQXVCO2tCQUF6QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgIERpcmVjdGl2ZSxcbiAgIEVsZW1lbnRSZWYsXG4gICBFdmVudEVtaXR0ZXIsXG4gICBOZ1pvbmUsXG4gICBPbkRlc3Ryb3ksXG4gICBPbkluaXQsXG4gICBPdXRwdXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuQERpcmVjdGl2ZSh7XG4gICBzZWxlY3RvcjogXCJbZHJhZ2xlYXZlTm9DaGFuZ2VEZXRlY3RdXCJcbn0pXG5leHBvcnQgY2xhc3MgRHJhZ2xlYXZlTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICBAT3V0cHV0KCkgcmVhZG9ubHkgZHJhZ2xlYXZlTm9DaGFuZ2VEZXRlY3Q6IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+O1xuICAgcHJpdmF0ZSBldmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmPEVsZW1lbnQ+XG4gICApIHtcbiAgICAgIHRoaXMuZHJhZ2xlYXZlTm9DaGFuZ2VEZXRlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKTtcbiAgIH1cblxuICAgbmdPbkluaXQoKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICB0aGlzLmV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PERyYWdFdmVudD4oXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcImRyYWdsZWF2ZVwiXG4gICAgICAgICApLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyYWdsZWF2ZU5vQ2hhbmdlRGV0ZWN0LmVtaXQoJGV2ZW50KTtcbiAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICB9XG5cbiAgIG5nT25EZXN0cm95KCkge1xuICAgICAgaWYgKHRoaXMuZXZlbnRTdWJzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgfVxufVxuIl19

@@ -37,3 +37,3 @@ import { ChangeDetectionStrategy, Component, Input } from "@angular/core";

.subscribe((message) => {
var _a, _b, _c, _d, _e, _f, _g, _h;
var _a, _b, _c, _d;
switch (message) {

@@ -48,5 +48,4 @@ case "checkVisible": {

}
case "checkBoth": {
this.visible = (_f = (_e = this.dropZone) === null || _e === void 0 ? void 0 : _e.isVisible()) !== null && _f !== void 0 ? _f : false;
this.active = (_h = (_g = this.dropZone) === null || _g === void 0 ? void 0 : _g.isActive()) !== null && _h !== void 0 ? _h : false;
case "checkRendered": {
//Do nothing. This message is for other subscribers
break;

@@ -84,2 +83,2 @@ }

}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC16b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZHJvcC16b25lL2Ryb3Atem9uZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2Ryb3Atem9uZS9kcm9wLXpvbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNKLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUdQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDUHZCLDhCQUFnRjtJQUFqRCxnTUFBZ0M7SUFDNUQseUJBQTREO0lBQy9ELGlCQUFNOzs7SUFERSxlQUFnRDtJQUFoRCxtRkFBZ0Q7O0FEaUJ4RCxNQUFNLE9BQU8saUJBQWlCO0lBTTNCLFlBQ29CLGVBQWdDLEVBQ2hDLGlCQUFvQztRQURwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUVyRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDdEQsT0FBTztTQUNUO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVNLFFBQVE7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztTQUNyRTtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUTthQUNqQyxjQUFjLEVBQUU7YUFDaEIsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7O1lBQ3BCLFFBQVEsT0FBTyxFQUFFO2dCQUNkLEtBQUssY0FBYyxDQUFDLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxPQUFPLGVBQUcsSUFBSSxDQUFDLFFBQVEsMENBQUUsU0FBUyxxQ0FBTSxLQUFLLENBQUM7b0JBQ25ELE1BQU07aUJBQ1I7Z0JBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQztvQkFDakIsSUFBSSxDQUFDLE1BQU0sZUFBRyxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLHFDQUFNLEtBQUssQ0FBQztvQkFDakQsTUFBTTtpQkFDUjtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxDQUFDO29CQUNmLElBQUksQ0FBQyxPQUFPLGVBQUcsSUFBSSxDQUFDLFFBQVEsMENBQUUsU0FBUyxxQ0FBTSxLQUFLLENBQUM7b0JBQ25ELElBQUksQ0FBQyxNQUFNLGVBQUcsSUFBSSxDQUFDLFFBQVEsMENBQUUsUUFBUSxxQ0FBTSxLQUFLLENBQUM7b0JBQ2pELE1BQU07aUJBQ1I7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7b0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2lCQUM1QzthQUNIO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDO0lBQ0osQ0FBQzs7a0ZBdERTLGlCQUFpQjtzREFBakIsaUJBQWlCO1FDbEI5QixrRUFFTTs7UUFGMkQsa0NBQWE7O3VGRGtCakUsaUJBQWlCO2NBTjdCLFNBQVM7ZUFBQztnQkFDUixRQUFRLEVBQUUsV0FBVztnQkFDckIsV0FBVyxFQUFFLDRCQUE0QjtnQkFDekMsU0FBUyxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQ3pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2pEO2tHQUVXLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgIENvbXBvbmVudCxcclxuICAgSW5wdXQsXHJcbiAgIE9uRGVzdHJveSxcclxuICAgT25Jbml0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmUgfSBmcm9tIFwiLi4vY2xhc3Nlcy9Ecm9wWm9uZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcm9vdC9kcm9wLXpvbmUuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgIHNlbGVjdG9yOiBcImRyb3Atem9uZVwiLFxyXG4gICB0ZW1wbGF0ZVVybDogXCIuL2Ryb3Atem9uZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICBzdHlsZVVybHM6IFtcIi4vZHJvcC16b25lLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcFpvbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgIEBJbnB1dCgpIGRyb3Bab25lOiBEcm9wWm9uZSB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSBjb21tU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuO1xyXG4gICBwdWJsaWMgYWN0aXZlOiBib29sZWFuO1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcFpvbmVTZXJ2aWNlOiBEcm9wWm9uZVNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgICkge1xyXG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyYWdlbnRlckhhbmRsZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bab25lID09PSB1bmRlZmluZWQgfHwgdGhpcy5hY3RpdmUgPT09IHRydWUpIHtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnN3YXBBY3RpdmVEcm9wWm9uZSh0aGlzLmRyb3Bab25lKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICBpZiAodGhpcy5kcm9wWm9uZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGRyb3Agem9uZSBvYmplY3QgYXQgY29tcG9uZW50IGluaXRpYWxpemF0aW9uXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbVN1YnNjcmlwdGlvbiA9IHRoaXMuZHJvcFpvbmVcclxuICAgICAgICAgLmdldENvbW1DaGFubmVsKClcclxuICAgICAgICAgLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgY2FzZSBcImNoZWNrVmlzaWJsZVwiOiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRoaXMuZHJvcFpvbmU/LmlzVmlzaWJsZSgpID8/IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBjYXNlIFwiY2hlY2tBY3RpdmVcIjoge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuZHJvcFpvbmU/LmlzQWN0aXZlKCkgPz8gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIGNhc2UgXCJjaGVja0JvdGhcIjoge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0aGlzLmRyb3Bab25lPy5pc1Zpc2libGUoKSA/PyBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0aGlzLmRyb3Bab25lPy5pc0FjdGl2ZSgpID8/IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVuaGFuZGxlZCBjb21tIG1lc3NhZ2VcIik7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgaWYgKHRoaXMuY29tbVN1YnNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRoaXMuY29tbVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZHJvcFpvbmVDb250YWluZXJcIiAoZHJhZ2VudGVyKT1cImRyYWdlbnRlckhhbmRsZXIoKVwiICpuZ0lmPVwidmlzaWJsZVwiPlxyXG4gICA8ZGl2IFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBhY3RpdmUsIHJlbGF0ZWQ6ICFhY3RpdmUgfVwiPjwvZGl2PlxyXG48L2Rpdj5cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC16b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvZHJvcC16b25lL2Ryb3Atem9uZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2Ryb3Atem9uZS9kcm9wLXpvbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNKLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUdQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDUHZCLDhCQUFnRjtJQUFqRCxnTUFBZ0M7SUFDNUQseUJBQTREO0lBQy9ELGlCQUFNOzs7SUFERSxlQUFnRDtJQUFoRCxtRkFBZ0Q7O0FEaUJ4RCxNQUFNLE9BQU8saUJBQWlCO0lBTTNCLFlBQ29CLGVBQWdDLEVBQ2hDLGlCQUFvQztRQURwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUVyRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDdEQsT0FBTztTQUNUO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVNLFFBQVE7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztTQUNyRTtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUTthQUNqQyxjQUFjLEVBQUU7YUFDaEIsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7O1lBQ3BCLFFBQVEsT0FBTyxFQUFFO2dCQUNkLEtBQUssY0FBYyxDQUFDLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxPQUFPLGVBQUcsSUFBSSxDQUFDLFFBQVEsMENBQUUsU0FBUyxxQ0FBTSxLQUFLLENBQUM7b0JBQ25ELE1BQU07aUJBQ1I7Z0JBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQztvQkFDakIsSUFBSSxDQUFDLE1BQU0sZUFBRyxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLHFDQUFNLEtBQUssQ0FBQztvQkFDakQsTUFBTTtpQkFDUjtnQkFDRCxLQUFLLGVBQWUsQ0FBQyxDQUFDO29CQUNuQixtREFBbUQ7b0JBQ25ELE1BQU07aUJBQ1I7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7b0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2lCQUM1QzthQUNIO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDO0lBQ0osQ0FBQzs7a0ZBckRTLGlCQUFpQjtzREFBakIsaUJBQWlCO1FDbEI5QixrRUFFTTs7UUFGMkQsa0NBQWE7O3VGRGtCakUsaUJBQWlCO2NBTjdCLFNBQVM7ZUFBQztnQkFDUixRQUFRLEVBQUUsV0FBVztnQkFDckIsV0FBVyxFQUFFLDRCQUE0QjtnQkFDekMsU0FBUyxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQ3pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2pEO2tHQUVXLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgIENvbXBvbmVudCxcclxuICAgSW5wdXQsXHJcbiAgIE9uRGVzdHJveSxcclxuICAgT25Jbml0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmUgfSBmcm9tIFwiLi4vY2xhc3Nlcy9Ecm9wWm9uZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcm9vdC9kcm9wLXpvbmUuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgIHNlbGVjdG9yOiBcImRyb3Atem9uZVwiLFxyXG4gICB0ZW1wbGF0ZVVybDogXCIuL2Ryb3Atem9uZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICBzdHlsZVVybHM6IFtcIi4vZHJvcC16b25lLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcFpvbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgIEBJbnB1dCgpIGRyb3Bab25lOiBEcm9wWm9uZSB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSBjb21tU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuO1xyXG4gICBwdWJsaWMgYWN0aXZlOiBib29sZWFuO1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcFpvbmVTZXJ2aWNlOiBEcm9wWm9uZVNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgICkge1xyXG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyYWdlbnRlckhhbmRsZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLmRyb3Bab25lID09PSB1bmRlZmluZWQgfHwgdGhpcy5hY3RpdmUgPT09IHRydWUpIHtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnN3YXBBY3RpdmVEcm9wWm9uZSh0aGlzLmRyb3Bab25lKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgICBpZiAodGhpcy5kcm9wWm9uZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGRyb3Agem9uZSBvYmplY3QgYXQgY29tcG9uZW50IGluaXRpYWxpemF0aW9uXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbVN1YnNjcmlwdGlvbiA9IHRoaXMuZHJvcFpvbmVcclxuICAgICAgICAgLmdldENvbW1DaGFubmVsKClcclxuICAgICAgICAgLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgY2FzZSBcImNoZWNrVmlzaWJsZVwiOiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRoaXMuZHJvcFpvbmU/LmlzVmlzaWJsZSgpID8/IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBjYXNlIFwiY2hlY2tBY3RpdmVcIjoge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuZHJvcFpvbmU/LmlzQWN0aXZlKCkgPz8gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIGNhc2UgXCJjaGVja1JlbmRlcmVkXCI6IHtcclxuICAgICAgICAgICAgICAgICAgLy9EbyBub3RoaW5nLiBUaGlzIG1lc3NhZ2UgaXMgZm9yIG90aGVyIHN1YnNjcmliZXJzXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5oYW5kbGVkIGNvbW0gbWVzc2FnZVwiKTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICBpZiAodGhpcy5jb21tU3Vic2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhpcy5jb21tU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkcm9wWm9uZUNvbnRhaW5lclwiIChkcmFnZW50ZXIpPVwiZHJhZ2VudGVySGFuZGxlcigpXCIgKm5nSWY9XCJ2aXNpYmxlXCI+XHJcbiAgIDxkaXYgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGFjdGl2ZSwgcmVsYXRlZDogIWFjdGl2ZSB9XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=

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

import * as i3 from "../drop-zone/drop-zone.component";
const _c0 = ["host"];
const _c0 = ["children"];
function LimbleTreeBranchComponent_drop_zone_1_Template(rf, ctx) { if (rf & 1) {

@@ -25,10 +25,17 @@ i0.ɵɵelement(0, "drop-zone", 3);

this.reRender();
this.setDropZoneHost();
this.changeDetectorRef.detectChanges();
}
reRender() {
if (this.host === undefined || this.branch === undefined) {
if (this.children === undefined || this.branch === undefined) {
throw new Error("Failed to render limble tree branch");
}
this.treeService.renderBranch(this.host, this.branch);
this.treeService.renderBranch(this.children, this.branch);
}
setDropZoneHost() {
if (this.children === undefined || this.dropZoneInside === undefined) {
throw new Error("Failed to add drop zone host");
}
this.dropZoneInside.setHost(this.children);
}
}

@@ -40,4 +47,4 @@ LimbleTreeBranchComponent.ɵfac = function LimbleTreeBranchComponent_Factory(t) { return new (t || LimbleTreeBranchComponent)(i0.ɵɵdirectiveInject(i1.TreeService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };

let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.host = _t.first);
} }, inputs: { branch: "branch", dropZoneInside: "dropZoneInside", renderDropZoneInside: "renderDropZoneInside" }, decls: 5, vars: 4, consts: [[3, "dropZone", 4, "ngIf"], [1, "limble-child-nodes", 3, "hidden"], ["host", ""], [3, "dropZone"]], template: function LimbleTreeBranchComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.children = _t.first);
} }, inputs: { branch: "branch", dropZoneInside: "dropZoneInside", renderDropZoneInside: "renderDropZoneInside" }, decls: 5, vars: 4, consts: [[3, "dropZone", 4, "ngIf"], [1, "limble-child-nodes", 3, "hidden"], ["children", ""], [3, "dropZone"]], template: function LimbleTreeBranchComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div");

@@ -65,5 +72,5 @@ i0.ɵɵtemplate(1, LimbleTreeBranchComponent_drop_zone_1_Template, 1, 1, "drop-zone", 0);

type: Input
}], host: [{
}], children: [{
type: ViewChild,
args: ["host", { read: ViewContainerRef }]
args: ["children", { read: ViewContainerRef }]
}], dropZoneInside: [{

@@ -74,2 +81,2 @@ type: Input

}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvbGltYmxlLXRyZWUtYnJhbmNoL2xpbWJsZS10cmVlLWJyYW5jaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLWJyYW5jaC9saW1ibGUtdHJlZS1icmFuY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdKLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ05wQiwrQkFHYTs7O0lBRFYsZ0RBQTJCOzs7QURjakMsTUFBTSxPQUFPLHlCQUF5QjtJQVluQyxZQUNvQixXQUF3QixFQUN4QixpQkFBb0M7O1FBRHBDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFFckQsSUFBSSxDQUFDLE1BQU0sU0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsMENBQUUsTUFBTSxDQUFDO1FBQ25ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDWixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTSxRQUFRO1FBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDekQ7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDOztrR0E5QlMseUJBQXlCOzhEQUF6Qix5QkFBeUI7K0JBR1IsZ0JBQWdCOzs7OztRQ3BCOUMsMkJBQW9DO1FBQ2pDLHNGQUdhO1FBQ2IsK0JBQTRFO1FBQ3pFLDJIQUFpQztRQUNwQyxpQkFBTztRQUNWLGlCQUFNOztRQVJELCtDQUE4QjtRQUU1QixlQUEwQjtRQUExQiwrQ0FBMEI7UUFHeEIsZUFBMEM7UUFBMUMsZ0VBQTBDOzt1RkRZdEMseUJBQXlCO2NBTHJDLFNBQVM7ZUFBQztnQkFDUixRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixXQUFXLEVBQUUscUNBQXFDO2dCQUNsRCxNQUFNLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQzthQUNqRDs4RkFFVyxNQUFNO2tCQUFkLEtBQUs7WUFFaUQsSUFBSTtrQkFBMUQsU0FBUzttQkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFJcEMsY0FBYztrQkFBdEIsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgIEFmdGVyVmlld0luaXQsXHJcbiAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICBDb21wb25lbnQsXHJcbiAgIElucHV0LFxyXG4gICBWaWV3Q2hpbGQsXHJcbiAgIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUcmVlU2VydmljZSB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZVwiO1xyXG5pbXBvcnQgdHlwZSB7IEJyYW5jaCB9IGZyb20gXCIuLi9jbGFzc2VzL0JyYW5jaFwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZSB9IGZyb20gXCIuLi9jbGFzc2VzL0Ryb3Bab25lXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgc2VsZWN0b3I6IFwibGltYmxlLXRyZWUtYnJhbmNoXCIsXHJcbiAgIHRlbXBsYXRlVXJsOiBcIi4vbGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgIHN0eWxlczogW1wiLi9saW1ibGUtdHJlZS1icmFuY2guY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpbWJsZVRyZWVCcmFuY2hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICAgQElucHV0KCkgYnJhbmNoOiBCcmFuY2g8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgIEBWaWV3Q2hpbGQoXCJob3N0XCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBwcml2YXRlIGhvc3Q6XHJcbiAgICAgIHwgVmlld0NvbnRhaW5lclJlZlxyXG4gICAgICB8IHVuZGVmaW5lZDtcclxuXHJcbiAgIEBJbnB1dCgpIGRyb3Bab25lSW5zaWRlOiBEcm9wWm9uZSB8IHVuZGVmaW5lZDtcclxuICAgQElucHV0KCkgcmVuZGVyRHJvcFpvbmVJbnNpZGU6IGJvb2xlYW47XHJcblxyXG4gICBwdWJsaWMgcmVhZG9ubHkgaW5kZW50O1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJlZVNlcnZpY2U6IFRyZWVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICApIHtcclxuICAgICAgdGhpcy5pbmRlbnQgPSB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVPcHRpb25zPy5pbmRlbnQ7XHJcbiAgICAgIHRoaXMucmVuZGVyRHJvcFpvbmVJbnNpZGUgPSBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLnJlUmVuZGVyKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgcmVSZW5kZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLmhvc3QgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZW5kZXIgbGltYmxlIHRyZWUgYnJhbmNoXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJlZVNlcnZpY2UucmVuZGVyQnJhbmNoKHRoaXMuaG9zdCwgdGhpcy5icmFuY2gpO1xyXG4gICB9XHJcbn1cclxuIiwiPGRpdiBbc3R5bGUubWFyZ2luTGVmdC5weF09XCJpbmRlbnRcIj5cclxuICAgPGRyb3Atem9uZVxyXG4gICAgICAqbmdJZj1cInJlbmRlckRyb3Bab25lSW5zaWRlXCJcclxuICAgICAgW2Ryb3Bab25lXT1cImRyb3Bab25lSW5zaWRlXCJcclxuICAgPjwvZHJvcC16b25lPlxyXG4gICA8c3BhbiBbaGlkZGVuXT1cImJyYW5jaCAmJiBicmFuY2guZGF0YS5jb2xsYXBzZWRcIiBjbGFzcz1cImxpbWJsZS1jaGlsZC1ub2Rlc1wiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2hvc3Q+PC9uZy10ZW1wbGF0ZT5cclxuICAgPC9zcGFuPlxyXG48L2Rpdj5cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvbGltYmxlLXRyZWUtYnJhbmNoL2xpbWJsZS10cmVlLWJyYW5jaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLWJyYW5jaC9saW1ibGUtdHJlZS1icmFuY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdKLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULGdCQUFnQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ05wQiwrQkFHYTs7O0lBRFYsZ0RBQTJCOzs7QURjakMsTUFBTSxPQUFPLHlCQUF5QjtJQVluQyxZQUNXLFdBQXdCLEVBQ2YsaUJBQW9DOztRQUQ3QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFFckQsSUFBSSxDQUFDLE1BQU0sU0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsMENBQUUsTUFBTSxDQUFDO1FBQ25ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVNLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLFFBQVE7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQzNELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN6RDtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxlQUFlO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7O2tHQXRDUyx5QkFBeUI7OERBQXpCLHlCQUF5QjsrQkFHSixnQkFBZ0I7Ozs7O1FDcEJsRCwyQkFBb0M7UUFDakMsc0ZBR2E7UUFDYiwrQkFBNEU7UUFDekUsMkhBQXFDO1FBQ3hDLGlCQUFPO1FBQ1YsaUJBQU07O1FBUkQsK0NBQThCO1FBRTVCLGVBQTBCO1FBQTFCLCtDQUEwQjtRQUd4QixlQUEwQztRQUExQyxnRUFBMEM7O3VGRFl0Qyx5QkFBeUI7Y0FMckMsU0FBUztlQUFDO2dCQUNSLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFdBQVcsRUFBRSxxQ0FBcUM7Z0JBQ2xELE1BQU0sRUFBRSxDQUFDLHFDQUFxQyxDQUFDO2FBQ2pEOzhGQUVXLE1BQU07a0JBQWQsS0FBSztZQUU2QyxRQUFRO2tCQUExRCxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUl4QyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csb0JBQW9CO2tCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgIENvbXBvbmVudCxcclxuICAgSW5wdXQsXHJcbiAgIFZpZXdDaGlsZCxcclxuICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRyZWVTZXJ2aWNlIH0gZnJvbSBcIi4uL2xpbWJsZS10cmVlLXJvb3QvdHJlZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB0eXBlIHsgQnJhbmNoIH0gZnJvbSBcIi4uL2NsYXNzZXMvQnJhbmNoXCI7XHJcbmltcG9ydCB7IERyb3Bab25lIH0gZnJvbSBcIi4uL2NsYXNzZXMvRHJvcFpvbmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICBzZWxlY3RvcjogXCJsaW1ibGUtdHJlZS1icmFuY2hcIixcclxuICAgdGVtcGxhdGVVcmw6IFwiLi9saW1ibGUtdHJlZS1icmFuY2guY29tcG9uZW50Lmh0bWxcIixcclxuICAgc3R5bGVzOiBbXCIuL2xpbWJsZS10cmVlLWJyYW5jaC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGltYmxlVHJlZUJyYW5jaENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gICBASW5wdXQoKSBicmFuY2g6IEJyYW5jaDxhbnk+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgQFZpZXdDaGlsZChcImNoaWxkcmVuXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBjaGlsZHJlbjpcclxuICAgICAgfCBWaWV3Q29udGFpbmVyUmVmXHJcbiAgICAgIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgQElucHV0KCkgZHJvcFpvbmVJbnNpZGU6IERyb3Bab25lIHwgdW5kZWZpbmVkO1xyXG4gICBASW5wdXQoKSByZW5kZXJEcm9wWm9uZUluc2lkZTogYm9vbGVhbjtcclxuXHJcbiAgIHB1YmxpYyByZWFkb25seSBpbmRlbnQ7XHJcblxyXG4gICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSB0cmVlU2VydmljZTogVHJlZVNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgICkge1xyXG4gICAgICB0aGlzLmluZGVudCA9IHRoaXMudHJlZVNlcnZpY2UudHJlZU9wdGlvbnM/LmluZGVudDtcclxuICAgICAgdGhpcy5yZW5kZXJEcm9wWm9uZUluc2lkZSA9IGZhbHNlO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLnJlUmVuZGVyKCk7XHJcbiAgICAgIHRoaXMuc2V0RHJvcFpvbmVIb3N0KCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgcmVSZW5kZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuID09PSB1bmRlZmluZWQgfHwgdGhpcy5icmFuY2ggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gcmVuZGVyIGxpbWJsZSB0cmVlIGJyYW5jaFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyZWVTZXJ2aWNlLnJlbmRlckJyYW5jaCh0aGlzLmNoaWxkcmVuLCB0aGlzLmJyYW5jaCk7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgc2V0RHJvcFpvbmVIb3N0KCkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZHJlbiA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZHJvcFpvbmVJbnNpZGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gYWRkIGRyb3Agem9uZSBob3N0XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVJbnNpZGUuc2V0SG9zdCh0aGlzLmNoaWxkcmVuKTtcclxuICAgfVxyXG59XHJcbiIsIjxkaXYgW3N0eWxlLm1hcmdpbkxlZnQucHhdPVwiaW5kZW50XCI+XHJcbiAgIDxkcm9wLXpvbmVcclxuICAgICAgKm5nSWY9XCJyZW5kZXJEcm9wWm9uZUluc2lkZVwiXHJcbiAgICAgIFtkcm9wWm9uZV09XCJkcm9wWm9uZUluc2lkZVwiXHJcbiAgID48L2Ryb3Atem9uZT5cclxuICAgPHNwYW4gW2hpZGRlbl09XCJicmFuY2ggJiYgYnJhbmNoLmRhdGEuY29sbGFwc2VkXCIgY2xhc3M9XCJsaW1ibGUtY2hpbGQtbm9kZXNcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNjaGlsZHJlbj48L25nLXRlbXBsYXRlPlxyXG4gICA8L3NwYW4+XHJcbjwvZGl2PlxyXG4iXX0=

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

this.dragStateService = dragStateService;
this.dropZoneArchive = new Set();
this.dropZoneInventory = [];

@@ -30,10 +31,6 @@ this.dropZoneFamilies = [];

addDropZone(newDropZone) {
if (this.dropZoneInventory.find((registeredZone) => DropZone.dropZoneLocationsAreEqual(registeredZone, newDropZone)) !== undefined) {
return false;
}
this.dropZoneInventory.push(newDropZone);
return true;
this.dropZoneArchive.add(newDropZone);
}
/** hides all drop zones */
clear() {
clearVisibleZones() {
if (this.visibleFamily !== null) {

@@ -51,20 +48,33 @@ for (const member of this.visibleFamily.members) {

}
getDropZone(coordinates) {
const parent = [...coordinates];
parent.pop();
const index = coordinates[coordinates.length - 1];
const location = new DropZoneLocation(parent, index);
return this.dropZoneInventory.find((dropZone) => DropZone.dropZoneLocationsAreEqual(dropZone, location));
}
init(tree, treeOptions) {
this.tree = tree;
this.treeOptions = treeOptions;
this.reset();
this.assignFamilies();
this.update();
}
/** hides all drop zones and deletes all the family assignments */
removeDropZone(dropZone) {
this.dropZoneArchive.delete(dropZone);
}
/** hides all drop zones, deletes all the family assignments,
* and empties the dropZoneInventory
*/
reset() {
this.clear();
this.clearVisibleZones();
this.dropZoneFamilies.length = 0;
this.dropZoneInventory.length = 0;
}
/**
* Restores the service to its initial state: hides all drop zones,
* deletes all the family assignments, and empties the dropZoneInventory.
* deletes all the family assignments, and empties the dropZoneInventory
* and dropZoneArchive.
*/
restart() {
this.reset();
this.dropZoneInventory.length = 0;
this.dropZoneArchive.clear();
}

@@ -99,3 +109,3 @@ restoreFamilies() {

if (this.visibleFamily !== null || this.activeDropZone !== null) {
this.clear();
this.clearVisibleZones();
}

@@ -160,15 +170,18 @@ const target = this.dropZoneInventory.find((zone) => DropZone.dropZoneLocationsAreEqual(zone, dropZone));

this.showDropZone(family.founder, true);
for (const member of family.members.sort(sortFamily)) {
if (member !== family.founder) {
if (this.activeDropZone === null) {
//Failed to activate a zone so far, so activate this one instead
this.showDropZone(member, true);
if (family.members.length > 1) {
for (const member of family.members.sort(sortFamily)) {
if (member !== family.founder) {
if (this.activeDropZone === null) {
//Failed to activate a zone so far, so activate this one instead
this.showDropZone(member, true);
}
else {
this.showDropZone(member);
}
}
else {
this.showDropZone(member);
}
}
}
}
if (options.activateLowestInsteadOfFounder === true) {
if (options.activateLowestInsteadOfFounder === true &&
this.visibleFamily.members.length > 1) {
const lowestMember = [...this.visibleFamily.members]

@@ -193,2 +206,7 @@ .sort(sortFamily)

}
update() {
this.reset();
this.buildInventory();
this.assignFamilies();
}
assignFamilies() {

@@ -258,2 +276,17 @@ const orphanZones = [...this.dropZoneInventory];

}
buildInventory() {
//We do this funky string array because it is faster than doing direct array comparisons
const inventoryCoordinates = [];
for (const dropZone of this.dropZoneArchive) {
const coordinates = dropZone.getFullInsertCoordinates().join(",");
if (inventoryCoordinates.includes(coordinates)) {
dropZone.isRendered(false);
}
else {
this.dropZoneInventory.push(dropZone);
inventoryCoordinates.push(coordinates);
dropZone.isRendered(true);
}
}
}
setActiveDropZone(dropZone) {

@@ -298,4 +331,4 @@ if (this.activeDropZone !== null) {

}
const draggedNode = this.dragStateService.getData();
if (draggedNode === undefined) {
const data = this.dragStateService.getData();
if (data === undefined) {
throw new Error("Can't get dragged node");

@@ -311,2 +344,3 @@ }

}
const draggedNode = data.branch;
if (this.treeOptions.allowDrop(draggedNode.data, dropZoneParent.data, dropZoneIndex)) {

@@ -323,2 +357,2 @@ return true;

}], function () { return [{ type: i1.DragStateService }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC16b25lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLXJvb3QvZHJvcC16b25lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBUS9ELFNBQVMsVUFBVSxDQUFDLE9BQWlCLEVBQUUsT0FBaUI7SUFDckQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDeEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDeEQsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDNUMsT0FBTyxDQUFDLENBQUMsQ0FBQztLQUNaO0lBQ0QsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDNUMsT0FBTyxDQUFDLENBQUM7S0FDWDtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUdELE1BQU0sT0FBTyxlQUFlO0lBV3pCLFlBQTZCLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxXQUFxQjtRQUNyQyxJQUNHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUM1QyxRQUFRLENBQUMseUJBQXlCLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUNqRSxLQUFLLFNBQVMsRUFDaEI7WUFDQyxPQUFPLEtBQUssQ0FBQztTQUNmO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQztJQUNmLENBQUM7SUFFRCwyQkFBMkI7SUFDcEIsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDOUIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRTtnQkFDOUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0saUJBQWlCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM5QixDQUFDO0lBRU0sSUFBSSxDQUFDLElBQWlCLEVBQUUsV0FBNkI7UUFDekQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrRUFBa0U7SUFDM0QsS0FBSztRQUNULElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1gsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLGVBQWU7UUFDbkIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1lBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7b0JBQ2hELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN6QzthQUNIO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7U0FDekI7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxrQkFBa0I7SUFDdEIseUhBQXlIO0lBQ3pILFFBQWtCLEVBQ2xCLFVBR0ksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRTtRQUVsRSxJQUNHLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSTtZQUM1QixRQUFRLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsRUFDbEU7WUFDQyxrRUFBa0U7WUFDbEUsT0FBTztTQUNUO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtZQUM5RCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZjtRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNqRCxRQUFRLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUNwRCxDQUFDO1FBQ0YsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQ1osK0NBQStDLElBQUksQ0FBQyxTQUFTLENBQzFELFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FDeEIsRUFBRSxDQUNMLENBQUM7U0FDSjtRQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixDQUNuQyxDQUFDLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQ2hDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUMzQixDQUFDO1lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2xELFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQ3JELENBQUM7WUFDRixJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQzthQUN0RDtZQUNELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUMvQjtZQUNELE1BQU0sU0FBUyxHQUFHO2dCQUNmLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDdkIsT0FBTyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO2FBQzlCLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEMsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDbkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxNQUFNLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRTtvQkFDNUIsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTt3QkFDL0IsZ0VBQWdFO3dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDbEM7eUJBQU07d0JBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDNUI7aUJBQ0g7YUFDSDtZQUNELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDbkMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsSUFDRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQUMsTUFBTTtvQkFDN0MsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFDL0M7b0JBQ0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzVCO2FBQ0g7WUFDRCxvQ0FBb0M7WUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN0Qyx5QkFBeUI7WUFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlDLG9CQUFvQjtZQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1NBQ2pDO2FBQU07WUFDSixJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDL0I7WUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEMsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDbkQsSUFBSSxNQUFNLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRTtvQkFDNUIsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTt3QkFDL0IsZ0VBQWdFO3dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDbEM7eUJBQU07d0JBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDNUI7aUJBQ0g7YUFDSDtTQUNIO1FBQ0QsSUFBSSxPQUFPLENBQUMsOEJBQThCLEtBQUssSUFBSSxFQUFFO1lBQ2xELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztpQkFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDaEIsR0FBRyxFQUFFLENBQUM7WUFDVixJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQzthQUNqRDtZQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QztJQUNKLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxpQkFBMkI7UUFDbEQsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQy9DLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssaUJBQWlCLENBQzlDLENBQUM7UUFDRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUNyRDtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxjQUFjO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRCxNQUFNLGNBQWMsR0FBRyxXQUFXO2FBQzlCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sQ0FDSixRQUFRLENBQUMsV0FBVyxLQUFLLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN2QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFOztZQUN0QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUN2RCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xFLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzFDLElBQUksT0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLG1DQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLG1DQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzVELE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ1o7cUJBQU0sSUFDSixPQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsbUNBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsbUNBQUksQ0FBQyxDQUFDLENBQUMsRUFDMUQ7b0JBQ0MsT0FBTyxDQUFDLENBQUM7aUJBQ1g7YUFDSDtZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFDTixLQUFLLE1BQU0sUUFBUSxJQUFJLGNBQWMsRUFBRTtZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDbEMsU0FBUzthQUNYO1lBQ0QsTUFBTSxNQUFNLEdBQW1CO2dCQUM1QixPQUFPLEVBQUUsUUFBUTtnQkFDakIsT0FBTyxFQUFFLEVBQUU7YUFDYixDQUFDO1lBQ0YsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQix5RUFBeUU7WUFDekUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7WUFDeEQsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDdEQsY0FBYyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUN6RCxDQUFDO2dCQUNGLElBQUksaUJBQWlCLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQzNCLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNsQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUNqQztnQkFDRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUM5QjtZQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckM7UUFDRCxLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQ3RDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUN4RCxFQUFFO1lBQ0EsTUFBTSxNQUFNLEdBQW1CO2dCQUM1QixPQUFPLEVBQUUsUUFBUTtnQkFDakIsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQ3JCLENBQUM7WUFDRixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMzQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDakIsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUU7Z0JBQzdCLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQzthQUN2RDtZQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sSUFBSSxLQUFLLENBQ1osNEZBQTRGLE9BQU8sRUFBRSxDQUN2RyxDQUFDO1NBQ0o7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQUMsUUFBeUI7UUFDaEQsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQ0csSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJO1lBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxXQUFXLEVBQ2pEO1lBQ0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BDO2FBQU0sSUFDSixJQUFJLENBQUMsY0FBYyxLQUFLLElBQUk7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxLQUFLLFdBQVcsRUFDakQ7WUFDQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFO1lBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFrQixFQUFFLE1BQU0sR0FBRyxLQUFLO1FBQ3BELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEMsK0NBQStDO1lBQy9DLE9BQU8sS0FBSyxDQUFDO1NBQ2Y7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUN2QyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQzFDLENBQUM7UUFDRixJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZixDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWtCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BELElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDNUM7UUFDRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUMvQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQzFDLENBQUM7UUFDRixJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUN6RCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsSUFDRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FDdkIsV0FBVyxDQUFDLElBQUksRUFDaEIsY0FBYyxDQUFDLElBQXNCLEVBQ3JDLGFBQWEsQ0FDZixFQUNGO1lBQ0MsT0FBTyxJQUFJLENBQUM7U0FDZDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2hCLENBQUM7OzhFQW5XUyxlQUFlO3VEQUFmLGVBQWUsV0FBZixlQUFlO3VGQUFmLGVBQWU7Y0FEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCcmFuY2ggfSBmcm9tIFwiLi4vY2xhc3Nlcy9CcmFuY2hcIjtcclxuaW1wb3J0IHsgRHJhZ1N0YXRlU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2RyYWctc3RhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgdHlwZSB7IExpbWJsZVRyZWVOb2RlLCBQcm9jZXNzZWRPcHRpb25zIH0gZnJvbSBcIi4vdHJlZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGFycmF5c0FyZUVxdWFsIH0gZnJvbSBcIi4uL3V0aWxcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmUgfSBmcm9tIFwiLi4vY2xhc3Nlcy9Ecm9wWm9uZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZUxvY2F0aW9uIH0gZnJvbSBcIi4uL2NsYXNzZXMvRHJvcFpvbmVMb2NhdGlvblwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEcm9wWm9uZUZhbWlseSB7XHJcbiAgIC8qKiBUaGUgZGVlcGVzdCBtZW1iZXIgb2YgdGhlIGZhbWlseSAqL1xyXG4gICBmb3VuZGVyOiBEcm9wWm9uZTtcclxuICAgbWVtYmVyczogQXJyYXk8RHJvcFpvbmU+O1xyXG59XHJcblxyXG5mdW5jdGlvbiBzb3J0RmFtaWx5KG1lbWJlckE6IERyb3Bab25lLCBtZW1iZXJCOiBEcm9wWm9uZSkge1xyXG4gICBjb25zdCBhQ29vcmRpbmF0ZXMgPSBtZW1iZXJBLmdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpO1xyXG4gICBjb25zdCBiQ29vcmRpbmF0ZXMgPSBtZW1iZXJCLmdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpO1xyXG4gICBpZiAoYUNvb3JkaW5hdGVzLmxlbmd0aCA+IGJDb29yZGluYXRlcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIC0xO1xyXG4gICB9XHJcbiAgIGlmIChhQ29vcmRpbmF0ZXMubGVuZ3RoIDwgYkNvb3JkaW5hdGVzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgfVxyXG4gICByZXR1cm4gMDtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRHJvcFpvbmVTZXJ2aWNlIHtcclxuICAgcHJpdmF0ZSByZWFkb25seSBkcm9wWm9uZUludmVudG9yeTogQXJyYXk8RHJvcFpvbmU+O1xyXG4gICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bab25lRmFtaWxpZXM6IEFycmF5PERyb3Bab25lRmFtaWx5PjtcclxuICAgcHJpdmF0ZSB2aXNpYmxlRmFtaWx5OiBEcm9wWm9uZUZhbWlseSB8IG51bGw7XHJcbiAgIHByaXZhdGUgYWN0aXZlRHJvcFpvbmU6IERyb3Bab25lIHwgbnVsbDtcclxuICAgcHJpdmF0ZSB0cmVlOiBCcmFuY2g8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSB0cmVlT3B0aW9uczogUHJvY2Vzc2VkT3B0aW9ucyB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSB0ZW1wRmFtaWxpZXM6XHJcbiAgICAgIHwgcmVhZG9ubHkgW0Ryb3Bab25lRmFtaWx5LCBEcm9wWm9uZUZhbWlseSB8IG51bGxdXHJcbiAgICAgIHwgcmVhZG9ubHkgW107XHJcblxyXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRyYWdTdGF0ZVNlcnZpY2U6IERyYWdTdGF0ZVNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5kcm9wWm9uZUludmVudG9yeSA9IFtdO1xyXG4gICAgICB0aGlzLmRyb3Bab25lRmFtaWxpZXMgPSBbXTtcclxuICAgICAgdGhpcy52aXNpYmxlRmFtaWx5ID0gbnVsbDtcclxuICAgICAgdGhpcy5hY3RpdmVEcm9wWm9uZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGVtcEZhbWlsaWVzID0gW107XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlRHJvcFpvbmUobnVsbCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBhZGREcm9wWm9uZShuZXdEcm9wWm9uZTogRHJvcFpvbmUpOiBib29sZWFuIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lSW52ZW50b3J5LmZpbmQoKHJlZ2lzdGVyZWRab25lKSA9PlxyXG4gICAgICAgICAgICBEcm9wWm9uZS5kcm9wWm9uZUxvY2F0aW9uc0FyZUVxdWFsKHJlZ2lzdGVyZWRab25lLCBuZXdEcm9wWm9uZSlcclxuICAgICAgICAgKSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kcm9wWm9uZUludmVudG9yeS5wdXNoKG5ld0Ryb3Bab25lKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBoaWRlcyBhbGwgZHJvcCB6b25lcyAqL1xyXG4gICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLnZpc2libGVGYW1pbHkgIT09IG51bGwpIHtcclxuICAgICAgICAgZm9yIChjb25zdCBtZW1iZXIgb2YgdGhpcy52aXNpYmxlRmFtaWx5Lm1lbWJlcnMpIHtcclxuICAgICAgICAgICAgbWVtYmVyLmlzVmlzaWJsZShmYWxzZSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy52aXNpYmxlRmFtaWx5ID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3RvcmVGYW1pbGllcygpO1xyXG4gICAgICB0aGlzLnNldEFjdGl2ZURyb3Bab25lKG51bGwpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZ2V0QWN0aXZlRHJvcFpvbmUoKTogRHJvcFpvbmVTZXJ2aWNlW1wiYWN0aXZlRHJvcFpvbmVcIl0ge1xyXG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVEcm9wWm9uZTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGluaXQodHJlZTogQnJhbmNoPGFueT4sIHRyZWVPcHRpb25zOiBQcm9jZXNzZWRPcHRpb25zKTogdm9pZCB7XHJcbiAgICAgIHRoaXMudHJlZSA9IHRyZWU7XHJcbiAgICAgIHRoaXMudHJlZU9wdGlvbnMgPSB0cmVlT3B0aW9ucztcclxuICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICB0aGlzLmFzc2lnbkZhbWlsaWVzKCk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBoaWRlcyBhbGwgZHJvcCB6b25lcyBhbmQgZGVsZXRlcyBhbGwgdGhlIGZhbWlseSBhc3NpZ25tZW50cyAqL1xyXG4gICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgdGhpcy5kcm9wWm9uZUZhbWlsaWVzLmxlbmd0aCA9IDA7XHJcbiAgIH1cclxuXHJcbiAgIC8qKlxyXG4gICAgKiBSZXN0b3JlcyB0aGUgc2VydmljZSB0byBpdHMgaW5pdGlhbCBzdGF0ZTogaGlkZXMgYWxsIGRyb3Agem9uZXMsXHJcbiAgICAqIGRlbGV0ZXMgYWxsIHRoZSBmYW1pbHkgYXNzaWdubWVudHMsIGFuZCBlbXB0aWVzIHRoZSBkcm9wWm9uZUludmVudG9yeS5cclxuICAgICovXHJcbiAgIHB1YmxpYyByZXN0YXJ0KCk6IHZvaWQge1xyXG4gICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVJbnZlbnRvcnkubGVuZ3RoID0gMDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHJlc3RvcmVGYW1pbGllcygpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMudGVtcEZhbWlsaWVzLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lRmFtaWxpZXMucG9wKCk7XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVGYW1pbGllcy5wdXNoKHRoaXMudGVtcEZhbWlsaWVzWzBdKTtcclxuICAgICAgICAgZm9yIChjb25zdCBtZW1iZXIgb2YgdGhpcy50ZW1wRmFtaWxpZXNbMF0ubWVtYmVycykge1xyXG4gICAgICAgICAgICBtZW1iZXIuc2V0RmFtaWx5KHRoaXMudGVtcEZhbWlsaWVzWzBdKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBpZiAodGhpcy50ZW1wRmFtaWxpZXNbMV0gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wWm9uZUZhbWlsaWVzLnB1c2godGhpcy50ZW1wRmFtaWxpZXNbMV0pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiB0aGlzLnRlbXBGYW1pbGllc1sxXS5tZW1iZXJzKSB7XHJcbiAgICAgICAgICAgICAgIG1lbWJlci5zZXRGYW1pbHkodGhpcy50ZW1wRmFtaWxpZXNbMV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy50ZW1wRmFtaWxpZXMgPSBbXTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICAvKipcclxuICAgICogU2hvd3MgdGhlIGRyb3Agem9uZSBmYW1pbHkgb2YgdGhlIGRyb3Agem9uZSBpbmRpY2F0ZWQgYnkgYGNvb3JkaW5hdGVzYC5cclxuICAgICovXHJcbiAgIHB1YmxpYyBzaG93RHJvcFpvbmVGYW1pbHkoXHJcbiAgICAgIC8qKiBOb3RlOiB0aGlzIGRyb3Agem9uZSBtYXkgbm90IGV4aXN0IGluIHRoZSBkcm9wWm9uZUludmVudG9yeTsgd2UgaGF2ZSB0byBzZWFyY2ggdGhlIGludmVudG9yeSBiYXNlZCBvbiBpdHMgbG9jYXRpb24gKi9cclxuICAgICAgZHJvcFpvbmU6IERyb3Bab25lLFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgIGpvaW5GYW1pbGllcz86IGJvb2xlYW47XHJcbiAgICAgICAgIGFjdGl2YXRlTG93ZXN0SW5zdGVhZE9mRm91bmRlcj86IGJvb2xlYW47XHJcbiAgICAgIH0gPSB7IGpvaW5GYW1pbGllczogZmFsc2UsIGFjdGl2YXRlTG93ZXN0SW5zdGVhZE9mRm91bmRlcjogZmFsc2UgfVxyXG4gICApOiB2b2lkIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLmFjdGl2ZURyb3Bab25lICE9PSBudWxsICYmXHJcbiAgICAgICAgIERyb3Bab25lLmRyb3Bab25lTG9jYXRpb25zQXJlRXF1YWwodGhpcy5hY3RpdmVEcm9wWm9uZSwgZHJvcFpvbmUpXHJcbiAgICAgICkge1xyXG4gICAgICAgICAvL0FscmVhZHkgc2hvd2luZyB0aGUgZmFtaWx5IHdpdGggdGhlIGFwcHJvcHJpYXRlIGFjdGl2ZSBkcm9wIHpvbmVcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZpc2libGVGYW1pbHkgIT09IG51bGwgfHwgdGhpcy5hY3RpdmVEcm9wWm9uZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5kcm9wWm9uZUludmVudG9yeS5maW5kKCh6b25lKSA9PlxyXG4gICAgICAgICBEcm9wWm9uZS5kcm9wWm9uZUxvY2F0aW9uc0FyZUVxdWFsKHpvbmUsIGRyb3Bab25lKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQ291bGQgbm90IGZpbmQgZHJvcCB6b25lIHRvIHNob3cuIGxvY2F0aW9uOiAke0pTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgICAgICAgICBkcm9wWm9uZS5nZXRMb2NhdGlvbigpXHJcbiAgICAgICAgICAgICl9YFxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZhbWlseSA9IHRhcmdldC5nZXRGYW1pbHkoKTtcclxuICAgICAgaWYgKG9wdGlvbnMuam9pbkZhbWlsaWVzID09PSB0cnVlKSB7XHJcbiAgICAgICAgIGNvbnN0IGxvY2F0aW9uMSA9IGRyb3Bab25lLmdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgIGNvbnN0IGxvY2F0aW9uMiA9IG5ldyBEcm9wWm9uZUxvY2F0aW9uKFxyXG4gICAgICAgICAgICBbLi4ubG9jYXRpb24xLnBhcmVudENvb3JkaW5hdGVzXSxcclxuICAgICAgICAgICAgbG9jYXRpb24xLmluc2VydEluZGV4ICsgMVxyXG4gICAgICAgICApO1xyXG4gICAgICAgICBjb25zdCB0YXJnZXQyID0gdGhpcy5kcm9wWm9uZUludmVudG9yeS5maW5kKCh6b25lKSA9PlxyXG4gICAgICAgICAgICBEcm9wWm9uZS5kcm9wWm9uZUxvY2F0aW9uc0FyZUVxdWFsKHpvbmUsIGxvY2F0aW9uMilcclxuICAgICAgICAgKTtcclxuICAgICAgICAgaWYgKHRhcmdldDIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCBkcm9wIHpvbmUgdG8gc2hvd1wiKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBjb25zdCBmYW1pbHkyID0gdGFyZ2V0Mi5nZXRGYW1pbHkoKTtcclxuICAgICAgICAgaWYgKGZhbWlseSA9PT0gdW5kZWZpbmVkIHx8IGZhbWlseTIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBmYW1pbHlcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgbmV3RmFtaWx5ID0ge1xyXG4gICAgICAgICAgICBmb3VuZGVyOiBmYW1pbHkuZm91bmRlcixcclxuICAgICAgICAgICAgbWVtYmVyczogWy4uLmZhbWlseS5tZW1iZXJzXVxyXG4gICAgICAgICB9O1xyXG4gICAgICAgICB0aGlzLnNob3dEcm9wWm9uZShmYW1pbHkuZm91bmRlciwgdHJ1ZSk7XHJcbiAgICAgICAgIGZvciAoY29uc3QgbWVtYmVyIG9mIGZhbWlseS5tZW1iZXJzLnNvcnQoc29ydEZhbWlseSkpIHtcclxuICAgICAgICAgICAgbWVtYmVyLnNldEZhbWlseShuZXdGYW1pbHkpO1xyXG4gICAgICAgICAgICBpZiAobWVtYmVyICE9PSBmYW1pbHkuZm91bmRlcikge1xyXG4gICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVEcm9wWm9uZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAvL0ZhaWxlZCB0byBhY3RpdmF0ZSBhIHpvbmUgc28gZmFyLCBzbyBhY3RpdmF0ZSB0aGlzIG9uZSBpbnN0ZWFkXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Ryb3Bab25lKG1lbWJlciwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Ryb3Bab25lKG1lbWJlcik7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGZvciAoY29uc3QgbWVtYmVyIG9mIGZhbWlseTIubWVtYmVycykge1xyXG4gICAgICAgICAgICBtZW1iZXIuc2V0RmFtaWx5KG5ld0ZhbWlseSk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgbWVtYmVyLmdldExvY2F0aW9uKCkucGFyZW50Q29vcmRpbmF0ZXMubGVuZ3RoIDxcclxuICAgICAgICAgICAgICAgdGFyZ2V0Mi5nZXRMb2NhdGlvbigpLnBhcmVudENvb3JkaW5hdGVzLmxlbmd0aFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgbmV3RmFtaWx5Lm1lbWJlcnMucHVzaChtZW1iZXIpO1xyXG4gICAgICAgICAgICAgICB0aGlzLnNob3dEcm9wWm9uZShtZW1iZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgLy9UZW1wb3JhcmlseSBzdG9yZSB0aGUgb2xkIGZhbWlsaWVzXHJcbiAgICAgICAgIHRoaXMudGVtcEZhbWlsaWVzID0gW2ZhbWlseSwgZmFtaWx5Ml07XHJcbiAgICAgICAgIC8vUmVtb3ZlIHRoZSBvbGQgZmFtaWxpZXNcclxuICAgICAgICAgY29uc3QgZmFtaWx5SW5kZXggPSB0aGlzLmRyb3Bab25lRmFtaWxpZXMuaW5kZXhPZihmYW1pbHkpO1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lRmFtaWxpZXMuc3BsaWNlKGZhbWlseUluZGV4LCAxKTtcclxuICAgICAgICAgY29uc3QgZmFtaWx5MkluZGV4ID0gdGhpcy5kcm9wWm9uZUZhbWlsaWVzLmluZGV4T2YoZmFtaWx5Mik7XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVGYW1pbGllcy5zcGxpY2UoZmFtaWx5MkluZGV4LCAxKTtcclxuICAgICAgICAgLy9BZGQgdGhlIG5ldyBmYW1pbHlcclxuICAgICAgICAgdGhpcy5kcm9wWm9uZUZhbWlsaWVzLnB1c2gobmV3RmFtaWx5KTtcclxuICAgICAgICAgdGhpcy52aXNpYmxlRmFtaWx5ID0gbmV3RmFtaWx5O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICBpZiAoZmFtaWx5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZmFtaWx5XCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMudmlzaWJsZUZhbWlseSA9IGZhbWlseTtcclxuICAgICAgICAgdGhpcy5zaG93RHJvcFpvbmUoZmFtaWx5LmZvdW5kZXIsIHRydWUpO1xyXG4gICAgICAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiBmYW1pbHkubWVtYmVycy5zb3J0KHNvcnRGYW1pbHkpKSB7XHJcbiAgICAgICAgICAgIGlmIChtZW1iZXIgIT09IGZhbWlseS5mb3VuZGVyKSB7XHJcbiAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURyb3Bab25lID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vRmFpbGVkIHRvIGFjdGl2YXRlIGEgem9uZSBzbyBmYXIsIHNvIGFjdGl2YXRlIHRoaXMgb25lIGluc3RlYWRcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RHJvcFpvbmUobWVtYmVyLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RHJvcFpvbmUobWVtYmVyKTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9ucy5hY3RpdmF0ZUxvd2VzdEluc3RlYWRPZkZvdW5kZXIgPT09IHRydWUpIHtcclxuICAgICAgICAgY29uc3QgbG93ZXN0TWVtYmVyID0gWy4uLnRoaXMudmlzaWJsZUZhbWlseS5tZW1iZXJzXVxyXG4gICAgICAgICAgICAuc29ydChzb3J0RmFtaWx5KVxyXG4gICAgICAgICAgICAucG9wKCk7XHJcbiAgICAgICAgIGlmIChsb3dlc3RNZW1iZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IGxvd2VzdCBtZW1iZXJcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5zd2FwQWN0aXZlRHJvcFpvbmUobG93ZXN0TWVtYmVyKTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgc3dhcEFjdGl2ZURyb3Bab25lKG5ld0FjdGl2ZURyb3Bab25lOiBEcm9wWm9uZSk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy52aXNpYmxlRmFtaWx5ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHZpc2libGUgZmFtaWx5IGF2YWlsYWJsZSBmb3Igc3dhcHBpbmdcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZpc2libGVGYW1pbHkubWVtYmVycy5maW5kSW5kZXgoXHJcbiAgICAgICAgIChkcm9wWm9uZSkgPT4gZHJvcFpvbmUgPT09IG5ld0FjdGl2ZURyb3Bab25lXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZmFpbGVkIHRvIHN3YXAgYWN0aXZlIGRyb3Agem9uZVwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEFjdGl2ZURyb3Bab25lKG5ld0FjdGl2ZURyb3Bab25lKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGFzc2lnbkZhbWlsaWVzKCk6IHZvaWQge1xyXG4gICAgICBjb25zdCBvcnBoYW5ab25lcyA9IFsuLi50aGlzLmRyb3Bab25lSW52ZW50b3J5XTtcclxuICAgICAgY29uc3QgZGVlcGVzdE1lbWJlcnMgPSBvcnBoYW5ab25lc1xyXG4gICAgICAgICAuZmlsdGVyKCh6b25lKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gem9uZS5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICBsb2NhdGlvbi5pbnNlcnRJbmRleCA9PT0gMCAmJlxyXG4gICAgICAgICAgICAgICBsb2NhdGlvbi5wYXJlbnRDb29yZGluYXRlcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgIH0pXHJcbiAgICAgICAgIC5zb3J0KCh2YWx1ZUEsIHZhbHVlQikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhQ29vcmRpbmF0ZXMgPSB2YWx1ZUEuZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJDb29yZGluYXRlcyA9IHZhbHVlQi5nZXRGdWxsSW5zZXJ0Q29vcmRpbmF0ZXMoKTtcclxuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoYUNvb3JkaW5hdGVzLmxlbmd0aCwgYkNvb3JkaW5hdGVzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgaWYgKChhQ29vcmRpbmF0ZXNbaW5kZXhdID8/IC0xKSA+IChiQ29vcmRpbmF0ZXNbaW5kZXhdID8/IC0xKSkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIChhQ29vcmRpbmF0ZXNbaW5kZXhdID8/IC0xKSA8IChiQ29vcmRpbmF0ZXNbaW5kZXhdID8/IC0xKVxyXG4gICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgfSk7XHJcbiAgICAgIGZvciAoY29uc3QgZHJvcFpvbmUgb2YgZGVlcGVzdE1lbWJlcnMpIHtcclxuICAgICAgICAgaWYgKCFvcnBoYW5ab25lcy5pbmNsdWRlcyhkcm9wWm9uZSkpIHtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgZmFtaWx5OiBEcm9wWm9uZUZhbWlseSA9IHtcclxuICAgICAgICAgICAgZm91bmRlcjogZHJvcFpvbmUsXHJcbiAgICAgICAgICAgIG1lbWJlcnM6IFtdXHJcbiAgICAgICAgIH07XHJcbiAgICAgICAgIGRyb3Bab25lLnNldEZhbWlseShmYW1pbHkpO1xyXG4gICAgICAgICAvL1NlZSBpZiB0aGVyZSBhcmUgYW55IG9ycGhhbnMgdGhhdCBiZWxvbmcgdG8gdGhpcyBmYW1pbHkgYW5kIGNsYWltIHRoZW0uXHJcbiAgICAgICAgIGNvbnN0IGN1cnNvciA9IFsuLi5kcm9wWm9uZS5nZXRGdWxsSW5zZXJ0Q29vcmRpbmF0ZXMoKV07XHJcbiAgICAgICAgIHdoaWxlIChjdXJzb3IubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBmYW1pbHlNZW1iZXJJbmRleCA9IG9ycGhhblpvbmVzLmZpbmRJbmRleCgoem9uZSkgPT5cclxuICAgICAgICAgICAgICAgYXJyYXlzQXJlRXF1YWwoem9uZS5nZXRGdWxsSW5zZXJ0Q29vcmRpbmF0ZXMoKSwgY3Vyc29yKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoZmFtaWx5TWVtYmVySW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgIGNvbnN0IGZhbWlseU1lbWJlciA9IG9ycGhhblpvbmVzLnNwbGljZShmYW1pbHlNZW1iZXJJbmRleCwgMSlbMF07XHJcbiAgICAgICAgICAgICAgIGZhbWlseS5tZW1iZXJzLnB1c2goZmFtaWx5TWVtYmVyKTtcclxuICAgICAgICAgICAgICAgZmFtaWx5TWVtYmVyLnNldEZhbWlseShmYW1pbHkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnNvci5wb3AoKTtcclxuICAgICAgICAgICAgY3Vyc29yW2N1cnNvci5sZW5ndGggLSAxXSsrO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVGYW1pbGllcy5wdXNoKGZhbWlseSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBkcm9wWm9uZSBvZiBvcnBoYW5ab25lcy5maWx0ZXIoXHJcbiAgICAgICAgICh6b25lKSA9PiB6b25lLmdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpLmxlbmd0aCA9PT0gMVxyXG4gICAgICApKSB7XHJcbiAgICAgICAgIGNvbnN0IGZhbWlseTogRHJvcFpvbmVGYW1pbHkgPSB7XHJcbiAgICAgICAgICAgIGZvdW5kZXI6IGRyb3Bab25lLFxyXG4gICAgICAgICAgICBtZW1iZXJzOiBbZHJvcFpvbmVdXHJcbiAgICAgICAgIH07XHJcbiAgICAgICAgIGRyb3Bab25lLnNldEZhbWlseShmYW1pbHkpO1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lRmFtaWxpZXMucHVzaChmYW1pbHkpO1xyXG4gICAgICAgICBvcnBoYW5ab25lcy5zcGxpY2Uob3JwaGFuWm9uZXMuaW5kZXhPZihkcm9wWm9uZSksIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcnBoYW5ab25lcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgbGV0IG9ycGhhbnMgPSBcIlwiO1xyXG4gICAgICAgICBmb3IgKGNvbnN0IHpvbmUgb2Ygb3JwaGFuWm9uZXMpIHtcclxuICAgICAgICAgICAgb3JwaGFucyArPSBgJHtKU09OLnN0cmluZ2lmeSh6b25lLmdldExvY2F0aW9uKCkpfSwgYDtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBvcnBoYW5zID0gb3JwaGFucy5zbGljZSgwLCBvcnBoYW5zLmxlbmd0aCAtIDIpO1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgIGBTb21lIHpvbmVzIHdlcmUgbm90IGFzc2lnbmVkIHRvIGEgZmFtaWx5LiBUaGUgb3JwaGFuIHpvbmVzIGhhdmUgdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6ICR7b3JwaGFuc31gXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBzZXRBY3RpdmVEcm9wWm9uZShkcm9wWm9uZTogRHJvcFpvbmUgfCBudWxsKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLmFjdGl2ZURyb3Bab25lICE9PSBudWxsKSB7XHJcbiAgICAgICAgIHRoaXMuYWN0aXZlRHJvcFpvbmUuaXNBY3RpdmUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWN0aXZlRHJvcFpvbmUgPSBkcm9wWm9uZTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLmFjdGl2ZURyb3Bab25lICE9PSBudWxsICYmXHJcbiAgICAgICAgIHRoaXMuZHJhZ1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpICE9PSBcImRyb3BwYWJsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgICB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZHJvcHBhYmxlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgIHRoaXMuYWN0aXZlRHJvcFpvbmUgPT09IG51bGwgJiZcclxuICAgICAgICAgdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLmdldFN0YXRlKCkgPT09IFwiZHJvcHBhYmxlXCJcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRoaXMuZHJhZ1N0YXRlU2VydmljZS5ub3REcm9wcGFibGUoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5hY3RpdmVEcm9wWm9uZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICB0aGlzLmFjdGl2ZURyb3Bab25lLmlzQWN0aXZlKHRydWUpO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgc2hvd0Ryb3Bab25lKGRyb3Bab25lOiBEcm9wWm9uZSwgYWN0aXZlID0gZmFsc2UpOiBib29sZWFuIHtcclxuICAgICAgaWYgKHRoaXMudHJlZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkRyb3Bab25lU2VydmljZSBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnpvbmVJc0FsbG93ZWQoZHJvcFpvbmUpKSB7XHJcbiAgICAgICAgIC8vVXNlciBzZXR0aW5ncyBpbmRpY2F0ZSB0byBza2lwIHRoaXMgZHJvcCB6b25lXHJcbiAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnRyZWUuZmluZEJ5Q29vcmRpbmF0ZXMoXHJcbiAgICAgICAgIGRyb3Bab25lLmdldExvY2F0aW9uKCkucGFyZW50Q29vcmRpbmF0ZXNcclxuICAgICAgKTtcclxuICAgICAgaWYgKHBhcmVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJhZCBmYW1pbHkgbWVtYmVyXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGRyb3Bab25lLmlzVmlzaWJsZSh0cnVlKTtcclxuICAgICAgaWYgKGFjdGl2ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICB0aGlzLnNldEFjdGl2ZURyb3Bab25lKGRyb3Bab25lKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSB6b25lSXNBbGxvd2VkKGRyb3Bab25lOiBEcm9wWm9uZSk6IGJvb2xlYW4ge1xyXG4gICAgICBpZiAodGhpcy50cmVlT3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudHJlZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImRyb3Bab25lU2VydmljZSBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZHJhZ2dlZE5vZGUgPSB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0RGF0YSgpO1xyXG4gICAgICBpZiAoZHJhZ2dlZE5vZGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBnZXQgZHJhZ2dlZCBub2RlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRyb3Bab25lUGFyZW50ID0gdGhpcy50cmVlLmZpbmRCeUNvb3JkaW5hdGVzKFxyXG4gICAgICAgICBkcm9wWm9uZS5nZXRMb2NhdGlvbigpLnBhcmVudENvb3JkaW5hdGVzXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChkcm9wWm9uZVBhcmVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBnZXQgZHJvcCB6b25lIHBhcmVudFwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBkcm9wWm9uZUluZGV4ID0gZHJvcFpvbmUuZ2V0TG9jYXRpb24oKS5pbnNlcnRJbmRleDtcclxuICAgICAgaWYgKGRyb3Bab25lSW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IGRyb3Agem9uZSBpbmRleFwiKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuYWxsb3dEcm9wKFxyXG4gICAgICAgICAgICBkcmFnZ2VkTm9kZS5kYXRhLFxyXG4gICAgICAgICAgICBkcm9wWm9uZVBhcmVudC5kYXRhIGFzIExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICAgICAgICBkcm9wWm9uZUluZGV4XHJcbiAgICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC16b25lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLXJvb3QvZHJvcC16b25lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBUy9ELFNBQVMsVUFBVSxDQUFDLE9BQWlCLEVBQUUsT0FBaUI7SUFDckQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDeEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDeEQsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDNUMsT0FBTyxDQUFDLENBQUMsQ0FBQztLQUNaO0lBQ0QsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDNUMsT0FBTyxDQUFDLENBQUM7S0FDWDtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1osQ0FBQztBQUdELE1BQU0sT0FBTyxlQUFlO0lBWXpCLFlBQTZCLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzVELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7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UUFBa0I7UUFDckMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7U0FDckQ7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0MsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUM1QztRQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQy9DLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxpQkFBaUIsQ0FDMUMsQ0FBQztRQUNGLElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQ3pELElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDbkQ7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQ0csSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ3ZCLFdBQVcsQ0FBQyxJQUFJLEVBQ2hCLGNBQWMsQ0FBQyxJQUFzQixFQUNyQyxhQUFhLENBQ2YsRUFDRjtZQUNDLE9BQU8sSUFBSSxDQUFDO1NBQ2Q7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNoQixDQUFDOzs4RUF6WVMsZUFBZTt1REFBZixlQUFlLFdBQWYsZUFBZTt1RkFBZixlQUFlO2NBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQnJhbmNoLCBCcmFuY2hDb29yZGluYXRlcyB9IGZyb20gXCIuLi9jbGFzc2VzL0JyYW5jaFwiO1xyXG5pbXBvcnQgeyBEcmFnU3RhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvZHJhZy1zdGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB0eXBlIHsgTGltYmxlVHJlZU5vZGUsIFByb2Nlc3NlZE9wdGlvbnMgfSBmcm9tIFwiLi90cmVlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgYXJyYXlzQXJlRXF1YWwgfSBmcm9tIFwiLi4vdXRpbFwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZSB9IGZyb20gXCIuLi9jbGFzc2VzL0Ryb3Bab25lXCI7XHJcbmltcG9ydCB7IERyb3Bab25lTG9jYXRpb24gfSBmcm9tIFwiLi4vY2xhc3Nlcy9Ecm9wWm9uZUxvY2F0aW9uXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bab25lRmFtaWx5IHtcclxuICAgLyoqIFRoZSBkZWVwZXN0IG1lbWJlciBvZiB0aGUgZmFtaWx5ICovXHJcbiAgIGZvdW5kZXI6IERyb3Bab25lO1xyXG4gICAvKiogQWxsIHRoZSBkcm9wIHpvbmVzIHRoYXQgYmVsb25nIHRvIHRoaXMgZmFtaWx5ICovXHJcbiAgIG1lbWJlcnM6IEFycmF5PERyb3Bab25lPjtcclxufVxyXG5cclxuZnVuY3Rpb24gc29ydEZhbWlseShtZW1iZXJBOiBEcm9wWm9uZSwgbWVtYmVyQjogRHJvcFpvbmUpIHtcclxuICAgY29uc3QgYUNvb3JkaW5hdGVzID0gbWVtYmVyQS5nZXRGdWxsSW5zZXJ0Q29vcmRpbmF0ZXMoKTtcclxuICAgY29uc3QgYkNvb3JkaW5hdGVzID0gbWVtYmVyQi5nZXRGdWxsSW5zZXJ0Q29vcmRpbmF0ZXMoKTtcclxuICAgaWYgKGFDb29yZGluYXRlcy5sZW5ndGggPiBiQ29vcmRpbmF0ZXMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgfVxyXG4gICBpZiAoYUNvb3JkaW5hdGVzLmxlbmd0aCA8IGJDb29yZGluYXRlcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgIH1cclxuICAgcmV0dXJuIDA7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERyb3Bab25lU2VydmljZSB7XHJcbiAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcFpvbmVBcmNoaXZlOiBTZXQ8RHJvcFpvbmU+O1xyXG4gICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bab25lSW52ZW50b3J5OiBBcnJheTxEcm9wWm9uZT47XHJcbiAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcFpvbmVGYW1pbGllczogQXJyYXk8RHJvcFpvbmVGYW1pbHk+O1xyXG4gICBwcml2YXRlIHZpc2libGVGYW1pbHk6IERyb3Bab25lRmFtaWx5IHwgbnVsbDtcclxuICAgcHJpdmF0ZSBhY3RpdmVEcm9wWm9uZTogRHJvcFpvbmUgfCBudWxsO1xyXG4gICBwcml2YXRlIHRyZWU6IEJyYW5jaDxhbnk+IHwgdW5kZWZpbmVkO1xyXG4gICBwcml2YXRlIHRyZWVPcHRpb25zOiBQcm9jZXNzZWRPcHRpb25zIHwgdW5kZWZpbmVkO1xyXG4gICBwcml2YXRlIHRlbXBGYW1pbGllczpcclxuICAgICAgfCByZWFkb25seSBbRHJvcFpvbmVGYW1pbHksIERyb3Bab25lRmFtaWx5IHwgbnVsbF1cclxuICAgICAgfCByZWFkb25seSBbXTtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZHJhZ1N0YXRlU2VydmljZTogRHJhZ1N0YXRlU2VydmljZSkge1xyXG4gICAgICB0aGlzLmRyb3Bab25lQXJjaGl2ZSA9IG5ldyBTZXQoKTtcclxuICAgICAgdGhpcy5kcm9wWm9uZUludmVudG9yeSA9IFtdO1xyXG4gICAgICB0aGlzLmRyb3Bab25lRmFtaWxpZXMgPSBbXTtcclxuICAgICAgdGhpcy52aXNpYmxlRmFtaWx5ID0gbnVsbDtcclxuICAgICAgdGhpcy5hY3RpdmVEcm9wWm9uZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudGVtcEZhbWlsaWVzID0gW107XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlRHJvcFpvbmUobnVsbCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBhZGREcm9wWm9uZShuZXdEcm9wWm9uZTogRHJvcFpvbmUpOiB2b2lkIHtcclxuICAgICAgdGhpcy5kcm9wWm9uZUFyY2hpdmUuYWRkKG5ld0Ryb3Bab25lKTtcclxuICAgfVxyXG5cclxuICAgLyoqIGhpZGVzIGFsbCBkcm9wIHpvbmVzICovXHJcbiAgIHB1YmxpYyBjbGVhclZpc2libGVab25lcygpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMudmlzaWJsZUZhbWlseSAhPT0gbnVsbCkge1xyXG4gICAgICAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiB0aGlzLnZpc2libGVGYW1pbHkubWVtYmVycykge1xyXG4gICAgICAgICAgICBtZW1iZXIuaXNWaXNpYmxlKGZhbHNlKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICB0aGlzLnZpc2libGVGYW1pbHkgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVzdG9yZUZhbWlsaWVzKCk7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlRHJvcFpvbmUobnVsbCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBnZXRBY3RpdmVEcm9wWm9uZSgpOiBEcm9wWm9uZVNlcnZpY2VbXCJhY3RpdmVEcm9wWm9uZVwiXSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURyb3Bab25lO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZ2V0RHJvcFpvbmUoY29vcmRpbmF0ZXM6IEJyYW5jaENvb3JkaW5hdGVzKTogRHJvcFpvbmUgfCB1bmRlZmluZWQge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBbLi4uY29vcmRpbmF0ZXNdO1xyXG4gICAgICBwYXJlbnQucG9wKCk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY29vcmRpbmF0ZXNbY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV07XHJcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gbmV3IERyb3Bab25lTG9jYXRpb24ocGFyZW50LCBpbmRleCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmRyb3Bab25lSW52ZW50b3J5LmZpbmQoKGRyb3Bab25lKSA9PlxyXG4gICAgICAgICBEcm9wWm9uZS5kcm9wWm9uZUxvY2F0aW9uc0FyZUVxdWFsKGRyb3Bab25lLCBsb2NhdGlvbilcclxuICAgICAgKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGluaXQodHJlZTogQnJhbmNoPGFueT4sIHRyZWVPcHRpb25zOiBQcm9jZXNzZWRPcHRpb25zKTogdm9pZCB7XHJcbiAgICAgIHRoaXMudHJlZSA9IHRyZWU7XHJcbiAgICAgIHRoaXMudHJlZU9wdGlvbnMgPSB0cmVlT3B0aW9ucztcclxuICAgICAgdGhpcy51cGRhdGUoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHJlbW92ZURyb3Bab25lKGRyb3Bab25lOiBEcm9wWm9uZSkge1xyXG4gICAgICB0aGlzLmRyb3Bab25lQXJjaGl2ZS5kZWxldGUoZHJvcFpvbmUpO1xyXG4gICB9XHJcblxyXG4gICAvKiogaGlkZXMgYWxsIGRyb3Agem9uZXMsIGRlbGV0ZXMgYWxsIHRoZSBmYW1pbHkgYXNzaWdubWVudHMsXHJcbiAgICAqIGFuZCBlbXB0aWVzIHRoZSBkcm9wWm9uZUludmVudG9yeVxyXG4gICAgKi9cclxuICAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgICB0aGlzLmNsZWFyVmlzaWJsZVpvbmVzKCk7XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVGYW1pbGllcy5sZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLmRyb3Bab25lSW52ZW50b3J5Lmxlbmd0aCA9IDA7XHJcbiAgIH1cclxuXHJcbiAgIC8qKlxyXG4gICAgKiBSZXN0b3JlcyB0aGUgc2VydmljZSB0byBpdHMgaW5pdGlhbCBzdGF0ZTogaGlkZXMgYWxsIGRyb3Agem9uZXMsXHJcbiAgICAqIGRlbGV0ZXMgYWxsIHRoZSBmYW1pbHkgYXNzaWdubWVudHMsIGFuZCBlbXB0aWVzIHRoZSBkcm9wWm9uZUludmVudG9yeVxyXG4gICAgKiBhbmQgZHJvcFpvbmVBcmNoaXZlLlxyXG4gICAgKi9cclxuICAgcHVibGljIHJlc3RhcnQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgdGhpcy5kcm9wWm9uZUFyY2hpdmUuY2xlYXIoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHJlc3RvcmVGYW1pbGllcygpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMudGVtcEZhbWlsaWVzLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lRmFtaWxpZXMucG9wKCk7XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVGYW1pbGllcy5wdXNoKHRoaXMudGVtcEZhbWlsaWVzWzBdKTtcclxuICAgICAgICAgZm9yIChjb25zdCBtZW1iZXIgb2YgdGhpcy50ZW1wRmFtaWxpZXNbMF0ubWVtYmVycykge1xyXG4gICAgICAgICAgICBtZW1iZXIuc2V0RmFtaWx5KHRoaXMudGVtcEZhbWlsaWVzWzBdKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBpZiAodGhpcy50ZW1wRmFtaWxpZXNbMV0gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wWm9uZUZhbWlsaWVzLnB1c2godGhpcy50ZW1wRmFtaWxpZXNbMV0pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiB0aGlzLnRlbXBGYW1pbGllc1sxXS5tZW1iZXJzKSB7XHJcbiAgICAgICAgICAgICAgIG1lbWJlci5zZXRGYW1pbHkodGhpcy50ZW1wRmFtaWxpZXNbMV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy50ZW1wRmFtaWxpZXMgPSBbXTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICAvKipcclxuICAgICogU2hvd3MgdGhlIGRyb3Agem9uZSBmYW1pbHkgb2YgdGhlIGRyb3Agem9uZSBpbmRpY2F0ZWQgYnkgYGNvb3JkaW5hdGVzYC5cclxuICAgICovXHJcbiAgIHB1YmxpYyBzaG93RHJvcFpvbmVGYW1pbHkoXHJcbiAgICAgIC8qKiBOb3RlOiB0aGlzIGRyb3Agem9uZSBtYXkgbm90IGV4aXN0IGluIHRoZSBkcm9wWm9uZUludmVudG9yeTsgd2UgaGF2ZSB0byBzZWFyY2ggdGhlIGludmVudG9yeSBiYXNlZCBvbiBpdHMgbG9jYXRpb24gKi9cclxuICAgICAgZHJvcFpvbmU6IERyb3Bab25lLFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgIGpvaW5GYW1pbGllcz86IGJvb2xlYW47XHJcbiAgICAgICAgIGFjdGl2YXRlTG93ZXN0SW5zdGVhZE9mRm91bmRlcj86IGJvb2xlYW47XHJcbiAgICAgIH0gPSB7IGpvaW5GYW1pbGllczogZmFsc2UsIGFjdGl2YXRlTG93ZXN0SW5zdGVhZE9mRm91bmRlcjogZmFsc2UgfVxyXG4gICApOiB2b2lkIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLmFjdGl2ZURyb3Bab25lICE9PSBudWxsICYmXHJcbiAgICAgICAgIERyb3Bab25lLmRyb3Bab25lTG9jYXRpb25zQXJlRXF1YWwodGhpcy5hY3RpdmVEcm9wWm9uZSwgZHJvcFpvbmUpXHJcbiAgICAgICkge1xyXG4gICAgICAgICAvL0FscmVhZHkgc2hvd2luZyB0aGUgZmFtaWx5IHdpdGggdGhlIGFwcHJvcHJpYXRlIGFjdGl2ZSBkcm9wIHpvbmVcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZpc2libGVGYW1pbHkgIT09IG51bGwgfHwgdGhpcy5hY3RpdmVEcm9wWm9uZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICB0aGlzLmNsZWFyVmlzaWJsZVpvbmVzKCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5kcm9wWm9uZUludmVudG9yeS5maW5kKCh6b25lKSA9PlxyXG4gICAgICAgICBEcm9wWm9uZS5kcm9wWm9uZUxvY2F0aW9uc0FyZUVxdWFsKHpvbmUsIGRyb3Bab25lKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQ291bGQgbm90IGZpbmQgZHJvcCB6b25lIHRvIHNob3cuIGxvY2F0aW9uOiAke0pTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgICAgICAgICBkcm9wWm9uZS5nZXRMb2NhdGlvbigpXHJcbiAgICAgICAgICAgICl9YFxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGZhbWlseSA9IHRhcmdldC5nZXRGYW1pbHkoKTtcclxuICAgICAgaWYgKG9wdGlvbnMuam9pbkZhbWlsaWVzID09PSB0cnVlKSB7XHJcbiAgICAgICAgIGNvbnN0IGxvY2F0aW9uMSA9IGRyb3Bab25lLmdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgIGNvbnN0IGxvY2F0aW9uMiA9IG5ldyBEcm9wWm9uZUxvY2F0aW9uKFxyXG4gICAgICAgICAgICBbLi4ubG9jYXRpb24xLnBhcmVudENvb3JkaW5hdGVzXSxcclxuICAgICAgICAgICAgbG9jYXRpb24xLmluc2VydEluZGV4ICsgMVxyXG4gICAgICAgICApO1xyXG4gICAgICAgICBjb25zdCB0YXJnZXQyID0gdGhpcy5kcm9wWm9uZUludmVudG9yeS5maW5kKCh6b25lKSA9PlxyXG4gICAgICAgICAgICBEcm9wWm9uZS5kcm9wWm9uZUxvY2F0aW9uc0FyZUVxdWFsKHpvbmUsIGxvY2F0aW9uMilcclxuICAgICAgICAgKTtcclxuICAgICAgICAgaWYgKHRhcmdldDIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCBkcm9wIHpvbmUgdG8gc2hvd1wiKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBjb25zdCBmYW1pbHkyID0gdGFyZ2V0Mi5nZXRGYW1pbHkoKTtcclxuICAgICAgICAgaWYgKGZhbWlseSA9PT0gdW5kZWZpbmVkIHx8IGZhbWlseTIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBmYW1pbHlcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgbmV3RmFtaWx5ID0ge1xyXG4gICAgICAgICAgICBmb3VuZGVyOiBmYW1pbHkuZm91bmRlcixcclxuICAgICAgICAgICAgbWVtYmVyczogWy4uLmZhbWlseS5tZW1iZXJzXVxyXG4gICAgICAgICB9O1xyXG4gICAgICAgICB0aGlzLnNob3dEcm9wWm9uZShmYW1pbHkuZm91bmRlciwgdHJ1ZSk7XHJcbiAgICAgICAgIGZvciAoY29uc3QgbWVtYmVyIG9mIGZhbWlseS5tZW1iZXJzLnNvcnQoc29ydEZhbWlseSkpIHtcclxuICAgICAgICAgICAgbWVtYmVyLnNldEZhbWlseShuZXdGYW1pbHkpO1xyXG4gICAgICAgICAgICBpZiAobWVtYmVyICE9PSBmYW1pbHkuZm91bmRlcikge1xyXG4gICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVEcm9wWm9uZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAvL0ZhaWxlZCB0byBhY3RpdmF0ZSBhIHpvbmUgc28gZmFyLCBzbyBhY3RpdmF0ZSB0aGlzIG9uZSBpbnN0ZWFkXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Ryb3Bab25lKG1lbWJlciwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Ryb3Bab25lKG1lbWJlcik7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGZvciAoY29uc3QgbWVtYmVyIG9mIGZhbWlseTIubWVtYmVycykge1xyXG4gICAgICAgICAgICBtZW1iZXIuc2V0RmFtaWx5KG5ld0ZhbWlseSk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgbWVtYmVyLmdldExvY2F0aW9uKCkucGFyZW50Q29vcmRpbmF0ZXMubGVuZ3RoIDxcclxuICAgICAgICAgICAgICAgdGFyZ2V0Mi5nZXRMb2NhdGlvbigpLnBhcmVudENvb3JkaW5hdGVzLmxlbmd0aFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgbmV3RmFtaWx5Lm1lbWJlcnMucHVzaChtZW1iZXIpO1xyXG4gICAgICAgICAgICAgICB0aGlzLnNob3dEcm9wWm9uZShtZW1iZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgLy9UZW1wb3JhcmlseSBzdG9yZSB0aGUgb2xkIGZhbWlsaWVzXHJcbiAgICAgICAgIHRoaXMudGVtcEZhbWlsaWVzID0gW2ZhbWlseSwgZmFtaWx5Ml07XHJcbiAgICAgICAgIC8vUmVtb3ZlIHRoZSBvbGQgZmFtaWxpZXNcclxuICAgICAgICAgY29uc3QgZmFtaWx5SW5kZXggPSB0aGlzLmRyb3Bab25lRmFtaWxpZXMuaW5kZXhPZihmYW1pbHkpO1xyXG4gICAgICAgICB0aGlzLmRyb3Bab25lRmFtaWxpZXMuc3BsaWNlKGZhbWlseUluZGV4LCAxKTtcclxuICAgICAgICAgY29uc3QgZmFtaWx5MkluZGV4ID0gdGhpcy5kcm9wWm9uZUZhbWlsaWVzLmluZGV4T2YoZmFtaWx5Mik7XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVGYW1pbGllcy5zcGxpY2UoZmFtaWx5MkluZGV4LCAxKTtcclxuICAgICAgICAgLy9BZGQgdGhlIG5ldyBmYW1pbHlcclxuICAgICAgICAgdGhpcy5kcm9wWm9uZUZhbWlsaWVzLnB1c2gobmV3RmFtaWx5KTtcclxuICAgICAgICAgdGhpcy52aXNpYmxlRmFtaWx5ID0gbmV3RmFtaWx5O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICBpZiAoZmFtaWx5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZmFtaWx5XCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMudmlzaWJsZUZhbWlseSA9IGZhbWlseTtcclxuICAgICAgICAgdGhpcy5zaG93RHJvcFpvbmUoZmFtaWx5LmZvdW5kZXIsIHRydWUpO1xyXG4gICAgICAgICBpZiAoZmFtaWx5Lm1lbWJlcnMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiBmYW1pbHkubWVtYmVycy5zb3J0KHNvcnRGYW1pbHkpKSB7XHJcbiAgICAgICAgICAgICAgIGlmIChtZW1iZXIgIT09IGZhbWlseS5mb3VuZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURyb3Bab25lID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIC8vRmFpbGVkIHRvIGFjdGl2YXRlIGEgem9uZSBzbyBmYXIsIHNvIGFjdGl2YXRlIHRoaXMgb25lIGluc3RlYWRcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RHJvcFpvbmUobWVtYmVyLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RHJvcFpvbmUobWVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgb3B0aW9ucy5hY3RpdmF0ZUxvd2VzdEluc3RlYWRPZkZvdW5kZXIgPT09IHRydWUgJiZcclxuICAgICAgICAgdGhpcy52aXNpYmxlRmFtaWx5Lm1lbWJlcnMubGVuZ3RoID4gMVxyXG4gICAgICApIHtcclxuICAgICAgICAgY29uc3QgbG93ZXN0TWVtYmVyID0gWy4uLnRoaXMudmlzaWJsZUZhbWlseS5tZW1iZXJzXVxyXG4gICAgICAgICAgICAuc29ydChzb3J0RmFtaWx5KVxyXG4gICAgICAgICAgICAucG9wKCk7XHJcbiAgICAgICAgIGlmIChsb3dlc3RNZW1iZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IGxvd2VzdCBtZW1iZXJcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5zd2FwQWN0aXZlRHJvcFpvbmUobG93ZXN0TWVtYmVyKTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgc3dhcEFjdGl2ZURyb3Bab25lKG5ld0FjdGl2ZURyb3Bab25lOiBEcm9wWm9uZSk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy52aXNpYmxlRmFtaWx5ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHZpc2libGUgZmFtaWx5IGF2YWlsYWJsZSBmb3Igc3dhcHBpbmdcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZpc2libGVGYW1pbHkubWVtYmVycy5maW5kSW5kZXgoXHJcbiAgICAgICAgIChkcm9wWm9uZSkgPT4gZHJvcFpvbmUgPT09IG5ld0FjdGl2ZURyb3Bab25lXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZmFpbGVkIHRvIHN3YXAgYWN0aXZlIGRyb3Agem9uZVwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEFjdGl2ZURyb3Bab25lKG5ld0FjdGl2ZURyb3Bab25lKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHVwZGF0ZSgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICB0aGlzLmJ1aWxkSW52ZW50b3J5KCk7XHJcbiAgICAgIHRoaXMuYXNzaWduRmFtaWxpZXMoKTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBhc3NpZ25GYW1pbGllcygpOiB2b2lkIHtcclxuICAgICAgY29uc3Qgb3JwaGFuWm9uZXMgPSBbLi4udGhpcy5kcm9wWm9uZUludmVudG9yeV07XHJcbiAgICAgIGNvbnN0IGRlZXBlc3RNZW1iZXJzID0gb3JwaGFuWm9uZXNcclxuICAgICAgICAgLmZpbHRlcigoem9uZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHpvbmUuZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgbG9jYXRpb24uaW5zZXJ0SW5kZXggPT09IDAgJiZcclxuICAgICAgICAgICAgICAgbG9jYXRpb24ucGFyZW50Q29vcmRpbmF0ZXMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICB9KVxyXG4gICAgICAgICAuc29ydCgodmFsdWVBLCB2YWx1ZUIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYUNvb3JkaW5hdGVzID0gdmFsdWVBLmdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpO1xyXG4gICAgICAgICAgICBjb25zdCBiQ29vcmRpbmF0ZXMgPSB2YWx1ZUIuZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KGFDb29yZGluYXRlcy5sZW5ndGgsIGJDb29yZGluYXRlcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgICAgIGlmICgoYUNvb3JkaW5hdGVzW2luZGV4XSA/PyAtMSkgPiAoYkNvb3JkaW5hdGVzW2luZGV4XSA/PyAtMSkpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAoYUNvb3JkaW5hdGVzW2luZGV4XSA/PyAtMSkgPCAoYkNvb3JkaW5hdGVzW2luZGV4XSA/PyAtMSlcclxuICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICBmb3IgKGNvbnN0IGRyb3Bab25lIG9mIGRlZXBlc3RNZW1iZXJzKSB7XHJcbiAgICAgICAgIGlmICghb3JwaGFuWm9uZXMuaW5jbHVkZXMoZHJvcFpvbmUpKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGNvbnN0IGZhbWlseTogRHJvcFpvbmVGYW1pbHkgPSB7XHJcbiAgICAgICAgICAgIGZvdW5kZXI6IGRyb3Bab25lLFxyXG4gICAgICAgICAgICBtZW1iZXJzOiBbXVxyXG4gICAgICAgICB9O1xyXG4gICAgICAgICBkcm9wWm9uZS5zZXRGYW1pbHkoZmFtaWx5KTtcclxuICAgICAgICAgLy9TZWUgaWYgdGhlcmUgYXJlIGFueSBvcnBoYW5zIHRoYXQgYmVsb25nIHRvIHRoaXMgZmFtaWx5IGFuZCBjbGFpbSB0aGVtLlxyXG4gICAgICAgICBjb25zdCBjdXJzb3IgPSBbLi4uZHJvcFpvbmUuZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCldO1xyXG4gICAgICAgICB3aGlsZSAoY3Vyc29yLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZmFtaWx5TWVtYmVySW5kZXggPSBvcnBoYW5ab25lcy5maW5kSW5kZXgoKHpvbmUpID0+XHJcbiAgICAgICAgICAgICAgIGFycmF5c0FyZUVxdWFsKHpvbmUuZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCksIGN1cnNvcilcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGZhbWlseU1lbWJlckluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICBjb25zdCBmYW1pbHlNZW1iZXIgPSBvcnBoYW5ab25lcy5zcGxpY2UoZmFtaWx5TWVtYmVySW5kZXgsIDEpWzBdO1xyXG4gICAgICAgICAgICAgICBmYW1pbHkubWVtYmVycy5wdXNoKGZhbWlseU1lbWJlcik7XHJcbiAgICAgICAgICAgICAgIGZhbWlseU1lbWJlci5zZXRGYW1pbHkoZmFtaWx5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXJzb3IucG9wKCk7XHJcbiAgICAgICAgICAgIGN1cnNvcltjdXJzb3IubGVuZ3RoIC0gMV0rKztcclxuICAgICAgICAgfVxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lRmFtaWxpZXMucHVzaChmYW1pbHkpO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgZHJvcFpvbmUgb2Ygb3JwaGFuWm9uZXMuZmlsdGVyKFxyXG4gICAgICAgICAoem9uZSkgPT4gem9uZS5nZXRGdWxsSW5zZXJ0Q29vcmRpbmF0ZXMoKS5sZW5ndGggPT09IDFcclxuICAgICAgKSkge1xyXG4gICAgICAgICBjb25zdCBmYW1pbHk6IERyb3Bab25lRmFtaWx5ID0ge1xyXG4gICAgICAgICAgICBmb3VuZGVyOiBkcm9wWm9uZSxcclxuICAgICAgICAgICAgbWVtYmVyczogW2Ryb3Bab25lXVxyXG4gICAgICAgICB9O1xyXG4gICAgICAgICBkcm9wWm9uZS5zZXRGYW1pbHkoZmFtaWx5KTtcclxuICAgICAgICAgdGhpcy5kcm9wWm9uZUZhbWlsaWVzLnB1c2goZmFtaWx5KTtcclxuICAgICAgICAgb3JwaGFuWm9uZXMuc3BsaWNlKG9ycGhhblpvbmVzLmluZGV4T2YoZHJvcFpvbmUpLCAxKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAob3JwaGFuWm9uZXMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgIGxldCBvcnBoYW5zID0gXCJcIjtcclxuICAgICAgICAgZm9yIChjb25zdCB6b25lIG9mIG9ycGhhblpvbmVzKSB7XHJcbiAgICAgICAgICAgIG9ycGhhbnMgKz0gYCR7SlNPTi5zdHJpbmdpZnkoem9uZS5nZXRMb2NhdGlvbigpKX0sIGA7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgb3JwaGFucyA9IG9ycGhhbnMuc2xpY2UoMCwgb3JwaGFucy5sZW5ndGggLSAyKTtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgU29tZSB6b25lcyB3ZXJlIG5vdCBhc3NpZ25lZCB0byBhIGZhbWlseS4gVGhlIG9ycGhhbiB6b25lcyBoYXZlIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOiAke29ycGhhbnN9YFxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgYnVpbGRJbnZlbnRvcnkoKSB7XHJcbiAgICAgIC8vV2UgZG8gdGhpcyBmdW5reSBzdHJpbmcgYXJyYXkgYmVjYXVzZSBpdCBpcyBmYXN0ZXIgdGhhbiBkb2luZyBkaXJlY3QgYXJyYXkgY29tcGFyaXNvbnNcclxuICAgICAgY29uc3QgaW52ZW50b3J5Q29vcmRpbmF0ZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBkcm9wWm9uZSBvZiB0aGlzLmRyb3Bab25lQXJjaGl2ZSkge1xyXG4gICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGRyb3Bab25lLmdldEZ1bGxJbnNlcnRDb29yZGluYXRlcygpLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgICBpZiAoaW52ZW50b3J5Q29vcmRpbmF0ZXMuaW5jbHVkZXMoY29vcmRpbmF0ZXMpKSB7XHJcbiAgICAgICAgICAgIGRyb3Bab25lLmlzUmVuZGVyZWQoZmFsc2UpO1xyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRyb3Bab25lSW52ZW50b3J5LnB1c2goZHJvcFpvbmUpO1xyXG4gICAgICAgICAgICBpbnZlbnRvcnlDb29yZGluYXRlcy5wdXNoKGNvb3JkaW5hdGVzKTtcclxuICAgICAgICAgICAgZHJvcFpvbmUuaXNSZW5kZXJlZCh0cnVlKTtcclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgc2V0QWN0aXZlRHJvcFpvbmUoZHJvcFpvbmU6IERyb3Bab25lIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmVEcm9wWm9uZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICB0aGlzLmFjdGl2ZURyb3Bab25lLmlzQWN0aXZlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGl2ZURyb3Bab25lID0gZHJvcFpvbmU7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGhpcy5hY3RpdmVEcm9wWm9uZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKSAhPT0gXCJkcm9wcGFibGVcIlxyXG4gICAgICApIHtcclxuICAgICAgICAgdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLmRyb3BwYWJsZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICB0aGlzLmFjdGl2ZURyb3Bab25lID09PSBudWxsICYmXHJcbiAgICAgICAgIHRoaXMuZHJhZ1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpID09PSBcImRyb3BwYWJsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgICB0aGlzLmRyYWdTdGF0ZVNlcnZpY2Uubm90RHJvcHBhYmxlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYWN0aXZlRHJvcFpvbmUgIT09IG51bGwpIHtcclxuICAgICAgICAgdGhpcy5hY3RpdmVEcm9wWm9uZS5pc0FjdGl2ZSh0cnVlKTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHNob3dEcm9wWm9uZShkcm9wWm9uZTogRHJvcFpvbmUsIGFjdGl2ZSA9IGZhbHNlKTogYm9vbGVhbiB7XHJcbiAgICAgIGlmICh0aGlzLnRyZWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEcm9wWm9uZVNlcnZpY2Ugbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy56b25lSXNBbGxvd2VkKGRyb3Bab25lKSkge1xyXG4gICAgICAgICAvL1VzZXIgc2V0dGluZ3MgaW5kaWNhdGUgdG8gc2tpcCB0aGlzIGRyb3Agem9uZVxyXG4gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy50cmVlLmZpbmRCeUNvb3JkaW5hdGVzKFxyXG4gICAgICAgICBkcm9wWm9uZS5nZXRMb2NhdGlvbigpLnBhcmVudENvb3JkaW5hdGVzXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgZmFtaWx5IG1lbWJlclwiKTtcclxuICAgICAgfVxyXG4gICAgICBkcm9wWm9uZS5pc1Zpc2libGUodHJ1ZSk7XHJcbiAgICAgIGlmIChhY3RpdmUgPT09IHRydWUpIHtcclxuICAgICAgICAgdGhpcy5zZXRBY3RpdmVEcm9wWm9uZShkcm9wWm9uZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgem9uZUlzQWxsb3dlZChkcm9wWm9uZTogRHJvcFpvbmUpOiBib29sZWFuIHtcclxuICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnRyZWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkcm9wWm9uZVNlcnZpY2Ugbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0RGF0YSgpO1xyXG4gICAgICBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGdldCBkcmFnZ2VkIG5vZGVcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZHJvcFpvbmVQYXJlbnQgPSB0aGlzLnRyZWUuZmluZEJ5Q29vcmRpbmF0ZXMoXHJcbiAgICAgICAgIGRyb3Bab25lLmdldExvY2F0aW9uKCkucGFyZW50Q29vcmRpbmF0ZXNcclxuICAgICAgKTtcclxuICAgICAgaWYgKGRyb3Bab25lUGFyZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGdldCBkcm9wIHpvbmUgcGFyZW50XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRyb3Bab25lSW5kZXggPSBkcm9wWm9uZS5nZXRMb2NhdGlvbigpLmluc2VydEluZGV4O1xyXG4gICAgICBpZiAoZHJvcFpvbmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBnZXQgZHJvcCB6b25lIGluZGV4XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRyYWdnZWROb2RlID0gZGF0YS5icmFuY2g7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGhpcy50cmVlT3B0aW9ucy5hbGxvd0Ryb3AoXHJcbiAgICAgICAgICAgIGRyYWdnZWROb2RlLmRhdGEsXHJcbiAgICAgICAgICAgIGRyb3Bab25lUGFyZW50LmRhdGEgYXMgTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgICAgICAgIGRyb3Bab25lSW5kZXhcclxuICAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICB9XHJcbn1cclxuIl19

@@ -6,2 +6,3 @@ import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from "@angular/core";

import { isElementDescendant } from "../util";
import { first } from "rxjs/operators";
import * as i0 from "@angular/core";

@@ -80,3 +81,3 @@ import * as i1 from "./tree.service";

//Mouse has left the tree, so clear the drop zones
this.dropZoneService.clear();
this.dropZoneService.clearVisibleZones();
this.changeDetectorRef.detectChanges();

@@ -86,9 +87,5 @@ }

event.stopPropagation();
const dropZone = this.dropZoneService.getActiveDropZone();
if (this.dragStateService.getState() !== "droppable") {
return;
}
if (dropZone === null) {
throw new Error("failed to get active drop zone at drop handler");
}
const sourceBranch = this.dragStateService.capture();

@@ -98,3 +95,13 @@ if (sourceBranch === undefined) {

}
this.dropZoneService.clear();
const dropZone = this.dropZoneService.getActiveDropZone();
if (dropZone === null) {
throw new Error("failed to get active drop zone at drop handler");
}
this.treeService.captured = true;
this.dragStateService.state$
.pipe(first((message) => message === "idle"))
.subscribe(() => {
this.treeService.captured = false;
});
this.dropZoneService.clearVisibleZones();
this.treeService.drop(sourceBranch, dropZone.getFullInsertCoordinates());

@@ -151,2 +158,2 @@ }

}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtcm9vdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLXJvb3QvbGltYmxlLXRyZWUtcm9vdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLXJvb3QvbGltYmxlLXRyZWUtcm9vdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBTXRELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7Ozs7Ozs7OztBQVU5QyxNQUFNLE9BQU8sdUJBQXVCO0lBd0JqQyxZQUNvQixXQUF3QixFQUN4QixlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLGlCQUFvQztRQUpwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFackMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFZeEQsSUFBSSxDQUFDLGVB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LEVBQUUsa0JBQWtCO2dCQUM1QixXQUFXLEVBQUUsbUNBQW1DO2dCQUNoRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztnQkFDaEQsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUMzQzs2TEFHVyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLO1lBRWlELElBQUk7a0JBQTFELFNBQVM7bUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBSzdDLGNBQWM7a0JBRGIsU0FBUzttQkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUk5QyxlQUFlO2tCQUR2QixNQUFNO1lBR1ksVUFBVTtrQkFBNUIsTUFBTTtZQUVZLFFBQVE7a0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICBBZnRlclZpZXdJbml0LFxyXG4gICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgQ29tcG9uZW50LFxyXG4gICBFdmVudEVtaXR0ZXIsXHJcbiAgIElucHV0LFxyXG4gICBPbkNoYW5nZXMsXHJcbiAgIE9uRGVzdHJveSxcclxuICAgT3V0cHV0LFxyXG4gICBWaWV3Q2hpbGQsXHJcbiAgIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IERyb3Bab25lU2VydmljZSB9IGZyb20gXCIuL2Ryb3Atem9uZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgIExpbWJsZVRyZWVEYXRhLFxyXG4gICBMaW1ibGVUcmVlT3B0aW9ucyxcclxuICAgVHJlZURyb3BcclxufSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcm9vdC90cmVlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJlZVNlcnZpY2UgfSBmcm9tIFwiLi90cmVlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgaXNFbGVtZW50RGVzY2VuZGFudCB9IGZyb20gXCIuLi91dGlsXCI7XHJcbmltcG9ydCB7IERyYWdTdGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2luZ2xldG9ucy9kcmFnLXN0YXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR2xvYmFsRXZlbnRzU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2dsb2JhbC1ldmVudHMuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgIHNlbGVjdG9yOiBcImxpbWJsZS10cmVlLXJvb3RcIixcclxuICAgdGVtcGxhdGVVcmw6IFwiLi9saW1ibGUtdHJlZS1yb290LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgIHN0eWxlVXJsczogW1wiLi9saW1ibGUtdHJlZS1yb290LmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICBwcm92aWRlcnM6IFtUcmVlU2VydmljZSwgRHJvcFpvbmVTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGltYmxlVHJlZVJvb3RDb21wb25lbnRcclxuICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgIEBJbnB1dCgpIGRhdGE6IExpbWJsZVRyZWVEYXRhIHwgdW5kZWZpbmVkO1xyXG4gICBASW5wdXQoKSBvcHRpb25zOiBMaW1ibGVUcmVlT3B0aW9ucyB8IHVuZGVmaW5lZDtcclxuICAgQElucHV0KCkgaXRlbXNQZXJQYWdlOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgIEBJbnB1dCgpIHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgIEBWaWV3Q2hpbGQoXCJob3N0XCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBwcml2YXRlIGhvc3Q6XHJcbiAgICAgIHwgVmlld0NvbnRhaW5lclJlZlxyXG4gICAgICB8IHVuZGVmaW5lZDtcclxuXHJcbiAgIEBWaWV3Q2hpbGQoXCJkcm9wWm9uZUluc2lkZVwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICAgZHJvcFpvbmVJbnNpZGU6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XHJcblxyXG4gICBAT3V0cHV0KClcclxuICAgcmVhZG9ubHkgZHJvcFpvbmVJbnNpZGUkOiBCZWhhdmlvclN1YmplY3Q8Vmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZD47XHJcblxyXG4gICBAT3V0cHV0KCkgcmVhZG9ubHkgdHJlZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVsbD4oKTtcclxuXHJcbiAgIEBPdXRwdXQoKSByZWFkb25seSB0cmVlRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8VHJlZURyb3A+KCk7XHJcblxyXG4gICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgcHJpdmF0ZSByZWFkb25seSBkcm9wU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmVlU2VydmljZTogVHJlZVNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcFpvbmVTZXJ2aWNlOiBEcm9wWm9uZVNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZ1N0YXRlU2VydmljZTogRHJhZ1N0YXRlU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBnbG9iYWxFdmVudHNTZXJ2aWNlOiBHbG9iYWxFdmVudHNTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICApIHtcclxuICAgICAgdGhpcy5kcm9wWm9uZUluc2lkZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuZHJvcFpvbmVJbnNpZGUpO1xyXG4gICAgICB0aGlzLmNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLnRyZWVTZXJ2aWNlLmNoYW5nZXMkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgIHRoaXMudHJlZUNoYW5nZS5lbWl0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRyb3BTdWJzY3JpcHRpb24gPSB0aGlzLnRyZWVTZXJ2aWNlLmRyb3BzJC5zdWJzY3JpYmUoKGRyb3ApID0+IHtcclxuICAgICAgICAgdGhpcy50cmVlRHJvcC5lbWl0KGRyb3ApO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLmRyb3Bab25lSW5zaWRlJC5uZXh0KHRoaXMuZHJvcFpvbmVJbnNpZGUpO1xyXG4gICAgICB0aGlzLmRyb3Bab25lSW5zaWRlJC5jb21wbGV0ZSgpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMub3B0aW9ucz8ubGlzdE1vZGUgIT09IHRydWUgJiZcclxuICAgICAgICAgKHRoaXMuaXRlbXNQZXJQYWdlICE9PSB1bmRlZmluZWQgfHwgdGhpcy5wYWdlICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICkge1xyXG4gICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIFwicGFnaW5hdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gbGlzdE1vZGU7IGBpdGVtc1BlclBhZ2VgIGFuZCBgcGFnZWAgaW5wdXRzIHdpbGwgYmUgaWdub3JlZFwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGUoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIH1cclxuXHJcbiAgIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgICBpZiAodGhpcy5ob3N0ICE9PSB1bmRlZmluZWQgJiYgdGhpcy5kYXRhICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhpcy51cGRhdGUoKTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICAvKiogUmVidWlsZCB0aGUgdHJlZSAqL1xyXG4gICBwdWJsaWMgdXBkYXRlKCkge1xyXG4gICAgICBpZiAodGhpcy5ob3N0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBcIkZhaWxlZCB0byByZW5kZXIgbGltYmxlIHRyZWUuIEZhaWx1cmUgb2NjdXJyZWQgYXQgcm9vdC5cIlxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRhdGEgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGxpbWJsZVRyZWUgcmVxdWlyZXMgYSBkYXRhIG9iamVjdGApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJlZVNlcnZpY2UuaW5pdChcclxuICAgICAgICAgdGhpcy5ob3N0LFxyXG4gICAgICAgICB0aGlzLmRhdGEsXHJcbiAgICAgICAgIHRoaXMub3B0aW9ucyxcclxuICAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UsXHJcbiAgICAgICAgIHRoaXMucGFnZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmdsb2JhbEV2ZW50c1NlcnZpY2UuYWRkU2Nyb2xsaW5nKCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcmFnb3ZlckhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyID09PSBudWxsKSB7XHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBcIm1vdmVcIjtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyYWdsZWF2ZUhhbmRsZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldDtcclxuICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgIShjdXJyZW50VGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkgfHxcclxuICAgICAgICAgIShyZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkgfHxcclxuICAgICAgICAgaXNFbGVtZW50RGVzY2VuZGFudChjdXJyZW50VGFyZ2V0LCByZWxhdGVkVGFyZ2V0KSAhPT0gZmFsc2VcclxuICAgICAgKSB7XHJcbiAgICAgICAgIC8vZXZlbnQgY2FtZSBmcm9tIGRlZXBlciBpbiB0aGUgdHJlZS4gSWdub3JlIGl0LlxyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy9Nb3VzZSBoYXMgbGVmdCB0aGUgdHJlZSwgc28gY2xlYXIgdGhlIGRyb3Agem9uZXNcclxuICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcm9wSGFuZGxlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICBjb25zdCBkcm9wWm9uZSA9IHRoaXMuZHJvcFpvbmVTZXJ2aWNlLmdldEFjdGl2ZURyb3Bab25lKCk7XHJcbiAgICAgIGlmICh0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKSAhPT0gXCJkcm9wcGFibGVcIikge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRyb3Bab25lID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byBnZXQgYWN0aXZlIGRyb3Agem9uZSBhdCBkcm9wIGhhbmRsZXJcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc291cmNlQnJhbmNoID0gdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLmNhcHR1cmUoKTtcclxuICAgICAgaWYgKHNvdXJjZUJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byBnZXQgY3VycmVudCBicmFuY2ggaW4gZHJhZ2VuZEhhbmRsZXJcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UuY2xlYXIoKTtcclxuICAgICAgdGhpcy50cmVlU2VydmljZS5kcm9wKHNvdXJjZUJyYW5jaCwgZHJvcFpvbmUuZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCkpO1xyXG4gICB9XHJcblxyXG4gICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuZHJvcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAoZHJhZ292ZXJOb0NoYW5nZURldGVjdCk9XCJkcmFnb3ZlckhhbmRsZXIoJGV2ZW50KVwiXHJcbiAgIChkcmFnbGVhdmVOb0NoYW5nZURldGVjdCk9XCJkcmFnbGVhdmVIYW5kbGVyKCRldmVudClcIlxyXG4gICAoZHJvcCk9XCJkcm9wSGFuZGxlcigkZXZlbnQpXCJcclxuPlxyXG4gICA8bmctdGVtcGxhdGUgI2Ryb3Bab25lSW5zaWRlPjwvbmctdGVtcGxhdGU+XHJcbiAgIDxuZy10ZW1wbGF0ZSAjaG9zdD48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUtcm9vdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLXJvb3QvbGltYmxlLXRyZWUtcm9vdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saW1ibGUtdHJlZS9zcmMvbGliL2xpbWJsZS10cmVlLXJvb3QvbGltYmxlLXRyZWUtcm9vdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBTXRELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFRdkMsTUFBTSxPQUFPLHVCQUF1QjtJQXdCakMsWUFDb0IsV0FBd0IsRUFDeEIsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxpQkFBb0M7UUFKcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBWnJDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXRDLGFBQVEs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QUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQzs7OEZBcElTLHVCQUF1Qjs0REFBdkIsdUJBQXVCOytCQU9OLGdCQUFnQjsrQkFJTixnQkFBZ0I7Ozs7O3FPQWIxQyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7UUM3QjVDLDhCQUlDO1FBSEUseUlBQTBCLDJCQUF1QixJQUFDLDhIQUN2Qiw0QkFBd0IsSUFERCx3RkFFMUMsdUJBQW1CLElBRnVCO1FBSWxELHlIQUEyQztRQUMzQyx5SEFBaUM7UUFDcEMsaUJBQU07O3VGRHdCTyx1QkFBdUI7Y0FObkMsU0FBUztlQUFDO2dCQUNSLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFdBQVcsRUFBRSxtQ0FBbUM7Z0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2dCQUNoRCxTQUFTLEVBQUUsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO2FBQzNDOzZMQUdXLElBQUk7a0JBQVosS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxJQUFJO2tCQUFaLEtBQUs7WUFFaUQsSUFBSTtrQkFBMUQsU0FBUzttQkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFLN0MsY0FBYztrQkFEYixTQUFTO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBSTlDLGVBQWU7a0JBRHZCLE1BQU07WUFHWSxVQUFVO2tCQUE1QixNQUFNO1lBRVksUUFBUTtrQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgIEFmdGVyVmlld0luaXQsXHJcbiAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICBDb21wb25lbnQsXHJcbiAgIEV2ZW50RW1pdHRlcixcclxuICAgSW5wdXQsXHJcbiAgIE9uQ2hhbmdlcyxcclxuICAgT25EZXN0cm95LFxyXG4gICBPdXRwdXQsXHJcbiAgIFZpZXdDaGlsZCxcclxuICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vZHJvcC16b25lLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICAgTGltYmxlVHJlZURhdGEsXHJcbiAgIExpbWJsZVRyZWVPcHRpb25zLFxyXG4gICBUcmVlRHJvcFxyXG59IGZyb20gXCIuLi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmVlU2VydmljZSB9IGZyb20gXCIuL3RyZWUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBpc0VsZW1lbnREZXNjZW5kYW50IH0gZnJvbSBcIi4uL3V0aWxcIjtcclxuaW1wb3J0IHsgRHJhZ1N0YXRlU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2RyYWctc3RhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxFdmVudHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvZ2xvYmFsLWV2ZW50cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgc2VsZWN0b3I6IFwibGltYmxlLXRyZWUtcm9vdFwiLFxyXG4gICB0ZW1wbGF0ZVVybDogXCIuL2xpbWJsZS10cmVlLXJvb3QuY29tcG9uZW50Lmh0bWxcIixcclxuICAgc3R5bGVVcmxzOiBbXCIuL2xpbWJsZS10cmVlLXJvb3QuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgIHByb3ZpZGVyczogW1RyZWVTZXJ2aWNlLCBEcm9wWm9uZVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaW1ibGVUcmVlUm9vdENvbXBvbmVudFxyXG4gICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgQElucHV0KCkgZGF0YTogTGltYmxlVHJlZURhdGEgfCB1bmRlZmluZWQ7XHJcbiAgIEBJbnB1dCgpIG9wdGlvbnM6IExpbWJsZVRyZWVPcHRpb25zIHwgdW5kZWZpbmVkO1xyXG4gICBASW5wdXQoKSBpdGVtc1BlclBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICAgQElucHV0KCkgcGFnZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgQFZpZXdDaGlsZChcImhvc3RcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHByaXZhdGUgaG9zdDpcclxuICAgICAgfCBWaWV3Q29udGFpbmVyUmVmXHJcbiAgICAgIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgQFZpZXdDaGlsZChcImRyb3Bab25lSW5zaWRlXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gICBkcm9wWm9uZUluc2lkZTogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgIEBPdXRwdXQoKVxyXG4gICByZWFkb25seSBkcm9wWm9uZUluc2lkZSQ6IEJlaGF2aW9yU3ViamVjdDxWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkPjtcclxuXHJcbiAgIEBPdXRwdXQoKSByZWFkb25seSB0cmVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xyXG5cclxuICAgQE91dHB1dCgpIHJlYWRvbmx5IHRyZWVEcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxUcmVlRHJvcD4oKTtcclxuXHJcbiAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICBwcml2YXRlIHJlYWRvbmx5IGRyb3BTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHRyZWVTZXJ2aWNlOiBUcmVlU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wWm9uZVNlcnZpY2U6IERyb3Bab25lU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcmFnU3RhdGVTZXJ2aWNlOiBEcmFnU3RhdGVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbEV2ZW50c1NlcnZpY2U6IEdsb2JhbEV2ZW50c1NlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgICkge1xyXG4gICAgICB0aGlzLmRyb3Bab25lSW5zaWRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5kcm9wWm9uZUluc2lkZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMudHJlZVNlcnZpY2UuY2hhbmdlcyQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgdGhpcy50cmVlQ2hhbmdlLmVtaXQoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZHJvcFN1YnNjcmlwdGlvbiA9IHRoaXMudHJlZVNlcnZpY2UuZHJvcHMkLnN1YnNjcmliZSgoZHJvcCkgPT4ge1xyXG4gICAgICAgICB0aGlzLnRyZWVEcm9wLmVtaXQoZHJvcCk7XHJcbiAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVJbnNpZGUkLm5leHQodGhpcy5kcm9wWm9uZUluc2lkZSk7XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVJbnNpZGUkLmNvbXBsZXRlKCk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGhpcy5vcHRpb25zPy5saXN0TW9kZSAhPT0gdHJ1ZSAmJlxyXG4gICAgICAgICAodGhpcy5pdGVtc1BlclBhZ2UgIT09IHVuZGVmaW5lZCB8fCB0aGlzLnBhZ2UgIT09IHVuZGVmaW5lZClcclxuICAgICAgKSB7XHJcbiAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgXCJwYWdpbmF0aW9uIGlzIG9ubHkgYWxsb3dlZCBpbiBsaXN0TW9kZTsgYGl0ZW1zUGVyUGFnZWAgYW5kIGBwYWdlYCBpbnB1dHMgd2lsbCBiZSBpZ25vcmVkXCJcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgfVxyXG5cclxuICAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAgIGlmICh0aGlzLmhvc3QgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmRhdGEgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBSZWJ1aWxkIHRoZSB0cmVlICovXHJcbiAgIHB1YmxpYyB1cGRhdGUoKSB7XHJcbiAgICAgIGlmICh0aGlzLmhvc3QgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgIFwiRmFpbGVkIHRvIHJlbmRlciBsaW1ibGUgdHJlZS4gRmFpbHVyZSBvY2N1cnJlZCBhdCByb290LlwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGF0YSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihgbGltYmxlVHJlZSByZXF1aXJlcyBhIGRhdGEgb2JqZWN0YCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmVlU2VydmljZS5pbml0KFxyXG4gICAgICAgICB0aGlzLmhvc3QsXHJcbiAgICAgICAgIHRoaXMuZGF0YSxcclxuICAgICAgICAgdGhpcy5vcHRpb25zLFxyXG4gICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSxcclxuICAgICAgICAgdGhpcy5wYWdlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZ2xvYmFsRXZlbnRzU2VydmljZS5hZGRTY3JvbGxpbmcoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyYWdvdmVySGFuZGxlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIgPT09IG51bGwpIHtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IFwibW92ZVwiO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZHJhZ2xlYXZlSGFuZGxlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xyXG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICAhKGN1cnJlbnRUYXJnZXQgaW5zdGFuY2VvZiBOb2RlKSB8fFxyXG4gICAgICAgICAhKHJlbGF0ZWRUYXJnZXQgaW5zdGFuY2VvZiBOb2RlKSB8fFxyXG4gICAgICAgICBpc0VsZW1lbnREZXNjZW5kYW50KGN1cnJlbnRUYXJnZXQsIHJlbGF0ZWRUYXJnZXQpICE9PSBmYWxzZVxyXG4gICAgICApIHtcclxuICAgICAgICAgLy9ldmVudCBjYW1lIGZyb20gZGVlcGVyIGluIHRoZSB0cmVlLiBJZ25vcmUgaXQuXHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvL01vdXNlIGhhcyBsZWZ0IHRoZSB0cmVlLCBzbyBjbGVhciB0aGUgZHJvcCB6b25lc1xyXG4gICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5jbGVhclZpc2libGVab25lcygpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyb3BIYW5kbGVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGlmICh0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKSAhPT0gXCJkcm9wcGFibGVcIikge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc291cmNlQnJhbmNoID0gdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLmNhcHR1cmUoKTtcclxuICAgICAgaWYgKHNvdXJjZUJyYW5jaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byBnZXQgY3VycmVudCBicmFuY2ggaW4gZHJhZ2VuZEhhbmRsZXJcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZHJvcFpvbmUgPSB0aGlzLmRyb3Bab25lU2VydmljZS5nZXRBY3RpdmVEcm9wWm9uZSgpO1xyXG4gICAgICBpZiAoZHJvcFpvbmUgPT09IG51bGwpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZmFpbGVkIHRvIGdldCBhY3RpdmUgZHJvcCB6b25lIGF0IGRyb3AgaGFuZGxlclwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyZWVTZXJ2aWNlLmNhcHR1cmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kcmFnU3RhdGVTZXJ2aWNlLnN0YXRlJFxyXG4gICAgICAgICAucGlwZShmaXJzdCgobWVzc2FnZSkgPT4gbWVzc2FnZSA9PT0gXCJpZGxlXCIpKVxyXG4gICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS5jYXB0dXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICB9KTtcclxuICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UuY2xlYXJWaXNpYmxlWm9uZXMoKTtcclxuICAgICAgdGhpcy50cmVlU2VydmljZS5kcm9wKHNvdXJjZUJyYW5jaCwgZHJvcFpvbmUuZ2V0RnVsbEluc2VydENvb3JkaW5hdGVzKCkpO1xyXG4gICB9XHJcblxyXG4gICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuZHJvcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAoZHJhZ292ZXJOb0NoYW5nZURldGVjdCk9XCJkcmFnb3ZlckhhbmRsZXIoJGV2ZW50KVwiXHJcbiAgIChkcmFnbGVhdmVOb0NoYW5nZURldGVjdCk9XCJkcmFnbGVhdmVIYW5kbGVyKCRldmVudClcIlxyXG4gICAoZHJvcCk9XCJkcm9wSGFuZGxlcigkZXZlbnQpXCJcclxuPlxyXG4gICA8bmctdGVtcGxhdGUgI2Ryb3Bab25lSW5zaWRlPjwvbmctdGVtcGxhdGU+XHJcbiAgIDxuZy10ZW1wbGF0ZSAjaG9zdD48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
import { Injectable } from "@angular/core";
import { ReplaySubject } from "rxjs";
import { Branch } from "../classes/Branch";
import { LimbleTreeNodeComponent } from "../limble-tree-node/limble-tree-node.component";
import { LimbleTreePlaceholderComponent } from "../limble-tree-placeholder/limble-tree-placeholder.component";
import { Subject } from "rxjs";
import { arraysAreEqual } from "../util";
import { debounceTime } from "rxjs/operators";
import * as i0 from "@angular/core";
import * as i1 from "../singletons/component-creator.service";
import * as i2 from "./drop-zone.service";
import * as i3 from "../singletons/drag-state.service";
/** The default value for the `indent` option */
export const INDENT = 45;
export class TreeService {
constructor(componentCreatorService, dropZoneService) {
constructor(componentCreatorService, dropZoneService, dragStateService) {
this.componentCreatorService = componentCreatorService;
this.dropZoneService = dropZoneService;
this.changes$ = new ReplaySubject(1);
this.drops$ = new ReplaySubject(1);
this.dragStateService = dragStateService;
this.changes$ = new Subject();
this.drops$ = new Subject();
this.treeModel = new Branch(null);
this.placeholder = false;
this.captured = false;
this.cleanupSignal$ = new Subject();
this.cleanupSignal$.pipe(debounceTime(5)).subscribe(() => {
this.cleanup();
});
}
drop(source, targetCoordinates) {
var _a;
//prep
const sourceParent = source.getParent();
if (sourceParent === null) {
throw new Error("can't drop root of tree");
}
const sourceIndex = source.getIndex();
if (sourceIndex === undefined || sourceIndex === null) {
throw new Error("Cannot move the hidden root node");
}
let targetParentCoordinates;
let newIndex;
if (this.placeholder === true) {
targetParentCoordinates = [];
newIndex = 0;
}
else {
targetParentCoordinates = [...targetCoordinates];
newIndex = targetParentCoordinates.pop();
}
if (newIndex === undefined) {
throw new Error("target coordinates are empty");
}
const targetParent = this.treeModel.getDescendant(targetParentCoordinates);
if (targetParent === undefined) {
throw new Error("could not get to target");
}
const target = this.dropZoneService.getDropZone(targetCoordinates);
const targetIndex = target === null || target === void 0 ? void 0 : target.getLocation().insertIndex;
const targetHost = target === null || target === void 0 ? void 0 : target.getHost();
const sourceHost = (_a = this.dragStateService.getData()) === null || _a === void 0 ? void 0 : _a.parentContainer;
this.removePlaceholder();
//Publish drop data
this.drops$.next({
target: source.data,
oldParent: sourceParent.data,
oldIndex: sourceIndex,
newParent: targetParent.data,
newIndex: newIndex
});
//Change the treeModel
targetParent.insertChild(source, newIndex);
//Prepare to update the view
if (targetHost === undefined ||
sourceHost === undefined ||
targetIndex === undefined) {
//Hitting this means there is a bug, but not a fatal one.
//Just render the whole tree again.
console.warn("Could not perform a precise update. Re-rendering the entire tree instead");
this.render();
this.changes$.next(null);
return;
}
//Update the view
const nodesInSource = sourceHost.length;
const componentRef = this.componentCreatorService.appendComponent(LimbleTreeNodeComponent, targetHost, newIndex);
componentRef.instance.branch = source;
componentRef.instance.parentHost = targetHost;
if (targetIndex < sourceIndex &&
sourceHost.length > nodesInSource &&
arraysAreEqual(sourceParent.getCoordinates(), targetParentCoordinates)) {
sourceHost.remove(sourceIndex + 1);
}
else {
sourceHost.remove(sourceIndex);
}
this.cleanupSignal$.next(null);
}
getPlaceholder() {
return this.placeholder;
}
/** Initializes the service and renders the tree.

@@ -45,19 +126,4 @@ * @param host - The ViewContainerRef into which the tree will be rendered.

}
usePlaceholder() {
if (this.placeholder === true) {
return;
}
if (this.host === undefined) {
throw new Error("TreeModel not initialized");
}
this.placeholder = true;
const placeholderNode = {
component: { class: LimbleTreePlaceholderComponent }
};
const branch = new Branch(placeholderNode);
this.treeModel.appendChild(branch);
const componentRef = this.componentCreatorService.appendComponent(LimbleTreeNodeComponent, this.host);
componentRef.instance.branch = branch;
}
removePlaceholder() {
var _a;
if (this.placeholder === false) {

@@ -69,5 +135,11 @@ return;

this.treeModel.removeChild(placeholderIndex); //remove the placeholder
(_a = this.host) === null || _a === void 0 ? void 0 : _a.remove(placeholderIndex);
}
this.placeholder = false;
}
cleanup() {
this.rebuildTreeData();
this.changes$.next(null);
this.dropZoneService.update();
}
/** Renders the entire tree from root to leaves */

@@ -97,2 +169,3 @@ render() {

componentRef.instance.branch = branch;
componentRef.instance.parentHost = this.host;
//The LimbleTreeNodeComponent will (indirectly) call the `renderBranch` method of this service to render

@@ -131,2 +204,3 @@ //its own children

componentRef.instance.branch = newBranch;
componentRef.instance.parentHost = host;
//The LimbleTreeNodeComponent will (indirectly) call the `renderBranch` method of this service to render

@@ -136,2 +210,19 @@ //its own children

}
usePlaceholder() {
if (this.placeholder === true) {
return;
}
if (this.host === undefined) {
throw new Error("TreeModel not initialized");
}
this.placeholder = true;
const placeholderNode = {
component: { class: LimbleTreePlaceholderComponent }
};
const branch = new Branch(placeholderNode);
this.treeModel.appendChild(branch);
const componentRef = this.componentCreatorService.appendComponent(LimbleTreeNodeComponent, this.host);
componentRef.instance.branch = branch;
componentRef.instance.parentHost = this.host;
}
processOptions(options = {}, itemsPerPage = Infinity, page = 1) {

@@ -156,43 +247,2 @@ var _a, _b, _c, _d, _e;

}
drop(source, targetCoordinates) {
const sourceParent = source.getParent();
const sourceIndex = source.getIndex();
if (sourceIndex === undefined || sourceIndex === null) {
throw new Error("Cannot move the hidden root node");
}
let targetParentCoordinates;
let index;
if (this.placeholder === true) {
targetParentCoordinates = [];
index = 0;
this.removePlaceholder();
}
else {
targetParentCoordinates = [...targetCoordinates];
index = targetParentCoordinates.pop();
}
if (index === undefined) {
throw new Error("target coordinates are empty");
}
const targetParent = this.treeModel.getDescendant(targetParentCoordinates);
if (targetParent === undefined) {
throw new Error("could not get to target");
}
targetParent.insertChild(source, index);
this.rebuildTreeData();
this.drops$.next({
target: source.data,
oldParent: sourceParent === null || sourceParent === void 0 ? void 0 : sourceParent.data,
oldIndex: sourceIndex,
newParent: targetParent.data,
newIndex: index
});
this.render();
}
remove(target) {
target.remove();
this.removePlaceholder();
this.rebuildTreeData();
this.render();
}
rebuildTreeData() {

@@ -231,11 +281,8 @@ if (this.uncutData === undefined ||

}
getPlaceholder() {
return this.placeholder;
}
}
TreeService.ɵfac = function TreeService_Factory(t) { return new (t || TreeService)(i0.ɵɵinject(i1.ComponentCreatorService), i0.ɵɵinject(i2.DropZoneService)); };
TreeService.ɵfac = function TreeService_Factory(t) { return new (t || TreeService)(i0.ɵɵinject(i1.ComponentCreatorService), i0.ɵɵinject(i2.DropZoneService), i0.ɵɵinject(i3.DragStateService)); };
TreeService.ɵprov = i0.ɵɵdefineInjectable({ token: TreeService, factory: TreeService.ɵfac });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TreeService, [{
type: Injectable
}], function () { return [{ type: i1.ComponentCreatorService }, { type: i2.DropZoneService }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JDLE9BQU8sRUFBRSxNQUFNLEVBQXFCLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7QUE4RDlHLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBa0R6QixNQUFNLE9BQU8sV0FBVztJQVVyQixZQUNvQix1QkFBZ0QsRUFDaEQsZUFBZ0M7UUFEaEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFFakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksSUFBSSxDQUNSLElBQXNCLEVBQ3RCLElBQW9CLEVBQ3BCLE9BQTJCLEVBQzNCLFlBQXFCLEVBQ3JCLElBQWE7UUFFYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENB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Q0FBQyxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMzQixDQUFDOztzRUEzUVMsV0FBVzttREFBWCxXQUFXLFdBQVgsV0FBVzt1RkFBWCxXQUFXO2NBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi9kcm9wLXpvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcmFuY2gsIEJyYW5jaENvb3JkaW5hdGVzIH0gZnJvbSBcIi4uL2NsYXNzZXMvQnJhbmNoXCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2xpbWJsZS10cmVlLW5vZGUvbGltYmxlLXRyZWUtbm9kZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTGltYmxlVHJlZVBsYWNlaG9sZGVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2xpbWJsZS10cmVlLXBsYWNlaG9sZGVyL2xpbWJsZS10cmVlLXBsYWNlaG9sZGVyLmNvbXBvbmVudFwiO1xyXG5cclxuLyoqIEFuIG9iamVjdCBkZXNjcmliaW5nIGEgbm9kZSBvZiB0aGUgdHJlZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExpbWJsZVRyZWVOb2RlIHtcclxuICAgLyoqIEEgbGlzdCBvZiBub2RlcyB0byBiZSByZW5kZXJlZCBcInVuZGVyXCIgdGhpcyBvbmUsIG9uZSBsZXZlbCBkZWVwZXIgaW4gdGhlIHRyZWUuICovXHJcbiAgIG5vZGVzPzogTGltYmxlVHJlZURhdGE7XHJcbiAgIC8vIC8qKiBBIGN1c3RvbSBkYXRhIG9iamVjdCB0aGF0IHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIGNvbXBvbmVudCBhcyBhbiBgSW5wdXQoKWAgYmluZGluZyBjYWxsZWQgYG5vZGVEYXRhYCAqL1xyXG4gICAvLyBkYXRhOiB1bmtub3duO1xyXG4gICAvKiogQW4gb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZSBjb21wb25lbnQgd2hpY2ggd2lsbCByZXByZXNlbnQgdGhpcyBub2RlIGluIHRoZSB2aXN1YWwgdHJlZSAqL1xyXG4gICBjb21wb25lbnQ/OiBDb21wb25lbnRPYmo7XHJcbiAgIGNvbGxhcHNlZD86IGJvb2xlYW47XHJcbiAgIFtpbmRleDogc3RyaW5nXTogdW5rbm93bjtcclxufVxyXG5cclxuLyoqIEFuIG9iamVjdCB0aGF0IHRoZSBsaW1ibGUtdHJlZS1yb290IGNvbXBvbmVudCB1c2VzIHRvIGJ1aWxkIHRoZSB0cmVlICovXHJcbmV4cG9ydCB0eXBlIExpbWJsZVRyZWVEYXRhID0gQXJyYXk8TGltYmxlVHJlZU5vZGU+O1xyXG5cclxuLyoqIEEgZ3JvdXAgb2Ygc2V0dGluZ3MgZm9yIGNoYW5naW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0cmVlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGltYmxlVHJlZU9wdGlvbnMge1xyXG4gICAvKiogVGhlIGNvbXBvbmVudCBvYmplY3QgdG8gdXNlIGlmIG9uZSBpcyBub3Qgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgbm9kZSAqL1xyXG4gICBkZWZhdWx0Q29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICAvKiogVGhlIG51bWJlciBvZiBwaXhlbHMgdG8gaW5kZW50IGVhY2ggbGV2ZWwgb2YgdGhlIHRyZWUuIERlZmF1bHRzIHRvIDQ1ICovXHJcbiAgIGluZGVudD86IG51bWJlcjtcclxuICAgLyoqXHJcbiAgICAqIFdoZXRoZXIgdG8gYWxsb3cgXCJuZXN0aW5nXCIgKHBsYWNpbmcgYSBub2RlIG9uZSBsZXZlbCBkZWVwZXIgdGhhbiBjdXJyZW50bHkgZXhpc3RzIG9uIHRoZSBicmFuY2gpLlxyXG4gICAgKiBXaGVuIHRoaXMgaXMgYSBib29sZWFuLCBpdCBhcHBsaWVzIHRvIGFsbCBub2Rlcy4gV2hlbiB0aGlzIGlzIGEgZnVuY3Rpb24sIHRoZSBub2RlIGluIHF1ZXN0aW9uXHJcbiAgICAqIGlzIHBhc3NlZCBpbi4gRGVmYXVsdHMgdG8gdHJ1ZS5cclxuICAgICovXHJcbiAgIGFsbG93TmVzdGluZz86IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIC8qKlxyXG4gICAgKiBXaGV0aGVyIHRvIGFsbG93IGEgbm9kZSB0byBiZSBkcmFnZ2VkLiBXaGVuIHRoaXMgaXMgYSBib29sZWFuLCBpdCBhcHBsaWVzIHRvIGFsbCBub2Rlcy4gV2hlbiB0aGlzXHJcbiAgICAqIGlzIGEgZnVuY3Rpb24sIHRoZSBub2RlIGluIHF1ZXN0aW9uIGlzIHBhc3NlZCBpbi4gRGVmYXVsdHMgdG8gdHJ1ZS5cclxuICAgICovXHJcbiAgIGFsbG93RHJhZ2dpbmc/OiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICAvKiogQSBjYWxsYmFjayB0byBkZXRlcm1pbmUgd2hldGhlciBhIHNvdXJjZU5vZGUgY2FuIGJlIGRyb3BwZWQgYXQgYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLiAqL1xyXG4gICBhbGxvd0Ryb3A/OiAoXHJcbiAgICAgIHNvdXJjZU5vZGU6IExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICBwcm9wb3NlZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsLFxyXG4gICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcclxuICAgKSA9PiBib29sZWFuO1xyXG4gICAvKiogV2hlbiBzZXQgdG8gdHJ1ZSwgbGlzdCBtb2RlIHdpbGwgZW5mb3JjZSBhIGZsYXQgdHJlZSBzdHJ1Y3R1cmUsIG1lYW5pbmcgdGhlcmVcclxuICAgICogY2FuIG9ubHkgYmUgb25lIGxldmVsIG9mIHRoZSB0cmVlLiBgYWxsb3dOZXN0aW5nYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byBgZmFsc2VgXHJcbiAgICAqIGFuZCBhbnkgY2hpbGRyZW4gd2lsbCBiZSBkZWxldGVkLlxyXG4gICAgKlxyXG4gICAgKiBUaGlzIG1vZGUgY2FuIGJlIHVzZWQgd2hlbiB0aGUgc2FtZSBkeW5hbWljIGRyYWcgYW5kIGRyb3AgZnVuY3Rpb25hbGl0eSBvZlxyXG4gICAgKiB0aGUgdHJlZSBpcyBkZXNpcmVkLCBidXQgdGhlIHRyZWUgc3RydWN0dXJlIGl0c2VsZiBpcyBub3QgbmVjZXNzYXJ5LiBUaGlzXHJcbiAgICAqIGFsc28gb3BlbnMgdXAgdGhlIHBhZ2luYXRpb24gQVBJIG9uIHRoZSBsaW1ibGUtdHJlZS1yb290IGNvbXBvbmVudC4gU2VlIHRoZVxyXG4gICAgKiBSRUFETUUgZm9yIGRldGFpbHMgb24gcGFnaW5hdGlvbi5cclxuICAgICovXHJcbiAgIGxpc3RNb2RlPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIEFuIG9iamVjdCB0aGF0IHJlZmVyZW5jZXMgdGhlIGNvbXBvbmVudCB0byBiZSByZW5kZXJlZCBhbmQgaXRzIGJpbmRpbmdzICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50T2JqIHtcclxuICAgLyoqIFRoZSBjb21wb25lbnQgY2xhc3MgKi9cclxuICAgY2xhc3M6IFR5cGU8dW5rbm93bj47XHJcbiAgIC8qKiBUaGUgYmluZGluZ3MgKGlucHV0cyBhbmQgb3V0cHV0cykgb2YgdGhlIGNsYXNzICovXHJcbiAgIGJpbmRpbmdzPzoge1xyXG4gICAgICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XHJcbiAgIH07XHJcbn1cclxuXHJcbi8qKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGBpbmRlbnRgIG9wdGlvbiAqL1xyXG5leHBvcnQgY29uc3QgSU5ERU5UID0gNDU7XHJcblxyXG4vKiogQW4gb3B0aW9ucyBvYmplY3Qgd2l0aCBkZWZhdWx0IHZhbHVlcyBsb2FkZWQgd2hlcmUgYXBwbGljYWJsZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNCYXNlIGV4dGVuZHMgTGltYmxlVHJlZU9wdGlvbnMge1xyXG4gICBkZWZhdWx0Q29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICBpbmRlbnQ6IG51bWJlcjtcclxuICAgYWxsb3dOZXN0aW5nOiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICBhbGxvd0RyYWdnaW5nOiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICBhbGxvd0Ryb3A6IChcclxuICAgICAgc291cmNlTm9kZTogTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgIHByb3Bvc2VkUGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGwsXHJcbiAgICAgIHByb3Bvc2VkSW5kZXg6IG51bWJlclxyXG4gICApID0+IGJvb2xlYW47XHJcbiAgIGxpc3RNb2RlOiBib29sZWFuO1xyXG4gICBpdGVtc1BlclBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICAgcGFnZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNXaXRoUGFnaW5hdGlvbiBleHRlbmRzIFByb2Nlc3NlZE9wdGlvbnNCYXNlIHtcclxuICAgbGlzdE1vZGU6IHRydWU7XHJcbiAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gICBwYWdlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkT3B0aW9uc1dpdGhvdXRQYWdpbmF0aW9uXHJcbiAgIGV4dGVuZHMgUHJvY2Vzc2VkT3B0aW9uc0Jhc2Uge1xyXG4gICBsaXN0TW9kZTogZmFsc2U7XHJcbiAgIGl0ZW1zUGVyUGFnZTogdW5kZWZpbmVkO1xyXG4gICBwYWdlOiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb2Nlc3NlZE9wdGlvbnMgPVxyXG4gICB8IFByb2Nlc3NlZE9wdGlvbnNXaXRoUGFnaW5hdGlvblxyXG4gICB8IFByb2Nlc3NlZE9wdGlvbnNXaXRob3V0UGFnaW5hdGlvbjtcclxuXHJcbi8qKiB0aGUgdmFsdWUgZW1pdHRlZCBmcm9tIHRoZSByb290IGNvbXBvbmVudCBhZnRlciBhIG5vZGUgaXMgZHJvcHBlZCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVEcm9wIHtcclxuICAgLyoqIFRoZSBub2RlIHRoYXQgd2FzIGRyb3BwZWQgKi9cclxuICAgdGFyZ2V0OiBMaW1ibGVUcmVlTm9kZTtcclxuICAgLyoqIHRoZSB0YXJnZXQncyBwYXJlbnQgYmVmb3JlIHRoZSBkcmFnIGFuZCBkcm9wLCBvciBudWxsIGlmIGl0IHdhcyBhIHRvcC1sZXZlbCBub2RlICovXHJcbiAgIG9sZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsO1xyXG4gICAvKiogdGhlIGluZGV4IG9mIHRoZSBub2RlIGJlZm9yZSB0aGUgZHJhZyBhbmQgZHJvcCByZWxhdGl2ZSB0byBpdHMgb2xkIHNpYmxpbmdzICovXHJcbiAgIG9sZEluZGV4OiBudW1iZXI7XHJcbiAgIC8qKiB0aGUgdGFyZ2V0J3MgcGFyZW50IGFmdGVyIHRoZSBkcmFnIGFuZCBkcm9wLCBvciBudWxsIGlmIGl0IGlzIG5vdyBhIHRvcC1sZXZlbCBub2RlICovXHJcbiAgIG5ld1BhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsO1xyXG4gICAvKiogdGhlIGluZGV4IG9mIHRoZSBub2RlIGFmdGVyIHRoZSBkcmFnIGFuZCBkcm9wIHJlbGF0aXZlIHRvIGl0cyBuZXcgc2libGluZ3MgKi9cclxuICAgbmV3SW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJlZVNlcnZpY2Uge1xyXG4gICBwdWJsaWMgY2hhbmdlcyQ6IFJlcGxheVN1YmplY3Q8bnVsbD47XHJcbiAgIHB1YmxpYyBkcm9wcyQ6IFJlcGxheVN1YmplY3Q8VHJlZURyb3A+O1xyXG4gICBwcml2YXRlIGhvc3Q6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB0cmVlRGF0YTogTGltYmxlVHJlZURhdGEgfCB1bmRlZmluZWQ7XHJcbiAgIHByaXZhdGUgdW5jdXREYXRhOiBMaW1ibGVUcmVlRGF0YSB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHRyZWVPcHRpb25zOiBQcm9jZXNzZWRPcHRpb25zIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgdHJlZU1vZGVsOiBCcmFuY2g8YW55PjtcclxuICAgcHJpdmF0ZSBwbGFjZWhvbGRlcjogYm9vbGVhbjtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudENyZWF0b3JTZXJ2aWNlOiBDb21wb25lbnRDcmVhdG9yU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wWm9uZVNlcnZpY2U6IERyb3Bab25lU2VydmljZVxyXG4gICApIHtcclxuICAgICAgdGhpcy5jaGFuZ2VzJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xyXG4gICAgICB0aGlzLmRyb3BzJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xyXG4gICAgICB0aGlzLnRyZWVNb2RlbCA9IG5ldyBCcmFuY2gobnVsbCk7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgLyoqIEluaXRpYWxpemVzIHRoZSBzZXJ2aWNlIGFuZCByZW5kZXJzIHRoZSB0cmVlLlxyXG4gICAgKiBAcGFyYW0gaG9zdCAtIFRoZSBWaWV3Q29udGFpbmVyUmVmIGludG8gd2hpY2ggdGhlIHRyZWUgd2lsbCBiZSByZW5kZXJlZC5cclxuICAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBhcnJheSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gTGltYmxlVHJlZVJvb3QsIHdoaWNoIGlzXHJcbiAgICAqIHRoZSB1c2VycycgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRyZWVcclxuICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QgdGhhdCB3YXMgcGFzc2VkIGluIHRvIExpbWJsZVRyZWVSb290XHJcbiAgICAqL1xyXG4gICBwdWJsaWMgaW5pdChcclxuICAgICAgaG9zdDogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgZGF0YTogTGltYmxlVHJlZURhdGEsXHJcbiAgICAgIG9wdGlvbnM/OiBMaW1ibGVUcmVlT3B0aW9ucyxcclxuICAgICAgaXRlbXNQZXJQYWdlPzogbnVtYmVyLFxyXG4gICAgICBwYWdlPzogbnVtYmVyXHJcbiAgICk6IHZvaWQge1xyXG4gICAgICB0aGlzLmhvc3QgPSBob3N0O1xyXG4gICAgICB0aGlzLnVuY3V0RGF0YSA9IGRhdGE7XHJcbiAgICAgIHRoaXMudHJlZU9wdGlvbnMgPSB0aGlzLnByb2Nlc3NPcHRpb25zKG9wdGlvbnMsIGl0ZW1zUGVyUGFnZSwgcGFnZSk7XHJcbiAgICAgIGlmICh0aGlzLnRyZWVPcHRpb25zLmxpc3RNb2RlID09PSB0cnVlKSB7XHJcbiAgICAgICAgIGxldCBzdGFydCA9XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlICogKHRoaXMudHJlZU9wdGlvbnMucGFnZSAtIDEpO1xyXG4gICAgICAgICBpZiAoaXNOYU4oc3RhcnQpKSB7XHJcbiAgICAgICAgICAgIC8vVGhpcyBjYXRjaGVzIHRoZSBjYXNlIHdoZXJlIGl0ZW1zUGVyUGFnZSB3YXMgbm90IHBhc3NlZCBieSB0aGUgdXNlcixcclxuICAgICAgICAgICAgLy9jYXVzaW5nIGBzdGFydGAgdG8gZXF1YWwgaW5maW5pdHkqMCwgd2hpY2ggaXMgTmFOLlxyXG4gICAgICAgICAgICBzdGFydCA9IDA7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9IHRoaXMudW5jdXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy51bmN1dERhdGE7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHVzZVBsYWNlaG9sZGVyKCkge1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaG9zdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyTm9kZTogTGltYmxlVHJlZU5vZGUgPSB7XHJcbiAgICAgICAgIGNvbXBvbmVudDogeyBjbGFzczogTGltYmxlVHJlZVBsYWNlaG9sZGVyQ29tcG9uZW50IH1cclxuICAgICAgfTtcclxuICAgICAgY29uc3QgYnJhbmNoID0gbmV3IEJyYW5jaChwbGFjZWhvbGRlck5vZGUpO1xyXG4gICAgICB0aGlzLnRyZWVNb2RlbC5hcHBlbmRDaGlsZChicmFuY2gpO1xyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgKTtcclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHJlbW92ZVBsYWNlaG9sZGVyKCkge1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVySW5kZXggPSB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpLmxlbmd0aCAtIDE7XHJcbiAgICAgIGlmIChwbGFjZWhvbGRlckluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICB0aGlzLnRyZWVNb2RlbC5yZW1vdmVDaGlsZChwbGFjZWhvbGRlckluZGV4KTsgLy9yZW1vdmUgdGhlIHBsYWNlaG9sZGVyXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZhbHNlO1xyXG4gICB9XHJcblxyXG4gICAvKiogUmVuZGVycyB0aGUgZW50aXJlIHRyZWUgZnJvbSByb290IHRvIGxlYXZlcyAqL1xyXG4gICBwcml2YXRlIHJlbmRlcigpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLmhvc3QgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgdGhpcy50cmVlT3B0aW9ucyA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaG9zdC5jbGVhcigpO1xyXG4gICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5yZXN0YXJ0KCk7XHJcbiAgICAgIC8vV2UgZG9uJ3QgbmVlZCB0byBjYWxsIHJlbW92ZVBsYWNlaG9sZGVyIGhlcmUgYmVjYXVzZSB3ZSBhbHJlYWR5IGNsZWFyZWQgaXQgYXdheSBpbiB0aGUgcHJlY2VkaW5nIGxpbmVzLiBXZSBqdXN0IGhhdmUgdG8gdGVsbCB0aGUgc2VydmljZSB0aGF0IGl0IGlzIGRvbmUuXHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy50cmVlTW9kZWwgPSBuZXcgQnJhbmNoKG51bGwpO1xyXG4gICAgICBpZiAodGhpcy50cmVlRGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgLy9UcmVlIGlzIGVtcHR5LCBidXQgd2UgaGF2ZSB0byB0byBoYXZlIHNvbWV0aGluZyB0aGVyZSBzbyBvdGhlciB0cmVlcycgaXRlbXMgY2FuIGJlIGRyb3BwZWQgaW50byBpdFxyXG4gICAgICAgICB0aGlzLnVzZVBsYWNlaG9sZGVyKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLnRyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IG5ldyBCcmFuY2gobm9kZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU1vZGVsLmFwcGVuZENoaWxkKGJyYW5jaCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgdGhpcy50cmVlTW9kZWwuZ2V0Q2hpbGRyZW4oKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgICAgICAgICAgLy9UaGUgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgd2lsbCAoaW5kaXJlY3RseSkgY2FsbCB0aGUgYHJlbmRlckJyYW5jaGAgbWV0aG9kIG9mIHRoaXMgc2VydmljZSB0byByZW5kZXJcclxuICAgICAgICAgICAgLy9pdHMgb3duIGNoaWxkcmVuXHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0cmVlRGF0YSA9IHRoaXMudHJlZURhdGE7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICBpZiAodGhpcy50cmVlT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5jaGFuZ2VzJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICBpZiAodGhpcy50cmVlRGF0YSAhPT0gdHJlZURhdGEpIHtcclxuICAgICAgICAgICAgLy9UaGUgdHJlZSBzZXJ2aWNlIGhhcyBiZWVuIHJlaW5pdGlhbGl6ZWQgc2luY2UgdGhpcyB0aW1lb3V0IHdhcyBjYWxsZWQuXHJcbiAgICAgICAgICAgIC8vVGhlIG5ldyB0cmVlIGRhdGEgd2lsbCBqdXN0IG92ZXJ3cml0ZSB0aGUgZHJvcCB6b25lIGRhdGEgYW55d2F5LCBzb1xyXG4gICAgICAgICAgICAvL3dlIGNhbiBza2lwIHRoZSBkcm9wIHpvbmUgaW5pdGlhbGl6YXRpb24gb24gdGhpcyByb3VuZCBmb3IgZWZmaWNpZW5jeVxyXG4gICAgICAgICAgICAvL2FuZCBhbHNvIHRvIGF2b2lkIHNvbWUgcG9zc2libGUgKD8pIHJhY2UgY29uZGl0aW9uc1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UuaW5pdCh0aGlzLnRyZWVNb2RlbCwgdGhpcy50cmVlT3B0aW9ucyk7XHJcbiAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICAvKiogUmVuZGVycyBhIGJyYW5jaCBvZiB0aGUgdHJlZSBhbmQgYWxsIG9mIGl0cyBkZXNjZW5kYW50cyAqL1xyXG4gICBwdWJsaWMgcmVuZGVyQnJhbmNoKGhvc3Q6IFZpZXdDb250YWluZXJSZWYsIGJyYW5jaDogQnJhbmNoPGFueT4pIHtcclxuICAgICAgaWYgKHRoaXMudHJlZU1vZGVsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZU1vZGVsIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgfVxyXG4gICAgICBob3N0LmNsZWFyKCk7XHJcbiAgICAgIGJyYW5jaC5jbGVhckNoaWxkcmVuKCk7XHJcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBicmFuY2guZGF0YT8ubm9kZXMgPz8gW10pIHtcclxuICAgICAgICAgY29uc3QgbmV3QnJhbmNoID0gbmV3IEJyYW5jaChub2RlKTtcclxuICAgICAgICAgYnJhbmNoLmFwcGVuZENoaWxkKG5ld0JyYW5jaCk7XHJcbiAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Q3JlYXRvclNlcnZpY2UuYXBwZW5kQ29tcG9uZW50PExpbWJsZVRyZWVOb2RlQ29tcG9uZW50PihcclxuICAgICAgICAgICAgTGltYmxlVHJlZU5vZGVDb21wb25lbnQsXHJcbiAgICAgICAgICAgIGhvc3RcclxuICAgICAgICAgKTtcclxuICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IG5ld0JyYW5jaDtcclxuICAgICAgICAgLy9UaGUgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgd2lsbCAoaW5kaXJlY3RseSkgY2FsbCB0aGUgYHJlbmRlckJyYW5jaGAgbWV0aG9kIG9mIHRoaXMgc2VydmljZSB0byByZW5kZXJcclxuICAgICAgICAgLy9pdHMgb3duIGNoaWxkcmVuXHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBwcm9jZXNzT3B0aW9ucyhcclxuICAgICAgb3B0aW9uczogTGltYmxlVHJlZU9wdGlvbnMgPSB7fSxcclxuICAgICAgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSBJbmZpbml0eSxcclxuICAgICAgcGFnZTogbnVtYmVyID0gMVxyXG4gICApOiBQcm9jZXNzZWRPcHRpb25zIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICBvcHRpb25zLmxpc3RNb2RlID09PSB0cnVlICYmXHJcbiAgICAgICAgIG9wdGlvbnMuYWxsb3dOZXN0aW5nICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgb3B0aW9ucy5hbGxvd05lc3RpbmcgIT09IGZhbHNlXHJcbiAgICAgICkge1xyXG4gICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIFwiVGhlIHZhbHVlIG9mIGBhbGxvd05lc3RpbmdgIHdpbGwgYmUgaWdub3JlZDsgaXQgbXVzdCBiZSBmYWxzZSB3aGVuIGBsaXN0TW9kZWAgaXMgdHJ1ZVwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVzdWx0OiBQcm9jZXNzZWRPcHRpb25zQmFzZSA9IHtcclxuICAgICAgICAgZGVmYXVsdENvbXBvbmVudDogb3B0aW9ucy5kZWZhdWx0Q29tcG9uZW50LFxyXG4gICAgICAgICBpbmRlbnQ6IG9wdGlvbnMuaW5kZW50ID8/IElOREVOVCxcclxuICAgICAgICAgYWxsb3dOZXN0aW5nOlxyXG4gICAgICAgICAgICBvcHRpb25zLmxpc3RNb2RlICE9PSB0cnVlICYmIChvcHRpb25zLmFsbG93TmVzdGluZyA/PyB0cnVlKSxcclxuICAgICAgICAgYWxsb3dEcmFnZ2luZzogb3B0aW9ucy5hbGxvd0RyYWdnaW5nID8/IHRydWUsXHJcbiAgICAgICAgIGFsbG93RHJvcDogb3B0aW9ucy5hbGxvd0Ryb3AgPz8gKCgpID0+IHRydWUpLFxyXG4gICAgICAgICBsaXN0TW9kZTogb3B0aW9ucy5saXN0TW9kZSA/PyBmYWxzZSxcclxuICAgICAgICAgaXRlbXNQZXJQYWdlOiBvcHRpb25zLmxpc3RNb2RlID8gaXRlbXNQZXJQYWdlIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICBwYWdlOiBvcHRpb25zLmxpc3RNb2RlID8gcGFnZSA6IHVuZGVmaW5lZFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIFByb2Nlc3NlZE9wdGlvbnM7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcm9wKHNvdXJjZTogQnJhbmNoPGFueT4sIHRhcmdldENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcykge1xyXG4gICAgICBjb25zdCBzb3VyY2VQYXJlbnQgPSBzb3VyY2UuZ2V0UGFyZW50KCk7XHJcbiAgICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gc291cmNlLmdldEluZGV4KCk7XHJcbiAgICAgIGlmIChzb3VyY2VJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHNvdXJjZUluZGV4ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtb3ZlIHRoZSBoaWRkZW4gcm9vdCBub2RlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0YXJnZXRQYXJlbnRDb29yZGluYXRlczogQnJhbmNoQ29vcmRpbmF0ZXM7XHJcbiAgICAgIGxldCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlcyA9IFtdO1xyXG4gICAgICAgICBpbmRleCA9IDA7XHJcbiAgICAgICAgIHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXMgPSBbLi4udGFyZ2V0Q29vcmRpbmF0ZXNdO1xyXG4gICAgICAgICBpbmRleCA9IHRhcmdldFBhcmVudENvb3JkaW5hdGVzLnBvcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRhcmdldCBjb29yZGluYXRlcyBhcmUgZW1wdHlcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdGFyZ2V0UGFyZW50ID0gdGhpcy50cmVlTW9kZWwuZ2V0RGVzY2VuZGFudChcclxuICAgICAgICAgdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXNcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRhcmdldFBhcmVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNvdWxkIG5vdCBnZXQgdG8gdGFyZ2V0XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRhcmdldFBhcmVudC5pbnNlcnRDaGlsZChzb3VyY2UsIGluZGV4KTtcclxuICAgICAgdGhpcy5yZWJ1aWxkVHJlZURhdGEoKTtcclxuICAgICAgdGhpcy5kcm9wcyQubmV4dCh7XHJcbiAgICAgICAgIHRhcmdldDogc291cmNlLmRhdGEsXHJcbiAgICAgICAgIG9sZFBhcmVudDogc291cmNlUGFyZW50Py5kYXRhIGFzIExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICAgICBvbGRJbmRleDogc291cmNlSW5kZXgsXHJcbiAgICAgICAgIG5ld1BhcmVudDogdGFyZ2V0UGFyZW50LmRhdGEsXHJcbiAgICAgICAgIG5ld0luZGV4OiBpbmRleFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHJlbW92ZSh0YXJnZXQ6IEJyYW5jaDxhbnk+KSB7XHJcbiAgICAgIHRhcmdldC5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlcigpO1xyXG4gICAgICB0aGlzLnJlYnVpbGRUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlYnVpbGRUcmVlRGF0YSgpOiB2b2lkIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLnVuY3V0RGF0YSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWUgZGF0YSBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmVlRGF0YS5sZW5ndGggPSAwO1xyXG4gICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEucHVzaCh0aGlzLnJlYnVpbGRCcmFuY2goYnJhbmNoKSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMubGlzdE1vZGUgPT09IHRydWUpIHtcclxuICAgICAgICAgbGV0IHN0YXJ0ID1cclxuICAgICAgICAgICAgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2UgKiAodGhpcy50cmVlT3B0aW9ucy5wYWdlIC0gMSk7XHJcbiAgICAgICAgIGlmIChpc05hTihzdGFydCkpIHtcclxuICAgICAgICAgICAgLy9UaGlzIGNhdGNoZXMgdGhlIGNhc2Ugd2hlcmUgaXRlbXNQZXJQYWdlIHdhcyBub3QgcGFzc2VkIGJ5IHRoZSB1c2VyLFxyXG4gICAgICAgICAgICAvL2NhdXNpbmcgYHN0YXJ0YCB0byBlcXVhbCBpbmZpbml0eSowLCB3aGljaCBpcyBOYU4uXHJcbiAgICAgICAgICAgIHN0YXJ0ID0gMDtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICB0aGlzLnVuY3V0RGF0YS5zcGxpY2UoXHJcbiAgICAgICAgICAgIHN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZSxcclxuICAgICAgICAgICAgLi4udGhpcy50cmVlRGF0YVxyXG4gICAgICAgICApO1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy51bmN1dERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhID0gdGhpcy50cmVlRGF0YTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlYnVpbGRCcmFuY2goYnJhbmNoOiBCcmFuY2g8YW55Pik6IExpbWJsZVRyZWVOb2RlIHtcclxuICAgICAgY29uc3QgdGVtcDogTGltYmxlVHJlZU5vZGUgPSBicmFuY2guZGF0YTtcclxuICAgICAgdGVtcC5ub2RlcyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGJyYW5jaC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRlbXAubm9kZXMucHVzaCh0aGlzLnJlYnVpbGRCcmFuY2goY2hpbGQpKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGVtcDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldFBsYWNlaG9sZGVyKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcjtcclxuICAgfVxyXG59XHJcbiJdfQ==
}], function () { return [{ type: i1.ComponentCreatorService }, { type: i2.DropZoneService }, { type: i3.DragStateService }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUduRSxPQUFPLEVBQUUsTUFBTSxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRTlHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBOEQ5QyxnREFBZ0Q7QUFDaEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQWtEekIsTUFBTSxPQUFPLFdBQVc7SUFZckIsWUFDb0IsdUJBQWdELEVBQ2hELGVBQWdDLEVBQ2hDLGdCQUFrQztRQUZsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRW5ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUss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cGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDcmVhdG9yU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2NvbXBvbmVudC1jcmVhdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vZHJvcC16b25lLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnJhbmNoLCBCcmFuY2hDb29yZGluYXRlcyB9IGZyb20gXCIuLi9jbGFzc2VzL0JyYW5jaFwiO1xyXG5pbXBvcnQgeyBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1ub2RlL2xpbWJsZS10cmVlLW5vZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1wbGFjZWhvbGRlci9saW1ibGUtdHJlZS1wbGFjZWhvbGRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRHJhZ1N0YXRlU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2RyYWctc3RhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgYXJyYXlzQXJlRXF1YWwgfSBmcm9tIFwiLi4vdXRpbFwiO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbi8qKiBBbiBvYmplY3QgZGVzY3JpYmluZyBhIG5vZGUgb2YgdGhlIHRyZWUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBMaW1ibGVUcmVlTm9kZSB7XHJcbiAgIC8qKiBBIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgcmVuZGVyZWQgXCJ1bmRlclwiIHRoaXMgb25lLCBvbmUgbGV2ZWwgZGVlcGVyIGluIHRoZSB0cmVlLiAqL1xyXG4gICBub2Rlcz86IExpbWJsZVRyZWVEYXRhO1xyXG4gICAvLyAvKiogQSBjdXN0b20gZGF0YSBvYmplY3QgdGhhdCB3aWxsIGJlIHBhc3NlZCBpbnRvIHRoZSBjb21wb25lbnQgYXMgYW4gYElucHV0KClgIGJpbmRpbmcgY2FsbGVkIGBub2RlRGF0YWAgKi9cclxuICAgLy8gZGF0YTogdW5rbm93bjtcclxuICAgLyoqIEFuIG9iamVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgY29tcG9uZW50IHdoaWNoIHdpbGwgcmVwcmVzZW50IHRoaXMgbm9kZSBpbiB0aGUgdmlzdWFsIHRyZWUgKi9cclxuICAgY29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICBjb2xsYXBzZWQ/OiBib29sZWFuO1xyXG4gICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XHJcbn1cclxuXHJcbi8qKiBBbiBvYmplY3QgdGhhdCB0aGUgbGltYmxlLXRyZWUtcm9vdCBjb21wb25lbnQgdXNlcyB0byBidWlsZCB0aGUgdHJlZSAqL1xyXG5leHBvcnQgdHlwZSBMaW1ibGVUcmVlRGF0YSA9IEFycmF5PExpbWJsZVRyZWVOb2RlPjtcclxuXHJcbi8qKiBBIGdyb3VwIG9mIHNldHRpbmdzIGZvciBjaGFuZ2luZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdHJlZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExpbWJsZVRyZWVPcHRpb25zIHtcclxuICAgLyoqIFRoZSBjb21wb25lbnQgb2JqZWN0IHRvIHVzZSBpZiBvbmUgaXMgbm90IHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIG5vZGUgKi9cclxuICAgZGVmYXVsdENvbXBvbmVudD86IENvbXBvbmVudE9iajtcclxuICAgLyoqIFRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIGluZGVudCBlYWNoIGxldmVsIG9mIHRoZSB0cmVlLiBEZWZhdWx0cyB0byA0NSAqL1xyXG4gICBpbmRlbnQ/OiBudW1iZXI7XHJcbiAgIC8qKlxyXG4gICAgKiBXaGV0aGVyIHRvIGFsbG93IFwibmVzdGluZ1wiIChwbGFjaW5nIGEgbm9kZSBvbmUgbGV2ZWwgZGVlcGVyIHRoYW4gY3VycmVudGx5IGV4aXN0cyBvbiB0aGUgYnJhbmNoKS5cclxuICAgICogV2hlbiB0aGlzIGlzIGEgYm9vbGVhbiwgaXQgYXBwbGllcyB0byBhbGwgbm9kZXMuIFdoZW4gdGhpcyBpcyBhIGZ1bmN0aW9uLCB0aGUgbm9kZSBpbiBxdWVzdGlvblxyXG4gICAgKiBpcyBwYXNzZWQgaW4uIERlZmF1bHRzIHRvIHRydWUuXHJcbiAgICAqL1xyXG4gICBhbGxvd05lc3Rpbmc/OiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICAvKipcclxuICAgICogV2hldGhlciB0byBhbGxvdyBhIG5vZGUgdG8gYmUgZHJhZ2dlZC4gV2hlbiB0aGlzIGlzIGEgYm9vbGVhbiwgaXQgYXBwbGllcyB0byBhbGwgbm9kZXMuIFdoZW4gdGhpc1xyXG4gICAgKiBpcyBhIGZ1bmN0aW9uLCB0aGUgbm9kZSBpbiBxdWVzdGlvbiBpcyBwYXNzZWQgaW4uIERlZmF1bHRzIHRvIHRydWUuXHJcbiAgICAqL1xyXG4gICBhbGxvd0RyYWdnaW5nPzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgLyoqIEEgY2FsbGJhY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzb3VyY2VOb2RlIGNhbiBiZSBkcm9wcGVkIGF0IGEgcGFydGljdWxhciBsb2NhdGlvbi4gKi9cclxuICAgYWxsb3dEcm9wPzogKFxyXG4gICAgICBzb3VyY2VOb2RlOiBMaW1ibGVUcmVlTm9kZSxcclxuICAgICAgcHJvcG9zZWRQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbCxcclxuICAgICAgcHJvcG9zZWRJbmRleDogbnVtYmVyXHJcbiAgICkgPT4gYm9vbGVhbjtcclxuICAgLyoqIFdoZW4gc2V0IHRvIHRydWUsIGxpc3QgbW9kZSB3aWxsIGVuZm9yY2UgYSBmbGF0IHRyZWUgc3RydWN0dXJlLCBtZWFuaW5nIHRoZXJlXHJcbiAgICAqIGNhbiBvbmx5IGJlIG9uZSBsZXZlbCBvZiB0aGUgdHJlZS4gYGFsbG93TmVzdGluZ2AgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gYGZhbHNlYFxyXG4gICAgKiBhbmQgYW55IGNoaWxkcmVuIHdpbGwgYmUgZGVsZXRlZC5cclxuICAgICpcclxuICAgICogVGhpcyBtb2RlIGNhbiBiZSB1c2VkIHdoZW4gdGhlIHNhbWUgZHluYW1pYyBkcmFnIGFuZCBkcm9wIGZ1bmN0aW9uYWxpdHkgb2ZcclxuICAgICogdGhlIHRyZWUgaXMgZGVzaXJlZCwgYnV0IHRoZSB0cmVlIHN0cnVjdHVyZSBpdHNlbGYgaXMgbm90IG5lY2Vzc2FyeS4gVGhpc1xyXG4gICAgKiBhbHNvIG9wZW5zIHVwIHRoZSBwYWdpbmF0aW9uIEFQSSBvbiB0aGUgbGltYmxlLXRyZWUtcm9vdCBjb21wb25lbnQuIFNlZSB0aGVcclxuICAgICogUkVBRE1FIGZvciBkZXRhaWxzIG9uIHBhZ2luYXRpb24uXHJcbiAgICAqL1xyXG4gICBsaXN0TW9kZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKiBBbiBvYmplY3QgdGhhdCByZWZlcmVuY2VzIHRoZSBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWQgYW5kIGl0cyBiaW5kaW5ncyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE9iaiB7XHJcbiAgIC8qKiBUaGUgY29tcG9uZW50IGNsYXNzICovXHJcbiAgIGNsYXNzOiBUeXBlPHVua25vd24+O1xyXG4gICAvKiogVGhlIGJpbmRpbmdzIChpbnB1dHMgYW5kIG91dHB1dHMpIG9mIHRoZSBjbGFzcyAqL1xyXG4gICBiaW5kaW5ncz86IHtcclxuICAgICAgW2luZGV4OiBzdHJpbmddOiB1bmtub3duO1xyXG4gICB9O1xyXG59XHJcblxyXG4vKiogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBgaW5kZW50YCBvcHRpb24gKi9cclxuZXhwb3J0IGNvbnN0IElOREVOVCA9IDQ1O1xyXG5cclxuLyoqIEFuIG9wdGlvbnMgb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXMgbG9hZGVkIHdoZXJlIGFwcGxpY2FibGUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRPcHRpb25zQmFzZSBleHRlbmRzIExpbWJsZVRyZWVPcHRpb25zIHtcclxuICAgZGVmYXVsdENvbXBvbmVudD86IENvbXBvbmVudE9iajtcclxuICAgaW5kZW50OiBudW1iZXI7XHJcbiAgIGFsbG93TmVzdGluZzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgYWxsb3dEcmFnZ2luZzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgYWxsb3dEcm9wOiAoXHJcbiAgICAgIHNvdXJjZU5vZGU6IExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICBwcm9wb3NlZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsLFxyXG4gICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcclxuICAgKSA9PiBib29sZWFuO1xyXG4gICBsaXN0TW9kZTogYm9vbGVhbjtcclxuICAgaXRlbXNQZXJQYWdlOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgIHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRPcHRpb25zV2l0aFBhZ2luYXRpb24gZXh0ZW5kcyBQcm9jZXNzZWRPcHRpb25zQmFzZSB7XHJcbiAgIGxpc3RNb2RlOiB0cnVlO1xyXG4gICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcclxuICAgcGFnZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNXaXRob3V0UGFnaW5hdGlvblxyXG4gICBleHRlbmRzIFByb2Nlc3NlZE9wdGlvbnNCYXNlIHtcclxuICAgbGlzdE1vZGU6IGZhbHNlO1xyXG4gICBpdGVtc1BlclBhZ2U6IHVuZGVmaW5lZDtcclxuICAgcGFnZTogdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9jZXNzZWRPcHRpb25zID1cclxuICAgfCBQcm9jZXNzZWRPcHRpb25zV2l0aFBhZ2luYXRpb25cclxuICAgfCBQcm9jZXNzZWRPcHRpb25zV2l0aG91dFBhZ2luYXRpb247XHJcblxyXG4vKiogdGhlIHZhbHVlIGVtaXR0ZWQgZnJvbSB0aGUgcm9vdCBjb21wb25lbnQgYWZ0ZXIgYSBub2RlIGlzIGRyb3BwZWQgKi9cclxuZXhwb3J0IGludGVyZmFjZSBUcmVlRHJvcCB7XHJcbiAgIC8qKiBUaGUgbm9kZSB0aGF0IHdhcyBkcm9wcGVkICovXHJcbiAgIHRhcmdldDogTGltYmxlVHJlZU5vZGU7XHJcbiAgIC8qKiB0aGUgdGFyZ2V0J3MgcGFyZW50IGJlZm9yZSB0aGUgZHJhZyBhbmQgZHJvcCwgb3IgbnVsbCBpZiBpdCB3YXMgYSB0b3AtbGV2ZWwgbm9kZSAqL1xyXG4gICBvbGRQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbDtcclxuICAgLyoqIHRoZSBpbmRleCBvZiB0aGUgbm9kZSBiZWZvcmUgdGhlIGRyYWcgYW5kIGRyb3AgcmVsYXRpdmUgdG8gaXRzIG9sZCBzaWJsaW5ncyAqL1xyXG4gICBvbGRJbmRleDogbnVtYmVyO1xyXG4gICAvKiogdGhlIHRhcmdldCdzIHBhcmVudCBhZnRlciB0aGUgZHJhZyBhbmQgZHJvcCwgb3IgbnVsbCBpZiBpdCBpcyBub3cgYSB0b3AtbGV2ZWwgbm9kZSAqL1xyXG4gICBuZXdQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbDtcclxuICAgLyoqIHRoZSBpbmRleCBvZiB0aGUgbm9kZSBhZnRlciB0aGUgZHJhZyBhbmQgZHJvcCByZWxhdGl2ZSB0byBpdHMgbmV3IHNpYmxpbmdzICovXHJcbiAgIG5ld0luZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRyZWVTZXJ2aWNlIHtcclxuICAgcHVibGljIHJlYWRvbmx5IGNoYW5nZXMkOiBTdWJqZWN0PG51bGw+O1xyXG4gICBwdWJsaWMgcmVhZG9ubHkgZHJvcHMkOiBTdWJqZWN0PFRyZWVEcm9wPjtcclxuICAgcHJpdmF0ZSBob3N0OiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgdHJlZURhdGE6IExpbWJsZVRyZWVEYXRhIHwgdW5kZWZpbmVkO1xyXG4gICBwcml2YXRlIHVuY3V0RGF0YTogTGltYmxlVHJlZURhdGEgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB0cmVlT3B0aW9uczogUHJvY2Vzc2VkT3B0aW9ucyB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHRyZWVNb2RlbDogQnJhbmNoPGFueT47XHJcbiAgIHByaXZhdGUgcGxhY2Vob2xkZXI6IGJvb2xlYW47XHJcbiAgIHB1YmxpYyBjYXB0dXJlZDogYm9vbGVhbjtcclxuICAgcHVibGljIHJlYWRvbmx5IGNsZWFudXBTaWduYWwkOiBTdWJqZWN0PG51bGw+O1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q3JlYXRvclNlcnZpY2U6IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bab25lU2VydmljZTogRHJvcFpvbmVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGRyYWdTdGF0ZVNlcnZpY2U6IERyYWdTdGF0ZVNlcnZpY2VcclxuICAgKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlcyQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICB0aGlzLmRyb3BzJCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsID0gbmV3IEJyYW5jaChudWxsKTtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNhcHR1cmVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xlYW51cFNpZ25hbCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICB0aGlzLmNsZWFudXBTaWduYWwkLnBpcGUoZGVib3VuY2VUaW1lKDUpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICB0aGlzLmNsZWFudXAoKTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcm9wKHNvdXJjZTogQnJhbmNoPGFueT4sIHRhcmdldENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcykge1xyXG4gICAgICAvL3ByZXBcclxuICAgICAgY29uc3Qgc291cmNlUGFyZW50ID0gc291cmNlLmdldFBhcmVudCgpO1xyXG4gICAgICBpZiAoc291cmNlUGFyZW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhbid0IGRyb3Agcm9vdCBvZiB0cmVlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gc291cmNlLmdldEluZGV4KCk7XHJcbiAgICAgIGlmIChzb3VyY2VJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHNvdXJjZUluZGV4ID09PSBudWxsKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtb3ZlIHRoZSBoaWRkZW4gcm9vdCBub2RlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0YXJnZXRQYXJlbnRDb29yZGluYXRlczogQnJhbmNoQ29vcmRpbmF0ZXM7XHJcbiAgICAgIGxldCBuZXdJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlcyA9IFtdO1xyXG4gICAgICAgICBuZXdJbmRleCA9IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRhcmdldFBhcmVudENvb3JkaW5hdGVzID0gWy4uLnRhcmdldENvb3JkaW5hdGVzXTtcclxuICAgICAgICAgbmV3SW5kZXggPSB0YXJnZXRQYXJlbnRDb29yZGluYXRlcy5wb3AoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobmV3SW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0YXJnZXQgY29vcmRpbmF0ZXMgYXJlIGVtcHR5XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRhcmdldFBhcmVudCA9IHRoaXMudHJlZU1vZGVsLmdldERlc2NlbmRhbnQoXHJcbiAgICAgICAgIHRhcmdldFBhcmVudENvb3JkaW5hdGVzXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0YXJnZXRQYXJlbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZCBub3QgZ2V0IHRvIHRhcmdldFwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmRyb3Bab25lU2VydmljZS5nZXREcm9wWm9uZSh0YXJnZXRDb29yZGluYXRlcyk7XHJcbiAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gdGFyZ2V0Py5nZXRMb2NhdGlvbigpLmluc2VydEluZGV4O1xyXG4gICAgICBjb25zdCB0YXJnZXRIb3N0ID0gdGFyZ2V0Py5nZXRIb3N0KCk7XHJcbiAgICAgIGNvbnN0IHNvdXJjZUhvc3QgPSB0aGlzLmRyYWdTdGF0ZVNlcnZpY2UuZ2V0RGF0YSgpPy5wYXJlbnRDb250YWluZXI7XHJcbiAgICAgIHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIoKTtcclxuICAgICAgLy9QdWJsaXNoIGRyb3AgZGF0YVxyXG4gICAgICB0aGlzLmRyb3BzJC5uZXh0KHtcclxuICAgICAgICAgdGFyZ2V0OiBzb3VyY2UuZGF0YSxcclxuICAgICAgICAgb2xkUGFyZW50OiBzb3VyY2VQYXJlbnQuZGF0YSBhcyBMaW1ibGVUcmVlTm9kZSxcclxuICAgICAgICAgb2xkSW5kZXg6IHNvdXJjZUluZGV4LFxyXG4gICAgICAgICBuZXdQYXJlbnQ6IHRhcmdldFBhcmVudC5kYXRhLFxyXG4gICAgICAgICBuZXdJbmRleDogbmV3SW5kZXhcclxuICAgICAgfSk7XHJcbiAgICAgIC8vQ2hhbmdlIHRoZSB0cmVlTW9kZWxcclxuICAgICAgdGFyZ2V0UGFyZW50Lmluc2VydENoaWxkKHNvdXJjZSwgbmV3SW5kZXgpO1xyXG4gICAgICAvL1ByZXBhcmUgdG8gdXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGFyZ2V0SG9zdCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHNvdXJjZUhvc3QgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0YXJnZXRJbmRleCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICAvL0hpdHRpbmcgdGhpcyBtZWFucyB0aGVyZSBpcyBhIGJ1ZywgYnV0IG5vdCBhIGZhdGFsIG9uZS5cclxuICAgICAgICAgLy9KdXN0IHJlbmRlciB0aGUgd2hvbGUgdHJlZSBhZ2Fpbi5cclxuICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBwZXJmb3JtIGEgcHJlY2lzZSB1cGRhdGUuIFJlLXJlbmRlcmluZyB0aGUgZW50aXJlIHRyZWUgaW5zdGVhZFwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChudWxsKTtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8vVXBkYXRlIHRoZSB2aWV3XHJcbiAgICAgIGNvbnN0IG5vZGVzSW5Tb3VyY2UgPSBzb3VyY2VIb3N0Lmxlbmd0aDtcclxuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRDcmVhdG9yU2VydmljZS5hcHBlbmRDb21wb25lbnQoXHJcbiAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICB0YXJnZXRIb3N0LFxyXG4gICAgICAgICBuZXdJbmRleFxyXG4gICAgICApO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gc291cmNlO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFyZW50SG9zdCA9IHRhcmdldEhvc3Q7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGFyZ2V0SW5kZXggPCBzb3VyY2VJbmRleCAmJlxyXG4gICAgICAgICBzb3VyY2VIb3N0Lmxlbmd0aCA+IG5vZGVzSW5Tb3VyY2UgJiZcclxuICAgICAgICAgYXJyYXlzQXJlRXF1YWwoc291cmNlUGFyZW50LmdldENvb3JkaW5hdGVzKCksIHRhcmdldFBhcmVudENvb3JkaW5hdGVzKVxyXG4gICAgICApIHtcclxuICAgICAgICAgc291cmNlSG9zdC5yZW1vdmUoc291cmNlSW5kZXggKyAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgc291cmNlSG9zdC5yZW1vdmUoc291cmNlSW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2xlYW51cFNpZ25hbCQubmV4dChudWxsKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldFBsYWNlaG9sZGVyKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcjtcclxuICAgfVxyXG5cclxuICAgLyoqIEluaXRpYWxpemVzIHRoZSBzZXJ2aWNlIGFuZCByZW5kZXJzIHRoZSB0cmVlLlxyXG4gICAgKiBAcGFyYW0gaG9zdCAtIFRoZSBWaWV3Q29udGFpbmVyUmVmIGludG8gd2hpY2ggdGhlIHRyZWUgd2lsbCBiZSByZW5kZXJlZC5cclxuICAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSBhcnJheSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gTGltYmxlVHJlZVJvb3QsIHdoaWNoIGlzXHJcbiAgICAqIHRoZSB1c2VycycgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRyZWVcclxuICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QgdGhhdCB3YXMgcGFzc2VkIGluIHRvIExpbWJsZVRyZWVSb290XHJcbiAgICAqL1xyXG4gICBwdWJsaWMgaW5pdChcclxuICAgICAgaG9zdDogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgZGF0YTogTGltYmxlVHJlZURhdGEsXHJcbiAgICAgIG9wdGlvbnM/OiBMaW1ibGVUcmVlT3B0aW9ucyxcclxuICAgICAgaXRlbXNQZXJQYWdlPzogbnVtYmVyLFxyXG4gICAgICBwYWdlPzogbnVtYmVyXHJcbiAgICk6IHZvaWQge1xyXG4gICAgICB0aGlzLmhvc3QgPSBob3N0O1xyXG4gICAgICB0aGlzLnVuY3V0RGF0YSA9IGRhdGE7XHJcbiAgICAgIHRoaXMudHJlZU9wdGlvbnMgPSB0aGlzLnByb2Nlc3NPcHRpb25zKG9wdGlvbnMsIGl0ZW1zUGVyUGFnZSwgcGFnZSk7XHJcbiAgICAgIGlmICh0aGlzLnRyZWVPcHRpb25zLmxpc3RNb2RlID09PSB0cnVlKSB7XHJcbiAgICAgICAgIGxldCBzdGFydCA9XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlICogKHRoaXMudHJlZU9wdGlvbnMucGFnZSAtIDEpO1xyXG4gICAgICAgICBpZiAoaXNOYU4oc3RhcnQpKSB7XHJcbiAgICAgICAgICAgIC8vVGhpcyBjYXRjaGVzIHRoZSBjYXNlIHdoZXJlIGl0ZW1zUGVyUGFnZSB3YXMgbm90IHBhc3NlZCBieSB0aGUgdXNlcixcclxuICAgICAgICAgICAgLy9jYXVzaW5nIGBzdGFydGAgdG8gZXF1YWwgaW5maW5pdHkqMCwgd2hpY2ggaXMgTmFOLlxyXG4gICAgICAgICAgICBzdGFydCA9IDA7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9IHRoaXMudW5jdXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy51bmN1dERhdGE7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHJlbW92ZVBsYWNlaG9sZGVyKCkge1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVySW5kZXggPSB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpLmxlbmd0aCAtIDE7XHJcbiAgICAgIGlmIChwbGFjZWhvbGRlckluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICB0aGlzLnRyZWVNb2RlbC5yZW1vdmVDaGlsZChwbGFjZWhvbGRlckluZGV4KTsgLy9yZW1vdmUgdGhlIHBsYWNlaG9sZGVyXHJcbiAgICAgICAgIHRoaXMuaG9zdD8ucmVtb3ZlKHBsYWNlaG9sZGVySW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xyXG4gICAgICB0aGlzLnJlYnVpbGRUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZXMkLm5leHQobnVsbCk7XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnVwZGF0ZSgpO1xyXG4gICB9XHJcblxyXG4gICAvKiogUmVuZGVycyB0aGUgZW50aXJlIHRyZWUgZnJvbSByb290IHRvIGxlYXZlcyAqL1xyXG4gICBwcml2YXRlIHJlbmRlcigpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLmhvc3QgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgdGhpcy50cmVlT3B0aW9ucyA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaG9zdC5jbGVhcigpO1xyXG4gICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5yZXN0YXJ0KCk7XHJcbiAgICAgIC8vV2UgZG9uJ3QgbmVlZCB0byBjYWxsIHJlbW92ZVBsYWNlaG9sZGVyIGhlcmUgYmVjYXVzZSB3ZSBhbHJlYWR5IGNsZWFyZWQgaXQgYXdheSBpbiB0aGUgcHJlY2VkaW5nIGxpbmVzLiBXZSBqdXN0IGhhdmUgdG8gdGVsbCB0aGUgc2VydmljZSB0aGF0IGl0IGlzIGRvbmUuXHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy50cmVlTW9kZWwgPSBuZXcgQnJhbmNoKG51bGwpO1xyXG4gICAgICBpZiAodGhpcy50cmVlRGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgLy9UcmVlIGlzIGVtcHR5LCBidXQgd2UgaGF2ZSB0byB0byBoYXZlIHNvbWV0aGluZyB0aGVyZSBzbyBvdGhlciB0cmVlcycgaXRlbXMgY2FuIGJlIGRyb3BwZWQgaW50byBpdFxyXG4gICAgICAgICB0aGlzLnVzZVBsYWNlaG9sZGVyKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLnRyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IG5ldyBCcmFuY2gobm9kZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU1vZGVsLmFwcGVuZENoaWxkKGJyYW5jaCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgdGhpcy50cmVlTW9kZWwuZ2V0Q2hpbGRyZW4oKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhcmVudEhvc3QgPSB0aGlzLmhvc3Q7XHJcbiAgICAgICAgICAgIC8vVGhlIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IHdpbGwgKGluZGlyZWN0bHkpIGNhbGwgdGhlIGByZW5kZXJCcmFuY2hgIG1ldGhvZCBvZiB0aGlzIHNlcnZpY2UgdG8gcmVuZGVyXHJcbiAgICAgICAgICAgIC8vaXRzIG93biBjaGlsZHJlblxyXG4gICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJlZURhdGEgPSB0aGlzLnRyZWVEYXRhO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChudWxsKTtcclxuICAgICAgICAgaWYgKHRoaXMudHJlZURhdGEgIT09IHRyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIC8vVGhlIHRyZWUgc2VydmljZSBoYXMgYmVlbiByZWluaXRpYWxpemVkIHNpbmNlIHRoaXMgdGltZW91dCB3YXMgY2FsbGVkLlxyXG4gICAgICAgICAgICAvL1RoZSBuZXcgdHJlZSBkYXRhIHdpbGwganVzdCBvdmVyd3JpdGUgdGhlIGRyb3Agem9uZSBkYXRhIGFueXdheSwgc29cclxuICAgICAgICAgICAgLy93ZSBjYW4gc2tpcCB0aGUgZHJvcCB6b25lIGluaXRpYWxpemF0aW9uIG9uIHRoaXMgcm91bmQgZm9yIGVmZmljaWVuY3lcclxuICAgICAgICAgICAgLy9hbmQgYWxzbyB0byBhdm9pZCBzb21lIHBvc3NpYmxlICg/KSByYWNlIGNvbmRpdGlvbnNcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLmluaXQodGhpcy50cmVlTW9kZWwsIHRoaXMudHJlZU9wdGlvbnMpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgLyoqIFJlbmRlcnMgYSBicmFuY2ggb2YgdGhlIHRyZWUgYW5kIGFsbCBvZiBpdHMgZGVzY2VuZGFudHMgKi9cclxuICAgcHVibGljIHJlbmRlckJyYW5jaChob3N0OiBWaWV3Q29udGFpbmVyUmVmLCBicmFuY2g6IEJyYW5jaDxhbnk+KSB7XHJcbiAgICAgIGlmICh0aGlzLnRyZWVNb2RlbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgaG9zdC5jbGVhcigpO1xyXG4gICAgICBicmFuY2guY2xlYXJDaGlsZHJlbigpO1xyXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYnJhbmNoLmRhdGE/Lm5vZGVzID8/IFtdKSB7XHJcbiAgICAgICAgIGNvbnN0IG5ld0JyYW5jaCA9IG5ldyBCcmFuY2gobm9kZSk7XHJcbiAgICAgICAgIGJyYW5jaC5hcHBlbmRDaGlsZChuZXdCcmFuY2gpO1xyXG4gICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICBob3N0XHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5icmFuY2ggPSBuZXdCcmFuY2g7XHJcbiAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYXJlbnRIb3N0ID0gaG9zdDtcclxuICAgICAgICAgLy9UaGUgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgd2lsbCAoaW5kaXJlY3RseSkgY2FsbCB0aGUgYHJlbmRlckJyYW5jaGAgbWV0aG9kIG9mIHRoaXMgc2VydmljZSB0byByZW5kZXJcclxuICAgICAgICAgLy9pdHMgb3duIGNoaWxkcmVuXHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHVibGljIHVzZVBsYWNlaG9sZGVyKCkge1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaG9zdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyTm9kZTogTGltYmxlVHJlZU5vZGUgPSB7XHJcbiAgICAgICAgIGNvbXBvbmVudDogeyBjbGFzczogTGltYmxlVHJlZVBsYWNlaG9sZGVyQ29tcG9uZW50IH1cclxuICAgICAgfTtcclxuICAgICAgY29uc3QgYnJhbmNoID0gbmV3IEJyYW5jaChwbGFjZWhvbGRlck5vZGUpO1xyXG4gICAgICB0aGlzLnRyZWVNb2RlbC5hcHBlbmRDaGlsZChicmFuY2gpO1xyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgKTtcclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhcmVudEhvc3QgPSB0aGlzLmhvc3Q7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcHJvY2Vzc09wdGlvbnMoXHJcbiAgICAgIG9wdGlvbnM6IExpbWJsZVRyZWVPcHRpb25zID0ge30sXHJcbiAgICAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gSW5maW5pdHksXHJcbiAgICAgIHBhZ2U6IG51bWJlciA9IDFcclxuICAgKTogUHJvY2Vzc2VkT3B0aW9ucyB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgb3B0aW9ucy5saXN0TW9kZSA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgICBvcHRpb25zLmFsbG93TmVzdGluZyAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgIG9wdGlvbnMuYWxsb3dOZXN0aW5nICE9PSBmYWxzZVxyXG4gICAgICApIHtcclxuICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICBcIlRoZSB2YWx1ZSBvZiBgYWxsb3dOZXN0aW5nYCB3aWxsIGJlIGlnbm9yZWQ7IGl0IG11c3QgYmUgZmFsc2Ugd2hlbiBgbGlzdE1vZGVgIGlzIHRydWVcIlxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogUHJvY2Vzc2VkT3B0aW9uc0Jhc2UgPSB7XHJcbiAgICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IG9wdGlvbnMuZGVmYXVsdENvbXBvbmVudCxcclxuICAgICAgICAgaW5kZW50OiBvcHRpb25zLmluZGVudCA/PyBJTkRFTlQsXHJcbiAgICAgICAgIGFsbG93TmVzdGluZzpcclxuICAgICAgICAgICAgb3B0aW9ucy5saXN0TW9kZSAhPT0gdHJ1ZSAmJiAob3B0aW9ucy5hbGxvd05lc3RpbmcgPz8gdHJ1ZSksXHJcbiAgICAgICAgIGFsbG93RHJhZ2dpbmc6IG9wdGlvbnMuYWxsb3dEcmFnZ2luZyA/PyB0cnVlLFxyXG4gICAgICAgICBhbGxvd0Ryb3A6IG9wdGlvbnMuYWxsb3dEcm9wID8/ICgoKSA9PiB0cnVlKSxcclxuICAgICAgICAgbGlzdE1vZGU6IG9wdGlvbnMubGlzdE1vZGUgPz8gZmFsc2UsXHJcbiAgICAgICAgIGl0ZW1zUGVyUGFnZTogb3B0aW9ucy5saXN0TW9kZSA/IGl0ZW1zUGVyUGFnZSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgcGFnZTogb3B0aW9ucy5saXN0TW9kZSA/IHBhZ2UgOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyBQcm9jZXNzZWRPcHRpb25zO1xyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlYnVpbGRUcmVlRGF0YSgpOiB2b2lkIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLnVuY3V0RGF0YSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWUgZGF0YSBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmVlRGF0YS5sZW5ndGggPSAwO1xyXG4gICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEucHVzaCh0aGlzLnJlYnVpbGRCcmFuY2goYnJhbmNoKSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMubGlzdE1vZGUgPT09IHRydWUpIHtcclxuICAgICAgICAgbGV0IHN0YXJ0ID1cclxuICAgICAgICAgICAgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2UgKiAodGhpcy50cmVlT3B0aW9ucy5wYWdlIC0gMSk7XHJcbiAgICAgICAgIGlmIChpc05hTihzdGFydCkpIHtcclxuICAgICAgICAgICAgLy9UaGlzIGNhdGNoZXMgdGhlIGNhc2Ugd2hlcmUgaXRlbXNQZXJQYWdlIHdhcyBub3QgcGFzc2VkIGJ5IHRoZSB1c2VyLFxyXG4gICAgICAgICAgICAvL2NhdXNpbmcgYHN0YXJ0YCB0byBlcXVhbCBpbmZpbml0eSowLCB3aGljaCBpcyBOYU4uXHJcbiAgICAgICAgICAgIHN0YXJ0ID0gMDtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICB0aGlzLnVuY3V0RGF0YS5zcGxpY2UoXHJcbiAgICAgICAgICAgIHN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZSxcclxuICAgICAgICAgICAgLi4udGhpcy50cmVlRGF0YVxyXG4gICAgICAgICApO1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy51bmN1dERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhID0gdGhpcy50cmVlRGF0YTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlYnVpbGRCcmFuY2goYnJhbmNoOiBCcmFuY2g8YW55Pik6IExpbWJsZVRyZWVOb2RlIHtcclxuICAgICAgY29uc3QgdGVtcDogTGltYmxlVHJlZU5vZGUgPSBicmFuY2guZGF0YTtcclxuICAgICAgdGVtcC5ub2RlcyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGJyYW5jaC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRlbXAubm9kZXMucHVzaCh0aGlzLnJlYnVpbGRCcmFuY2goY2hpbGQpKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGVtcDtcclxuICAgfVxyXG59XHJcbiJdfQ==

@@ -17,4 +17,5 @@ import { NgModule } from "@angular/core";

}
LimbleTreeModule.ɵfac = function LimbleTreeModule_Factory(t) { return new (t || LimbleTreeModule)(); };
LimbleTreeModule.ɵmod = i0.ɵɵdefineNgModule({ type: LimbleTreeModule });
LimbleTreeModule.ɵinj = i0.ɵɵdefineInjector({ factory: function LimbleTreeModule_Factory(t) { return new (t || LimbleTreeModule)(); }, providers: [ComponentCreatorService, DragStateService, GlobalEventsService], imports: [[CommonModule]] });
LimbleTreeModule.ɵinj = i0.ɵɵdefineInjector({ providers: [ComponentCreatorService, DragStateService, GlobalEventsService], imports: [[CommonModule]] });
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(LimbleTreeModule, { declarations: [LimbleTreeBranchComponent,

@@ -47,2 +48,2 @@ DropZoneComponent,

LimbleTreeBranchComponent], []);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDOUcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOERBQThELENBQUM7OztBQWdCaEgsTUFBTSxPQUFPLGdCQUFnQjs7b0RBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLG1CQUZmLENBQUMsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsWUFGbEUsQ0FBQyxZQUFZLENBQUM7d0ZBSWIsZ0JBQWdCLG1CQVp2Qix5QkFBeUI7UUFDekIsaUJBQWlCO1FBQ2pCLHVCQUF1QjtRQUN2Qix1QkFBdUI7UUFDdkIsOEJBQThCO1FBQzlCLCtCQUErQjtRQUMvQixnQ0FBZ0MsYUFFekIsWUFBWSxhQUNaLHVCQUF1Qjt1RkFHdkIsZ0JBQWdCO2NBZDVCLFFBQVE7ZUFBQztnQkFDUCxZQUFZLEVBQUU7b0JBQ1gseUJBQXlCO29CQUN6QixpQkFBaUI7b0JBQ2pCLHVCQUF1QjtvQkFDdkIsdUJBQXVCO29CQUN2Qiw4QkFBOEI7b0JBQzlCLCtCQUErQjtvQkFDL0IsZ0NBQWdDO2lCQUNsQztnQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUNsQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQzthQUM3RTs7dUJBVEssdUJBQXVCLFlBRHZCLGlCQUFpQjtJQUlqQiwrQkFBK0I7SUFML0IseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDcmVhdG9yU2VydmljZSB9IGZyb20gXCIuL3NpbmdsZXRvbnMvY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZUNvbXBvbmVudCB9IGZyb20gXCIuL2Ryb3Atem9uZS9kcm9wLXpvbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVCcmFuY2hDb21wb25lbnQgfSBmcm9tIFwiLi9saW1ibGUtdHJlZS1icmFuY2gvbGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4vbGltYmxlLXRyZWUtbm9kZS9saW1ibGUtdHJlZS1ub2RlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBEcmFnU3RhdGVTZXJ2aWNlIH0gZnJvbSBcIi4vc2luZ2xldG9ucy9kcmFnLXN0YXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGltYmxlVHJlZVJvb3RDb21wb25lbnQgfSBmcm9tIFwiLi9saW1ibGUtdHJlZS1yb290L2xpbWJsZS10cmVlLXJvb3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gXCIuL2xpbWJsZS10cmVlLXBsYWNlaG9sZGVyL2xpbWJsZS10cmVlLXBsYWNlaG9sZGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHbG9iYWxFdmVudHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2luZ2xldG9ucy9nbG9iYWwtZXZlbnRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHJhZ292ZXJOb0NoYW5nZURldGVjdERpcmVjdGl2ZSB9IGZyb20gXCIuL2N1c3RvbS1ldmVudC1iaW5kaW5ncy9kcmFnb3Zlci1uby1jaGFuZ2UtZGV0ZWN0LmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBEcmFnbGVhdmVOb0NoYW5nZURldGVjdERpcmVjdGl2ZSB9IGZyb20gXCIuL2N1c3RvbS1ldmVudC1iaW5kaW5ncy9kcmFnbGVhdmUtbm8tY2hhbmdlLWRldGVjdC5kaXJlY3RpdmVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICBMaW1ibGVUcmVlQnJhbmNoQ29tcG9uZW50LFxyXG4gICAgICBEcm9wWm9uZUNvbXBvbmVudCxcclxuICAgICAgTGltYmxlVHJlZU5vZGVDb21wb25lbnQsXHJcbiAgICAgIExpbWJsZVRyZWVSb290Q29tcG9uZW50LFxyXG4gICAgICBMaW1ibGVUcmVlUGxhY2Vob2xkZXJDb21wb25lbnQsXHJcbiAgICAgIERyYWdvdmVyTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmUsXHJcbiAgICAgIERyYWdsZWF2ZU5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlXHJcbiAgIF0sXHJcbiAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gICBleHBvcnRzOiBbTGltYmxlVHJlZVJvb3RDb21wb25lbnRdLFxyXG4gICBwcm92aWRlcnM6IFtDb21wb25lbnRDcmVhdG9yU2VydmljZSwgRHJhZ1N0YXRlU2VydmljZSwgR2xvYmFsRXZlbnRzU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpbWJsZVRyZWVNb2R1bGUge31cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltYmxlLXRyZWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDOUcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOERBQThELENBQUM7OztBQWdCaEgsTUFBTSxPQUFPLGdCQUFnQjs7Z0ZBQWhCLGdCQUFnQjtvREFBaEIsZ0JBQWdCO3lEQUZmLENBQUMsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsWUFGbEUsQ0FBQyxZQUFZLENBQUM7d0ZBSWIsZ0JBQWdCLG1CQVp2Qix5QkFBeUI7UUFDekIsaUJBQWlCO1FBQ2pCLHVCQUF1QjtRQUN2Qix1QkFBdUI7UUFDdkIsOEJBQThCO1FBQzlCLCtCQUErQjtRQUMvQixnQ0FBZ0MsYUFFekIsWUFBWSxhQUNaLHVCQUF1Qjt1RkFHdkIsZ0JBQWdCO2NBZDVCLFFBQVE7ZUFBQztnQkFDUCxZQUFZLEVBQUU7b0JBQ1gseUJBQXlCO29CQUN6QixpQkFBaUI7b0JBQ2pCLHVCQUF1QjtvQkFDdkIsdUJBQXVCO29CQUN2Qiw4QkFBOEI7b0JBQzlCLCtCQUErQjtvQkFDL0IsZ0NBQWdDO2lCQUNsQztnQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUNsQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQzthQUM3RTs7dUJBVEssdUJBQXVCLFlBRHZCLGlCQUFpQjtJQUlqQiwrQkFBK0I7SUFML0IseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDcmVhdG9yU2VydmljZSB9IGZyb20gXCIuL3NpbmdsZXRvbnMvY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZUNvbXBvbmVudCB9IGZyb20gXCIuL2Ryb3Atem9uZS9kcm9wLXpvbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVCcmFuY2hDb21wb25lbnQgfSBmcm9tIFwiLi9saW1ibGUtdHJlZS1icmFuY2gvbGltYmxlLXRyZWUtYnJhbmNoLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSBcIi4vbGltYmxlLXRyZWUtbm9kZS9saW1ibGUtdHJlZS1ub2RlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBEcmFnU3RhdGVTZXJ2aWNlIH0gZnJvbSBcIi4vc2luZ2xldG9ucy9kcmFnLXN0YXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGltYmxlVHJlZVJvb3RDb21wb25lbnQgfSBmcm9tIFwiLi9saW1ibGUtdHJlZS1yb290L2xpbWJsZS10cmVlLXJvb3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gXCIuL2xpbWJsZS10cmVlLXBsYWNlaG9sZGVyL2xpbWJsZS10cmVlLXBsYWNlaG9sZGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHbG9iYWxFdmVudHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2luZ2xldG9ucy9nbG9iYWwtZXZlbnRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHJhZ292ZXJOb0NoYW5nZURldGVjdERpcmVjdGl2ZSB9IGZyb20gXCIuL2N1c3RvbS1ldmVudC1iaW5kaW5ncy9kcmFnb3Zlci1uby1jaGFuZ2UtZGV0ZWN0LmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBEcmFnbGVhdmVOb0NoYW5nZURldGVjdERpcmVjdGl2ZSB9IGZyb20gXCIuL2N1c3RvbS1ldmVudC1iaW5kaW5ncy9kcmFnbGVhdmUtbm8tY2hhbmdlLWRldGVjdC5kaXJlY3RpdmVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICBMaW1ibGVUcmVlQnJhbmNoQ29tcG9uZW50LFxyXG4gICAgICBEcm9wWm9uZUNvbXBvbmVudCxcclxuICAgICAgTGltYmxlVHJlZU5vZGVDb21wb25lbnQsXHJcbiAgICAgIExpbWJsZVRyZWVSb290Q29tcG9uZW50LFxyXG4gICAgICBMaW1ibGVUcmVlUGxhY2Vob2xkZXJDb21wb25lbnQsXHJcbiAgICAgIERyYWdvdmVyTm9DaGFuZ2VEZXRlY3REaXJlY3RpdmUsXHJcbiAgICAgIERyYWdsZWF2ZU5vQ2hhbmdlRGV0ZWN0RGlyZWN0aXZlXHJcbiAgIF0sXHJcbiAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gICBleHBvcnRzOiBbTGltYmxlVHJlZVJvb3RDb21wb25lbnRdLFxyXG4gICBwcm92aWRlcnM6IFtDb21wb25lbnRDcmVhdG9yU2VydmljZSwgRHJhZ1N0YXRlU2VydmljZSwgR2xvYmFsRXZlbnRzU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpbWJsZVRyZWVNb2R1bGUge31cclxuIl19

@@ -8,10 +8,5 @@ import { Injectable } from "@angular/core";

}
appendComponent(component, viewContainerRef, index = null) {
appendComponent(component, viewContainerRef, index = undefined) {
const componentFactory = this.factoryResolver.resolveComponentFactory(component);
const componentRef = viewContainerRef.createComponent(componentFactory);
if (index !== null) {
const currentIndex = viewContainerRef.indexOf(componentRef.hostView);
viewContainerRef.detach(currentIndex);
viewContainerRef.insert(componentRef.hostView, index);
}
const componentRef = viewContainerRef.createComponent(componentFactory, index);
return componentRef;

@@ -25,2 +20,2 @@ }

}], function () { return [{ type: i0.ComponentFactoryResolver }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvc2luZ2xldG9ucy9jb21wb25lbnQtY3JlYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSixVQUFVLEVBR1osTUFBTSxlQUFlLENBQUM7O0FBR3ZCLE1BQU0sT0FBTyx1QkFBdUI7SUFDakMsWUFBNkIsZUFBeUM7UUFBekMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQ25FLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlLENBQ1osU0FBa0IsRUFDbEIsZ0JBQWtDLEVBQ2xDLFFBQXVCLElBQUk7UUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUNsRSxTQUFTLENBQ1gsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FDbEQsZ0JBQWdCLENBQ2xCLENBQUM7UUFDRixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDakIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN2QixDQUFDOzs4RkF0QlMsdUJBQXVCOytEQUF2Qix1QkFBdUIsV0FBdkIsdUJBQXVCO3VGQUF2Qix1QkFBdUI7Y0FEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgSW5qZWN0YWJsZSxcclxuICAgVHlwZSxcclxuICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRDcmVhdG9yU2VydmljZSB7XHJcbiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcclxuICAgICAgdGhpcy5mYWN0b3J5UmVzb2x2ZXIgPSBmYWN0b3J5UmVzb2x2ZXI7XHJcbiAgIH1cclxuXHJcbiAgIGFwcGVuZENvbXBvbmVudDxUID0gdW5rbm93bj4oXHJcbiAgICAgIGNvbXBvbmVudDogVHlwZTxUPixcclxuICAgICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgaW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsXHJcbiAgICkge1xyXG4gICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5mYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXHJcbiAgICAgICAgIGNvbXBvbmVudFxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxUPihcclxuICAgICAgICAgY29tcG9uZW50RmFjdG9yeVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggIT09IG51bGwpIHtcclxuICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICAgICAgIHZpZXdDb250YWluZXJSZWYuZGV0YWNoKGN1cnJlbnRJbmRleCk7XHJcbiAgICAgICAgIHZpZXdDb250YWluZXJSZWYuaW5zZXJ0KGNvbXBvbmVudFJlZi5ob3N0VmlldywgaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XHJcbiAgIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpbWJsZS10cmVlL3NyYy9saWIvc2luZ2xldG9ucy9jb21wb25lbnQtY3JlYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSixVQUFVLEVBR1osTUFBTSxlQUFlLENBQUM7O0FBR3ZCLE1BQU0sT0FBTyx1QkFBdUI7SUFDakMsWUFBNkIsZUFBeUM7UUFBekMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQ25FLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlLENBQ1osU0FBa0IsRUFDbEIsZ0JBQWtDLEVBQ2xDLFFBQTRCLFNBQVM7UUFFckMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUNsRSxTQUFTLENBQ1gsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FDbEQsZ0JBQWdCLEVBQ2hCLEtBQUssQ0FDUCxDQUFDO1FBQ0YsT0FBTyxZQUFZLENBQUM7SUFDdkIsQ0FBQzs7OEZBbEJTLHVCQUF1QjsrREFBdkIsdUJBQXVCLFdBQXZCLHVCQUF1Qjt1RkFBdkIsdUJBQXVCO2NBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgIEluamVjdGFibGUsXHJcbiAgIFR5cGUsXHJcbiAgIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50Q3JlYXRvclNlcnZpY2Uge1xyXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7XHJcbiAgICAgIHRoaXMuZmFjdG9yeVJlc29sdmVyID0gZmFjdG9yeVJlc29sdmVyO1xyXG4gICB9XHJcblxyXG4gICBhcHBlbmRDb21wb25lbnQ8VCA9IHVua25vd24+KFxyXG4gICAgICBjb21wb25lbnQ6IFR5cGU8VD4sXHJcbiAgICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgIGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuICAgKSB7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcclxuICAgICAgICAgY29tcG9uZW50XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PFQ+KFxyXG4gICAgICAgICBjb21wb25lbnRGYWN0b3J5LFxyXG4gICAgICAgICBpbmRleFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xyXG4gICB9XHJcbn1cclxuIl19

@@ -10,4 +10,7 @@ import { Injectable } from "@angular/core";

/** Called to indicate that something is being dragged. Stores that something for later. */
dragging(value) {
this._tempData = value;
dragging(branch, parentContainer) {
this._tempData = {
branch: branch,
parentContainer: parentContainer
};
this.state = "dragging";

@@ -34,2 +37,3 @@ this.state$.next(this.state);

capture() {
var _a;
if (this.state !== "droppable") {

@@ -40,3 +44,3 @@ throw new Error("Can only move to `captured` state from `droppable` state");

this.state$.next(this.state);
return this._tempData;
return (_a = this._tempData) === null || _a === void 0 ? void 0 : _a.branch;
}

@@ -63,2 +67,2 @@ /** Called to reset the service for future drags */

}], function () { return []; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9zaW5nbGV0b25zL2RyYWctc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUFVMUI7UUFDRyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsMkZBQTJGO0lBQ3BGLFFBQVEsQ0FBQyxLQUFrQjtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHVGQUF1RjtJQUNoRixTQUFTO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDeEU7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHVHQUF1RztJQUNoRyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FDWix3REFBd0QsQ0FDMUQsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCw4R0FBOEc7SUFDdkcsT0FBTztRQUNYLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FDWiwwREFBMEQsQ0FDNUQsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN6QixDQUFDO0lBRUQsbURBQW1EO0lBQzVDLE9BQU87UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELG9EQUFvRDtJQUM3QyxPQUFPO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3pCLENBQUM7SUFFRCw2QkFBNkI7SUFDdEIsUUFBUTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNyQixDQUFDOztnRkFyRVMsZ0JBQWdCO3dEQUFoQixnQkFBZ0IsV0FBaEIsZ0JBQWdCO3VGQUFoQixnQkFBZ0I7Y0FENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgdHlwZSB7IEJyYW5jaCB9IGZyb20gXCIuLi9jbGFzc2VzL0JyYW5jaFwiO1xyXG5cclxuZXhwb3J0IHR5cGUgRHJhZ1N0YXRlID0gXCJpZGxlXCIgfCBcImRyYWdnaW5nXCIgfCBcImRyb3BwYWJsZVwiIHwgXCJjYXB0dXJlZFwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRHJhZ1N0YXRlU2VydmljZSB7XHJcbiAgIC8qKiBwdXNoZXMgdGhlIG5ldyBzdGF0ZSB3aGVuZXZlciB0aGUgc3RhdGUgY2hhbmdlcyAqL1xyXG4gICBwdWJsaWMgc3RhdGUkOiBCZWhhdmlvclN1YmplY3Q8RHJhZ1N0YXRlPjtcclxuXHJcbiAgIC8qKiBob2xkcyB0aGUgdGhpbmcgYmVpbmcgZHJhZ2dlZCwgaWYgYW55ICovXHJcbiAgIHByaXZhdGUgX3RlbXBEYXRhOiBCcmFuY2g8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgIC8qKiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZHJhZyBwcm9jZXNzICovXHJcbiAgIHByaXZhdGUgc3RhdGU6IERyYWdTdGF0ZTtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJpZGxlXCI7XHJcbiAgICAgIHRoaXMuc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEcmFnU3RhdGU+KHRoaXMuc3RhdGUpO1xyXG4gICB9XHJcblxyXG4gICAvKiogQ2FsbGVkIHRvIGluZGljYXRlIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGRyYWdnZWQuIFN0b3JlcyB0aGF0IHNvbWV0aGluZyBmb3IgbGF0ZXIuICovXHJcbiAgIHB1YmxpYyBkcmFnZ2luZyh2YWx1ZTogQnJhbmNoPGFueT4pIHtcclxuICAgICAgdGhpcy5fdGVtcERhdGEgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5zdGF0ZSA9IFwiZHJhZ2dpbmdcIjtcclxuICAgICAgdGhpcy5zdGF0ZSQubmV4dCh0aGlzLnN0YXRlKTtcclxuICAgfVxyXG5cclxuICAgLyoqIENhbGxlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIGlzIGEgdmFsaWQgYWN0aXZlIGRyb3Agem9uZS4gRHJvcCBpcyBub3cgcG9zc2libGUuICovXHJcbiAgIHB1YmxpYyBkcm9wcGFibGUoKSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXRlICE9PSBcImRyYWdnaW5nXCIpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuIG9ubHkgY2FsbCBgZHJvcHBhYmxlYCB3aGVuIHN0YXRlIGlzIGBkcmFnZ2luZ2BcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGF0ZSA9IFwiZHJvcHBhYmxlXCI7XHJcbiAgICAgIHRoaXMuc3RhdGUkLm5leHQodGhpcy5zdGF0ZSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBDYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGVyZSBpcyBubyBsb25nZXIgYSB2YWxpZCBhY3RpdmUgZHJvcCB6b25lLiBEcm9wIGlzIG5vIGxvbmdlciBwb3NzaWJsZS4gKi9cclxuICAgcHVibGljIG5vdERyb3BwYWJsZSgpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IFwiZHJvcHBhYmxlXCIpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBcIkNhbiBvbmx5IGNhbGwgYG5vdERyb3BwYWJsZWAgd2hlbiBzdGF0ZSBpcyBgZHJvcHBhYmxlYFwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGF0ZSA9IFwiZHJhZ2dpbmdcIjtcclxuICAgICAgdGhpcy5zdGF0ZSQubmV4dCh0aGlzLnN0YXRlKTtcclxuICAgfVxyXG5cclxuICAgLyoqIENhbGxlZCB0byBpbmRpY2F0ZSB0aGF0IGEgZHJvcCBpbnRvIGEgdmFsaWQgZHJvcCB6b25lIGhhcyBvY2N1cnJlZC4gUmV0dXJucyB0aGUgaXRlbSB0aGF0IHdhcyBkcm9wcGVkLiAgKi9cclxuICAgcHVibGljIGNhcHR1cmUoKSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXRlICE9PSBcImRyb3BwYWJsZVwiKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgXCJDYW4gb25seSBtb3ZlIHRvIGBjYXB0dXJlZGAgc3RhdGUgZnJvbSBgZHJvcHBhYmxlYCBzdGF0ZVwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGF0ZSA9IFwiY2FwdHVyZWRcIjtcclxuICAgICAgdGhpcy5zdGF0ZSQubmV4dCh0aGlzLnN0YXRlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RlbXBEYXRhO1xyXG4gICB9XHJcblxyXG4gICAvKiogQ2FsbGVkIHRvIHJlc2V0IHRoZSBzZXJ2aWNlIGZvciBmdXR1cmUgZHJhZ3MgKi9cclxuICAgcHVibGljIHJlbGVhc2UoKSB7XHJcbiAgICAgIHRoaXMuX3RlbXBEYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJpZGxlXCI7XHJcbiAgICAgIHRoaXMuc3RhdGUkLm5leHQodGhpcy5zdGF0ZSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBnZXRzIHRoZSBjdXJyZW50IHRoaW5nIGJlaW5nIGRyYWdnZWQsIGlmIGFueS4gKi9cclxuICAgcHVibGljIGdldERhdGEoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90ZW1wRGF0YTtcclxuICAgfVxyXG5cclxuICAgLyoqIGdldHMgdGhlIGN1cnJlbnQgc3RhdGUgKi9cclxuICAgcHVibGljIGdldFN0YXRlKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZTtcclxuICAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9zaW5nbGV0b25zL2RyYWctc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVd2QyxNQUFNLE9BQU8sZ0JBQWdCO0lBVTFCO1FBQ0csSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDJGQUEyRjtJQUNwRixRQUFRLENBQUMsTUFBbUIsRUFBRSxlQUFpQztRQUNuRSxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2QsTUFBTSxFQUFFLE1BQU07WUFDZCxlQUFlLEVBQUUsZUFBZTtTQUNsQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1RkFBdUY7SUFDaEYsU0FBUztRQUNiLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1R0FBdUc7SUFDaEcsWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQ1osd0RBQXdELENBQzFELENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsOEdBQThHO0lBQ3ZHLE9BQU87O1FBQ1gsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUNaLDBEQUEwRCxDQUM1RCxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsYUFBTyxJQUFJLENBQUMsU0FBUywwQ0FBRSxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELG1EQUFtRDtJQUM1QyxPQUFPO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxvREFBb0Q7SUFDN0MsT0FBTztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN6QixDQUFDO0lBRUQsNkJBQTZCO0lBQ3RCLFFBQVE7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7Z0ZBeEVTLGdCQUFnQjt3REFBaEIsZ0JBQWdCLFdBQWhCLGdCQUFnQjt1RkFBaEIsZ0JBQWdCO2NBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHR5cGUgeyBCcmFuY2ggfSBmcm9tIFwiLi4vY2xhc3Nlcy9CcmFuY2hcIjtcclxuXHJcbmV4cG9ydCB0eXBlIERyYWdTdGF0ZSA9IFwiaWRsZVwiIHwgXCJkcmFnZ2luZ1wiIHwgXCJkcm9wcGFibGVcIiB8IFwiY2FwdHVyZWRcIjtcclxuXHJcbmludGVyZmFjZSBUZW1wRGF0YSB7XHJcbiAgIGJyYW5jaDogQnJhbmNoPGFueT47XHJcbiAgIHBhcmVudENvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRHJhZ1N0YXRlU2VydmljZSB7XHJcbiAgIC8qKiBwdXNoZXMgdGhlIG5ldyBzdGF0ZSB3aGVuZXZlciB0aGUgc3RhdGUgY2hhbmdlcyAqL1xyXG4gICBwdWJsaWMgc3RhdGUkOiBCZWhhdmlvclN1YmplY3Q8RHJhZ1N0YXRlPjtcclxuXHJcbiAgIC8qKiBob2xkcyBkYXRhIGFib3V0IHRoZSB0aGluZyBiZWluZyBkcmFnZ2VkICovXHJcbiAgIHByaXZhdGUgX3RlbXBEYXRhOiBUZW1wRGF0YSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgIC8qKiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZHJhZyBwcm9jZXNzICovXHJcbiAgIHByaXZhdGUgc3RhdGU6IERyYWdTdGF0ZTtcclxuXHJcbiAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJpZGxlXCI7XHJcbiAgICAgIHRoaXMuc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEcmFnU3RhdGU+KHRoaXMuc3RhdGUpO1xyXG4gICB9XHJcblxyXG4gICAvKiogQ2FsbGVkIHRvIGluZGljYXRlIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGRyYWdnZWQuIFN0b3JlcyB0aGF0IHNvbWV0aGluZyBmb3IgbGF0ZXIuICovXHJcbiAgIHB1YmxpYyBkcmFnZ2luZyhicmFuY2g6IEJyYW5jaDxhbnk+LCBwYXJlbnRDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgdGhpcy5fdGVtcERhdGEgPSB7XHJcbiAgICAgICAgIGJyYW5jaDogYnJhbmNoLFxyXG4gICAgICAgICBwYXJlbnRDb250YWluZXI6IHBhcmVudENvbnRhaW5lclxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0YXRlID0gXCJkcmFnZ2luZ1wiO1xyXG4gICAgICB0aGlzLnN0YXRlJC5uZXh0KHRoaXMuc3RhdGUpO1xyXG4gICB9XHJcblxyXG4gICAvKiogQ2FsbGVkIHRvIGluZGljYXRlIHRoYXQgdGhlcmUgaXMgYSB2YWxpZCBhY3RpdmUgZHJvcCB6b25lLiBEcm9wIGlzIG5vdyBwb3NzaWJsZS4gKi9cclxuICAgcHVibGljIGRyb3BwYWJsZSgpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IFwiZHJhZ2dpbmdcIikge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4gb25seSBjYWxsIGBkcm9wcGFibGVgIHdoZW4gc3RhdGUgaXMgYGRyYWdnaW5nYFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXRlID0gXCJkcm9wcGFibGVcIjtcclxuICAgICAgdGhpcy5zdGF0ZSQubmV4dCh0aGlzLnN0YXRlKTtcclxuICAgfVxyXG5cclxuICAgLyoqIENhbGxlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIGlzIG5vIGxvbmdlciBhIHZhbGlkIGFjdGl2ZSBkcm9wIHpvbmUuIERyb3AgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlLiAqL1xyXG4gICBwdWJsaWMgbm90RHJvcHBhYmxlKCkge1xyXG4gICAgICBpZiAodGhpcy5zdGF0ZSAhPT0gXCJkcm9wcGFibGVcIikge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgIFwiQ2FuIG9ubHkgY2FsbCBgbm90RHJvcHBhYmxlYCB3aGVuIHN0YXRlIGlzIGBkcm9wcGFibGVgXCJcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXRlID0gXCJkcmFnZ2luZ1wiO1xyXG4gICAgICB0aGlzLnN0YXRlJC5uZXh0KHRoaXMuc3RhdGUpO1xyXG4gICB9XHJcblxyXG4gICAvKiogQ2FsbGVkIHRvIGluZGljYXRlIHRoYXQgYSBkcm9wIGludG8gYSB2YWxpZCBkcm9wIHpvbmUgaGFzIG9jY3VycmVkLiBSZXR1cm5zIHRoZSBpdGVtIHRoYXQgd2FzIGRyb3BwZWQuICAqL1xyXG4gICBwdWJsaWMgY2FwdHVyZSgpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IFwiZHJvcHBhYmxlXCIpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBcIkNhbiBvbmx5IG1vdmUgdG8gYGNhcHR1cmVkYCBzdGF0ZSBmcm9tIGBkcm9wcGFibGVgIHN0YXRlXCJcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXRlID0gXCJjYXB0dXJlZFwiO1xyXG4gICAgICB0aGlzLnN0YXRlJC5uZXh0KHRoaXMuc3RhdGUpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdGVtcERhdGE/LmJyYW5jaDtcclxuICAgfVxyXG5cclxuICAgLyoqIENhbGxlZCB0byByZXNldCB0aGUgc2VydmljZSBmb3IgZnV0dXJlIGRyYWdzICovXHJcbiAgIHB1YmxpYyByZWxlYXNlKCkge1xyXG4gICAgICB0aGlzLl90ZW1wRGF0YSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5zdGF0ZSA9IFwiaWRsZVwiO1xyXG4gICAgICB0aGlzLnN0YXRlJC5uZXh0KHRoaXMuc3RhdGUpO1xyXG4gICB9XHJcblxyXG4gICAvKiogZ2V0cyB0aGUgY3VycmVudCB0aGluZyBiZWluZyBkcmFnZ2VkLCBpZiBhbnkuICovXHJcbiAgIHB1YmxpYyBnZXREYXRhKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdGVtcERhdGE7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBnZXRzIHRoZSBjdXJyZW50IHN0YXRlICovXHJcbiAgIHB1YmxpYyBnZXRTdGF0ZSgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGU7XHJcbiAgIH1cclxufVxyXG4iXX0=

@@ -5,11 +5,15 @@ import { BranchCoordinates } from "./Branch";

import { DropZoneLocation } from "./DropZoneLocation";
export declare type CommMessage = "checkActive" | "checkVisible" | "checkBoth";
import { ViewContainerRef } from "@angular/core";
export declare type CommMessage = "checkActive" | "checkVisible" | "checkRendered";
export declare class DropZone {
static dropZoneLocationsAreEqual(valueA: DropZone | DropZoneLocation, valueB: DropZone | DropZoneLocation): boolean;
private host;
private readonly location;
private visible;
private active;
private rendered;
private family;
private commChannel;
private readonly commChannel;
constructor(parentCoordinates: BranchCoordinates, insertIndex: number);
isRendered(set?: boolean | undefined): DropZone["rendered"];
isVisible(set?: boolean | undefined): DropZone["visible"];

@@ -22,2 +26,4 @@ isActive(set?: boolean | undefined): DropZone["active"];

getFullInsertCoordinates(): number[];
setHost(host: ViewContainerRef | undefined): ViewContainerRef | undefined;
getHost(): ViewContainerRef | undefined;
}

@@ -7,2 +7,4 @@ import { BranchCoordinates } from "./Branch";

getFullInsertCoordinates(): number[];
setParentCoordinates(coordinates: BranchCoordinates): void;
setInsertIndex(index: number): void;
}

@@ -6,3 +6,2 @@ import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from "@angular/core";

private readonly el;
dragleaveEventThrottle: number;
readonly dragleaveNoChangeDetect: EventEmitter<DragEvent>;

@@ -14,3 +13,3 @@ private eventSubscription;

static ɵfac: i0.ɵɵFactoryDef<DragleaveNoChangeDetectDirective, never>;
static ɵdir: i0.ɵɵDirectiveDefWithMeta<DragleaveNoChangeDetectDirective, "[dragleaveNoChangeDetect]", never, { "dragleaveEventThrottle": "dragleaveEventThrottle"; }, { "dragleaveNoChangeDetect": "dragleaveNoChangeDetect"; }, never>;
static ɵdir: i0.ɵɵDirectiveDefWithMeta<DragleaveNoChangeDetectDirective, "[dragleaveNoChangeDetect]", never, {}, { "dragleaveNoChangeDetect": "dragleaveNoChangeDetect"; }, never>;
}

@@ -1,2 +0,2 @@

import { AfterViewInit, ChangeDetectorRef } from "@angular/core";
import { AfterViewInit, ChangeDetectorRef, ViewContainerRef } from "@angular/core";
import { TreeService } from "../limble-tree-root/tree.service";

@@ -7,6 +7,6 @@ import type { Branch } from "../classes/Branch";

export declare class LimbleTreeBranchComponent implements AfterViewInit {
private readonly treeService;
private treeService;
private readonly changeDetectorRef;
branch: Branch<any> | undefined;
private host;
children: ViewContainerRef | undefined;
dropZoneInside: DropZone | undefined;

@@ -18,4 +18,5 @@ renderDropZoneInside: boolean;

reRender(): void;
private setDropZoneHost;
static ɵfac: i0.ɵɵFactoryDef<LimbleTreeBranchComponent, never>;
static ɵcmp: i0.ɵɵComponentDefWithMeta<LimbleTreeBranchComponent, "limble-tree-branch", never, { "branch": "branch"; "dropZoneInside": "dropZoneInside"; "renderDropZoneInside": "renderDropZoneInside"; }, {}, never, never>;
}

@@ -1,2 +0,2 @@

import { AfterViewInit, ChangeDetectorRef, OnInit } from "@angular/core";
import { AfterViewInit, ChangeDetectorRef, NgZone, OnDestroy, OnInit, ViewContainerRef } from "@angular/core";
import { ComponentCreatorService } from "../singletons/component-creator.service";

@@ -10,3 +10,3 @@ import { DropZoneService } from "../limble-tree-root/drop-zone.service";

import * as i0 from "@angular/core";
export declare class LimbleTreeNodeComponent implements OnInit, AfterViewInit {
export declare class LimbleTreeNodeComponent implements OnInit, AfterViewInit, OnDestroy {
private readonly componentCreatorService;

@@ -18,2 +18,3 @@ private readonly changeDetectorRef;

private readonly globalEventsService;
private readonly ngZone;
branch: Branch<any> | undefined;

@@ -30,7 +31,12 @@ private nodeHost;

private nodeHostContainer;
constructor(componentCreatorService: ComponentCreatorService, changeDetectorRef: ChangeDetectorRef, dragStateService: DragStateService, dropZoneService: DropZoneService, treeService: TreeService, globalEventsService: GlobalEventsService);
private currentBranchCoordinates;
private readonly treeChangeSubscription;
parentHost: ViewContainerRef | undefined;
constructor(componentCreatorService: ComponentCreatorService, changeDetectorRef: ChangeDetectorRef, dragStateService: DragStateService, dropZoneService: DropZoneService, treeService: TreeService, globalEventsService: GlobalEventsService, ngZone: NgZone);
private treeChangeHandler;
ngOnInit(): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
dragstartHandler(event: DragEvent): void;
dragendHandler(event: DragEvent): void;
dragendHandler(event?: DragEvent): void;
dragoverHandler(event: DragEvent): void;

@@ -42,5 +48,10 @@ private renderNode;

private addDropZoneInside;
private updateDropZones;
private updateDropZoneAbove;
private updateDropZoneBelow;
private updateDropZoneInside;
private setDropZoneHosts;
private checkForHandle;
static ɵfac: i0.ɵɵFactoryDef<LimbleTreeNodeComponent, never>;
static ɵcmp: i0.ɵɵComponentDefWithMeta<LimbleTreeNodeComponent, "limble-tree-node", never, { "branch": "branch"; }, {}, never, never>;
static ɵcmp: i0.ɵɵComponentDefWithMeta<LimbleTreeNodeComponent, "limble-tree-node", never, { "branch": "branch"; "parentHost": "parentHost"; }, {}, never, never>;
}

@@ -1,2 +0,2 @@

import { Branch } from "../classes/Branch";
import { Branch, BranchCoordinates } from "../classes/Branch";
import { DragStateService } from "../singletons/drag-state.service";

@@ -9,2 +9,3 @@ import type { ProcessedOptions } from "./tree.service";

founder: DropZone;
/** All the drop zones that belong to this family */
members: Array<DropZone>;

@@ -14,2 +15,3 @@ }

private readonly dragStateService;
private readonly dropZoneArchive;
private readonly dropZoneInventory;

@@ -23,12 +25,17 @@ private readonly dropZoneFamilies;

constructor(dragStateService: DragStateService);
addDropZone(newDropZone: DropZone): boolean;
addDropZone(newDropZone: DropZone): void;
/** hides all drop zones */
clear(): void;
clearVisibleZones(): void;
getActiveDropZone(): DropZoneService["activeDropZone"];
getDropZone(coordinates: BranchCoordinates): DropZone | undefined;
init(tree: Branch<any>, treeOptions: ProcessedOptions): void;
/** hides all drop zones and deletes all the family assignments */
removeDropZone(dropZone: DropZone): void;
/** hides all drop zones, deletes all the family assignments,
* and empties the dropZoneInventory
*/
reset(): void;
/**
* Restores the service to its initial state: hides all drop zones,
* deletes all the family assignments, and empties the dropZoneInventory.
* deletes all the family assignments, and empties the dropZoneInventory
* and dropZoneArchive.
*/

@@ -47,3 +54,5 @@ restart(): void;

swapActiveDropZone(newActiveDropZone: DropZone): void;
assignFamilies(): void;
update(): void;
private assignFamilies;
private buildInventory;
private setActiveDropZone;

@@ -50,0 +59,0 @@ private showDropZone;

import { Type, ViewContainerRef } from "@angular/core";
import { ReplaySubject } from "rxjs";
import { ComponentCreatorService } from "../singletons/component-creator.service";
import { DropZoneService } from "./drop-zone.service";
import { Branch, BranchCoordinates } from "../classes/Branch";
import { DragStateService } from "../singletons/drag-state.service";
import { Subject } from "rxjs";
import * as i0 from "@angular/core";

@@ -97,4 +98,5 @@ /** An object describing a node of the tree */

private readonly dropZoneService;
changes$: ReplaySubject<null>;
drops$: ReplaySubject<TreeDrop>;
private readonly dragStateService;
readonly changes$: Subject<null>;
readonly drops$: Subject<TreeDrop>;
private host;

@@ -106,3 +108,7 @@ treeData: LimbleTreeData | undefined;

private placeholder;
constructor(componentCreatorService: ComponentCreatorService, dropZoneService: DropZoneService);
captured: boolean;
readonly cleanupSignal$: Subject<null>;
constructor(componentCreatorService: ComponentCreatorService, dropZoneService: DropZoneService, dragStateService: DragStateService);
drop(source: Branch<any>, targetCoordinates: BranchCoordinates): void;
getPlaceholder(): boolean;
/** Initializes the service and renders the tree.

@@ -115,4 +121,4 @@ * @param host - The ViewContainerRef into which the tree will be rendered.

init(host: ViewContainerRef, data: LimbleTreeData, options?: LimbleTreeOptions, itemsPerPage?: number, page?: number): void;
usePlaceholder(): void;
removePlaceholder(): void;
private cleanup;
/** Renders the entire tree from root to leaves */

@@ -122,10 +128,8 @@ private render;

renderBranch(host: ViewContainerRef, branch: Branch<any>): void;
usePlaceholder(): void;
private processOptions;
drop(source: Branch<any>, targetCoordinates: BranchCoordinates): void;
remove(target: Branch<any>): void;
private rebuildTreeData;
private rebuildBranch;
getPlaceholder(): boolean;
static ɵfac: i0.ɵɵFactoryDef<TreeService, never>;
static ɵprov: i0.ɵɵInjectableDef<TreeService>;
}

@@ -11,4 +11,5 @@ import * as i0 from "@angular/core";

export declare class LimbleTreeModule {
static ɵfac: i0.ɵɵFactoryDef<LimbleTreeModule, never>;
static ɵmod: i0.ɵɵNgModuleDefWithMeta<LimbleTreeModule, [typeof i1.LimbleTreeBranchComponent, typeof i2.DropZoneComponent, typeof i3.LimbleTreeNodeComponent, typeof i4.LimbleTreeRootComponent, typeof i5.LimbleTreePlaceholderComponent, typeof i6.DragoverNoChangeDetectDirective, typeof i7.DragleaveNoChangeDetectDirective], [typeof i8.CommonModule], [typeof i4.LimbleTreeRootComponent]>;
static ɵinj: i0.ɵɵInjectorDef<LimbleTreeModule>;
}

@@ -6,5 +6,5 @@ import { ComponentFactoryResolver, Type, ViewContainerRef } from "@angular/core";

constructor(factoryResolver: ComponentFactoryResolver);
appendComponent<T = unknown>(component: Type<T>, viewContainerRef: ViewContainerRef, index?: number | null): import("@angular/core").ComponentRef<T>;
appendComponent<T = unknown>(component: Type<T>, viewContainerRef: ViewContainerRef, index?: number | undefined): import("@angular/core").ComponentRef<T>;
static ɵfac: i0.ɵɵFactoryDef<ComponentCreatorService, never>;
static ɵprov: i0.ɵɵInjectableDef<ComponentCreatorService>;
}

@@ -0,1 +1,2 @@

import { ViewContainerRef } from "@angular/core";
import { BehaviorSubject } from "rxjs";

@@ -5,6 +6,10 @@ import type { Branch } from "../classes/Branch";

export declare type DragState = "idle" | "dragging" | "droppable" | "captured";
interface TempData {
branch: Branch<any>;
parentContainer: ViewContainerRef;
}
export declare class DragStateService {
/** pushes the new state whenever the state changes */
state$: BehaviorSubject<DragState>;
/** holds the thing being dragged, if any */
/** holds data about the thing being dragged */
private _tempData;

@@ -15,3 +20,3 @@ /** the current state of the drag process */

/** Called to indicate that something is being dragged. Stores that something for later. */
dragging(value: Branch<any>): void;
dragging(branch: Branch<any>, parentContainer: ViewContainerRef): void;
/** Called to indicate that there is a valid active drop zone. Drop is now possible. */

@@ -26,3 +31,3 @@ droppable(): void;

/** gets the current thing being dragged, if any. */
getData(): Branch<any> | undefined;
getData(): TempData | undefined;
/** gets the current state */

@@ -33,1 +38,2 @@ getState(): DragState;

}
export {};
{
"name": "@limble/limble-tree",
"version": "0.10.1",
"version": "0.11.0",
"peerDependencies": {
"@angular/common": "^11.2.3",
"@angular/core": "^11.2.3"
"@angular/common": "^11.2.5",
"@angular/core": "^11.2.5"
},

@@ -8,0 +8,0 @@ "dependencies": {

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