@metadev/daga-angular 4.2.3 → 4.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"metadev-daga-angular.mjs","sources":["../tmp-esm2022/lib/collapse-button/collapse-button.component.js","../tmp-esm2022/lib/services/canvas-provider.service.js","../tmp-esm2022/lib/services/daga-configuration.service.js","../tmp-esm2022/lib/diagram-buttons/diagram-buttons.component.js","../tmp-esm2022/lib/errors/errors.component.js","../tmp-esm2022/lib/palette/palette.component.js","../tmp-esm2022/lib/property-editor/property-settings/property-settings.component.js","../tmp-esm2022/lib/property-editor/autocomplete/autocomplete.component.js","../tmp-esm2022/lib/property-editor/option-list-editor/option-list-editor.component.js","../tmp-esm2022/lib/property-editor/text-list-editor/text-list-editor.component.js","../tmp-esm2022/lib/property-editor/text-map-editor/text-map-editor.component.js","../tmp-esm2022/lib/property-editor/object-editor/object-editor.component.js","../tmp-esm2022/lib/property-editor/property-editor.component.js","../tmp-esm2022/lib/diagram/diagram.component.js","../tmp-esm2022/lib/daga.module.js","../tmp-esm2022/metadev-daga-angular.js"],"sourcesContent":["import { Component, ElementRef, Input } from '@angular/core';\nimport { Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport * as i0 from \"@angular/core\";\n/**\n * Button used to collapse components that implement it.\n * @private\n */\nexport class CollapseButtonComponent {\n constructor() {\n this.collapsed = false;\n this.disabled = false;\n this.direction = Side.Bottom;\n this.rule = 'visibility';\n this.collapsedValue = 'collapse';\n this.visibleValue = 'visible';\n this.Side = Side;\n }\n toggleCollapse() {\n if (!this.disabled) {\n this.collapsed = !this.collapsed;\n let selection;\n if (this.collapsableSelector instanceof ElementRef) {\n selection = d3.select(this.collapsableSelector.nativeElement);\n if (this.collapsableAdditionalSelector) {\n selection = selection.select(this.collapsableAdditionalSelector);\n }\n }\n else if (this.collapsableSelector instanceof HTMLElement) {\n selection = d3.select(this.collapsableSelector);\n if (this.collapsableAdditionalSelector) {\n selection = selection.select(this.collapsableAdditionalSelector);\n }\n }\n else {\n selection = d3.select(this.collapsableSelector);\n if (this.collapsableAdditionalSelector) {\n selection = selection.select(this.collapsableAdditionalSelector);\n }\n }\n selection.style(this.rule, this.collapsed ? this.collapsedValue : this.visibleValue);\n }\n }\n getClass() {\n switch (this.direction) {\n case Side.Right:\n if (this.disabled) {\n return 'daga-horizontal-none';\n }\n else if (this.collapsed) {\n return 'daga-horizontal-right';\n }\n else {\n return 'daga-horizontal-left';\n }\n case Side.Bottom:\n if (this.disabled) {\n return 'daga-vertical-none';\n }\n else if (this.collapsed) {\n return 'daga-vertical-down';\n }\n else {\n return 'daga-vertical-up';\n }\n case Side.Left:\n if (this.disabled) {\n return 'daga-horizontal-none';\n }\n else if (this.collapsed) {\n return 'daga-horizontal-left';\n }\n else {\n return 'daga-horizontal-right';\n }\n case Side.Top:\n if (this.disabled) {\n return 'daga-vertical-none';\n }\n else if (this.collapsed) {\n return 'daga-vertical-up';\n }\n else {\n return 'daga-vertical-down';\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CollapseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.3\", type: CollapseButtonComponent, isStandalone: true, selector: \"daga-collapse-button\", inputs: { collapsableSelector: \"collapsableSelector\", collapsableAdditionalSelector: \"collapsableAdditionalSelector\", collapsed: \"collapsed\", disabled: \"disabled\", direction: \"direction\", rule: \"rule\", collapsedValue: \"collapsedValue\", visibleValue: \"visibleValue\" }, ngImport: i0, template: \"<button\\r\\n class=\\\"daga-collapse-button daga-{{ direction }}\\\"\\r\\n (click)=\\\"toggleCollapse()\\\"\\r\\n>\\r\\n <div [class]=\\\"getClass()\\\"></div>\\r\\n</button>\\r\\n\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CollapseButtonComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-collapse-button', template: \"<button\\r\\n class=\\\"daga-collapse-button daga-{{ direction }}\\\"\\r\\n (click)=\\\"toggleCollapse()\\\"\\r\\n>\\r\\n <div [class]=\\\"getClass()\\\"></div>\\r\\n</button>\\r\\n\" }]\n }], propDecorators: { collapsableSelector: [{\n type: Input\n }], collapsableAdditionalSelector: [{\n type: Input\n }], collapsed: [{\n type: Input\n }], disabled: [{\n type: Input\n }], direction: [{\n type: Input\n }], rule: [{\n type: Input\n }], collapsedValue: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvY29sbGFwc2UtYnV0dG9uL2NvbGxhcHNlLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2NvbGxhcHNlLWJ1dHRvbi9jb2xsYXBzZS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7O0FBRXpCOzs7R0FHRztBQUtILE1BQU0sT0FBTyx1QkFBdUI7SUFKcEM7UUFVRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFeEIsU0FBSSxHQUFHLFlBQVksQ0FBQztRQUVwQixtQkFBYyxHQUFHLFVBQVUsQ0FBQztRQUU1QixpQkFBWSxHQUFHLFNBQVMsQ0FBQztRQUV6QixTQUFJLEdBQUcsSUFBSSxDQUFDO0tBaUViO0lBL0RDLGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2pDLElBQUksU0FBUyxDQUFDO1lBQ2QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLFlBQVksVUFBVSxFQUFFLENBQUM7Z0JBQ25ELFNBQVMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENB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QkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaWRlIH0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcclxuXHJcbi8qKlxyXG4gKiBCdXR0b24gdXNlZCB0byBjb2xsYXBzZSBjb21wb25lbnRzIHRoYXQgaW1wbGVtZW50IGl0LlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYWdhLWNvbGxhcHNlLWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbGxhcHNlLWJ1dHRvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbGxhcHNlQnV0dG9uQ29tcG9uZW50IHtcclxuICBASW5wdXQoKVxyXG4gIGNvbGxhcHNhYmxlU2VsZWN0b3IhOiBzdHJpbmcgfCBFbGVtZW50UmVmIHwgSFRNTEVsZW1lbnQ7XHJcbiAgQElucHV0KClcclxuICBjb2xsYXBzYWJsZUFkZGl0aW9uYWxTZWxlY3RvciE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGRpcmVjdGlvbiA9IFNpZGUuQm90dG9tO1xyXG4gIEBJbnB1dCgpXHJcbiAgcnVsZSA9ICd2aXNpYmlsaXR5JztcclxuICBASW5wdXQoKVxyXG4gIGNvbGxhcHNlZFZhbHVlID0gJ2NvbGxhcHNlJztcclxuICBASW5wdXQoKVxyXG4gIHZpc2libGVWYWx1ZSA9ICd2aXNpYmxlJztcclxuXHJcbiAgU2lkZSA9IFNpZGU7XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xyXG4gICAgICBsZXQgc2VsZWN0aW9uO1xyXG4gICAgICBpZiAodGhpcy5jb2xsYXBzYWJsZVNlbGVjdG9yIGluc3RhbmNlb2YgRWxlbWVudFJlZikge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IGQzLnNlbGVjdCh0aGlzLmNvbGxhcHNhYmxlU2VsZWN0b3IubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2FibGVBZGRpdGlvbmFsU2VsZWN0b3IpIHtcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zZWxlY3QodGhpcy5jb2xsYXBzYWJsZUFkZGl0aW9uYWxTZWxlY3Rvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29sbGFwc2FibGVTZWxlY3RvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgc2VsZWN0aW9uID0gZDMuc2VsZWN0KHRoaXMuY29sbGFwc2FibGVTZWxlY3Rvcik7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2FibGVBZGRpdGlvbmFsU2VsZWN0b3IpIHtcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zZWxlY3QodGhpcy5jb2xsYXBzYWJsZUFkZGl0aW9uYWxTZWxlY3Rvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IGQzLnNlbGVjdCh0aGlzLmNvbGxhcHNhYmxlU2VsZWN0b3IpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNhYmxlQWRkaXRpb25hbFNlbGVjdG9yKSB7XHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBzZWxlY3Rpb24uc2VsZWN0KHRoaXMuY29sbGFwc2FibGVBZGRpdGlvbmFsU2VsZWN0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBzZWxlY3Rpb24uc3R5bGUoXHJcbiAgICAgICAgdGhpcy5ydWxlLFxyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkID8gdGhpcy5jb2xsYXBzZWRWYWx1ZSA6IHRoaXMudmlzaWJsZVZhbHVlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLmRpcmVjdGlvbikge1xyXG4gICAgICBjYXNlIFNpZGUuUmlnaHQ6XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHJldHVybiAnZGFnYS1ob3Jpem9udGFsLW5vbmUnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb2xsYXBzZWQpIHtcclxuICAgICAgICAgIHJldHVybiAnZGFnYS1ob3Jpem9udGFsLXJpZ2h0JztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICdkYWdhLWhvcml6b250YWwtbGVmdCc7XHJcbiAgICAgICAgfVxyXG4gICAgICBjYXNlIFNpZGUuQm90dG9tOlxyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ2RhZ2EtdmVydGljYWwtbm9uZSc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICAgICAgcmV0dXJuICdkYWdhLXZlcnRpY2FsLWRvd24nO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gJ2RhZ2EtdmVydGljYWwtdXAnO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSBTaWRlLkxlZnQ6XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHJldHVybiAnZGFnYS1ob3Jpem9udGFsLW5vbmUnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb2xsYXBzZWQpIHtcclxuICAgICAgICAgIHJldHVybiAnZGFnYS1ob3Jpem9udGFsLWxlZnQnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gJ2RhZ2EtaG9yaXpvbnRhbC1yaWdodCc7XHJcbiAgICAgICAgfVxyXG4gICAgICBjYXNlIFNpZGUuVG9wOlxyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ2RhZ2EtdmVydGljYWwtbm9uZSc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICAgICAgcmV0dXJuICdkYWdhLXZlcnRpY2FsLXVwJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICdkYWdhLXZlcnRpY2FsLWRvd24nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvblxyXG4gIGNsYXNzPVwiZGFnYS1jb2xsYXBzZS1idXR0b24gZGFnYS17eyBkaXJlY3Rpb24gfX1cIlxyXG4gIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcclxuPlxyXG4gIDxkaXYgW2NsYXNzXT1cImdldENsYXNzKClcIj48L2Rpdj5cclxuPC9idXR0b24+XHJcbiJdfQ==","import { Injectable } from '@angular/core';\nimport { DiagramCanvas } from '@metadev/daga';\nimport { ReplaySubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * A provider for the {@link Canvas} associated with a {@link DiagramComponent} context.\n * @public\n */\nexport class CanvasProviderService {\n constructor() {\n this.canvasSubject$ = new ReplaySubject();\n /**\n * Subject used to track when the canvas has been updated.\n * @public\n */\n this.canvas$ = this.canvasSubject$.asObservable();\n this.viewInitializedSubject$ = new ReplaySubject();\n /**\n * Subject used to track when the view of the canvas has been updated after updating the canvas.\n * @public\n */\n this.viewInitialized$ = this.viewInitializedSubject$.asObservable();\n }\n /**\n * Initialize the diagram canvas object of this context using the given diagram configuration.\n * @private\n * @param parentComponent A diagram editor.\n * @param config A diagram configuration.\n */\n initCanvas(parentComponent, config) {\n this._canvas = new DiagramCanvas(parentComponent, config);\n this.canvasSubject$.next(this._canvas);\n }\n /**\n * Attach the canvas of this context to an HTML element to render it there.\n * @private\n * @param appendTo An HTML element.\n */\n initCanvasView(appendTo) {\n this._canvas.initView(appendTo);\n this.viewInitializedSubject$.next(this._canvas);\n }\n /**\n * Get the current canvas of this context.\n * @public\n * @returns A canvas.\n */\n getCanvas() {\n return this._canvas;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CanvasProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CanvasProviderService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CanvasProviderService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2NhbnZhcy1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGFBQWEsRUFHZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVyQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBSVUsbUJBQWMsR0FBRyxJQUFJLGFBQWEsRUFBVSxDQUFDO1FBRXJEOzs7V0FHRztRQUNJLFlBQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTVDLDRCQUF1QixHQUFHLElBQUksYUFBYSxFQUFVLENBQUM7UUFFOUQ7OztXQUdHO1FBQ0kscUJBQWdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO0tBK0J2RTtJQTdCQzs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxlQUE4QixFQUFFLE1BQXFCO1FBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxRQUFxQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzs4R0EvQ1UscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2FudmFzLFxyXG4gIERpYWdyYW1DYW52YXMsXHJcbiAgRGlhZ3JhbUNvbmZpZyxcclxuICBEaWFncmFtRWRpdG9yXHJcbn0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBBIHByb3ZpZGVyIGZvciB0aGUge0BsaW5rIENhbnZhc30gYXNzb2NpYXRlZCB3aXRoIGEge0BsaW5rIERpYWdyYW1Db21wb25lbnR9IGNvbnRleHQuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENhbnZhc1Byb3ZpZGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfY2FudmFzITogQ2FudmFzO1xyXG5cclxuICBwcml2YXRlIGNhbnZhc1N1YmplY3QkID0gbmV3IFJlcGxheVN1YmplY3Q8Q2FudmFzPigpO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHVzZWQgdG8gdHJhY2sgd2hlbiB0aGUgY2FudmFzIGhhcyBiZWVuIHVwZGF0ZWQuXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW52YXMkID0gdGhpcy5jYW52YXNTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSB2aWV3SW5pdGlhbGl6ZWRTdWJqZWN0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PENhbnZhcz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB1c2VkIHRvIHRyYWNrIHdoZW4gdGhlIHZpZXcgb2YgdGhlIGNhbnZhcyBoYXMgYmVlbiB1cGRhdGVkIGFmdGVyIHVwZGF0aW5nIHRoZSBjYW52YXMuXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIHB1YmxpYyB2aWV3SW5pdGlhbGl6ZWQkID0gdGhpcy52aWV3SW5pdGlhbGl6ZWRTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgZGlhZ3JhbSBjYW52YXMgb2JqZWN0IG9mIHRoaXMgY29udGV4dCB1c2luZyB0aGUgZ2l2ZW4gZGlhZ3JhbSBjb25maWd1cmF0aW9uLlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIHBhcmVudENvbXBvbmVudCBBIGRpYWdyYW0gZWRpdG9yLlxyXG4gICAqIEBwYXJhbSBjb25maWcgQSBkaWFncmFtIGNvbmZpZ3VyYXRpb24uXHJcbiAgICovXHJcbiAgaW5pdENhbnZhcyhwYXJlbnRDb21wb25lbnQ6IERpYWdyYW1FZGl0b3IsIGNvbmZpZzogRGlhZ3JhbUNvbmZpZykge1xyXG4gICAgdGhpcy5fY2FudmFzID0gbmV3IERpYWdyYW1DYW52YXMocGFyZW50Q29tcG9uZW50LCBjb25maWcpO1xyXG4gICAgdGhpcy5jYW52YXNTdWJqZWN0JC5uZXh0KHRoaXMuX2NhbnZhcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBdHRhY2ggdGhlIGNhbnZhcyBvZiB0aGlzIGNvbnRleHQgdG8gYW4gSFRNTCBlbGVtZW50IHRvIHJlbmRlciBpdCB0aGVyZS5cclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEBwYXJhbSBhcHBlbmRUbyBBbiBIVE1MIGVsZW1lbnQuXHJcbiAgICovXHJcbiAgaW5pdENhbnZhc1ZpZXcoYXBwZW5kVG86IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLl9jYW52YXMuaW5pdFZpZXcoYXBwZW5kVG8pO1xyXG4gICAgdGhpcy52aWV3SW5pdGlhbGl6ZWRTdWJqZWN0JC5uZXh0KHRoaXMuX2NhbnZhcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgY2FudmFzIG9mIHRoaXMgY29udGV4dC5cclxuICAgKiBAcHVibGljXHJcbiAgICogQHJldHVybnMgQSBjYW52YXMuXHJcbiAgICovXHJcbiAgZ2V0Q2FudmFzKCk6IENhbnZhcyB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FudmFzO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * A provider for the {@link DiagramConfig} associated with a {@link DiagramComponent} context.\n * @public\n */\nexport class DagaConfigurationService {\n constructor() {\n this.configSubject$ = new ReplaySubject();\n /**\n * Subject used to track when the diagram configuration has been updated.\n * @public\n */\n this.config$ = this.configSubject$.asObservable();\n }\n /**\n * Set the diagram configuration of this context.\n * @private\n * @param config A diagram configuration.\n */\n init(config) {\n this._config = config;\n this.configSubject$.next(config);\n }\n /**\n * Get the current diagram configuration of this context.\n * @public\n * @returns A diagram configuration.\n */\n getConfig() {\n return this._config;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaConfigurationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaConfigurationService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFnYS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2RhZ2EtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFckM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQURyQztRQUlVLG1CQUFjLEdBQUcsSUFBSSxhQUFhLEVBQWlCLENBQUM7UUFFNUQ7OztXQUdHO1FBQ0ksWUFBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0FvQnJEO0lBbEJDOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsTUFBcUI7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7OEdBNUJVLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFncmFtQ29uZmlnIH0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBBIHByb3ZpZGVyIGZvciB0aGUge0BsaW5rIERpYWdyYW1Db25maWd9IGFzc29jaWF0ZWQgd2l0aCBhIHtAbGluayBEaWFncmFtQ29tcG9uZW50fSBjb250ZXh0LlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgX2NvbmZpZyE6IERpYWdyYW1Db25maWc7XHJcblxyXG4gIHByaXZhdGUgY29uZmlnU3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDxEaWFncmFtQ29uZmlnPigpO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHVzZWQgdG8gdHJhY2sgd2hlbiB0aGUgZGlhZ3JhbSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25maWckID0gdGhpcy5jb25maWdTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBkaWFncmFtIGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBjb250ZXh0LlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIGNvbmZpZyBBIGRpYWdyYW0gY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBpbml0KGNvbmZpZzogRGlhZ3JhbUNvbmZpZykge1xyXG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gICAgdGhpcy5jb25maWdTdWJqZWN0JC5uZXh0KGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgZGlhZ3JhbSBjb25maWd1cmF0aW9uIG9mIHRoaXMgY29udGV4dC5cclxuICAgKiBAcHVibGljXHJcbiAgICogQHJldHVybnMgQSBkaWFncmFtIGNvbmZpZ3VyYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0Q29uZmlnKCk6IERpYWdyYW1Db25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcclxuICB9XHJcbn1cclxuIl19","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { ApplyLayoutAction, Corner, DiagramActions, getLocationsOfNodes, layouts, Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { CanvasProviderService } from '../services/canvas-provider.service';\nimport { DagaConfigurationService } from '../services/daga-configuration.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Buttons used to trigger diagram functionalities by the user.\n * @private\n */\nexport class DiagramButtonsComponent {\n constructor() {\n this.#canvasProvider = inject(CanvasProviderService);\n this.#configService = inject(DagaConfigurationService);\n this.enableAction = true;\n this.enableFilter = false;\n this.enableLayout = false;\n this.enableSelection = true;\n this.enableZoom = true;\n this.filterOn = false;\n this.collapsed = true;\n this.animationOngoing = false;\n this.DiagramActions = DiagramActions;\n }\n #canvasProvider;\n #configService;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n ngOnInit() {\n this.sub = this.#configService.config$.subscribe((c) => {\n this.init(c);\n });\n }\n ngAfterViewInit() {\n this.recalculateSizeOfButtons();\n }\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n init(config) {\n this.filterOn = false;\n this.collapsed = true;\n this.animationOngoing = false;\n this.location = config.components?.buttons?.location || Corner.BottomRight;\n this.direction = config.components?.buttons?.direction || Side.Top;\n this.enableAction = config.components?.buttons?.enableAction !== false;\n this.enableFilter = config.components?.buttons?.enableFilter === true;\n this.enableLayout = config.components?.buttons?.enableLayout === true;\n this.enableSelection =\n config.components?.buttons?.enableSelection !== false;\n this.enableZoom = config.components?.buttons?.enableZoom !== false;\n switch (this.direction) {\n case Side.Bottom:\n this.sizeAttribute = 'height';\n this.transformFunction = 'scaleY';\n this.transformOrigin = 'top';\n this.marginSide = 'bottom';\n break;\n case Side.Top:\n this.sizeAttribute = 'height';\n this.transformFunction = 'scaleY';\n this.transformOrigin = 'bottom';\n this.marginSide = 'top';\n break;\n case Side.Left:\n this.sizeAttribute = 'width';\n this.transformFunction = 'scaleX';\n this.transformOrigin = 'right';\n this.marginSide = 'left';\n break;\n case Side.Right:\n this.sizeAttribute = 'width';\n this.transformFunction = 'scaleX';\n this.transformOrigin = 'left';\n this.marginSide = 'right';\n break;\n }\n this.recalculateSizeOfButtons();\n }\n recalculateSizeOfButtons() {\n if (this.collapsableButtons) {\n const numberOfCollapsableButtons = (this.enableZoom &&\n this.canvas.canUserPerformAction(DiagramActions.Zoom)\n ? 1\n : 0) +\n (this.enableAction ? 2 : 0) +\n (this.enableSelection ? 5 : 0) +\n (this.enableLayout ? 1 : 0) +\n (this.enableFilter ? 1 : 0);\n this.collapsableButtonsSize = `${4 * numberOfCollapsableButtons}rem`;\n d3.select(this.collapsableButtons.nativeElement)\n .style(`margin-${this.marginSide}`, '-1rem')\n .style(this.sizeAttribute, '0rem')\n .style('transform', `${this.transformFunction}(0)`)\n .style('transform-origin', this.transformOrigin);\n }\n }\n // Collapse functions\n async toggleCollapse() {\n if (!this.animationOngoing) {\n const duration = 500;\n const collapsableButtons = d3.select(this.collapsableButtons.nativeElement);\n if (this.collapsed) {\n this.collapsed = false;\n collapsableButtons\n .transition()\n .duration(duration)\n .ease(d3.easeLinear)\n .style(this.sizeAttribute, this.collapsableButtonsSize)\n .style('transform', `${this.transformFunction}(1)`);\n setTimeout(() => {\n this.animationOngoing = false;\n }, duration);\n }\n else {\n this.collapsed = true;\n collapsableButtons\n .transition()\n .duration(duration)\n .ease(d3.easeLinear)\n .style(this.sizeAttribute, '0rem')\n .style('transform', `${this.transformFunction}(0)`);\n setTimeout(() => {\n this.animationOngoing = false;\n }, duration);\n }\n }\n }\n // Button functions\n zoomIn() {\n this.canvas.zoomBy(this.canvas.zoomFactor);\n }\n zoomOut() {\n this.canvas.zoomBy(1 / this.canvas.zoomFactor);\n }\n center() {\n this.canvas.center();\n }\n layout() {\n if (this.canvas.layoutFormat && this.canvas.layoutFormat in layouts) {\n const from = getLocationsOfNodes(this.canvas.model);\n layouts[this.canvas.layoutFormat].apply(this.canvas.model);\n const to = getLocationsOfNodes(this.canvas.model);\n const action = new ApplyLayoutAction(this.canvas, from, to);\n this.canvas.actionStack.add(action);\n }\n }\n filter() {\n this.filterOn = !this.filterOn;\n const priorityThresholds = this.canvas.getPriorityThresholdOptions();\n if (priorityThresholds && priorityThresholds.length >= 2) {\n this.canvas.setPriorityThreshold(priorityThresholds[this.filterOn ? 1 : 0]);\n }\n }\n undo() {\n this.canvas.actionStack.undo();\n }\n redo() {\n this.canvas.actionStack.redo();\n }\n copySelection() {\n this.canvas.userSelection.copyToClipboard();\n }\n cutSelection() {\n this.canvas.userSelection.cutToClipboard();\n }\n pasteSelection() {\n this.canvas.userSelection.pasteFromClipboard();\n }\n deleteSelection() {\n this.canvas.userSelection.removeFromModel();\n }\n startMultipleSelection() {\n this.canvas.multipleSelectionOn = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DiagramButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: DiagramButtonsComponent, isStandalone: true, selector: \"daga-diagram-buttons\", inputs: { location: \"location\", direction: \"direction\", enableAction: \"enableAction\", enableFilter: \"enableFilter\", enableLayout: \"enableLayout\", enableSelection: \"enableSelection\", enableZoom: \"enableZoom\" }, viewQueries: [{ propertyName: \"collapsableButtons\", first: true, predicate: [\"collapsableButtons\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"daga-diagram-buttons daga-{{ location }} daga-{{ direction }}\\\">\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-zoom-in\\\"\\r\\n (click)=\\\"zoomIn()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Zoom in</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-zoom-out\\\"\\r\\n (click)=\\\"zoomOut()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Zoom out</span>\\r\\n </button>\\r\\n }\\r\\n <div #collapsableButtons class=\\\"daga-collapsable-buttons daga-collapsed\\\">\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-center\\\"\\r\\n (click)=\\\"center()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Fit diagram to screen</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableAction) {\\r\\n <button class=\\\"daga-undo\\\" (click)=\\\"undo()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Undo</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableAction) {\\r\\n <button class=\\\"daga-redo\\\" (click)=\\\"redo()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Redo</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button class=\\\"daga-copy\\\" (click)=\\\"copySelection()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Copy</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button class=\\\"daga-cut\\\" (click)=\\\"cutSelection()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Cut</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-multiple-selection\\\"\\r\\n [class]=\\\"canvas.multipleSelectionOn ? 'daga-on' : 'daga-off'\\\"\\r\\n (click)=\\\"startMultipleSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Multiple selection</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-paste\\\"\\r\\n (click)=\\\"pasteSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Paste</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-delete\\\"\\r\\n (click)=\\\"deleteSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Delete</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableLayout) {\\r\\n <button class=\\\"daga-layout\\\" (click)=\\\"layout()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Apply layout</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableFilter) {\\r\\n <button\\r\\n class=\\\"daga-filter\\\"\\r\\n [class]=\\\"filterOn ? 'daga-on' : 'daga-off'\\\"\\r\\n (click)=\\\"filter()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Apply filter</span>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-more-options\\\" (click)=\\\"toggleCollapse()\\\">\\r\\n @if (!collapsed) {\\r\\n <span class=\\\"daga-tooltip\\\">Less options</span>\\r\\n }\\r\\n @if (collapsed) {\\r\\n <span class=\\\"daga-tooltip\\\">More options</span>\\r\\n }\\r\\n </button>\\r\\n</div>\\r\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DiagramButtonsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-diagram-buttons', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"daga-diagram-buttons daga-{{ location }} daga-{{ direction }}\\\">\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-zoom-in\\\"\\r\\n (click)=\\\"zoomIn()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Zoom in</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-zoom-out\\\"\\r\\n (click)=\\\"zoomOut()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Zoom out</span>\\r\\n </button>\\r\\n }\\r\\n <div #collapsableButtons class=\\\"daga-collapsable-buttons daga-collapsed\\\">\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-center\\\"\\r\\n (click)=\\\"center()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Fit diagram to screen</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableAction) {\\r\\n <button class=\\\"daga-undo\\\" (click)=\\\"undo()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Undo</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableAction) {\\r\\n <button class=\\\"daga-redo\\\" (click)=\\\"redo()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Redo</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button class=\\\"daga-copy\\\" (click)=\\\"copySelection()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Copy</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button class=\\\"daga-cut\\\" (click)=\\\"cutSelection()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Cut</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-multiple-selection\\\"\\r\\n [class]=\\\"canvas.multipleSelectionOn ? 'daga-on' : 'daga-off'\\\"\\r\\n (click)=\\\"startMultipleSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Multiple selection</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-paste\\\"\\r\\n (click)=\\\"pasteSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Paste</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-delete\\\"\\r\\n (click)=\\\"deleteSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Delete</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableLayout) {\\r\\n <button class=\\\"daga-layout\\\" (click)=\\\"layout()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Apply layout</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableFilter) {\\r\\n <button\\r\\n class=\\\"daga-filter\\\"\\r\\n [class]=\\\"filterOn ? 'daga-on' : 'daga-off'\\\"\\r\\n (click)=\\\"filter()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Apply filter</span>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-more-options\\\" (click)=\\\"toggleCollapse()\\\">\\r\\n @if (!collapsed) {\\r\\n <span class=\\\"daga-tooltip\\\">Less options</span>\\r\\n }\\r\\n @if (collapsed) {\\r\\n <span class=\\\"daga-tooltip\\\">More options</span>\\r\\n }\\r\\n </button>\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { collapsableButtons: [{\n type: ViewChild,\n args: ['collapsableButtons']\n }], location: [{\n type: Input\n }], direction: [{\n type: Input\n }], enableAction: [{\n type: Input\n }], enableFilter: [{\n type: Input\n }], enableLayout: [{\n type: Input\n }], enableSelection: [{\n type: Input\n }], enableZoom: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvZGlhZ3JhbS1idXR0b25zL2RpYWdyYW0tYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2RpYWdyYW0tYnV0dG9ucy9kaWFncmFtLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsTUFBTSxFQUNOLGNBQWMsRUFHZCxtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFbEY7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQVFFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEQsbUJBQWMsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQWFsRCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUVwQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FB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Qiw0WkNwQ3BDLG9oR0ErRkE7OzJGRDNEYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUVmLHVCQUF1QixDQUFDLE1BQU07OEJBYS9DLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRy9CLFFBQVE7c0JBRFAsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixZQUFZO3NCQURYLEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBcHBseUxheW91dEFjdGlvbixcclxuICBDYW52YXMsXHJcbiAgQ29ybmVyLFxyXG4gIERpYWdyYW1BY3Rpb25zLFxyXG4gIERpYWdyYW1CdXR0b25zLFxyXG4gIERpYWdyYW1Db25maWcsXHJcbiAgZ2V0TG9jYXRpb25zT2ZOb2RlcyxcclxuICBsYXlvdXRzLFxyXG4gIFNpZGVcclxufSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYWdhLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQnV0dG9ucyB1c2VkIHRvIHRyaWdnZXIgZGlhZ3JhbSBmdW5jdGlvbmFsaXRpZXMgYnkgdGhlIHVzZXIuXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2EtZGlhZ3JhbS1idXR0b25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhZ3JhbS1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIERpYWdyYW1CdXR0b25zLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgI2NhbnZhc1Byb3ZpZGVyID0gaW5qZWN0KENhbnZhc1Byb3ZpZGVyU2VydmljZSk7XHJcbiAgI2NvbmZpZ1NlcnZpY2UgPSBpbmplY3QoRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcclxuXHJcbiAgZ2V0IGNhbnZhcygpOiBDYW52YXMge1xyXG4gICAgcmV0dXJuIHRoaXMuI2NhbnZhc1Byb3ZpZGVyLmdldENhbnZhcygpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnY29sbGFwc2FibGVCdXR0b25zJylcclxuICBjb2xsYXBzYWJsZUJ1dHRvbnMhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBASW5wdXQoKVxyXG4gIGxvY2F0aW9uITogQ29ybmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgZGlyZWN0aW9uITogU2lkZTtcclxuICBASW5wdXQoKVxyXG4gIGVuYWJsZUFjdGlvbiA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBlbmFibGVGaWx0ZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGVuYWJsZUxheW91dCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgZW5hYmxlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKVxyXG4gIGVuYWJsZVpvb20gPSB0cnVlO1xyXG5cclxuICBmaWx0ZXJPbiA9IGZhbHNlO1xyXG4gIGNvbGxhcHNlZCA9IHRydWU7XHJcbiAgYW5pbWF0aW9uT25nb2luZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc2l6ZUF0dHJpYnV0ZSE6IHN0cmluZztcclxuICBwcml2YXRlIHRyYW5zZm9ybUZ1bmN0aW9uITogc3RyaW5nO1xyXG4gIHByaXZhdGUgdHJhbnNmb3JtT3JpZ2luITogc3RyaW5nO1xyXG4gIHByaXZhdGUgbWFyZ2luU2lkZSE6IHN0cmluZztcclxuICBwcml2YXRlIGNvbGxhcHNhYmxlQnV0dG9uc1NpemUhOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgc3ViPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBEaWFncmFtQWN0aW9ucyA9IERpYWdyYW1BY3Rpb25zO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3ViID0gdGhpcy4jY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICB0aGlzLmluaXQoYyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMucmVjYWxjdWxhdGVTaXplT2ZCdXR0b25zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3ViPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdChjb25maWc6IERpYWdyYW1Db25maWcpIHtcclxuICAgIHRoaXMuZmlsdGVyT24gPSBmYWxzZTtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuYW5pbWF0aW9uT25nb2luZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2NhdGlvbiA9IGNvbmZpZy5jb21wb25lbnRzPy5idXR0b25zPy5sb2NhdGlvbiB8fCBDb3JuZXIuQm90dG9tUmlnaHQ7XHJcbiAgICB0aGlzLmRpcmVjdGlvbiA9IGNvbmZpZy5jb21wb25lbnRzPy5idXR0b25zPy5kaXJlY3Rpb24gfHwgU2lkZS5Ub3A7XHJcbiAgICB0aGlzLmVuYWJsZUFjdGlvbiA9IGNvbmZpZy5jb21wb25lbnRzPy5idXR0b25zPy5lbmFibGVBY3Rpb24gIT09IGZhbHNlO1xyXG4gICAgdGhpcy5lbmFibGVGaWx0ZXIgPSBjb25maWcuY29tcG9uZW50cz8uYnV0dG9ucz8uZW5hYmxlRmlsdGVyID09PSB0cnVlO1xyXG4gICAgdGhpcy5lbmFibGVMYXlvdXQgPSBjb25maWcuY29tcG9uZW50cz8uYnV0dG9ucz8uZW5hYmxlTGF5b3V0ID09PSB0cnVlO1xyXG4gICAgdGhpcy5lbmFibGVTZWxlY3Rpb24gPVxyXG4gICAgICBjb25maWcuY29tcG9uZW50cz8uYnV0dG9ucz8uZW5hYmxlU2VsZWN0aW9uICE9PSBmYWxzZTtcclxuICAgIHRoaXMuZW5hYmxlWm9vbSA9IGNvbmZpZy5jb21wb25lbnRzPy5idXR0b25zPy5lbmFibGVab29tICE9PSBmYWxzZTtcclxuICAgIHN3aXRjaCAodGhpcy5kaXJlY3Rpb24pIHtcclxuICAgICAgY2FzZSBTaWRlLkJvdHRvbTpcclxuICAgICAgICB0aGlzLnNpemVBdHRyaWJ1dGUgPSAnaGVpZ2h0JztcclxuICAgICAgICB0aGlzLnRyYW5zZm9ybUZ1bmN0aW9uID0gJ3NjYWxlWSc7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1PcmlnaW4gPSAndG9wJztcclxuICAgICAgICB0aGlzLm1hcmdpblNpZGUgPSAnYm90dG9tJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaWRlLlRvcDpcclxuICAgICAgICB0aGlzLnNpemVBdHRyaWJ1dGUgPSAnaGVpZ2h0JztcclxuICAgICAgICB0aGlzLnRyYW5zZm9ybUZ1bmN0aW9uID0gJ3NjYWxlWSc7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1PcmlnaW4gPSAnYm90dG9tJztcclxuICAgICAgICB0aGlzLm1hcmdpblNpZGUgPSAndG9wJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaWRlLkxlZnQ6XHJcbiAgICAgICAgdGhpcy5zaXplQXR0cmlidXRlID0gJ3dpZHRoJztcclxuICAgICAgICB0aGlzLnRyYW5zZm9ybUZ1bmN0aW9uID0gJ3NjYWxlWCc7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1PcmlnaW4gPSAncmlnaHQnO1xyXG4gICAgICAgIHRoaXMubWFyZ2luU2lkZSA9ICdsZWZ0JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaWRlLlJpZ2h0OlxyXG4gICAgICAgIHRoaXMuc2l6ZUF0dHJpYnV0ZSA9ICd3aWR0aCc7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1GdW5jdGlvbiA9ICdzY2FsZVgnO1xyXG4gICAgICAgIHRoaXMudHJhbnNmb3JtT3JpZ2luID0gJ2xlZnQnO1xyXG4gICAgICAgIHRoaXMubWFyZ2luU2lkZSA9ICdyaWdodCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlY2FsY3VsYXRlU2l6ZU9mQnV0dG9ucygpO1xyXG4gIH1cclxuXHJcbiAgcmVjYWxjdWxhdGVTaXplT2ZCdXR0b25zKCkge1xyXG4gICAgaWYgKHRoaXMuY29sbGFwc2FibGVCdXR0b25zKSB7XHJcbiAgICAgIGNvbnN0IG51bWJlck9mQ29sbGFwc2FibGVCdXR0b25zID1cclxuICAgICAgICAodGhpcy5lbmFibGVab29tICYmXHJcbiAgICAgICAgdGhpcy5jYW52YXMuY2FuVXNlclBlcmZvcm1BY3Rpb24oRGlhZ3JhbUFjdGlvbnMuWm9vbSlcclxuICAgICAgICAgID8gMVxyXG4gICAgICAgICAgOiAwKSArXHJcbiAgICAgICAgKHRoaXMuZW5hYmxlQWN0aW9uID8gMiA6IDApICtcclxuICAgICAgICAodGhpcy5lbmFibGVTZWxlY3Rpb24gPyA1IDogMCkgK1xyXG4gICAgICAgICh0aGlzLmVuYWJsZUxheW91dCA/IDEgOiAwKSArXHJcbiAgICAgICAgKHRoaXMuZW5hYmxlRmlsdGVyID8gMSA6IDApO1xyXG4gICAgICB0aGlzLmNvbGxhcHNhYmxlQnV0dG9uc1NpemUgPSBgJHs0ICogbnVtYmVyT2ZDb2xsYXBzYWJsZUJ1dHRvbnN9cmVtYDtcclxuICAgICAgZDMuc2VsZWN0KHRoaXMuY29sbGFwc2FibGVCdXR0b25zLm5hdGl2ZUVsZW1lbnQpXHJcbiAgICAgICAgLnN0eWxlKGBtYXJnaW4tJHt0aGlzLm1hcmdpblNpZGV9YCwgJy0xcmVtJylcclxuICAgICAgICAuc3R5bGUodGhpcy5zaXplQXR0cmlidXRlLCAnMHJlbScpXHJcbiAgICAgICAgLnN0eWxlKCd0cmFuc2Zvcm0nLCBgJHt0aGlzLnRyYW5zZm9ybUZ1bmN0aW9ufSgwKWApXHJcbiAgICAgICAgLnN0eWxlKCd0cmFuc2Zvcm0tb3JpZ2luJywgdGhpcy50cmFuc2Zvcm1PcmlnaW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQ29sbGFwc2UgZnVuY3Rpb25zXHJcblxyXG4gIGFzeW5jIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgaWYgKCF0aGlzLmFuaW1hdGlvbk9uZ29pbmcpIHtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSA1MDA7XHJcbiAgICAgIGNvbnN0IGNvbGxhcHNhYmxlQnV0dG9ucyA9IGQzLnNlbGVjdChcclxuICAgICAgICB0aGlzLmNvbGxhcHNhYmxlQnV0dG9ucy5uYXRpdmVFbGVtZW50XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgICAgY29sbGFwc2FibGVCdXR0b25zXHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAuZHVyYXRpb24oZHVyYXRpb24pXHJcbiAgICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxyXG4gICAgICAgICAgLnN0eWxlKHRoaXMuc2l6ZUF0dHJpYnV0ZSwgdGhpcy5jb2xsYXBzYWJsZUJ1dHRvbnNTaXplKVxyXG4gICAgICAgICAgLnN0eWxlKCd0cmFuc2Zvcm0nLCBgJHt0aGlzLnRyYW5zZm9ybUZ1bmN0aW9ufSgxKWApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbmltYXRpb25PbmdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSwgZHVyYXRpb24pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgICBjb2xsYXBzYWJsZUJ1dHRvbnNcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC5kdXJhdGlvbihkdXJhdGlvbilcclxuICAgICAgICAgIC5lYXNlKGQzLmVhc2VMaW5lYXIpXHJcbiAgICAgICAgICAuc3R5bGUodGhpcy5zaXplQXR0cmlidXRlLCAnMHJlbScpXHJcbiAgICAgICAgICAuc3R5bGUoJ3RyYW5zZm9ybScsIGAke3RoaXMudHJhbnNmb3JtRnVuY3Rpb259KDApYCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFuaW1hdGlvbk9uZ29pbmcgPSBmYWxzZTtcclxuICAgICAgICB9LCBkdXJhdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEJ1dHRvbiBmdW5jdGlvbnNcclxuXHJcbiAgem9vbUluKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMuem9vbUJ5KHRoaXMuY2FudmFzLnpvb21GYWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgem9vbU91dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FudmFzLnpvb21CeSgxIC8gdGhpcy5jYW52YXMuem9vbUZhY3Rvcik7XHJcbiAgfVxyXG5cclxuICBjZW50ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy5jZW50ZXIoKTtcclxuICB9XHJcblxyXG4gIGxheW91dCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhbnZhcy5sYXlvdXRGb3JtYXQgJiYgdGhpcy5jYW52YXMubGF5b3V0Rm9ybWF0IGluIGxheW91dHMpIHtcclxuICAgICAgY29uc3QgZnJvbSA9IGdldExvY2F0aW9uc09mTm9kZXModGhpcy5jYW52YXMubW9kZWwpO1xyXG4gICAgICBsYXlvdXRzW3RoaXMuY2FudmFzLmxheW91dEZvcm1hdF0uYXBwbHkodGhpcy5jYW52YXMubW9kZWwpO1xyXG4gICAgICBjb25zdCB0byA9IGdldExvY2F0aW9uc09mTm9kZXModGhpcy5jYW52YXMubW9kZWwpO1xyXG4gICAgICBjb25zdCBhY3Rpb24gPSBuZXcgQXBwbHlMYXlvdXRBY3Rpb24odGhpcy5jYW52YXMsIGZyb20sIHRvKTtcclxuICAgICAgdGhpcy5jYW52YXMuYWN0aW9uU3RhY2suYWRkKGFjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlck9uID0gIXRoaXMuZmlsdGVyT247XHJcbiAgICBjb25zdCBwcmlvcml0eVRocmVzaG9sZHMgPSB0aGlzLmNhbnZhcy5nZXRQcmlvcml0eVRocmVzaG9sZE9wdGlvbnMoKTtcclxuICAgIGlmIChwcmlvcml0eVRocmVzaG9sZHMgJiYgcHJpb3JpdHlUaHJlc2hvbGRzLmxlbmd0aCA+PSAyKSB7XHJcbiAgICAgIHRoaXMuY2FudmFzLnNldFByaW9yaXR5VGhyZXNob2xkKFxyXG4gICAgICAgIHByaW9yaXR5VGhyZXNob2xkc1t0aGlzLmZpbHRlck9uID8gMSA6IDBdXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bmRvKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMuYWN0aW9uU3RhY2sudW5kbygpO1xyXG4gIH1cclxuXHJcbiAgcmVkbygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FudmFzLmFjdGlvblN0YWNrLnJlZG8oKTtcclxuICB9XHJcblxyXG4gIGNvcHlTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy51c2VyU2VsZWN0aW9uLmNvcHlUb0NsaXBib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgY3V0U2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMudXNlclNlbGVjdGlvbi5jdXRUb0NsaXBib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgcGFzdGVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy51c2VyU2VsZWN0aW9uLnBhc3RlRnJvbUNsaXBib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMudXNlclNlbGVjdGlvbi5yZW1vdmVGcm9tTW9kZWwoKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0TXVsdGlwbGVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy5tdWx0aXBsZVNlbGVjdGlvbk9uID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRhZ2EtZGlhZ3JhbS1idXR0b25zIGRhZ2Ete3sgbG9jYXRpb24gfX0gZGFnYS17eyBkaXJlY3Rpb24gfX1cIj5cclxuICBAaWYgKGVuYWJsZVpvb20gJiYgY2FudmFzLmNhblVzZXJQZXJmb3JtQWN0aW9uKERpYWdyYW1BY3Rpb25zLlpvb20pKSB7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiZGFnYS16b29tLWluXCJcclxuICAgICAgKGNsaWNrKT1cInpvb21JbigpXCJcclxuICAgICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPlpvb20gaW48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbiAgQGlmIChlbmFibGVab29tICYmIGNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5ab29tKSkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICBjbGFzcz1cImRhZ2Etem9vbS1vdXRcIlxyXG4gICAgICAoY2xpY2spPVwiem9vbU91dCgpXCJcclxuICAgICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPlpvb20gb3V0PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgfVxyXG4gIDxkaXYgI2NvbGxhcHNhYmxlQnV0dG9ucyBjbGFzcz1cImRhZ2EtY29sbGFwc2FibGUtYnV0dG9ucyBkYWdhLWNvbGxhcHNlZFwiPlxyXG4gICAgQGlmIChlbmFibGVab29tICYmIGNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5ab29tKSkge1xyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJkYWdhLWNlbnRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNlbnRlcigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYWdhLXRvb2x0aXBcIj5GaXQgZGlhZ3JhbSB0byBzY3JlZW48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVBY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtdW5kb1wiIChjbGljayk9XCJ1bmRvKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPlVuZG88L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVBY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtcmVkb1wiIChjbGljayk9XCJyZWRvKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPlJlZG88L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVTZWxlY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtY29weVwiIChjbGljayk9XCJjb3B5U2VsZWN0aW9uKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPkNvcHk8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVTZWxlY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtY3V0XCIgKGNsaWNrKT1cImN1dFNlbGVjdGlvbigpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYWdhLXRvb2x0aXBcIj5DdXQ8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVTZWxlY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiZGFnYS1tdWx0aXBsZS1zZWxlY3Rpb25cIlxyXG4gICAgICAgIFtjbGFzc109XCJjYW52YXMubXVsdGlwbGVTZWxlY3Rpb25PbiA/ICdkYWdhLW9uJyA6ICdkYWdhLW9mZidcIlxyXG4gICAgICAgIChjbGljayk9XCJzdGFydE11bHRpcGxlU2VsZWN0aW9uKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPk11bHRpcGxlIHNlbGVjdGlvbjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgICBAaWYgKGVuYWJsZVNlbGVjdGlvbikge1xyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJkYWdhLXBhc3RlXCJcclxuICAgICAgICAoY2xpY2spPVwicGFzdGVTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGFnYS10b29sdGlwXCI+UGFzdGU8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVTZWxlY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiZGFnYS1kZWxldGVcIlxyXG4gICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGFnYS10b29sdGlwXCI+RGVsZXRlPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICAgIEBpZiAoZW5hYmxlTGF5b3V0KSB7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJkYWdhLWxheW91dFwiIChjbGljayk9XCJsYXlvdXQoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGFnYS10b29sdGlwXCI+QXBwbHkgbGF5b3V0PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICAgIEBpZiAoZW5hYmxlRmlsdGVyKSB7XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImRhZ2EtZmlsdGVyXCJcclxuICAgICAgICBbY2xhc3NdPVwiZmlsdGVyT24gPyAnZGFnYS1vbicgOiAnZGFnYS1vZmYnXCJcclxuICAgICAgICAoY2xpY2spPVwiZmlsdGVyKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPkFwcGx5IGZpbHRlcjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtbW9yZS1vcHRpb25zXCIgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIj5cclxuICAgIEBpZiAoIWNvbGxhcHNlZCkge1xyXG4gICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPkxlc3Mgb3B0aW9uczwvc3Bhbj5cclxuICAgIH1cclxuICAgIEBpZiAoY29sbGFwc2VkKSB7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGFnYS10b29sdGlwXCI+TW9yZSBvcHRpb25zPC9zcGFuPlxyXG4gICAgfVxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, ViewChild } from '@angular/core';\nimport { Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { map, merge } from 'rxjs';\nimport { CollapseButtonComponent } from '../collapse-button/collapse-button.component';\nimport { CanvasProviderService } from '../services/canvas-provider.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Displays the errors detected by a diagram's validators.\n * @private\n * @see DiagramValidator\n */\nexport class ErrorsComponent {\n constructor() {\n this.#canvasProvider = inject(CanvasProviderService);\n this.#cdf = inject(ChangeDetectorRef);\n this.errors = [];\n this.Side = Side;\n }\n #canvasProvider;\n #cdf;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n ngAfterViewInit() {\n this.canvasSub = this.#canvasProvider.canvas$.subscribe((c) => {\n this.updateCanvas(c);\n });\n }\n ngOnDestroy() {\n this.canvasSub?.unsubscribe();\n this.validationSub?.unsubscribe();\n }\n selectPanel() {\n return d3\n .select(this.errorsContainer.nativeElement)\n .select('.daga-error-panel');\n }\n updateCanvas(canvas) {\n this.validationSub?.unsubscribe();\n this.validationSub = merge(canvas.validatorChange$, canvas.diagramChange$)\n .pipe(map(() => this.validate()))\n .subscribe();\n }\n validate() {\n this.errors = [];\n for (const validator of this.canvas.validators) {\n const newErrors = validator.validate(this.canvas.model);\n this.errors = [...this.errors, ...newErrors];\n }\n // need to force detection changes here for some reason...\n this.#cdf.detectChanges();\n }\n showError(error) {\n if (error.elementId &&\n (error.propertyNames === undefined || error.propertyNames.length === 0)) {\n const element = this.canvas.model.nodes.get(error.elementId) ||\n this.canvas.model.connections.get(error.elementId);\n if (element) {\n this.canvas.userHighlight.add(element);\n }\n }\n else if (error.elementId &&\n error.propertyNames !== undefined &&\n error.propertyNames.length > 0) {\n this.canvas.userSelection.openInPropertyEditor(this.canvas.model.nodes.get(error.elementId) ||\n this.canvas.model.connections.get(error.elementId));\n const element = this.canvas.model.nodes.get(error.elementId) ||\n this.canvas.model.connections.get(error.elementId);\n if (element) {\n this.canvas.userHighlight.add(element);\n }\n this.canvas.parentComponent?.propertyEditor?.highlightProperty(...error.propertyNames);\n }\n else if (!error.elementId &&\n error.propertyNames !== undefined &&\n error.propertyNames.length > 0) {\n this.canvas.userSelection.openInPropertyEditor();\n this.canvas.parentComponent?.propertyEditor?.highlightProperty(...error.propertyNames);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: ErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: ErrorsComponent, isStandalone: true, selector: \"daga-errors\", viewQueries: [{ propertyName: \"errorsContainer\", first: true, predicate: [\"errors\"], descendants: true }], ngImport: i0, template: \"<div #errorsContainer class=\\\"daga-errors\\\">\\r\\n @if (errors.length === 0) {\\r\\n <div\\r\\n class=\\\"daga-errors-summary daga-no-errors daga-prevent-user-select\\\"\\r\\n >\\r\\n <span>No errors found</span>\\r\\n </div>\\r\\n }\\r\\n @if (errors.length > 0) {\\r\\n <div\\r\\n class=\\\"daga-errors-summary daga-with-errors daga-prevent-user-select\\\"\\r\\n >\\r\\n <span>{{ errors.length }} errors found</span>\\r\\n <div class=\\\"daga-collapse-button-container\\\">\\r\\n <daga-collapse-button\\r\\n [collapsableSelector]=\\\"errorsContainer\\\"\\r\\n [collapsableAdditionalSelector]=\\\"'.daga-error-panel'\\\"\\r\\n [direction]=\\\"Side.Top\\\"\\r\\n [rule]=\\\"'display'\\\"\\r\\n [collapsedValue]=\\\"'none'\\\"\\r\\n [visibleValue]=\\\"'block'\\\"\\r\\n />\\r\\n </div>\\r\\n </div>\\r\\n }\\r\\n @if (errors.length > 0) {\\r\\n <div class=\\\"daga-error-panel\\\">\\r\\n <ol>\\r\\n @for (error of errors; track error; let i = $index) {\\r\\n <li\\r\\n (click)=\\\"showError(error)\\\"\\r\\n [innerHTML]=\\\"error.message\\\"\\r\\n ></li>\\r\\n }\\r\\n </ol>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n\", dependencies: [{ kind: \"component\", type: CollapseButtonComponent, selector: \"daga-collapse-button\", inputs: [\"collapsableSelector\", \"collapsableAdditionalSelector\", \"collapsed\", \"disabled\", \"direction\", \"rule\", \"collapsedValue\", \"visibleValue\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: ErrorsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-errors', imports: [CollapseButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div #errorsContainer class=\\\"daga-errors\\\">\\r\\n @if (errors.length === 0) {\\r\\n <div\\r\\n class=\\\"daga-errors-summary daga-no-errors daga-prevent-user-select\\\"\\r\\n >\\r\\n <span>No errors found</span>\\r\\n </div>\\r\\n }\\r\\n @if (errors.length > 0) {\\r\\n <div\\r\\n class=\\\"daga-errors-summary daga-with-errors daga-prevent-user-select\\\"\\r\\n >\\r\\n <span>{{ errors.length }} errors found</span>\\r\\n <div class=\\\"daga-collapse-button-container\\\">\\r\\n <daga-collapse-button\\r\\n [collapsableSelector]=\\\"errorsContainer\\\"\\r\\n [collapsableAdditionalSelector]=\\\"'.daga-error-panel'\\\"\\r\\n [direction]=\\\"Side.Top\\\"\\r\\n [rule]=\\\"'display'\\\"\\r\\n [collapsedValue]=\\\"'none'\\\"\\r\\n [visibleValue]=\\\"'block'\\\"\\r\\n />\\r\\n </div>\\r\\n </div>\\r\\n }\\r\\n @if (errors.length > 0) {\\r\\n <div class=\\\"daga-error-panel\\\">\\r\\n <ol>\\r\\n @for (error of errors; track error; let i = $index) {\\r\\n <li\\r\\n (click)=\\\"showError(error)\\\"\\r\\n [innerHTML]=\\\"error.message\\\"\\r\\n ></li>\\r\\n }\\r\\n </ol>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n\" }]\n }], propDecorators: { errorsContainer: [{\n type: ViewChild,\n args: ['errors']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvZXJyb3JzL2Vycm9ycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2Vycm9ycy9lcnJvcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFNUU7Ozs7R0FJRztBQU9ILE1BQU0sT0FBTyxlQUFlO0lBTjVCO1FBT0Usb0JBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRCxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFRakMsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFLNUIsU0FBSSxHQUFHLElBQUksQ0FBQztLQTRFYjtJQTFGQyxlQUFlLENBQWlDO0lBQ2hELElBQUksQ0FBNkI7SUFFakMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFXRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxD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Q0FBQyxDQUFDO1lBQ3JELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQzVELEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FDdkIsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUNMLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFDaEIsS0FBSyxDQUFDLGFBQWEsS0FBSyxTQUFTO1lBQ2pDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDOUIsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUM1RCxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQ3ZCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzs4R0ExRlUsZUFBZTtrR0FBZixlQUFlLGtMQzNCNUIsb3NDQXNDQSw0Q0RkWSx1QkFBdUI7OzJGQUd0QixlQUFlO2tCQU4zQixTQUFTOytCQUNFLGFBQWEsV0FFZCxDQUFDLHVCQUF1QixDQUFDLG1CQUNqQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVUxQixlQUFlO3NCQUFuQyxTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FudmFzLCBEaWFncmFtRXJyb3IsIFNpZGUgfSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBtYXAsIG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29sbGFwc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9jb2xsYXBzZS1idXR0b24vY29sbGFwc2UtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbnZhc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NhbnZhcy1wcm92aWRlci5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBEaXNwbGF5cyB0aGUgZXJyb3JzIGRldGVjdGVkIGJ5IGEgZGlhZ3JhbSdzIHZhbGlkYXRvcnMuXHJcbiAqIEBwcml2YXRlXHJcbiAqIEBzZWUgRGlhZ3JhbVZhbGlkYXRvclxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYWdhLWVycm9ycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Vycm9ycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgaW1wb3J0czogW0NvbGxhcHNlQnV0dG9uQ29tcG9uZW50XSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXJyb3JzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAjY2FudmFzUHJvdmlkZXIgPSBpbmplY3QoQ2FudmFzUHJvdmlkZXJTZXJ2aWNlKTtcclxuICAjY2RmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgZ2V0IGNhbnZhcygpOiBDYW52YXMge1xyXG4gICAgcmV0dXJuIHRoaXMuI2NhbnZhc1Byb3ZpZGVyLmdldENhbnZhcygpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZXJyb3JzJykgZXJyb3JzQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIGVycm9yczogRGlhZ3JhbUVycm9yW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjYW52YXNTdWI/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uU3ViPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBTaWRlID0gU2lkZTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXNTdWIgPSB0aGlzLiNjYW52YXNQcm92aWRlci5jYW52YXMkLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNhbnZhcyhjKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhc1N1Yj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMudmFsaWRhdGlvblN1Yj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFBhbmVsKCk6IGQzLlNlbGVjdGlvbjxkMy5CYXNlVHlwZSwgdW5rbm93biwgbnVsbCwgdW5rbm93bj4ge1xyXG4gICAgcmV0dXJuIGQzXHJcbiAgICAgIC5zZWxlY3QodGhpcy5lcnJvcnNDb250YWluZXIubmF0aXZlRWxlbWVudClcclxuICAgICAgLnNlbGVjdCgnLmRhZ2EtZXJyb3ItcGFuZWwnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2FudmFzKGNhbnZhczogQ2FudmFzKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25TdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25TdWIgPSBtZXJnZShjYW52YXMudmFsaWRhdG9yQ2hhbmdlJCwgY2FudmFzLmRpYWdyYW1DaGFuZ2UkKVxyXG4gICAgICAucGlwZShtYXAoKCkgPT4gdGhpcy52YWxpZGF0ZSgpKSlcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKSB7XHJcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdGhpcy5jYW52YXMudmFsaWRhdG9ycykge1xyXG4gICAgICBjb25zdCBuZXdFcnJvcnMgPSB2YWxpZGF0b3IudmFsaWRhdGUodGhpcy5jYW52YXMubW9kZWwpO1xyXG4gICAgICB0aGlzLmVycm9ycyA9IFsuLi50aGlzLmVycm9ycywgLi4ubmV3RXJyb3JzXTtcclxuICAgIH1cclxuICAgIC8vIG5lZWQgdG8gZm9yY2UgZGV0ZWN0aW9uIGNoYW5nZXMgaGVyZSBmb3Igc29tZSByZWFzb24uLi5cclxuICAgIHRoaXMuI2NkZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzaG93RXJyb3IoZXJyb3I6IERpYWdyYW1FcnJvcik6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICBlcnJvci5lbGVtZW50SWQgJiZcclxuICAgICAgKGVycm9yLnByb3BlcnR5TmFtZXMgPT09IHVuZGVmaW5lZCB8fCBlcnJvci5wcm9wZXJ0eU5hbWVzLmxlbmd0aCA9PT0gMClcclxuICAgICkge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID1cclxuICAgICAgICB0aGlzLmNhbnZhcy5tb2RlbC5ub2Rlcy5nZXQoZXJyb3IuZWxlbWVudElkKSB8fFxyXG4gICAgICAgIHRoaXMuY2FudmFzLm1vZGVsLmNvbm5lY3Rpb25zLmdldChlcnJvci5lbGVtZW50SWQpO1xyXG4gICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgIHRoaXMuY2FudmFzLnVzZXJIaWdobGlnaHQuYWRkKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBlcnJvci5lbGVtZW50SWQgJiZcclxuICAgICAgZXJyb3IucHJvcGVydHlOYW1lcyAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIGVycm9yLnByb3BlcnR5TmFtZXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2FudmFzLnVzZXJTZWxlY3Rpb24ub3BlbkluUHJvcGVydHlFZGl0b3IoXHJcbiAgICAgICAgdGhpcy5jYW52YXMubW9kZWwubm9kZXMuZ2V0KGVycm9yLmVsZW1lbnRJZCkgfHxcclxuICAgICAgICAgIHRoaXMuY2FudmFzLm1vZGVsLmNvbm5lY3Rpb25zLmdldChlcnJvci5lbGVtZW50SWQpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPVxyXG4gICAgICAgIHRoaXMuY2FudmFzLm1vZGVsLm5vZGVzLmdldChlcnJvci5lbGVtZW50SWQpIHx8XHJcbiAgICAgICAgdGhpcy5jYW52YXMubW9kZWwuY29ubmVjdGlvbnMuZ2V0KGVycm9yLmVsZW1lbnRJZCk7XHJcbiAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5jYW52YXMudXNlckhpZ2hsaWdodC5hZGQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jYW52YXMucGFyZW50Q29tcG9uZW50Py5wcm9wZXJ0eUVkaXRvcj8uaGlnaGxpZ2h0UHJvcGVydHkoXHJcbiAgICAgICAgLi4uZXJyb3IucHJvcGVydHlOYW1lc1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgIWVycm9yLmVsZW1lbnRJZCAmJlxyXG4gICAgICBlcnJvci5wcm9wZXJ0eU5hbWVzICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgZXJyb3IucHJvcGVydHlOYW1lcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jYW52YXMudXNlclNlbGVjdGlvbi5vcGVuSW5Qcm9wZXJ0eUVkaXRvcigpO1xyXG4gICAgICB0aGlzLmNhbnZhcy5wYXJlbnRDb21wb25lbnQ/LnByb3BlcnR5RWRpdG9yPy5oaWdobGlnaHRQcm9wZXJ0eShcclxuICAgICAgICAuLi5lcnJvci5wcm9wZXJ0eU5hbWVzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2Vycm9yc0NvbnRhaW5lciBjbGFzcz1cImRhZ2EtZXJyb3JzXCI+XHJcbiAgQGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZGFnYS1lcnJvcnMtc3VtbWFyeSBkYWdhLW5vLWVycm9ycyBkYWdhLXByZXZlbnQtdXNlci1zZWxlY3RcIlxyXG4gICAgICA+XHJcbiAgICAgIDxzcGFuPk5vIGVycm9ycyBmb3VuZDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICBAaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZGFnYS1lcnJvcnMtc3VtbWFyeSBkYWdhLXdpdGgtZXJyb3JzIGRhZ2EtcHJldmVudC11c2VyLXNlbGVjdFwiXHJcbiAgICAgID5cclxuICAgICAgPHNwYW4+e3sgZXJyb3JzLmxlbmd0aCB9fSBlcnJvcnMgZm91bmQ8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWNvbGxhcHNlLWJ1dHRvbi1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGFnYS1jb2xsYXBzZS1idXR0b25cclxuICAgICAgICAgIFtjb2xsYXBzYWJsZVNlbGVjdG9yXT1cImVycm9yc0NvbnRhaW5lclwiXHJcbiAgICAgICAgICBbY29sbGFwc2FibGVBZGRpdGlvbmFsU2VsZWN0b3JdPVwiJy5kYWdhLWVycm9yLXBhbmVsJ1wiXHJcbiAgICAgICAgICBbZGlyZWN0aW9uXT1cIlNpZGUuVG9wXCJcclxuICAgICAgICAgIFtydWxlXT1cIidkaXNwbGF5J1wiXHJcbiAgICAgICAgICBbY29sbGFwc2VkVmFsdWVdPVwiJ25vbmUnXCJcclxuICAgICAgICAgIFt2aXNpYmxlVmFsdWVdPVwiJ2Jsb2NrJ1wiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtZXJyb3ItcGFuZWxcIj5cclxuICAgICAgICA8b2w+XHJcbiAgICAgICAgICBAZm9yIChlcnJvciBvZiBlcnJvcnM7IHRyYWNrIGVycm9yOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0Vycm9yKGVycm9yKVwiXHJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJlcnJvci5tZXNzYWdlXCJcclxuICAgICAgICAgICAgPjwvbGk+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9vbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiJdfQ==","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { AddNodeAction, Corner, CursorStyle, DIAGRAM_FIELD_DEFAULTS, DiagramActions, DragEvents, Events, filterByOnlyDescendants, generalClosedPath, getLeftMargin, getTopMargin, setCursorStyle, Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { CollapseButtonComponent } from '../collapse-button/collapse-button.component';\nimport { CanvasProviderService } from '../services/canvas-provider.service';\nimport { DagaConfigurationService } from '../services/daga-configuration.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Distance in pixels by which labels must be shifted in order to be centered properly.\n */\nconst LABEL_VERTICAL_SHIFT_PX = 6;\n/**\n * Palette that the user can drag and drop nodes from.\n * @private\n * @see DiagramConfig\n * @see DiagramNode\n */\nexport class PaletteComponent {\n constructor() {\n this.#canvasProvider = inject(CanvasProviderService);\n this.#configService = inject(DagaConfigurationService);\n this.currentCategory = '';\n }\n #canvasProvider;\n #configService;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n ngOnInit() {\n /*\n reload using the canvas observable instead of the config one\n because we're getting the type info from the model, not the configuration\n */\n this.sub = this.#canvasProvider.canvas$.subscribe(() => {\n this.init(this.#configService.getConfig());\n });\n }\n ngAfterViewInit() {\n this.refreshPalette();\n switch (this.direction) {\n case Side.Bottom:\n case Side.Top:\n this.selectPanel()\n .style('width', this.width)\n .select('.daga-palette-view')\n .style('flex-direction', 'row');\n break;\n case Side.Left:\n case Side.Right:\n this.selectPanel()\n .style('height', this.width)\n .select('.daga-palette-view')\n .style('flex-direction', 'column');\n break;\n }\n this.selectPanel()\n .select('.daga-palette-view')\n .style('flex-wrap', 'wrap')\n .style('justify-content', 'center')\n .style('gap', this.gap);\n }\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n init(config) {\n this.location = config.components?.palette?.location || Corner.TopLeft;\n this.direction = config.components?.palette?.direction || Side.Bottom;\n this.width = config.components?.palette?.width || '12rem';\n this.gap = config.components?.palette?.gap || '1rem';\n this.palettes = config.components?.palette?.sections || [];\n this.currentPalette = this.palettes[0];\n this.refreshPalette();\n }\n refreshPalette() {\n this.switchPalette(this.currentPalette);\n }\n switchPalette(palette) {\n this.currentPalette = palette;\n if (this.panel !== undefined) {\n this.selectPalette().selectAll('*').remove();\n this.priorityThreshold = this.canvas.getPriorityThreshold();\n if (palette.categories) {\n this.appendCategories(palette.categories);\n }\n if (palette.templates) {\n for (const template of palette.templates) {\n this.appendTemplate(template);\n }\n }\n }\n }\n selectPanel() {\n return d3.select(this.panel.nativeElement);\n }\n selectPalette() {\n return this.selectPanel().select('.daga-palette-view');\n }\n appendCategories(categories) {\n const thisComponent = this.selectPalette()\n .append('select')\n .style('width', '100%')\n .style('height', '2rem')\n .style('padding', '0.5rem')\n .style('border-radius', '0.25rem')\n .style('background-color', '#f7f8fc')\n .style('border', `1px solid #e6e6e6`);\n thisComponent.append('option').attr('value', '').text('(None selected)');\n for (const categoryKey in categories) {\n thisComponent\n .append('option')\n .attr('value', categoryKey)\n .text(categoryKey);\n }\n thisComponent.on(Events.Change, () => {\n if (this.currentCategory) {\n this.selectPalette()\n .selectAll(`.daga-template-container.daga-in-category`)\n .remove();\n }\n const selectedKey = thisComponent.property('value');\n this.currentCategory = selectedKey;\n const templatesInCategory = categories[selectedKey] || [];\n for (const template of templatesInCategory) {\n this.appendTemplate(template, 'daga-in-category');\n }\n });\n if (this.currentCategory) {\n // if we had a category already selected, re-select it\n thisComponent.property('value', this.currentCategory);\n thisComponent.dispatch(Events.Change);\n }\n }\n appendTemplate(template, classes) {\n if (template.templateType === 'node') {\n const nodeType = this.canvas.model.nodes.types.get(template.type);\n if (nodeType) {\n this.appendNodeTemplate(nodeType, template, classes);\n }\n else {\n console.error(`Could not find a node type called '${template.type}'`);\n }\n }\n else if (template.templateType === 'connection') {\n {\n const connectionType = this.canvas.model.connections.types.get(template.type);\n if (connectionType) {\n this.appendConnectionTemplate(connectionType, template, classes);\n }\n else {\n console.error(`Could not find a connection type called '${template.type}'`);\n }\n }\n }\n }\n appendNodeTemplate(type, templateConfig, classes) {\n if (this.priorityThreshold !== undefined &&\n type.priority < this.priorityThreshold) {\n return;\n }\n const borderThickness = type.defaultLook.lookType === 'shaped-look'\n ? type.defaultLook.borderThickness\n : 0;\n const templateHeight = type.defaultHeight + borderThickness;\n const templateWidth = type.defaultWidth + borderThickness;\n const stretchedTemplateHeight = templateConfig.height || templateHeight;\n const stretchedTemplateWidth = templateConfig.width || templateWidth;\n let thisComponentClone;\n const thisComponent = this.selectPalette()\n .append('div')\n .attr('class', `daga-template-container ${classes !== undefined ? classes : ''}`)\n .style('width', `${stretchedTemplateWidth}px`)\n .style('height', `${stretchedTemplateHeight}px`)\n .on(Events.MouseEnter, () => {\n setCursorStyle(CursorStyle.Grab);\n })\n .on(Events.MouseLeave, () => {\n setCursorStyle();\n })\n .call(d3\n .drag()\n .on(DragEvents.Drag, (event) => {\n if (this.canvas.canUserPerformAction(DiagramActions.AddNode)) {\n const pointerCoords = this.canvas.getPointerLocationRelativeToRoot(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n thisComponentClone\n .style('left', `${pointerCoords[0] - stretchedTemplateWidth / 2}px`)\n .style('top', `${pointerCoords[1] - stretchedTemplateHeight / 2}px`);\n }\n })\n .on(DragEvents.Start, (event) => {\n if (this.canvas.canUserPerformAction(DiagramActions.AddNode)) {\n setCursorStyle(CursorStyle.Grabbing);\n const pointerCoords = this.canvas.getPointerLocationRelativeToRoot(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n const thisComponentNodeCloned = thisComponent\n .node()\n ?.cloneNode(true);\n this.canvas.selectRoot().node().appendChild(thisComponentNodeCloned);\n thisComponentClone = d3.select(thisComponentNodeCloned);\n thisComponentClone\n .style('position', 'absolute')\n .style('left', `${pointerCoords[0] - stretchedTemplateWidth / 2}px`)\n .style('top', `${pointerCoords[1] - stretchedTemplateHeight / 2}px`)\n .style('z-index', 1);\n // when trying to place a unique node in a diagram that already has a node of that type, set cursor style to not allowed\n if (type.isUnique &&\n this.canvas.model.nodes.find((n) => !n.removed && n.type.id === type.id) !== undefined) {\n setCursorStyle(CursorStyle.NotAllowed);\n }\n }\n })\n .on(DragEvents.End, (event) => {\n if (this.canvas.canUserPerformAction(DiagramActions.AddNode)) {\n // take node back to its original position\n setCursorStyle(CursorStyle.Auto);\n thisComponentClone?.remove();\n // try to place node\n if (type.isUnique &&\n this.canvas.model.nodes.find((n) => !n.removed && n.type.id === type.id) !== undefined) {\n // can't place, it's unique and that node is already in the model\n return;\n }\n const pointerCoordsRelativeToScreen = this.canvas.getPointerLocationRelativeToScreen(event);\n if (pointerCoordsRelativeToScreen.length < 2 ||\n isNaN(pointerCoordsRelativeToScreen[0]) ||\n isNaN(pointerCoordsRelativeToScreen[1])) {\n // can't place, position is incorrect\n return;\n }\n const element = document.elementFromPoint(pointerCoordsRelativeToScreen[0], pointerCoordsRelativeToScreen[1]);\n if (element &&\n !this.canvas.selectCanvasView().node()?.contains(element)) {\n // can't place, node hasn't been dropped on the canvas\n return;\n }\n const pointerCoords = this.canvas.getPointerLocationRelativeToCanvas(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n // can't place, position is incorrect\n return;\n }\n let newNodeCoords = [\n pointerCoords[0] - type.defaultWidth / 2,\n pointerCoords[1] - type.defaultHeight / 2\n ];\n if (this.canvas.snapToGrid) {\n newNodeCoords = this.canvas.getClosestGridPoint(newNodeCoords);\n }\n // check whether we dropped this node on a potential parent\n const nodesAtLocation = this.canvas.model.nodes.getAtCoordinates(pointerCoords[0], pointerCoords[1]);\n // filter by which nodes can have this type as a child\n const nodesAtLocationWhichCanHaveNodeAsAChild = nodesAtLocation.filter((n) => n.type.childrenTypes.includes(type.id));\n // filter by which nodes don't have descendants in this collection\n const filteredNodesAtLocation = filterByOnlyDescendants(nodesAtLocationWhichCanHaveNodeAsAChild);\n const droppedOn = filteredNodesAtLocation[filteredNodesAtLocation.length - 1];\n if (!type.canBeParentless && droppedOn === undefined) {\n // can't place, node must have a parent and no suitable parent has been found\n return;\n }\n const ancestor = droppedOn?.getLastAncestor();\n const addNodeAction = new AddNodeAction(this.canvas, type, newNodeCoords, droppedOn?.id, ancestor?.id, ancestor?.getGeometry(), undefined, templateConfig.label, templateConfig.values);\n addNodeAction.do();\n addNodeAction.toAncestorGeometry = ancestor?.getGeometry();\n this.canvas.actionStack.add(addNodeAction);\n // reset cursor\n setCursorStyle();\n }\n }))\n .append('svg')\n .attr('class', `palette-node ${type.id}`)\n .attr('viewBox', `0 0 ${templateWidth} ${templateHeight}`)\n .attr('preserveAspectRatio', 'none')\n .style('position', 'relative')\n .style('left', 0)\n .style('top', 0)\n .style('width', `${stretchedTemplateWidth}px`)\n .style('height', `${stretchedTemplateHeight}px`);\n const nodeLook = templateConfig.look || type.defaultLook;\n switch (nodeLook.lookType) {\n case 'shaped-look':\n thisComponent\n .append('path')\n .attr('d', generalClosedPath(nodeLook.shape, nodeLook.borderThickness / 2, nodeLook.borderThickness / 2, type.defaultWidth, type.defaultHeight))\n .attr('fill', nodeLook.fillColor)\n .attr('stroke', nodeLook.borderColor)\n .attr('stroke-width', `${nodeLook.borderThickness}px`);\n break;\n case 'image-look':\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', type.defaultWidth)\n .attr('height', type.defaultHeight)\n .attr('href', nodeLook.backgroundImage)\n .attr('preserveAspectRatio', 'none');\n break;\n case 'stretchable-image-look':\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', nodeLook.leftMargin)\n .attr('height', nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageTopLeft)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', nodeLook.leftMargin)\n .attr('y', 0)\n .attr('width', type.defaultWidth - nodeLook.rightMargin - nodeLook.leftMargin)\n .attr('height', nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageTop)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', type.defaultWidth - nodeLook.rightMargin)\n .attr('y', 0)\n .attr('width', nodeLook.rightMargin)\n .attr('height', nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageTopRight)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', nodeLook.topMargin)\n .attr('width', nodeLook.leftMargin)\n .attr('height', type.defaultHeight - nodeLook.bottomMargin - nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageLeft)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', nodeLook.leftMargin)\n .attr('y', nodeLook.topMargin)\n .attr('width', type.defaultWidth - nodeLook.rightMargin - nodeLook.leftMargin)\n .attr('height', type.defaultHeight - nodeLook.bottomMargin - nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageCenter)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', type.defaultWidth - nodeLook.rightMargin)\n .attr('y', nodeLook.topMargin)\n .attr('width', nodeLook.rightMargin)\n .attr('height', type.defaultHeight - nodeLook.bottomMargin - nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageRight)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', type.defaultHeight - nodeLook.bottomMargin)\n .attr('width', nodeLook.leftMargin)\n .attr('height', nodeLook.bottomMargin)\n .attr('href', nodeLook.backgroundImageBottomLeft)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', nodeLook.leftMargin)\n .attr('y', type.defaultHeight - nodeLook.bottomMargin)\n .attr('width', type.defaultWidth - nodeLook.rightMargin - nodeLook.leftMargin)\n .attr('height', nodeLook.bottomMargin)\n .attr('href', nodeLook.backgroundImageBottom)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', type.defaultWidth - nodeLook.rightMargin)\n .attr('y', type.defaultHeight - nodeLook.bottomMargin)\n .attr('width', nodeLook.rightMargin)\n .attr('height', nodeLook.bottomMargin)\n .attr('href', nodeLook.backgroundImageBottomRight)\n .attr('preserveAspectRatio', 'none');\n }\n if (templateConfig.look === undefined) {\n if (type.decorators) {\n for (const decoratorConfig of type.decorators) {\n thisComponent\n .append('foreignObject')\n .attr('width', `${decoratorConfig.width}px`)\n .attr('height', `${decoratorConfig.height}px`)\n .attr('transform', `translate(${decoratorConfig.coords[0]},${decoratorConfig.coords[1]})`)\n .html(decoratorConfig.html);\n }\n }\n if (templateConfig.label) {\n const labelConfig = {\n ...DIAGRAM_FIELD_DEFAULTS,\n ...type.label,\n ...templateConfig.labelLook\n };\n thisComponent\n .append('text')\n .attr('transform', `translate(${(getLeftMargin(labelConfig) + type.defaultWidth + borderThickness / 2) / 2},${(getTopMargin(labelConfig) + type.defaultHeight + borderThickness / 2) / 2})`)\n .attr('x', 0)\n .attr('y', 0)\n .attr('font-size', `${labelConfig.fontSize}px`)\n .attr('text-anchor', 'middle')\n .attr('font-family', labelConfig.fontFamily)\n .attr('font-weight', 400)\n .attr('fill', labelConfig.color)\n .attr('stroke', 'none')\n .style('font-kerning', 'none')\n .style('user-select', 'none')\n .text(templateConfig.label);\n }\n }\n }\n appendConnectionTemplate(type, templateConfig, classes) {\n const thisComponent = this.selectPalette()\n .append('div')\n .attr('class', `daga-template-container ${classes !== undefined ? classes : ''}`)\n .style('width', `${templateConfig.width}px`)\n .style('height', `${templateConfig.height}px`)\n .style('cursor', 'pointer')\n .append('svg')\n .attr('class', `palette-button ${type.id}`)\n .style('position', 'relative')\n .style('left', 0)\n .style('top', 0)\n .style('width', '100%')\n .style('height', '100%')\n .on('click', () => {\n this.canvas.connectionType = type;\n });\n if (this.canvas.connectionType !== type) {\n // the connection type of this template is not the currently selected one\n if (templateConfig.icon !== '') {\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', templateConfig.width)\n .attr('height', templateConfig.height)\n .attr('href', templateConfig.icon);\n }\n }\n else {\n // the connection type of this template is the currently selected one\n if (templateConfig.selectedIcon !== '') {\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', templateConfig.width)\n .attr('height', templateConfig.height)\n .attr('href', templateConfig.selectedIcon);\n }\n else if (templateConfig.icon !== '') {\n // if there's no selectedIcon, use the regular icon instead\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', templateConfig.width)\n .attr('height', templateConfig.height)\n .attr('href', templateConfig.icon);\n }\n }\n if (templateConfig.label !== '') {\n thisComponent\n .append('text')\n .attr('transform', `translate(${templateConfig.width / 2},${templateConfig.height / 2 + LABEL_VERTICAL_SHIFT_PX})`)\n .attr('x', 0)\n .attr('y', 0)\n .attr('font-size', '20px')\n .attr('text-anchor', 'middle')\n .attr('font-family', \"'Wonder Unit Sans', sans-serif\")\n .attr('font-weight', 400)\n .attr('fill', '#000000')\n .attr('stroke', 'none')\n .style('font-kerning', 'none')\n .style('user-select', 'none')\n .text(templateConfig.label);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PaletteComponent, isStandalone: true, selector: \"daga-palette\", inputs: { palettes: \"palettes\", currentPalette: \"currentPalette\", currentCategory: \"currentCategory\", location: \"location\", direction: \"direction\", width: \"width\", gap: \"gap\" }, viewQueries: [{ propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], ngImport: i0, template: \"<div #panel class=\\\"daga-panel daga-{{ location }} daga-{{ direction }}\\\">\\r\\n <daga-collapse-button\\r\\n #collapseButton\\r\\n [direction]=\\\"direction\\\"\\r\\n [collapsableSelector]=\\\"panel\\\"\\r\\n collapsableAdditionalSelector=\\\".daga-panel-content\\\"\\r\\n rule=\\\"display\\\"\\r\\n collapsedValue=\\\"none\\\"\\r\\n visibleValue=\\\"block\\\"\\r\\n />\\r\\n <div class=\\\"daga-panel-content\\\">\\r\\n @if (palettes.length > 1) {\\r\\n <div class=\\\"daga-panel-tabs\\\">\\r\\n @for (palette of palettes; track palette) {\\r\\n <div\\r\\n class=\\\"daga-panel-tab\\\"\\r\\n [class]=\\\"palette === currentPalette ? 'daga-current-tab' : ''\\\"\\r\\n (click)=\\\"switchPalette(palette)\\\"\\r\\n >\\r\\n {{ palette.name }}\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n <div class=\\\"daga-palette-view\\\"></div>\\r\\n </div>\\r\\n </div>\\r\\n\", dependencies: [{ kind: \"component\", type: CollapseButtonComponent, selector: \"daga-collapse-button\", inputs: [\"collapsableSelector\", \"collapsableAdditionalSelector\", \"collapsed\", \"disabled\", \"direction\", \"rule\", \"collapsedValue\", \"visibleValue\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PaletteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-palette', imports: [CollapseButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div #panel class=\\\"daga-panel daga-{{ location }} daga-{{ direction }}\\\">\\r\\n <daga-collapse-button\\r\\n #collapseButton\\r\\n [direction]=\\\"direction\\\"\\r\\n [collapsableSelector]=\\\"panel\\\"\\r\\n collapsableAdditionalSelector=\\\".daga-panel-content\\\"\\r\\n rule=\\\"display\\\"\\r\\n collapsedValue=\\\"none\\\"\\r\\n visibleValue=\\\"block\\\"\\r\\n />\\r\\n <div class=\\\"daga-panel-content\\\">\\r\\n @if (palettes.length > 1) {\\r\\n <div class=\\\"daga-panel-tabs\\\">\\r\\n @for (palette of palettes; track palette) {\\r\\n <div\\r\\n class=\\\"daga-panel-tab\\\"\\r\\n [class]=\\\"palette === currentPalette ? 'daga-current-tab' : ''\\\"\\r\\n (click)=\\\"switchPalette(palette)\\\"\\r\\n >\\r\\n {{ palette.name }}\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n <div class=\\\"daga-palette-view\\\"></div>\\r\\n </div>\\r\\n </div>\\r\\n\" }]\n }], propDecorators: { panel: [{\n type: ViewChild,\n args: ['panel']\n }], palettes: [{\n type: Input\n }], currentPalette: [{\n type: Input\n }], currentCategory: [{\n type: Input\n }], location: [{\n type: Input\n }], direction: [{\n type: Input\n }], width: [{\n type: Input\n }], gap: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFsZXR0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3BhbGV0dGUvcGFsZXR0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3BhbGV0dGUvcGFsZXR0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGFBQWEsRUFHYixNQUFNLEVBQ04sV0FBVyxFQUNYLHNCQUFzQixFQUN0QixjQUFjLEVBSWQsVUFBVSxFQUNWLE1BQU0sRUFDTix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBS1osY0FBYyxFQUNkLElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFbEY7O0dBRUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQztBQUVsQzs7Ozs7R0FLRztBQU9ILE1BQU0sT0FBTyxnQkFBZ0I7SUFON0I7UUFTRSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2hELG1CQUFjLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFhbEQsb0JBQWUsR0FBRyxFQUFFLENBQUM7S0F5bUJ0QjtJQXZuQkMsZUFB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bmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWRkTm9kZUFjdGlvbixcclxuICBDYW52YXMsXHJcbiAgQ29ubmVjdGlvblRlbXBsYXRlQ29uZmlnLFxyXG4gIENvcm5lcixcclxuICBDdXJzb3JTdHlsZSxcclxuICBESUFHUkFNX0ZJRUxEX0RFRkFVTFRTLFxyXG4gIERpYWdyYW1BY3Rpb25zLFxyXG4gIERpYWdyYW1Db25maWcsXHJcbiAgRGlhZ3JhbUNvbm5lY3Rpb25UeXBlLFxyXG4gIERpYWdyYW1Ob2RlVHlwZSxcclxuICBEcmFnRXZlbnRzLFxyXG4gIEV2ZW50cyxcclxuICBmaWx0ZXJCeU9ubHlEZXNjZW5kYW50cyxcclxuICBnZW5lcmFsQ2xvc2VkUGF0aCxcclxuICBnZXRMZWZ0TWFyZ2luLFxyXG4gIGdldFRvcE1hcmdpbixcclxuICBOb2RlVGVtcGxhdGVDb25maWcsXHJcbiAgUGFsZXR0ZSxcclxuICBQYWxldHRlU2VjdGlvbkNvbmZpZyxcclxuICBQb2ludCxcclxuICBzZXRDdXJzb3JTdHlsZSxcclxuICBTaWRlXHJcbn0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbGxhcHNlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sbGFwc2UtYnV0dG9uL2NvbGxhcHNlLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYW52YXNQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jYW52YXMtcHJvdmlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERhZ2FDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RhZ2EtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBEaXN0YW5jZSBpbiBwaXhlbHMgYnkgd2hpY2ggbGFiZWxzIG11c3QgYmUgc2hpZnRlZCBpbiBvcmRlciB0byBiZSBjZW50ZXJlZCBwcm9wZXJseS5cclxuICovXHJcbmNvbnN0IExBQkVMX1ZFUlRJQ0FMX1NISUZUX1BYID0gNjtcclxuXHJcbi8qKlxyXG4gKiBQYWxldHRlIHRoYXQgdGhlIHVzZXIgY2FuIGRyYWcgYW5kIGRyb3Agbm9kZXMgZnJvbS5cclxuICogQHByaXZhdGVcclxuICogQHNlZSBEaWFncmFtQ29uZmlnXHJcbiAqIEBzZWUgRGlhZ3JhbU5vZGVcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGFnYS1wYWxldHRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGFsZXR0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgaW1wb3J0czogW0NvbGxhcHNlQnV0dG9uQ29tcG9uZW50XSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFsZXR0ZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgUGFsZXR0ZSwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gICNjYW52YXNQcm92aWRlciA9IGluamVjdChDYW52YXNQcm92aWRlclNlcnZpY2UpO1xyXG4gICNjb25maWdTZXJ2aWNlID0gaW5qZWN0KERhZ2FDb25maWd1cmF0aW9uU2VydmljZSk7XHJcblxyXG4gIGdldCBjYW52YXMoKTogQ2FudmFzIHtcclxuICAgIHJldHVybiB0aGlzLiNjYW52YXNQcm92aWRlci5nZXRDYW52YXMoKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BhbmVsJykgcGFuZWwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgQElucHV0KClcclxuICBwYWxldHRlcyE6IFBhbGV0dGVTZWN0aW9uQ29uZmlnW107XHJcbiAgQElucHV0KClcclxuICBjdXJyZW50UGFsZXR0ZSE6IFBhbGV0dGVTZWN0aW9uQ29uZmlnO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3VycmVudENhdGVnb3J5ID0gJyc7XHJcbiAgQElucHV0KClcclxuICBsb2NhdGlvbiE6IENvcm5lcjtcclxuICBASW5wdXQoKVxyXG4gIGRpcmVjdGlvbiE6IFNpZGU7XHJcbiAgQElucHV0KClcclxuICB3aWR0aCE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGdhcCE6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBwcmlvcml0eVRocmVzaG9sZD86IG51bWJlcjtcclxuXHJcbiAgcHJpdmF0ZSBzdWI/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLypcclxuICAgIHJlbG9hZCB1c2luZyB0aGUgY2FudmFzIG9ic2VydmFibGUgaW5zdGVhZCBvZiB0aGUgY29uZmlnIG9uZVxyXG4gICAgYmVjYXVzZSB3ZSdyZSBnZXR0aW5nIHRoZSB0eXBlIGluZm8gZnJvbSB0aGUgbW9kZWwsIG5vdCB0aGUgY29uZmlndXJhdGlvblxyXG4gICAgKi9cclxuICAgIHRoaXMuc3ViID0gdGhpcy4jY2FudmFzUHJvdmlkZXIuY2FudmFzJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmluaXQodGhpcy4jY29uZmlnU2VydmljZS5nZXRDb25maWcoKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVmcmVzaFBhbGV0dGUoKTtcclxuICAgIHN3aXRjaCAodGhpcy5kaXJlY3Rpb24pIHtcclxuICAgICAgY2FzZSBTaWRlLkJvdHRvbTpcclxuICAgICAgY2FzZSBTaWRlLlRvcDpcclxuICAgICAgICB0aGlzLnNlbGVjdFBhbmVsKClcclxuICAgICAgICAgIC5zdHlsZSgnd2lkdGgnLCB0aGlzLndpZHRoKVxyXG4gICAgICAgICAgLnNlbGVjdCgnLmRhZ2EtcGFsZXR0ZS12aWV3JylcclxuICAgICAgICAgIC5zdHlsZSgnZmxleC1kaXJlY3Rpb24nLCAncm93Jyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU2lkZS5MZWZ0OlxyXG4gICAgICBjYXNlIFNpZGUuUmlnaHQ6XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQYW5lbCgpXHJcbiAgICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIHRoaXMud2lkdGgpXHJcbiAgICAgICAgICAuc2VsZWN0KCcuZGFnYS1wYWxldHRlLXZpZXcnKVxyXG4gICAgICAgICAgLnN0eWxlKCdmbGV4LWRpcmVjdGlvbicsICdjb2x1bW4nKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0UGFuZWwoKVxyXG4gICAgICAuc2VsZWN0KCcuZGFnYS1wYWxldHRlLXZpZXcnKVxyXG4gICAgICAuc3R5bGUoJ2ZsZXgtd3JhcCcsICd3cmFwJylcclxuICAgICAgLnN0eWxlKCdqdXN0aWZ5LWNvbnRlbnQnLCAnY2VudGVyJylcclxuICAgICAgLnN0eWxlKCdnYXAnLCB0aGlzLmdhcCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3ViPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdChjb25maWc6IERpYWdyYW1Db25maWcpOiB2b2lkIHtcclxuICAgIHRoaXMubG9jYXRpb24gPSBjb25maWcuY29tcG9uZW50cz8ucGFsZXR0ZT8ubG9jYXRpb24gfHwgQ29ybmVyLlRvcExlZnQ7XHJcbiAgICB0aGlzLmRpcmVjdGlvbiA9IGNvbmZpZy5jb21wb25lbnRzPy5wYWxldHRlPy5kaXJlY3Rpb24gfHwgU2lkZS5Cb3R0b207XHJcbiAgICB0aGlzLndpZHRoID0gY29uZmlnLmNvbXBvbmVudHM/LnBhbGV0dGU/LndpZHRoIHx8ICcxMnJlbSc7XHJcbiAgICB0aGlzLmdhcCA9IGNvbmZpZy5jb21wb25lbnRzPy5wYWxldHRlPy5nYXAgfHwgJzFyZW0nO1xyXG4gICAgdGhpcy5wYWxldHRlcyA9IGNvbmZpZy5jb21wb25lbnRzPy5wYWxldHRlPy5zZWN0aW9ucyB8fCBbXTtcclxuICAgIHRoaXMuY3VycmVudFBhbGV0dGUgPSB0aGlzLnBhbGV0dGVzWzBdO1xyXG4gICAgdGhpcy5yZWZyZXNoUGFsZXR0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFBhbGV0dGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN3aXRjaFBhbGV0dGUodGhpcy5jdXJyZW50UGFsZXR0ZSk7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hQYWxldHRlKHBhbGV0dGU6IFBhbGV0dGVTZWN0aW9uQ29uZmlnKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWxldHRlID0gcGFsZXR0ZTtcclxuXHJcbiAgICBpZiAodGhpcy5wYW5lbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0UGFsZXR0ZSgpLnNlbGVjdEFsbCgnKicpLnJlbW92ZSgpO1xyXG4gICAgICB0aGlzLnByaW9yaXR5VGhyZXNob2xkID0gdGhpcy5jYW52YXMuZ2V0UHJpb3JpdHlUaHJlc2hvbGQoKTtcclxuXHJcbiAgICAgIGlmIChwYWxldHRlLmNhdGVnb3JpZXMpIHtcclxuICAgICAgICB0aGlzLmFwcGVuZENhdGVnb3JpZXMocGFsZXR0ZS5jYXRlZ29yaWVzKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocGFsZXR0ZS50ZW1wbGF0ZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHRlbXBsYXRlIG9mIHBhbGV0dGUudGVtcGxhdGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcGVuZFRlbXBsYXRlKHRlbXBsYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFBhbmVsKCk6IGQzLlNlbGVjdGlvbjxIVE1MRGl2RWxlbWVudCwgdW5rbm93biwgbnVsbCwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gZDMuc2VsZWN0KHRoaXMucGFuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RQYWxldHRlKCk6IGQzLlNlbGVjdGlvbjxIVE1MRGl2RWxlbWVudCwgdW5rbm93biwgbnVsbCwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RQYW5lbCgpLnNlbGVjdCgnLmRhZ2EtcGFsZXR0ZS12aWV3Jyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGVuZENhdGVnb3JpZXMoY2F0ZWdvcmllczoge1xyXG4gICAgW2tleTogc3RyaW5nXTogKE5vZGVUZW1wbGF0ZUNvbmZpZyB8IENvbm5lY3Rpb25UZW1wbGF0ZUNvbmZpZylbXTtcclxuICB9KTogdm9pZCB7XHJcbiAgICBjb25zdCB0aGlzQ29tcG9uZW50ID0gdGhpcy5zZWxlY3RQYWxldHRlKClcclxuICAgICAgLmFwcGVuZCgnc2VsZWN0JylcclxuICAgICAgLnN0eWxlKCd3aWR0aCcsICcxMDAlJylcclxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMnJlbScpXHJcbiAgICAgIC5zdHlsZSgncGFkZGluZycsICcwLjVyZW0nKVxyXG4gICAgICAuc3R5bGUoJ2JvcmRlci1yYWRpdXMnLCAnMC4yNXJlbScpXHJcbiAgICAgIC5zdHlsZSgnYmFja2dyb3VuZC1jb2xvcicsICcjZjdmOGZjJylcclxuICAgICAgLnN0eWxlKCdib3JkZXInLCBgMXB4IHNvbGlkICNlNmU2ZTZgKTtcclxuICAgIHRoaXNDb21wb25lbnQuYXBwZW5kKCdvcHRpb24nKS5hdHRyKCd2YWx1ZScsICcnKS50ZXh0KCcoTm9uZSBzZWxlY3RlZCknKTtcclxuICAgIGZvciAoY29uc3QgY2F0ZWdvcnlLZXkgaW4gY2F0ZWdvcmllcykge1xyXG4gICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgLmFwcGVuZCgnb3B0aW9uJylcclxuICAgICAgICAuYXR0cigndmFsdWUnLCBjYXRlZ29yeUtleSlcclxuICAgICAgICAudGV4dChjYXRlZ29yeUtleSk7XHJcbiAgICB9XHJcbiAgICB0aGlzQ29tcG9uZW50Lm9uKEV2ZW50cy5DaGFuZ2UsICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudENhdGVnb3J5KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQYWxldHRlKClcclxuICAgICAgICAgIC5zZWxlY3RBbGwoYC5kYWdhLXRlbXBsYXRlLWNvbnRhaW5lci5kYWdhLWluLWNhdGVnb3J5YClcclxuICAgICAgICAgIC5yZW1vdmUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWRLZXkgPSB0aGlzQ29tcG9uZW50LnByb3BlcnR5KCd2YWx1ZScpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRDYXRlZ29yeSA9IHNlbGVjdGVkS2V5O1xyXG4gICAgICBjb25zdCB0ZW1wbGF0ZXNJbkNhdGVnb3J5ID0gY2F0ZWdvcmllc1tzZWxlY3RlZEtleV0gfHwgW107XHJcbiAgICAgIGZvciAoY29uc3QgdGVtcGxhdGUgb2YgdGVtcGxhdGVzSW5DYXRlZ29yeSkge1xyXG4gICAgICAgIHRoaXMuYXBwZW5kVGVtcGxhdGUodGVtcGxhdGUsICdkYWdhLWluLWNhdGVnb3J5Jyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudENhdGVnb3J5KSB7XHJcbiAgICAgIC8vIGlmIHdlIGhhZCBhIGNhdGVnb3J5IGFscmVhZHkgc2VsZWN0ZWQsIHJlLXNlbGVjdCBpdFxyXG4gICAgICB0aGlzQ29tcG9uZW50LnByb3BlcnR5KCd2YWx1ZScsIHRoaXMuY3VycmVudENhdGVnb3J5KTtcclxuICAgICAgdGhpc0NvbXBvbmVudC5kaXNwYXRjaChFdmVudHMuQ2hhbmdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwZW5kVGVtcGxhdGUoXHJcbiAgICB0ZW1wbGF0ZTogTm9kZVRlbXBsYXRlQ29uZmlnIHwgQ29ubmVjdGlvblRlbXBsYXRlQ29uZmlnLFxyXG4gICAgY2xhc3Nlcz86IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKHRlbXBsYXRlLnRlbXBsYXRlVHlwZSA9PT0gJ25vZGUnKSB7XHJcbiAgICAgIGNvbnN0IG5vZGVUeXBlID0gdGhpcy5jYW52YXMubW9kZWwubm9kZXMudHlwZXMuZ2V0KHRlbXBsYXRlLnR5cGUpO1xyXG4gICAgICBpZiAobm9kZVR5cGUpIHtcclxuICAgICAgICB0aGlzLmFwcGVuZE5vZGVUZW1wbGF0ZShub2RlVHlwZSwgdGVtcGxhdGUsIGNsYXNzZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgbm9kZSB0eXBlIGNhbGxlZCAnJHt0ZW1wbGF0ZS50eXBlfSdgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0ZW1wbGF0ZS50ZW1wbGF0ZVR5cGUgPT09ICdjb25uZWN0aW9uJykge1xyXG4gICAgICB7XHJcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblR5cGUgPSB0aGlzLmNhbnZhcy5tb2RlbC5jb25uZWN0aW9ucy50eXBlcy5nZXQoXHJcbiAgICAgICAgICB0ZW1wbGF0ZS50eXBlXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoY29ubmVjdGlvblR5cGUpIHtcclxuICAgICAgICAgIHRoaXMuYXBwZW5kQ29ubmVjdGlvblRlbXBsYXRlKGNvbm5lY3Rpb25UeXBlLCB0ZW1wbGF0ZSwgY2xhc3Nlcyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBhIGNvbm5lY3Rpb24gdHlwZSBjYWxsZWQgJyR7dGVtcGxhdGUudHlwZX0nYFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwZW5kTm9kZVRlbXBsYXRlKFxyXG4gICAgdHlwZTogRGlhZ3JhbU5vZGVUeXBlLFxyXG4gICAgdGVtcGxhdGVDb25maWc6IE5vZGVUZW1wbGF0ZUNvbmZpZyxcclxuICAgIGNsYXNzZXM/OiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5wcmlvcml0eVRocmVzaG9sZCAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHR5cGUucHJpb3JpdHkgPCB0aGlzLnByaW9yaXR5VGhyZXNob2xkXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYm9yZGVyVGhpY2tuZXNzID1cclxuICAgICAgdHlwZS5kZWZhdWx0TG9vay5sb29rVHlwZSA9PT0gJ3NoYXBlZC1sb29rJ1xyXG4gICAgICAgID8gdHlwZS5kZWZhdWx0TG9vay5ib3JkZXJUaGlja25lc3NcclxuICAgICAgICA6IDA7XHJcbiAgICBjb25zdCB0ZW1wbGF0ZUhlaWdodCA9IHR5cGUuZGVmYXVsdEhlaWdodCArIGJvcmRlclRoaWNrbmVzcztcclxuICAgIGNvbnN0IHRlbXBsYXRlV2lkdGggPSB0eXBlLmRlZmF1bHRXaWR0aCArIGJvcmRlclRoaWNrbmVzcztcclxuICAgIGNvbnN0IHN0cmV0Y2hlZFRlbXBsYXRlSGVpZ2h0ID0gdGVtcGxhdGVDb25maWcuaGVpZ2h0IHx8IHRlbXBsYXRlSGVpZ2h0O1xyXG4gICAgY29uc3Qgc3RyZXRjaGVkVGVtcGxhdGVXaWR0aCA9IHRlbXBsYXRlQ29uZmlnLndpZHRoIHx8IHRlbXBsYXRlV2lkdGg7XHJcblxyXG4gICAgbGV0IHRoaXNDb21wb25lbnRDbG9uZSE6IGQzLlNlbGVjdGlvbjxFbGVtZW50LCB1bmtub3duLCBudWxsLCB1bmRlZmluZWQ+O1xyXG5cclxuICAgIGNvbnN0IHRoaXNDb21wb25lbnQgPSB0aGlzLnNlbGVjdFBhbGV0dGUoKVxyXG4gICAgICAuYXBwZW5kKCdkaXYnKVxyXG4gICAgICAuYXR0cihcclxuICAgICAgICAnY2xhc3MnLFxyXG4gICAgICAgIGBkYWdhLXRlbXBsYXRlLWNvbnRhaW5lciAke2NsYXNzZXMgIT09IHVuZGVmaW5lZCA/IGNsYXNzZXMgOiAnJ31gXHJcbiAgICAgIClcclxuICAgICAgLnN0eWxlKCd3aWR0aCcsIGAke3N0cmV0Y2hlZFRlbXBsYXRlV2lkdGh9cHhgKVxyXG4gICAgICAuc3R5bGUoJ2hlaWdodCcsIGAke3N0cmV0Y2hlZFRlbXBsYXRlSGVpZ2h0fXB4YClcclxuICAgICAgLm9uKEV2ZW50cy5Nb3VzZUVudGVyLCAoKSA9PiB7XHJcbiAgICAgICAgc2V0Q3Vyc29yU3R5bGUoQ3Vyc29yU3R5bGUuR3JhYik7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5vbihFdmVudHMuTW91c2VMZWF2ZSwgKCkgPT4ge1xyXG4gICAgICAgIHNldEN1cnNvclN0eWxlKCk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYWxsKFxyXG4gICAgICAgIGQzXHJcbiAgICAgICAgICAuZHJhZzxIVE1MRGl2RWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQ+KClcclxuICAgICAgICAgIC5vbihEcmFnRXZlbnRzLkRyYWcsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5BZGROb2RlKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXJDb29yZHMgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW52YXMuZ2V0UG9pbnRlckxvY2F0aW9uUmVsYXRpdmVUb1Jvb3QoZXZlbnQpO1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHBvaW50ZXJDb29yZHMubGVuZ3RoIDwgMiB8fFxyXG4gICAgICAgICAgICAgICAgaXNOYU4ocG9pbnRlckNvb3Jkc1swXSkgfHxcclxuICAgICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMV0pXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnRDbG9uZVxyXG4gICAgICAgICAgICAgICAgLnN0eWxlKFxyXG4gICAgICAgICAgICAgICAgICAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgICAgIGAke3BvaW50ZXJDb29yZHNbMF0gLSBzdHJldGNoZWRUZW1wbGF0ZVdpZHRoIC8gMn1weGBcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5zdHlsZShcclxuICAgICAgICAgICAgICAgICAgJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICAgIGAke3BvaW50ZXJDb29yZHNbMV0gLSBzdHJldGNoZWRUZW1wbGF0ZUhlaWdodCAvIDJ9cHhgXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLm9uKERyYWdFdmVudHMuU3RhcnQsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5BZGROb2RlKSkge1xyXG4gICAgICAgICAgICAgIHNldEN1cnNvclN0eWxlKEN1cnNvclN0eWxlLkdyYWJiaW5nKTtcclxuICAgICAgICAgICAgICBjb25zdCBwb2ludGVyQ29vcmRzID1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLmdldFBvaW50ZXJMb2NhdGlvblJlbGF0aXZlVG9Sb290KGV2ZW50KTtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzLmxlbmd0aCA8IDIgfHxcclxuICAgICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMF0pIHx8XHJcbiAgICAgICAgICAgICAgICBpc05hTihwb2ludGVyQ29vcmRzWzFdKVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCB0aGlzQ29tcG9uZW50Tm9kZUNsb25lZCA9IHRoaXNDb21wb25lbnRcclxuICAgICAgICAgICAgICAgIC5ub2RlKClcclxuICAgICAgICAgICAgICAgID8uY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgICAgICAgICh0aGlzLmNhbnZhcy5zZWxlY3RSb290KCkubm9kZSgpIGFzIEhUTUxEaXZFbGVtZW50KS5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgICAgIHRoaXNDb21wb25lbnROb2RlQ2xvbmVkIGFzIE5vZGVcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnRDbG9uZSA9IGQzLnNlbGVjdChcclxuICAgICAgICAgICAgICAgIHRoaXNDb21wb25lbnROb2RlQ2xvbmVkIGFzIEVsZW1lbnRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnRDbG9uZVxyXG4gICAgICAgICAgICAgICAgLnN0eWxlKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpXHJcbiAgICAgICAgICAgICAgICAuc3R5bGUoXHJcbiAgICAgICAgICAgICAgICAgICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgYCR7cG9pbnRlckNvb3Jkc1swXSAtIHN0cmV0Y2hlZFRlbXBsYXRlV2lkdGggLyAyfXB4YFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLnN0eWxlKFxyXG4gICAgICAgICAgICAgICAgICAndG9wJyxcclxuICAgICAgICAgICAgICAgICAgYCR7cG9pbnRlckNvb3Jkc1sxXSAtIHN0cmV0Y2hlZFRlbXBsYXRlSGVpZ2h0IC8gMn1weGBcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5zdHlsZSgnei1pbmRleCcsIDEpO1xyXG4gICAgICAgICAgICAgIC8vIHdoZW4gdHJ5aW5nIHRvIHBsYWNlIGEgdW5pcXVlIG5vZGUgaW4gYSBkaWFncmFtIHRoYXQgYWxyZWFkeSBoYXMgYSBub2RlIG9mIHRoYXQgdHlwZSwgc2V0IGN1cnNvciBzdHlsZSB0byBub3QgYWxsb3dlZFxyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHR5cGUuaXNVbmlxdWUgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLm1vZGVsLm5vZGVzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgIChuKSA9PiAhbi5yZW1vdmVkICYmIG4udHlwZS5pZCA9PT0gdHlwZS5pZFxyXG4gICAgICAgICAgICAgICAgKSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRDdXJzb3JTdHlsZShDdXJzb3JTdHlsZS5Ob3RBbGxvd2VkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAub24oRHJhZ0V2ZW50cy5FbmQsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5BZGROb2RlKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRha2Ugbm9kZSBiYWNrIHRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvblxyXG4gICAgICAgICAgICAgIHNldEN1cnNvclN0eWxlKEN1cnNvclN0eWxlLkF1dG8pO1xyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnRDbG9uZT8ucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgLy8gdHJ5IHRvIHBsYWNlIG5vZGVcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0eXBlLmlzVW5pcXVlICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5tb2RlbC5ub2Rlcy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAobikgPT4gIW4ucmVtb3ZlZCAmJiBuLnR5cGUuaWQgPT09IHR5cGUuaWRcclxuICAgICAgICAgICAgICAgICkgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2FuJ3QgcGxhY2UsIGl0J3MgdW5pcXVlIGFuZCB0aGF0IG5vZGUgaXMgYWxyZWFkeSBpbiB0aGUgbW9kZWxcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc3QgcG9pbnRlckNvb3Jkc1JlbGF0aXZlVG9TY3JlZW4gPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW52YXMuZ2V0UG9pbnRlckxvY2F0aW9uUmVsYXRpdmVUb1NjcmVlbihldmVudCk7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgcG9pbnRlckNvb3Jkc1JlbGF0aXZlVG9TY3JlZW4ubGVuZ3RoIDwgMiB8fFxyXG4gICAgICAgICAgICAgICAgaXNOYU4ocG9pbnRlckNvb3Jkc1JlbGF0aXZlVG9TY3JlZW5bMF0pIHx8XHJcbiAgICAgICAgICAgICAgICBpc05hTihwb2ludGVyQ29vcmRzUmVsYXRpdmVUb1NjcmVlblsxXSlcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNhbid0IHBsYWNlLCBwb3NpdGlvbiBpcyBpbmNvcnJlY3RcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KFxyXG4gICAgICAgICAgICAgICAgcG9pbnRlckNvb3Jkc1JlbGF0aXZlVG9TY3JlZW5bMF0sXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzUmVsYXRpdmVUb1NjcmVlblsxXVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgIXRoaXMuY2FudmFzLnNlbGVjdENhbnZhc1ZpZXcoKS5ub2RlKCk/LmNvbnRhaW5zKGVsZW1lbnQpXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjYW4ndCBwbGFjZSwgbm9kZSBoYXNuJ3QgYmVlbiBkcm9wcGVkIG9uIHRoZSBjYW52YXNcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc3QgcG9pbnRlckNvb3JkcyA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5nZXRQb2ludGVyTG9jYXRpb25SZWxhdGl2ZVRvQ2FudmFzKGV2ZW50KTtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzLmxlbmd0aCA8IDIgfHxcclxuICAgICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMF0pIHx8XHJcbiAgICAgICAgICAgICAgICBpc05hTihwb2ludGVyQ29vcmRzWzFdKVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2FuJ3QgcGxhY2UsIHBvc2l0aW9uIGlzIGluY29ycmVjdFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgbmV3Tm9kZUNvb3JkczogUG9pbnQgPSBbXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzWzBdIC0gdHlwZS5kZWZhdWx0V2lkdGggLyAyLFxyXG4gICAgICAgICAgICAgICAgcG9pbnRlckNvb3Jkc1sxXSAtIHR5cGUuZGVmYXVsdEhlaWdodCAvIDJcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5zbmFwVG9HcmlkKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdOb2RlQ29vcmRzID0gdGhpcy5jYW52YXMuZ2V0Q2xvc2VzdEdyaWRQb2ludChuZXdOb2RlQ29vcmRzKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgd2UgZHJvcHBlZCB0aGlzIG5vZGUgb24gYSBwb3RlbnRpYWwgcGFyZW50XHJcbiAgICAgICAgICAgICAgY29uc3Qgbm9kZXNBdExvY2F0aW9uID0gdGhpcy5jYW52YXMubW9kZWwubm9kZXMuZ2V0QXRDb29yZGluYXRlcyhcclxuICAgICAgICAgICAgICAgIHBvaW50ZXJDb29yZHNbMF0sXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzWzFdXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAvLyBmaWx0ZXIgYnkgd2hpY2ggbm9kZXMgY2FuIGhhdmUgdGhpcyB0eXBlIGFzIGEgY2hpbGRcclxuICAgICAgICAgICAgICBjb25zdCBub2Rlc0F0TG9jYXRpb25XaGljaENhbkhhdmVOb2RlQXNBQ2hpbGQgPVxyXG4gICAgICAgICAgICAgICAgbm9kZXNBdExvY2F0aW9uLmZpbHRlcigobikgPT5cclxuICAgICAgICAgICAgICAgICAgbi50eXBlLmNoaWxkcmVuVHlwZXMuaW5jbHVkZXModHlwZS5pZClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLy8gZmlsdGVyIGJ5IHdoaWNoIG5vZGVzIGRvbid0IGhhdmUgZGVzY2VuZGFudHMgaW4gdGhpcyBjb2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWROb2Rlc0F0TG9jYXRpb24gPSBmaWx0ZXJCeU9ubHlEZXNjZW5kYW50cyhcclxuICAgICAgICAgICAgICAgIG5vZGVzQXRMb2NhdGlvbldoaWNoQ2FuSGF2ZU5vZGVBc0FDaGlsZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZHJvcHBlZE9uID1cclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkTm9kZXNBdExvY2F0aW9uW2ZpbHRlcmVkTm9kZXNBdExvY2F0aW9uLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIXR5cGUuY2FuQmVQYXJlbnRsZXNzICYmIGRyb3BwZWRPbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjYW4ndCBwbGFjZSwgbm9kZSBtdXN0IGhhdmUgYSBwYXJlbnQgYW5kIG5vIHN1aXRhYmxlIHBhcmVudCBoYXMgYmVlbiBmb3VuZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgYW5jZXN0b3IgPSBkcm9wcGVkT24/LmdldExhc3RBbmNlc3RvcigpO1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBhZGROb2RlQWN0aW9uID0gbmV3IEFkZE5vZGVBY3Rpb24oXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcyxcclxuICAgICAgICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICAgICAgICBuZXdOb2RlQ29vcmRzLFxyXG4gICAgICAgICAgICAgICAgZHJvcHBlZE9uPy5pZCxcclxuICAgICAgICAgICAgICAgIGFuY2VzdG9yPy5pZCxcclxuICAgICAgICAgICAgICAgIGFuY2VzdG9yPy5nZXRHZW9tZXRyeSgpLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVDb25maWcubGFiZWwsXHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZUNvbmZpZy52YWx1ZXNcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICBhZGROb2RlQWN0aW9uLmRvKCk7XHJcbiAgICAgICAgICAgICAgYWRkTm9kZUFjdGlvbi50b0FuY2VzdG9yR2VvbWV0cnkgPSBhbmNlc3Rvcj8uZ2V0R2VvbWV0cnkoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXMuYWN0aW9uU3RhY2suYWRkKGFkZE5vZGVBY3Rpb24pO1xyXG4gICAgICAgICAgICAgIC8vIHJlc2V0IGN1cnNvclxyXG4gICAgICAgICAgICAgIHNldEN1cnNvclN0eWxlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLmFwcGVuZCgnc3ZnJylcclxuICAgICAgLmF0dHIoJ2NsYXNzJywgYHBhbGV0dGUtbm9kZSAke3R5cGUuaWR9YClcclxuICAgICAgLmF0dHIoJ3ZpZXdCb3gnLCBgMCAwICR7dGVtcGxhdGVXaWR0aH0gJHt0ZW1wbGF0ZUhlaWdodH1gKVxyXG4gICAgICAuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJylcclxuICAgICAgLnN0eWxlKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpXHJcbiAgICAgIC5zdHlsZSgnbGVmdCcsIDApXHJcbiAgICAgIC5zdHlsZSgndG9wJywgMClcclxuICAgICAgLnN0eWxlKCd3aWR0aCcsIGAke3N0cmV0Y2hlZFRlbXBsYXRlV2lkdGh9cHhgKVxyXG4gICAgICAuc3R5bGUoJ2hlaWdodCcsIGAke3N0cmV0Y2hlZFRlbXBsYXRlSGVpZ2h0fXB4YCk7XHJcbiAgICBjb25zdCBub2RlTG9vayA9IHRlbXBsYXRlQ29uZmlnLmxvb2sgfHwgdHlwZS5kZWZhdWx0TG9vaztcclxuXHJcbiAgICBzd2l0Y2ggKG5vZGVMb29rLmxvb2tUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ3NoYXBlZC1sb29rJzpcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdwYXRoJylcclxuICAgICAgICAgIC5hdHRyKFxyXG4gICAgICAgICAgICAnZCcsXHJcbiAgICAgICAgICAgIGdlbmVyYWxDbG9zZWRQYXRoKFxyXG4gICAgICAgICAgICAgIG5vZGVMb29rLnNoYXBlLFxyXG4gICAgICAgICAgICAgIG5vZGVMb29rLmJvcmRlclRoaWNrbmVzcyAvIDIsXHJcbiAgICAgICAgICAgICAgbm9kZUxvb2suYm9yZGVyVGhpY2tuZXNzIC8gMixcclxuICAgICAgICAgICAgICB0eXBlLmRlZmF1bHRXaWR0aCxcclxuICAgICAgICAgICAgICB0eXBlLmRlZmF1bHRIZWlnaHRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmF0dHIoJ2ZpbGwnLCBub2RlTG9vay5maWxsQ29sb3IpXHJcbiAgICAgICAgICAuYXR0cignc3Ryb2tlJywgbm9kZUxvb2suYm9yZGVyQ29sb3IpXHJcbiAgICAgICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgYCR7bm9kZUxvb2suYm9yZGVyVGhpY2tuZXNzfXB4YCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2ltYWdlLWxvb2snOlxyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4JywgMClcclxuICAgICAgICAgIC5hdHRyKCd5JywgMClcclxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIHR5cGUuZGVmYXVsdFdpZHRoKVxyXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIHR5cGUuZGVmYXVsdEhlaWdodClcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlKVxyXG4gICAgICAgICAgLmF0dHIoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzdHJldGNoYWJsZS1pbWFnZS1sb29rJzpcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIDApXHJcbiAgICAgICAgICAuYXR0cigneScsIDApXHJcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCBub2RlTG9vay5sZWZ0TWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIG5vZGVMb29rLnRvcE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlVG9wTGVmdClcclxuICAgICAgICAgIC5hdHRyKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIG5vZGVMb29rLmxlZnRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cigneScsIDApXHJcbiAgICAgICAgICAuYXR0cihcclxuICAgICAgICAgICAgJ3dpZHRoJyxcclxuICAgICAgICAgICAgdHlwZS5kZWZhdWx0V2lkdGggLSBub2RlTG9vay5yaWdodE1hcmdpbiAtIG5vZGVMb29rLmxlZnRNYXJnaW5cclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCBub2RlTG9vay50b3BNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignaHJlZicsIG5vZGVMb29rLmJhY2tncm91bmRJbWFnZVRvcClcclxuICAgICAgICAgIC5hdHRyKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIHR5cGUuZGVmYXVsdFdpZHRoIC0gbm9kZUxvb2sucmlnaHRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cigneScsIDApXHJcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCBub2RlTG9vay5yaWdodE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCBub2RlTG9vay50b3BNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignaHJlZicsIG5vZGVMb29rLmJhY2tncm91bmRJbWFnZVRvcFJpZ2h0KVxyXG4gICAgICAgICAgLmF0dHIoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4JywgMClcclxuICAgICAgICAgIC5hdHRyKCd5Jywgbm9kZUxvb2sudG9wTWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgbm9kZUxvb2subGVmdE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKFxyXG4gICAgICAgICAgICAnaGVpZ2h0JyxcclxuICAgICAgICAgICAgdHlwZS5kZWZhdWx0SGVpZ2h0IC0gbm9kZUxvb2suYm90dG9tTWFyZ2luIC0gbm9kZUxvb2sudG9wTWFyZ2luXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuYXR0cignaHJlZicsIG5vZGVMb29rLmJhY2tncm91bmRJbWFnZUxlZnQpXHJcbiAgICAgICAgICAuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XHJcbiAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxyXG4gICAgICAgICAgLmF0dHIoJ3gnLCBub2RlTG9vay5sZWZ0TWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ3knLCBub2RlTG9vay50b3BNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cihcclxuICAgICAgICAgICAgJ3dpZHRoJyxcclxuICAgICAgICAgICAgdHlwZS5kZWZhdWx0V2lkdGggLSBub2RlTG9vay5yaWdodE1hcmdpbiAtIG5vZGVMb29rLmxlZnRNYXJnaW5cclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5hdHRyKFxyXG4gICAgICAgICAgICAnaGVpZ2h0JyxcclxuICAgICAgICAgICAgdHlwZS5kZWZhdWx0SGVpZ2h0IC0gbm9kZUxvb2suYm90dG9tTWFyZ2luIC0gbm9kZUxvb2sudG9wTWFyZ2luXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuYXR0cignaHJlZicsIG5vZGVMb29rLmJhY2tncm91bmRJbWFnZUNlbnRlcilcclxuICAgICAgICAgIC5hdHRyKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIHR5cGUuZGVmYXVsdFdpZHRoIC0gbm9kZUxvb2sucmlnaHRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cigneScsIG5vZGVMb29rLnRvcE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIG5vZGVMb29rLnJpZ2h0TWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAgICdoZWlnaHQnLFxyXG4gICAgICAgICAgICB0eXBlLmRlZmF1bHRIZWlnaHQgLSBub2RlTG9vay5ib3R0b21NYXJnaW4gLSBub2RlTG9vay50b3BNYXJnaW5cclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlUmlnaHQpXHJcbiAgICAgICAgICAuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XHJcbiAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxyXG4gICAgICAgICAgLmF0dHIoJ3gnLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3knLCB0eXBlLmRlZmF1bHRIZWlnaHQgLSBub2RlTG9vay5ib3R0b21NYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCBub2RlTG9vay5sZWZ0TWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIG5vZGVMb29rLmJvdHRvbU1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlQm90dG9tTGVmdClcclxuICAgICAgICAgIC5hdHRyKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIG5vZGVMb29rLmxlZnRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cigneScsIHR5cGUuZGVmYXVsdEhlaWdodCAtIG5vZGVMb29rLmJvdHRvbU1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKFxyXG4gICAgICAgICAgICAnd2lkdGgnLFxyXG4gICAgICAgICAgICB0eXBlLmRlZmF1bHRXaWR0aCAtIG5vZGVMb29rLnJpZ2h0TWFyZ2luIC0gbm9kZUxvb2subGVmdE1hcmdpblxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIG5vZGVMb29rLmJvdHRvbU1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlQm90dG9tKVxyXG4gICAgICAgICAgLmF0dHIoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4JywgdHlwZS5kZWZhdWx0V2lkdGggLSBub2RlTG9vay5yaWdodE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCd5JywgdHlwZS5kZWZhdWx0SGVpZ2h0IC0gbm9kZUxvb2suYm90dG9tTWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgbm9kZUxvb2sucmlnaHRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignaGVpZ2h0Jywgbm9kZUxvb2suYm90dG9tTWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ2hyZWYnLCBub2RlTG9vay5iYWNrZ3JvdW5kSW1hZ2VCb3R0b21SaWdodClcclxuICAgICAgICAgIC5hdHRyKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGVtcGxhdGVDb25maWcubG9vayA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0eXBlLmRlY29yYXRvcnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGRlY29yYXRvckNvbmZpZyBvZiB0eXBlLmRlY29yYXRvcnMpIHtcclxuICAgICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgICAgLmFwcGVuZCgnZm9yZWlnbk9iamVjdCcpXHJcbiAgICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIGAke2RlY29yYXRvckNvbmZpZy53aWR0aH1weGApXHJcbiAgICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCBgJHtkZWNvcmF0b3JDb25maWcuaGVpZ2h0fXB4YClcclxuICAgICAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsXHJcbiAgICAgICAgICAgICAgYHRyYW5zbGF0ZSgke2RlY29yYXRvckNvbmZpZy5jb29yZHNbMF19LCR7ZGVjb3JhdG9yQ29uZmlnLmNvb3Jkc1sxXX0pYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5odG1sKGRlY29yYXRvckNvbmZpZy5odG1sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0ZW1wbGF0ZUNvbmZpZy5sYWJlbCkge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsQ29uZmlnID0ge1xyXG4gICAgICAgICAgLi4uRElBR1JBTV9GSUVMRF9ERUZBVUxUUyxcclxuICAgICAgICAgIC4uLnR5cGUubGFiZWwsXHJcbiAgICAgICAgICAuLi50ZW1wbGF0ZUNvbmZpZy5sYWJlbExvb2tcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ3RleHQnKVxyXG4gICAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxyXG4gICAgICAgICAgICBgdHJhbnNsYXRlKCR7KGdldExlZnRNYXJnaW4obGFiZWxDb25maWcpICsgdHlwZS5kZWZhdWx0V2lkdGggKyBib3JkZXJUaGlja25lc3MgLyAyKSAvIDJ9LCR7KGdldFRvcE1hcmdpbihsYWJlbENvbmZpZykgKyB0eXBlLmRlZmF1bHRIZWlnaHQgKyBib3JkZXJUaGlja25lc3MgLyAyKSAvIDJ9KWBcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5hdHRyKCd4JywgMClcclxuICAgICAgICAgIC5hdHRyKCd5JywgMClcclxuICAgICAgICAgIC5hdHRyKCdmb250LXNpemUnLCBgJHtsYWJlbENvbmZpZy5mb250U2l6ZX1weGApXHJcbiAgICAgICAgICAuYXR0cigndGV4dC1hbmNob3InLCAnbWlkZGxlJylcclxuICAgICAgICAgIC5hdHRyKCdmb250LWZhbWlseScsIGxhYmVsQ29uZmlnLmZvbnRGYW1pbHkpXHJcbiAgICAgICAgICAuYXR0cignZm9udC13ZWlnaHQnLCA0MDApXHJcbiAgICAgICAgICAuYXR0cignZmlsbCcsIGxhYmVsQ29uZmlnLmNvbG9yKVxyXG4gICAgICAgICAgLmF0dHIoJ3N0cm9rZScsICdub25lJylcclxuICAgICAgICAgIC5zdHlsZSgnZm9udC1rZXJuaW5nJywgJ25vbmUnKVxyXG4gICAgICAgICAgLnN0eWxlKCd1c2VyLXNlbGVjdCcsICdub25lJylcclxuICAgICAgICAgIC50ZXh0KHRlbXBsYXRlQ29uZmlnLmxhYmVsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBlbmRDb25uZWN0aW9uVGVtcGxhdGUoXHJcbiAgICB0eXBlOiBEaWFncmFtQ29ubmVjdGlvblR5cGUsXHJcbiAgICB0ZW1wbGF0ZUNvbmZpZzogQ29ubmVjdGlvblRlbXBsYXRlQ29uZmlnLFxyXG4gICAgY2xhc3Nlcz86IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgdGhpc0NvbXBvbmVudCA9IHRoaXMuc2VsZWN0UGFsZXR0ZSgpXHJcbiAgICAgIC5hcHBlbmQoJ2RpdicpXHJcbiAgICAgIC5hdHRyKFxyXG4gICAgICAgICdjbGFzcycsXHJcbiAgICAgICAgYGRhZ2EtdGVtcGxhdGUtY29udGFpbmVyICR7Y2xhc3NlcyAhPT0gdW5kZWZpbmVkID8gY2xhc3NlcyA6ICcnfWBcclxuICAgICAgKVxyXG4gICAgICAuc3R5bGUoJ3dpZHRoJywgYCR7dGVtcGxhdGVDb25maWcud2lkdGh9cHhgKVxyXG4gICAgICAuc3R5bGUoJ2hlaWdodCcsIGAke3RlbXBsYXRlQ29uZmlnLmhlaWdodH1weGApXHJcbiAgICAgIC5zdHlsZSgnY3Vyc29yJywgJ3BvaW50ZXInKVxyXG4gICAgICAuYXBwZW5kKCdzdmcnKVxyXG4gICAgICAuYXR0cignY2xhc3MnLCBgcGFsZXR0ZS1idXR0b24gJHt0eXBlLmlkfWApXHJcbiAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAncmVsYXRpdmUnKVxyXG4gICAgICAuc3R5bGUoJ2xlZnQnLCAwKVxyXG4gICAgICAuc3R5bGUoJ3RvcCcsIDApXHJcbiAgICAgIC5zdHlsZSgnd2lkdGgnLCAnMTAwJScpXHJcbiAgICAgIC5zdHlsZSgnaGVpZ2h0JywgJzEwMCUnKVxyXG4gICAgICAub24oJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FudmFzLmNvbm5lY3Rpb25UeXBlID0gdHlwZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2FudmFzLmNvbm5lY3Rpb25UeXBlICE9PSB0eXBlKSB7XHJcbiAgICAgIC8vIHRoZSBjb25uZWN0aW9uIHR5cGUgb2YgdGhpcyB0ZW1wbGF0ZSBpcyBub3QgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvbmVcclxuICAgICAgaWYgKHRlbXBsYXRlQ29uZmlnLmljb24gIT09ICcnKSB7XHJcbiAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxyXG4gICAgICAgICAgLmF0dHIoJ3gnLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3knLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgdGVtcGxhdGVDb25maWcud2lkdGgpXHJcbiAgICAgICAgICAuYXR0cignaGVpZ2h0JywgdGVtcGxhdGVDb25maWcuaGVpZ2h0KVxyXG4gICAgICAgICAgLmF0dHIoJ2hyZWYnLCB0ZW1wbGF0ZUNvbmZpZy5pY29uKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhlIGNvbm5lY3Rpb24gdHlwZSBvZiB0aGlzIHRlbXBsYXRlIGlzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb25lXHJcbiAgICAgIGlmICh0ZW1wbGF0ZUNvbmZpZy5zZWxlY3RlZEljb24gIT09ICcnKSB7XHJcbiAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxyXG4gICAgICAgICAgLmF0dHIoJ3gnLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3knLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgdGVtcGxhdGVDb25maWcud2lkdGgpXHJcbiAgICAgICAgICAuYXR0cignaGVpZ2h0JywgdGVtcGxhdGVDb25maWcuaGVpZ2h0KVxyXG4gICAgICAgICAgLmF0dHIoJ2hyZWYnLCB0ZW1wbGF0ZUNvbmZpZy5zZWxlY3RlZEljb24pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRlbXBsYXRlQ29uZmlnLmljb24gIT09ICcnKSB7XHJcbiAgICAgICAgLy8gaWYgdGhlcmUncyBubyBzZWxlY3RlZEljb24sIHVzZSB0aGUgcmVndWxhciBpY29uIGluc3RlYWRcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIDApXHJcbiAgICAgICAgICAuYXR0cigneScsIDApXHJcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCB0ZW1wbGF0ZUNvbmZpZy53aWR0aClcclxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCB0ZW1wbGF0ZUNvbmZpZy5oZWlnaHQpXHJcbiAgICAgICAgICAuYXR0cignaHJlZicsIHRlbXBsYXRlQ29uZmlnLmljb24pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRlbXBsYXRlQ29uZmlnLmxhYmVsICE9PSAnJykge1xyXG4gICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgLmFwcGVuZCgndGV4dCcpXHJcbiAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAndHJhbnNmb3JtJyxcclxuICAgICAgICAgIGB0cmFuc2xhdGUoJHt0ZW1wbGF0ZUNvbmZpZy53aWR0aCAvIDJ9LCR7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlQ29uZmlnLmhlaWdodCAvIDIgKyBMQUJFTF9WRVJUSUNBTF9TSElGVF9QWFxyXG4gICAgICAgICAgfSlgXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5hdHRyKCd4JywgMClcclxuICAgICAgICAuYXR0cigneScsIDApXHJcbiAgICAgICAgLmF0dHIoJ2ZvbnQtc2l6ZScsICcyMHB4JylcclxuICAgICAgICAuYXR0cigndGV4dC1hbmNob3InLCAnbWlkZGxlJylcclxuICAgICAgICAuYXR0cignZm9udC1mYW1pbHknLCBcIidXb25kZXIgVW5pdCBTYW5zJywgc2Fucy1zZXJpZlwiKVxyXG4gICAgICAgIC5hdHRyKCdmb250LXdlaWdodCcsIDQwMClcclxuICAgICAgICAuYXR0cignZmlsbCcsICcjMDAwMDAwJylcclxuICAgICAgICAuYXR0cignc3Ryb2tlJywgJ25vbmUnKVxyXG4gICAgICAgIC5zdHlsZSgnZm9udC1rZXJuaW5nJywgJ25vbmUnKVxyXG4gICAgICAgIC5zdHlsZSgndXNlci1zZWxlY3QnLCAnbm9uZScpXHJcbiAgICAgICAgLnRleHQodGVtcGxhdGVDb25maWcubGFiZWwpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNwYW5lbCBjbGFzcz1cImRhZ2EtcGFuZWwgZGFnYS17eyBsb2NhdGlvbiB9fSBkYWdhLXt7IGRpcmVjdGlvbiB9fVwiPlxyXG4gIDxkYWdhLWNvbGxhcHNlLWJ1dHRvblxyXG4gICAgI2NvbGxhcHNlQnV0dG9uXHJcbiAgICBbZGlyZWN0aW9uXT1cImRpcmVjdGlvblwiXHJcbiAgICBbY29sbGFwc2FibGVTZWxlY3Rvcl09XCJwYW5lbFwiXHJcbiAgICBjb2xsYXBzYWJsZUFkZGl0aW9uYWxTZWxlY3Rvcj1cIi5kYWdhLXBhbmVsLWNvbnRlbnRcIlxyXG4gICAgcnVsZT1cImRpc3BsYXlcIlxyXG4gICAgY29sbGFwc2VkVmFsdWU9XCJub25lXCJcclxuICAgIHZpc2libGVWYWx1ZT1cImJsb2NrXCJcclxuICAgIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGFnYS1wYW5lbC1jb250ZW50XCI+XHJcbiAgICAgIEBpZiAocGFsZXR0ZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLXBhbmVsLXRhYnNcIj5cclxuICAgICAgICAgIEBmb3IgKHBhbGV0dGUgb2YgcGFsZXR0ZXM7IHRyYWNrIHBhbGV0dGUpIHtcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGFnYS1wYW5lbC10YWJcIlxyXG4gICAgICAgICAgICAgIFtjbGFzc109XCJwYWxldHRlID09PSBjdXJyZW50UGFsZXR0ZSA/ICdkYWdhLWN1cnJlbnQtdGFiJyA6ICcnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoUGFsZXR0ZShwYWxldHRlKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHBhbGV0dGUubmFtZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1wYWxldHRlLXZpZXdcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4iXX0=","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CursorStyle, DragEvents, Property, Type, isObject, setCursorStyle } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { CanvasProviderService } from '../../services/canvas-provider.service';\nimport { getStyleClassName } from '../property-editor.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * Editor of the settings of a property editor, such as what properties are displayed and hidden and in what order.\n * @private\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class PropertySettingsComponent {\n constructor() {\n this.#element = inject(ElementRef);\n this.#cdr = inject(ChangeDetectorRef);\n this.#canvasProvider = inject(CanvasProviderService);\n /** How many property-settings elements are parents of this property-settings element. @private */\n this.depth = 0;\n // Attributes for the template\n this.Type = Type;\n this.getStyleClassName = getStyleClassName;\n this.asString = asString;\n }\n #element;\n #cdr;\n #canvasProvider;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n get valueSet() {\n return this._valueSet;\n }\n set valueSet(valueSet) {\n if (this._valueSet !== valueSet) {\n this._valueSet = valueSet;\n // force value change detection\n this.#cdr.detectChanges();\n }\n }\n ngAfterViewInit() {\n this.addListeners();\n }\n addListeners() {\n for (const property of this.valueSet?.displayedProperties || []) {\n let propertyElementWidth = 0;\n let propertyElementHeight = 0;\n let closestDropbarIndex = 0;\n const propertyElement = d3\n .select(this.#element.nativeElement)\n .select(`.daga-property.${getStyleClassName(property.name)}.daga-depth-${this.depth}`);\n propertyElement.select('button.daga-move-button').call(d3\n .drag()\n .on(DragEvents.Start, (event) => {\n setCursorStyle(CursorStyle.Grabbing);\n const pointerCoords = this.canvas.getPointerLocationRelativeToScreen(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n const boundingRect = propertyElement\n .node()\n ?.getBoundingClientRect();\n propertyElementWidth = boundingRect?.width || 0;\n propertyElementHeight = boundingRect?.height || 0;\n propertyElement\n .style('position', 'fixed')\n .style('left', `${pointerCoords[0] - propertyElementWidth / 2}px`)\n .style('top', `${pointerCoords[1] - propertyElementHeight / 2}px`)\n .style('width', `${propertyElementWidth}px`)\n .style('height', `${propertyElementHeight}px`)\n .style('z-index', 1);\n })\n .on(DragEvents.Drag, (event) => {\n setCursorStyle(CursorStyle.Grabbing);\n const pointerCoords = this.canvas.getPointerLocationRelativeToScreen(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n propertyElement\n .style('position', 'fixed')\n .style('left', `${pointerCoords[0] - propertyElementWidth / 2}px`)\n .style('top', `${pointerCoords[1] - propertyElementHeight / 2}px`)\n .style('width', `${propertyElementWidth}px`)\n .style('height', `${propertyElementHeight}px`)\n .style('z-index', 1);\n d3.select(this.#element.nativeElement)\n .select(`.daga-dropbar.daga-index-${closestDropbarIndex}.daga-depth-${this.depth}`)\n .style('visibility', 'hidden')\n .style('height', 0);\n closestDropbarIndex = this.getClosestDropbarIndex(pointerCoords);\n d3.select(this.#element.nativeElement)\n .select(`.daga-dropbar.daga-index-${closestDropbarIndex}.daga-depth-${this.depth}`)\n .style('visibility', 'visible')\n .style('height', '0.25rem');\n })\n .on(DragEvents.End, (event) => {\n setCursorStyle(CursorStyle.Auto);\n propertyElement\n .style('position', 'relative')\n .style('left', 0)\n .style('top', 0)\n .style('z-index', 0)\n .style('width', 'unset')\n .style('height', 'unset');\n d3.select(this.#element.nativeElement)\n .select(`.daga-dropbar.daga-index-${closestDropbarIndex}.daga-depth-${this.depth}`)\n .style('visibility', 'hidden')\n .style('height', 0);\n const pointerCoords = this.canvas.getPointerLocationRelativeToScreen(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n closestDropbarIndex = this.getClosestDropbarIndex(pointerCoords);\n this.valueSet?.displayedProperties?.splice(this.valueSet.displayedProperties.indexOf(property), 1);\n this.valueSet?.displayedProperties?.splice(closestDropbarIndex, 0, property);\n this.#cdr.detectChanges();\n }));\n }\n }\n getClosestDropbarIndex(pointerCoords) {\n const propertyList = this.valueSet?.propertySet.propertyList || [];\n // note that this is <= and not < as we are counting the index after the last element as well\n const coordsList = [];\n for (let i = 0; i <= propertyList.length; ++i) {\n const boundingRect = d3\n .select(this.#element.nativeElement)\n .select(`.daga-dropbar.daga-index-${i}.daga-depth-${this.depth}`)\n .node()\n ?.getBoundingClientRect();\n if (boundingRect) {\n coordsList.push([\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2\n ]);\n }\n }\n if (coordsList.length > 0) {\n // euclidean distance\n const distanceToDropbars = coordsList.map((p) => ((pointerCoords[0] - p[0]) ** 2 + (pointerCoords[1] - p[1]) ** 2) **\n 0.5);\n const indexOfClosestDropbar = distanceToDropbars.indexOf(Math.min(...distanceToDropbars));\n return indexOfClosestDropbar;\n }\n return 0;\n }\n displayProperty(property) {\n if (this.valueSet === undefined) {\n return;\n }\n let selectedProperty;\n if (property instanceof Property) {\n selectedProperty = property;\n }\n else if (property instanceof Event) {\n selectedProperty = this.valueSet?.propertySet.getProperty(property.target?.value || '');\n }\n else {\n selectedProperty = this.valueSet?.propertySet.getProperty(property || '');\n }\n if (selectedProperty) {\n this.valueSet.displayProperty(selectedProperty);\n }\n this.#cdr.detectChanges();\n this.addListeners();\n }\n hideProperty(property) {\n if (this.valueSet === undefined) {\n return;\n }\n let selectedProperty;\n if (property instanceof Property) {\n selectedProperty = property;\n }\n else if (property instanceof Event) {\n selectedProperty = this.valueSet?.propertySet.getProperty(property.target?.value || '');\n }\n else {\n selectedProperty = this.valueSet?.propertySet.getProperty(property || '');\n }\n if (selectedProperty) {\n this.valueSet.hideProperty(selectedProperty);\n }\n this.#cdr.detectChanges();\n this.addListeners();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertySettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PropertySettingsComponent, isStandalone: true, selector: \"daga-property-settings\", inputs: { valueSet: \"valueSet\", depth: \"depth\" }, ngImport: i0, template: \"<div\\r\\n class=\\\"daga-dropbar\\\"\\r\\n [class]=\\\"'daga-index-' + 0 + ' daga-depth-' + depth\\\"\\r\\n></div>\\r\\n@for (\\r\\n property of valueSet?.displayedProperties || [];\\r\\n track property;\\r\\n let i = $index\\r\\n) {\\r\\n <div\\r\\n class=\\\"daga-property-and-dropbar\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <div\\r\\n class=\\\"daga-property\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <div class=\\\"daga-property-name\\\">\\r\\n <span>{{ property.name }}</span>\\r\\n <div class=\\\"daga-buttons\\\">\\r\\n <button class=\\\"daga-property-button daga-move-button\\\">\\r\\n <div class=\\\"daga-icon daga-move-icon\\\"></div>\\r\\n </button>\\r\\n <button\\r\\n class=\\\"daga-property-button daga-hide-button\\\"\\r\\n (click)=\\\"hideProperty(property.name)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-hide-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n @if (property.type !== Type.Object) {\\r\\n <div class=\\\"daga-property-value\\\">\\r\\n {{ asString(valueSet?.getValue(property.name)) }}\\r\\n </div>\\r\\n }\\r\\n @if (property.type === Type.Object) {\\r\\n <div>\\r\\n <daga-property-settings\\r\\n [valueSet]=\\\"valueSet?.getSubValueSet(property.name)\\\"\\r\\n [depth]=\\\"depth + 1\\\"\\r\\n ></daga-property-settings>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n <div\\r\\n class=\\\"daga-dropbar\\\"\\r\\n [class]=\\\"'daga-index-' + (i + 1) + ' daga-depth-' + depth\\\"\\r\\n ></div>\\r\\n </div>\\r\\n}\\r\\n@if (valueSet && valueSet.hiddenProperties.length > 0) {\\r\\n <div class=\\\"daga-property\\\">\\r\\n <p class=\\\"daga-property-name\\\">Add property:</p>\\r\\n <select (change)=\\\"displayProperty($event)\\\">\\r\\n <option value=\\\"\\\">Select a property</option>\\r\\n @for (property of valueSet.hiddenProperties || []; track property) {\\r\\n <option [value]=\\\"property.name\\\">\\r\\n {{ property.name }}\\r\\n </option>\\r\\n }\\r\\n </select>\\r\\n </div>\\r\\n}\\r\\n\", dependencies: [{ kind: \"component\", type: PropertySettingsComponent, selector: \"daga-property-settings\", inputs: [\"valueSet\", \"depth\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i1.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertySettingsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-property-settings', imports: [FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\r\\n class=\\\"daga-dropbar\\\"\\r\\n [class]=\\\"'daga-index-' + 0 + ' daga-depth-' + depth\\\"\\r\\n></div>\\r\\n@for (\\r\\n property of valueSet?.displayedProperties || [];\\r\\n track property;\\r\\n let i = $index\\r\\n) {\\r\\n <div\\r\\n class=\\\"daga-property-and-dropbar\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <div\\r\\n class=\\\"daga-property\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <div class=\\\"daga-property-name\\\">\\r\\n <span>{{ property.name }}</span>\\r\\n <div class=\\\"daga-buttons\\\">\\r\\n <button class=\\\"daga-property-button daga-move-button\\\">\\r\\n <div class=\\\"daga-icon daga-move-icon\\\"></div>\\r\\n </button>\\r\\n <button\\r\\n class=\\\"daga-property-button daga-hide-button\\\"\\r\\n (click)=\\\"hideProperty(property.name)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-hide-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n @if (property.type !== Type.Object) {\\r\\n <div class=\\\"daga-property-value\\\">\\r\\n {{ asString(valueSet?.getValue(property.name)) }}\\r\\n </div>\\r\\n }\\r\\n @if (property.type === Type.Object) {\\r\\n <div>\\r\\n <daga-property-settings\\r\\n [valueSet]=\\\"valueSet?.getSubValueSet(property.name)\\\"\\r\\n [depth]=\\\"depth + 1\\\"\\r\\n ></daga-property-settings>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n <div\\r\\n class=\\\"daga-dropbar\\\"\\r\\n [class]=\\\"'daga-index-' + (i + 1) + ' daga-depth-' + depth\\\"\\r\\n ></div>\\r\\n </div>\\r\\n}\\r\\n@if (valueSet && valueSet.hiddenProperties.length > 0) {\\r\\n <div class=\\\"daga-property\\\">\\r\\n <p class=\\\"daga-property-name\\\">Add property:</p>\\r\\n <select (change)=\\\"displayProperty($event)\\\">\\r\\n <option value=\\\"\\\">Select a property</option>\\r\\n @for (property of valueSet.hiddenProperties || []; track property) {\\r\\n <option [value]=\\\"property.name\\\">\\r\\n {{ property.name }}\\r\\n </option>\\r\\n }\\r\\n </select>\\r\\n </div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { valueSet: [{\n type: Input\n }], depth: [{\n type: Input\n }] } });\nexport const asString = (value) => {\n if (Array.isArray(value)) {\n return value.join(', ');\n }\n if (isObject(value)) {\n return Object.entries(value)\n .map((pair) => pair.map((p) => JSON.stringify(p)).join(': '))\n .join(', ');\n }\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n if (value === undefined || value === null) {\n return '';\n }\n return '' + value;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktc2V0dGluZ3MvcHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktc2V0dGluZ3MvcHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBRUwsV0FBVyxFQUNYLFVBQVUsRUFFVixRQUFRLEVBQ1IsSUFBSSxFQUVKLFFBQVEsRUFDUixjQUFjLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQUVqRTs7Ozs7R0FLRztBQU9ILE1BQU0sT0FBTyx5QkFBeUI7SUFOdEM7UUFPRSxhQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBa0JoRCxrR0FBa0c7UUFDekYsVUFBSyxHQUFHLENBQUMsQ0FB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clxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDYW52YXMsXHJcbiAgQ3Vyc29yU3R5bGUsXHJcbiAgRHJhZ0V2ZW50cyxcclxuICBQb2ludCxcclxuICBQcm9wZXJ0eSxcclxuICBUeXBlLFxyXG4gIFZhbHVlU2V0LFxyXG4gIGlzT2JqZWN0LFxyXG4gIHNldEN1cnNvclN0eWxlXHJcbn0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcclxuaW1wb3J0IHsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXRTdHlsZUNsYXNzTmFtZSB9IGZyb20gJy4uL3Byb3BlcnR5LWVkaXRvci5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEVkaXRvciBvZiB0aGUgc2V0dGluZ3Mgb2YgYSBwcm9wZXJ0eSBlZGl0b3IsIHN1Y2ggYXMgd2hhdCBwcm9wZXJ0aWVzIGFyZSBkaXNwbGF5ZWQgYW5kIGhpZGRlbiBhbmQgaW4gd2hhdCBvcmRlci5cclxuICogQHByaXZhdGVcclxuICogQHNlZSBQcm9wZXJ0eUVkaXRvclxyXG4gKiBAc2VlIFZhbHVlU2V0XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2EtcHJvcGVydHktc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXHJcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gICNlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gICNjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICNjYW52YXNQcm92aWRlciA9IGluamVjdChDYW52YXNQcm92aWRlclNlcnZpY2UpO1xyXG5cclxuICBnZXQgY2FudmFzKCk6IENhbnZhcyB7XHJcbiAgICByZXR1cm4gdGhpcy4jY2FudmFzUHJvdmlkZXIuZ2V0Q2FudmFzKCk7XHJcbiAgfVxyXG5cclxuICBfdmFsdWVTZXQ/OiBWYWx1ZVNldDtcclxuICBASW5wdXQoKVxyXG4gIGdldCB2YWx1ZVNldCgpOiBWYWx1ZVNldCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVTZXQ7XHJcbiAgfVxyXG4gIHNldCB2YWx1ZVNldCh2YWx1ZVNldDogVmFsdWVTZXQgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl92YWx1ZVNldCAhPT0gdmFsdWVTZXQpIHtcclxuICAgICAgdGhpcy5fdmFsdWVTZXQgPSB2YWx1ZVNldDtcclxuICAgICAgLy8gZm9yY2UgdmFsdWUgY2hhbmdlIGRldGVjdGlvblxyXG4gICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKiogSG93IG1hbnkgcHJvcGVydHktc2V0dGluZ3MgZWxlbWVudHMgYXJlIHBhcmVudHMgb2YgdGhpcyBwcm9wZXJ0eS1zZXR0aW5ncyBlbGVtZW50LiBAcHJpdmF0ZSAqL1xyXG4gIEBJbnB1dCgpIGRlcHRoID0gMDtcclxuXHJcbiAgLy8gQXR0cmlidXRlcyBmb3IgdGhlIHRlbXBsYXRlXHJcbiAgVHlwZSA9IFR5cGU7XHJcbiAgZ2V0U3R5bGVDbGFzc05hbWUgPSBnZXRTdHlsZUNsYXNzTmFtZTtcclxuICBhc1N0cmluZyA9IGFzU3RyaW5nO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZExpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRMaXN0ZW5lcnMoKSB7XHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHRoaXMudmFsdWVTZXQ/LmRpc3BsYXllZFByb3BlcnRpZXMgfHwgW10pIHtcclxuICAgICAgbGV0IHByb3BlcnR5RWxlbWVudFdpZHRoID0gMDtcclxuICAgICAgbGV0IHByb3BlcnR5RWxlbWVudEhlaWdodCA9IDA7XHJcbiAgICAgIGxldCBjbG9zZXN0RHJvcGJhckluZGV4ID0gMDtcclxuICAgICAgY29uc3QgcHJvcGVydHlFbGVtZW50ID0gZDNcclxuICAgICAgICAuc2VsZWN0KHRoaXMuI2VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgICAgICAuc2VsZWN0PEhUTUxEaXZFbGVtZW50PihcclxuICAgICAgICAgIGAuZGFnYS1wcm9wZXJ0eS4ke2dldFN0eWxlQ2xhc3NOYW1lKHByb3BlcnR5Lm5hbWUpfS5kYWdhLWRlcHRoLSR7dGhpcy5kZXB0aH1gXHJcbiAgICAgICAgKTtcclxuICAgICAgcHJvcGVydHlFbGVtZW50LnNlbGVjdDxIVE1MQnV0dG9uRWxlbWVudD4oJ2J1dHRvbi5kYWdhLW1vdmUtYnV0dG9uJykuY2FsbChcclxuICAgICAgICBkM1xyXG4gICAgICAgICAgLmRyYWc8SFRNTEJ1dHRvbkVsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50PigpXHJcbiAgICAgICAgICAub24oRHJhZ0V2ZW50cy5TdGFydCwgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgc2V0Q3Vyc29yU3R5bGUoQ3Vyc29yU3R5bGUuR3JhYmJpbmcpO1xyXG4gICAgICAgICAgICBjb25zdCBwb2ludGVyQ29vcmRzID1cclxuICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5nZXRQb2ludGVyTG9jYXRpb25SZWxhdGl2ZVRvU2NyZWVuKGV2ZW50KTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHBvaW50ZXJDb29yZHMubGVuZ3RoIDwgMiB8fFxyXG4gICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMF0pIHx8XHJcbiAgICAgICAgICAgICAgaXNOYU4ocG9pbnRlckNvb3Jkc1sxXSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kaW5nUmVjdCA9IHByb3BlcnR5RWxlbWVudFxyXG4gICAgICAgICAgICAgIC5ub2RlKClcclxuICAgICAgICAgICAgICA/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBwcm9wZXJ0eUVsZW1lbnRXaWR0aCA9IGJvdW5kaW5nUmVjdD8ud2lkdGggfHwgMDtcclxuICAgICAgICAgICAgcHJvcGVydHlFbGVtZW50SGVpZ2h0ID0gYm91bmRpbmdSZWN0Py5oZWlnaHQgfHwgMDtcclxuICAgICAgICAgICAgcHJvcGVydHlFbGVtZW50XHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdwb3NpdGlvbicsICdmaXhlZCcpXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdsZWZ0JywgYCR7cG9pbnRlckNvb3Jkc1swXSAtIHByb3BlcnR5RWxlbWVudFdpZHRoIC8gMn1weGApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd0b3AnLCBgJHtwb2ludGVyQ29vcmRzWzFdIC0gcHJvcGVydHlFbGVtZW50SGVpZ2h0IC8gMn1weGApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd3aWR0aCcsIGAke3Byb3BlcnR5RWxlbWVudFdpZHRofXB4YClcclxuICAgICAgICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIGAke3Byb3BlcnR5RWxlbWVudEhlaWdodH1weGApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd6LWluZGV4JywgMSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLm9uKERyYWdFdmVudHMuRHJhZywgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgc2V0Q3Vyc29yU3R5bGUoQ3Vyc29yU3R5bGUuR3JhYmJpbmcpO1xyXG4gICAgICAgICAgICBjb25zdCBwb2ludGVyQ29vcmRzID1cclxuICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5nZXRQb2ludGVyTG9jYXRpb25SZWxhdGl2ZVRvU2NyZWVuKGV2ZW50KTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHBvaW50ZXJDb29yZHMubGVuZ3RoIDwgMiB8fFxyXG4gICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMF0pIHx8XHJcbiAgICAgICAgICAgICAgaXNOYU4ocG9pbnRlckNvb3Jkc1sxXSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb3BlcnR5RWxlbWVudFxyXG4gICAgICAgICAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnZml4ZWQnKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnbGVmdCcsIGAke3BvaW50ZXJDb29yZHNbMF0gLSBwcm9wZXJ0eUVsZW1lbnRXaWR0aCAvIDJ9cHhgKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgndG9wJywgYCR7cG9pbnRlckNvb3Jkc1sxXSAtIHByb3BlcnR5RWxlbWVudEhlaWdodCAvIDJ9cHhgKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnd2lkdGgnLCBgJHtwcm9wZXJ0eUVsZW1lbnRXaWR0aH1weGApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdoZWlnaHQnLCBgJHtwcm9wZXJ0eUVsZW1lbnRIZWlnaHR9cHhgKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnei1pbmRleCcsIDEpO1xyXG4gICAgICAgICAgICBkMy5zZWxlY3QodGhpcy4jZWxlbWVudC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAgICAgICAgIC5zZWxlY3QoXHJcbiAgICAgICAgICAgICAgICBgLmRhZ2EtZHJvcGJhci5kYWdhLWluZGV4LSR7Y2xvc2VzdERyb3BiYXJJbmRleH0uZGFnYS1kZXB0aC0ke3RoaXMuZGVwdGh9YFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAuc3R5bGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJylcclxuICAgICAgICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIDApO1xyXG4gICAgICAgICAgICBjbG9zZXN0RHJvcGJhckluZGV4ID0gdGhpcy5nZXRDbG9zZXN0RHJvcGJhckluZGV4KHBvaW50ZXJDb29yZHMpO1xyXG4gICAgICAgICAgICBkMy5zZWxlY3QodGhpcy4jZWxlbWVudC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAgICAgICAgIC5zZWxlY3QoXHJcbiAgICAgICAgICAgICAgICBgLmRhZ2EtZHJvcGJhci5kYWdhLWluZGV4LSR7Y2xvc2VzdERyb3BiYXJJbmRleH0uZGFnYS1kZXB0aC0ke3RoaXMuZGVwdGh9YFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAuc3R5bGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMC4yNXJlbScpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5vbihEcmFnRXZlbnRzLkVuZCwgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgc2V0Q3Vyc29yU3R5bGUoQ3Vyc29yU3R5bGUuQXV0byk7XHJcbiAgICAgICAgICAgIHByb3BlcnR5RWxlbWVudFxyXG4gICAgICAgICAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAncmVsYXRpdmUnKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnbGVmdCcsIDApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd0b3AnLCAwKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnei1pbmRleCcsIDApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd3aWR0aCcsICd1bnNldCcpXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdoZWlnaHQnLCAndW5zZXQnKTtcclxuICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMuI2VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgICAgICAgICAgICAuc2VsZWN0KFxyXG4gICAgICAgICAgICAgICAgYC5kYWdhLWRyb3BiYXIuZGFnYS1pbmRleC0ke2Nsb3Nlc3REcm9wYmFySW5kZXh9LmRhZ2EtZGVwdGgtJHt0aGlzLmRlcHRofWBcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdoZWlnaHQnLCAwKTtcclxuICAgICAgICAgICAgY29uc3QgcG9pbnRlckNvb3JkcyA9XHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXMuZ2V0UG9pbnRlckxvY2F0aW9uUmVsYXRpdmVUb1NjcmVlbihldmVudCk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzLmxlbmd0aCA8IDIgfHxcclxuICAgICAgICAgICAgICBpc05hTihwb2ludGVyQ29vcmRzWzBdKSB8fFxyXG4gICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMV0pXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjbG9zZXN0RHJvcGJhckluZGV4ID0gdGhpcy5nZXRDbG9zZXN0RHJvcGJhckluZGV4KHBvaW50ZXJDb29yZHMpO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlU2V0Py5kaXNwbGF5ZWRQcm9wZXJ0aWVzPy5zcGxpY2UoXHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZVNldC5kaXNwbGF5ZWRQcm9wZXJ0aWVzLmluZGV4T2YocHJvcGVydHkpLFxyXG4gICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZVNldD8uZGlzcGxheWVkUHJvcGVydGllcz8uc3BsaWNlKFxyXG4gICAgICAgICAgICAgIGNsb3Nlc3REcm9wYmFySW5kZXgsXHJcbiAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICBwcm9wZXJ0eVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENsb3Nlc3REcm9wYmFySW5kZXgocG9pbnRlckNvb3JkczogUG9pbnQpOiBudW1iZXIge1xyXG4gICAgY29uc3QgcHJvcGVydHlMaXN0ID0gdGhpcy52YWx1ZVNldD8ucHJvcGVydHlTZXQucHJvcGVydHlMaXN0IHx8IFtdO1xyXG4gICAgLy8gbm90ZSB0aGF0IHRoaXMgaXMgPD0gYW5kIG5vdCA8IGFzIHdlIGFyZSBjb3VudGluZyB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgZWxlbWVudCBhcyB3ZWxsXHJcbiAgICBjb25zdCBjb29yZHNMaXN0OiBQb2ludFtdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwcm9wZXJ0eUxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYm91bmRpbmdSZWN0ID0gZDNcclxuICAgICAgICAuc2VsZWN0KHRoaXMuI2VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgICAgICAuc2VsZWN0PEhUTUxEaXZFbGVtZW50PihcclxuICAgICAgICAgIGAuZGFnYS1kcm9wYmFyLmRhZ2EtaW5kZXgtJHtpfS5kYWdhLWRlcHRoLSR7dGhpcy5kZXB0aH1gXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5ub2RlKClcclxuICAgICAgICA/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBpZiAoYm91bmRpbmdSZWN0KSB7XHJcbiAgICAgICAgY29vcmRzTGlzdC5wdXNoKFtcclxuICAgICAgICAgIGJvdW5kaW5nUmVjdC54ICsgYm91bmRpbmdSZWN0LndpZHRoIC8gMixcclxuICAgICAgICAgIGJvdW5kaW5nUmVjdC55ICsgYm91bmRpbmdSZWN0LmhlaWdodCAvIDJcclxuICAgICAgICBdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNvb3Jkc0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyBldWNsaWRlYW4gZGlzdGFuY2VcclxuICAgICAgY29uc3QgZGlzdGFuY2VUb0Ryb3BiYXJzID0gY29vcmRzTGlzdC5tYXAoXHJcbiAgICAgICAgKHApID0+XHJcbiAgICAgICAgICAoKHBvaW50ZXJDb29yZHNbMF0gLSBwWzBdKSAqKiAyICsgKHBvaW50ZXJDb29yZHNbMV0gLSBwWzFdKSAqKiAyKSAqKlxyXG4gICAgICAgICAgMC41XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGluZGV4T2ZDbG9zZXN0RHJvcGJhciA9IGRpc3RhbmNlVG9Ecm9wYmFycy5pbmRleE9mKFxyXG4gICAgICAgIE1hdGgubWluKC4uLmRpc3RhbmNlVG9Ecm9wYmFycylcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGluZGV4T2ZDbG9zZXN0RHJvcGJhcjtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgZGlzcGxheVByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSB8IEV2ZW50IHwgc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZVNldCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBzZWxlY3RlZFByb3BlcnR5OiBQcm9wZXJ0eSB8IHVuZGVmaW5lZDtcclxuICAgIGlmIChwcm9wZXJ0eSBpbnN0YW5jZW9mIFByb3BlcnR5KSB7XHJcbiAgICAgIHNlbGVjdGVkUHJvcGVydHkgPSBwcm9wZXJ0eTtcclxuICAgIH0gZWxzZSBpZiAocHJvcGVydHkgaW5zdGFuY2VvZiBFdmVudCkge1xyXG4gICAgICBzZWxlY3RlZFByb3BlcnR5ID0gdGhpcy52YWx1ZVNldD8ucHJvcGVydHlTZXQuZ2V0UHJvcGVydHkoXHJcbiAgICAgICAgKHByb3BlcnR5LnRhcmdldCBhcyB1bmtub3duIGFzIHsgdmFsdWU6IHN0cmluZyB9KT8udmFsdWUgfHwgJydcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLnZhbHVlU2V0Py5wcm9wZXJ0eVNldC5nZXRQcm9wZXJ0eShwcm9wZXJ0eSB8fCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWRQcm9wZXJ0eSkge1xyXG4gICAgICB0aGlzLnZhbHVlU2V0LmRpc3BsYXlQcm9wZXJ0eShzZWxlY3RlZFByb3BlcnR5KTtcclxuICAgIH1cclxuICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmFkZExpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgaGlkZVByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSB8IEV2ZW50IHwgc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZVNldCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBzZWxlY3RlZFByb3BlcnR5OiBQcm9wZXJ0eSB8IHVuZGVmaW5lZDtcclxuICAgIGlmIChwcm9wZXJ0eSBpbnN0YW5jZW9mIFByb3BlcnR5KSB7XHJcbiAgICAgIHNlbGVjdGVkUHJvcGVydHkgPSBwcm9wZXJ0eTtcclxuICAgIH0gZWxzZSBpZiAocHJvcGVydHkgaW5zdGFuY2VvZiBFdmVudCkge1xyXG4gICAgICBzZWxlY3RlZFByb3BlcnR5ID0gdGhpcy52YWx1ZVNldD8ucHJvcGVydHlTZXQuZ2V0UHJvcGVydHkoXHJcbiAgICAgICAgKHByb3BlcnR5LnRhcmdldCBhcyB1bmtub3duIGFzIHsgdmFsdWU6IHN0cmluZyB9KT8udmFsdWUgfHwgJydcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLnZhbHVlU2V0Py5wcm9wZXJ0eVNldC5nZXRQcm9wZXJ0eShwcm9wZXJ0eSB8fCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWRQcm9wZXJ0eSkge1xyXG4gICAgICB0aGlzLnZhbHVlU2V0LmhpZGVQcm9wZXJ0eShzZWxlY3RlZFByb3BlcnR5KTtcclxuICAgIH1cclxuICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmFkZExpc3RlbmVycygpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFzU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcclxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgIHJldHVybiB2YWx1ZS5qb2luKCcsICcpO1xyXG4gIH1cclxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUgYXMgb2JqZWN0KVxyXG4gICAgICAubWFwKChwYWlyKSA9PiBwYWlyLm1hcCgocCkgPT4gSlNPTi5zdHJpbmdpZnkocCkpLmpvaW4oJzogJykpXHJcbiAgICAgIC5qb2luKCcsICcpO1xyXG4gIH1cclxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICByZXR1cm4gdmFsdWUudG9Mb2NhbGVTdHJpbmcoKTtcclxuICB9XHJcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgcmV0dXJuICcnICsgdmFsdWU7XHJcbn07XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImRhZ2EtZHJvcGJhclwiXHJcbiAgW2NsYXNzXT1cIidkYWdhLWluZGV4LScgKyAwICsgJyBkYWdhLWRlcHRoLScgKyBkZXB0aFwiXHJcbj48L2Rpdj5cclxuQGZvciAoXHJcbiAgcHJvcGVydHkgb2YgdmFsdWVTZXQ/LmRpc3BsYXllZFByb3BlcnRpZXMgfHwgW107XHJcbiAgdHJhY2sgcHJvcGVydHk7XHJcbiAgbGV0IGkgPSAkaW5kZXhcclxuKSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5LWFuZC1kcm9wYmFyXCJcclxuICAgIFtjbGFzc109XCJnZXRTdHlsZUNsYXNzTmFtZShwcm9wZXJ0eS5uYW1lKSArICcgZGFnYS1kZXB0aC0nICsgZGVwdGhcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5XCJcclxuICAgICAgW2NsYXNzXT1cImdldFN0eWxlQ2xhc3NOYW1lKHByb3BlcnR5Lm5hbWUpICsgJyBkYWdhLWRlcHRoLScgKyBkZXB0aFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLXByb3BlcnR5LW5hbWVcIj5cclxuICAgICAgICA8c3Bhbj57eyBwcm9wZXJ0eS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWJ1dHRvbnNcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkYWdhLXByb3BlcnR5LWJ1dHRvbiBkYWdhLW1vdmUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWljb24gZGFnYS1tb3ZlLWljb25cIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImRhZ2EtcHJvcGVydHktYnV0dG9uIGRhZ2EtaGlkZS1idXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiaGlkZVByb3BlcnR5KHByb3BlcnR5Lm5hbWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtaWNvbiBkYWdhLWhpZGUtaWNvblwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKHByb3BlcnR5LnR5cGUgIT09IFR5cGUuT2JqZWN0KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtcHJvcGVydHktdmFsdWVcIj5cclxuICAgICAgICAgIHt7IGFzU3RyaW5nKHZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKSkgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuT2JqZWN0KSB7XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxkYWdhLXByb3BlcnR5LXNldHRpbmdzXHJcbiAgICAgICAgICAgIFt2YWx1ZVNldF09XCJ2YWx1ZVNldD8uZ2V0U3ViVmFsdWVTZXQocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgICAgICBbZGVwdGhdPVwiZGVwdGggKyAxXCJcclxuICAgICAgICAgID48L2RhZ2EtcHJvcGVydHktc2V0dGluZ3M+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImRhZ2EtZHJvcGJhclwiXHJcbiAgICAgIFtjbGFzc109XCInZGFnYS1pbmRleC0nICsgKGkgKyAxKSArICcgZGFnYS1kZXB0aC0nICsgZGVwdGhcIlxyXG4gICAgPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG59XHJcbkBpZiAodmFsdWVTZXQgJiYgdmFsdWVTZXQuaGlkZGVuUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XHJcbiAgPGRpdiBjbGFzcz1cImRhZ2EtcHJvcGVydHlcIj5cclxuICAgIDxwIGNsYXNzPVwiZGFnYS1wcm9wZXJ0eS1uYW1lXCI+QWRkIHByb3BlcnR5OjwvcD5cclxuICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJkaXNwbGF5UHJvcGVydHkoJGV2ZW50KVwiPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGEgcHJvcGVydHk8L29wdGlvbj5cclxuICAgICAgQGZvciAocHJvcGVydHkgb2YgdmFsdWVTZXQuaGlkZGVuUHJvcGVydGllcyB8fCBbXTsgdHJhY2sgcHJvcGVydHkpIHtcclxuICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJwcm9wZXJ0eS5uYW1lXCI+XHJcbiAgICAgICAgICB7eyBwcm9wZXJ0eS5uYW1lIH19XHJcbiAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgIH1cclxuICAgIDwvc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Keys, equals } from '@metadev/daga';\nimport { asString } from '../property-settings/property-settings.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const LOST_FOCUS_TIME_WINDOW_MS = 200;\n/**\n * Combobox with autocomplete.\n * @private\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class AutocompleteComponent {\n constructor() {\n this.valueInput = '';\n this.disabled = false;\n this.showOptions = false;\n this.valueChange = new EventEmitter();\n }\n set value(value) {\n if (equals(value, this._value)) {\n return;\n }\n this._value = value;\n this.valueInput = this.getLabelOfValue(value);\n }\n get value() {\n return this._value;\n }\n getLabelOfValue(value) {\n for (const option of this.options) {\n if (equals(option.key, value)) {\n return option.label;\n }\n }\n return asString(value);\n }\n onKeyUp(event) {\n if (!this.disabled) {\n switch (event.key) {\n case Keys.PageDown:\n if (this.focusIndex === undefined) {\n this.focusOnOption(0);\n this.scrollToOption(0);\n }\n else {\n this.focusOnOption(this.focusIndex + 5);\n this.scrollToOption(this.focusIndex);\n }\n event.preventDefault();\n break;\n case Keys.ArrowDown:\n if (this.focusIndex === undefined) {\n this.focusOnOption(0);\n this.scrollToOption(0);\n }\n else {\n this.focusOnOption(this.focusIndex + 1);\n this.scrollToOption(this.focusIndex);\n }\n event.preventDefault();\n break;\n case Keys.PageUp:\n if (this.focusIndex === undefined) {\n this.focusOnOption(this.options.length - 1);\n this.scrollToOption(this.options.length - 1);\n }\n else {\n this.focusOnOption(this.focusIndex - 5);\n this.scrollToOption(this.focusIndex);\n }\n event.preventDefault();\n break;\n case Keys.ArrowUp:\n if (this.focusIndex === undefined) {\n this.focusOnOption(this.options.length - 1);\n this.scrollToOption(this.options.length - 1);\n }\n else {\n this.focusOnOption(this.focusIndex - 1);\n this.scrollToOption(this.focusIndex);\n }\n event.preventDefault();\n break;\n case Keys.Escape:\n this.closeOptions();\n event.preventDefault();\n break;\n case Keys.Enter:\n this.complete(this.options[this.focusIndex || 0]);\n event.preventDefault();\n break;\n default:\n this.openOptions();\n }\n }\n }\n openOptions() {\n if (!this.disabled) {\n const mustContain = normalizeString(this.valueInput.trim());\n this.currentOptions = [];\n this.currentLabelStarts = [];\n this.currentLabelMatches = [];\n this.currentLabelEnds = [];\n for (const option of this.options) {\n const normalizedLabel = normalizeString(option.label);\n const position = normalizedLabel.indexOf(mustContain);\n if (position >= 0) {\n const labelStart = option.label.substring(0, position);\n const labelMatch = option.label.substring(position, position + mustContain.length);\n const labelEnd = option.label.substring(position + mustContain.length);\n this.currentOptions.push(option);\n this.currentLabelStarts.push(labelStart);\n this.currentLabelMatches.push(labelMatch);\n this.currentLabelEnds.push(labelEnd);\n }\n }\n this.showOptions = true;\n }\n }\n closeOptions() {\n this.showOptions = false;\n }\n focusOnOption(index) {\n if (!this.disabled) {\n this.focusIndex = index;\n if (index === undefined) {\n return;\n }\n if (index < 0) {\n this.focusIndex = 0;\n }\n if (index >= this.options.length) {\n this.focusIndex = this.options.length - 1;\n }\n }\n }\n onLostFocus() {\n setTimeout(() => {\n this.closeOptions();\n }, LOST_FOCUS_TIME_WINDOW_MS);\n }\n scrollToOption(index) {\n const target = this.mainElement.nativeElement.querySelectorAll('li')[index];\n if (target) {\n target.scrollIntoView({ block: 'center' });\n }\n }\n clearInput() {\n if (!this.disabled) {\n this.value = undefined;\n this.valueInput = '';\n this.showOptions = false;\n this.focusIndex = undefined;\n }\n }\n complete(option) {\n if (!this.disabled) {\n this.value = option;\n this.valueInput = option.label;\n this.showOptions = false;\n this.focusIndex = undefined;\n this.valueChange.emit(option.key);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: AutocompleteComponent, isStandalone: true, selector: \"daga-autocomplete\", inputs: { value: \"value\", valueInput: \"valueInput\", options: \"options\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"mainElement\", first: true, predicate: [\"main\"], descendants: true, static: true }], ngImport: i0, template: \"<div\\r\\n #main\\r\\n class=\\\"daga-autocomplete\\\"\\r\\n [class]=\\\"showOptions ? 'daga-showing-options' : ''\\\"\\r\\n (blur)=\\\"closeOptions()\\\"\\r\\n>\\r\\n <div class=\\\"daga-autocomplete-input\\\">\\r\\n <input\\r\\n [(ngModel)]=\\\"valueInput\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n (keyup)=\\\"onKeyUp($event)\\\"\\r\\n (focus)=\\\"openOptions()\\\"\\r\\n (blur)=\\\"onLostFocus()\\\"\\r\\n />\\r\\n @if (valueInput !== '') {\\r\\n <button class=\\\"daga-clear\\\" (click)=\\\"clearInput()\\\"></button>\\r\\n }\\r\\n </div>\\r\\n <div class=\\\"daga-autocomplete-options\\\">\\r\\n <ul class=\\\"daga-autocomplete-option-list\\\">\\r\\n @if (currentOptions !== undefined ? currentOptions.length === 0 : true) {\\r\\n <li class=\\\"daga-autocomplete-option no-options\\\">(No options)</li>\\r\\n }\\r\\n @for (option of currentOptions; track option; let index = $index) {\\r\\n <li\\r\\n class=\\\"daga-autocomplete-option\\\"\\r\\n [class]=\\\"index === focusIndex ? 'daga-focused' : ''\\\"\\r\\n (mousemove)=\\\"focusOnOption(index)\\\"\\r\\n (click)=\\\"complete(option)\\\"\\r\\n >\\r\\n <span>{{ currentLabelStarts[index] }}</span>\\r\\n <span class=\\\"daga-match\\\">{{ currentLabelMatches[index] }}</span>\\r\\n <span>{{ currentLabelEnds[index] }}</span>\\r\\n </li>\\r\\n }\\r\\n </ul>\\r\\n </div>\\r\\n</div>\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-autocomplete', imports: [FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\r\\n #main\\r\\n class=\\\"daga-autocomplete\\\"\\r\\n [class]=\\\"showOptions ? 'daga-showing-options' : ''\\\"\\r\\n (blur)=\\\"closeOptions()\\\"\\r\\n>\\r\\n <div class=\\\"daga-autocomplete-input\\\">\\r\\n <input\\r\\n [(ngModel)]=\\\"valueInput\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n (keyup)=\\\"onKeyUp($event)\\\"\\r\\n (focus)=\\\"openOptions()\\\"\\r\\n (blur)=\\\"onLostFocus()\\\"\\r\\n />\\r\\n @if (valueInput !== '') {\\r\\n <button class=\\\"daga-clear\\\" (click)=\\\"clearInput()\\\"></button>\\r\\n }\\r\\n </div>\\r\\n <div class=\\\"daga-autocomplete-options\\\">\\r\\n <ul class=\\\"daga-autocomplete-option-list\\\">\\r\\n @if (currentOptions !== undefined ? currentOptions.length === 0 : true) {\\r\\n <li class=\\\"daga-autocomplete-option no-options\\\">(No options)</li>\\r\\n }\\r\\n @for (option of currentOptions; track option; let index = $index) {\\r\\n <li\\r\\n class=\\\"daga-autocomplete-option\\\"\\r\\n [class]=\\\"index === focusIndex ? 'daga-focused' : ''\\\"\\r\\n (mousemove)=\\\"focusOnOption(index)\\\"\\r\\n (click)=\\\"complete(option)\\\"\\r\\n >\\r\\n <span>{{ currentLabelStarts[index] }}</span>\\r\\n <span class=\\\"daga-match\\\">{{ currentLabelMatches[index] }}</span>\\r\\n <span>{{ currentLabelEnds[index] }}</span>\\r\\n </li>\\r\\n }\\r\\n </ul>\\r\\n </div>\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { mainElement: [{\n type: ViewChild,\n args: ['main', { static: true }]\n }], value: [{\n type: Input\n }], valueInput: [{\n type: Input\n }], options: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\nconst normalizeString = (a) => (a || '')\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvcHJvcGVydHktZWRpdG9yL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0RBQWtELENBQUM7OztBQUU1RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUM7QUFFN0M7Ozs7O0dBS0c7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBTmxDO1FBcUJXLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFRaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVWLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQW1KckQ7SUF6S0MsSUFDSSxLQUFLLENBQUMsS0FBYztRQUN0QixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FB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SUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDOzhHQTVLVSxxQkFBcUI7a0dBQXJCLHFCQUFxQix5VUMzQmxDLGsxQ0FzQ0EsMkNEZFksV0FBVzs7MkZBR1YscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLG1CQUFtQixXQUVwQixDQUFDLFdBQVcsQ0FBQyxtQkFDTCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdWLFdBQVc7c0JBQS9DLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0IsS0FBSztzQkFEUixLQUFLO2dCQVdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTTs7QUFxSlQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFTLEVBQVUsRUFBRSxDQUM1QyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDTixXQUFXLEVBQUU7S0FDYixTQUFTLENBQUMsS0FBSyxDQUFDO0tBQ2hCLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEtleXMsIE9wdGlvbiwgZXF1YWxzIH0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCB7IGFzU3RyaW5nIH0gZnJvbSAnLi4vcHJvcGVydHktc2V0dGluZ3MvcHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBMT1NUX0ZPQ1VTX1RJTUVfV0lORE9XX01TID0gMjAwO1xyXG5cclxuLyoqXHJcbiAqIENvbWJvYm94IHdpdGggYXV0b2NvbXBsZXRlLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBAc2VlIFByb3BlcnR5RWRpdG9yXHJcbiAqIEBzZWUgVmFsdWVTZXRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGFnYS1hdXRvY29tcGxldGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZV0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnbWFpbicsIHsgc3RhdGljOiB0cnVlIH0pIG1haW5FbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHVua25vd247XHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodmFsdWU6IHVua25vd24pIHtcclxuICAgIGlmIChlcXVhbHModmFsdWUsIHRoaXMuX3ZhbHVlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy52YWx1ZUlucHV0ID0gdGhpcy5nZXRMYWJlbE9mVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogdW5rbm93biB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHZhbHVlSW5wdXQgPSAnJztcclxuICBmb2N1c0luZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMhOiBPcHRpb248dW5rbm93bj5bXTtcclxuICBjdXJyZW50T3B0aW9ucyE6IE9wdGlvbjx1bmtub3duPltdO1xyXG4gIGN1cnJlbnRMYWJlbFN0YXJ0cyE6IHN0cmluZ1tdO1xyXG4gIGN1cnJlbnRMYWJlbE1hdGNoZXMhOiBzdHJpbmdbXTtcclxuICBjdXJyZW50TGFiZWxFbmRzITogc3RyaW5nW107XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgc2hvd09wdGlvbnMgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG5cclxuICBnZXRMYWJlbE9mVmFsdWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XHJcbiAgICAgIGlmIChlcXVhbHMob3B0aW9uLmtleSwgdmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbi5sYWJlbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFzU3RyaW5nKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICAgIGNhc2UgS2V5cy5QYWdlRG93bjpcclxuICAgICAgICAgIGlmICh0aGlzLmZvY3VzSW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25PcHRpb24oMCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9PcHRpb24oMCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25PcHRpb24odGhpcy5mb2N1c0luZGV4ICsgNSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9PcHRpb24odGhpcy5mb2N1c0luZGV4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEtleXMuQXJyb3dEb3duOlxyXG4gICAgICAgICAgaWYgKHRoaXMuZm9jdXNJbmRleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbk9wdGlvbigwKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbigwKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbk9wdGlvbih0aGlzLmZvY3VzSW5kZXggKyAxKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbih0aGlzLmZvY3VzSW5kZXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgS2V5cy5QYWdlVXA6XHJcbiAgICAgICAgICBpZiAodGhpcy5mb2N1c0luZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c09uT3B0aW9uKHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbih0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25PcHRpb24odGhpcy5mb2N1c0luZGV4IC0gNSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9PcHRpb24odGhpcy5mb2N1c0luZGV4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEtleXMuQXJyb3dVcDpcclxuICAgICAgICAgIGlmICh0aGlzLmZvY3VzSW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25PcHRpb24odGhpcy5vcHRpb25zLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvT3B0aW9uKHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbk9wdGlvbih0aGlzLmZvY3VzSW5kZXggLSAxKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbih0aGlzLmZvY3VzSW5kZXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgS2V5cy5Fc2NhcGU6XHJcbiAgICAgICAgICB0aGlzLmNsb3NlT3B0aW9ucygpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgS2V5cy5FbnRlcjpcclxuICAgICAgICAgIHRoaXMuY29tcGxldGUodGhpcy5vcHRpb25zW3RoaXMuZm9jdXNJbmRleCB8fCAwXSk7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMub3Blbk9wdGlvbnMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3Blbk9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgY29uc3QgbXVzdENvbnRhaW4gPSBub3JtYWxpemVTdHJpbmcodGhpcy52YWx1ZUlucHV0LnRyaW0oKSk7XHJcbiAgICAgIHRoaXMuY3VycmVudE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50TGFiZWxTdGFydHMgPSBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50TGFiZWxNYXRjaGVzID0gW107XHJcbiAgICAgIHRoaXMuY3VycmVudExhYmVsRW5kcyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBub3JtYWxpemVTdHJpbmcob3B0aW9uLmxhYmVsKTtcclxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IG5vcm1hbGl6ZWRMYWJlbC5pbmRleE9mKG11c3RDb250YWluKTtcclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xyXG4gICAgICAgICAgY29uc3QgbGFiZWxTdGFydCA9IG9wdGlvbi5sYWJlbC5zdWJzdHJpbmcoMCwgcG9zaXRpb24pO1xyXG4gICAgICAgICAgY29uc3QgbGFiZWxNYXRjaCA9IG9wdGlvbi5sYWJlbC5zdWJzdHJpbmcoXHJcbiAgICAgICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgICAgICBwb3NpdGlvbiArIG11c3RDb250YWluLmxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsRW5kID0gb3B0aW9uLmxhYmVsLnN1YnN0cmluZyhcclxuICAgICAgICAgICAgcG9zaXRpb24gKyBtdXN0Q29udGFpbi5sZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRPcHRpb25zLnB1c2gob3B0aW9uKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudExhYmVsU3RhcnRzLnB1c2gobGFiZWxTdGFydCk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRMYWJlbE1hdGNoZXMucHVzaChsYWJlbE1hdGNoKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudExhYmVsRW5kcy5wdXNoKGxhYmVsRW5kKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93T3B0aW9ucyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZU9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dPcHRpb25zID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uT3B0aW9uKGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmZvY3VzSW5kZXggPSBpbmRleDtcclxuICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgIHRoaXMuZm9jdXNJbmRleCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4ID49IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmZvY3VzSW5kZXggPSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Mb3N0Rm9jdXMoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZU9wdGlvbnMoKTtcclxuICAgIH0sIExPU1RfRk9DVVNfVElNRV9XSU5ET1dfTVMpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9PcHRpb24oaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpJylbaW5kZXhdO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhcklucHV0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMudmFsdWVJbnB1dCA9ICcnO1xyXG4gICAgICB0aGlzLnNob3dPcHRpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZm9jdXNJbmRleCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBsZXRlKG9wdGlvbjogT3B0aW9uPHVua25vd24+KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG9wdGlvbjtcclxuICAgICAgdGhpcy52YWx1ZUlucHV0ID0gb3B0aW9uLmxhYmVsO1xyXG4gICAgICB0aGlzLnNob3dPcHRpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZm9jdXNJbmRleCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG9wdGlvbi5rZXkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uc3Qgbm9ybWFsaXplU3RyaW5nID0gKGE6IHN0cmluZyk6IHN0cmluZyA9PlxyXG4gIChhIHx8ICcnKVxyXG4gICAgLnRvTG93ZXJDYXNlKClcclxuICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xyXG4iLCI8ZGl2XHJcbiAgI21haW5cclxuICBjbGFzcz1cImRhZ2EtYXV0b2NvbXBsZXRlXCJcclxuICBbY2xhc3NdPVwic2hvd09wdGlvbnMgPyAnZGFnYS1zaG93aW5nLW9wdGlvbnMnIDogJydcIlxyXG4gIChibHVyKT1cImNsb3NlT3B0aW9ucygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJkYWdhLWF1dG9jb21wbGV0ZS1pbnB1dFwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVJbnB1dFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxyXG4gICAgICAoZm9jdXMpPVwib3Blbk9wdGlvbnMoKVwiXHJcbiAgICAgIChibHVyKT1cIm9uTG9zdEZvY3VzKClcIlxyXG4gICAgLz5cclxuICAgIEBpZiAodmFsdWVJbnB1dCAhPT0gJycpIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtY2xlYXJcIiAoY2xpY2spPVwiY2xlYXJJbnB1dCgpXCI+PC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImRhZ2EtYXV0b2NvbXBsZXRlLW9wdGlvbnNcIj5cclxuICAgIDx1bCBjbGFzcz1cImRhZ2EtYXV0b2NvbXBsZXRlLW9wdGlvbi1saXN0XCI+XHJcbiAgICAgIEBpZiAoY3VycmVudE9wdGlvbnMgIT09IHVuZGVmaW5lZCA/IGN1cnJlbnRPcHRpb25zLmxlbmd0aCA9PT0gMCA6IHRydWUpIHtcclxuICAgICAgICA8bGkgY2xhc3M9XCJkYWdhLWF1dG9jb21wbGV0ZS1vcHRpb24gbm8tb3B0aW9uc1wiPihObyBvcHRpb25zKTwvbGk+XHJcbiAgICAgIH1cclxuICAgICAgQGZvciAob3B0aW9uIG9mIGN1cnJlbnRPcHRpb25zOyB0cmFjayBvcHRpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xyXG4gICAgICAgIDxsaVxyXG4gICAgICAgICAgY2xhc3M9XCJkYWdhLWF1dG9jb21wbGV0ZS1vcHRpb25cIlxyXG4gICAgICAgICAgW2NsYXNzXT1cImluZGV4ID09PSBmb2N1c0luZGV4ID8gJ2RhZ2EtZm9jdXNlZCcgOiAnJ1wiXHJcbiAgICAgICAgICAobW91c2Vtb3ZlKT1cImZvY3VzT25PcHRpb24oaW5kZXgpXCJcclxuICAgICAgICAgIChjbGljayk9XCJjb21wbGV0ZShvcHRpb24pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3Bhbj57eyBjdXJyZW50TGFiZWxTdGFydHNbaW5kZXhdIH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYWdhLW1hdGNoXCI+e3sgY3VycmVudExhYmVsTWF0Y2hlc1tpbmRleF0gfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj57eyBjdXJyZW50TGFiZWxFbmRzW2luZGV4XSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICB9XHJcbiAgICA8L3VsPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Editor of a property of text list type within a property editor.\n * @private\n * @see Type.TextList\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class OptionListEditorComponent {\n constructor() {\n this.#cdr = inject(ChangeDetectorRef);\n this._value = [];\n this.labelsOfValue = [];\n this.options = [];\n this.valueInput = undefined;\n this.allowRepeats = true;\n this.optionsNotPresentInValue = [];\n this.disabled = false;\n this.valueChange = new EventEmitter();\n }\n #cdr;\n set value(value) {\n if (value === this._value) {\n return;\n }\n const initialAndEmpty = value.length === 0 && this._value.length === 0;\n this._value = value;\n this.labelsOfValue = [];\n for (const key of this._value) {\n this.labelsOfValue.push(this.getLabelOfValue(key));\n }\n if (initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n this.updateOptionsNotPresentInValue();\n }\n get value() {\n return this._value;\n }\n getLabelOfValue(value) {\n for (const option of this.options) {\n if (option.key === value) {\n return option.label;\n }\n }\n return `${value}`;\n }\n hasValue(value) {\n for (const item of this._value || []) {\n if (item === value) {\n return true;\n }\n }\n return false;\n }\n removeFromValue(index) {\n if (this._value.length > index) {\n this._value.splice(index, 1);\n this.labelsOfValue.splice(index, 1);\n this.valueChange.emit(this._value);\n this.updateOptionsNotPresentInValue();\n this.#cdr.detectChanges();\n }\n }\n addToValue() {\n if (this.valueInput !== undefined &&\n (this.allowRepeats ? true : !this.hasValue(this.valueInput))) {\n this._value.push(this.valueInput);\n this.labelsOfValue.push(this.getLabelOfValue(this.valueInput));\n this.valueChange.emit(this._value);\n this.clearInput();\n this.updateOptionsNotPresentInValue();\n this.#cdr.detectChanges();\n }\n }\n clearInput() {\n this.valueInput = '';\n }\n updateOptionsNotPresentInValue() {\n if (!this.allowRepeats) {\n const optionsNotPresentInValue = [];\n for (const option of this.options) {\n if (!this.hasValue(option.key)) {\n optionsNotPresentInValue.push(option);\n }\n }\n this.optionsNotPresentInValue = optionsNotPresentInValue;\n }\n }\n onKeyUp(event) {\n if (event.key === 'Enter') {\n this.addToValue();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: OptionListEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: OptionListEditorComponent, isStandalone: true, selector: \"daga-option-list-editor\", inputs: { value: \"value\", options: \"options\", valueInput: \"valueInput\", allowRepeats: \"allowRepeats\", optionsNotPresentInValue: \"optionsNotPresentInValue\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\" }, ngImport: i0, template: \"@for (item of value; track item; let index = $index) {\\r\\n <div\\r\\n class=\\\"daga-value-item-element\\\"\\r\\n >\\r\\n <span class=\\\"daga-input\\\">{{ labelsOfValue[index] }}</span>\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(index)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n}\\r\\n@if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <daga-autocomplete\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [options]=\\\"allowRepeats ? options || [] : optionsNotPresentInValue || []\\\"\\r\\n [(value)]=\\\"valueInput\\\"\\r\\n />\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\", dependencies: [{ kind: \"component\", type: AutocompleteComponent, selector: \"daga-autocomplete\", inputs: [\"value\", \"valueInput\", \"options\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"ngmodule\", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: OptionListEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-option-list-editor', imports: [AutocompleteComponent, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@for (item of value; track item; let index = $index) {\\r\\n <div\\r\\n class=\\\"daga-value-item-element\\\"\\r\\n >\\r\\n <span class=\\\"daga-input\\\">{{ labelsOfValue[index] }}</span>\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(index)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n}\\r\\n@if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <daga-autocomplete\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [options]=\\\"allowRepeats ? options || [] : optionsNotPresentInValue || []\\\"\\r\\n [(value)]=\\\"valueInput\\\"\\r\\n />\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\" }]\n }], propDecorators: { value: [{\n type: Input\n }], options: [{\n type: Input\n }], valueInput: [{\n type: Input\n }], allowRepeats: [{\n type: Input\n }], optionsNotPresentInValue: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWxpc3QtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvcHJvcGVydHktZWRpdG9yL29wdGlvbi1saXN0LWVkaXRvci9vcHRpb24tbGlzdC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3Ivb3B0aW9uLWxpc3QtZWRpdG9yL29wdGlvbi1saXN0LWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFL0U7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQU9FLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QixXQUFNLEdBQWMsRUFBRSxDQUFDO1FBb0IvQixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUVwQixZQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUVoQyxlQUFVLEdBQWEsU0FBUyxDQUFDO1FBRWpDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLDZCQUF3QixHQUFzQixFQUFFLENBQUM7UUFFakQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7S0FpRXZEO0lBbkdDLElBQUksQ0FBNkI7SUFHakMsSUFDSSxLQUFLLENBQUMsS0FBZ0I7UUFD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dGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BtZXRhZGV2L2RhZ2EnO1xyXG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogRWRpdG9yIG9mIGEgcHJvcGVydHkgb2YgdGV4dCBsaXN0IHR5cGUgd2l0aGluIGEgcHJvcGVydHkgZWRpdG9yLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBAc2VlIFR5cGUuVGV4dExpc3RcclxuICogQHNlZSBQcm9wZXJ0eUVkaXRvclxyXG4gKiBAc2VlIFZhbHVlU2V0XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2Etb3B0aW9uLWxpc3QtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb3B0aW9uLWxpc3QtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBpbXBvcnRzOiBbQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIE9wdGlvbkxpc3RFZGl0b3JDb21wb25lbnQge1xyXG4gICNjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZTogdW5rbm93bltdID0gW107XHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodmFsdWU6IHVua25vd25bXSkge1xyXG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbml0aWFsQW5kRW1wdHkgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID09PSAwO1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMubGFiZWxzT2ZWYWx1ZSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5fdmFsdWUpIHtcclxuICAgICAgdGhpcy5sYWJlbHNPZlZhbHVlLnB1c2godGhpcy5nZXRMYWJlbE9mVmFsdWUoa2V5KSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5pdGlhbEFuZEVtcHR5KSB7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZU9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZSgpO1xyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogdW5rbm93bltdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgbGFiZWxzT2ZWYWx1ZTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgb3B0aW9uczogT3B0aW9uPHVua25vd24+W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgdmFsdWVJbnB1dD86IHVua25vd24gPSB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIGFsbG93UmVwZWF0cyA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIG9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZTogT3B0aW9uPHVua25vd24+W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duW10+KCk7XHJcblxyXG4gIGdldExhYmVsT2ZWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XHJcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgaWYgKG9wdGlvbi5rZXkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbi5sYWJlbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgfVxyXG5cclxuICBoYXNWYWx1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX3ZhbHVlIHx8IFtdKSB7XHJcbiAgICAgIGlmIChpdGVtID09PSB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZW1vdmVGcm9tVmFsdWUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlLmxlbmd0aCA+IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMubGFiZWxzT2ZWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZSgpO1xyXG4gICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVG9WYWx1ZSgpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy52YWx1ZUlucHV0ICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgKHRoaXMuYWxsb3dSZXBlYXRzID8gdHJ1ZSA6ICF0aGlzLmhhc1ZhbHVlKHRoaXMudmFsdWVJbnB1dCkpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fdmFsdWUucHVzaCh0aGlzLnZhbHVlSW5wdXQpO1xyXG4gICAgICB0aGlzLmxhYmVsc09mVmFsdWUucHVzaCh0aGlzLmdldExhYmVsT2ZWYWx1ZSh0aGlzLnZhbHVlSW5wdXQpKTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgdGhpcy5jbGVhcklucHV0KCk7XHJcbiAgICAgIHRoaXMudXBkYXRlT3B0aW9uc05vdFByZXNlbnRJblZhbHVlKCk7XHJcbiAgICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhcklucHV0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZUlucHV0ID0gJyc7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVPcHRpb25zTm90UHJlc2VudEluVmFsdWUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWxsb3dSZXBlYXRzKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzVmFsdWUob3B0aW9uLmtleSkpIHtcclxuICAgICAgICAgIG9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZS5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0aW9uc05vdFByZXNlbnRJblZhbHVlID0gb3B0aW9uc05vdFByZXNlbnRJblZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmFkZFRvVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGZvciAoaXRlbSBvZiB2YWx1ZTsgdHJhY2sgaXRlbTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0tZWxlbWVudFwiXHJcbiAgICA+XHJcbiAgICA8c3BhbiBjbGFzcz1cImRhZ2EtaW5wdXRcIj57eyBsYWJlbHNPZlZhbHVlW2luZGV4XSB9fTwvc3Bhbj5cclxuICAgIEBpZiAoIWRpc2FibGVkKSB7XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImRhZ2EtcHJvcGVydHktYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwicmVtb3ZlRnJvbVZhbHVlKGluZGV4KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWljb24gZGFnYS1jbG9zZS1pY29uXCI+PC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG59XHJcbkBpZiAoIWRpc2FibGVkKSB7XHJcbiAgPGRpdiBjbGFzcz1cImRhZ2EtdmFsdWUtaXRlbS1pbnB1dFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRhZ2EtaW5wdXQgZGFnYS1yZWxhdGl2ZWx5LXBvc2l0aW9uZWRcIj5cclxuICAgICAgPGRhZ2EtYXV0b2NvbXBsZXRlXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbb3B0aW9uc109XCJhbGxvd1JlcGVhdHMgPyBvcHRpb25zIHx8IFtdIDogb3B0aW9uc05vdFByZXNlbnRJblZhbHVlIHx8IFtdXCJcclxuICAgICAgICBbKHZhbHVlKV09XCJ2YWx1ZUlucHV0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtcHJvcGVydHktYnV0dG9uXCIgKGNsaWNrKT1cImFkZFRvVmFsdWUoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWljb24gZGFnYS1hZGQtaWNvblwiPjwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * Editor of a property of text list type within a property editor.\n * @private\n * @see Type.TextList\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class TextListEditorComponent {\n constructor() {\n this.#cdr = inject(ChangeDetectorRef);\n this._value = [];\n this.valueInput = '';\n this.allowRepeats = true;\n this.disabled = false;\n this.valueChange = new EventEmitter();\n }\n #cdr;\n set value(value) {\n if (value === this._value) {\n return;\n }\n const initialAndEmpty = value.length === 0 && this._value.length === 0;\n this._value = value;\n if (initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value() {\n return this._value;\n }\n getValueFromEvent(event) {\n return event.target.value;\n }\n hasValue(value) {\n for (const item of this._value || []) {\n if (item === value) {\n return true;\n }\n }\n return false;\n }\n removeFromValue(index) {\n if (this._value.length > index) {\n this._value.splice(index, 1);\n this.valueChange.emit(this._value);\n this.#cdr.detectChanges();\n }\n }\n editFromValue(item, index) {\n item = item.trim();\n if (this._value.length > index && item !== '') {\n this._value.splice(index, 1, item);\n this.valueChange.emit(this._value);\n this.#cdr.detectChanges();\n }\n }\n addToValue() {\n const valueInput = this.valueInput.trim();\n if (valueInput !== '' &&\n (this.allowRepeats ? true : !this.hasValue(valueInput))) {\n this._value.push(valueInput);\n this.valueChange.emit(this._value);\n this.clearInput();\n this.#cdr.detectChanges();\n }\n }\n clearInput() {\n this.valueInput = '';\n }\n onKeyUp(event) {\n if (event.key === 'Enter') {\n this.addToValue();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: TextListEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: TextListEditorComponent, isStandalone: true, selector: \"daga-text-list-editor\", inputs: { value: \"value\", valueInput: \"valueInput\", allowRepeats: \"allowRepeats\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\" }, ngImport: i0, template: \"@for (item of value; track item; let index = $index) {\\r\\n <div\\r\\n class=\\\"daga-value-item-element\\\"\\r\\n >\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item\\\"\\r\\n (focusout)=\\\"editFromValue(getValueFromEvent($event), index)\\\"\\r\\n />\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(index)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n @if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"valueInput\\\" />\\r\\n @if (valueInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: TextListEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-text-list-editor', imports: [FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@for (item of value; track item; let index = $index) {\\r\\n <div\\r\\n class=\\\"daga-value-item-element\\\"\\r\\n >\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item\\\"\\r\\n (focusout)=\\\"editFromValue(getValueFromEvent($event), index)\\\"\\r\\n />\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(index)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n @if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"valueInput\\\" />\\r\\n @if (valueInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\" }]\n }], propDecorators: { value: [{\n type: Input\n }], valueInput: [{\n type: Input\n }], allowRepeats: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1saXN0LWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci90ZXh0LWxpc3QtZWRpdG9yL3RleHQtbGlzdC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvdGV4dC1saXN0LWVkaXRvci90ZXh0LWxpc3QtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFN0M7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHVCQUF1QjtJQU5wQztRQU9FLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBZXJCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7S0FzRHREO0lBN0VDLElBQUksQ0FBNkI7SUFHakMsSUFDSSxLQUFLLENBQUMsS0FBZTtRQUN2QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0s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OzhCQU8zQyxLQUFLO3NCQURSLEtBQUs7Z0JBY0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIEVkaXRvciBvZiBhIHByb3BlcnR5IG9mIHRleHQgbGlzdCB0eXBlIHdpdGhpbiBhIHByb3BlcnR5IGVkaXRvci5cclxuICogQHByaXZhdGVcclxuICogQHNlZSBUeXBlLlRleHRMaXN0XHJcbiAqIEBzZWUgUHJvcGVydHlFZGl0b3JcclxuICogQHNlZSBWYWx1ZVNldFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYWdhLXRleHQtbGlzdC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWxpc3QtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGVdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0TGlzdEVkaXRvckNvbXBvbmVudCB7XHJcbiAgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbml0aWFsQW5kRW1wdHkgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID09PSAwO1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmIChpbml0aWFsQW5kRW1wdHkpIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgQElucHV0KCkgdmFsdWVJbnB1dCA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBhbGxvd1JlcGVhdHMgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xyXG5cclxuICBnZXRWYWx1ZUZyb21FdmVudChldmVudDogRXZlbnQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBoYXNWYWx1ZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fdmFsdWUgfHwgW10pIHtcclxuICAgICAgaWYgKGl0ZW0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZyb21WYWx1ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdmFsdWUubGVuZ3RoID4gaW5kZXgpIHtcclxuICAgICAgdGhpcy5fdmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRGcm9tVmFsdWUoaXRlbTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpdGVtID0gaXRlbS50cmltKCk7XHJcbiAgICBpZiAodGhpcy5fdmFsdWUubGVuZ3RoID4gaW5kZXggJiYgaXRlbSAhPT0gJycpIHtcclxuICAgICAgdGhpcy5fdmFsdWUuc3BsaWNlKGluZGV4LCAxLCBpdGVtKTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFRvVmFsdWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZUlucHV0ID0gdGhpcy52YWx1ZUlucHV0LnRyaW0oKTtcclxuICAgIGlmIChcclxuICAgICAgdmFsdWVJbnB1dCAhPT0gJycgJiZcclxuICAgICAgKHRoaXMuYWxsb3dSZXBlYXRzID8gdHJ1ZSA6ICF0aGlzLmhhc1ZhbHVlKHZhbHVlSW5wdXQpKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlLnB1c2godmFsdWVJbnB1dCk7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICAgIHRoaXMuY2xlYXJJbnB1dCgpO1xyXG4gICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJJbnB1dCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVJbnB1dCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmFkZFRvVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGZvciAoaXRlbSBvZiB2YWx1ZTsgdHJhY2sgaXRlbTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0tZWxlbWVudFwiXHJcbiAgICA+XHJcbiAgICA8aW5wdXRcclxuICAgICAgY2xhc3M9XCJkYWdhLWlucHV0XCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbdmFsdWVdPVwiaXRlbVwiXHJcbiAgICAgIChmb2N1c291dCk9XCJlZGl0RnJvbVZhbHVlKGdldFZhbHVlRnJvbUV2ZW50KCRldmVudCksIGluZGV4KVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIEBpZiAoIWRpc2FibGVkKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5LWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRnJvbVZhbHVlKGluZGV4KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pY29uIGRhZ2EtY2xvc2UtaWNvblwiPjwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmICghZGlzYWJsZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0taW5wdXRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtaW5wdXQgZGFnYS1yZWxhdGl2ZWx5LXBvc2l0aW9uZWRcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZUlucHV0XCIgLz5cclxuICAgICAgICBAaWYgKHZhbHVlSW5wdXQgIT09ICcnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGFnYS1jbGVhclwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0KClcIlxyXG4gICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJkYWdhLXByb3BlcnR5LWJ1dHRvblwiIChjbGljayk9XCJhZGRUb1ZhbHVlKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pY29uIGRhZ2EtYWRkLWljb25cIj48L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@angular/common\";\n/**\n * Editor of a property of text map type within a property editor.\n * @private\n * @see Type.TextMap\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class TextMapEditorComponent {\n constructor() {\n this.#cdr = inject(ChangeDetectorRef);\n this._value = {};\n this.keyInput = '';\n this.valueInput = '';\n this.disabled = false;\n this.valueChange = new EventEmitter();\n }\n #cdr;\n set value(value) {\n if (value === this._value) {\n return;\n }\n const initialAndEmpty = Object.keys(value).length === 0 && Object.keys(this._value).length === 0;\n this._value = value;\n if (initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value() {\n return this._value;\n }\n getValueFromEvent(event) {\n return event.target.value;\n }\n removeFromValue(key) {\n delete this._value[key];\n this.#cdr.detectChanges();\n }\n editKey(oldKey, newKey) {\n newKey = newKey.trim();\n if (oldKey !== newKey && newKey !== '') {\n this._value[newKey] = this._value[oldKey];\n delete this._value[oldKey];\n this.#cdr.detectChanges();\n }\n }\n editValue(key, value) {\n value = value.trim();\n if (value !== '') {\n this._value[key] = value;\n this.#cdr.detectChanges();\n }\n }\n addToValue() {\n const keyInput = this.keyInput.trim();\n const valueInput = this.valueInput.trim();\n if (keyInput !== '' && valueInput !== '') {\n this._value[keyInput] = valueInput;\n this.valueChange.emit(this._value);\n this.clearKeyInput();\n this.clearValueInput();\n this.#cdr.detectChanges();\n }\n }\n clearKeyInput() {\n this.keyInput = '';\n }\n clearValueInput() {\n this.valueInput = '';\n }\n onKeyUp(event) {\n if (event.key === 'Enter') {\n this.addToValue();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: TextMapEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: TextMapEditorComponent, isStandalone: true, selector: \"daga-text-map-editor\", inputs: { value: \"value\", keyInput: \"keyInput\", valueInput: \"valueInput\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\" }, ngImport: i0, template: \"@for (item of value | keyvalue; track item) {\\r\\n <div class=\\\"daga-value-item-element\\\">\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item.key\\\"\\r\\n (focusout)=\\\"editKey(item.key, getValueFromEvent($event))\\\"\\r\\n />\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item.value\\\"\\r\\n (focusout)=\\\"editValue(item.key, getValueFromEvent($event))\\\"\\r\\n />\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(item.key)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n @if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"keyInput\\\" />\\r\\n @if (keyInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearKeyInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"valueInput\\\" />\\r\\n @if (valueInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearValueInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"pipe\", type: i2.KeyValuePipe, name: \"keyvalue\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: TextMapEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-text-map-editor', imports: [CommonModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@for (item of value | keyvalue; track item) {\\r\\n <div class=\\\"daga-value-item-element\\\">\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item.key\\\"\\r\\n (focusout)=\\\"editKey(item.key, getValueFromEvent($event))\\\"\\r\\n />\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item.value\\\"\\r\\n (focusout)=\\\"editValue(item.key, getValueFromEvent($event))\\\"\\r\\n />\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(item.key)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n @if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"keyInput\\\" />\\r\\n @if (keyInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearKeyInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"valueInput\\\" />\\r\\n @if (valueInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearValueInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\" }]\n }], propDecorators: { value: [{\n type: Input\n }], keyInput: [{\n type: Input\n }], valueInput: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tYXAtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvcHJvcGVydHktZWRpdG9yL3RleHQtbWFwLWVkaXRvci90ZXh0LW1hcC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvdGV4dC1tYXAtZWRpdG9yL3RleHQtbWFwLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0M7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQU9FLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QixXQUFNLEdBQStCLEVBQUUsQ0FBQztRQWlCdkMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0tBcUR4RTtJQTdFQyxJQUFJLENBQTZCO0lBSWpDLElBQ0ksS0FBSyxDQUFDLEtBQWlDO1FBQ3pDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sZUFBZSxHQUNuQixNQUFNLENBQUMsSUFB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QUUsV0FBVyxDQUFDLG1CQUNuQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVEzQyxLQUFLO3NCQURSLEtBQUs7Z0JBZUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIEVkaXRvciBvZiBhIHByb3BlcnR5IG9mIHRleHQgbWFwIHR5cGUgd2l0aGluIGEgcHJvcGVydHkgZWRpdG9yLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBAc2VlIFR5cGUuVGV4dE1hcFxyXG4gKiBAc2VlIFByb3BlcnR5RWRpdG9yXHJcbiAqIEBzZWUgVmFsdWVTZXRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGFnYS10ZXh0LW1hcC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LW1hcC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dE1hcEVkaXRvckNvbXBvbmVudCB7XHJcbiAgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0pIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5pdGlhbEFuZEVtcHR5ID1cclxuICAgICAgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCAmJiBPYmplY3Qua2V5cyh0aGlzLl92YWx1ZSkubGVuZ3RoID09PSAwO1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmIChpbml0aWFsQW5kRW1wdHkpIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgQElucHV0KCkga2V5SW5wdXQgPSAnJztcclxuICBASW5wdXQoKSB2YWx1ZUlucHV0ID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0+KCk7XHJcblxyXG4gIGdldFZhbHVlRnJvbUV2ZW50KGV2ZW50OiBFdmVudCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZyb21WYWx1ZShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZGVsZXRlIHRoaXMuX3ZhbHVlW2tleV07XHJcbiAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEtleShvbGRLZXk6IHN0cmluZywgbmV3S2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIG5ld0tleSA9IG5ld0tleS50cmltKCk7XHJcbiAgICBpZiAob2xkS2V5ICE9PSBuZXdLZXkgJiYgbmV3S2V5ICE9PSAnJykge1xyXG4gICAgICB0aGlzLl92YWx1ZVtuZXdLZXldID0gdGhpcy5fdmFsdWVbb2xkS2V5XTtcclxuICAgICAgZGVsZXRlIHRoaXMuX3ZhbHVlW29sZEtleV07XHJcbiAgICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlZGl0VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xyXG4gICAgaWYgKHZhbHVlICE9PSAnJykge1xyXG4gICAgICB0aGlzLl92YWx1ZVtrZXldID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRUb1ZhbHVlKCk6IHZvaWQge1xyXG4gICAgY29uc3Qga2V5SW5wdXQgPSB0aGlzLmtleUlucHV0LnRyaW0oKTtcclxuICAgIGNvbnN0IHZhbHVlSW5wdXQgPSB0aGlzLnZhbHVlSW5wdXQudHJpbSgpO1xyXG4gICAgaWYgKGtleUlucHV0ICE9PSAnJyAmJiB2YWx1ZUlucHV0ICE9PSAnJykge1xyXG4gICAgICB0aGlzLl92YWx1ZVtrZXlJbnB1dF0gPSB2YWx1ZUlucHV0O1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgICB0aGlzLmNsZWFyS2V5SW5wdXQoKTtcclxuICAgICAgdGhpcy5jbGVhclZhbHVlSW5wdXQoKTtcclxuICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyS2V5SW5wdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmtleUlucHV0ID0gJyc7XHJcbiAgfVxyXG5cclxuICBjbGVhclZhbHVlSW5wdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlSW5wdXQgPSAnJztcclxuICB9XHJcblxyXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5hZGRUb1ZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBmb3IgKGl0ZW0gb2YgdmFsdWUgfCBrZXl2YWx1ZTsgdHJhY2sgaXRlbSkge1xyXG4gIDxkaXYgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0tZWxlbWVudFwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZGFnYS1pbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW3ZhbHVlXT1cIml0ZW0ua2V5XCJcclxuICAgICAgKGZvY3Vzb3V0KT1cImVkaXRLZXkoaXRlbS5rZXksIGdldFZhbHVlRnJvbUV2ZW50KCRldmVudCkpXCJcclxuICAgICAgLz5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJkYWdhLWlucHV0XCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXHJcbiAgICAgICAgKGZvY3Vzb3V0KT1cImVkaXRWYWx1ZShpdGVtLmtleSwgZ2V0VmFsdWVGcm9tRXZlbnQoJGV2ZW50KSlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgQGlmICghZGlzYWJsZWQpIHtcclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5LWJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGcm9tVmFsdWUoaXRlbS5rZXkpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pY29uIGRhZ2EtY2xvc2UtaWNvblwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoIWRpc2FibGVkKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0taW5wdXRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pbnB1dCBkYWdhLXJlbGF0aXZlbHktcG9zaXRpb25lZFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwia2V5SW5wdXRcIiAvPlxyXG4gICAgICAgICAgQGlmIChrZXlJbnB1dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGFnYS1jbGVhclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyS2V5SW5wdXQoKVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pbnB1dCBkYWdhLXJlbGF0aXZlbHktcG9zaXRpb25lZFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwidmFsdWVJbnB1dFwiIC8+XHJcbiAgICAgICAgICBAaWYgKHZhbHVlSW5wdXQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImRhZ2EtY2xlYXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclZhbHVlSW5wdXQoKVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGFnYS1wcm9wZXJ0eS1idXR0b25cIiAoY2xpY2spPVwiYWRkVG9WYWx1ZSgpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pY29uIGRhZ2EtYWRkLWljb25cIj48L2Rpdj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DiagramActions, Type, equals } from '@metadev/daga';\nimport { CanvasProviderService } from '../../services/canvas-provider.service';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport { OptionListEditorComponent } from '../option-list-editor/option-list-editor.component';\nimport { getStyleClassName } from '../property-editor.component';\nimport { TextListEditorComponent } from '../text-list-editor/text-list-editor.component';\nimport { TextMapEditorComponent } from '../text-map-editor/text-map-editor.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * Editor of a value set within a property editor.\n * @private\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class ObjectEditorComponent {\n constructor() {\n this.#cdr = inject(ChangeDetectorRef);\n this.#canvasProvider = inject(CanvasProviderService);\n /** How many object-editor elements are parents of this object-editor element. @private */\n this.depth = 0;\n // Attributes for the template\n this.Type = Type;\n this.getStyleClassName = getStyleClassName;\n }\n #cdr;\n #canvasProvider;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n get userCanEdit() {\n return (this.canvas.canUserPerformAction(DiagramActions.UpdateValues) &&\n this.valueSet?.rootElement?.['removed'] !== true);\n }\n get valueSet() {\n return this._valueSet;\n }\n set valueSet(valueSet) {\n if (this._valueSet !== valueSet) {\n this._valueSet = valueSet;\n // force value change detection\n this.#cdr.detectChanges();\n }\n }\n setValue(property, value) {\n if (this.valueSet === undefined) {\n return;\n }\n if (property.editable) {\n if (!equals(this.valueSet.getValue(property.name), value)) {\n this.valueSet.setValue(property.name, value);\n this.canvas.propertyEditorChanges$?.next();\n }\n }\n }\n dateToLocalDatetimeString(date) {\n if (typeof date === 'string') {\n return date;\n }\n if (date === null || date === undefined || isNaN(date.valueOf())) {\n return '';\n }\n const offsetDate = new Date(date);\n const timezoneOffset = offsetDate.getTimezoneOffset();\n offsetDate.setMinutes(offsetDate.getMinutes() - timezoneOffset);\n return offsetDate.toISOString().substring(0, 19); // for user friendliness, we trim off the milliseconds\n }\n localDatetimeStringToDate(string) {\n // with no timezone specified, the local time is assumed\n return new Date(string);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: ObjectEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: ObjectEditorComponent, isStandalone: true, selector: \"daga-object-editor\", inputs: { valueSet: \"valueSet\", depth: \"depth\" }, ngImport: i0, template: \"@for (property of valueSet?.displayedProperties || []; track property) {\\r\\n <div\\r\\n class=\\\"daga-property\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <p class=\\\"daga-property-name\\\">\\r\\n {{ property.name }}\\r\\n </p>\\r\\n @if (property.type === Type.Text) {\\r\\n <input\\r\\n type=\\\"daga-text\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.TextArea) {\\r\\n <textarea\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n ></textarea>\\r\\n }\\r\\n @if (property.type === Type.Number) {\\r\\n <input\\r\\n type=\\\"number\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Color) {\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n pattern=\\\"#[0-9a-fA-F]{6}\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Datetime) {\\r\\n <input\\r\\n type=\\\"datetime-local\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"dateToLocalDatetimeString(valueSet?.getValue(property.name))\\\"\\r\\n (ngModelChange)=\\\"setValue(property, localDatetimeStringToDate($event))\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Date) {\\r\\n <input\\r\\n type=\\\"date\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Time) {\\r\\n <input\\r\\n type=\\\"time\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Url) {\\r\\n <input\\r\\n type=\\\"url\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Boolean) {\\r\\n <div class=\\\"daga-radio\\\">\\r\\n <label\\r\\n class=\\\"daga-radio-item daga-radio-start\\\"\\r\\n [class]=\\\"\\r\\n valueSet?.getValue(property.name) === false ? 'daga-checked' : ''\\r\\n \\\"\\r\\n >\\r\\n <input\\r\\n type=\\\"radio\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [name]=\\\"property.name\\\"\\r\\n value=\\\"false\\\"\\r\\n (change)=\\\"setValue(property, false)\\\"\\r\\n />\\r\\n No\\r\\n </label>\\r\\n <label\\r\\n class=\\\"daga-radio-item daga-radio-end\\\"\\r\\n [class]=\\\"valueSet?.getValue(property.name) === true ? 'daga-checked' : ''\\\"\\r\\n >\\r\\n <input\\r\\n type=\\\"radio\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [name]=\\\"property.name\\\"\\r\\n value=\\\"true\\\"\\r\\n (change)=\\\"setValue(property, true)\\\"\\r\\n />\\r\\n Yes\\r\\n </label>\\r\\n </div>\\r\\n }\\r\\n @if (property.type === Type.Option) {\\r\\n <div class=\\\"daga-relatively-positioned\\\">\\r\\n <daga-autocomplete\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [options]=\\\"property.options || []\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n </div>\\r\\n }\\r\\n @if (\\r\\n property.type === Type.OptionList || property.type === Type.OptionSet\\r\\n ) {\\r\\n <daga-option-list-editor\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [allowRepeats]=\\\"property.type === Type.OptionList\\\"\\r\\n [options]=\\\"property.options || []\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-option-list-editor>\\r\\n }\\r\\n @if (property.type === Type.TextList || property.type === Type.TextSet) {\\r\\n <daga-text-list-editor\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [allowRepeats]=\\\"property.type === Type.TextList\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-text-list-editor>\\r\\n }\\r\\n @if (property.type === Type.TextMap) {\\r\\n <daga-text-map-editor\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-text-map-editor>\\r\\n }\\r\\n @if (property.type === Type.Object) {\\r\\n <div class=\\\"daga-left-bar\\\">\\r\\n <daga-object-editor\\r\\n [valueSet]=\\\"valueSet?.getSubValueSet(property.name)\\\"\\r\\n [depth]=\\\"depth + 1\\\"\\r\\n ></daga-object-editor>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n\", dependencies: [{ kind: \"component\", type: ObjectEditorComponent, selector: \"daga-object-editor\", inputs: [\"valueSet\", \"depth\"] }, { kind: \"component\", type: AutocompleteComponent, selector: \"daga-autocomplete\", inputs: [\"value\", \"valueInput\", \"options\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NumberValueAccessor, selector: \"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.PatternValidator, selector: \"[pattern][formControlName],[pattern][formControl],[pattern][ngModel]\", inputs: [\"pattern\"] }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: OptionListEditorComponent, selector: \"daga-option-list-editor\", inputs: [\"value\", \"options\", \"valueInput\", \"allowRepeats\", \"optionsNotPresentInValue\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: TextListEditorComponent, selector: \"daga-text-list-editor\", inputs: [\"value\", \"valueInput\", \"allowRepeats\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: TextMapEditorComponent, selector: \"daga-text-map-editor\", inputs: [\"value\", \"keyInput\", \"valueInput\", \"disabled\"], outputs: [\"valueChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: ObjectEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-object-editor', imports: [\n AutocompleteComponent,\n FormsModule,\n OptionListEditorComponent,\n TextListEditorComponent,\n TextMapEditorComponent\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@for (property of valueSet?.displayedProperties || []; track property) {\\r\\n <div\\r\\n class=\\\"daga-property\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <p class=\\\"daga-property-name\\\">\\r\\n {{ property.name }}\\r\\n </p>\\r\\n @if (property.type === Type.Text) {\\r\\n <input\\r\\n type=\\\"daga-text\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.TextArea) {\\r\\n <textarea\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n ></textarea>\\r\\n }\\r\\n @if (property.type === Type.Number) {\\r\\n <input\\r\\n type=\\\"number\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Color) {\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n pattern=\\\"#[0-9a-fA-F]{6}\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Datetime) {\\r\\n <input\\r\\n type=\\\"datetime-local\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"dateToLocalDatetimeString(valueSet?.getValue(property.name))\\\"\\r\\n (ngModelChange)=\\\"setValue(property, localDatetimeStringToDate($event))\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Date) {\\r\\n <input\\r\\n type=\\\"date\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Time) {\\r\\n <input\\r\\n type=\\\"time\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Url) {\\r\\n <input\\r\\n type=\\\"url\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Boolean) {\\r\\n <div class=\\\"daga-radio\\\">\\r\\n <label\\r\\n class=\\\"daga-radio-item daga-radio-start\\\"\\r\\n [class]=\\\"\\r\\n valueSet?.getValue(property.name) === false ? 'daga-checked' : ''\\r\\n \\\"\\r\\n >\\r\\n <input\\r\\n type=\\\"radio\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [name]=\\\"property.name\\\"\\r\\n value=\\\"false\\\"\\r\\n (change)=\\\"setValue(property, false)\\\"\\r\\n />\\r\\n No\\r\\n </label>\\r\\n <label\\r\\n class=\\\"daga-radio-item daga-radio-end\\\"\\r\\n [class]=\\\"valueSet?.getValue(property.name) === true ? 'daga-checked' : ''\\\"\\r\\n >\\r\\n <input\\r\\n type=\\\"radio\\\"\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [name]=\\\"property.name\\\"\\r\\n value=\\\"true\\\"\\r\\n (change)=\\\"setValue(property, true)\\\"\\r\\n />\\r\\n Yes\\r\\n </label>\\r\\n </div>\\r\\n }\\r\\n @if (property.type === Type.Option) {\\r\\n <div class=\\\"daga-relatively-positioned\\\">\\r\\n <daga-autocomplete\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [options]=\\\"property.options || []\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n </div>\\r\\n }\\r\\n @if (\\r\\n property.type === Type.OptionList || property.type === Type.OptionSet\\r\\n ) {\\r\\n <daga-option-list-editor\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [allowRepeats]=\\\"property.type === Type.OptionList\\\"\\r\\n [options]=\\\"property.options || []\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-option-list-editor>\\r\\n }\\r\\n @if (property.type === Type.TextList || property.type === Type.TextSet) {\\r\\n <daga-text-list-editor\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [allowRepeats]=\\\"property.type === Type.TextList\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-text-list-editor>\\r\\n }\\r\\n @if (property.type === Type.TextMap) {\\r\\n <daga-text-map-editor\\r\\n [disabled]=\\\"!property.editable || !userCanEdit\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-text-map-editor>\\r\\n }\\r\\n @if (property.type === Type.Object) {\\r\\n <div class=\\\"daga-left-bar\\\">\\r\\n <daga-object-editor\\r\\n [valueSet]=\\\"valueSet?.getSubValueSet(property.name)\\\"\\r\\n [depth]=\\\"depth + 1\\\"\\r\\n ></daga-object-editor>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n\" }]\n }], propDecorators: { valueSet: [{\n type: Input\n }], depth: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9vYmplY3QtZWRpdG9yL29iamVjdC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3Ivb2JqZWN0LWVkaXRvci9vYmplY3QtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBRUwsY0FBYyxFQUVkLElBQUksRUFFSixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDL0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7OztBQUV0Rjs7Ozs7R0FLRztBQWFILE1BQU0sT0FBTyxxQkFBcUI7SUFabEM7UUFhRSxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakMsb0JBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMs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ekIsdUJBQXVCO3dCQUN2QixzQkFBc0I7cUJBQ3ZCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQWtCM0MsUUFBUTtzQkFEWCxLQUFLO2dCQVlHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGluamVjdCxcclxuICBJbnB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDYW52YXMsXHJcbiAgRGlhZ3JhbUFjdGlvbnMsXHJcbiAgUHJvcGVydHksXHJcbiAgVHlwZSxcclxuICBWYWx1ZVNldCxcclxuICBlcXVhbHNcclxufSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0IHsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9wdGlvbkxpc3RFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24tbGlzdC1lZGl0b3Ivb3B0aW9uLWxpc3QtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGdldFN0eWxlQ2xhc3NOYW1lIH0gZnJvbSAnLi4vcHJvcGVydHktZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRMaXN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC1saXN0LWVkaXRvci90ZXh0LWxpc3QtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRNYXBFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0LW1hcC1lZGl0b3IvdGV4dC1tYXAtZWRpdG9yLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogRWRpdG9yIG9mIGEgdmFsdWUgc2V0IHdpdGhpbiBhIHByb3BlcnR5IGVkaXRvci5cclxuICogQHByaXZhdGVcclxuICogQHNlZSBQcm9wZXJ0eUVkaXRvclxyXG4gKiBAc2VlIFZhbHVlU2V0XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2Etb2JqZWN0LWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgT3B0aW9uTGlzdEVkaXRvckNvbXBvbmVudCxcclxuICAgIFRleHRMaXN0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgVGV4dE1hcEVkaXRvckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIE9iamVjdEVkaXRvckNvbXBvbmVudCB7XHJcbiAgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgI2NhbnZhc1Byb3ZpZGVyID0gaW5qZWN0KENhbnZhc1Byb3ZpZGVyU2VydmljZSk7XHJcblxyXG4gIGdldCBjYW52YXMoKTogQ2FudmFzIHtcclxuICAgIHJldHVybiB0aGlzLiNjYW52YXNQcm92aWRlci5nZXRDYW52YXMoKTtcclxuICB9XHJcbiAgZ2V0IHVzZXJDYW5FZGl0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5jYW52YXMuY2FuVXNlclBlcmZvcm1BY3Rpb24oRGlhZ3JhbUFjdGlvbnMuVXBkYXRlVmFsdWVzKSAmJlxyXG4gICAgICB0aGlzLnZhbHVlU2V0Py5yb290RWxlbWVudD8uWydyZW1vdmVkJ10gIT09IHRydWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBfdmFsdWVTZXQ/OiBWYWx1ZVNldDtcclxuICBASW5wdXQoKVxyXG4gIGdldCB2YWx1ZVNldCgpOiBWYWx1ZVNldCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVTZXQ7XHJcbiAgfVxyXG4gIHNldCB2YWx1ZVNldCh2YWx1ZVNldDogVmFsdWVTZXQgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl92YWx1ZVNldCAhPT0gdmFsdWVTZXQpIHtcclxuICAgICAgdGhpcy5fdmFsdWVTZXQgPSB2YWx1ZVNldDtcclxuICAgICAgLy8gZm9yY2UgdmFsdWUgY2hhbmdlIGRldGVjdGlvblxyXG4gICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKiogSG93IG1hbnkgb2JqZWN0LWVkaXRvciBlbGVtZW50cyBhcmUgcGFyZW50cyBvZiB0aGlzIG9iamVjdC1lZGl0b3IgZWxlbWVudC4gQHByaXZhdGUgKi9cclxuICBASW5wdXQoKSBkZXB0aCA9IDA7XHJcblxyXG4gIC8vIEF0dHJpYnV0ZXMgZm9yIHRoZSB0ZW1wbGF0ZVxyXG4gIFR5cGUgPSBUeXBlO1xyXG4gIGdldFN0eWxlQ2xhc3NOYW1lID0gZ2V0U3R5bGVDbGFzc05hbWU7XHJcblxyXG4gIHNldFZhbHVlKHByb3BlcnR5OiBQcm9wZXJ0eSwgdmFsdWU6IHVua25vd24pIHtcclxuICAgIGlmICh0aGlzLnZhbHVlU2V0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb3BlcnR5LmVkaXRhYmxlKSB7XHJcbiAgICAgIGlmICghZXF1YWxzKHRoaXMudmFsdWVTZXQuZ2V0VmFsdWUocHJvcGVydHkubmFtZSksIHZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMudmFsdWVTZXQuc2V0VmFsdWUocHJvcGVydHkubmFtZSwgdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY2FudmFzLnByb3BlcnR5RWRpdG9yQ2hhbmdlcyQ/Lm5leHQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGF0ZVRvTG9jYWxEYXRldGltZVN0cmluZyhcclxuICAgIGRhdGU6IHN0cmluZyB8IG51bWJlciB8IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0ZSA9PT0gbnVsbCB8fCBkYXRlID09PSB1bmRlZmluZWQgfHwgaXNOYU4oZGF0ZS52YWx1ZU9mKCkpKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGNvbnN0IG9mZnNldERhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0ID0gb2Zmc2V0RGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xyXG4gICAgb2Zmc2V0RGF0ZS5zZXRNaW51dGVzKG9mZnNldERhdGUuZ2V0TWludXRlcygpIC0gdGltZXpvbmVPZmZzZXQpO1xyXG4gICAgcmV0dXJuIG9mZnNldERhdGUudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTkpOyAvLyBmb3IgdXNlciBmcmllbmRsaW5lc3MsIHdlIHRyaW0gb2ZmIHRoZSBtaWxsaXNlY29uZHNcclxuICB9XHJcblxyXG4gIGxvY2FsRGF0ZXRpbWVTdHJpbmdUb0RhdGUoc3RyaW5nOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIC8vIHdpdGggbm8gdGltZXpvbmUgc3BlY2lmaWVkLCB0aGUgbG9jYWwgdGltZSBpcyBhc3N1bWVkXHJcbiAgICByZXR1cm4gbmV3IERhdGUoc3RyaW5nKTtcclxuICB9XHJcbn1cclxuIiwiQGZvciAocHJvcGVydHkgb2YgdmFsdWVTZXQ/LmRpc3BsYXllZFByb3BlcnRpZXMgfHwgW107IHRyYWNrIHByb3BlcnR5KSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5XCJcclxuICAgIFtjbGFzc109XCJnZXRTdHlsZUNsYXNzTmFtZShwcm9wZXJ0eS5uYW1lKSArICcgZGFnYS1kZXB0aC0nICsgZGVwdGhcIlxyXG4gICAgPlxyXG4gICAgPHAgY2xhc3M9XCJkYWdhLXByb3BlcnR5LW5hbWVcIj5cclxuICAgICAge3sgcHJvcGVydHkubmFtZSB9fVxyXG4gICAgPC9wPlxyXG4gICAgQGlmIChwcm9wZXJ0eS50eXBlID09PSBUeXBlLlRleHQpIHtcclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cImRhZ2EtdGV4dFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5lZGl0YWJsZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICB9XHJcbiAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuVGV4dEFyZWEpIHtcclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5lZGl0YWJsZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICA+PC90ZXh0YXJlYT5cclxuICAgIH1cclxuICAgIEBpZiAocHJvcGVydHkudHlwZSA9PT0gVHlwZS5OdW1iZXIpIHtcclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5lZGl0YWJsZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICB9XHJcbiAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuQ29sb3IpIHtcclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIHBhdHRlcm49XCIjWzAtOWEtZkEtRl17Nn1cIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhcHJvcGVydHkuZWRpdGFibGUgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVNldD8uZ2V0VmFsdWUocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCAkZXZlbnQpXCJcclxuICAgICAgICAvPlxyXG4gICAgfVxyXG4gICAgQGlmIChwcm9wZXJ0eS50eXBlID09PSBUeXBlLkRhdGV0aW1lKSB7XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5lZGl0YWJsZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cImRhdGVUb0xvY2FsRGF0ZXRpbWVTdHJpbmcodmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksIGxvY2FsRGF0ZXRpbWVTdHJpbmdUb0RhdGUoJGV2ZW50KSlcIlxyXG4gICAgICAgIC8+XHJcbiAgICB9XHJcbiAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuRGF0ZSkge1xyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5lZGl0YWJsZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICB9XHJcbiAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuVGltZSkge1xyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGltZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5lZGl0YWJsZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICB9XHJcbiAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuVXJsKSB7XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ1cmxcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhcHJvcGVydHkuZWRpdGFibGUgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVNldD8uZ2V0VmFsdWUocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCAkZXZlbnQpXCJcclxuICAgICAgICAvPlxyXG4gICAgfVxyXG4gICAgQGlmIChwcm9wZXJ0eS50eXBlID09PSBUeXBlLkJvb2xlYW4pIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtcmFkaW9cIj5cclxuICAgICAgICA8bGFiZWxcclxuICAgICAgICAgIGNsYXNzPVwiZGFnYS1yYWRpby1pdGVtIGRhZ2EtcmFkaW8tc3RhcnRcIlxyXG4gICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgdmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpID09PSBmYWxzZSA/ICdkYWdhLWNoZWNrZWQnIDogJydcclxuICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByb3BlcnR5LmVkaXRhYmxlIHx8ICF1c2VyQ2FuRWRpdFwiXHJcbiAgICAgICAgICAgIFtuYW1lXT1cInByb3BlcnR5Lm5hbWVcIlxyXG4gICAgICAgICAgICB2YWx1ZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZShwcm9wZXJ0eSwgZmFsc2UpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgTm9cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgY2xhc3M9XCJkYWdhLXJhZGlvLWl0ZW0gZGFnYS1yYWRpby1lbmRcIlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwidmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpID09PSB0cnVlID8gJ2RhZ2EtY2hlY2tlZCcgOiAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByb3BlcnR5LmVkaXRhYmxlIHx8ICF1c2VyQ2FuRWRpdFwiXHJcbiAgICAgICAgICAgICAgW25hbWVdPVwicHJvcGVydHkubmFtZVwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICBZZXNcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuT3B0aW9uKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1yZWxhdGl2ZWx5LXBvc2l0aW9uZWRcIj5cclxuICAgICAgICAgICAgPGRhZ2EtYXV0b2NvbXBsZXRlXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5lZGl0YWJsZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cInByb3BlcnR5Lm9wdGlvbnMgfHwgW11cIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNldD8uZ2V0VmFsdWUocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRWYWx1ZShwcm9wZXJ0eSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKFxyXG4gICAgICAgICAgICBwcm9wZXJ0eS50eXBlID09PSBUeXBlLk9wdGlvbkxpc3QgfHwgcHJvcGVydHkudHlwZSA9PT0gVHlwZS5PcHRpb25TZXRcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIDxkYWdhLW9wdGlvbi1saXN0LWVkaXRvclxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJvcGVydHkuZWRpdGFibGUgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICAgICAgICBbYWxsb3dSZXBlYXRzXT1cInByb3BlcnR5LnR5cGUgPT09IFR5cGUuT3B0aW9uTGlzdFwiXHJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwicHJvcGVydHkub3B0aW9ucyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvZGFnYS1vcHRpb24tbGlzdC1lZGl0b3I+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuVGV4dExpc3QgfHwgcHJvcGVydHkudHlwZSA9PT0gVHlwZS5UZXh0U2V0KSB7XHJcbiAgICAgICAgICAgIDxkYWdhLXRleHQtbGlzdC1lZGl0b3JcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByb3BlcnR5LmVkaXRhYmxlIHx8ICF1c2VyQ2FuRWRpdFwiXHJcbiAgICAgICAgICAgICAgW2FsbG93UmVwZWF0c109XCJwcm9wZXJ0eS50eXBlID09PSBUeXBlLlRleHRMaXN0XCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpXCJcclxuICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9kYWdhLXRleHQtbGlzdC1lZGl0b3I+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuVGV4dE1hcCkge1xyXG4gICAgICAgICAgICA8ZGFnYS10ZXh0LW1hcC1lZGl0b3JcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByb3BlcnR5LmVkaXRhYmxlIHx8ICF1c2VyQ2FuRWRpdFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvZGFnYS10ZXh0LW1hcC1lZGl0b3I+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWxlZnQtYmFyXCI+XHJcbiAgICAgICAgICAgICAgPGRhZ2Etb2JqZWN0LWVkaXRvclxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlU2V0XT1cInZhbHVlU2V0Py5nZXRTdWJWYWx1ZVNldChwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICBbZGVwdGhdPVwiZGVwdGggKyAxXCJcclxuICAgICAgICAgICAgICA+PC9kYWdhLW9iamVjdC1lZGl0b3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { Corner, Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { CollapseButtonComponent } from '../collapse-button/collapse-button.component';\nimport { DagaConfigurationService } from '../services/daga-configuration.service';\nimport { ObjectEditorComponent } from './object-editor/object-editor.component';\nimport { PropertySettingsComponent } from './property-settings/property-settings.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Duration of the highlight property animation in milliseconds.\n */\nconst HIGHLIGHT_ANIMATION_DURATION_MS = 1000;\n/**\n * Editor of the values of a value set.\n * @private\n * @see ValueSet\n */\nexport class PropertyEditorComponent {\n #cdr = inject(ChangeDetectorRef);\n #configService = inject(DagaConfigurationService);\n get valueSet() {\n return this._valueSet;\n }\n set valueSet(valueSet) {\n if (this._valueSet !== valueSet) {\n this._valueSet = valueSet;\n this.settings = undefined;\n // force value change detection\n this.#cdr.detectChanges();\n }\n }\n ngOnInit() {\n this.sub = this.#configService.config$.subscribe((c) => {\n this.init(c);\n });\n }\n ngAfterViewInit() {\n this.setPanelWidth();\n }\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n init(config) {\n this.location =\n config.components?.propertyEditor?.location || Corner.TopRight;\n this.direction =\n config.components?.propertyEditor?.direction || Side.Bottom;\n this.width = config.components?.propertyEditor?.width || '24rem';\n this.title = undefined;\n this.valueSet = undefined;\n this.setPanelWidth();\n }\n setPanelWidth() {\n if (this.panel !== undefined) {\n switch (this.direction) {\n case Side.Bottom:\n case Side.Top:\n this.selectPanel().style('width', this.width);\n break;\n case Side.Left:\n case Side.Right:\n this.selectPanel().style('height', this.width);\n break;\n }\n }\n }\n selectPanel() {\n return d3.select(this.panel.nativeElement);\n }\n highlightProperty(...propertyNames) {\n let selector = '';\n let depth = 0;\n for (const propertyName of propertyNames) {\n selector += ` .daga-property.${getStyleClassName(propertyName)}.daga-depth-${depth}`;\n ++depth;\n }\n if (this.valueSet) {\n d3.select(this.panel.nativeElement)\n .select(selector)\n .transition()\n .duration(HIGHLIGHT_ANIMATION_DURATION_MS)\n .ease(d3.easeLinear)\n .styleTween('background-color', () => {\n const interpolator = d3.interpolate('rgba(255, 0, 0, 0)', 'rgba(255, 0, 0, 0.4)');\n return (t) => interpolator(t > 0.5 ? 1 - t : t);\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PropertyEditorComponent, isStandalone: true, selector: \"daga-property-editor\", inputs: { valueSet: \"valueSet\" }, viewQueries: [{ propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], ngImport: i0, template: \"<div\\r\\n #panel\\r\\n class=\\\"daga-panel daga-bottom daga-{{ location }} daga-{{ direction }}\\\"\\r\\n >\\r\\n <daga-collapse-button\\r\\n #collapse\\r\\n [disabled]=\\\"\\r\\n !valueSet ||\\r\\n !valueSet.propertySet ||\\r\\n !valueSet.propertySet.hasProperties()\\r\\n \\\"\\r\\n [direction]=\\\"direction\\\"\\r\\n [collapsableSelector]=\\\"panel\\\"\\r\\n collapsableAdditionalSelector=\\\".daga-panel-content\\\"\\r\\n rule=\\\"display\\\"\\r\\n collapsedValue=\\\"none\\\"\\r\\n visibleValue=\\\"block\\\"\\r\\n />\\r\\n @if (\\r\\n valueSet &&\\r\\n valueSet.propertySet &&\\r\\n valueSet.propertySet.hasProperties() &&\\r\\n !collapse.collapsed\\r\\n ) {\\r\\n <div\\r\\n class=\\\"daga-panel-content\\\"\\r\\n >\\r\\n @if (title) {\\r\\n <p class=\\\"daga-title\\\">\\r\\n {{ title }}\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"settings = !settings\\\">\\r\\n <div\\r\\n class=\\\"daga-icon daga-settings-icon\\\"\\r\\n [class]=\\\"\\r\\n settings === undefined\\r\\n ? ''\\r\\n : settings\\r\\n ? 'daga-unrotate'\\r\\n : 'daga-rotate'\\r\\n \\\"\\r\\n ></div>\\r\\n </button>\\r\\n </p>\\r\\n }\\r\\n @if (!settings) {\\r\\n <daga-object-editor [valueSet]=\\\"valueSet\\\" />\\r\\n }\\r\\n @if (settings) {\\r\\n <daga-property-settings [valueSet]=\\\"valueSet\\\" />\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n\", dependencies: [{ kind: \"component\", type: CollapseButtonComponent, selector: \"daga-collapse-button\", inputs: [\"collapsableSelector\", \"collapsableAdditionalSelector\", \"collapsed\", \"disabled\", \"direction\", \"rule\", \"collapsedValue\", \"visibleValue\"] }, { kind: \"component\", type: ObjectEditorComponent, selector: \"daga-object-editor\", inputs: [\"valueSet\", \"depth\"] }, { kind: \"component\", type: PropertySettingsComponent, selector: \"daga-property-settings\", inputs: [\"valueSet\", \"depth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-property-editor', imports: [\n CollapseButtonComponent,\n ObjectEditorComponent,\n PropertySettingsComponent\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\r\\n #panel\\r\\n class=\\\"daga-panel daga-bottom daga-{{ location }} daga-{{ direction }}\\\"\\r\\n >\\r\\n <daga-collapse-button\\r\\n #collapse\\r\\n [disabled]=\\\"\\r\\n !valueSet ||\\r\\n !valueSet.propertySet ||\\r\\n !valueSet.propertySet.hasProperties()\\r\\n \\\"\\r\\n [direction]=\\\"direction\\\"\\r\\n [collapsableSelector]=\\\"panel\\\"\\r\\n collapsableAdditionalSelector=\\\".daga-panel-content\\\"\\r\\n rule=\\\"display\\\"\\r\\n collapsedValue=\\\"none\\\"\\r\\n visibleValue=\\\"block\\\"\\r\\n />\\r\\n @if (\\r\\n valueSet &&\\r\\n valueSet.propertySet &&\\r\\n valueSet.propertySet.hasProperties() &&\\r\\n !collapse.collapsed\\r\\n ) {\\r\\n <div\\r\\n class=\\\"daga-panel-content\\\"\\r\\n >\\r\\n @if (title) {\\r\\n <p class=\\\"daga-title\\\">\\r\\n {{ title }}\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"settings = !settings\\\">\\r\\n <div\\r\\n class=\\\"daga-icon daga-settings-icon\\\"\\r\\n [class]=\\\"\\r\\n settings === undefined\\r\\n ? ''\\r\\n : settings\\r\\n ? 'daga-unrotate'\\r\\n : 'daga-rotate'\\r\\n \\\"\\r\\n ></div>\\r\\n </button>\\r\\n </p>\\r\\n }\\r\\n @if (!settings) {\\r\\n <daga-object-editor [valueSet]=\\\"valueSet\\\" />\\r\\n }\\r\\n @if (settings) {\\r\\n <daga-property-settings [valueSet]=\\\"valueSet\\\" />\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n\" }]\n }], propDecorators: { panel: [{\n type: ViewChild,\n args: ['panel']\n }], valueSet: [{\n type: Input\n }] } });\nexport const getStyleClassName = (s) => {\n return 'daga-property-name-' + s.replace(/\\s/g, '');\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvcHJvcGVydHktZWRpdG9yL3Byb3BlcnR5LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9wcm9wZXJ0eS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsTUFBTSxFQUdOLElBQUksRUFFTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFFNUY7O0dBRUc7QUFDSCxNQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQztBQUU3Qzs7OztHQUlHO0FBV0gsTUFBTSxPQUFPLHVCQUF1QjtJQUdsQyxJQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakMsY0FBYyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBVWxELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENB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Q0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7Z0JBQ25DLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQ2pDLG9CQUFvQixFQUNwQixzQkFBc0IsQ0FDdkIsQ0FBQztnQkFDRixPQUFPLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQzs4R0FoR1UsdUJBQXVCO2tHQUF2Qix1QkFBdUIsa05DOUNwQyxrL0NBcURBLDRDRGJJLHVCQUF1QixtTkFDdkIscUJBQXFCLDhGQUNyQix5QkFBeUI7OzJGQUloQix1QkFBdUI7a0JBVm5DLFNBQVM7K0JBQ0Usc0JBQXNCLFdBRXZCO3dCQUNQLHVCQUF1Qjt3QkFDdkIscUJBQXFCO3dCQUNyQix5QkFBeUI7cUJBQzFCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVEzQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBU2QsUUFBUTtzQkFEWCxLQUFLOztBQXFGUixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQVMsRUFBVSxFQUFFO0lBQ3JELE9BQU8scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvcm5lcixcclxuICBEaWFncmFtQ29uZmlnLFxyXG4gIFByb3BlcnR5RWRpdG9yLFxyXG4gIFNpZGUsXHJcbiAgVmFsdWVTZXRcclxufSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29sbGFwc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9jb2xsYXBzZS1idXR0b24vY29sbGFwc2UtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhZ2FDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RhZ2EtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JqZWN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9vYmplY3QtZWRpdG9yL29iamVjdC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvcGVydHlTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vcHJvcGVydHktc2V0dGluZ3MvcHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBEdXJhdGlvbiBvZiB0aGUgaGlnaGxpZ2h0IHByb3BlcnR5IGFuaW1hdGlvbiBpbiBtaWxsaXNlY29uZHMuXHJcbiAqL1xyXG5jb25zdCBISUdITElHSFRfQU5JTUFUSU9OX0RVUkFUSU9OX01TID0gMTAwMDtcclxuXHJcbi8qKlxyXG4gKiBFZGl0b3Igb2YgdGhlIHZhbHVlcyBvZiBhIHZhbHVlIHNldC5cclxuICogQHByaXZhdGVcclxuICogQHNlZSBWYWx1ZVNldFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYWdhLXByb3BlcnR5LWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29sbGFwc2VCdXR0b25Db21wb25lbnQsXHJcbiAgICBPYmplY3RFZGl0b3JDb21wb25lbnQsXHJcbiAgICBQcm9wZXJ0eVNldHRpbmdzQ29tcG9uZW50XHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlFZGl0b3JDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIFByb3BlcnR5RWRpdG9yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgI2NvbmZpZ1NlcnZpY2UgPSBpbmplY3QoRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncGFuZWwnKSBwYW5lbCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBsb2NhdGlvbiE6IENvcm5lcjtcclxuICBkaXJlY3Rpb24hOiBTaWRlO1xyXG4gIHdpZHRoITogc3RyaW5nO1xyXG5cclxuICB0aXRsZT86IHN0cmluZztcclxuICBfdmFsdWVTZXQ6IFZhbHVlU2V0IHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHZhbHVlU2V0KCk6IFZhbHVlU2V0IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZVNldDtcclxuICB9XHJcbiAgc2V0IHZhbHVlU2V0KHZhbHVlU2V0OiBWYWx1ZVNldCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlU2V0ICE9PSB2YWx1ZVNldCkge1xyXG4gICAgICB0aGlzLl92YWx1ZVNldCA9IHZhbHVlU2V0O1xyXG4gICAgICB0aGlzLnNldHRpbmdzID0gdW5kZWZpbmVkO1xyXG4gICAgICAvLyBmb3JjZSB2YWx1ZSBjaGFuZ2UgZGV0ZWN0aW9uXHJcbiAgICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXR0aW5ncz86IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgc3ViPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3ViID0gdGhpcy4jY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICB0aGlzLmluaXQoYyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0UGFuZWxXaWR0aCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGluaXQoY29uZmlnOiBEaWFncmFtQ29uZmlnKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvY2F0aW9uID1cclxuICAgICAgY29uZmlnLmNvbXBvbmVudHM/LnByb3BlcnR5RWRpdG9yPy5sb2NhdGlvbiB8fCBDb3JuZXIuVG9wUmlnaHQ7XHJcbiAgICB0aGlzLmRpcmVjdGlvbiA9XHJcbiAgICAgIGNvbmZpZy5jb21wb25lbnRzPy5wcm9wZXJ0eUVkaXRvcj8uZGlyZWN0aW9uIHx8IFNpZGUuQm90dG9tO1xyXG4gICAgdGhpcy53aWR0aCA9IGNvbmZpZy5jb21wb25lbnRzPy5wcm9wZXJ0eUVkaXRvcj8ud2lkdGggfHwgJzI0cmVtJztcclxuICAgIHRoaXMudGl0bGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnZhbHVlU2V0ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zZXRQYW5lbFdpZHRoKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYW5lbFdpZHRoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGFuZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgY2FzZSBTaWRlLkJvdHRvbTpcclxuICAgICAgICBjYXNlIFNpZGUuVG9wOlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RQYW5lbCgpLnN0eWxlKCd3aWR0aCcsIHRoaXMud2lkdGgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBTaWRlLkxlZnQ6XHJcbiAgICAgICAgY2FzZSBTaWRlLlJpZ2h0OlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RQYW5lbCgpLnN0eWxlKCdoZWlnaHQnLCB0aGlzLndpZHRoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RQYW5lbCgpOiBkMy5TZWxlY3Rpb248SFRNTERpdkVsZW1lbnQsIHVua25vd24sIG51bGwsIHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIGQzLnNlbGVjdCh0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaGlnaGxpZ2h0UHJvcGVydHkoLi4ucHJvcGVydHlOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGxldCBzZWxlY3RvciA9ICcnO1xyXG4gICAgbGV0IGRlcHRoID0gMDtcclxuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHByb3BlcnR5TmFtZXMpIHtcclxuICAgICAgc2VsZWN0b3IgKz0gYCAuZGFnYS1wcm9wZXJ0eS4ke2dldFN0eWxlQ2xhc3NOYW1lKHByb3BlcnR5TmFtZSl9LmRhZ2EtZGVwdGgtJHtkZXB0aH1gO1xyXG4gICAgICArK2RlcHRoO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudmFsdWVTZXQpIHtcclxuICAgICAgZDMuc2VsZWN0KHRoaXMucGFuZWwubmF0aXZlRWxlbWVudClcclxuICAgICAgICAuc2VsZWN0KHNlbGVjdG9yKVxyXG4gICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAuZHVyYXRpb24oSElHSExJR0hUX0FOSU1BVElPTl9EVVJBVElPTl9NUylcclxuICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxyXG4gICAgICAgIC5zdHlsZVR3ZWVuKCdiYWNrZ3JvdW5kLWNvbG9yJywgKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGUoXHJcbiAgICAgICAgICAgICdyZ2JhKDI1NSwgMCwgMCwgMCknLFxyXG4gICAgICAgICAgICAncmdiYSgyNTUsIDAsIDAsIDAuNCknXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuICh0OiBudW1iZXIpID0+IGludGVycG9sYXRvcih0ID4gMC41ID8gMSAtIHQgOiB0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTdHlsZUNsYXNzTmFtZSA9IChzOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gIHJldHVybiAnZGFnYS1wcm9wZXJ0eS1uYW1lLScgKyBzLnJlcGxhY2UoL1xccy9nLCAnJyk7XHJcbn07XHJcbiIsIjxkaXZcclxuICAjcGFuZWxcclxuICBjbGFzcz1cImRhZ2EtcGFuZWwgZGFnYS1ib3R0b20gZGFnYS17eyBsb2NhdGlvbiB9fSBkYWdhLXt7IGRpcmVjdGlvbiB9fVwiXHJcbiAgPlxyXG4gIDxkYWdhLWNvbGxhcHNlLWJ1dHRvblxyXG4gICAgI2NvbGxhcHNlXHJcbiAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICF2YWx1ZVNldCB8fFxyXG4gICAgICAhdmFsdWVTZXQucHJvcGVydHlTZXQgfHxcclxuICAgICAgIXZhbHVlU2V0LnByb3BlcnR5U2V0Lmhhc1Byb3BlcnRpZXMoKVxyXG4gICAgXCJcclxuICAgIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCJcclxuICAgIFtjb2xsYXBzYWJsZVNlbGVjdG9yXT1cInBhbmVsXCJcclxuICAgIGNvbGxhcHNhYmxlQWRkaXRpb25hbFNlbGVjdG9yPVwiLmRhZ2EtcGFuZWwtY29udGVudFwiXHJcbiAgICBydWxlPVwiZGlzcGxheVwiXHJcbiAgICBjb2xsYXBzZWRWYWx1ZT1cIm5vbmVcIlxyXG4gICAgdmlzaWJsZVZhbHVlPVwiYmxvY2tcIlxyXG4gICAgLz5cclxuICAgIEBpZiAoXHJcbiAgICAgIHZhbHVlU2V0ICYmXHJcbiAgICAgIHZhbHVlU2V0LnByb3BlcnR5U2V0ICYmXHJcbiAgICAgIHZhbHVlU2V0LnByb3BlcnR5U2V0Lmhhc1Byb3BlcnRpZXMoKSAmJlxyXG4gICAgICAhY29sbGFwc2UuY29sbGFwc2VkXHJcbiAgICAgICkge1xyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJkYWdhLXBhbmVsLWNvbnRlbnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICBAaWYgKHRpdGxlKSB7XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImRhZ2EtdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgdGl0bGUgfX1cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtcHJvcGVydHktYnV0dG9uXCIgKGNsaWNrKT1cInNldHRpbmdzID0gIXNldHRpbmdzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYWdhLWljb24gZGFnYS1zZXR0aW5ncy1pY29uXCJcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgc2V0dGluZ3MgPT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgID8gJydcclxuICAgICAgICAgICAgICA6IHNldHRpbmdzXHJcbiAgICAgICAgICAgICAgICA/ICdkYWdhLXVucm90YXRlJ1xyXG4gICAgICAgICAgICAgICAgOiAnZGFnYS1yb3RhdGUnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoIXNldHRpbmdzKSB7XHJcbiAgICAgICAgICA8ZGFnYS1vYmplY3QtZWRpdG9yIFt2YWx1ZVNldF09XCJ2YWx1ZVNldFwiIC8+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoc2V0dGluZ3MpIHtcclxuICAgICAgICAgIDxkYWdhLXByb3BlcnR5LXNldHRpbmdzIFt2YWx1ZVNldF09XCJ2YWx1ZVNldFwiIC8+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { Corner, DagaExporter, DagaImporter, Side } from '@metadev/daga';\nimport { skip } from 'rxjs';\nimport { DiagramButtonsComponent } from '../diagram-buttons/diagram-buttons.component';\nimport { ErrorsComponent } from '../errors/errors.component';\nimport { PaletteComponent } from '../palette/palette.component';\nimport { PropertyEditorComponent } from '../property-editor/property-editor.component';\nimport { CanvasProviderService } from '../services/canvas-provider.service';\nimport { DagaConfigurationService } from '../services/daga-configuration.service';\nimport * as i0 from \"@angular/core\";\n/**\n * The context of a diagram. Every separate diagram must be contained within its own {@link DiagramComponent} and every {@link DiagramComponent} must contain its own {@link DiagramEditorComponent}.\n * This component defines a {@link DagaConfigurationService} and a {@link CanvasProviderService}, which is shared by all the components within and allows accessing the configuration and the canvas of this component's diagram, respectively.\n * @public\n */\nexport class DiagramComponent {\n constructor() {\n this.#configurationService = inject(DagaConfigurationService);\n this.#canvasProvider = inject(CanvasProviderService);\n this.#cdr = inject(ChangeDetectorRef);\n this.importer = new DagaImporter();\n this.exporter = new DagaExporter();\n /**\n * Output for changes to the diagram's model.\n * @public\n */\n this.modelChange = new EventEmitter();\n /**\n * Output for user events on the diagram.\n * @public\n */\n this.diagramEvent = new EventEmitter();\n this.Corner = Corner;\n this.Side = Side;\n }\n #configurationService;\n #canvasProvider;\n #cdr;\n /**\n * Getter for the configuration of this diagram.\n * @public\n */\n get config() {\n return this.#configurationService.getConfig();\n }\n /**\n * Setter for the configuration for the diagram.\n * @public\n */\n set config(config) {\n if (this.#configurationService.getConfig() !== config) {\n this.#configurationService.init(config);\n }\n }\n /**\n * Subject used to track when the diagram configuration has been updated.\n * @public\n */\n get config$() {\n return this.#configurationService.config$;\n }\n /**\n * Getter for the canvas of this diagram.\n * @public\n */\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n /**\n * Subject used to track when the canvas has been updated.\n * @public\n */\n get canvas$() {\n return this.#canvasProvider.canvas$;\n }\n /**\n * Subject used to track when the view has been initialized after updating the canvas.\n * @public\n */\n get viewInitialized$() {\n return this.#canvasProvider.viewInitialized$;\n }\n /**\n * Serialized model for the diagram. Used for data binding to the model.\n * @public\n */\n get model() {\n return this._model;\n }\n /**\n * Serialized model for the diagram. Used for data binding to the model.\n * @public\n */\n set model(model) {\n if (this._model !== model) {\n this._model = model;\n const canvas = this.canvas;\n if (canvas) {\n this.importer.import(canvas.model, model);\n }\n }\n }\n ngOnInit() {\n this.#canvasProvider.initCanvas(this, this.config);\n this.setUpCanvas(this.canvas);\n }\n ngAfterViewInit() {\n // wait for setTimeout(0) to force browser to finish calculating the size of parent before initializing the view\n setTimeout(() => {\n this.#canvasProvider.initCanvasView(this.appendTo.nativeElement);\n // initial import of the model\n if (this.model) {\n this.importer.import(this.canvas.model, this.model);\n }\n this.canvasSub = this.#canvasProvider.canvas$\n // we skip the first one as the subscribe() underneath is\n // for when the canvas is reloaded, not initially loaded\n .pipe(skip(1))\n .subscribe((c) => {\n // reset model of the old canvas\n this.model = this.exporter.export(c.model);\n this.setUpCanvas(c);\n });\n this.configurationSub = this.#configurationService.config$\n // we skip the first one as the subscribe() underneath is\n // for when the config is reloaded, not initially loaded\n .pipe(skip(1))\n .subscribe((c) => {\n this.#canvasProvider.initCanvas(this, c);\n this.#canvasProvider.initCanvasView(this.appendTo.nativeElement);\n this.#cdr.detectChanges();\n });\n }, 0);\n }\n ngOnDestroy() {\n this.configurationSub?.unsubscribe();\n this.canvasSub?.unsubscribe();\n }\n setUpCanvas(canvas) {\n canvas.diagramEvent$.subscribe((e) => {\n this.diagramEvent.emit(e);\n });\n canvas.diagramChange$.subscribe(() => {\n const exportedModel = this.exporter.export(this.canvas.model);\n this._model = exportedModel;\n this.modelChange.emit(exportedModel);\n });\n if (this.model) {\n this.importer.import(canvas.model, this.model);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DiagramComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: DiagramComponent, isStandalone: true, selector: \"daga-diagram\", inputs: { config: \"config\", model: \"model\" }, outputs: { modelChange: \"modelChange\", diagramEvent: \"diagramEvent\" }, providers: [CanvasProviderService, DagaConfigurationService], viewQueries: [{ propertyName: \"appendTo\", first: true, predicate: [\"appendTo\"], descendants: true }, { propertyName: \"diagramButtons\", first: true, predicate: [\"diagramButtons\"], descendants: true }, { propertyName: \"palette\", first: true, predicate: [\"palette\"], descendants: true }, { propertyName: \"propertyEditor\", first: true, predicate: [\"propertyEditor\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"daga-append-to\\\" #appendTo></div>\\r\\n@if (\\r\\n config.components?.buttons !== undefined &&\\r\\n config.components?.buttons?.enabled !== false\\r\\n ) {\\r\\n <daga-diagram-buttons\\r\\n #diagramButtons\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.palette !== undefined &&\\r\\n config.components?.palette?.enabled !== false &&\\r\\n config.components?.palette?.sections &&\\r\\n (config.components?.palette?.sections?.length || 0) > 0\\r\\n ) {\\r\\n <daga-palette\\r\\n #palette\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.propertyEditor !== undefined &&\\r\\n config.components?.propertyEditor?.enabled !== false\\r\\n ) {\\r\\n <daga-property-editor\\r\\n #propertyEditor\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.errors !== undefined &&\\r\\n config.components?.errors?.enabled !== false\\r\\n ) {\\r\\n <daga-errors\\r\\n />\\r\\n}\\r\\n<ng-content />\\r\\n\", dependencies: [{ kind: \"component\", type: DiagramButtonsComponent, selector: \"daga-diagram-buttons\", inputs: [\"location\", \"direction\", \"enableAction\", \"enableFilter\", \"enableLayout\", \"enableSelection\", \"enableZoom\"] }, { kind: \"component\", type: PaletteComponent, selector: \"daga-palette\", inputs: [\"palettes\", \"currentPalette\", \"currentCategory\", \"location\", \"direction\", \"width\", \"gap\"] }, { kind: \"component\", type: PropertyEditorComponent, selector: \"daga-property-editor\", inputs: [\"valueSet\"] }, { kind: \"component\", type: ErrorsComponent, selector: \"daga-errors\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DiagramComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, selector: 'daga-diagram', providers: [CanvasProviderService, DagaConfigurationService], imports: [\n DiagramButtonsComponent,\n PaletteComponent,\n PropertyEditorComponent,\n ErrorsComponent\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"daga-append-to\\\" #appendTo></div>\\r\\n@if (\\r\\n config.components?.buttons !== undefined &&\\r\\n config.components?.buttons?.enabled !== false\\r\\n ) {\\r\\n <daga-diagram-buttons\\r\\n #diagramButtons\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.palette !== undefined &&\\r\\n config.components?.palette?.enabled !== false &&\\r\\n config.components?.palette?.sections &&\\r\\n (config.components?.palette?.sections?.length || 0) > 0\\r\\n ) {\\r\\n <daga-palette\\r\\n #palette\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.propertyEditor !== undefined &&\\r\\n config.components?.propertyEditor?.enabled !== false\\r\\n ) {\\r\\n <daga-property-editor\\r\\n #propertyEditor\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.errors !== undefined &&\\r\\n config.components?.errors?.enabled !== false\\r\\n ) {\\r\\n <daga-errors\\r\\n />\\r\\n}\\r\\n<ng-content />\\r\\n\" }]\n }], propDecorators: { appendTo: [{\n type: ViewChild,\n args: ['appendTo']\n }], diagramButtons: [{\n type: ViewChild,\n args: ['diagramButtons']\n }], palette: [{\n type: ViewChild,\n args: ['palette']\n }], propertyEditor: [{\n type: ViewChild,\n args: ['propertyEditor']\n }], config: [{\n type: Input\n }], model: [{\n type: Input\n }], modelChange: [{\n type: Output\n }], diagramEvent: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2RpYWdyYW0vZGlhZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2RpYWdyYW0vZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUtaLElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsSUFBSSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBRWxGOzs7O0dBSUc7QUFjSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYjdCO1FBZ0JFLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pELG9CQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEQsU0FBSSxHQUFH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dGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2FudmFzLFxyXG4gIENvcm5lcixcclxuICBEYWdhRXhwb3J0ZXIsXHJcbiAgRGFnYUltcG9ydGVyLFxyXG4gIERhZ2FNb2RlbCxcclxuICBEaWFncmFtQ29uZmlnLFxyXG4gIERpYWdyYW1FZGl0b3IsXHJcbiAgRGlhZ3JhbUV2ZW50LFxyXG4gIFNpZGVcclxufSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2tpcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERpYWdyYW1CdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhZ3JhbS1idXR0b25zL2RpYWdyYW0tYnV0dG9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFcnJvcnNDb21wb25lbnQgfSBmcm9tICcuLi9lcnJvcnMvZXJyb3JzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhbGV0dGVDb21wb25lbnQgfSBmcm9tICcuLi9wYWxldHRlL3BhbGV0dGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvcGVydHlFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbnZhc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NhbnZhcy1wcm92aWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGFnYS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBjb250ZXh0IG9mIGEgZGlhZ3JhbS4gRXZlcnkgc2VwYXJhdGUgZGlhZ3JhbSBtdXN0IGJlIGNvbnRhaW5lZCB3aXRoaW4gaXRzIG93biB7QGxpbmsgRGlhZ3JhbUNvbXBvbmVudH0gYW5kIGV2ZXJ5IHtAbGluayBEaWFncmFtQ29tcG9uZW50fSBtdXN0IGNvbnRhaW4gaXRzIG93biB7QGxpbmsgRGlhZ3JhbUVkaXRvckNvbXBvbmVudH0uXHJcbiAqIFRoaXMgY29tcG9uZW50IGRlZmluZXMgYSB7QGxpbmsgRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlfSBhbmQgYSB7QGxpbmsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlfSwgd2hpY2ggaXMgc2hhcmVkIGJ5IGFsbCB0aGUgY29tcG9uZW50cyB3aXRoaW4gYW5kIGFsbG93cyBhY2Nlc3NpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBjYW52YXMgb2YgdGhpcyBjb21wb25lbnQncyBkaWFncmFtLCByZXNwZWN0aXZlbHkuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdkYWdhLWRpYWdyYW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFncmFtLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtDYW52YXNQcm92aWRlclNlcnZpY2UsIERhZ2FDb25maWd1cmF0aW9uU2VydmljZV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBQYWxldHRlQ29tcG9uZW50LFxyXG4gICAgUHJvcGVydHlFZGl0b3JDb21wb25lbnQsXHJcbiAgICBFcnJvcnNDb21wb25lbnRcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFncmFtQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBEaWFncmFtRWRpdG9yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgI2NvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0KERhZ2FDb25maWd1cmF0aW9uU2VydmljZSk7XHJcbiAgI2NhbnZhc1Byb3ZpZGVyID0gaW5qZWN0KENhbnZhc1Byb3ZpZGVyU2VydmljZSk7XHJcbiAgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2FwcGVuZFRvJykgYXBwZW5kVG8hOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkaWFncmFtQnV0dG9ucycpIGRpYWdyYW1CdXR0b25zITogRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgncGFsZXR0ZScpIHBhbGV0dGUhOiBQYWxldHRlQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3Byb3BlcnR5RWRpdG9yJykgcHJvcGVydHlFZGl0b3IhOiBQcm9wZXJ0eUVkaXRvckNvbXBvbmVudDtcclxuXHJcbiAgcHJpdmF0ZSBpbXBvcnRlciA9IG5ldyBEYWdhSW1wb3J0ZXIoKTtcclxuICBwcml2YXRlIGV4cG9ydGVyID0gbmV3IERhZ2FFeHBvcnRlcigpO1xyXG4gIHByaXZhdGUgX21vZGVsITogRGFnYU1vZGVsO1xyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoaXMgZGlhZ3JhbS5cclxuICAgKiBAcHVibGljXHJcbiAgICovXHJcbiAgZ2V0IGNvbmZpZygpOiBEaWFncmFtQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLiNjb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWcoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGZvciB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGRpYWdyYW0uXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbmZpZyhjb25maWc6IERpYWdyYW1Db25maWcpIHtcclxuICAgIGlmICh0aGlzLiNjb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWcoKSAhPT0gY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuI2NvbmZpZ3VyYXRpb25TZXJ2aWNlLmluaXQoY29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB1c2VkIHRvIHRyYWNrIHdoZW4gdGhlIGRpYWdyYW0gY29uZmlndXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBnZXQgY29uZmlnJCgpOiBPYnNlcnZhYmxlPERpYWdyYW1Db25maWc+IHtcclxuICAgIHJldHVybiB0aGlzLiNjb25maWd1cmF0aW9uU2VydmljZS5jb25maWckO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBjYW52YXMgb2YgdGhpcyBkaWFncmFtLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBnZXQgY2FudmFzKCk6IENhbnZhcyB7XHJcbiAgICByZXR1cm4gdGhpcy4jY2FudmFzUHJvdmlkZXIuZ2V0Q2FudmFzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFN1YmplY3QgdXNlZCB0byB0cmFjayB3aGVuIHRoZSBjYW52YXMgaGFzIGJlZW4gdXBkYXRlZC5cclxuICAgKiBAcHVibGljXHJcbiAgICovXHJcbiAgZ2V0IGNhbnZhcyQoKTogT2JzZXJ2YWJsZTxDYW52YXM+IHtcclxuICAgIHJldHVybiB0aGlzLiNjYW52YXNQcm92aWRlci5jYW52YXMkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHVzZWQgdG8gdHJhY2sgd2hlbiB0aGUgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZCBhZnRlciB1cGRhdGluZyB0aGUgY2FudmFzLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBnZXQgdmlld0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPENhbnZhcz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuI2NhbnZhc1Byb3ZpZGVyLnZpZXdJbml0aWFsaXplZCQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlcmlhbGl6ZWQgbW9kZWwgZm9yIHRoZSBkaWFncmFtLiBVc2VkIGZvciBkYXRhIGJpbmRpbmcgdG8gdGhlIG1vZGVsLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBnZXQgbW9kZWwoKTogRGFnYU1vZGVsIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2VyaWFsaXplZCBtb2RlbCBmb3IgdGhlIGRpYWdyYW0uIFVzZWQgZm9yIGRhdGEgYmluZGluZyB0byB0aGUgbW9kZWwuXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1vZGVsKG1vZGVsOiBEYWdhTW9kZWwpIHtcclxuICAgIGlmICh0aGlzLl9tb2RlbCAhPT0gbW9kZWwpIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcclxuICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5jYW52YXM7XHJcbiAgICAgIGlmIChjYW52YXMpIHtcclxuICAgICAgICB0aGlzLmltcG9ydGVyLmltcG9ydChjYW52YXMubW9kZWwsIG1vZGVsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBPdXRwdXQgZm9yIGNoYW5nZXMgdG8gdGhlIGRpYWdyYW0ncyBtb2RlbC5cclxuICAgKiBAcHVibGljXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhZ2FNb2RlbD4oKTtcclxuICAvKipcclxuICAgKiBPdXRwdXQgZm9yIHVzZXIgZXZlbnRzIG9uIHRoZSBkaWFncmFtLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBkaWFncmFtRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERpYWdyYW1FdmVudD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU3ViPzogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgY2FudmFzU3ViPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBDb3JuZXIgPSBDb3JuZXI7XHJcbiAgU2lkZSA9IFNpZGU7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy4jY2FudmFzUHJvdmlkZXIuaW5pdENhbnZhcyh0aGlzLCB0aGlzLmNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5zZXRVcENhbnZhcyh0aGlzLmNhbnZhcyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyB3YWl0IGZvciBzZXRUaW1lb3V0KDApIHRvIGZvcmNlIGJyb3dzZXIgdG8gZmluaXNoIGNhbGN1bGF0aW5nIHRoZSBzaXplIG9mIHBhcmVudCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRoZSB2aWV3XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy4jY2FudmFzUHJvdmlkZXIuaW5pdENhbnZhc1ZpZXcodGhpcy5hcHBlbmRUby5uYXRpdmVFbGVtZW50KTtcclxuXHJcbiAgICAgIC8vIGluaXRpYWwgaW1wb3J0IG9mIHRoZSBtb2RlbFxyXG4gICAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICAgIHRoaXMuaW1wb3J0ZXIuaW1wb3J0KHRoaXMuY2FudmFzLm1vZGVsLCB0aGlzLm1vZGVsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jYW52YXNTdWIgPSB0aGlzLiNjYW52YXNQcm92aWRlci5jYW52YXMkXHJcbiAgICAgICAgLy8gd2Ugc2tpcCB0aGUgZmlyc3Qgb25lIGFzIHRoZSBzdWJzY3JpYmUoKSB1bmRlcm5lYXRoIGlzXHJcbiAgICAgICAgLy8gZm9yIHdoZW4gdGhlIGNhbnZhcyBpcyByZWxvYWRlZCwgbm90IGluaXRpYWxseSBsb2FkZWRcclxuICAgICAgICAucGlwZShza2lwKDEpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGMpID0+IHtcclxuICAgICAgICAgIC8vIHJlc2V0IG1vZGVsIG9mIHRoZSBvbGQgY2FudmFzXHJcbiAgICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5leHBvcnRlci5leHBvcnQoYy5tb2RlbCk7XHJcbiAgICAgICAgICB0aGlzLnNldFVwQ2FudmFzKGMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdWIgPSB0aGlzLiNjb25maWd1cmF0aW9uU2VydmljZS5jb25maWckXHJcbiAgICAgICAgLy8gd2Ugc2tpcCB0aGUgZmlyc3Qgb25lIGFzIHRoZSBzdWJzY3JpYmUoKSB1bmRlcm5lYXRoIGlzXHJcbiAgICAgICAgLy8gZm9yIHdoZW4gdGhlIGNvbmZpZyBpcyByZWxvYWRlZCwgbm90IGluaXRpYWxseSBsb2FkZWRcclxuICAgICAgICAucGlwZShza2lwKDEpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGMpID0+IHtcclxuICAgICAgICAgIHRoaXMuI2NhbnZhc1Byb3ZpZGVyLmluaXRDYW52YXModGhpcywgYyk7XHJcbiAgICAgICAgICB0aGlzLiNjYW52YXNQcm92aWRlci5pbml0Q2FudmFzVmlldyh0aGlzLmFwcGVuZFRvLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmNhbnZhc1N1Yj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXBDYW52YXMoY2FudmFzOiBDYW52YXMpOiB2b2lkIHtcclxuICAgIGNhbnZhcy5kaWFncmFtRXZlbnQkLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWdyYW1FdmVudC5lbWl0KGUpO1xyXG4gICAgfSk7XHJcbiAgICBjYW52YXMuZGlhZ3JhbUNoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgY29uc3QgZXhwb3J0ZWRNb2RlbCA9IHRoaXMuZXhwb3J0ZXIuZXhwb3J0KHRoaXMuY2FudmFzLm1vZGVsKTtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBleHBvcnRlZE1vZGVsO1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoZXhwb3J0ZWRNb2RlbCk7XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLm1vZGVsKSB7XHJcbiAgICAgIHRoaXMuaW1wb3J0ZXIuaW1wb3J0KGNhbnZhcy5tb2RlbCwgdGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYWdhLWFwcGVuZC10b1wiICNhcHBlbmRUbz48L2Rpdj5cclxuQGlmIChcclxuICBjb25maWcuY29tcG9uZW50cz8uYnV0dG9ucyAhPT0gdW5kZWZpbmVkICYmXHJcbiAgY29uZmlnLmNvbXBvbmVudHM/LmJ1dHRvbnM/LmVuYWJsZWQgIT09IGZhbHNlXHJcbiAgKSB7XHJcbiAgPGRhZ2EtZGlhZ3JhbS1idXR0b25zXHJcbiAgICAjZGlhZ3JhbUJ1dHRvbnNcclxuICAgIC8+XHJcbn1cclxuQGlmIChcclxuICBjb25maWcuY29tcG9uZW50cz8ucGFsZXR0ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgY29uZmlnLmNvbXBvbmVudHM/LnBhbGV0dGU/LmVuYWJsZWQgIT09IGZhbHNlICYmXHJcbiAgY29uZmlnLmNvbXBvbmVudHM/LnBhbGV0dGU/LnNlY3Rpb25zICYmXHJcbiAgKGNvbmZpZy5jb21wb25lbnRzPy5wYWxldHRlPy5zZWN0aW9ucz8ubGVuZ3RoIHx8IDApID4gMFxyXG4gICkge1xyXG4gIDxkYWdhLXBhbGV0dGVcclxuICAgICNwYWxldHRlXHJcbiAgICAvPlxyXG59XHJcbkBpZiAoXHJcbiAgY29uZmlnLmNvbXBvbmVudHM/LnByb3BlcnR5RWRpdG9yICE9PSB1bmRlZmluZWQgJiZcclxuICBjb25maWcuY29tcG9uZW50cz8ucHJvcGVydHlFZGl0b3I/LmVuYWJsZWQgIT09IGZhbHNlXHJcbiAgKSB7XHJcbiAgPGRhZ2EtcHJvcGVydHktZWRpdG9yXHJcbiAgICAjcHJvcGVydHlFZGl0b3JcclxuICAgIC8+XHJcbn1cclxuQGlmIChcclxuICBjb25maWcuY29tcG9uZW50cz8uZXJyb3JzICE9PSB1bmRlZmluZWQgJiZcclxuICBjb25maWcuY29tcG9uZW50cz8uZXJyb3JzPy5lbmFibGVkICE9PSBmYWxzZVxyXG4gICkge1xyXG4gIDxkYWdhLWVycm9yc1xyXG4gICAgLz5cclxufVxyXG48bmctY29udGVudCAvPlxyXG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CollapseButtonComponent } from './collapse-button/collapse-button.component';\nimport { DiagramButtonsComponent } from './diagram-buttons/diagram-buttons.component';\nimport { DiagramComponent } from './diagram/diagram.component';\nimport { ErrorsComponent } from './errors/errors.component';\nimport { PaletteComponent } from './palette/palette.component';\nimport { ObjectEditorComponent } from './property-editor/object-editor/object-editor.component';\nimport { PropertyEditorComponent } from './property-editor/property-editor.component';\nimport { TextListEditorComponent } from './property-editor/text-list-editor/text-list-editor.component';\nimport { TextMapEditorComponent } from './property-editor/text-map-editor/text-map-editor.component';\nimport { CanvasProviderService } from './services/canvas-provider.service';\nimport { DagaConfigurationService } from './services/daga-configuration.service';\nimport * as i0 from \"@angular/core\";\nexport class DagaModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaModule, imports: [CollapseButtonComponent,\n DiagramButtonsComponent,\n DiagramComponent,\n ErrorsComponent,\n ObjectEditorComponent,\n PaletteComponent,\n TextListEditorComponent,\n TextMapEditorComponent,\n PropertyEditorComponent,\n CommonModule,\n FormsModule], exports: [DiagramComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaModule, providers: [DagaConfigurationService, CanvasProviderService], imports: [DiagramComponent,\n ObjectEditorComponent,\n TextListEditorComponent,\n TextMapEditorComponent,\n PropertyEditorComponent,\n CommonModule,\n FormsModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [\n CollapseButtonComponent,\n DiagramButtonsComponent,\n DiagramComponent,\n ErrorsComponent,\n ObjectEditorComponent,\n PaletteComponent,\n TextListEditorComponent,\n TextMapEditorComponent,\n PropertyEditorComponent,\n CommonModule,\n FormsModule\n ],\n exports: [DiagramComponent],\n providers: [DagaConfigurationService, CanvasProviderService]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFnYS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2RhZ2EubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDaEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDeEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBb0JqRixNQUFNLE9BQU8sVUFBVTs4R0FBVixVQUFVOytHQUFWLFVBQVUsWUFmbkIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2QixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQixnQkFBZ0I7WUFDaEIsdUJBQXVCO1lBQ3ZCLHNCQUFzQjtZQUN0Qix1QkFBdUI7WUFDdkIsWUFBWTtZQUNaLFdBQVcsYUFFSCxnQkFBZ0I7K0dBR2YsVUFBVSxhQUZWLENBQUMsd0JBQXdCLEVBQUUscUJBQXFCLENBQUMsWUFYMUQsZ0JBQWdCO1lBRWhCLHFCQUFxQjtZQUVyQix1QkFBdUI7WUFDdkIsc0JBQXNCO1lBQ3RCLHVCQUF1QjtZQUN2QixZQUFZO1lBQ1osV0FBVzs7MkZBS0YsVUFBVTtrQkFsQnRCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDO2lCQUM3RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgQ29sbGFwc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbGxhcHNlLWJ1dHRvbi9jb2xsYXBzZS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpYWdyYW0tYnV0dG9ucy9kaWFncmFtLWJ1dHRvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4vZGlhZ3JhbS9kaWFncmFtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVycm9yc0NvbXBvbmVudCB9IGZyb20gJy4vZXJyb3JzL2Vycm9ycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWxldHRlQ29tcG9uZW50IH0gZnJvbSAnLi9wYWxldHRlL3BhbGV0dGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JqZWN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0eS1lZGl0b3Ivb2JqZWN0LWVkaXRvci9vYmplY3QtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFByb3BlcnR5RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRMaXN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0eS1lZGl0b3IvdGV4dC1saXN0LWVkaXRvci90ZXh0LWxpc3QtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRNYXBFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LWVkaXRvci90ZXh0LW1hcC1lZGl0b3IvdGV4dC1tYXAtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbnZhc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2RhZ2EtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb2xsYXBzZUJ1dHRvbkNvbXBvbmVudCxcclxuICAgIERpYWdyYW1CdXR0b25zQ29tcG9uZW50LFxyXG4gICAgRGlhZ3JhbUNvbXBvbmVudCxcclxuICAgIEVycm9yc0NvbXBvbmVudCxcclxuICAgIE9iamVjdEVkaXRvckNvbXBvbmVudCxcclxuICAgIFBhbGV0dGVDb21wb25lbnQsXHJcbiAgICBUZXh0TGlzdEVkaXRvckNvbXBvbmVudCxcclxuICAgIFRleHRNYXBFZGl0b3JDb21wb25lbnQsXHJcbiAgICBQcm9wZXJ0eUVkaXRvckNvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbRGlhZ3JhbUNvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBDYW52YXNQcm92aWRlclNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYWdhTW9kdWxlIHt9XHJcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRldi1kYWdhLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbWV0YWRldi1kYWdhLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadev-daga-angular.mjs","sources":["../tmp-esm2022/lib/collapse-button/collapse-button.component.js","../tmp-esm2022/lib/services/canvas-provider.service.js","../tmp-esm2022/lib/services/daga-configuration.service.js","../tmp-esm2022/lib/diagram-buttons/diagram-buttons.component.js","../tmp-esm2022/lib/errors/errors.component.js","../tmp-esm2022/lib/palette/palette.component.js","../tmp-esm2022/lib/property-editor/property-settings/property-settings.component.js","../tmp-esm2022/lib/property-editor/autocomplete/autocomplete.component.js","../tmp-esm2022/lib/property-editor/option-list-editor/option-list-editor.component.js","../tmp-esm2022/lib/property-editor/text-list-editor/text-list-editor.component.js","../tmp-esm2022/lib/property-editor/text-map-editor/text-map-editor.component.js","../tmp-esm2022/lib/property-editor/object-editor/object-editor.component.js","../tmp-esm2022/lib/property-editor/property-editor.component.js","../tmp-esm2022/lib/diagram/diagram.component.js","../tmp-esm2022/lib/daga.module.js","../tmp-esm2022/metadev-daga-angular.js"],"sourcesContent":["import { Component, ElementRef, Input } from '@angular/core';\nimport { Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport * as i0 from \"@angular/core\";\n/**\n * Button used to collapse components that implement it.\n * @private\n */\nexport class CollapseButtonComponent {\n constructor() {\n this.collapsed = false;\n this.disabled = false;\n this.direction = Side.Bottom;\n this.rule = 'visibility';\n this.collapsedValue = 'collapse';\n this.visibleValue = 'visible';\n this.Side = Side;\n }\n toggleCollapse() {\n if (!this.disabled) {\n this.collapsed = !this.collapsed;\n let selection;\n if (this.collapsableSelector instanceof ElementRef) {\n selection = d3.select(this.collapsableSelector.nativeElement);\n if (this.collapsableAdditionalSelector) {\n selection = selection.select(this.collapsableAdditionalSelector);\n }\n }\n else if (this.collapsableSelector instanceof HTMLElement) {\n selection = d3.select(this.collapsableSelector);\n if (this.collapsableAdditionalSelector) {\n selection = selection.select(this.collapsableAdditionalSelector);\n }\n }\n else {\n selection = d3.select(this.collapsableSelector);\n if (this.collapsableAdditionalSelector) {\n selection = selection.select(this.collapsableAdditionalSelector);\n }\n }\n selection.style(this.rule, this.collapsed ? this.collapsedValue : this.visibleValue);\n }\n }\n getClass() {\n switch (this.direction) {\n case Side.Right:\n if (this.disabled) {\n return 'daga-horizontal-none';\n }\n else if (this.collapsed) {\n return 'daga-horizontal-right';\n }\n else {\n return 'daga-horizontal-left';\n }\n case Side.Bottom:\n if (this.disabled) {\n return 'daga-vertical-none';\n }\n else if (this.collapsed) {\n return 'daga-vertical-down';\n }\n else {\n return 'daga-vertical-up';\n }\n case Side.Left:\n if (this.disabled) {\n return 'daga-horizontal-none';\n }\n else if (this.collapsed) {\n return 'daga-horizontal-left';\n }\n else {\n return 'daga-horizontal-right';\n }\n case Side.Top:\n if (this.disabled) {\n return 'daga-vertical-none';\n }\n else if (this.collapsed) {\n return 'daga-vertical-up';\n }\n else {\n return 'daga-vertical-down';\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CollapseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.3\", type: CollapseButtonComponent, isStandalone: true, selector: \"daga-collapse-button\", inputs: { collapsableSelector: \"collapsableSelector\", collapsableAdditionalSelector: \"collapsableAdditionalSelector\", collapsed: \"collapsed\", disabled: \"disabled\", direction: \"direction\", rule: \"rule\", collapsedValue: \"collapsedValue\", visibleValue: \"visibleValue\" }, ngImport: i0, template: \"<button\\r\\n class=\\\"daga-collapse-button daga-{{ direction }}\\\"\\r\\n (click)=\\\"toggleCollapse()\\\"\\r\\n>\\r\\n <div [class]=\\\"getClass()\\\"></div>\\r\\n</button>\\r\\n\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CollapseButtonComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-collapse-button', template: \"<button\\r\\n class=\\\"daga-collapse-button daga-{{ direction }}\\\"\\r\\n (click)=\\\"toggleCollapse()\\\"\\r\\n>\\r\\n <div [class]=\\\"getClass()\\\"></div>\\r\\n</button>\\r\\n\" }]\n }], propDecorators: { collapsableSelector: [{\n type: Input\n }], collapsableAdditionalSelector: [{\n type: Input\n }], collapsed: [{\n type: Input\n }], disabled: [{\n type: Input\n }], direction: [{\n type: Input\n }], rule: [{\n type: Input\n }], collapsedValue: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvY29sbGFwc2UtYnV0dG9uL2NvbGxhcHNlLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2NvbGxhcHNlLWJ1dHRvbi9jb2xsYXBzZS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7O0FBRXpCOzs7R0FHRztBQUtILE1BQU0sT0FBTyx1QkFBdUI7SUFKcEM7UUFVRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFeEIsU0FBSSxHQUFHLFlBQVksQ0FBQztRQUVwQixtQkFBYyxHQUFHLFVBQVUsQ0FBQztRQUU1QixpQkFBWSxHQUFHLFNBQVMsQ0FBQztRQUV6QixTQUFJLEdBQUcsSUFBSSxDQUFDO0tBaUViO0lBL0RDLGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2pDLElBQUksU0FBUyxDQUFDO1lBQ2QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLFlBQVksVUFBVSxFQUFFLENBQUM7Z0JBQ25ELFNBQVMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENB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QkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaWRlIH0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcclxuXHJcbi8qKlxyXG4gKiBCdXR0b24gdXNlZCB0byBjb2xsYXBzZSBjb21wb25lbnRzIHRoYXQgaW1wbGVtZW50IGl0LlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYWdhLWNvbGxhcHNlLWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbGxhcHNlLWJ1dHRvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbGxhcHNlQnV0dG9uQ29tcG9uZW50IHtcclxuICBASW5wdXQoKVxyXG4gIGNvbGxhcHNhYmxlU2VsZWN0b3IhOiBzdHJpbmcgfCBFbGVtZW50UmVmIHwgSFRNTEVsZW1lbnQ7XHJcbiAgQElucHV0KClcclxuICBjb2xsYXBzYWJsZUFkZGl0aW9uYWxTZWxlY3RvciE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGRpcmVjdGlvbiA9IFNpZGUuQm90dG9tO1xyXG4gIEBJbnB1dCgpXHJcbiAgcnVsZSA9ICd2aXNpYmlsaXR5JztcclxuICBASW5wdXQoKVxyXG4gIGNvbGxhcHNlZFZhbHVlID0gJ2NvbGxhcHNlJztcclxuICBASW5wdXQoKVxyXG4gIHZpc2libGVWYWx1ZSA9ICd2aXNpYmxlJztcclxuXHJcbiAgU2lkZSA9IFNpZGU7XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xyXG4gICAgICBsZXQgc2VsZWN0aW9uO1xyXG4gICAgICBpZiAodGhpcy5jb2xsYXBzYWJsZVNlbGVjdG9yIGluc3RhbmNlb2YgRWxlbWVudFJlZikge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IGQzLnNlbGVjdCh0aGlzLmNvbGxhcHNhYmxlU2VsZWN0b3IubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2FibGVBZGRpdGlvbmFsU2VsZWN0b3IpIHtcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zZWxlY3QodGhpcy5jb2xsYXBzYWJsZUFkZGl0aW9uYWxTZWxlY3Rvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29sbGFwc2FibGVTZWxlY3RvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgc2VsZWN0aW9uID0gZDMuc2VsZWN0KHRoaXMuY29sbGFwc2FibGVTZWxlY3Rvcik7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2FibGVBZGRpdGlvbmFsU2VsZWN0b3IpIHtcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zZWxlY3QodGhpcy5jb2xsYXBzYWJsZUFkZGl0aW9uYWxTZWxlY3Rvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IGQzLnNlbGVjdCh0aGlzLmNvbGxhcHNhYmxlU2VsZWN0b3IpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNhYmxlQWRkaXRpb25hbFNlbGVjdG9yKSB7XHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBzZWxlY3Rpb24uc2VsZWN0KHRoaXMuY29sbGFwc2FibGVBZGRpdGlvbmFsU2VsZWN0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBzZWxlY3Rpb24uc3R5bGUoXHJcbiAgICAgICAgdGhpcy5ydWxlLFxyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkID8gdGhpcy5jb2xsYXBzZWRWYWx1ZSA6IHRoaXMudmlzaWJsZVZhbHVlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLmRpcmVjdGlvbikge1xyXG4gICAgICBjYXNlIFNpZGUuUmlnaHQ6XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHJldHVybiAnZGFnYS1ob3Jpem9udGFsLW5vbmUnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb2xsYXBzZWQpIHtcclxuICAgICAgICAgIHJldHVybiAnZGFnYS1ob3Jpem9udGFsLXJpZ2h0JztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICdkYWdhLWhvcml6b250YWwtbGVmdCc7XHJcbiAgICAgICAgfVxyXG4gICAgICBjYXNlIFNpZGUuQm90dG9tOlxyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ2RhZ2EtdmVydGljYWwtbm9uZSc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICAgICAgcmV0dXJuICdkYWdhLXZlcnRpY2FsLWRvd24nO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gJ2RhZ2EtdmVydGljYWwtdXAnO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSBTaWRlLkxlZnQ6XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgIHJldHVybiAnZGFnYS1ob3Jpem9udGFsLW5vbmUnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb2xsYXBzZWQpIHtcclxuICAgICAgICAgIHJldHVybiAnZGFnYS1ob3Jpem9udGFsLWxlZnQnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gJ2RhZ2EtaG9yaXpvbnRhbC1yaWdodCc7XHJcbiAgICAgICAgfVxyXG4gICAgICBjYXNlIFNpZGUuVG9wOlxyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ2RhZ2EtdmVydGljYWwtbm9uZSc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICAgICAgcmV0dXJuICdkYWdhLXZlcnRpY2FsLXVwJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICdkYWdhLXZlcnRpY2FsLWRvd24nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvblxyXG4gIGNsYXNzPVwiZGFnYS1jb2xsYXBzZS1idXR0b24gZGFnYS17eyBkaXJlY3Rpb24gfX1cIlxyXG4gIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcclxuPlxyXG4gIDxkaXYgW2NsYXNzXT1cImdldENsYXNzKClcIj48L2Rpdj5cclxuPC9idXR0b24+XHJcbiJdfQ==","import { Injectable } from '@angular/core';\nimport { DiagramCanvas } from '@metadev/daga';\nimport { ReplaySubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * A provider for the {@link Canvas} associated with a {@link DiagramComponent} context.\n * @public\n */\nexport class CanvasProviderService {\n constructor() {\n this.canvasSubject$ = new ReplaySubject();\n /**\n * Subject used to track when the canvas has been updated.\n * @public\n */\n this.canvas$ = this.canvasSubject$.asObservable();\n this.viewInitializedSubject$ = new ReplaySubject();\n /**\n * Subject used to track when the view of the canvas has been updated after updating the canvas.\n * @public\n */\n this.viewInitialized$ = this.viewInitializedSubject$.asObservable();\n }\n /**\n * Initialize the diagram canvas object of this context using the given diagram configuration.\n * @private\n * @param parentComponent A diagram editor.\n * @param config A diagram configuration.\n */\n initCanvas(parentComponent, config) {\n this._canvas = new DiagramCanvas(parentComponent, config);\n this.canvasSubject$.next(this._canvas);\n }\n /**\n * Attach the canvas of this context to an HTML element to render it there.\n * @private\n * @param appendTo An HTML element.\n */\n initCanvasView(appendTo) {\n this._canvas.initView(appendTo);\n this.viewInitializedSubject$.next(this._canvas);\n }\n /**\n * Get the current canvas of this context.\n * @public\n * @returns A canvas.\n */\n getCanvas() {\n return this._canvas;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CanvasProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CanvasProviderService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: CanvasProviderService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2NhbnZhcy1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGFBQWEsRUFHZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVyQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBSVUsbUJBQWMsR0FBRyxJQUFJLGFBQWEsRUFBVSxDQUFDO1FBRXJEOzs7V0FHRztRQUNJLFlBQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTVDLDRCQUF1QixHQUFHLElBQUksYUFBYSxFQUFVLENBQUM7UUFFOUQ7OztXQUdHO1FBQ0kscUJBQWdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO0tBK0J2RTtJQTdCQzs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxlQUE4QixFQUFFLE1BQXFCO1FBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxRQUFxQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzs4R0EvQ1UscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2FudmFzLFxyXG4gIERpYWdyYW1DYW52YXMsXHJcbiAgRGlhZ3JhbUNvbmZpZyxcclxuICBEaWFncmFtRWRpdG9yXHJcbn0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBBIHByb3ZpZGVyIGZvciB0aGUge0BsaW5rIENhbnZhc30gYXNzb2NpYXRlZCB3aXRoIGEge0BsaW5rIERpYWdyYW1Db21wb25lbnR9IGNvbnRleHQuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENhbnZhc1Byb3ZpZGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfY2FudmFzITogQ2FudmFzO1xyXG5cclxuICBwcml2YXRlIGNhbnZhc1N1YmplY3QkID0gbmV3IFJlcGxheVN1YmplY3Q8Q2FudmFzPigpO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHVzZWQgdG8gdHJhY2sgd2hlbiB0aGUgY2FudmFzIGhhcyBiZWVuIHVwZGF0ZWQuXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW52YXMkID0gdGhpcy5jYW52YXNTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSB2aWV3SW5pdGlhbGl6ZWRTdWJqZWN0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PENhbnZhcz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB1c2VkIHRvIHRyYWNrIHdoZW4gdGhlIHZpZXcgb2YgdGhlIGNhbnZhcyBoYXMgYmVlbiB1cGRhdGVkIGFmdGVyIHVwZGF0aW5nIHRoZSBjYW52YXMuXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIHB1YmxpYyB2aWV3SW5pdGlhbGl6ZWQkID0gdGhpcy52aWV3SW5pdGlhbGl6ZWRTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgZGlhZ3JhbSBjYW52YXMgb2JqZWN0IG9mIHRoaXMgY29udGV4dCB1c2luZyB0aGUgZ2l2ZW4gZGlhZ3JhbSBjb25maWd1cmF0aW9uLlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIHBhcmVudENvbXBvbmVudCBBIGRpYWdyYW0gZWRpdG9yLlxyXG4gICAqIEBwYXJhbSBjb25maWcgQSBkaWFncmFtIGNvbmZpZ3VyYXRpb24uXHJcbiAgICovXHJcbiAgaW5pdENhbnZhcyhwYXJlbnRDb21wb25lbnQ6IERpYWdyYW1FZGl0b3IsIGNvbmZpZzogRGlhZ3JhbUNvbmZpZykge1xyXG4gICAgdGhpcy5fY2FudmFzID0gbmV3IERpYWdyYW1DYW52YXMocGFyZW50Q29tcG9uZW50LCBjb25maWcpO1xyXG4gICAgdGhpcy5jYW52YXNTdWJqZWN0JC5uZXh0KHRoaXMuX2NhbnZhcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBdHRhY2ggdGhlIGNhbnZhcyBvZiB0aGlzIGNvbnRleHQgdG8gYW4gSFRNTCBlbGVtZW50IHRvIHJlbmRlciBpdCB0aGVyZS5cclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEBwYXJhbSBhcHBlbmRUbyBBbiBIVE1MIGVsZW1lbnQuXHJcbiAgICovXHJcbiAgaW5pdENhbnZhc1ZpZXcoYXBwZW5kVG86IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLl9jYW52YXMuaW5pdFZpZXcoYXBwZW5kVG8pO1xyXG4gICAgdGhpcy52aWV3SW5pdGlhbGl6ZWRTdWJqZWN0JC5uZXh0KHRoaXMuX2NhbnZhcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgY2FudmFzIG9mIHRoaXMgY29udGV4dC5cclxuICAgKiBAcHVibGljXHJcbiAgICogQHJldHVybnMgQSBjYW52YXMuXHJcbiAgICovXHJcbiAgZ2V0Q2FudmFzKCk6IENhbnZhcyB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FudmFzO1xyXG4gIH1cclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * A provider for the {@link DiagramConfig} associated with a {@link DiagramComponent} context.\n * @public\n */\nexport class DagaConfigurationService {\n constructor() {\n this.configSubject$ = new ReplaySubject();\n /**\n * Subject used to track when the diagram configuration has been updated.\n * @public\n */\n this.config$ = this.configSubject$.asObservable();\n }\n /**\n * Set the diagram configuration of this context.\n * @private\n * @param config A diagram configuration.\n */\n init(config) {\n this._config = config;\n this.configSubject$.next(config);\n }\n /**\n * Get the current diagram configuration of this context.\n * @public\n * @returns A diagram configuration.\n */\n getConfig() {\n return this._config;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaConfigurationService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaConfigurationService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFnYS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3NlcnZpY2VzL2RhZ2EtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFckM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQURyQztRQUlVLG1CQUFjLEdBQUcsSUFBSSxhQUFhLEVBQWlCLENBQUM7UUFFNUQ7OztXQUdHO1FBQ0ksWUFBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0FvQnJEO0lBbEJDOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsTUFBcUI7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7OEdBNUJVLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFncmFtQ29uZmlnIH0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBBIHByb3ZpZGVyIGZvciB0aGUge0BsaW5rIERpYWdyYW1Db25maWd9IGFzc29jaWF0ZWQgd2l0aCBhIHtAbGluayBEaWFncmFtQ29tcG9uZW50fSBjb250ZXh0LlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgX2NvbmZpZyE6IERpYWdyYW1Db25maWc7XHJcblxyXG4gIHByaXZhdGUgY29uZmlnU3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDxEaWFncmFtQ29uZmlnPigpO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHVzZWQgdG8gdHJhY2sgd2hlbiB0aGUgZGlhZ3JhbSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25maWckID0gdGhpcy5jb25maWdTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBkaWFncmFtIGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBjb250ZXh0LlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIGNvbmZpZyBBIGRpYWdyYW0gY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBpbml0KGNvbmZpZzogRGlhZ3JhbUNvbmZpZykge1xyXG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gICAgdGhpcy5jb25maWdTdWJqZWN0JC5uZXh0KGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgZGlhZ3JhbSBjb25maWd1cmF0aW9uIG9mIHRoaXMgY29udGV4dC5cclxuICAgKiBAcHVibGljXHJcbiAgICogQHJldHVybnMgQSBkaWFncmFtIGNvbmZpZ3VyYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0Q29uZmlnKCk6IERpYWdyYW1Db25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcclxuICB9XHJcbn1cclxuIl19","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { ApplyLayoutAction, Corner, DiagramActions, getLocationsOfNodes, layouts, Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { CanvasProviderService } from '../services/canvas-provider.service';\nimport { DagaConfigurationService } from '../services/daga-configuration.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Buttons used to trigger diagram functionalities by the user.\n * @private\n */\nexport class DiagramButtonsComponent {\n constructor() {\n this.#canvasProvider = inject(CanvasProviderService);\n this.#configService = inject(DagaConfigurationService);\n this.enableAction = true;\n this.enableFilter = false;\n this.enableLayout = false;\n this.enableSelection = true;\n this.enableZoom = true;\n this.filterOn = false;\n this.collapsed = true;\n this.animationOngoing = false;\n this.DiagramActions = DiagramActions;\n }\n #canvasProvider;\n #configService;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n ngOnInit() {\n this.sub = this.#configService.config$.subscribe((c) => {\n this.init(c);\n });\n }\n ngAfterViewInit() {\n this.recalculateSizeOfButtons();\n }\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n init(config) {\n this.filterOn = false;\n this.collapsed = true;\n this.animationOngoing = false;\n this.location = config.components?.buttons?.location || Corner.BottomRight;\n this.direction = config.components?.buttons?.direction || Side.Top;\n this.enableAction = config.components?.buttons?.enableAction !== false;\n this.enableFilter = config.components?.buttons?.enableFilter === true;\n this.enableLayout = config.components?.buttons?.enableLayout === true;\n this.enableSelection =\n config.components?.buttons?.enableSelection !== false;\n this.enableZoom = config.components?.buttons?.enableZoom !== false;\n switch (this.direction) {\n case Side.Bottom:\n this.sizeAttribute = 'height';\n this.transformFunction = 'scaleY';\n this.transformOrigin = 'top';\n this.marginSide = 'bottom';\n break;\n case Side.Top:\n this.sizeAttribute = 'height';\n this.transformFunction = 'scaleY';\n this.transformOrigin = 'bottom';\n this.marginSide = 'top';\n break;\n case Side.Left:\n this.sizeAttribute = 'width';\n this.transformFunction = 'scaleX';\n this.transformOrigin = 'right';\n this.marginSide = 'left';\n break;\n case Side.Right:\n this.sizeAttribute = 'width';\n this.transformFunction = 'scaleX';\n this.transformOrigin = 'left';\n this.marginSide = 'right';\n break;\n }\n this.recalculateSizeOfButtons();\n }\n recalculateSizeOfButtons() {\n if (this.collapsableButtons) {\n const numberOfCollapsableButtons = (this.enableZoom &&\n this.canvas.canUserPerformAction(DiagramActions.Zoom)\n ? 1\n : 0) +\n (this.enableAction ? 2 : 0) +\n (this.enableSelection ? 5 : 0) +\n (this.enableLayout ? 1 : 0) +\n (this.enableFilter ? 1 : 0);\n this.collapsableButtonsSize = `${4 * numberOfCollapsableButtons}rem`;\n d3.select(this.collapsableButtons.nativeElement)\n .style(`margin-${this.marginSide}`, '-1rem')\n .style(this.sizeAttribute, '0rem')\n .style('transform', `${this.transformFunction}(0)`)\n .style('transform-origin', this.transformOrigin);\n }\n }\n // Collapse functions\n async toggleCollapse() {\n if (!this.animationOngoing) {\n const duration = 500;\n const collapsableButtons = d3.select(this.collapsableButtons.nativeElement);\n if (this.collapsed) {\n this.collapsed = false;\n collapsableButtons\n .transition()\n .duration(duration)\n .ease(d3.easeLinear)\n .style(this.sizeAttribute, this.collapsableButtonsSize)\n .style('transform', `${this.transformFunction}(1)`);\n setTimeout(() => {\n this.animationOngoing = false;\n }, duration);\n }\n else {\n this.collapsed = true;\n collapsableButtons\n .transition()\n .duration(duration)\n .ease(d3.easeLinear)\n .style(this.sizeAttribute, '0rem')\n .style('transform', `${this.transformFunction}(0)`);\n setTimeout(() => {\n this.animationOngoing = false;\n }, duration);\n }\n }\n }\n // Button functions\n zoomIn() {\n this.canvas.zoomBy(this.canvas.zoomFactor);\n }\n zoomOut() {\n this.canvas.zoomBy(1 / this.canvas.zoomFactor);\n }\n center() {\n this.canvas.center();\n }\n layout() {\n if (this.canvas.layoutFormat && this.canvas.layoutFormat in layouts) {\n const from = getLocationsOfNodes(this.canvas.model);\n layouts[this.canvas.layoutFormat].apply(this.canvas.model);\n const to = getLocationsOfNodes(this.canvas.model);\n const action = new ApplyLayoutAction(this.canvas, from, to);\n this.canvas.actionStack.add(action);\n }\n }\n filter() {\n this.filterOn = !this.filterOn;\n const priorityThresholds = this.canvas.getPriorityThresholdOptions();\n if (priorityThresholds && priorityThresholds.length >= 2) {\n this.canvas.setPriorityThreshold(priorityThresholds[this.filterOn ? 1 : 0]);\n }\n }\n undo() {\n this.canvas.actionStack.undo();\n }\n redo() {\n this.canvas.actionStack.redo();\n }\n copySelection() {\n this.canvas.userSelection.copyToClipboard();\n }\n cutSelection() {\n this.canvas.userSelection.cutToClipboard();\n }\n pasteSelection() {\n this.canvas.userSelection.pasteFromClipboard();\n }\n deleteSelection() {\n this.canvas.userSelection.removeFromModel();\n }\n startMultipleSelection() {\n this.canvas.multipleSelectionOn = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DiagramButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: DiagramButtonsComponent, isStandalone: true, selector: \"daga-diagram-buttons\", inputs: { location: \"location\", direction: \"direction\", enableAction: \"enableAction\", enableFilter: \"enableFilter\", enableLayout: \"enableLayout\", enableSelection: \"enableSelection\", enableZoom: \"enableZoom\" }, viewQueries: [{ propertyName: \"collapsableButtons\", first: true, predicate: [\"collapsableButtons\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"daga-diagram-buttons daga-{{ location }} daga-{{ direction }}\\\">\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-zoom-in\\\"\\r\\n (click)=\\\"zoomIn()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Zoom in</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-zoom-out\\\"\\r\\n (click)=\\\"zoomOut()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Zoom out</span>\\r\\n </button>\\r\\n }\\r\\n <div #collapsableButtons class=\\\"daga-collapsable-buttons daga-collapsed\\\">\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-center\\\"\\r\\n (click)=\\\"center()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Fit diagram to screen</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableAction) {\\r\\n <button class=\\\"daga-undo\\\" (click)=\\\"undo()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Undo</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableAction) {\\r\\n <button class=\\\"daga-redo\\\" (click)=\\\"redo()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Redo</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button class=\\\"daga-copy\\\" (click)=\\\"copySelection()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Copy</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button class=\\\"daga-cut\\\" (click)=\\\"cutSelection()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Cut</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-multiple-selection\\\"\\r\\n [class]=\\\"canvas.multipleSelectionOn ? 'daga-on' : 'daga-off'\\\"\\r\\n (click)=\\\"startMultipleSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Multiple selection</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-paste\\\"\\r\\n (click)=\\\"pasteSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Paste</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-delete\\\"\\r\\n (click)=\\\"deleteSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Delete</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableLayout) {\\r\\n <button class=\\\"daga-layout\\\" (click)=\\\"layout()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Apply layout</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableFilter) {\\r\\n <button\\r\\n class=\\\"daga-filter\\\"\\r\\n [class]=\\\"filterOn ? 'daga-on' : 'daga-off'\\\"\\r\\n (click)=\\\"filter()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Apply filter</span>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-more-options\\\" (click)=\\\"toggleCollapse()\\\">\\r\\n @if (!collapsed) {\\r\\n <span class=\\\"daga-tooltip\\\">Less options</span>\\r\\n }\\r\\n @if (collapsed) {\\r\\n <span class=\\\"daga-tooltip\\\">More options</span>\\r\\n }\\r\\n </button>\\r\\n</div>\\r\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DiagramButtonsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-diagram-buttons', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"daga-diagram-buttons daga-{{ location }} daga-{{ direction }}\\\">\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-zoom-in\\\"\\r\\n (click)=\\\"zoomIn()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Zoom in</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-zoom-out\\\"\\r\\n (click)=\\\"zoomOut()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Zoom out</span>\\r\\n </button>\\r\\n }\\r\\n <div #collapsableButtons class=\\\"daga-collapsable-buttons daga-collapsed\\\">\\r\\n @if (enableZoom && canvas.canUserPerformAction(DiagramActions.Zoom)) {\\r\\n <button\\r\\n class=\\\"daga-center\\\"\\r\\n (click)=\\\"center()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Fit diagram to screen</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableAction) {\\r\\n <button class=\\\"daga-undo\\\" (click)=\\\"undo()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Undo</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableAction) {\\r\\n <button class=\\\"daga-redo\\\" (click)=\\\"redo()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Redo</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button class=\\\"daga-copy\\\" (click)=\\\"copySelection()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Copy</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button class=\\\"daga-cut\\\" (click)=\\\"cutSelection()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Cut</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-multiple-selection\\\"\\r\\n [class]=\\\"canvas.multipleSelectionOn ? 'daga-on' : 'daga-off'\\\"\\r\\n (click)=\\\"startMultipleSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Multiple selection</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-paste\\\"\\r\\n (click)=\\\"pasteSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Paste</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableSelection) {\\r\\n <button\\r\\n class=\\\"daga-delete\\\"\\r\\n (click)=\\\"deleteSelection()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Delete</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableLayout) {\\r\\n <button class=\\\"daga-layout\\\" (click)=\\\"layout()\\\">\\r\\n <span class=\\\"daga-tooltip\\\">Apply layout</span>\\r\\n </button>\\r\\n }\\r\\n @if (enableFilter) {\\r\\n <button\\r\\n class=\\\"daga-filter\\\"\\r\\n [class]=\\\"filterOn ? 'daga-on' : 'daga-off'\\\"\\r\\n (click)=\\\"filter()\\\"\\r\\n >\\r\\n <span class=\\\"daga-tooltip\\\">Apply filter</span>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-more-options\\\" (click)=\\\"toggleCollapse()\\\">\\r\\n @if (!collapsed) {\\r\\n <span class=\\\"daga-tooltip\\\">Less options</span>\\r\\n }\\r\\n @if (collapsed) {\\r\\n <span class=\\\"daga-tooltip\\\">More options</span>\\r\\n }\\r\\n </button>\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { collapsableButtons: [{\n type: ViewChild,\n args: ['collapsableButtons']\n }], location: [{\n type: Input\n }], direction: [{\n type: Input\n }], enableAction: [{\n type: Input\n }], enableFilter: [{\n type: Input\n }], enableLayout: [{\n type: Input\n }], enableSelection: [{\n type: Input\n }], enableZoom: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvZGlhZ3JhbS1idXR0b25zL2RpYWdyYW0tYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2RpYWdyYW0tYnV0dG9ucy9kaWFncmFtLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsTUFBTSxFQUNOLGNBQWMsRUFHZCxtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFbEY7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQVFFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEQsbUJBQWMsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQWFsRCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUVwQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FB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Qiw0WkNwQ3BDLG9oR0ErRkE7OzJGRDNEYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUVmLHVCQUF1QixDQUFDLE1BQU07OEJBYS9DLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRy9CLFFBQVE7c0JBRFAsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixZQUFZO3NCQURYLEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBcHBseUxheW91dEFjdGlvbixcclxuICBDYW52YXMsXHJcbiAgQ29ybmVyLFxyXG4gIERpYWdyYW1BY3Rpb25zLFxyXG4gIERpYWdyYW1CdXR0b25zLFxyXG4gIERpYWdyYW1Db25maWcsXHJcbiAgZ2V0TG9jYXRpb25zT2ZOb2RlcyxcclxuICBsYXlvdXRzLFxyXG4gIFNpZGVcclxufSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYWdhLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQnV0dG9ucyB1c2VkIHRvIHRyaWdnZXIgZGlhZ3JhbSBmdW5jdGlvbmFsaXRpZXMgYnkgdGhlIHVzZXIuXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2EtZGlhZ3JhbS1idXR0b25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhZ3JhbS1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIERpYWdyYW1CdXR0b25zLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgI2NhbnZhc1Byb3ZpZGVyID0gaW5qZWN0KENhbnZhc1Byb3ZpZGVyU2VydmljZSk7XHJcbiAgI2NvbmZpZ1NlcnZpY2UgPSBpbmplY3QoRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcclxuXHJcbiAgZ2V0IGNhbnZhcygpOiBDYW52YXMge1xyXG4gICAgcmV0dXJuIHRoaXMuI2NhbnZhc1Byb3ZpZGVyLmdldENhbnZhcygpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnY29sbGFwc2FibGVCdXR0b25zJylcclxuICBjb2xsYXBzYWJsZUJ1dHRvbnMhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBASW5wdXQoKVxyXG4gIGxvY2F0aW9uITogQ29ybmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgZGlyZWN0aW9uITogU2lkZTtcclxuICBASW5wdXQoKVxyXG4gIGVuYWJsZUFjdGlvbiA9IHRydWU7XHJcbiAgQElucHV0KClcclxuICBlbmFibGVGaWx0ZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGVuYWJsZUxheW91dCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgZW5hYmxlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKVxyXG4gIGVuYWJsZVpvb20gPSB0cnVlO1xyXG5cclxuICBmaWx0ZXJPbiA9IGZhbHNlO1xyXG4gIGNvbGxhcHNlZCA9IHRydWU7XHJcbiAgYW5pbWF0aW9uT25nb2luZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc2l6ZUF0dHJpYnV0ZSE6IHN0cmluZztcclxuICBwcml2YXRlIHRyYW5zZm9ybUZ1bmN0aW9uITogc3RyaW5nO1xyXG4gIHByaXZhdGUgdHJhbnNmb3JtT3JpZ2luITogc3RyaW5nO1xyXG4gIHByaXZhdGUgbWFyZ2luU2lkZSE6IHN0cmluZztcclxuICBwcml2YXRlIGNvbGxhcHNhYmxlQnV0dG9uc1NpemUhOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgc3ViPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBEaWFncmFtQWN0aW9ucyA9IERpYWdyYW1BY3Rpb25zO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3ViID0gdGhpcy4jY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICB0aGlzLmluaXQoYyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMucmVjYWxjdWxhdGVTaXplT2ZCdXR0b25zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3ViPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdChjb25maWc6IERpYWdyYW1Db25maWcpIHtcclxuICAgIHRoaXMuZmlsdGVyT24gPSBmYWxzZTtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuYW5pbWF0aW9uT25nb2luZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2NhdGlvbiA9IGNvbmZpZy5jb21wb25lbnRzPy5idXR0b25zPy5sb2NhdGlvbiB8fCBDb3JuZXIuQm90dG9tUmlnaHQ7XHJcbiAgICB0aGlzLmRpcmVjdGlvbiA9IGNvbmZpZy5jb21wb25lbnRzPy5idXR0b25zPy5kaXJlY3Rpb24gfHwgU2lkZS5Ub3A7XHJcbiAgICB0aGlzLmVuYWJsZUFjdGlvbiA9IGNvbmZpZy5jb21wb25lbnRzPy5idXR0b25zPy5lbmFibGVBY3Rpb24gIT09IGZhbHNlO1xyXG4gICAgdGhpcy5lbmFibGVGaWx0ZXIgPSBjb25maWcuY29tcG9uZW50cz8uYnV0dG9ucz8uZW5hYmxlRmlsdGVyID09PSB0cnVlO1xyXG4gICAgdGhpcy5lbmFibGVMYXlvdXQgPSBjb25maWcuY29tcG9uZW50cz8uYnV0dG9ucz8uZW5hYmxlTGF5b3V0ID09PSB0cnVlO1xyXG4gICAgdGhpcy5lbmFibGVTZWxlY3Rpb24gPVxyXG4gICAgICBjb25maWcuY29tcG9uZW50cz8uYnV0dG9ucz8uZW5hYmxlU2VsZWN0aW9uICE9PSBmYWxzZTtcclxuICAgIHRoaXMuZW5hYmxlWm9vbSA9IGNvbmZpZy5jb21wb25lbnRzPy5idXR0b25zPy5lbmFibGVab29tICE9PSBmYWxzZTtcclxuICAgIHN3aXRjaCAodGhpcy5kaXJlY3Rpb24pIHtcclxuICAgICAgY2FzZSBTaWRlLkJvdHRvbTpcclxuICAgICAgICB0aGlzLnNpemVBdHRyaWJ1dGUgPSAnaGVpZ2h0JztcclxuICAgICAgICB0aGlzLnRyYW5zZm9ybUZ1bmN0aW9uID0gJ3NjYWxlWSc7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1PcmlnaW4gPSAndG9wJztcclxuICAgICAgICB0aGlzLm1hcmdpblNpZGUgPSAnYm90dG9tJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaWRlLlRvcDpcclxuICAgICAgICB0aGlzLnNpemVBdHRyaWJ1dGUgPSAnaGVpZ2h0JztcclxuICAgICAgICB0aGlzLnRyYW5zZm9ybUZ1bmN0aW9uID0gJ3NjYWxlWSc7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1PcmlnaW4gPSAnYm90dG9tJztcclxuICAgICAgICB0aGlzLm1hcmdpblNpZGUgPSAndG9wJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaWRlLkxlZnQ6XHJcbiAgICAgICAgdGhpcy5zaXplQXR0cmlidXRlID0gJ3dpZHRoJztcclxuICAgICAgICB0aGlzLnRyYW5zZm9ybUZ1bmN0aW9uID0gJ3NjYWxlWCc7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1PcmlnaW4gPSAncmlnaHQnO1xyXG4gICAgICAgIHRoaXMubWFyZ2luU2lkZSA9ICdsZWZ0JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaWRlLlJpZ2h0OlxyXG4gICAgICAgIHRoaXMuc2l6ZUF0dHJpYnV0ZSA9ICd3aWR0aCc7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1GdW5jdGlvbiA9ICdzY2FsZVgnO1xyXG4gICAgICAgIHRoaXMudHJhbnNmb3JtT3JpZ2luID0gJ2xlZnQnO1xyXG4gICAgICAgIHRoaXMubWFyZ2luU2lkZSA9ICdyaWdodCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlY2FsY3VsYXRlU2l6ZU9mQnV0dG9ucygpO1xyXG4gIH1cclxuXHJcbiAgcmVjYWxjdWxhdGVTaXplT2ZCdXR0b25zKCkge1xyXG4gICAgaWYgKHRoaXMuY29sbGFwc2FibGVCdXR0b25zKSB7XHJcbiAgICAgIGNvbnN0IG51bWJlck9mQ29sbGFwc2FibGVCdXR0b25zID1cclxuICAgICAgICAodGhpcy5lbmFibGVab29tICYmXHJcbiAgICAgICAgdGhpcy5jYW52YXMuY2FuVXNlclBlcmZvcm1BY3Rpb24oRGlhZ3JhbUFjdGlvbnMuWm9vbSlcclxuICAgICAgICAgID8gMVxyXG4gICAgICAgICAgOiAwKSArXHJcbiAgICAgICAgKHRoaXMuZW5hYmxlQWN0aW9uID8gMiA6IDApICtcclxuICAgICAgICAodGhpcy5lbmFibGVTZWxlY3Rpb24gPyA1IDogMCkgK1xyXG4gICAgICAgICh0aGlzLmVuYWJsZUxheW91dCA/IDEgOiAwKSArXHJcbiAgICAgICAgKHRoaXMuZW5hYmxlRmlsdGVyID8gMSA6IDApO1xyXG4gICAgICB0aGlzLmNvbGxhcHNhYmxlQnV0dG9uc1NpemUgPSBgJHs0ICogbnVtYmVyT2ZDb2xsYXBzYWJsZUJ1dHRvbnN9cmVtYDtcclxuICAgICAgZDMuc2VsZWN0KHRoaXMuY29sbGFwc2FibGVCdXR0b25zLm5hdGl2ZUVsZW1lbnQpXHJcbiAgICAgICAgLnN0eWxlKGBtYXJnaW4tJHt0aGlzLm1hcmdpblNpZGV9YCwgJy0xcmVtJylcclxuICAgICAgICAuc3R5bGUodGhpcy5zaXplQXR0cmlidXRlLCAnMHJlbScpXHJcbiAgICAgICAgLnN0eWxlKCd0cmFuc2Zvcm0nLCBgJHt0aGlzLnRyYW5zZm9ybUZ1bmN0aW9ufSgwKWApXHJcbiAgICAgICAgLnN0eWxlKCd0cmFuc2Zvcm0tb3JpZ2luJywgdGhpcy50cmFuc2Zvcm1PcmlnaW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQ29sbGFwc2UgZnVuY3Rpb25zXHJcblxyXG4gIGFzeW5jIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgaWYgKCF0aGlzLmFuaW1hdGlvbk9uZ29pbmcpIHtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSA1MDA7XHJcbiAgICAgIGNvbnN0IGNvbGxhcHNhYmxlQnV0dG9ucyA9IGQzLnNlbGVjdChcclxuICAgICAgICB0aGlzLmNvbGxhcHNhYmxlQnV0dG9ucy5uYXRpdmVFbGVtZW50XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgICAgY29sbGFwc2FibGVCdXR0b25zXHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAuZHVyYXRpb24oZHVyYXRpb24pXHJcbiAgICAgICAgICAuZWFzZShkMy5lYXNlTGluZWFyKVxyXG4gICAgICAgICAgLnN0eWxlKHRoaXMuc2l6ZUF0dHJpYnV0ZSwgdGhpcy5jb2xsYXBzYWJsZUJ1dHRvbnNTaXplKVxyXG4gICAgICAgICAgLnN0eWxlKCd0cmFuc2Zvcm0nLCBgJHt0aGlzLnRyYW5zZm9ybUZ1bmN0aW9ufSgxKWApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbmltYXRpb25PbmdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSwgZHVyYXRpb24pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gdHJ1ZTtcclxuICAgICAgICBjb2xsYXBzYWJsZUJ1dHRvbnNcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC5kdXJhdGlvbihkdXJhdGlvbilcclxuICAgICAgICAgIC5lYXNlKGQzLmVhc2VMaW5lYXIpXHJcbiAgICAgICAgICAuc3R5bGUodGhpcy5zaXplQXR0cmlidXRlLCAnMHJlbScpXHJcbiAgICAgICAgICAuc3R5bGUoJ3RyYW5zZm9ybScsIGAke3RoaXMudHJhbnNmb3JtRnVuY3Rpb259KDApYCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFuaW1hdGlvbk9uZ29pbmcgPSBmYWxzZTtcclxuICAgICAgICB9LCBkdXJhdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEJ1dHRvbiBmdW5jdGlvbnNcclxuXHJcbiAgem9vbUluKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMuem9vbUJ5KHRoaXMuY2FudmFzLnpvb21GYWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgem9vbU91dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FudmFzLnpvb21CeSgxIC8gdGhpcy5jYW52YXMuem9vbUZhY3Rvcik7XHJcbiAgfVxyXG5cclxuICBjZW50ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy5jZW50ZXIoKTtcclxuICB9XHJcblxyXG4gIGxheW91dCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhbnZhcy5sYXlvdXRGb3JtYXQgJiYgdGhpcy5jYW52YXMubGF5b3V0Rm9ybWF0IGluIGxheW91dHMpIHtcclxuICAgICAgY29uc3QgZnJvbSA9IGdldExvY2F0aW9uc09mTm9kZXModGhpcy5jYW52YXMubW9kZWwpO1xyXG4gICAgICBsYXlvdXRzW3RoaXMuY2FudmFzLmxheW91dEZvcm1hdF0uYXBwbHkodGhpcy5jYW52YXMubW9kZWwpO1xyXG4gICAgICBjb25zdCB0byA9IGdldExvY2F0aW9uc09mTm9kZXModGhpcy5jYW52YXMubW9kZWwpO1xyXG4gICAgICBjb25zdCBhY3Rpb24gPSBuZXcgQXBwbHlMYXlvdXRBY3Rpb24odGhpcy5jYW52YXMsIGZyb20sIHRvKTtcclxuICAgICAgdGhpcy5jYW52YXMuYWN0aW9uU3RhY2suYWRkKGFjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlck9uID0gIXRoaXMuZmlsdGVyT247XHJcbiAgICBjb25zdCBwcmlvcml0eVRocmVzaG9sZHMgPSB0aGlzLmNhbnZhcy5nZXRQcmlvcml0eVRocmVzaG9sZE9wdGlvbnMoKTtcclxuICAgIGlmIChwcmlvcml0eVRocmVzaG9sZHMgJiYgcHJpb3JpdHlUaHJlc2hvbGRzLmxlbmd0aCA+PSAyKSB7XHJcbiAgICAgIHRoaXMuY2FudmFzLnNldFByaW9yaXR5VGhyZXNob2xkKFxyXG4gICAgICAgIHByaW9yaXR5VGhyZXNob2xkc1t0aGlzLmZpbHRlck9uID8gMSA6IDBdXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bmRvKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMuYWN0aW9uU3RhY2sudW5kbygpO1xyXG4gIH1cclxuXHJcbiAgcmVkbygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FudmFzLmFjdGlvblN0YWNrLnJlZG8oKTtcclxuICB9XHJcblxyXG4gIGNvcHlTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy51c2VyU2VsZWN0aW9uLmNvcHlUb0NsaXBib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgY3V0U2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMudXNlclNlbGVjdGlvbi5jdXRUb0NsaXBib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgcGFzdGVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy51c2VyU2VsZWN0aW9uLnBhc3RlRnJvbUNsaXBib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMudXNlclNlbGVjdGlvbi5yZW1vdmVGcm9tTW9kZWwoKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0TXVsdGlwbGVTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy5tdWx0aXBsZVNlbGVjdGlvbk9uID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRhZ2EtZGlhZ3JhbS1idXR0b25zIGRhZ2Ete3sgbG9jYXRpb24gfX0gZGFnYS17eyBkaXJlY3Rpb24gfX1cIj5cclxuICBAaWYgKGVuYWJsZVpvb20gJiYgY2FudmFzLmNhblVzZXJQZXJmb3JtQWN0aW9uKERpYWdyYW1BY3Rpb25zLlpvb20pKSB7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiZGFnYS16b29tLWluXCJcclxuICAgICAgKGNsaWNrKT1cInpvb21JbigpXCJcclxuICAgICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPlpvb20gaW48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbiAgQGlmIChlbmFibGVab29tICYmIGNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5ab29tKSkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICBjbGFzcz1cImRhZ2Etem9vbS1vdXRcIlxyXG4gICAgICAoY2xpY2spPVwiem9vbU91dCgpXCJcclxuICAgICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPlpvb20gb3V0PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgfVxyXG4gIDxkaXYgI2NvbGxhcHNhYmxlQnV0dG9ucyBjbGFzcz1cImRhZ2EtY29sbGFwc2FibGUtYnV0dG9ucyBkYWdhLWNvbGxhcHNlZFwiPlxyXG4gICAgQGlmIChlbmFibGVab29tICYmIGNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5ab29tKSkge1xyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJkYWdhLWNlbnRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNlbnRlcigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYWdhLXRvb2x0aXBcIj5GaXQgZGlhZ3JhbSB0byBzY3JlZW48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVBY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtdW5kb1wiIChjbGljayk9XCJ1bmRvKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPlVuZG88L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVBY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtcmVkb1wiIChjbGljayk9XCJyZWRvKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPlJlZG88L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVTZWxlY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtY29weVwiIChjbGljayk9XCJjb3B5U2VsZWN0aW9uKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPkNvcHk8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVTZWxlY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtY3V0XCIgKGNsaWNrKT1cImN1dFNlbGVjdGlvbigpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYWdhLXRvb2x0aXBcIj5DdXQ8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVTZWxlY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiZGFnYS1tdWx0aXBsZS1zZWxlY3Rpb25cIlxyXG4gICAgICAgIFtjbGFzc109XCJjYW52YXMubXVsdGlwbGVTZWxlY3Rpb25PbiA/ICdkYWdhLW9uJyA6ICdkYWdhLW9mZidcIlxyXG4gICAgICAgIChjbGljayk9XCJzdGFydE11bHRpcGxlU2VsZWN0aW9uKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPk11bHRpcGxlIHNlbGVjdGlvbjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgICBAaWYgKGVuYWJsZVNlbGVjdGlvbikge1xyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJkYWdhLXBhc3RlXCJcclxuICAgICAgICAoY2xpY2spPVwicGFzdGVTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGFnYS10b29sdGlwXCI+UGFzdGU8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgQGlmIChlbmFibGVTZWxlY3Rpb24pIHtcclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiZGFnYS1kZWxldGVcIlxyXG4gICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGFnYS10b29sdGlwXCI+RGVsZXRlPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICAgIEBpZiAoZW5hYmxlTGF5b3V0KSB7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJkYWdhLWxheW91dFwiIChjbGljayk9XCJsYXlvdXQoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGFnYS10b29sdGlwXCI+QXBwbHkgbGF5b3V0PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICAgIEBpZiAoZW5hYmxlRmlsdGVyKSB7XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImRhZ2EtZmlsdGVyXCJcclxuICAgICAgICBbY2xhc3NdPVwiZmlsdGVyT24gPyAnZGFnYS1vbicgOiAnZGFnYS1vZmYnXCJcclxuICAgICAgICAoY2xpY2spPVwiZmlsdGVyKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPkFwcGx5IGZpbHRlcjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtbW9yZS1vcHRpb25zXCIgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIj5cclxuICAgIEBpZiAoIWNvbGxhcHNlZCkge1xyXG4gICAgICA8c3BhbiBjbGFzcz1cImRhZ2EtdG9vbHRpcFwiPkxlc3Mgb3B0aW9uczwvc3Bhbj5cclxuICAgIH1cclxuICAgIEBpZiAoY29sbGFwc2VkKSB7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGFnYS10b29sdGlwXCI+TW9yZSBvcHRpb25zPC9zcGFuPlxyXG4gICAgfVxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, ViewChild } from '@angular/core';\nimport { Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { map, merge } from 'rxjs';\nimport { CollapseButtonComponent } from '../collapse-button/collapse-button.component';\nimport { CanvasProviderService } from '../services/canvas-provider.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Displays the errors detected by a diagram's validators.\n * @private\n * @see DiagramValidator\n */\nexport class ErrorsComponent {\n constructor() {\n this.#canvasProvider = inject(CanvasProviderService);\n this.#cdf = inject(ChangeDetectorRef);\n this.errors = [];\n this.Side = Side;\n }\n #canvasProvider;\n #cdf;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n ngAfterViewInit() {\n this.canvasSub = this.#canvasProvider.canvas$.subscribe((c) => {\n this.updateCanvas(c);\n });\n }\n ngOnDestroy() {\n this.canvasSub?.unsubscribe();\n this.validationSub?.unsubscribe();\n }\n selectPanel() {\n return d3\n .select(this.errorsContainer.nativeElement)\n .select('.daga-error-panel');\n }\n updateCanvas(canvas) {\n this.validationSub?.unsubscribe();\n this.validationSub = merge(canvas.validatorChange$, canvas.diagramChange$)\n .pipe(map(() => this.validate()))\n .subscribe();\n }\n validate() {\n this.errors = [];\n for (const validator of this.canvas.validators) {\n const newErrors = validator.validate(this.canvas.model);\n this.errors = [...this.errors, ...newErrors];\n }\n // need to force detection changes here for some reason...\n this.#cdf.detectChanges();\n }\n showError(error) {\n if (error.elementId &&\n (error.propertyNames === undefined || error.propertyNames.length === 0)) {\n const element = this.canvas.model.nodes.get(error.elementId) ||\n this.canvas.model.connections.get(error.elementId);\n if (element) {\n this.canvas.userHighlight.add(element);\n }\n }\n else if (error.elementId &&\n error.propertyNames !== undefined &&\n error.propertyNames.length > 0) {\n this.canvas.userSelection.openInPropertyEditor(this.canvas.model.nodes.get(error.elementId) ||\n this.canvas.model.connections.get(error.elementId));\n const element = this.canvas.model.nodes.get(error.elementId) ||\n this.canvas.model.connections.get(error.elementId);\n if (element) {\n this.canvas.userHighlight.add(element);\n }\n this.canvas.parentComponent?.propertyEditor?.highlightProperty(...error.propertyNames);\n }\n else if (!error.elementId &&\n error.propertyNames !== undefined &&\n error.propertyNames.length > 0) {\n this.canvas.userSelection.openInPropertyEditor();\n this.canvas.parentComponent?.propertyEditor?.highlightProperty(...error.propertyNames);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: ErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: ErrorsComponent, isStandalone: true, selector: \"daga-errors\", viewQueries: [{ propertyName: \"errorsContainer\", first: true, predicate: [\"errors\"], descendants: true }], ngImport: i0, template: \"<div #errorsContainer class=\\\"daga-errors\\\">\\r\\n @if (errors.length === 0) {\\r\\n <div\\r\\n class=\\\"daga-errors-summary daga-no-errors daga-prevent-user-select\\\"\\r\\n >\\r\\n <span>No errors found</span>\\r\\n </div>\\r\\n }\\r\\n @if (errors.length > 0) {\\r\\n <div\\r\\n class=\\\"daga-errors-summary daga-with-errors daga-prevent-user-select\\\"\\r\\n >\\r\\n <span>{{ errors.length }} errors found</span>\\r\\n <div class=\\\"daga-collapse-button-container\\\">\\r\\n <daga-collapse-button\\r\\n [collapsableSelector]=\\\"errorsContainer\\\"\\r\\n [collapsableAdditionalSelector]=\\\"'.daga-error-panel'\\\"\\r\\n [direction]=\\\"Side.Top\\\"\\r\\n [rule]=\\\"'display'\\\"\\r\\n [collapsedValue]=\\\"'none'\\\"\\r\\n [visibleValue]=\\\"'block'\\\"\\r\\n />\\r\\n </div>\\r\\n </div>\\r\\n }\\r\\n @if (errors.length > 0) {\\r\\n <div class=\\\"daga-error-panel\\\">\\r\\n <ol>\\r\\n @for (error of errors; track error; let i = $index) {\\r\\n <li\\r\\n (click)=\\\"showError(error)\\\"\\r\\n [innerHTML]=\\\"error.message\\\"\\r\\n ></li>\\r\\n }\\r\\n </ol>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n\", dependencies: [{ kind: \"component\", type: CollapseButtonComponent, selector: \"daga-collapse-button\", inputs: [\"collapsableSelector\", \"collapsableAdditionalSelector\", \"collapsed\", \"disabled\", \"direction\", \"rule\", \"collapsedValue\", \"visibleValue\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: ErrorsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-errors', imports: [CollapseButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div #errorsContainer class=\\\"daga-errors\\\">\\r\\n @if (errors.length === 0) {\\r\\n <div\\r\\n class=\\\"daga-errors-summary daga-no-errors daga-prevent-user-select\\\"\\r\\n >\\r\\n <span>No errors found</span>\\r\\n </div>\\r\\n }\\r\\n @if (errors.length > 0) {\\r\\n <div\\r\\n class=\\\"daga-errors-summary daga-with-errors daga-prevent-user-select\\\"\\r\\n >\\r\\n <span>{{ errors.length }} errors found</span>\\r\\n <div class=\\\"daga-collapse-button-container\\\">\\r\\n <daga-collapse-button\\r\\n [collapsableSelector]=\\\"errorsContainer\\\"\\r\\n [collapsableAdditionalSelector]=\\\"'.daga-error-panel'\\\"\\r\\n [direction]=\\\"Side.Top\\\"\\r\\n [rule]=\\\"'display'\\\"\\r\\n [collapsedValue]=\\\"'none'\\\"\\r\\n [visibleValue]=\\\"'block'\\\"\\r\\n />\\r\\n </div>\\r\\n </div>\\r\\n }\\r\\n @if (errors.length > 0) {\\r\\n <div class=\\\"daga-error-panel\\\">\\r\\n <ol>\\r\\n @for (error of errors; track error; let i = $index) {\\r\\n <li\\r\\n (click)=\\\"showError(error)\\\"\\r\\n [innerHTML]=\\\"error.message\\\"\\r\\n ></li>\\r\\n }\\r\\n </ol>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n\" }]\n }], propDecorators: { errorsContainer: [{\n type: ViewChild,\n args: ['errors']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvZXJyb3JzL2Vycm9ycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2Vycm9ycy9lcnJvcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFNUU7Ozs7R0FJRztBQU9ILE1BQU0sT0FBTyxlQUFlO0lBTjVCO1FBT0Usb0JBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRCxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFRakMsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFLNUIsU0FBSSxHQUFHLElBQUksQ0FBQztLQTRFYjtJQTFGQyxlQUFlLENBQWlDO0lBQ2hELElBQUksQ0FBNkI7SUFFakMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFXRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxD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Q0FBQyxDQUFDO1lBQ3JELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQzVELEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FDdkIsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUNMLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFDaEIsS0FBSyxDQUFDLGFBQWEsS0FBSyxTQUFTO1lBQ2pDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDOUIsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUM1RCxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQ3ZCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzs4R0ExRlUsZUFBZTtrR0FBZixlQUFlLGtMQzNCNUIsb3NDQXNDQSw0Q0RkWSx1QkFBdUI7OzJGQUd0QixlQUFlO2tCQU4zQixTQUFTOytCQUNFLGFBQWEsV0FFZCxDQUFDLHVCQUF1QixDQUFDLG1CQUNqQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVUxQixlQUFlO3NCQUFuQyxTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FudmFzLCBEaWFncmFtRXJyb3IsIFNpZGUgfSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBtYXAsIG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29sbGFwc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9jb2xsYXBzZS1idXR0b24vY29sbGFwc2UtYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbnZhc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NhbnZhcy1wcm92aWRlci5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBEaXNwbGF5cyB0aGUgZXJyb3JzIGRldGVjdGVkIGJ5IGEgZGlhZ3JhbSdzIHZhbGlkYXRvcnMuXHJcbiAqIEBwcml2YXRlXHJcbiAqIEBzZWUgRGlhZ3JhbVZhbGlkYXRvclxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYWdhLWVycm9ycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Vycm9ycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgaW1wb3J0czogW0NvbGxhcHNlQnV0dG9uQ29tcG9uZW50XSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXJyb3JzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAjY2FudmFzUHJvdmlkZXIgPSBpbmplY3QoQ2FudmFzUHJvdmlkZXJTZXJ2aWNlKTtcclxuICAjY2RmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgZ2V0IGNhbnZhcygpOiBDYW52YXMge1xyXG4gICAgcmV0dXJuIHRoaXMuI2NhbnZhc1Byb3ZpZGVyLmdldENhbnZhcygpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZXJyb3JzJykgZXJyb3JzQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIGVycm9yczogRGlhZ3JhbUVycm9yW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjYW52YXNTdWI/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uU3ViPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBTaWRlID0gU2lkZTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXNTdWIgPSB0aGlzLiNjYW52YXNQcm92aWRlci5jYW52YXMkLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNhbnZhcyhjKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhc1N1Yj8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMudmFsaWRhdGlvblN1Yj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFBhbmVsKCk6IGQzLlNlbGVjdGlvbjxkMy5CYXNlVHlwZSwgdW5rbm93biwgbnVsbCwgdW5rbm93bj4ge1xyXG4gICAgcmV0dXJuIGQzXHJcbiAgICAgIC5zZWxlY3QodGhpcy5lcnJvcnNDb250YWluZXIubmF0aXZlRWxlbWVudClcclxuICAgICAgLnNlbGVjdCgnLmRhZ2EtZXJyb3ItcGFuZWwnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2FudmFzKGNhbnZhczogQ2FudmFzKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25TdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25TdWIgPSBtZXJnZShjYW52YXMudmFsaWRhdG9yQ2hhbmdlJCwgY2FudmFzLmRpYWdyYW1DaGFuZ2UkKVxyXG4gICAgICAucGlwZShtYXAoKCkgPT4gdGhpcy52YWxpZGF0ZSgpKSlcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKSB7XHJcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdGhpcy5jYW52YXMudmFsaWRhdG9ycykge1xyXG4gICAgICBjb25zdCBuZXdFcnJvcnMgPSB2YWxpZGF0b3IudmFsaWRhdGUodGhpcy5jYW52YXMubW9kZWwpO1xyXG4gICAgICB0aGlzLmVycm9ycyA9IFsuLi50aGlzLmVycm9ycywgLi4ubmV3RXJyb3JzXTtcclxuICAgIH1cclxuICAgIC8vIG5lZWQgdG8gZm9yY2UgZGV0ZWN0aW9uIGNoYW5nZXMgaGVyZSBmb3Igc29tZSByZWFzb24uLi5cclxuICAgIHRoaXMuI2NkZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzaG93RXJyb3IoZXJyb3I6IERpYWdyYW1FcnJvcik6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICBlcnJvci5lbGVtZW50SWQgJiZcclxuICAgICAgKGVycm9yLnByb3BlcnR5TmFtZXMgPT09IHVuZGVmaW5lZCB8fCBlcnJvci5wcm9wZXJ0eU5hbWVzLmxlbmd0aCA9PT0gMClcclxuICAgICkge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID1cclxuICAgICAgICB0aGlzLmNhbnZhcy5tb2RlbC5ub2Rlcy5nZXQoZXJyb3IuZWxlbWVudElkKSB8fFxyXG4gICAgICAgIHRoaXMuY2FudmFzLm1vZGVsLmNvbm5lY3Rpb25zLmdldChlcnJvci5lbGVtZW50SWQpO1xyXG4gICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgIHRoaXMuY2FudmFzLnVzZXJIaWdobGlnaHQuYWRkKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBlcnJvci5lbGVtZW50SWQgJiZcclxuICAgICAgZXJyb3IucHJvcGVydHlOYW1lcyAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIGVycm9yLnByb3BlcnR5TmFtZXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2FudmFzLnVzZXJTZWxlY3Rpb24ub3BlbkluUHJvcGVydHlFZGl0b3IoXHJcbiAgICAgICAgdGhpcy5jYW52YXMubW9kZWwubm9kZXMuZ2V0KGVycm9yLmVsZW1lbnRJZCkgfHxcclxuICAgICAgICAgIHRoaXMuY2FudmFzLm1vZGVsLmNvbm5lY3Rpb25zLmdldChlcnJvci5lbGVtZW50SWQpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPVxyXG4gICAgICAgIHRoaXMuY2FudmFzLm1vZGVsLm5vZGVzLmdldChlcnJvci5lbGVtZW50SWQpIHx8XHJcbiAgICAgICAgdGhpcy5jYW52YXMubW9kZWwuY29ubmVjdGlvbnMuZ2V0KGVycm9yLmVsZW1lbnRJZCk7XHJcbiAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5jYW52YXMudXNlckhpZ2hsaWdodC5hZGQoZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jYW52YXMucGFyZW50Q29tcG9uZW50Py5wcm9wZXJ0eUVkaXRvcj8uaGlnaGxpZ2h0UHJvcGVydHkoXHJcbiAgICAgICAgLi4uZXJyb3IucHJvcGVydHlOYW1lc1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgIWVycm9yLmVsZW1lbnRJZCAmJlxyXG4gICAgICBlcnJvci5wcm9wZXJ0eU5hbWVzICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgZXJyb3IucHJvcGVydHlOYW1lcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jYW52YXMudXNlclNlbGVjdGlvbi5vcGVuSW5Qcm9wZXJ0eUVkaXRvcigpO1xyXG4gICAgICB0aGlzLmNhbnZhcy5wYXJlbnRDb21wb25lbnQ/LnByb3BlcnR5RWRpdG9yPy5oaWdobGlnaHRQcm9wZXJ0eShcclxuICAgICAgICAuLi5lcnJvci5wcm9wZXJ0eU5hbWVzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2Vycm9yc0NvbnRhaW5lciBjbGFzcz1cImRhZ2EtZXJyb3JzXCI+XHJcbiAgQGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZGFnYS1lcnJvcnMtc3VtbWFyeSBkYWdhLW5vLWVycm9ycyBkYWdhLXByZXZlbnQtdXNlci1zZWxlY3RcIlxyXG4gICAgICA+XHJcbiAgICAgIDxzcGFuPk5vIGVycm9ycyBmb3VuZDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICBAaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZGFnYS1lcnJvcnMtc3VtbWFyeSBkYWdhLXdpdGgtZXJyb3JzIGRhZ2EtcHJldmVudC11c2VyLXNlbGVjdFwiXHJcbiAgICAgID5cclxuICAgICAgPHNwYW4+e3sgZXJyb3JzLmxlbmd0aCB9fSBlcnJvcnMgZm91bmQ8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWNvbGxhcHNlLWJ1dHRvbi1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGFnYS1jb2xsYXBzZS1idXR0b25cclxuICAgICAgICAgIFtjb2xsYXBzYWJsZVNlbGVjdG9yXT1cImVycm9yc0NvbnRhaW5lclwiXHJcbiAgICAgICAgICBbY29sbGFwc2FibGVBZGRpdGlvbmFsU2VsZWN0b3JdPVwiJy5kYWdhLWVycm9yLXBhbmVsJ1wiXHJcbiAgICAgICAgICBbZGlyZWN0aW9uXT1cIlNpZGUuVG9wXCJcclxuICAgICAgICAgIFtydWxlXT1cIidkaXNwbGF5J1wiXHJcbiAgICAgICAgICBbY29sbGFwc2VkVmFsdWVdPVwiJ25vbmUnXCJcclxuICAgICAgICAgIFt2aXNpYmxlVmFsdWVdPVwiJ2Jsb2NrJ1wiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtZXJyb3ItcGFuZWxcIj5cclxuICAgICAgICA8b2w+XHJcbiAgICAgICAgICBAZm9yIChlcnJvciBvZiBlcnJvcnM7IHRyYWNrIGVycm9yOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0Vycm9yKGVycm9yKVwiXHJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJlcnJvci5tZXNzYWdlXCJcclxuICAgICAgICAgICAgPjwvbGk+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9vbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiJdfQ==","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { AddNodeAction, ClosedShape, Corner, CursorStyle, DIAGRAM_FIELD_DEFAULTS, DiagramActions, DragEvents, Events, filterByOnlyDescendants, generalClosedPath, getLeftMargin, getTopMargin, setCursorStyle, Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { CollapseButtonComponent } from '../collapse-button/collapse-button.component';\nimport { CanvasProviderService } from '../services/canvas-provider.service';\nimport { DagaConfigurationService } from '../services/daga-configuration.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Distance in pixels by which labels must be shifted in order to be centered properly.\n */\nconst LABEL_VERTICAL_SHIFT_PX = 6;\n/**\n * Palette that the user can drag and drop nodes from.\n * @private\n * @see DiagramConfig\n * @see DiagramNode\n */\nexport class PaletteComponent {\n constructor() {\n this.#canvasProvider = inject(CanvasProviderService);\n this.#configService = inject(DagaConfigurationService);\n this.currentCategory = '';\n }\n #canvasProvider;\n #configService;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n ngOnInit() {\n /*\n reload using the canvas observable instead of the config one\n because we're getting the type info from the model, not the configuration\n */\n this.sub = this.#canvasProvider.canvas$.subscribe(() => {\n this.init(this.#configService.getConfig());\n });\n }\n ngAfterViewInit() {\n this.refreshPalette();\n switch (this.direction) {\n case Side.Bottom:\n case Side.Top:\n this.selectPanel()\n .style('width', this.width)\n .select('.daga-palette-view')\n .style('flex-direction', 'row');\n if (this.height) {\n this.selectPanel()\n .select('.daga-panel-content')\n .style('height', this.height);\n }\n break;\n case Side.Left:\n case Side.Right:\n this.selectPanel()\n .style('height', this.width)\n .select('.daga-palette-view')\n .style('flex-direction', 'column');\n if (this.height) {\n this.selectPanel()\n .select('.daga-panel-content')\n .style('width', this.height);\n }\n break;\n }\n this.selectPanel()\n .select('.daga-palette-view')\n .style('flex-wrap', 'wrap')\n .style('justify-content', 'center')\n .style('gap', this.gap);\n }\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n init(config) {\n this.location = config.components?.palette?.location || Corner.TopLeft;\n this.direction = config.components?.palette?.direction || Side.Bottom;\n this.width = config.components?.palette?.width || '12rem';\n this.height = config.components?.palette?.height;\n this.gap = config.components?.palette?.gap || '1rem';\n this.palettes = config.components?.palette?.sections || [];\n this.currentPalette = this.palettes[0];\n this.refreshPalette();\n }\n refreshPalette() {\n this.switchPalette(this.currentPalette);\n }\n switchPalette(palette) {\n this.currentPalette = palette;\n if (this.panel !== undefined) {\n this.selectPalette().selectAll('*').remove();\n this.priorityThreshold = this.canvas.getPriorityThreshold();\n if (palette.categories) {\n this.appendCategories(palette.categories);\n }\n if (palette.templates) {\n for (const template of palette.templates) {\n this.appendTemplate(template);\n }\n }\n }\n }\n selectPanel() {\n return d3.select(this.panel.nativeElement);\n }\n selectPalette() {\n return this.selectPanel().select('.daga-palette-view');\n }\n appendCategories(categories) {\n const thisComponent = this.selectPalette()\n .append('select')\n .style('width', '100%')\n .style('height', '2rem')\n .style('padding', '0.5rem')\n .style('border-radius', '0.25rem')\n .style('background-color', '#f7f8fc')\n .style('border', `1px solid #e6e6e6`);\n thisComponent.append('option').attr('value', '').text('(None selected)');\n for (const categoryKey in categories) {\n thisComponent\n .append('option')\n .attr('value', categoryKey)\n .text(categoryKey);\n }\n thisComponent.on(Events.Change, () => {\n if (this.currentCategory) {\n this.selectPalette()\n .selectAll(`.daga-template-container.daga-in-category`)\n .remove();\n }\n const selectedKey = thisComponent.property('value');\n this.currentCategory = selectedKey;\n const templatesInCategory = categories[selectedKey] || [];\n for (const template of templatesInCategory) {\n this.appendTemplate(template, 'daga-in-category');\n }\n });\n if (this.currentCategory) {\n // if we had a category already selected, re-select it\n thisComponent.property('value', this.currentCategory);\n thisComponent.dispatch(Events.Change);\n }\n }\n appendTemplate(template, classes) {\n if (template.templateType === 'node') {\n const nodeType = this.canvas.model.nodes.types.get(template.type);\n if (nodeType) {\n this.appendNodeTemplate(nodeType, template, classes);\n }\n else {\n console.error(`Could not find a node type called '${template.type}'`);\n }\n }\n else if (template.templateType === 'connection') {\n {\n const connectionType = this.canvas.model.connections.types.get(template.type);\n if (connectionType) {\n this.appendConnectionTemplate(connectionType, template, classes);\n }\n else {\n console.error(`Could not find a connection type called '${template.type}'`);\n }\n }\n }\n }\n appendNodeTemplate(type, templateConfig, classes) {\n if (this.priorityThreshold !== undefined &&\n type.priority < this.priorityThreshold) {\n return;\n }\n const borderThickness = type.defaultLook.lookType === 'shaped-look'\n ? type.defaultLook.borderThickness || 1\n : 0;\n const templateHeight = type.defaultHeight + borderThickness;\n const templateWidth = type.defaultWidth + borderThickness;\n const stretchedTemplateHeight = templateConfig.height || templateHeight;\n const stretchedTemplateWidth = templateConfig.width || templateWidth;\n let thisComponentClone;\n const thisComponent = this.selectPalette()\n .append('div')\n .attr('class', `daga-template-container ${classes !== undefined ? classes : ''}`)\n .style('width', `${stretchedTemplateWidth}px`)\n .style('height', `${stretchedTemplateHeight}px`)\n .on(Events.MouseEnter, () => {\n setCursorStyle(CursorStyle.Grab);\n })\n .on(Events.MouseLeave, () => {\n setCursorStyle();\n })\n .call(d3\n .drag()\n .on(DragEvents.Drag, (event) => {\n if (this.canvas.canUserPerformAction(DiagramActions.AddNode)) {\n const pointerCoords = this.canvas.getPointerLocationRelativeToRoot(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n thisComponentClone\n .style('left', `${pointerCoords[0] - stretchedTemplateWidth / 2}px`)\n .style('top', `${pointerCoords[1] - stretchedTemplateHeight / 2}px`);\n }\n })\n .on(DragEvents.Start, (event) => {\n if (this.canvas.canUserPerformAction(DiagramActions.AddNode)) {\n setCursorStyle(CursorStyle.Grabbing);\n const pointerCoords = this.canvas.getPointerLocationRelativeToRoot(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n const thisComponentNodeCloned = thisComponent\n .node()\n ?.cloneNode(true);\n this.canvas.selectRoot().node().appendChild(thisComponentNodeCloned);\n thisComponentClone = d3.select(thisComponentNodeCloned);\n thisComponentClone\n .style('position', 'absolute')\n .style('left', `${pointerCoords[0] - stretchedTemplateWidth / 2}px`)\n .style('top', `${pointerCoords[1] - stretchedTemplateHeight / 2}px`)\n .style('z-index', 1);\n // when trying to place a unique node in a diagram that already has a node of that type, set cursor style to not allowed\n if (type.isUnique &&\n this.canvas.model.nodes.find((n) => !n.removed && n.type.id === type.id) !== undefined) {\n setCursorStyle(CursorStyle.NotAllowed);\n }\n }\n })\n .on(DragEvents.End, (event) => {\n if (this.canvas.canUserPerformAction(DiagramActions.AddNode)) {\n // take node back to its original position\n setCursorStyle(CursorStyle.Auto);\n thisComponentClone?.remove();\n // try to place node\n if (type.isUnique &&\n this.canvas.model.nodes.find((n) => !n.removed && n.type.id === type.id) !== undefined) {\n // can't place, it's unique and that node is already in the model\n return;\n }\n const pointerCoordsRelativeToScreen = this.canvas.getPointerLocationRelativeToScreen(event);\n if (pointerCoordsRelativeToScreen.length < 2 ||\n isNaN(pointerCoordsRelativeToScreen[0]) ||\n isNaN(pointerCoordsRelativeToScreen[1])) {\n // can't place, position is incorrect\n return;\n }\n const element = document.elementFromPoint(pointerCoordsRelativeToScreen[0], pointerCoordsRelativeToScreen[1]);\n if (element &&\n !this.canvas.selectCanvasView().node()?.contains(element)) {\n // can't place, node hasn't been dropped on the canvas\n return;\n }\n const pointerCoords = this.canvas.getPointerLocationRelativeToCanvas(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n // can't place, position is incorrect\n return;\n }\n let newNodeCoords = [\n pointerCoords[0] - type.defaultWidth / 2,\n pointerCoords[1] - type.defaultHeight / 2\n ];\n if (this.canvas.snapToGrid) {\n newNodeCoords = this.canvas.getClosestGridPoint(newNodeCoords);\n }\n // check whether we dropped this node on a potential parent\n const nodesAtLocation = this.canvas.model.nodes.getAtCoordinates(pointerCoords[0], pointerCoords[1]);\n // filter by which nodes can have this type as a child\n const nodesAtLocationWhichCanHaveNodeAsAChild = nodesAtLocation.filter((n) => n.type.childrenTypes.includes(type.id));\n // filter by which nodes don't have descendants in this collection\n const filteredNodesAtLocation = filterByOnlyDescendants(nodesAtLocationWhichCanHaveNodeAsAChild);\n const droppedOn = filteredNodesAtLocation[filteredNodesAtLocation.length - 1];\n if (!type.canBeParentless && droppedOn === undefined) {\n // can't place, node must have a parent and no suitable parent has been found\n return;\n }\n const ancestor = droppedOn?.getLastAncestor();\n const addNodeAction = new AddNodeAction(this.canvas, type, newNodeCoords, droppedOn?.id, ancestor?.id, ancestor?.getGeometry(), undefined, templateConfig.label, templateConfig.values);\n addNodeAction.do();\n addNodeAction.toAncestorGeometry = ancestor?.getGeometry();\n this.canvas.actionStack.add(addNodeAction);\n // reset cursor\n setCursorStyle();\n }\n }))\n .append('svg')\n .attr('class', `palette-node ${type.id}`)\n .attr('viewBox', `0 0 ${templateWidth} ${templateHeight}`)\n .attr('preserveAspectRatio', 'none')\n .style('position', 'relative')\n .style('left', 0)\n .style('top', 0)\n .style('width', `${stretchedTemplateWidth}px`)\n .style('height', `${stretchedTemplateHeight}px`);\n const nodeLook = templateConfig.look || type.defaultLook;\n switch (nodeLook.lookType) {\n case 'shaped-look':\n thisComponent\n .append('path')\n .attr('d', generalClosedPath(nodeLook.shape || ClosedShape.Rectangle, (nodeLook.borderThickness || 1) / 2, (nodeLook.borderThickness || 1) / 2, type.defaultWidth, type.defaultHeight))\n .attr('fill', nodeLook.fillColor || '#FFFFFF')\n .attr('stroke', nodeLook.borderColor || '#000000')\n .attr('stroke-width', `${nodeLook.borderThickness}px`);\n break;\n case 'image-look':\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', type.defaultWidth)\n .attr('height', type.defaultHeight)\n .attr('href', nodeLook.backgroundImage)\n .attr('preserveAspectRatio', 'none');\n break;\n case 'stretchable-image-look':\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', nodeLook.leftMargin)\n .attr('height', nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageTopLeft)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', nodeLook.leftMargin)\n .attr('y', 0)\n .attr('width', type.defaultWidth - nodeLook.rightMargin - nodeLook.leftMargin)\n .attr('height', nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageTop)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', type.defaultWidth - nodeLook.rightMargin)\n .attr('y', 0)\n .attr('width', nodeLook.rightMargin)\n .attr('height', nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageTopRight)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', nodeLook.topMargin)\n .attr('width', nodeLook.leftMargin)\n .attr('height', type.defaultHeight - nodeLook.bottomMargin - nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageLeft)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', nodeLook.leftMargin)\n .attr('y', nodeLook.topMargin)\n .attr('width', type.defaultWidth - nodeLook.rightMargin - nodeLook.leftMargin)\n .attr('height', type.defaultHeight - nodeLook.bottomMargin - nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageCenter)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', type.defaultWidth - nodeLook.rightMargin)\n .attr('y', nodeLook.topMargin)\n .attr('width', nodeLook.rightMargin)\n .attr('height', type.defaultHeight - nodeLook.bottomMargin - nodeLook.topMargin)\n .attr('href', nodeLook.backgroundImageRight)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', type.defaultHeight - nodeLook.bottomMargin)\n .attr('width', nodeLook.leftMargin)\n .attr('height', nodeLook.bottomMargin)\n .attr('href', nodeLook.backgroundImageBottomLeft)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', nodeLook.leftMargin)\n .attr('y', type.defaultHeight - nodeLook.bottomMargin)\n .attr('width', type.defaultWidth - nodeLook.rightMargin - nodeLook.leftMargin)\n .attr('height', nodeLook.bottomMargin)\n .attr('href', nodeLook.backgroundImageBottom)\n .attr('preserveAspectRatio', 'none');\n thisComponent\n .append('image')\n .attr('x', type.defaultWidth - nodeLook.rightMargin)\n .attr('y', type.defaultHeight - nodeLook.bottomMargin)\n .attr('width', nodeLook.rightMargin)\n .attr('height', nodeLook.bottomMargin)\n .attr('href', nodeLook.backgroundImageBottomRight)\n .attr('preserveAspectRatio', 'none');\n }\n if (templateConfig.look === undefined) {\n if (type.decorators) {\n for (const decoratorConfig of type.decorators) {\n thisComponent\n .append('foreignObject')\n .attr('width', `${decoratorConfig.width}px`)\n .attr('height', `${decoratorConfig.height}px`)\n .attr('transform', `translate(${decoratorConfig.coords[0]},${decoratorConfig.coords[1]})`)\n .html(decoratorConfig.html);\n }\n }\n if (templateConfig.label) {\n const labelConfig = {\n ...DIAGRAM_FIELD_DEFAULTS,\n ...type.label,\n ...templateConfig.labelLook\n };\n thisComponent\n .append('text')\n .attr('transform', `translate(${(getLeftMargin(labelConfig) + type.defaultWidth + borderThickness / 2) / 2},${(getTopMargin(labelConfig) + type.defaultHeight + borderThickness / 2) / 2})`)\n .attr('x', 0)\n .attr('y', 0)\n .attr('font-size', `${labelConfig.fontSize}px`)\n .attr('text-anchor', 'middle')\n .attr('font-family', labelConfig.fontFamily)\n .attr('font-weight', 400)\n .attr('fill', labelConfig.color)\n .attr('stroke', 'none')\n .style('font-kerning', 'none')\n .style('user-select', 'none')\n .text(templateConfig.label);\n }\n }\n }\n appendConnectionTemplate(type, templateConfig, classes) {\n const thisComponent = this.selectPalette()\n .append('div')\n .attr('class', `daga-template-container ${classes !== undefined ? classes : ''}`)\n .style('width', `${templateConfig.width}px`)\n .style('height', `${templateConfig.height}px`)\n .style('cursor', 'pointer')\n .append('svg')\n .attr('class', `palette-button ${type.id}`)\n .style('position', 'relative')\n .style('left', 0)\n .style('top', 0)\n .style('width', '100%')\n .style('height', '100%')\n .on('click', () => {\n this.canvas.connectionType = type;\n });\n if (this.canvas.connectionType !== type) {\n // the connection type of this template is not the currently selected one\n if (templateConfig.icon !== '') {\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', templateConfig.width)\n .attr('height', templateConfig.height)\n .attr('href', templateConfig.icon);\n }\n }\n else {\n // the connection type of this template is the currently selected one\n if (templateConfig.selectedIcon !== '') {\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', templateConfig.width)\n .attr('height', templateConfig.height)\n .attr('href', templateConfig.selectedIcon);\n }\n else if (templateConfig.icon !== '') {\n // if there's no selectedIcon, use the regular icon instead\n thisComponent\n .append('image')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', templateConfig.width)\n .attr('height', templateConfig.height)\n .attr('href', templateConfig.icon);\n }\n }\n if (templateConfig.label !== '') {\n thisComponent\n .append('text')\n .attr('transform', `translate(${templateConfig.width / 2},${templateConfig.height / 2 + LABEL_VERTICAL_SHIFT_PX})`)\n .attr('x', 0)\n .attr('y', 0)\n .attr('font-size', '20px')\n .attr('text-anchor', 'middle')\n .attr('font-family', \"'Wonder Unit Sans', sans-serif\")\n .attr('font-weight', 400)\n .attr('fill', '#000000')\n .attr('stroke', 'none')\n .style('font-kerning', 'none')\n .style('user-select', 'none')\n .text(templateConfig.label);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PaletteComponent, isStandalone: true, selector: \"daga-palette\", inputs: { palettes: \"palettes\", currentPalette: \"currentPalette\", currentCategory: \"currentCategory\", location: \"location\", direction: \"direction\", width: \"width\", height: \"height\", gap: \"gap\" }, viewQueries: [{ propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], ngImport: i0, template: \"<div #panel class=\\\"daga-panel daga-{{ location }} daga-{{ direction }}\\\">\\r\\n <daga-collapse-button\\r\\n #collapseButton\\r\\n [direction]=\\\"direction\\\"\\r\\n [collapsableSelector]=\\\"panel\\\"\\r\\n collapsableAdditionalSelector=\\\".daga-panel-content\\\"\\r\\n rule=\\\"display\\\"\\r\\n collapsedValue=\\\"none\\\"\\r\\n visibleValue=\\\"block\\\"\\r\\n />\\r\\n <div class=\\\"daga-panel-content\\\">\\r\\n @if (palettes.length > 1) {\\r\\n <div class=\\\"daga-panel-tabs\\\">\\r\\n @for (palette of palettes; track palette) {\\r\\n <div\\r\\n class=\\\"daga-panel-tab\\\"\\r\\n [class]=\\\"palette === currentPalette ? 'daga-current-tab' : ''\\\"\\r\\n (click)=\\\"switchPalette(palette)\\\"\\r\\n >\\r\\n {{ palette.name }}\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n <div class=\\\"daga-palette-view\\\"></div>\\r\\n </div>\\r\\n </div>\\r\\n\", dependencies: [{ kind: \"component\", type: CollapseButtonComponent, selector: \"daga-collapse-button\", inputs: [\"collapsableSelector\", \"collapsableAdditionalSelector\", \"collapsed\", \"disabled\", \"direction\", \"rule\", \"collapsedValue\", \"visibleValue\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PaletteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-palette', imports: [CollapseButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div #panel class=\\\"daga-panel daga-{{ location }} daga-{{ direction }}\\\">\\r\\n <daga-collapse-button\\r\\n #collapseButton\\r\\n [direction]=\\\"direction\\\"\\r\\n [collapsableSelector]=\\\"panel\\\"\\r\\n collapsableAdditionalSelector=\\\".daga-panel-content\\\"\\r\\n rule=\\\"display\\\"\\r\\n collapsedValue=\\\"none\\\"\\r\\n visibleValue=\\\"block\\\"\\r\\n />\\r\\n <div class=\\\"daga-panel-content\\\">\\r\\n @if (palettes.length > 1) {\\r\\n <div class=\\\"daga-panel-tabs\\\">\\r\\n @for (palette of palettes; track palette) {\\r\\n <div\\r\\n class=\\\"daga-panel-tab\\\"\\r\\n [class]=\\\"palette === currentPalette ? 'daga-current-tab' : ''\\\"\\r\\n (click)=\\\"switchPalette(palette)\\\"\\r\\n >\\r\\n {{ palette.name }}\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n <div class=\\\"daga-palette-view\\\"></div>\\r\\n </div>\\r\\n </div>\\r\\n\" }]\n }], propDecorators: { panel: [{\n type: ViewChild,\n args: ['panel']\n }], palettes: [{\n type: Input\n }], currentPalette: [{\n type: Input\n }], currentCategory: [{\n type: Input\n }], location: [{\n type: Input\n }], direction: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], gap: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFsZXR0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3BhbGV0dGUvcGFsZXR0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3BhbGV0dGUvcGFsZXR0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGFBQWEsRUFFYixXQUFXLEVBRVgsTUFBTSxFQUNOLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsY0FBYyxFQUlkLFVBQVUsRUFDVixNQUFNLEVBQ04sdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsWUFBWSxFQUtaLGNBQWMsRUFDZCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFekIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBRWxGOztHQUVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUM7QUFFbEM7Ozs7O0dBS0c7QUFPSCxNQUFNLE9BQU8sZ0JBQWdCO0lBTjdCO1FBU0Usb0JBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBYWxELG9CQUFlLEdBQUcsRUFBRSxDQUFDO0tBc25CdEI7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QUFDLGFBQWEsRUFBRSxNQUFNLENBQUM7aUJBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7OEdBdG9CVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQiw0V0MzRDdCLGk2QkEyQkEsNENENkJZLHVCQUF1Qjs7MkZBR3RCLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxjQUFjLFdBRWYsQ0FBQyx1QkFBdUIsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTTs4QkFZM0IsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUdsQixRQUFRO3NCQURQLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLGVBQWU7c0JBRGQsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sR0FBRztzQkFERixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFkZE5vZGVBY3Rpb24sXHJcbiAgQ2FudmFzLFxyXG4gIENsb3NlZFNoYXBlLFxyXG4gIENvbm5lY3Rpb25UZW1wbGF0ZUNvbmZpZyxcclxuICBDb3JuZXIsXHJcbiAgQ3Vyc29yU3R5bGUsXHJcbiAgRElBR1JBTV9GSUVMRF9ERUZBVUxUUyxcclxuICBEaWFncmFtQWN0aW9ucyxcclxuICBEaWFncmFtQ29uZmlnLFxyXG4gIERpYWdyYW1Db25uZWN0aW9uVHlwZSxcclxuICBEaWFncmFtTm9kZVR5cGUsXHJcbiAgRHJhZ0V2ZW50cyxcclxuICBFdmVudHMsXHJcbiAgZmlsdGVyQnlPbmx5RGVzY2VuZGFudHMsXHJcbiAgZ2VuZXJhbENsb3NlZFBhdGgsXHJcbiAgZ2V0TGVmdE1hcmdpbixcclxuICBnZXRUb3BNYXJnaW4sXHJcbiAgTm9kZVRlbXBsYXRlQ29uZmlnLFxyXG4gIFBhbGV0dGUsXHJcbiAgUGFsZXR0ZVNlY3Rpb25Db25maWcsXHJcbiAgUG9pbnQsXHJcbiAgc2V0Q3Vyc29yU3R5bGUsXHJcbiAgU2lkZVxyXG59IGZyb20gJ0BtZXRhZGV2L2RhZ2EnO1xyXG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb2xsYXBzZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbGxhcHNlLWJ1dHRvbi9jb2xsYXBzZS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYWdhLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcblxyXG4vKipcclxuICogRGlzdGFuY2UgaW4gcGl4ZWxzIGJ5IHdoaWNoIGxhYmVscyBtdXN0IGJlIHNoaWZ0ZWQgaW4gb3JkZXIgdG8gYmUgY2VudGVyZWQgcHJvcGVybHkuXHJcbiAqL1xyXG5jb25zdCBMQUJFTF9WRVJUSUNBTF9TSElGVF9QWCA9IDY7XHJcblxyXG4vKipcclxuICogUGFsZXR0ZSB0aGF0IHRoZSB1c2VyIGNhbiBkcmFnIGFuZCBkcm9wIG5vZGVzIGZyb20uXHJcbiAqIEBwcml2YXRlXHJcbiAqIEBzZWUgRGlhZ3JhbUNvbmZpZ1xyXG4gKiBAc2VlIERpYWdyYW1Ob2RlXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2EtcGFsZXR0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BhbGV0dGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGltcG9ydHM6IFtDb2xsYXBzZUJ1dHRvbkNvbXBvbmVudF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhbGV0dGVDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIFBhbGV0dGUsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XHJcbntcclxuICAjY2FudmFzUHJvdmlkZXIgPSBpbmplY3QoQ2FudmFzUHJvdmlkZXJTZXJ2aWNlKTtcclxuICAjY29uZmlnU2VydmljZSA9IGluamVjdChEYWdhQ29uZmlndXJhdGlvblNlcnZpY2UpO1xyXG5cclxuICBnZXQgY2FudmFzKCk6IENhbnZhcyB7XHJcbiAgICByZXR1cm4gdGhpcy4jY2FudmFzUHJvdmlkZXIuZ2V0Q2FudmFzKCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdwYW5lbCcpIHBhbmVsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGFsZXR0ZXMhOiBQYWxldHRlU2VjdGlvbkNvbmZpZ1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3VycmVudFBhbGV0dGUhOiBQYWxldHRlU2VjdGlvbkNvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIGN1cnJlbnRDYXRlZ29yeSA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgbG9jYXRpb24hOiBDb3JuZXI7XHJcbiAgQElucHV0KClcclxuICBkaXJlY3Rpb24hOiBTaWRlO1xyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGghOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBnYXAhOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgcHJpb3JpdHlUaHJlc2hvbGQ/OiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgc3ViPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8qXHJcbiAgICByZWxvYWQgdXNpbmcgdGhlIGNhbnZhcyBvYnNlcnZhYmxlIGluc3RlYWQgb2YgdGhlIGNvbmZpZyBvbmVcclxuICAgIGJlY2F1c2Ugd2UncmUgZ2V0dGluZyB0aGUgdHlwZSBpbmZvIGZyb20gdGhlIG1vZGVsLCBub3QgdGhlIGNvbmZpZ3VyYXRpb25cclxuICAgICovXHJcbiAgICB0aGlzLnN1YiA9IHRoaXMuI2NhbnZhc1Byb3ZpZGVyLmNhbnZhcyQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5pbml0KHRoaXMuI2NvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZnJlc2hQYWxldHRlKCk7XHJcbiAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aW9uKSB7XHJcbiAgICAgIGNhc2UgU2lkZS5Cb3R0b206XHJcbiAgICAgIGNhc2UgU2lkZS5Ub3A6XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQYW5lbCgpXHJcbiAgICAgICAgICAuc3R5bGUoJ3dpZHRoJywgdGhpcy53aWR0aClcclxuICAgICAgICAgIC5zZWxlY3QoJy5kYWdhLXBhbGV0dGUtdmlldycpXHJcbiAgICAgICAgICAuc3R5bGUoJ2ZsZXgtZGlyZWN0aW9uJywgJ3JvdycpO1xyXG4gICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RQYW5lbCgpXHJcbiAgICAgICAgICAgIC5zZWxlY3QoJy5kYWdhLXBhbmVsLWNvbnRlbnQnKVxyXG4gICAgICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIHRoaXMuaGVpZ2h0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU2lkZS5MZWZ0OlxyXG4gICAgICBjYXNlIFNpZGUuUmlnaHQ6XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQYW5lbCgpXHJcbiAgICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIHRoaXMud2lkdGgpXHJcbiAgICAgICAgICAuc2VsZWN0KCcuZGFnYS1wYWxldHRlLXZpZXcnKVxyXG4gICAgICAgICAgLnN0eWxlKCdmbGV4LWRpcmVjdGlvbicsICdjb2x1bW4nKTtcclxuICAgICAgICBpZiAodGhpcy5oZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0UGFuZWwoKVxyXG4gICAgICAgICAgICAuc2VsZWN0KCcuZGFnYS1wYW5lbC1jb250ZW50JylcclxuICAgICAgICAgICAgLnN0eWxlKCd3aWR0aCcsIHRoaXMuaGVpZ2h0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdFBhbmVsKClcclxuICAgICAgLnNlbGVjdCgnLmRhZ2EtcGFsZXR0ZS12aWV3JylcclxuICAgICAgLnN0eWxlKCdmbGV4LXdyYXAnLCAnd3JhcCcpXHJcbiAgICAgIC5zdHlsZSgnanVzdGlmeS1jb250ZW50JywgJ2NlbnRlcicpXHJcbiAgICAgIC5zdHlsZSgnZ2FwJywgdGhpcy5nYXApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGluaXQoY29uZmlnOiBEaWFncmFtQ29uZmlnKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvY2F0aW9uID0gY29uZmlnLmNvbXBvbmVudHM/LnBhbGV0dGU/LmxvY2F0aW9uIHx8IENvcm5lci5Ub3BMZWZ0O1xyXG4gICAgdGhpcy5kaXJlY3Rpb24gPSBjb25maWcuY29tcG9uZW50cz8ucGFsZXR0ZT8uZGlyZWN0aW9uIHx8IFNpZGUuQm90dG9tO1xyXG4gICAgdGhpcy53aWR0aCA9IGNvbmZpZy5jb21wb25lbnRzPy5wYWxldHRlPy53aWR0aCB8fCAnMTJyZW0nO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBjb25maWcuY29tcG9uZW50cz8ucGFsZXR0ZT8uaGVpZ2h0O1xyXG4gICAgdGhpcy5nYXAgPSBjb25maWcuY29tcG9uZW50cz8ucGFsZXR0ZT8uZ2FwIHx8ICcxcmVtJztcclxuICAgIHRoaXMucGFsZXR0ZXMgPSBjb25maWcuY29tcG9uZW50cz8ucGFsZXR0ZT8uc2VjdGlvbnMgfHwgW107XHJcbiAgICB0aGlzLmN1cnJlbnRQYWxldHRlID0gdGhpcy5wYWxldHRlc1swXTtcclxuICAgIHRoaXMucmVmcmVzaFBhbGV0dGUoKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hQYWxldHRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zd2l0Y2hQYWxldHRlKHRoaXMuY3VycmVudFBhbGV0dGUpO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUGFsZXR0ZShwYWxldHRlOiBQYWxldHRlU2VjdGlvbkNvbmZpZyk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50UGFsZXR0ZSA9IHBhbGV0dGU7XHJcblxyXG4gICAgaWYgKHRoaXMucGFuZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdFBhbGV0dGUoKS5zZWxlY3RBbGwoJyonKS5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5wcmlvcml0eVRocmVzaG9sZCA9IHRoaXMuY2FudmFzLmdldFByaW9yaXR5VGhyZXNob2xkKCk7XHJcblxyXG4gICAgICBpZiAocGFsZXR0ZS5jYXRlZ29yaWVzKSB7XHJcbiAgICAgICAgdGhpcy5hcHBlbmRDYXRlZ29yaWVzKHBhbGV0dGUuY2F0ZWdvcmllcyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhbGV0dGUudGVtcGxhdGVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiBwYWxldHRlLnRlbXBsYXRlcykge1xyXG4gICAgICAgICAgdGhpcy5hcHBlbmRUZW1wbGF0ZSh0ZW1wbGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RQYW5lbCgpOiBkMy5TZWxlY3Rpb248SFRNTERpdkVsZW1lbnQsIHVua25vd24sIG51bGwsIHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIGQzLnNlbGVjdCh0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0UGFsZXR0ZSgpOiBkMy5TZWxlY3Rpb248SFRNTERpdkVsZW1lbnQsIHVua25vd24sIG51bGwsIHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0UGFuZWwoKS5zZWxlY3QoJy5kYWdhLXBhbGV0dGUtdmlldycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBlbmRDYXRlZ29yaWVzKGNhdGVnb3JpZXM6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IChOb2RlVGVtcGxhdGVDb25maWcgfCBDb25uZWN0aW9uVGVtcGxhdGVDb25maWcpW107XHJcbiAgfSk6IHZvaWQge1xyXG4gICAgY29uc3QgdGhpc0NvbXBvbmVudCA9IHRoaXMuc2VsZWN0UGFsZXR0ZSgpXHJcbiAgICAgIC5hcHBlbmQoJ3NlbGVjdCcpXHJcbiAgICAgIC5zdHlsZSgnd2lkdGgnLCAnMTAwJScpXHJcbiAgICAgIC5zdHlsZSgnaGVpZ2h0JywgJzJyZW0nKVxyXG4gICAgICAuc3R5bGUoJ3BhZGRpbmcnLCAnMC41cmVtJylcclxuICAgICAgLnN0eWxlKCdib3JkZXItcmFkaXVzJywgJzAuMjVyZW0nKVxyXG4gICAgICAuc3R5bGUoJ2JhY2tncm91bmQtY29sb3InLCAnI2Y3ZjhmYycpXHJcbiAgICAgIC5zdHlsZSgnYm9yZGVyJywgYDFweCBzb2xpZCAjZTZlNmU2YCk7XHJcbiAgICB0aGlzQ29tcG9uZW50LmFwcGVuZCgnb3B0aW9uJykuYXR0cigndmFsdWUnLCAnJykudGV4dCgnKE5vbmUgc2VsZWN0ZWQpJyk7XHJcbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5S2V5IGluIGNhdGVnb3JpZXMpIHtcclxuICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgIC5hcHBlbmQoJ29wdGlvbicpXHJcbiAgICAgICAgLmF0dHIoJ3ZhbHVlJywgY2F0ZWdvcnlLZXkpXHJcbiAgICAgICAgLnRleHQoY2F0ZWdvcnlLZXkpO1xyXG4gICAgfVxyXG4gICAgdGhpc0NvbXBvbmVudC5vbihFdmVudHMuQ2hhbmdlLCAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRDYXRlZ29yeSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0UGFsZXR0ZSgpXHJcbiAgICAgICAgICAuc2VsZWN0QWxsKGAuZGFnYS10ZW1wbGF0ZS1jb250YWluZXIuZGFnYS1pbi1jYXRlZ29yeWApXHJcbiAgICAgICAgICAucmVtb3ZlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkS2V5ID0gdGhpc0NvbXBvbmVudC5wcm9wZXJ0eSgndmFsdWUnKTtcclxuICAgICAgdGhpcy5jdXJyZW50Q2F0ZWdvcnkgPSBzZWxlY3RlZEtleTtcclxuICAgICAgY29uc3QgdGVtcGxhdGVzSW5DYXRlZ29yeSA9IGNhdGVnb3JpZXNbc2VsZWN0ZWRLZXldIHx8IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IHRlbXBsYXRlIG9mIHRlbXBsYXRlc0luQ2F0ZWdvcnkpIHtcclxuICAgICAgICB0aGlzLmFwcGVuZFRlbXBsYXRlKHRlbXBsYXRlLCAnZGFnYS1pbi1jYXRlZ29yeScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRDYXRlZ29yeSkge1xyXG4gICAgICAvLyBpZiB3ZSBoYWQgYSBjYXRlZ29yeSBhbHJlYWR5IHNlbGVjdGVkLCByZS1zZWxlY3QgaXRcclxuICAgICAgdGhpc0NvbXBvbmVudC5wcm9wZXJ0eSgndmFsdWUnLCB0aGlzLmN1cnJlbnRDYXRlZ29yeSk7XHJcbiAgICAgIHRoaXNDb21wb25lbnQuZGlzcGF0Y2goRXZlbnRzLkNoYW5nZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGVuZFRlbXBsYXRlKFxyXG4gICAgdGVtcGxhdGU6IE5vZGVUZW1wbGF0ZUNvbmZpZyB8IENvbm5lY3Rpb25UZW1wbGF0ZUNvbmZpZyxcclxuICAgIGNsYXNzZXM/OiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIGlmICh0ZW1wbGF0ZS50ZW1wbGF0ZVR5cGUgPT09ICdub2RlJykge1xyXG4gICAgICBjb25zdCBub2RlVHlwZSA9IHRoaXMuY2FudmFzLm1vZGVsLm5vZGVzLnR5cGVzLmdldCh0ZW1wbGF0ZS50eXBlKTtcclxuICAgICAgaWYgKG5vZGVUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5hcHBlbmROb2RlVGVtcGxhdGUobm9kZVR5cGUsIHRlbXBsYXRlLCBjbGFzc2VzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgZmluZCBhIG5vZGUgdHlwZSBjYWxsZWQgJyR7dGVtcGxhdGUudHlwZX0nYCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGVtcGxhdGUudGVtcGxhdGVUeXBlID09PSAnY29ubmVjdGlvbicpIHtcclxuICAgICAge1xyXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25UeXBlID0gdGhpcy5jYW52YXMubW9kZWwuY29ubmVjdGlvbnMudHlwZXMuZ2V0KFxyXG4gICAgICAgICAgdGVtcGxhdGUudHlwZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGNvbm5lY3Rpb25UeXBlKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcGVuZENvbm5lY3Rpb25UZW1wbGF0ZShjb25uZWN0aW9uVHlwZSwgdGVtcGxhdGUsIGNsYXNzZXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICBgQ291bGQgbm90IGZpbmQgYSBjb25uZWN0aW9uIHR5cGUgY2FsbGVkICcke3RlbXBsYXRlLnR5cGV9J2BcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGVuZE5vZGVUZW1wbGF0ZShcclxuICAgIHR5cGU6IERpYWdyYW1Ob2RlVHlwZSxcclxuICAgIHRlbXBsYXRlQ29uZmlnOiBOb2RlVGVtcGxhdGVDb25maWcsXHJcbiAgICBjbGFzc2VzPzogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucHJpb3JpdHlUaHJlc2hvbGQgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0eXBlLnByaW9yaXR5IDwgdGhpcy5wcmlvcml0eVRocmVzaG9sZFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGJvcmRlclRoaWNrbmVzcyA9XHJcbiAgICAgIHR5cGUuZGVmYXVsdExvb2subG9va1R5cGUgPT09ICdzaGFwZWQtbG9vaydcclxuICAgICAgICA/IHR5cGUuZGVmYXVsdExvb2suYm9yZGVyVGhpY2tuZXNzIHx8IDFcclxuICAgICAgICA6IDA7XHJcbiAgICBjb25zdCB0ZW1wbGF0ZUhlaWdodCA9IHR5cGUuZGVmYXVsdEhlaWdodCArIGJvcmRlclRoaWNrbmVzcztcclxuICAgIGNvbnN0IHRlbXBsYXRlV2lkdGggPSB0eXBlLmRlZmF1bHRXaWR0aCArIGJvcmRlclRoaWNrbmVzcztcclxuICAgIGNvbnN0IHN0cmV0Y2hlZFRlbXBsYXRlSGVpZ2h0ID0gdGVtcGxhdGVDb25maWcuaGVpZ2h0IHx8IHRlbXBsYXRlSGVpZ2h0O1xyXG4gICAgY29uc3Qgc3RyZXRjaGVkVGVtcGxhdGVXaWR0aCA9IHRlbXBsYXRlQ29uZmlnLndpZHRoIHx8IHRlbXBsYXRlV2lkdGg7XHJcblxyXG4gICAgbGV0IHRoaXNDb21wb25lbnRDbG9uZSE6IGQzLlNlbGVjdGlvbjxFbGVtZW50LCB1bmtub3duLCBudWxsLCB1bmRlZmluZWQ+O1xyXG5cclxuICAgIGNvbnN0IHRoaXNDb21wb25lbnQgPSB0aGlzLnNlbGVjdFBhbGV0dGUoKVxyXG4gICAgICAuYXBwZW5kKCdkaXYnKVxyXG4gICAgICAuYXR0cihcclxuICAgICAgICAnY2xhc3MnLFxyXG4gICAgICAgIGBkYWdhLXRlbXBsYXRlLWNvbnRhaW5lciAke2NsYXNzZXMgIT09IHVuZGVmaW5lZCA/IGNsYXNzZXMgOiAnJ31gXHJcbiAgICAgIClcclxuICAgICAgLnN0eWxlKCd3aWR0aCcsIGAke3N0cmV0Y2hlZFRlbXBsYXRlV2lkdGh9cHhgKVxyXG4gICAgICAuc3R5bGUoJ2hlaWdodCcsIGAke3N0cmV0Y2hlZFRlbXBsYXRlSGVpZ2h0fXB4YClcclxuICAgICAgLm9uKEV2ZW50cy5Nb3VzZUVudGVyLCAoKSA9PiB7XHJcbiAgICAgICAgc2V0Q3Vyc29yU3R5bGUoQ3Vyc29yU3R5bGUuR3JhYik7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5vbihFdmVudHMuTW91c2VMZWF2ZSwgKCkgPT4ge1xyXG4gICAgICAgIHNldEN1cnNvclN0eWxlKCk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYWxsKFxyXG4gICAgICAgIGQzXHJcbiAgICAgICAgICAuZHJhZzxIVE1MRGl2RWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQ+KClcclxuICAgICAgICAgIC5vbihEcmFnRXZlbnRzLkRyYWcsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5BZGROb2RlKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXJDb29yZHMgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW52YXMuZ2V0UG9pbnRlckxvY2F0aW9uUmVsYXRpdmVUb1Jvb3QoZXZlbnQpO1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHBvaW50ZXJDb29yZHMubGVuZ3RoIDwgMiB8fFxyXG4gICAgICAgICAgICAgICAgaXNOYU4ocG9pbnRlckNvb3Jkc1swXSkgfHxcclxuICAgICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMV0pXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnRDbG9uZVxyXG4gICAgICAgICAgICAgICAgLnN0eWxlKFxyXG4gICAgICAgICAgICAgICAgICAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgICAgIGAke3BvaW50ZXJDb29yZHNbMF0gLSBzdHJldGNoZWRUZW1wbGF0ZVdpZHRoIC8gMn1weGBcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5zdHlsZShcclxuICAgICAgICAgICAgICAgICAgJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICAgIGAke3BvaW50ZXJDb29yZHNbMV0gLSBzdHJldGNoZWRUZW1wbGF0ZUhlaWdodCAvIDJ9cHhgXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLm9uKERyYWdFdmVudHMuU3RhcnQsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5BZGROb2RlKSkge1xyXG4gICAgICAgICAgICAgIHNldEN1cnNvclN0eWxlKEN1cnNvclN0eWxlLkdyYWJiaW5nKTtcclxuICAgICAgICAgICAgICBjb25zdCBwb2ludGVyQ29vcmRzID1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLmdldFBvaW50ZXJMb2NhdGlvblJlbGF0aXZlVG9Sb290KGV2ZW50KTtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzLmxlbmd0aCA8IDIgfHxcclxuICAgICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMF0pIHx8XHJcbiAgICAgICAgICAgICAgICBpc05hTihwb2ludGVyQ29vcmRzWzFdKVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCB0aGlzQ29tcG9uZW50Tm9kZUNsb25lZCA9IHRoaXNDb21wb25lbnRcclxuICAgICAgICAgICAgICAgIC5ub2RlKClcclxuICAgICAgICAgICAgICAgID8uY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgICAgICAgICh0aGlzLmNhbnZhcy5zZWxlY3RSb290KCkubm9kZSgpIGFzIEhUTUxEaXZFbGVtZW50KS5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgICAgIHRoaXNDb21wb25lbnROb2RlQ2xvbmVkIGFzIE5vZGVcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnRDbG9uZSA9IGQzLnNlbGVjdChcclxuICAgICAgICAgICAgICAgIHRoaXNDb21wb25lbnROb2RlQ2xvbmVkIGFzIEVsZW1lbnRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnRDbG9uZVxyXG4gICAgICAgICAgICAgICAgLnN0eWxlKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpXHJcbiAgICAgICAgICAgICAgICAuc3R5bGUoXHJcbiAgICAgICAgICAgICAgICAgICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgYCR7cG9pbnRlckNvb3Jkc1swXSAtIHN0cmV0Y2hlZFRlbXBsYXRlV2lkdGggLyAyfXB4YFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLnN0eWxlKFxyXG4gICAgICAgICAgICAgICAgICAndG9wJyxcclxuICAgICAgICAgICAgICAgICAgYCR7cG9pbnRlckNvb3Jkc1sxXSAtIHN0cmV0Y2hlZFRlbXBsYXRlSGVpZ2h0IC8gMn1weGBcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5zdHlsZSgnei1pbmRleCcsIDEpO1xyXG4gICAgICAgICAgICAgIC8vIHdoZW4gdHJ5aW5nIHRvIHBsYWNlIGEgdW5pcXVlIG5vZGUgaW4gYSBkaWFncmFtIHRoYXQgYWxyZWFkeSBoYXMgYSBub2RlIG9mIHRoYXQgdHlwZSwgc2V0IGN1cnNvciBzdHlsZSB0byBub3QgYWxsb3dlZFxyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHR5cGUuaXNVbmlxdWUgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLm1vZGVsLm5vZGVzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgIChuKSA9PiAhbi5yZW1vdmVkICYmIG4udHlwZS5pZCA9PT0gdHlwZS5pZFxyXG4gICAgICAgICAgICAgICAgKSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRDdXJzb3JTdHlsZShDdXJzb3JTdHlsZS5Ob3RBbGxvd2VkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAub24oRHJhZ0V2ZW50cy5FbmQsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5jYW5Vc2VyUGVyZm9ybUFjdGlvbihEaWFncmFtQWN0aW9ucy5BZGROb2RlKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRha2Ugbm9kZSBiYWNrIHRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvblxyXG4gICAgICAgICAgICAgIHNldEN1cnNvclN0eWxlKEN1cnNvclN0eWxlLkF1dG8pO1xyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnRDbG9uZT8ucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgLy8gdHJ5IHRvIHBsYWNlIG5vZGVcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0eXBlLmlzVW5pcXVlICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5tb2RlbC5ub2Rlcy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAobikgPT4gIW4ucmVtb3ZlZCAmJiBuLnR5cGUuaWQgPT09IHR5cGUuaWRcclxuICAgICAgICAgICAgICAgICkgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2FuJ3QgcGxhY2UsIGl0J3MgdW5pcXVlIGFuZCB0aGF0IG5vZGUgaXMgYWxyZWFkeSBpbiB0aGUgbW9kZWxcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc3QgcG9pbnRlckNvb3Jkc1JlbGF0aXZlVG9TY3JlZW4gPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW52YXMuZ2V0UG9pbnRlckxvY2F0aW9uUmVsYXRpdmVUb1NjcmVlbihldmVudCk7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgcG9pbnRlckNvb3Jkc1JlbGF0aXZlVG9TY3JlZW4ubGVuZ3RoIDwgMiB8fFxyXG4gICAgICAgICAgICAgICAgaXNOYU4ocG9pbnRlckNvb3Jkc1JlbGF0aXZlVG9TY3JlZW5bMF0pIHx8XHJcbiAgICAgICAgICAgICAgICBpc05hTihwb2ludGVyQ29vcmRzUmVsYXRpdmVUb1NjcmVlblsxXSlcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNhbid0IHBsYWNlLCBwb3NpdGlvbiBpcyBpbmNvcnJlY3RcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KFxyXG4gICAgICAgICAgICAgICAgcG9pbnRlckNvb3Jkc1JlbGF0aXZlVG9TY3JlZW5bMF0sXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzUmVsYXRpdmVUb1NjcmVlblsxXVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudCAmJlxyXG4gICAgICAgICAgICAgICAgIXRoaXMuY2FudmFzLnNlbGVjdENhbnZhc1ZpZXcoKS5ub2RlKCk/LmNvbnRhaW5zKGVsZW1lbnQpXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjYW4ndCBwbGFjZSwgbm9kZSBoYXNuJ3QgYmVlbiBkcm9wcGVkIG9uIHRoZSBjYW52YXNcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc3QgcG9pbnRlckNvb3JkcyA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5nZXRQb2ludGVyTG9jYXRpb25SZWxhdGl2ZVRvQ2FudmFzKGV2ZW50KTtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzLmxlbmd0aCA8IDIgfHxcclxuICAgICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMF0pIHx8XHJcbiAgICAgICAgICAgICAgICBpc05hTihwb2ludGVyQ29vcmRzWzFdKVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2FuJ3QgcGxhY2UsIHBvc2l0aW9uIGlzIGluY29ycmVjdFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgbmV3Tm9kZUNvb3JkczogUG9pbnQgPSBbXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzWzBdIC0gdHlwZS5kZWZhdWx0V2lkdGggLyAyLFxyXG4gICAgICAgICAgICAgICAgcG9pbnRlckNvb3Jkc1sxXSAtIHR5cGUuZGVmYXVsdEhlaWdodCAvIDJcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5zbmFwVG9HcmlkKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdOb2RlQ29vcmRzID0gdGhpcy5jYW52YXMuZ2V0Q2xvc2VzdEdyaWRQb2ludChuZXdOb2RlQ29vcmRzKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgd2UgZHJvcHBlZCB0aGlzIG5vZGUgb24gYSBwb3RlbnRpYWwgcGFyZW50XHJcbiAgICAgICAgICAgICAgY29uc3Qgbm9kZXNBdExvY2F0aW9uID0gdGhpcy5jYW52YXMubW9kZWwubm9kZXMuZ2V0QXRDb29yZGluYXRlcyhcclxuICAgICAgICAgICAgICAgIHBvaW50ZXJDb29yZHNbMF0sXHJcbiAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzWzFdXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAvLyBmaWx0ZXIgYnkgd2hpY2ggbm9kZXMgY2FuIGhhdmUgdGhpcyB0eXBlIGFzIGEgY2hpbGRcclxuICAgICAgICAgICAgICBjb25zdCBub2Rlc0F0TG9jYXRpb25XaGljaENhbkhhdmVOb2RlQXNBQ2hpbGQgPVxyXG4gICAgICAgICAgICAgICAgbm9kZXNBdExvY2F0aW9uLmZpbHRlcigobikgPT5cclxuICAgICAgICAgICAgICAgICAgbi50eXBlLmNoaWxkcmVuVHlwZXMuaW5jbHVkZXModHlwZS5pZClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLy8gZmlsdGVyIGJ5IHdoaWNoIG5vZGVzIGRvbid0IGhhdmUgZGVzY2VuZGFudHMgaW4gdGhpcyBjb2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWROb2Rlc0F0TG9jYXRpb24gPSBmaWx0ZXJCeU9ubHlEZXNjZW5kYW50cyhcclxuICAgICAgICAgICAgICAgIG5vZGVzQXRMb2NhdGlvbldoaWNoQ2FuSGF2ZU5vZGVBc0FDaGlsZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZHJvcHBlZE9uID1cclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkTm9kZXNBdExvY2F0aW9uW2ZpbHRlcmVkTm9kZXNBdExvY2F0aW9uLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIXR5cGUuY2FuQmVQYXJlbnRsZXNzICYmIGRyb3BwZWRPbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjYW4ndCBwbGFjZSwgbm9kZSBtdXN0IGhhdmUgYSBwYXJlbnQgYW5kIG5vIHN1aXRhYmxlIHBhcmVudCBoYXMgYmVlbiBmb3VuZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgYW5jZXN0b3IgPSBkcm9wcGVkT24/LmdldExhc3RBbmNlc3RvcigpO1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBhZGROb2RlQWN0aW9uID0gbmV3IEFkZE5vZGVBY3Rpb24oXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcyxcclxuICAgICAgICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICAgICAgICBuZXdOb2RlQ29vcmRzLFxyXG4gICAgICAgICAgICAgICAgZHJvcHBlZE9uPy5pZCxcclxuICAgICAgICAgICAgICAgIGFuY2VzdG9yPy5pZCxcclxuICAgICAgICAgICAgICAgIGFuY2VzdG9yPy5nZXRHZW9tZXRyeSgpLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVDb25maWcubGFiZWwsXHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZUNvbmZpZy52YWx1ZXNcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICBhZGROb2RlQWN0aW9uLmRvKCk7XHJcbiAgICAgICAgICAgICAgYWRkTm9kZUFjdGlvbi50b0FuY2VzdG9yR2VvbWV0cnkgPSBhbmNlc3Rvcj8uZ2V0R2VvbWV0cnkoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXMuYWN0aW9uU3RhY2suYWRkKGFkZE5vZGVBY3Rpb24pO1xyXG4gICAgICAgICAgICAgIC8vIHJlc2V0IGN1cnNvclxyXG4gICAgICAgICAgICAgIHNldEN1cnNvclN0eWxlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLmFwcGVuZCgnc3ZnJylcclxuICAgICAgLmF0dHIoJ2NsYXNzJywgYHBhbGV0dGUtbm9kZSAke3R5cGUuaWR9YClcclxuICAgICAgLmF0dHIoJ3ZpZXdCb3gnLCBgMCAwICR7dGVtcGxhdGVXaWR0aH0gJHt0ZW1wbGF0ZUhlaWdodH1gKVxyXG4gICAgICAuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJylcclxuICAgICAgLnN0eWxlKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpXHJcbiAgICAgIC5zdHlsZSgnbGVmdCcsIDApXHJcbiAgICAgIC5zdHlsZSgndG9wJywgMClcclxuICAgICAgLnN0eWxlKCd3aWR0aCcsIGAke3N0cmV0Y2hlZFRlbXBsYXRlV2lkdGh9cHhgKVxyXG4gICAgICAuc3R5bGUoJ2hlaWdodCcsIGAke3N0cmV0Y2hlZFRlbXBsYXRlSGVpZ2h0fXB4YCk7XHJcbiAgICBjb25zdCBub2RlTG9vayA9IHRlbXBsYXRlQ29uZmlnLmxvb2sgfHwgdHlwZS5kZWZhdWx0TG9vaztcclxuXHJcbiAgICBzd2l0Y2ggKG5vZGVMb29rLmxvb2tUeXBlKSB7XHJcbiAgICAgIGNhc2UgJ3NoYXBlZC1sb29rJzpcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdwYXRoJylcclxuICAgICAgICAgIC5hdHRyKFxyXG4gICAgICAgICAgICAnZCcsXHJcbiAgICAgICAgICAgIGdlbmVyYWxDbG9zZWRQYXRoKFxyXG4gICAgICAgICAgICAgIG5vZGVMb29rLnNoYXBlIHx8IENsb3NlZFNoYXBlLlJlY3RhbmdsZSxcclxuICAgICAgICAgICAgICAobm9kZUxvb2suYm9yZGVyVGhpY2tuZXNzIHx8IDEpIC8gMixcclxuICAgICAgICAgICAgICAobm9kZUxvb2suYm9yZGVyVGhpY2tuZXNzIHx8IDEpIC8gMixcclxuICAgICAgICAgICAgICB0eXBlLmRlZmF1bHRXaWR0aCxcclxuICAgICAgICAgICAgICB0eXBlLmRlZmF1bHRIZWlnaHRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmF0dHIoJ2ZpbGwnLCBub2RlTG9vay5maWxsQ29sb3IgfHwgJyNGRkZGRkYnKVxyXG4gICAgICAgICAgLmF0dHIoJ3N0cm9rZScsIG5vZGVMb29rLmJvcmRlckNvbG9yIHx8ICcjMDAwMDAwJylcclxuICAgICAgICAgIC5hdHRyKCdzdHJva2Utd2lkdGgnLCBgJHtub2RlTG9vay5ib3JkZXJUaGlja25lc3N9cHhgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaW1hZ2UtbG9vayc6XHJcbiAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxyXG4gICAgICAgICAgLmF0dHIoJ3gnLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3knLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgdHlwZS5kZWZhdWx0V2lkdGgpXHJcbiAgICAgICAgICAuYXR0cignaGVpZ2h0JywgdHlwZS5kZWZhdWx0SGVpZ2h0KVxyXG4gICAgICAgICAgLmF0dHIoJ2hyZWYnLCBub2RlTG9vay5iYWNrZ3JvdW5kSW1hZ2UpXHJcbiAgICAgICAgICAuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3N0cmV0Y2hhYmxlLWltYWdlLWxvb2snOlxyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4JywgMClcclxuICAgICAgICAgIC5hdHRyKCd5JywgMClcclxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIG5vZGVMb29rLmxlZnRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignaGVpZ2h0Jywgbm9kZUxvb2sudG9wTWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ2hyZWYnLCBub2RlTG9vay5iYWNrZ3JvdW5kSW1hZ2VUb3BMZWZ0KVxyXG4gICAgICAgICAgLmF0dHIoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4Jywgbm9kZUxvb2subGVmdE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCd5JywgMClcclxuICAgICAgICAgIC5hdHRyKFxyXG4gICAgICAgICAgICAnd2lkdGgnLFxyXG4gICAgICAgICAgICB0eXBlLmRlZmF1bHRXaWR0aCAtIG5vZGVMb29rLnJpZ2h0TWFyZ2luIC0gbm9kZUxvb2subGVmdE1hcmdpblxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIG5vZGVMb29rLnRvcE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlVG9wKVxyXG4gICAgICAgICAgLmF0dHIoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4JywgdHlwZS5kZWZhdWx0V2lkdGggLSBub2RlTG9vay5yaWdodE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCd5JywgMClcclxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIG5vZGVMb29rLnJpZ2h0TWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIG5vZGVMb29rLnRvcE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlVG9wUmlnaHQpXHJcbiAgICAgICAgICAuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XHJcbiAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxyXG4gICAgICAgICAgLmF0dHIoJ3gnLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3knLCBub2RlTG9vay50b3BNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCBub2RlTG9vay5sZWZ0TWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAgICdoZWlnaHQnLFxyXG4gICAgICAgICAgICB0eXBlLmRlZmF1bHRIZWlnaHQgLSBub2RlTG9vay5ib3R0b21NYXJnaW4gLSBub2RlTG9vay50b3BNYXJnaW5cclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlTGVmdClcclxuICAgICAgICAgIC5hdHRyKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIG5vZGVMb29rLmxlZnRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cigneScsIG5vZGVMb29rLnRvcE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKFxyXG4gICAgICAgICAgICAnd2lkdGgnLFxyXG4gICAgICAgICAgICB0eXBlLmRlZmF1bHRXaWR0aCAtIG5vZGVMb29rLnJpZ2h0TWFyZ2luIC0gbm9kZUxvb2subGVmdE1hcmdpblxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAgICdoZWlnaHQnLFxyXG4gICAgICAgICAgICB0eXBlLmRlZmF1bHRIZWlnaHQgLSBub2RlTG9vay5ib3R0b21NYXJnaW4gLSBub2RlTG9vay50b3BNYXJnaW5cclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgbm9kZUxvb2suYmFja2dyb3VuZEltYWdlQ2VudGVyKVxyXG4gICAgICAgICAgLmF0dHIoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4JywgdHlwZS5kZWZhdWx0V2lkdGggLSBub2RlTG9vay5yaWdodE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCd5Jywgbm9kZUxvb2sudG9wTWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgbm9kZUxvb2sucmlnaHRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cihcclxuICAgICAgICAgICAgJ2hlaWdodCcsXHJcbiAgICAgICAgICAgIHR5cGUuZGVmYXVsdEhlaWdodCAtIG5vZGVMb29rLmJvdHRvbU1hcmdpbiAtIG5vZGVMb29rLnRvcE1hcmdpblxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmF0dHIoJ2hyZWYnLCBub2RlTG9vay5iYWNrZ3JvdW5kSW1hZ2VSaWdodClcclxuICAgICAgICAgIC5hdHRyKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIDApXHJcbiAgICAgICAgICAuYXR0cigneScsIHR5cGUuZGVmYXVsdEhlaWdodCAtIG5vZGVMb29rLmJvdHRvbU1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIG5vZGVMb29rLmxlZnRNYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignaGVpZ2h0Jywgbm9kZUxvb2suYm90dG9tTWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ2hyZWYnLCBub2RlTG9vay5iYWNrZ3JvdW5kSW1hZ2VCb3R0b21MZWZ0KVxyXG4gICAgICAgICAgLmF0dHIoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4Jywgbm9kZUxvb2subGVmdE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCd5JywgdHlwZS5kZWZhdWx0SGVpZ2h0IC0gbm9kZUxvb2suYm90dG9tTWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAgICd3aWR0aCcsXHJcbiAgICAgICAgICAgIHR5cGUuZGVmYXVsdFdpZHRoIC0gbm9kZUxvb2sucmlnaHRNYXJnaW4gLSBub2RlTG9vay5sZWZ0TWFyZ2luXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuYXR0cignaGVpZ2h0Jywgbm9kZUxvb2suYm90dG9tTWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ2hyZWYnLCBub2RlTG9vay5iYWNrZ3JvdW5kSW1hZ2VCb3R0b20pXHJcbiAgICAgICAgICAuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XHJcbiAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxyXG4gICAgICAgICAgLmF0dHIoJ3gnLCB0eXBlLmRlZmF1bHRXaWR0aCAtIG5vZGVMb29rLnJpZ2h0TWFyZ2luKVxyXG4gICAgICAgICAgLmF0dHIoJ3knLCB0eXBlLmRlZmF1bHRIZWlnaHQgLSBub2RlTG9vay5ib3R0b21NYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCBub2RlTG9vay5yaWdodE1hcmdpbilcclxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCBub2RlTG9vay5ib3R0b21NYXJnaW4pXHJcbiAgICAgICAgICAuYXR0cignaHJlZicsIG5vZGVMb29rLmJhY2tncm91bmRJbWFnZUJvdHRvbVJpZ2h0KVxyXG4gICAgICAgICAgLmF0dHIoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0ZW1wbGF0ZUNvbmZpZy5sb29rID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHR5cGUuZGVjb3JhdG9ycykge1xyXG4gICAgICAgIGZvciAoY29uc3QgZGVjb3JhdG9yQ29uZmlnIG9mIHR5cGUuZGVjb3JhdG9ycykge1xyXG4gICAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgICAuYXBwZW5kKCdmb3JlaWduT2JqZWN0JylcclxuICAgICAgICAgICAgLmF0dHIoJ3dpZHRoJywgYCR7ZGVjb3JhdG9yQ29uZmlnLndpZHRofXB4YClcclxuICAgICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIGAke2RlY29yYXRvckNvbmZpZy5oZWlnaHR9cHhgKVxyXG4gICAgICAgICAgICAuYXR0cihcclxuICAgICAgICAgICAgICAndHJhbnNmb3JtJyxcclxuICAgICAgICAgICAgICBgdHJhbnNsYXRlKCR7ZGVjb3JhdG9yQ29uZmlnLmNvb3Jkc1swXX0sJHtkZWNvcmF0b3JDb25maWcuY29vcmRzWzFdfSlgXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLmh0bWwoZGVjb3JhdG9yQ29uZmlnLmh0bWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRlbXBsYXRlQ29uZmlnLmxhYmVsKSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxDb25maWcgPSB7XHJcbiAgICAgICAgICAuLi5ESUFHUkFNX0ZJRUxEX0RFRkFVTFRTLFxyXG4gICAgICAgICAgLi4udHlwZS5sYWJlbCxcclxuICAgICAgICAgIC4uLnRlbXBsYXRlQ29uZmlnLmxhYmVsTG9va1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpc0NvbXBvbmVudFxyXG4gICAgICAgICAgLmFwcGVuZCgndGV4dCcpXHJcbiAgICAgICAgICAuYXR0cihcclxuICAgICAgICAgICAgJ3RyYW5zZm9ybScsXHJcbiAgICAgICAgICAgIGB0cmFuc2xhdGUoJHsoZ2V0TGVmdE1hcmdpbihsYWJlbENvbmZpZykgKyB0eXBlLmRlZmF1bHRXaWR0aCArIGJvcmRlclRoaWNrbmVzcyAvIDIpIC8gMn0sJHsoZ2V0VG9wTWFyZ2luKGxhYmVsQ29uZmlnKSArIHR5cGUuZGVmYXVsdEhlaWdodCArIGJvcmRlclRoaWNrbmVzcyAvIDIpIC8gMn0pYFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLmF0dHIoJ3gnLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ3knLCAwKVxyXG4gICAgICAgICAgLmF0dHIoJ2ZvbnQtc2l6ZScsIGAke2xhYmVsQ29uZmlnLmZvbnRTaXplfXB4YClcclxuICAgICAgICAgIC5hdHRyKCd0ZXh0LWFuY2hvcicsICdtaWRkbGUnKVxyXG4gICAgICAgICAgLmF0dHIoJ2ZvbnQtZmFtaWx5JywgbGFiZWxDb25maWcuZm9udEZhbWlseSlcclxuICAgICAgICAgIC5hdHRyKCdmb250LXdlaWdodCcsIDQwMClcclxuICAgICAgICAgIC5hdHRyKCdmaWxsJywgbGFiZWxDb25maWcuY29sb3IpXHJcbiAgICAgICAgICAuYXR0cignc3Ryb2tlJywgJ25vbmUnKVxyXG4gICAgICAgICAgLnN0eWxlKCdmb250LWtlcm5pbmcnLCAnbm9uZScpXHJcbiAgICAgICAgICAuc3R5bGUoJ3VzZXItc2VsZWN0JywgJ25vbmUnKVxyXG4gICAgICAgICAgLnRleHQodGVtcGxhdGVDb25maWcubGFiZWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGVuZENvbm5lY3Rpb25UZW1wbGF0ZShcclxuICAgIHR5cGU6IERpYWdyYW1Db25uZWN0aW9uVHlwZSxcclxuICAgIHRlbXBsYXRlQ29uZmlnOiBDb25uZWN0aW9uVGVtcGxhdGVDb25maWcsXHJcbiAgICBjbGFzc2VzPzogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCB0aGlzQ29tcG9uZW50ID0gdGhpcy5zZWxlY3RQYWxldHRlKClcclxuICAgICAgLmFwcGVuZCgnZGl2JylcclxuICAgICAgLmF0dHIoXHJcbiAgICAgICAgJ2NsYXNzJyxcclxuICAgICAgICBgZGFnYS10ZW1wbGF0ZS1jb250YWluZXIgJHtjbGFzc2VzICE9PSB1bmRlZmluZWQgPyBjbGFzc2VzIDogJyd9YFxyXG4gICAgICApXHJcbiAgICAgIC5zdHlsZSgnd2lkdGgnLCBgJHt0ZW1wbGF0ZUNvbmZpZy53aWR0aH1weGApXHJcbiAgICAgIC5zdHlsZSgnaGVpZ2h0JywgYCR7dGVtcGxhdGVDb25maWcuaGVpZ2h0fXB4YClcclxuICAgICAgLnN0eWxlKCdjdXJzb3InLCAncG9pbnRlcicpXHJcbiAgICAgIC5hcHBlbmQoJ3N2ZycpXHJcbiAgICAgIC5hdHRyKCdjbGFzcycsIGBwYWxldHRlLWJ1dHRvbiAke3R5cGUuaWR9YClcclxuICAgICAgLnN0eWxlKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpXHJcbiAgICAgIC5zdHlsZSgnbGVmdCcsIDApXHJcbiAgICAgIC5zdHlsZSgndG9wJywgMClcclxuICAgICAgLnN0eWxlKCd3aWR0aCcsICcxMDAlJylcclxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMTAwJScpXHJcbiAgICAgIC5vbignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYW52YXMuY29ubmVjdGlvblR5cGUgPSB0eXBlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5jYW52YXMuY29ubmVjdGlvblR5cGUgIT09IHR5cGUpIHtcclxuICAgICAgLy8gdGhlIGNvbm5lY3Rpb24gdHlwZSBvZiB0aGlzIHRlbXBsYXRlIGlzIG5vdCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG9uZVxyXG4gICAgICBpZiAodGVtcGxhdGVDb25maWcuaWNvbiAhPT0gJycpIHtcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIDApXHJcbiAgICAgICAgICAuYXR0cigneScsIDApXHJcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCB0ZW1wbGF0ZUNvbmZpZy53aWR0aClcclxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCB0ZW1wbGF0ZUNvbmZpZy5oZWlnaHQpXHJcbiAgICAgICAgICAuYXR0cignaHJlZicsIHRlbXBsYXRlQ29uZmlnLmljb24pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGUgY29ubmVjdGlvbiB0eXBlIG9mIHRoaXMgdGVtcGxhdGUgaXMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvbmVcclxuICAgICAgaWYgKHRlbXBsYXRlQ29uZmlnLnNlbGVjdGVkSWNvbiAhPT0gJycpIHtcclxuICAgICAgICB0aGlzQ29tcG9uZW50XHJcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXHJcbiAgICAgICAgICAuYXR0cigneCcsIDApXHJcbiAgICAgICAgICAuYXR0cigneScsIDApXHJcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCB0ZW1wbGF0ZUNvbmZpZy53aWR0aClcclxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCB0ZW1wbGF0ZUNvbmZpZy5oZWlnaHQpXHJcbiAgICAgICAgICAuYXR0cignaHJlZicsIHRlbXBsYXRlQ29uZmlnLnNlbGVjdGVkSWNvbik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGVtcGxhdGVDb25maWcuaWNvbiAhPT0gJycpIHtcclxuICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHNlbGVjdGVkSWNvbiwgdXNlIHRoZSByZWd1bGFyIGljb24gaW5zdGVhZFxyXG4gICAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAgIC5hcHBlbmQoJ2ltYWdlJylcclxuICAgICAgICAgIC5hdHRyKCd4JywgMClcclxuICAgICAgICAgIC5hdHRyKCd5JywgMClcclxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIHRlbXBsYXRlQ29uZmlnLndpZHRoKVxyXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIHRlbXBsYXRlQ29uZmlnLmhlaWdodClcclxuICAgICAgICAgIC5hdHRyKCdocmVmJywgdGVtcGxhdGVDb25maWcuaWNvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGVtcGxhdGVDb25maWcubGFiZWwgIT09ICcnKSB7XHJcbiAgICAgIHRoaXNDb21wb25lbnRcclxuICAgICAgICAuYXBwZW5kKCd0ZXh0JylcclxuICAgICAgICAuYXR0cihcclxuICAgICAgICAgICd0cmFuc2Zvcm0nLFxyXG4gICAgICAgICAgYHRyYW5zbGF0ZSgke3RlbXBsYXRlQ29uZmlnLndpZHRoIC8gMn0sJHtcclxuICAgICAgICAgICAgdGVtcGxhdGVDb25maWcuaGVpZ2h0IC8gMiArIExBQkVMX1ZFUlRJQ0FMX1NISUZUX1BYXHJcbiAgICAgICAgICB9KWBcclxuICAgICAgICApXHJcbiAgICAgICAgLmF0dHIoJ3gnLCAwKVxyXG4gICAgICAgIC5hdHRyKCd5JywgMClcclxuICAgICAgICAuYXR0cignZm9udC1zaXplJywgJzIwcHgnKVxyXG4gICAgICAgIC5hdHRyKCd0ZXh0LWFuY2hvcicsICdtaWRkbGUnKVxyXG4gICAgICAgIC5hdHRyKCdmb250LWZhbWlseScsIFwiJ1dvbmRlciBVbml0IFNhbnMnLCBzYW5zLXNlcmlmXCIpXHJcbiAgICAgICAgLmF0dHIoJ2ZvbnQtd2VpZ2h0JywgNDAwKVxyXG4gICAgICAgIC5hdHRyKCdmaWxsJywgJyMwMDAwMDAnKVxyXG4gICAgICAgIC5hdHRyKCdzdHJva2UnLCAnbm9uZScpXHJcbiAgICAgICAgLnN0eWxlKCdmb250LWtlcm5pbmcnLCAnbm9uZScpXHJcbiAgICAgICAgLnN0eWxlKCd1c2VyLXNlbGVjdCcsICdub25lJylcclxuICAgICAgICAudGV4dCh0ZW1wbGF0ZUNvbmZpZy5sYWJlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI3BhbmVsIGNsYXNzPVwiZGFnYS1wYW5lbCBkYWdhLXt7IGxvY2F0aW9uIH19IGRhZ2Ete3sgZGlyZWN0aW9uIH19XCI+XHJcbiAgPGRhZ2EtY29sbGFwc2UtYnV0dG9uXHJcbiAgICAjY29sbGFwc2VCdXR0b25cclxuICAgIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCJcclxuICAgIFtjb2xsYXBzYWJsZVNlbGVjdG9yXT1cInBhbmVsXCJcclxuICAgIGNvbGxhcHNhYmxlQWRkaXRpb25hbFNlbGVjdG9yPVwiLmRhZ2EtcGFuZWwtY29udGVudFwiXHJcbiAgICBydWxlPVwiZGlzcGxheVwiXHJcbiAgICBjb2xsYXBzZWRWYWx1ZT1cIm5vbmVcIlxyXG4gICAgdmlzaWJsZVZhbHVlPVwiYmxvY2tcIlxyXG4gICAgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJkYWdhLXBhbmVsLWNvbnRlbnRcIj5cclxuICAgICAgQGlmIChwYWxldHRlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtcGFuZWwtdGFic1wiPlxyXG4gICAgICAgICAgQGZvciAocGFsZXR0ZSBvZiBwYWxldHRlczsgdHJhY2sgcGFsZXR0ZSkge1xyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYWdhLXBhbmVsLXRhYlwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cInBhbGV0dGUgPT09IGN1cnJlbnRQYWxldHRlID8gJ2RhZ2EtY3VycmVudC10YWInIDogJydcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hQYWxldHRlKHBhbGV0dGUpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgcGFsZXR0ZS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLXBhbGV0dGUtdmlld1wiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CursorStyle, DragEvents, Property, Type, isObject, setCursorStyle } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { CanvasProviderService } from '../../services/canvas-provider.service';\nimport { getStyleClassName } from '../property-editor.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * Editor of the settings of a property editor, such as what properties are displayed and hidden and in what order.\n * @private\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class PropertySettingsComponent {\n constructor() {\n this.#element = inject(ElementRef);\n this.#cdr = inject(ChangeDetectorRef);\n this.#canvasProvider = inject(CanvasProviderService);\n /** How many property-settings elements are parents of this property-settings element. @private */\n this.depth = 0;\n // Attributes for the template\n this.Type = Type;\n this.getStyleClassName = getStyleClassName;\n this.asString = asString;\n }\n #element;\n #cdr;\n #canvasProvider;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n get valueSet() {\n return this._valueSet;\n }\n set valueSet(valueSet) {\n if (this._valueSet !== valueSet) {\n this._valueSet = valueSet;\n // force value change detection\n this.#cdr.detectChanges();\n }\n }\n ngAfterViewInit() {\n this.addListeners();\n }\n addListeners() {\n for (const property of this.valueSet?.displayedProperties || []) {\n let propertyElementWidth = 0;\n let propertyElementHeight = 0;\n let closestDropbarIndex = 0;\n const propertyElement = d3\n .select(this.#element.nativeElement)\n .select(`.daga-property.${getStyleClassName(property.name)}.daga-depth-${this.depth}`);\n propertyElement.select('button.daga-move-button').call(d3\n .drag()\n .on(DragEvents.Start, (event) => {\n setCursorStyle(CursorStyle.Grabbing);\n const pointerCoords = this.canvas.getPointerLocationRelativeToScreen(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n const boundingRect = propertyElement\n .node()\n ?.getBoundingClientRect();\n propertyElementWidth = boundingRect?.width || 0;\n propertyElementHeight = boundingRect?.height || 0;\n propertyElement\n .style('position', 'fixed')\n .style('left', `${pointerCoords[0] - propertyElementWidth / 2}px`)\n .style('top', `${pointerCoords[1] - propertyElementHeight / 2}px`)\n .style('width', `${propertyElementWidth}px`)\n .style('height', `${propertyElementHeight}px`)\n .style('z-index', 1);\n })\n .on(DragEvents.Drag, (event) => {\n setCursorStyle(CursorStyle.Grabbing);\n const pointerCoords = this.canvas.getPointerLocationRelativeToScreen(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n propertyElement\n .style('position', 'fixed')\n .style('left', `${pointerCoords[0] - propertyElementWidth / 2}px`)\n .style('top', `${pointerCoords[1] - propertyElementHeight / 2}px`)\n .style('width', `${propertyElementWidth}px`)\n .style('height', `${propertyElementHeight}px`)\n .style('z-index', 1);\n d3.select(this.#element.nativeElement)\n .select(`.daga-dropbar.daga-index-${closestDropbarIndex}.daga-depth-${this.depth}`)\n .style('visibility', 'hidden')\n .style('height', 0);\n closestDropbarIndex = this.getClosestDropbarIndex(pointerCoords);\n d3.select(this.#element.nativeElement)\n .select(`.daga-dropbar.daga-index-${closestDropbarIndex}.daga-depth-${this.depth}`)\n .style('visibility', 'visible')\n .style('height', '0.25rem');\n })\n .on(DragEvents.End, (event) => {\n setCursorStyle(CursorStyle.Auto);\n propertyElement\n .style('position', 'relative')\n .style('left', 0)\n .style('top', 0)\n .style('z-index', 0)\n .style('width', 'unset')\n .style('height', 'unset');\n d3.select(this.#element.nativeElement)\n .select(`.daga-dropbar.daga-index-${closestDropbarIndex}.daga-depth-${this.depth}`)\n .style('visibility', 'hidden')\n .style('height', 0);\n const pointerCoords = this.canvas.getPointerLocationRelativeToScreen(event);\n if (pointerCoords.length < 2 ||\n isNaN(pointerCoords[0]) ||\n isNaN(pointerCoords[1])) {\n return;\n }\n closestDropbarIndex = this.getClosestDropbarIndex(pointerCoords);\n this.valueSet?.displayedProperties?.splice(this.valueSet.displayedProperties.indexOf(property), 1);\n this.valueSet?.displayedProperties?.splice(closestDropbarIndex, 0, property);\n this.#cdr.detectChanges();\n }));\n }\n }\n getClosestDropbarIndex(pointerCoords) {\n const propertyList = this.valueSet?.propertySet.propertyList || [];\n // note that this is <= and not < as we are counting the index after the last element as well\n const coordsList = [];\n for (let i = 0; i <= propertyList.length; ++i) {\n const boundingRect = d3\n .select(this.#element.nativeElement)\n .select(`.daga-dropbar.daga-index-${i}.daga-depth-${this.depth}`)\n .node()\n ?.getBoundingClientRect();\n if (boundingRect) {\n coordsList.push([\n boundingRect.x + boundingRect.width / 2,\n boundingRect.y + boundingRect.height / 2\n ]);\n }\n }\n if (coordsList.length > 0) {\n // euclidean distance\n const distanceToDropbars = coordsList.map((p) => ((pointerCoords[0] - p[0]) ** 2 + (pointerCoords[1] - p[1]) ** 2) **\n 0.5);\n const indexOfClosestDropbar = distanceToDropbars.indexOf(Math.min(...distanceToDropbars));\n return indexOfClosestDropbar;\n }\n return 0;\n }\n displayProperty(property) {\n if (this.valueSet === undefined) {\n return;\n }\n let selectedProperty;\n if (property instanceof Property) {\n selectedProperty = property;\n }\n else if (property instanceof Event) {\n selectedProperty = this.valueSet?.propertySet.getProperty(property.target?.value || '');\n }\n else {\n selectedProperty = this.valueSet?.propertySet.getProperty(property || '');\n }\n if (selectedProperty) {\n this.valueSet.displayProperty(selectedProperty);\n }\n this.#cdr.detectChanges();\n this.addListeners();\n }\n hideProperty(property) {\n if (this.valueSet === undefined) {\n return;\n }\n let selectedProperty;\n if (property instanceof Property) {\n selectedProperty = property;\n }\n else if (property instanceof Event) {\n selectedProperty = this.valueSet?.propertySet.getProperty(property.target?.value || '');\n }\n else {\n selectedProperty = this.valueSet?.propertySet.getProperty(property || '');\n }\n if (selectedProperty) {\n this.valueSet.hideProperty(selectedProperty);\n }\n this.#cdr.detectChanges();\n this.addListeners();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertySettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PropertySettingsComponent, isStandalone: true, selector: \"daga-property-settings\", inputs: { valueSet: \"valueSet\", depth: \"depth\" }, ngImport: i0, template: \"<div\\r\\n class=\\\"daga-dropbar\\\"\\r\\n [class]=\\\"'daga-index-' + 0 + ' daga-depth-' + depth\\\"\\r\\n></div>\\r\\n@for (\\r\\n property of valueSet?.displayedProperties || [];\\r\\n track property;\\r\\n let i = $index\\r\\n) {\\r\\n <div\\r\\n class=\\\"daga-property-and-dropbar\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <div\\r\\n class=\\\"daga-property\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <div class=\\\"daga-property-name\\\">\\r\\n <span>{{ property.label || property.name }}</span>\\r\\n <div class=\\\"daga-buttons\\\">\\r\\n <button class=\\\"daga-property-button daga-move-button\\\">\\r\\n <div class=\\\"daga-icon daga-move-icon\\\"></div>\\r\\n </button>\\r\\n <button\\r\\n class=\\\"daga-property-button daga-hide-button\\\"\\r\\n (click)=\\\"hideProperty(property.name)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-hide-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n @if (property.type !== Type.Object) {\\r\\n <div class=\\\"daga-property-value\\\">\\r\\n {{ asString(valueSet?.getValue(property.name)) }}\\r\\n </div>\\r\\n }\\r\\n @if (property.type === Type.Object) {\\r\\n <div>\\r\\n <daga-property-settings\\r\\n [valueSet]=\\\"valueSet?.getSubValueSet(property.name)\\\"\\r\\n [depth]=\\\"depth + 1\\\"\\r\\n ></daga-property-settings>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n <div\\r\\n class=\\\"daga-dropbar\\\"\\r\\n [class]=\\\"'daga-index-' + (i + 1) + ' daga-depth-' + depth\\\"\\r\\n ></div>\\r\\n </div>\\r\\n}\\r\\n@if (valueSet && valueSet.hiddenProperties.length > 0) {\\r\\n <div class=\\\"daga-property\\\">\\r\\n <p class=\\\"daga-property-name\\\">Add property:</p>\\r\\n <select (change)=\\\"displayProperty($event)\\\">\\r\\n <option value=\\\"\\\">Select a property</option>\\r\\n @for (property of valueSet.hiddenProperties || []; track property) {\\r\\n <option [value]=\\\"property.name\\\">\\r\\n {{ property.label || property.name }}\\r\\n </option>\\r\\n }\\r\\n </select>\\r\\n </div>\\r\\n}\\r\\n\", dependencies: [{ kind: \"component\", type: PropertySettingsComponent, selector: \"daga-property-settings\", inputs: [\"valueSet\", \"depth\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i1.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertySettingsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-property-settings', imports: [FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\r\\n class=\\\"daga-dropbar\\\"\\r\\n [class]=\\\"'daga-index-' + 0 + ' daga-depth-' + depth\\\"\\r\\n></div>\\r\\n@for (\\r\\n property of valueSet?.displayedProperties || [];\\r\\n track property;\\r\\n let i = $index\\r\\n) {\\r\\n <div\\r\\n class=\\\"daga-property-and-dropbar\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <div\\r\\n class=\\\"daga-property\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <div class=\\\"daga-property-name\\\">\\r\\n <span>{{ property.label || property.name }}</span>\\r\\n <div class=\\\"daga-buttons\\\">\\r\\n <button class=\\\"daga-property-button daga-move-button\\\">\\r\\n <div class=\\\"daga-icon daga-move-icon\\\"></div>\\r\\n </button>\\r\\n <button\\r\\n class=\\\"daga-property-button daga-hide-button\\\"\\r\\n (click)=\\\"hideProperty(property.name)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-hide-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n @if (property.type !== Type.Object) {\\r\\n <div class=\\\"daga-property-value\\\">\\r\\n {{ asString(valueSet?.getValue(property.name)) }}\\r\\n </div>\\r\\n }\\r\\n @if (property.type === Type.Object) {\\r\\n <div>\\r\\n <daga-property-settings\\r\\n [valueSet]=\\\"valueSet?.getSubValueSet(property.name)\\\"\\r\\n [depth]=\\\"depth + 1\\\"\\r\\n ></daga-property-settings>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n <div\\r\\n class=\\\"daga-dropbar\\\"\\r\\n [class]=\\\"'daga-index-' + (i + 1) + ' daga-depth-' + depth\\\"\\r\\n ></div>\\r\\n </div>\\r\\n}\\r\\n@if (valueSet && valueSet.hiddenProperties.length > 0) {\\r\\n <div class=\\\"daga-property\\\">\\r\\n <p class=\\\"daga-property-name\\\">Add property:</p>\\r\\n <select (change)=\\\"displayProperty($event)\\\">\\r\\n <option value=\\\"\\\">Select a property</option>\\r\\n @for (property of valueSet.hiddenProperties || []; track property) {\\r\\n <option [value]=\\\"property.name\\\">\\r\\n {{ property.label || property.name }}\\r\\n </option>\\r\\n }\\r\\n </select>\\r\\n </div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { valueSet: [{\n type: Input\n }], depth: [{\n type: Input\n }] } });\nexport const asString = (value) => {\n if (Array.isArray(value)) {\n return value.join(', ');\n }\n if (isObject(value)) {\n return Object.entries(value)\n .map((pair) => pair.map((p) => JSON.stringify(p)).join(': '))\n .join(', ');\n }\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n if (value === undefined || value === null) {\n return '';\n }\n return '' + value;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktc2V0dGluZ3MvcHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktc2V0dGluZ3MvcHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBRUwsV0FBVyxFQUNYLFVBQVUsRUFFVixRQUFRLEVBQ1IsSUFBSSxFQUVKLFFBQVEsRUFDUixjQUFjLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQUVqRTs7Ozs7R0FLRztBQU9ILE1BQU0sT0FBTyx5QkFBeUI7SUFOdEM7UUFPRSxhQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBa0JoRCxrR0FBa0c7UUFDekYsVUFBSyxHQUFHLENBQUMsQ0FB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clxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDYW52YXMsXHJcbiAgQ3Vyc29yU3R5bGUsXHJcbiAgRHJhZ0V2ZW50cyxcclxuICBQb2ludCxcclxuICBQcm9wZXJ0eSxcclxuICBUeXBlLFxyXG4gIFZhbHVlU2V0LFxyXG4gIGlzT2JqZWN0LFxyXG4gIHNldEN1cnNvclN0eWxlXHJcbn0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcclxuaW1wb3J0IHsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXRTdHlsZUNsYXNzTmFtZSB9IGZyb20gJy4uL3Byb3BlcnR5LWVkaXRvci5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEVkaXRvciBvZiB0aGUgc2V0dGluZ3Mgb2YgYSBwcm9wZXJ0eSBlZGl0b3IsIHN1Y2ggYXMgd2hhdCBwcm9wZXJ0aWVzIGFyZSBkaXNwbGF5ZWQgYW5kIGhpZGRlbiBhbmQgaW4gd2hhdCBvcmRlci5cclxuICogQHByaXZhdGVcclxuICogQHNlZSBQcm9wZXJ0eUVkaXRvclxyXG4gKiBAc2VlIFZhbHVlU2V0XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2EtcHJvcGVydHktc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXHJcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gICNlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gICNjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICNjYW52YXNQcm92aWRlciA9IGluamVjdChDYW52YXNQcm92aWRlclNlcnZpY2UpO1xyXG5cclxuICBnZXQgY2FudmFzKCk6IENhbnZhcyB7XHJcbiAgICByZXR1cm4gdGhpcy4jY2FudmFzUHJvdmlkZXIuZ2V0Q2FudmFzKCk7XHJcbiAgfVxyXG5cclxuICBfdmFsdWVTZXQ/OiBWYWx1ZVNldDtcclxuICBASW5wdXQoKVxyXG4gIGdldCB2YWx1ZVNldCgpOiBWYWx1ZVNldCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVTZXQ7XHJcbiAgfVxyXG4gIHNldCB2YWx1ZVNldCh2YWx1ZVNldDogVmFsdWVTZXQgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl92YWx1ZVNldCAhPT0gdmFsdWVTZXQpIHtcclxuICAgICAgdGhpcy5fdmFsdWVTZXQgPSB2YWx1ZVNldDtcclxuICAgICAgLy8gZm9yY2UgdmFsdWUgY2hhbmdlIGRldGVjdGlvblxyXG4gICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKiogSG93IG1hbnkgcHJvcGVydHktc2V0dGluZ3MgZWxlbWVudHMgYXJlIHBhcmVudHMgb2YgdGhpcyBwcm9wZXJ0eS1zZXR0aW5ncyBlbGVtZW50LiBAcHJpdmF0ZSAqL1xyXG4gIEBJbnB1dCgpIGRlcHRoID0gMDtcclxuXHJcbiAgLy8gQXR0cmlidXRlcyBmb3IgdGhlIHRlbXBsYXRlXHJcbiAgVHlwZSA9IFR5cGU7XHJcbiAgZ2V0U3R5bGVDbGFzc05hbWUgPSBnZXRTdHlsZUNsYXNzTmFtZTtcclxuICBhc1N0cmluZyA9IGFzU3RyaW5nO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZExpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRMaXN0ZW5lcnMoKSB7XHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHRoaXMudmFsdWVTZXQ/LmRpc3BsYXllZFByb3BlcnRpZXMgfHwgW10pIHtcclxuICAgICAgbGV0IHByb3BlcnR5RWxlbWVudFdpZHRoID0gMDtcclxuICAgICAgbGV0IHByb3BlcnR5RWxlbWVudEhlaWdodCA9IDA7XHJcbiAgICAgIGxldCBjbG9zZXN0RHJvcGJhckluZGV4ID0gMDtcclxuICAgICAgY29uc3QgcHJvcGVydHlFbGVtZW50ID0gZDNcclxuICAgICAgICAuc2VsZWN0KHRoaXMuI2VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgICAgICAuc2VsZWN0PEhUTUxEaXZFbGVtZW50PihcclxuICAgICAgICAgIGAuZGFnYS1wcm9wZXJ0eS4ke2dldFN0eWxlQ2xhc3NOYW1lKHByb3BlcnR5Lm5hbWUpfS5kYWdhLWRlcHRoLSR7dGhpcy5kZXB0aH1gXHJcbiAgICAgICAgKTtcclxuICAgICAgcHJvcGVydHlFbGVtZW50LnNlbGVjdDxIVE1MQnV0dG9uRWxlbWVudD4oJ2J1dHRvbi5kYWdhLW1vdmUtYnV0dG9uJykuY2FsbChcclxuICAgICAgICBkM1xyXG4gICAgICAgICAgLmRyYWc8SFRNTEJ1dHRvbkVsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50PigpXHJcbiAgICAgICAgICAub24oRHJhZ0V2ZW50cy5TdGFydCwgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgc2V0Q3Vyc29yU3R5bGUoQ3Vyc29yU3R5bGUuR3JhYmJpbmcpO1xyXG4gICAgICAgICAgICBjb25zdCBwb2ludGVyQ29vcmRzID1cclxuICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5nZXRQb2ludGVyTG9jYXRpb25SZWxhdGl2ZVRvU2NyZWVuKGV2ZW50KTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHBvaW50ZXJDb29yZHMubGVuZ3RoIDwgMiB8fFxyXG4gICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMF0pIHx8XHJcbiAgICAgICAgICAgICAgaXNOYU4ocG9pbnRlckNvb3Jkc1sxXSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kaW5nUmVjdCA9IHByb3BlcnR5RWxlbWVudFxyXG4gICAgICAgICAgICAgIC5ub2RlKClcclxuICAgICAgICAgICAgICA/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBwcm9wZXJ0eUVsZW1lbnRXaWR0aCA9IGJvdW5kaW5nUmVjdD8ud2lkdGggfHwgMDtcclxuICAgICAgICAgICAgcHJvcGVydHlFbGVtZW50SGVpZ2h0ID0gYm91bmRpbmdSZWN0Py5oZWlnaHQgfHwgMDtcclxuICAgICAgICAgICAgcHJvcGVydHlFbGVtZW50XHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdwb3NpdGlvbicsICdmaXhlZCcpXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdsZWZ0JywgYCR7cG9pbnRlckNvb3Jkc1swXSAtIHByb3BlcnR5RWxlbWVudFdpZHRoIC8gMn1weGApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd0b3AnLCBgJHtwb2ludGVyQ29vcmRzWzFdIC0gcHJvcGVydHlFbGVtZW50SGVpZ2h0IC8gMn1weGApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd3aWR0aCcsIGAke3Byb3BlcnR5RWxlbWVudFdpZHRofXB4YClcclxuICAgICAgICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIGAke3Byb3BlcnR5RWxlbWVudEhlaWdodH1weGApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd6LWluZGV4JywgMSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLm9uKERyYWdFdmVudHMuRHJhZywgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgc2V0Q3Vyc29yU3R5bGUoQ3Vyc29yU3R5bGUuR3JhYmJpbmcpO1xyXG4gICAgICAgICAgICBjb25zdCBwb2ludGVyQ29vcmRzID1cclxuICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5nZXRQb2ludGVyTG9jYXRpb25SZWxhdGl2ZVRvU2NyZWVuKGV2ZW50KTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHBvaW50ZXJDb29yZHMubGVuZ3RoIDwgMiB8fFxyXG4gICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMF0pIHx8XHJcbiAgICAgICAgICAgICAgaXNOYU4ocG9pbnRlckNvb3Jkc1sxXSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb3BlcnR5RWxlbWVudFxyXG4gICAgICAgICAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAnZml4ZWQnKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnbGVmdCcsIGAke3BvaW50ZXJDb29yZHNbMF0gLSBwcm9wZXJ0eUVsZW1lbnRXaWR0aCAvIDJ9cHhgKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgndG9wJywgYCR7cG9pbnRlckNvb3Jkc1sxXSAtIHByb3BlcnR5RWxlbWVudEhlaWdodCAvIDJ9cHhgKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnd2lkdGgnLCBgJHtwcm9wZXJ0eUVsZW1lbnRXaWR0aH1weGApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdoZWlnaHQnLCBgJHtwcm9wZXJ0eUVsZW1lbnRIZWlnaHR9cHhgKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnei1pbmRleCcsIDEpO1xyXG4gICAgICAgICAgICBkMy5zZWxlY3QodGhpcy4jZWxlbWVudC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAgICAgICAgIC5zZWxlY3QoXHJcbiAgICAgICAgICAgICAgICBgLmRhZ2EtZHJvcGJhci5kYWdhLWluZGV4LSR7Y2xvc2VzdERyb3BiYXJJbmRleH0uZGFnYS1kZXB0aC0ke3RoaXMuZGVwdGh9YFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAuc3R5bGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJylcclxuICAgICAgICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIDApO1xyXG4gICAgICAgICAgICBjbG9zZXN0RHJvcGJhckluZGV4ID0gdGhpcy5nZXRDbG9zZXN0RHJvcGJhckluZGV4KHBvaW50ZXJDb29yZHMpO1xyXG4gICAgICAgICAgICBkMy5zZWxlY3QodGhpcy4jZWxlbWVudC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAgICAgICAgIC5zZWxlY3QoXHJcbiAgICAgICAgICAgICAgICBgLmRhZ2EtZHJvcGJhci5kYWdhLWluZGV4LSR7Y2xvc2VzdERyb3BiYXJJbmRleH0uZGFnYS1kZXB0aC0ke3RoaXMuZGVwdGh9YFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAuc3R5bGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdoZWlnaHQnLCAnMC4yNXJlbScpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5vbihEcmFnRXZlbnRzLkVuZCwgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgc2V0Q3Vyc29yU3R5bGUoQ3Vyc29yU3R5bGUuQXV0byk7XHJcbiAgICAgICAgICAgIHByb3BlcnR5RWxlbWVudFxyXG4gICAgICAgICAgICAgIC5zdHlsZSgncG9zaXRpb24nLCAncmVsYXRpdmUnKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnbGVmdCcsIDApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd0b3AnLCAwKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnei1pbmRleCcsIDApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd3aWR0aCcsICd1bnNldCcpXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdoZWlnaHQnLCAndW5zZXQnKTtcclxuICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMuI2VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgICAgICAgICAgICAuc2VsZWN0KFxyXG4gICAgICAgICAgICAgICAgYC5kYWdhLWRyb3BiYXIuZGFnYS1pbmRleC0ke2Nsb3Nlc3REcm9wYmFySW5kZXh9LmRhZ2EtZGVwdGgtJHt0aGlzLmRlcHRofWBcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpXHJcbiAgICAgICAgICAgICAgLnN0eWxlKCdoZWlnaHQnLCAwKTtcclxuICAgICAgICAgICAgY29uc3QgcG9pbnRlckNvb3JkcyA9XHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXMuZ2V0UG9pbnRlckxvY2F0aW9uUmVsYXRpdmVUb1NjcmVlbihldmVudCk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzLmxlbmd0aCA8IDIgfHxcclxuICAgICAgICAgICAgICBpc05hTihwb2ludGVyQ29vcmRzWzBdKSB8fFxyXG4gICAgICAgICAgICAgIGlzTmFOKHBvaW50ZXJDb29yZHNbMV0pXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjbG9zZXN0RHJvcGJhckluZGV4ID0gdGhpcy5nZXRDbG9zZXN0RHJvcGJhckluZGV4KHBvaW50ZXJDb29yZHMpO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlU2V0Py5kaXNwbGF5ZWRQcm9wZXJ0aWVzPy5zcGxpY2UoXHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZVNldC5kaXNwbGF5ZWRQcm9wZXJ0aWVzLmluZGV4T2YocHJvcGVydHkpLFxyXG4gICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZVNldD8uZGlzcGxheWVkUHJvcGVydGllcz8uc3BsaWNlKFxyXG4gICAgICAgICAgICAgIGNsb3Nlc3REcm9wYmFySW5kZXgsXHJcbiAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICBwcm9wZXJ0eVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENsb3Nlc3REcm9wYmFySW5kZXgocG9pbnRlckNvb3JkczogUG9pbnQpOiBudW1iZXIge1xyXG4gICAgY29uc3QgcHJvcGVydHlMaXN0ID0gdGhpcy52YWx1ZVNldD8ucHJvcGVydHlTZXQucHJvcGVydHlMaXN0IHx8IFtdO1xyXG4gICAgLy8gbm90ZSB0aGF0IHRoaXMgaXMgPD0gYW5kIG5vdCA8IGFzIHdlIGFyZSBjb3VudGluZyB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgZWxlbWVudCBhcyB3ZWxsXHJcbiAgICBjb25zdCBjb29yZHNMaXN0OiBQb2ludFtdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwcm9wZXJ0eUxpc3QubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYm91bmRpbmdSZWN0ID0gZDNcclxuICAgICAgICAuc2VsZWN0KHRoaXMuI2VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgICAgICAuc2VsZWN0PEhUTUxEaXZFbGVtZW50PihcclxuICAgICAgICAgIGAuZGFnYS1kcm9wYmFyLmRhZ2EtaW5kZXgtJHtpfS5kYWdhLWRlcHRoLSR7dGhpcy5kZXB0aH1gXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5ub2RlKClcclxuICAgICAgICA/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBpZiAoYm91bmRpbmdSZWN0KSB7XHJcbiAgICAgICAgY29vcmRzTGlzdC5wdXNoKFtcclxuICAgICAgICAgIGJvdW5kaW5nUmVjdC54ICsgYm91bmRpbmdSZWN0LndpZHRoIC8gMixcclxuICAgICAgICAgIGJvdW5kaW5nUmVjdC55ICsgYm91bmRpbmdSZWN0LmhlaWdodCAvIDJcclxuICAgICAgICBdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNvb3Jkc0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyBldWNsaWRlYW4gZGlzdGFuY2VcclxuICAgICAgY29uc3QgZGlzdGFuY2VUb0Ryb3BiYXJzID0gY29vcmRzTGlzdC5tYXAoXHJcbiAgICAgICAgKHApID0+XHJcbiAgICAgICAgICAoKHBvaW50ZXJDb29yZHNbMF0gLSBwWzBdKSAqKiAyICsgKHBvaW50ZXJDb29yZHNbMV0gLSBwWzFdKSAqKiAyKSAqKlxyXG4gICAgICAgICAgMC41XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGluZGV4T2ZDbG9zZXN0RHJvcGJhciA9IGRpc3RhbmNlVG9Ecm9wYmFycy5pbmRleE9mKFxyXG4gICAgICAgIE1hdGgubWluKC4uLmRpc3RhbmNlVG9Ecm9wYmFycylcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGluZGV4T2ZDbG9zZXN0RHJvcGJhcjtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgZGlzcGxheVByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSB8IEV2ZW50IHwgc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZVNldCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBzZWxlY3RlZFByb3BlcnR5OiBQcm9wZXJ0eSB8IHVuZGVmaW5lZDtcclxuICAgIGlmIChwcm9wZXJ0eSBpbnN0YW5jZW9mIFByb3BlcnR5KSB7XHJcbiAgICAgIHNlbGVjdGVkUHJvcGVydHkgPSBwcm9wZXJ0eTtcclxuICAgIH0gZWxzZSBpZiAocHJvcGVydHkgaW5zdGFuY2VvZiBFdmVudCkge1xyXG4gICAgICBzZWxlY3RlZFByb3BlcnR5ID0gdGhpcy52YWx1ZVNldD8ucHJvcGVydHlTZXQuZ2V0UHJvcGVydHkoXHJcbiAgICAgICAgKHByb3BlcnR5LnRhcmdldCBhcyB1bmtub3duIGFzIHsgdmFsdWU6IHN0cmluZyB9KT8udmFsdWUgfHwgJydcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLnZhbHVlU2V0Py5wcm9wZXJ0eVNldC5nZXRQcm9wZXJ0eShwcm9wZXJ0eSB8fCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWRQcm9wZXJ0eSkge1xyXG4gICAgICB0aGlzLnZhbHVlU2V0LmRpc3BsYXlQcm9wZXJ0eShzZWxlY3RlZFByb3BlcnR5KTtcclxuICAgIH1cclxuICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmFkZExpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgaGlkZVByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSB8IEV2ZW50IHwgc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZVNldCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBzZWxlY3RlZFByb3BlcnR5OiBQcm9wZXJ0eSB8IHVuZGVmaW5lZDtcclxuICAgIGlmIChwcm9wZXJ0eSBpbnN0YW5jZW9mIFByb3BlcnR5KSB7XHJcbiAgICAgIHNlbGVjdGVkUHJvcGVydHkgPSBwcm9wZXJ0eTtcclxuICAgIH0gZWxzZSBpZiAocHJvcGVydHkgaW5zdGFuY2VvZiBFdmVudCkge1xyXG4gICAgICBzZWxlY3RlZFByb3BlcnR5ID0gdGhpcy52YWx1ZVNldD8ucHJvcGVydHlTZXQuZ2V0UHJvcGVydHkoXHJcbiAgICAgICAgKHByb3BlcnR5LnRhcmdldCBhcyB1bmtub3duIGFzIHsgdmFsdWU6IHN0cmluZyB9KT8udmFsdWUgfHwgJydcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLnZhbHVlU2V0Py5wcm9wZXJ0eVNldC5nZXRQcm9wZXJ0eShwcm9wZXJ0eSB8fCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWRQcm9wZXJ0eSkge1xyXG4gICAgICB0aGlzLnZhbHVlU2V0LmhpZGVQcm9wZXJ0eShzZWxlY3RlZFByb3BlcnR5KTtcclxuICAgIH1cclxuICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmFkZExpc3RlbmVycygpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFzU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcclxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgIHJldHVybiB2YWx1ZS5qb2luKCcsICcpO1xyXG4gIH1cclxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUgYXMgb2JqZWN0KVxyXG4gICAgICAubWFwKChwYWlyKSA9PiBwYWlyLm1hcCgocCkgPT4gSlNPTi5zdHJpbmdpZnkocCkpLmpvaW4oJzogJykpXHJcbiAgICAgIC5qb2luKCcsICcpO1xyXG4gIH1cclxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICByZXR1cm4gdmFsdWUudG9Mb2NhbGVTdHJpbmcoKTtcclxuICB9XHJcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgcmV0dXJuICcnICsgdmFsdWU7XHJcbn07XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImRhZ2EtZHJvcGJhclwiXHJcbiAgW2NsYXNzXT1cIidkYWdhLWluZGV4LScgKyAwICsgJyBkYWdhLWRlcHRoLScgKyBkZXB0aFwiXHJcbj48L2Rpdj5cclxuQGZvciAoXHJcbiAgcHJvcGVydHkgb2YgdmFsdWVTZXQ/LmRpc3BsYXllZFByb3BlcnRpZXMgfHwgW107XHJcbiAgdHJhY2sgcHJvcGVydHk7XHJcbiAgbGV0IGkgPSAkaW5kZXhcclxuKSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5LWFuZC1kcm9wYmFyXCJcclxuICAgIFtjbGFzc109XCJnZXRTdHlsZUNsYXNzTmFtZShwcm9wZXJ0eS5uYW1lKSArICcgZGFnYS1kZXB0aC0nICsgZGVwdGhcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5XCJcclxuICAgICAgW2NsYXNzXT1cImdldFN0eWxlQ2xhc3NOYW1lKHByb3BlcnR5Lm5hbWUpICsgJyBkYWdhLWRlcHRoLScgKyBkZXB0aFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLXByb3BlcnR5LW5hbWVcIj5cclxuICAgICAgICA8c3Bhbj57eyBwcm9wZXJ0eS5sYWJlbCB8fCBwcm9wZXJ0eS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWJ1dHRvbnNcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkYWdhLXByb3BlcnR5LWJ1dHRvbiBkYWdhLW1vdmUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWljb24gZGFnYS1tb3ZlLWljb25cIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImRhZ2EtcHJvcGVydHktYnV0dG9uIGRhZ2EtaGlkZS1idXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiaGlkZVByb3BlcnR5KHByb3BlcnR5Lm5hbWUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtaWNvbiBkYWdhLWhpZGUtaWNvblwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKHByb3BlcnR5LnR5cGUgIT09IFR5cGUuT2JqZWN0KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtcHJvcGVydHktdmFsdWVcIj5cclxuICAgICAgICAgIHt7IGFzU3RyaW5nKHZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKSkgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuT2JqZWN0KSB7XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxkYWdhLXByb3BlcnR5LXNldHRpbmdzXHJcbiAgICAgICAgICAgIFt2YWx1ZVNldF09XCJ2YWx1ZVNldD8uZ2V0U3ViVmFsdWVTZXQocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgICAgICBbZGVwdGhdPVwiZGVwdGggKyAxXCJcclxuICAgICAgICAgID48L2RhZ2EtcHJvcGVydHktc2V0dGluZ3M+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImRhZ2EtZHJvcGJhclwiXHJcbiAgICAgIFtjbGFzc109XCInZGFnYS1pbmRleC0nICsgKGkgKyAxKSArICcgZGFnYS1kZXB0aC0nICsgZGVwdGhcIlxyXG4gICAgPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG59XHJcbkBpZiAodmFsdWVTZXQgJiYgdmFsdWVTZXQuaGlkZGVuUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XHJcbiAgPGRpdiBjbGFzcz1cImRhZ2EtcHJvcGVydHlcIj5cclxuICAgIDxwIGNsYXNzPVwiZGFnYS1wcm9wZXJ0eS1uYW1lXCI+QWRkIHByb3BlcnR5OjwvcD5cclxuICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJkaXNwbGF5UHJvcGVydHkoJGV2ZW50KVwiPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGEgcHJvcGVydHk8L29wdGlvbj5cclxuICAgICAgQGZvciAocHJvcGVydHkgb2YgdmFsdWVTZXQuaGlkZGVuUHJvcGVydGllcyB8fCBbXTsgdHJhY2sgcHJvcGVydHkpIHtcclxuICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJwcm9wZXJ0eS5uYW1lXCI+XHJcbiAgICAgICAgICB7eyBwcm9wZXJ0eS5sYWJlbCB8fCBwcm9wZXJ0eS5uYW1lIH19XHJcbiAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgIH1cclxuICAgIDwvc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Keys, equals } from '@metadev/daga';\nimport { asString } from '../property-settings/property-settings.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const LOST_FOCUS_TIME_WINDOW_MS = 200;\n/**\n * Combobox with autocomplete.\n * @private\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class AutocompleteComponent {\n constructor() {\n this.valueInput = '';\n this.disabled = false;\n this.showOptions = false;\n this.valueChange = new EventEmitter();\n }\n set value(value) {\n if (equals(value, this._value)) {\n return;\n }\n this._value = value;\n this.valueInput = this.getLabelOfValue(value);\n }\n get value() {\n return this._value;\n }\n getLabelOfValue(value) {\n for (const option of this.options) {\n if (equals(option.key, value)) {\n return option.label;\n }\n }\n return asString(value);\n }\n onKeyUp(event) {\n if (!this.disabled) {\n switch (event.key) {\n case Keys.PageDown:\n if (this.focusIndex === undefined) {\n this.focusOnOption(0);\n this.scrollToOption(0);\n }\n else {\n this.focusOnOption(this.focusIndex + 5);\n this.scrollToOption(this.focusIndex);\n }\n event.preventDefault();\n break;\n case Keys.ArrowDown:\n if (this.focusIndex === undefined) {\n this.focusOnOption(0);\n this.scrollToOption(0);\n }\n else {\n this.focusOnOption(this.focusIndex + 1);\n this.scrollToOption(this.focusIndex);\n }\n event.preventDefault();\n break;\n case Keys.PageUp:\n if (this.focusIndex === undefined) {\n this.focusOnOption(this.options.length - 1);\n this.scrollToOption(this.options.length - 1);\n }\n else {\n this.focusOnOption(this.focusIndex - 5);\n this.scrollToOption(this.focusIndex);\n }\n event.preventDefault();\n break;\n case Keys.ArrowUp:\n if (this.focusIndex === undefined) {\n this.focusOnOption(this.options.length - 1);\n this.scrollToOption(this.options.length - 1);\n }\n else {\n this.focusOnOption(this.focusIndex - 1);\n this.scrollToOption(this.focusIndex);\n }\n event.preventDefault();\n break;\n case Keys.Escape:\n this.closeOptions();\n event.preventDefault();\n break;\n case Keys.Enter:\n this.complete(this.options[this.focusIndex || 0]);\n event.preventDefault();\n break;\n default:\n this.openOptions();\n }\n }\n }\n openOptions() {\n if (!this.disabled) {\n const mustContain = normalizeString(this.valueInput.trim());\n this.currentOptions = [];\n this.currentLabelStarts = [];\n this.currentLabelMatches = [];\n this.currentLabelEnds = [];\n for (const option of this.options) {\n const normalizedLabel = normalizeString(option.label);\n const position = normalizedLabel.indexOf(mustContain);\n if (position >= 0) {\n const labelStart = option.label.substring(0, position);\n const labelMatch = option.label.substring(position, position + mustContain.length);\n const labelEnd = option.label.substring(position + mustContain.length);\n this.currentOptions.push(option);\n this.currentLabelStarts.push(labelStart);\n this.currentLabelMatches.push(labelMatch);\n this.currentLabelEnds.push(labelEnd);\n }\n }\n this.showOptions = true;\n }\n }\n closeOptions() {\n this.showOptions = false;\n }\n focusOnOption(index) {\n if (!this.disabled) {\n this.focusIndex = index;\n if (index === undefined) {\n return;\n }\n if (index < 0) {\n this.focusIndex = 0;\n }\n if (index >= this.options.length) {\n this.focusIndex = this.options.length - 1;\n }\n }\n }\n onLostFocus() {\n setTimeout(() => {\n this.closeOptions();\n }, LOST_FOCUS_TIME_WINDOW_MS);\n }\n scrollToOption(index) {\n const target = this.mainElement.nativeElement.querySelectorAll('li')[index];\n if (target) {\n target.scrollIntoView({ block: 'center' });\n }\n }\n clearInput() {\n if (!this.disabled) {\n this.value = undefined;\n this.valueInput = '';\n this.showOptions = false;\n this.focusIndex = undefined;\n }\n }\n complete(option) {\n if (!this.disabled) {\n this.value = option;\n this.valueInput = option.label;\n this.showOptions = false;\n this.focusIndex = undefined;\n this.valueChange.emit(option.key);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: AutocompleteComponent, isStandalone: true, selector: \"daga-autocomplete\", inputs: { value: \"value\", valueInput: \"valueInput\", options: \"options\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"mainElement\", first: true, predicate: [\"main\"], descendants: true, static: true }], ngImport: i0, template: \"<div\\r\\n #main\\r\\n class=\\\"daga-autocomplete\\\"\\r\\n [class]=\\\"showOptions ? 'daga-showing-options' : ''\\\"\\r\\n (blur)=\\\"closeOptions()\\\"\\r\\n>\\r\\n <div class=\\\"daga-autocomplete-input\\\">\\r\\n <input\\r\\n [(ngModel)]=\\\"valueInput\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n (keyup)=\\\"onKeyUp($event)\\\"\\r\\n (focus)=\\\"openOptions()\\\"\\r\\n (blur)=\\\"onLostFocus()\\\"\\r\\n />\\r\\n @if (valueInput !== '') {\\r\\n <button class=\\\"daga-clear\\\" (click)=\\\"clearInput()\\\"></button>\\r\\n }\\r\\n </div>\\r\\n <div class=\\\"daga-autocomplete-options\\\">\\r\\n <ul class=\\\"daga-autocomplete-option-list\\\">\\r\\n @if (currentOptions !== undefined ? currentOptions.length === 0 : true) {\\r\\n <li class=\\\"daga-autocomplete-option no-options\\\">(No options)</li>\\r\\n }\\r\\n @for (option of currentOptions; track option; let index = $index) {\\r\\n <li\\r\\n class=\\\"daga-autocomplete-option\\\"\\r\\n [class]=\\\"index === focusIndex ? 'daga-focused' : ''\\\"\\r\\n (mousemove)=\\\"focusOnOption(index)\\\"\\r\\n (click)=\\\"complete(option)\\\"\\r\\n >\\r\\n <span>{{ currentLabelStarts[index] }}</span>\\r\\n <span class=\\\"daga-match\\\">{{ currentLabelMatches[index] }}</span>\\r\\n <span>{{ currentLabelEnds[index] }}</span>\\r\\n </li>\\r\\n }\\r\\n </ul>\\r\\n </div>\\r\\n</div>\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-autocomplete', imports: [FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\r\\n #main\\r\\n class=\\\"daga-autocomplete\\\"\\r\\n [class]=\\\"showOptions ? 'daga-showing-options' : ''\\\"\\r\\n (blur)=\\\"closeOptions()\\\"\\r\\n>\\r\\n <div class=\\\"daga-autocomplete-input\\\">\\r\\n <input\\r\\n [(ngModel)]=\\\"valueInput\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n (keyup)=\\\"onKeyUp($event)\\\"\\r\\n (focus)=\\\"openOptions()\\\"\\r\\n (blur)=\\\"onLostFocus()\\\"\\r\\n />\\r\\n @if (valueInput !== '') {\\r\\n <button class=\\\"daga-clear\\\" (click)=\\\"clearInput()\\\"></button>\\r\\n }\\r\\n </div>\\r\\n <div class=\\\"daga-autocomplete-options\\\">\\r\\n <ul class=\\\"daga-autocomplete-option-list\\\">\\r\\n @if (currentOptions !== undefined ? currentOptions.length === 0 : true) {\\r\\n <li class=\\\"daga-autocomplete-option no-options\\\">(No options)</li>\\r\\n }\\r\\n @for (option of currentOptions; track option; let index = $index) {\\r\\n <li\\r\\n class=\\\"daga-autocomplete-option\\\"\\r\\n [class]=\\\"index === focusIndex ? 'daga-focused' : ''\\\"\\r\\n (mousemove)=\\\"focusOnOption(index)\\\"\\r\\n (click)=\\\"complete(option)\\\"\\r\\n >\\r\\n <span>{{ currentLabelStarts[index] }}</span>\\r\\n <span class=\\\"daga-match\\\">{{ currentLabelMatches[index] }}</span>\\r\\n <span>{{ currentLabelEnds[index] }}</span>\\r\\n </li>\\r\\n }\\r\\n </ul>\\r\\n </div>\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { mainElement: [{\n type: ViewChild,\n args: ['main', { static: true }]\n }], value: [{\n type: Input\n }], valueInput: [{\n type: Input\n }], options: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\nconst normalizeString = (a) => (a || '')\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvcHJvcGVydHktZWRpdG9yL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0RBQWtELENBQUM7OztBQUU1RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUM7QUFFN0M7Ozs7O0dBS0c7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBTmxDO1FBcUJXLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFRaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVWLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQW1KckQ7SUF6S0MsSUFDSSxLQUFLLENBQUMsS0FBYztRQUN0QixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FB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SUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDOzhHQTVLVSxxQkFBcUI7a0dBQXJCLHFCQUFxQix5VUMzQmxDLGsxQ0FzQ0EsMkNEZFksV0FBVzs7MkZBR1YscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLG1CQUFtQixXQUVwQixDQUFDLFdBQVcsQ0FBQyxtQkFDTCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdWLFdBQVc7c0JBQS9DLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0IsS0FBSztzQkFEUixLQUFLO2dCQVdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTTs7QUFxSlQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFTLEVBQVUsRUFBRSxDQUM1QyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDTixXQUFXLEVBQUU7S0FDYixTQUFTLENBQUMsS0FBSyxDQUFDO0tBQ2hCLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEtleXMsIE9wdGlvbiwgZXF1YWxzIH0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCB7IGFzU3RyaW5nIH0gZnJvbSAnLi4vcHJvcGVydHktc2V0dGluZ3MvcHJvcGVydHktc2V0dGluZ3MuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBMT1NUX0ZPQ1VTX1RJTUVfV0lORE9XX01TID0gMjAwO1xyXG5cclxuLyoqXHJcbiAqIENvbWJvYm94IHdpdGggYXV0b2NvbXBsZXRlLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBAc2VlIFByb3BlcnR5RWRpdG9yXHJcbiAqIEBzZWUgVmFsdWVTZXRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGFnYS1hdXRvY29tcGxldGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZV0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnbWFpbicsIHsgc3RhdGljOiB0cnVlIH0pIG1haW5FbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHVua25vd247XHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodmFsdWU6IHVua25vd24pIHtcclxuICAgIGlmIChlcXVhbHModmFsdWUsIHRoaXMuX3ZhbHVlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy52YWx1ZUlucHV0ID0gdGhpcy5nZXRMYWJlbE9mVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogdW5rbm93biB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHZhbHVlSW5wdXQgPSAnJztcclxuICBmb2N1c0luZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnMhOiBPcHRpb248dW5rbm93bj5bXTtcclxuICBjdXJyZW50T3B0aW9ucyE6IE9wdGlvbjx1bmtub3duPltdO1xyXG4gIGN1cnJlbnRMYWJlbFN0YXJ0cyE6IHN0cmluZ1tdO1xyXG4gIGN1cnJlbnRMYWJlbE1hdGNoZXMhOiBzdHJpbmdbXTtcclxuICBjdXJyZW50TGFiZWxFbmRzITogc3RyaW5nW107XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgc2hvd09wdGlvbnMgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xyXG5cclxuICBnZXRMYWJlbE9mVmFsdWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XHJcbiAgICAgIGlmIChlcXVhbHMob3B0aW9uLmtleSwgdmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbi5sYWJlbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFzU3RyaW5nKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICAgIGNhc2UgS2V5cy5QYWdlRG93bjpcclxuICAgICAgICAgIGlmICh0aGlzLmZvY3VzSW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25PcHRpb24oMCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9PcHRpb24oMCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25PcHRpb24odGhpcy5mb2N1c0luZGV4ICsgNSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9PcHRpb24odGhpcy5mb2N1c0luZGV4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEtleXMuQXJyb3dEb3duOlxyXG4gICAgICAgICAgaWYgKHRoaXMuZm9jdXNJbmRleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbk9wdGlvbigwKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbigwKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbk9wdGlvbih0aGlzLmZvY3VzSW5kZXggKyAxKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbih0aGlzLmZvY3VzSW5kZXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgS2V5cy5QYWdlVXA6XHJcbiAgICAgICAgICBpZiAodGhpcy5mb2N1c0luZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c09uT3B0aW9uKHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbih0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25PcHRpb24odGhpcy5mb2N1c0luZGV4IC0gNSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9PcHRpb24odGhpcy5mb2N1c0luZGV4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEtleXMuQXJyb3dVcDpcclxuICAgICAgICAgIGlmICh0aGlzLmZvY3VzSW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25PcHRpb24odGhpcy5vcHRpb25zLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvT3B0aW9uKHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbk9wdGlvbih0aGlzLmZvY3VzSW5kZXggLSAxKTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb09wdGlvbih0aGlzLmZvY3VzSW5kZXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgS2V5cy5Fc2NhcGU6XHJcbiAgICAgICAgICB0aGlzLmNsb3NlT3B0aW9ucygpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgS2V5cy5FbnRlcjpcclxuICAgICAgICAgIHRoaXMuY29tcGxldGUodGhpcy5vcHRpb25zW3RoaXMuZm9jdXNJbmRleCB8fCAwXSk7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMub3Blbk9wdGlvbnMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3Blbk9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgY29uc3QgbXVzdENvbnRhaW4gPSBub3JtYWxpemVTdHJpbmcodGhpcy52YWx1ZUlucHV0LnRyaW0oKSk7XHJcbiAgICAgIHRoaXMuY3VycmVudE9wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50TGFiZWxTdGFydHMgPSBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50TGFiZWxNYXRjaGVzID0gW107XHJcbiAgICAgIHRoaXMuY3VycmVudExhYmVsRW5kcyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBub3JtYWxpemVTdHJpbmcob3B0aW9uLmxhYmVsKTtcclxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IG5vcm1hbGl6ZWRMYWJlbC5pbmRleE9mKG11c3RDb250YWluKTtcclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xyXG4gICAgICAgICAgY29uc3QgbGFiZWxTdGFydCA9IG9wdGlvbi5sYWJlbC5zdWJzdHJpbmcoMCwgcG9zaXRpb24pO1xyXG4gICAgICAgICAgY29uc3QgbGFiZWxNYXRjaCA9IG9wdGlvbi5sYWJlbC5zdWJzdHJpbmcoXHJcbiAgICAgICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgICAgICBwb3NpdGlvbiArIG11c3RDb250YWluLmxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsRW5kID0gb3B0aW9uLmxhYmVsLnN1YnN0cmluZyhcclxuICAgICAgICAgICAgcG9zaXRpb24gKyBtdXN0Q29udGFpbi5sZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRPcHRpb25zLnB1c2gob3B0aW9uKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudExhYmVsU3RhcnRzLnB1c2gobGFiZWxTdGFydCk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRMYWJlbE1hdGNoZXMucHVzaChsYWJlbE1hdGNoKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudExhYmVsRW5kcy5wdXNoKGxhYmVsRW5kKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93T3B0aW9ucyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZU9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dPcHRpb25zID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uT3B0aW9uKGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmZvY3VzSW5kZXggPSBpbmRleDtcclxuICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgIHRoaXMuZm9jdXNJbmRleCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4ID49IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmZvY3VzSW5kZXggPSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Mb3N0Rm9jdXMoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZU9wdGlvbnMoKTtcclxuICAgIH0sIExPU1RfRk9DVVNfVElNRV9XSU5ET1dfTVMpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9PcHRpb24oaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpJylbaW5kZXhdO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhcklucHV0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMudmFsdWVJbnB1dCA9ICcnO1xyXG4gICAgICB0aGlzLnNob3dPcHRpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZm9jdXNJbmRleCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBsZXRlKG9wdGlvbjogT3B0aW9uPHVua25vd24+KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG9wdGlvbjtcclxuICAgICAgdGhpcy52YWx1ZUlucHV0ID0gb3B0aW9uLmxhYmVsO1xyXG4gICAgICB0aGlzLnNob3dPcHRpb25zID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZm9jdXNJbmRleCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG9wdGlvbi5rZXkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uc3Qgbm9ybWFsaXplU3RyaW5nID0gKGE6IHN0cmluZyk6IHN0cmluZyA9PlxyXG4gIChhIHx8ICcnKVxyXG4gICAgLnRvTG93ZXJDYXNlKClcclxuICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xyXG4iLCI8ZGl2XHJcbiAgI21haW5cclxuICBjbGFzcz1cImRhZ2EtYXV0b2NvbXBsZXRlXCJcclxuICBbY2xhc3NdPVwic2hvd09wdGlvbnMgPyAnZGFnYS1zaG93aW5nLW9wdGlvbnMnIDogJydcIlxyXG4gIChibHVyKT1cImNsb3NlT3B0aW9ucygpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJkYWdhLWF1dG9jb21wbGV0ZS1pbnB1dFwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVJbnB1dFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxyXG4gICAgICAoZm9jdXMpPVwib3Blbk9wdGlvbnMoKVwiXHJcbiAgICAgIChibHVyKT1cIm9uTG9zdEZvY3VzKClcIlxyXG4gICAgLz5cclxuICAgIEBpZiAodmFsdWVJbnB1dCAhPT0gJycpIHtcclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtY2xlYXJcIiAoY2xpY2spPVwiY2xlYXJJbnB1dCgpXCI+PC9idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImRhZ2EtYXV0b2NvbXBsZXRlLW9wdGlvbnNcIj5cclxuICAgIDx1bCBjbGFzcz1cImRhZ2EtYXV0b2NvbXBsZXRlLW9wdGlvbi1saXN0XCI+XHJcbiAgICAgIEBpZiAoY3VycmVudE9wdGlvbnMgIT09IHVuZGVmaW5lZCA/IGN1cnJlbnRPcHRpb25zLmxlbmd0aCA9PT0gMCA6IHRydWUpIHtcclxuICAgICAgICA8bGkgY2xhc3M9XCJkYWdhLWF1dG9jb21wbGV0ZS1vcHRpb24gbm8tb3B0aW9uc1wiPihObyBvcHRpb25zKTwvbGk+XHJcbiAgICAgIH1cclxuICAgICAgQGZvciAob3B0aW9uIG9mIGN1cnJlbnRPcHRpb25zOyB0cmFjayBvcHRpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xyXG4gICAgICAgIDxsaVxyXG4gICAgICAgICAgY2xhc3M9XCJkYWdhLWF1dG9jb21wbGV0ZS1vcHRpb25cIlxyXG4gICAgICAgICAgW2NsYXNzXT1cImluZGV4ID09PSBmb2N1c0luZGV4ID8gJ2RhZ2EtZm9jdXNlZCcgOiAnJ1wiXHJcbiAgICAgICAgICAobW91c2Vtb3ZlKT1cImZvY3VzT25PcHRpb24oaW5kZXgpXCJcclxuICAgICAgICAgIChjbGljayk9XCJjb21wbGV0ZShvcHRpb24pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3Bhbj57eyBjdXJyZW50TGFiZWxTdGFydHNbaW5kZXhdIH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYWdhLW1hdGNoXCI+e3sgY3VycmVudExhYmVsTWF0Y2hlc1tpbmRleF0gfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj57eyBjdXJyZW50TGFiZWxFbmRzW2luZGV4XSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICB9XHJcbiAgICA8L3VsPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Editor of a property of text list type within a property editor.\n * @private\n * @see Type.TextList\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class OptionListEditorComponent {\n constructor() {\n this.#cdr = inject(ChangeDetectorRef);\n this._value = [];\n this.labelsOfValue = [];\n this.options = [];\n this.valueInput = undefined;\n this.allowRepeats = true;\n this.optionsNotPresentInValue = [];\n this.disabled = false;\n this.valueChange = new EventEmitter();\n }\n #cdr;\n set value(value) {\n if (value === this._value) {\n return;\n }\n const initialAndEmpty = value.length === 0 && this._value.length === 0;\n this._value = value;\n this.labelsOfValue = [];\n for (const key of this._value) {\n this.labelsOfValue.push(this.getLabelOfValue(key));\n }\n if (initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n this.updateOptionsNotPresentInValue();\n }\n get value() {\n return this._value;\n }\n getLabelOfValue(value) {\n for (const option of this.options) {\n if (option.key === value) {\n return option.label;\n }\n }\n return `${value}`;\n }\n hasValue(value) {\n for (const item of this._value || []) {\n if (item === value) {\n return true;\n }\n }\n return false;\n }\n removeFromValue(index) {\n if (this._value.length > index) {\n this._value.splice(index, 1);\n this.labelsOfValue.splice(index, 1);\n this.valueChange.emit(this._value);\n this.updateOptionsNotPresentInValue();\n this.#cdr.detectChanges();\n }\n }\n addToValue() {\n if (this.valueInput !== undefined &&\n (this.allowRepeats ? true : !this.hasValue(this.valueInput))) {\n this._value.push(this.valueInput);\n this.labelsOfValue.push(this.getLabelOfValue(this.valueInput));\n this.valueChange.emit(this._value);\n this.clearInput();\n this.updateOptionsNotPresentInValue();\n this.#cdr.detectChanges();\n }\n }\n clearInput() {\n this.valueInput = '';\n }\n updateOptionsNotPresentInValue() {\n if (!this.allowRepeats) {\n const optionsNotPresentInValue = [];\n for (const option of this.options) {\n if (!this.hasValue(option.key)) {\n optionsNotPresentInValue.push(option);\n }\n }\n this.optionsNotPresentInValue = optionsNotPresentInValue;\n }\n }\n onKeyUp(event) {\n if (event.key === 'Enter') {\n this.addToValue();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: OptionListEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: OptionListEditorComponent, isStandalone: true, selector: \"daga-option-list-editor\", inputs: { value: \"value\", options: \"options\", valueInput: \"valueInput\", allowRepeats: \"allowRepeats\", optionsNotPresentInValue: \"optionsNotPresentInValue\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\" }, ngImport: i0, template: \"@for (item of value; track item; let index = $index) {\\r\\n <div\\r\\n class=\\\"daga-value-item-element\\\"\\r\\n >\\r\\n <span class=\\\"daga-input\\\">{{ labelsOfValue[index] }}</span>\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(index)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n}\\r\\n@if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <daga-autocomplete\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [options]=\\\"allowRepeats ? options || [] : optionsNotPresentInValue || []\\\"\\r\\n [(value)]=\\\"valueInput\\\"\\r\\n />\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\", dependencies: [{ kind: \"component\", type: AutocompleteComponent, selector: \"daga-autocomplete\", inputs: [\"value\", \"valueInput\", \"options\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"ngmodule\", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: OptionListEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-option-list-editor', imports: [AutocompleteComponent, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@for (item of value; track item; let index = $index) {\\r\\n <div\\r\\n class=\\\"daga-value-item-element\\\"\\r\\n >\\r\\n <span class=\\\"daga-input\\\">{{ labelsOfValue[index] }}</span>\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(index)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n}\\r\\n@if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <daga-autocomplete\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [options]=\\\"allowRepeats ? options || [] : optionsNotPresentInValue || []\\\"\\r\\n [(value)]=\\\"valueInput\\\"\\r\\n />\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\" }]\n }], propDecorators: { value: [{\n type: Input\n }], options: [{\n type: Input\n }], valueInput: [{\n type: Input\n }], allowRepeats: [{\n type: Input\n }], optionsNotPresentInValue: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWxpc3QtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvcHJvcGVydHktZWRpdG9yL29wdGlvbi1saXN0LWVkaXRvci9vcHRpb24tbGlzdC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3Ivb3B0aW9uLWxpc3QtZWRpdG9yL29wdGlvbi1saXN0LWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFL0U7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQU9FLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QixXQUFNLEdBQWMsRUFBRSxDQUFDO1FBb0IvQixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUVwQixZQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUVoQyxlQUFVLEdBQWEsU0FBUyxDQUFDO1FBRWpDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLDZCQUF3QixHQUFzQixFQUFFLENBQUM7UUFFakQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7S0FpRXZEO0lBbkdDLElBQUksQ0FBNkI7SUFHakMsSUFDSSxLQUFLLENBQUMsS0FBZ0I7UUFD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dGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BtZXRhZGV2L2RhZ2EnO1xyXG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogRWRpdG9yIG9mIGEgcHJvcGVydHkgb2YgdGV4dCBsaXN0IHR5cGUgd2l0aGluIGEgcHJvcGVydHkgZWRpdG9yLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBAc2VlIFR5cGUuVGV4dExpc3RcclxuICogQHNlZSBQcm9wZXJ0eUVkaXRvclxyXG4gKiBAc2VlIFZhbHVlU2V0XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2Etb3B0aW9uLWxpc3QtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb3B0aW9uLWxpc3QtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBpbXBvcnRzOiBbQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIE9wdGlvbkxpc3RFZGl0b3JDb21wb25lbnQge1xyXG4gICNjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZTogdW5rbm93bltdID0gW107XHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodmFsdWU6IHVua25vd25bXSkge1xyXG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbml0aWFsQW5kRW1wdHkgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID09PSAwO1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMubGFiZWxzT2ZWYWx1ZSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5fdmFsdWUpIHtcclxuICAgICAgdGhpcy5sYWJlbHNPZlZhbHVlLnB1c2godGhpcy5nZXRMYWJlbE9mVmFsdWUoa2V5KSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5pdGlhbEFuZEVtcHR5KSB7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZU9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZSgpO1xyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogdW5rbm93bltdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgbGFiZWxzT2ZWYWx1ZTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgb3B0aW9uczogT3B0aW9uPHVua25vd24+W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgdmFsdWVJbnB1dD86IHVua25vd24gPSB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIGFsbG93UmVwZWF0cyA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIG9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZTogT3B0aW9uPHVua25vd24+W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duW10+KCk7XHJcblxyXG4gIGdldExhYmVsT2ZWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XHJcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgaWYgKG9wdGlvbi5rZXkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbi5sYWJlbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgfVxyXG5cclxuICBoYXNWYWx1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX3ZhbHVlIHx8IFtdKSB7XHJcbiAgICAgIGlmIChpdGVtID09PSB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZW1vdmVGcm9tVmFsdWUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlLmxlbmd0aCA+IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMubGFiZWxzT2ZWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZSgpO1xyXG4gICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVG9WYWx1ZSgpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy52YWx1ZUlucHV0ICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgKHRoaXMuYWxsb3dSZXBlYXRzID8gdHJ1ZSA6ICF0aGlzLmhhc1ZhbHVlKHRoaXMudmFsdWVJbnB1dCkpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fdmFsdWUucHVzaCh0aGlzLnZhbHVlSW5wdXQpO1xyXG4gICAgICB0aGlzLmxhYmVsc09mVmFsdWUucHVzaCh0aGlzLmdldExhYmVsT2ZWYWx1ZSh0aGlzLnZhbHVlSW5wdXQpKTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgdGhpcy5jbGVhcklucHV0KCk7XHJcbiAgICAgIHRoaXMudXBkYXRlT3B0aW9uc05vdFByZXNlbnRJblZhbHVlKCk7XHJcbiAgICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhcklucHV0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZUlucHV0ID0gJyc7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVPcHRpb25zTm90UHJlc2VudEluVmFsdWUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWxsb3dSZXBlYXRzKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzVmFsdWUob3B0aW9uLmtleSkpIHtcclxuICAgICAgICAgIG9wdGlvbnNOb3RQcmVzZW50SW5WYWx1ZS5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0aW9uc05vdFByZXNlbnRJblZhbHVlID0gb3B0aW9uc05vdFByZXNlbnRJblZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmFkZFRvVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGZvciAoaXRlbSBvZiB2YWx1ZTsgdHJhY2sgaXRlbTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0tZWxlbWVudFwiXHJcbiAgICA+XHJcbiAgICA8c3BhbiBjbGFzcz1cImRhZ2EtaW5wdXRcIj57eyBsYWJlbHNPZlZhbHVlW2luZGV4XSB9fTwvc3Bhbj5cclxuICAgIEBpZiAoIWRpc2FibGVkKSB7XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImRhZ2EtcHJvcGVydHktYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwicmVtb3ZlRnJvbVZhbHVlKGluZGV4KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWljb24gZGFnYS1jbG9zZS1pY29uXCI+PC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG59XHJcbkBpZiAoIWRpc2FibGVkKSB7XHJcbiAgPGRpdiBjbGFzcz1cImRhZ2EtdmFsdWUtaXRlbS1pbnB1dFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRhZ2EtaW5wdXQgZGFnYS1yZWxhdGl2ZWx5LXBvc2l0aW9uZWRcIj5cclxuICAgICAgPGRhZ2EtYXV0b2NvbXBsZXRlXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbb3B0aW9uc109XCJhbGxvd1JlcGVhdHMgPyBvcHRpb25zIHx8IFtdIDogb3B0aW9uc05vdFByZXNlbnRJblZhbHVlIHx8IFtdXCJcclxuICAgICAgICBbKHZhbHVlKV09XCJ2YWx1ZUlucHV0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtcHJvcGVydHktYnV0dG9uXCIgKGNsaWNrKT1cImFkZFRvVmFsdWUoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLWljb24gZGFnYS1hZGQtaWNvblwiPjwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * Editor of a property of text list type within a property editor.\n * @private\n * @see Type.TextList\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class TextListEditorComponent {\n constructor() {\n this.#cdr = inject(ChangeDetectorRef);\n this._value = [];\n this.valueInput = '';\n this.allowRepeats = true;\n this.disabled = false;\n this.valueChange = new EventEmitter();\n }\n #cdr;\n set value(value) {\n if (value === this._value) {\n return;\n }\n const initialAndEmpty = value.length === 0 && this._value.length === 0;\n this._value = value;\n if (initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value() {\n return this._value;\n }\n getValueFromEvent(event) {\n return event.target.value;\n }\n hasValue(value) {\n for (const item of this._value || []) {\n if (item === value) {\n return true;\n }\n }\n return false;\n }\n removeFromValue(index) {\n if (this._value.length > index) {\n this._value.splice(index, 1);\n this.valueChange.emit(this._value);\n this.#cdr.detectChanges();\n }\n }\n editFromValue(item, index) {\n item = item.trim();\n if (this._value.length > index && item !== '') {\n this._value.splice(index, 1, item);\n this.valueChange.emit(this._value);\n this.#cdr.detectChanges();\n }\n }\n addToValue() {\n const valueInput = this.valueInput.trim();\n if (valueInput !== '' &&\n (this.allowRepeats ? true : !this.hasValue(valueInput))) {\n this._value.push(valueInput);\n this.valueChange.emit(this._value);\n this.clearInput();\n this.#cdr.detectChanges();\n }\n }\n clearInput() {\n this.valueInput = '';\n }\n onKeyUp(event) {\n if (event.key === 'Enter') {\n this.addToValue();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: TextListEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: TextListEditorComponent, isStandalone: true, selector: \"daga-text-list-editor\", inputs: { value: \"value\", valueInput: \"valueInput\", allowRepeats: \"allowRepeats\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\" }, ngImport: i0, template: \"@for (item of value; track item; let index = $index) {\\r\\n <div\\r\\n class=\\\"daga-value-item-element\\\"\\r\\n >\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item\\\"\\r\\n (focusout)=\\\"editFromValue(getValueFromEvent($event), index)\\\"\\r\\n />\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(index)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n @if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"valueInput\\\" />\\r\\n @if (valueInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: TextListEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-text-list-editor', imports: [FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@for (item of value; track item; let index = $index) {\\r\\n <div\\r\\n class=\\\"daga-value-item-element\\\"\\r\\n >\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item\\\"\\r\\n (focusout)=\\\"editFromValue(getValueFromEvent($event), index)\\\"\\r\\n />\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(index)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n @if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"valueInput\\\" />\\r\\n @if (valueInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\" }]\n }], propDecorators: { value: [{\n type: Input\n }], valueInput: [{\n type: Input\n }], allowRepeats: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1saXN0LWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci90ZXh0LWxpc3QtZWRpdG9yL3RleHQtbGlzdC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvdGV4dC1saXN0LWVkaXRvci90ZXh0LWxpc3QtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFN0M7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHVCQUF1QjtJQU5wQztRQU9FLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBZXJCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7S0FzRHREO0lBN0VDLElBQUksQ0FBNkI7SUFHakMsSUFDSSxLQUFLLENBQUMsS0FBZTtRQUN2QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0s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OzhCQU8zQyxLQUFLO3NCQURSLEtBQUs7Z0JBY0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIEVkaXRvciBvZiBhIHByb3BlcnR5IG9mIHRleHQgbGlzdCB0eXBlIHdpdGhpbiBhIHByb3BlcnR5IGVkaXRvci5cclxuICogQHByaXZhdGVcclxuICogQHNlZSBUeXBlLlRleHRMaXN0XHJcbiAqIEBzZWUgUHJvcGVydHlFZGl0b3JcclxuICogQHNlZSBWYWx1ZVNldFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYWdhLXRleHQtbGlzdC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWxpc3QtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGVdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0TGlzdEVkaXRvckNvbXBvbmVudCB7XHJcbiAgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbml0aWFsQW5kRW1wdHkgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID09PSAwO1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmIChpbml0aWFsQW5kRW1wdHkpIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgQElucHV0KCkgdmFsdWVJbnB1dCA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBhbGxvd1JlcGVhdHMgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xyXG5cclxuICBnZXRWYWx1ZUZyb21FdmVudChldmVudDogRXZlbnQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBoYXNWYWx1ZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fdmFsdWUgfHwgW10pIHtcclxuICAgICAgaWYgKGl0ZW0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZyb21WYWx1ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdmFsdWUubGVuZ3RoID4gaW5kZXgpIHtcclxuICAgICAgdGhpcy5fdmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRGcm9tVmFsdWUoaXRlbTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpdGVtID0gaXRlbS50cmltKCk7XHJcbiAgICBpZiAodGhpcy5fdmFsdWUubGVuZ3RoID4gaW5kZXggJiYgaXRlbSAhPT0gJycpIHtcclxuICAgICAgdGhpcy5fdmFsdWUuc3BsaWNlKGluZGV4LCAxLCBpdGVtKTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFRvVmFsdWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZUlucHV0ID0gdGhpcy52YWx1ZUlucHV0LnRyaW0oKTtcclxuICAgIGlmIChcclxuICAgICAgdmFsdWVJbnB1dCAhPT0gJycgJiZcclxuICAgICAgKHRoaXMuYWxsb3dSZXBlYXRzID8gdHJ1ZSA6ICF0aGlzLmhhc1ZhbHVlKHZhbHVlSW5wdXQpKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlLnB1c2godmFsdWVJbnB1dCk7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICAgIHRoaXMuY2xlYXJJbnB1dCgpO1xyXG4gICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJJbnB1dCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVJbnB1dCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmFkZFRvVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGZvciAoaXRlbSBvZiB2YWx1ZTsgdHJhY2sgaXRlbTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0tZWxlbWVudFwiXHJcbiAgICA+XHJcbiAgICA8aW5wdXRcclxuICAgICAgY2xhc3M9XCJkYWdhLWlucHV0XCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbdmFsdWVdPVwiaXRlbVwiXHJcbiAgICAgIChmb2N1c291dCk9XCJlZGl0RnJvbVZhbHVlKGdldFZhbHVlRnJvbUV2ZW50KCRldmVudCksIGluZGV4KVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIEBpZiAoIWRpc2FibGVkKSB7XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5LWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRnJvbVZhbHVlKGluZGV4KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pY29uIGRhZ2EtY2xvc2UtaWNvblwiPjwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmICghZGlzYWJsZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0taW5wdXRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtaW5wdXQgZGFnYS1yZWxhdGl2ZWx5LXBvc2l0aW9uZWRcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZUlucHV0XCIgLz5cclxuICAgICAgICBAaWYgKHZhbHVlSW5wdXQgIT09ICcnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGFnYS1jbGVhclwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcklucHV0KClcIlxyXG4gICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJkYWdhLXByb3BlcnR5LWJ1dHRvblwiIChjbGljayk9XCJhZGRUb1ZhbHVlKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pY29uIGRhZ2EtYWRkLWljb25cIj48L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@angular/common\";\n/**\n * Editor of a property of text map type within a property editor.\n * @private\n * @see Type.TextMap\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class TextMapEditorComponent {\n constructor() {\n this.#cdr = inject(ChangeDetectorRef);\n this._value = {};\n this.keyInput = '';\n this.valueInput = '';\n this.disabled = false;\n this.valueChange = new EventEmitter();\n }\n #cdr;\n set value(value) {\n if (value === this._value) {\n return;\n }\n const initialAndEmpty = Object.keys(value).length === 0 && Object.keys(this._value).length === 0;\n this._value = value;\n if (initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value() {\n return this._value;\n }\n getValueFromEvent(event) {\n return event.target.value;\n }\n removeFromValue(key) {\n delete this._value[key];\n this.#cdr.detectChanges();\n }\n editKey(oldKey, newKey) {\n newKey = newKey.trim();\n if (oldKey !== newKey && newKey !== '') {\n this._value[newKey] = this._value[oldKey];\n delete this._value[oldKey];\n this.#cdr.detectChanges();\n }\n }\n editValue(key, value) {\n value = value.trim();\n if (value !== '') {\n this._value[key] = value;\n this.#cdr.detectChanges();\n }\n }\n addToValue() {\n const keyInput = this.keyInput.trim();\n const valueInput = this.valueInput.trim();\n if (keyInput !== '' && valueInput !== '') {\n this._value[keyInput] = valueInput;\n this.valueChange.emit(this._value);\n this.clearKeyInput();\n this.clearValueInput();\n this.#cdr.detectChanges();\n }\n }\n clearKeyInput() {\n this.keyInput = '';\n }\n clearValueInput() {\n this.valueInput = '';\n }\n onKeyUp(event) {\n if (event.key === 'Enter') {\n this.addToValue();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: TextMapEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: TextMapEditorComponent, isStandalone: true, selector: \"daga-text-map-editor\", inputs: { value: \"value\", keyInput: \"keyInput\", valueInput: \"valueInput\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\" }, ngImport: i0, template: \"@for (item of value | keyvalue; track item) {\\r\\n <div class=\\\"daga-value-item-element\\\">\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item.key\\\"\\r\\n (focusout)=\\\"editKey(item.key, getValueFromEvent($event))\\\"\\r\\n />\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item.value\\\"\\r\\n (focusout)=\\\"editValue(item.key, getValueFromEvent($event))\\\"\\r\\n />\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(item.key)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n @if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"keyInput\\\" />\\r\\n @if (keyInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearKeyInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"valueInput\\\" />\\r\\n @if (valueInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearValueInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"pipe\", type: i2.KeyValuePipe, name: \"keyvalue\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: TextMapEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-text-map-editor', imports: [CommonModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@for (item of value | keyvalue; track item) {\\r\\n <div class=\\\"daga-value-item-element\\\">\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item.key\\\"\\r\\n (focusout)=\\\"editKey(item.key, getValueFromEvent($event))\\\"\\r\\n />\\r\\n <input\\r\\n class=\\\"daga-input\\\"\\r\\n type=\\\"text\\\"\\r\\n [disabled]=\\\"disabled\\\"\\r\\n [value]=\\\"item.value\\\"\\r\\n (focusout)=\\\"editValue(item.key, getValueFromEvent($event))\\\"\\r\\n />\\r\\n @if (!disabled) {\\r\\n <button\\r\\n class=\\\"daga-property-button\\\"\\r\\n (click)=\\\"removeFromValue(item.key)\\\"\\r\\n >\\r\\n <div class=\\\"daga-icon daga-close-icon\\\"></div>\\r\\n </button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n @if (!disabled) {\\r\\n <div class=\\\"daga-value-item-input\\\">\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"keyInput\\\" />\\r\\n @if (keyInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearKeyInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <div class=\\\"daga-input daga-relatively-positioned\\\">\\r\\n <input type=\\\"text\\\" (keyup)=\\\"onKeyUp($event)\\\" [(ngModel)]=\\\"valueInput\\\" />\\r\\n @if (valueInput !== '') {\\r\\n <button\\r\\n class=\\\"daga-clear\\\"\\r\\n (click)=\\\"clearValueInput()\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"addToValue()\\\">\\r\\n <div class=\\\"daga-icon daga-add-icon\\\"></div>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n\" }]\n }], propDecorators: { value: [{\n type: Input\n }], keyInput: [{\n type: Input\n }], valueInput: [{\n type: Input\n }], disabled: [{\n type: Input\n }], valueChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tYXAtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvcHJvcGVydHktZWRpdG9yL3RleHQtbWFwLWVkaXRvci90ZXh0LW1hcC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3IvdGV4dC1tYXAtZWRpdG9yL3RleHQtbWFwLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0M7Ozs7OztHQU1HO0FBT0gsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQU9FLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QixXQUFNLEdBQStCLEVBQUUsQ0FBQztRQWlCdkMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0tBcUR4RTtJQTdFQyxJQUFJLENBQTZCO0lBSWpDLElBQ0ksS0FBSyxDQUFDLEtBQWlDO1FBQ3pDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sZUFBZSxHQUNuQixNQUFNLENBQUMsSUFB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QUUsV0FBVyxDQUFDLG1CQUNuQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVEzQyxLQUFLO3NCQURSLEtBQUs7Z0JBZUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIEVkaXRvciBvZiBhIHByb3BlcnR5IG9mIHRleHQgbWFwIHR5cGUgd2l0aGluIGEgcHJvcGVydHkgZWRpdG9yLlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBAc2VlIFR5cGUuVGV4dE1hcFxyXG4gKiBAc2VlIFByb3BlcnR5RWRpdG9yXHJcbiAqIEBzZWUgVmFsdWVTZXRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGFnYS10ZXh0LW1hcC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LW1hcC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dE1hcEVkaXRvckNvbXBvbmVudCB7XHJcbiAgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0pIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5pdGlhbEFuZEVtcHR5ID1cclxuICAgICAgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCAmJiBPYmplY3Qua2V5cyh0aGlzLl92YWx1ZSkubGVuZ3RoID09PSAwO1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmIChpbml0aWFsQW5kRW1wdHkpIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgQElucHV0KCkga2V5SW5wdXQgPSAnJztcclxuICBASW5wdXQoKSB2YWx1ZUlucHV0ID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0+KCk7XHJcblxyXG4gIGdldFZhbHVlRnJvbUV2ZW50KGV2ZW50OiBFdmVudCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZyb21WYWx1ZShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZGVsZXRlIHRoaXMuX3ZhbHVlW2tleV07XHJcbiAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEtleShvbGRLZXk6IHN0cmluZywgbmV3S2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIG5ld0tleSA9IG5ld0tleS50cmltKCk7XHJcbiAgICBpZiAob2xkS2V5ICE9PSBuZXdLZXkgJiYgbmV3S2V5ICE9PSAnJykge1xyXG4gICAgICB0aGlzLl92YWx1ZVtuZXdLZXldID0gdGhpcy5fdmFsdWVbb2xkS2V5XTtcclxuICAgICAgZGVsZXRlIHRoaXMuX3ZhbHVlW29sZEtleV07XHJcbiAgICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlZGl0VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xyXG4gICAgaWYgKHZhbHVlICE9PSAnJykge1xyXG4gICAgICB0aGlzLl92YWx1ZVtrZXldID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRUb1ZhbHVlKCk6IHZvaWQge1xyXG4gICAgY29uc3Qga2V5SW5wdXQgPSB0aGlzLmtleUlucHV0LnRyaW0oKTtcclxuICAgIGNvbnN0IHZhbHVlSW5wdXQgPSB0aGlzLnZhbHVlSW5wdXQudHJpbSgpO1xyXG4gICAgaWYgKGtleUlucHV0ICE9PSAnJyAmJiB2YWx1ZUlucHV0ICE9PSAnJykge1xyXG4gICAgICB0aGlzLl92YWx1ZVtrZXlJbnB1dF0gPSB2YWx1ZUlucHV0O1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgICB0aGlzLmNsZWFyS2V5SW5wdXQoKTtcclxuICAgICAgdGhpcy5jbGVhclZhbHVlSW5wdXQoKTtcclxuICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyS2V5SW5wdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmtleUlucHV0ID0gJyc7XHJcbiAgfVxyXG5cclxuICBjbGVhclZhbHVlSW5wdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlSW5wdXQgPSAnJztcclxuICB9XHJcblxyXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5hZGRUb1ZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBmb3IgKGl0ZW0gb2YgdmFsdWUgfCBrZXl2YWx1ZTsgdHJhY2sgaXRlbSkge1xyXG4gIDxkaXYgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0tZWxlbWVudFwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZGFnYS1pbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW3ZhbHVlXT1cIml0ZW0ua2V5XCJcclxuICAgICAgKGZvY3Vzb3V0KT1cImVkaXRLZXkoaXRlbS5rZXksIGdldFZhbHVlRnJvbUV2ZW50KCRldmVudCkpXCJcclxuICAgICAgLz5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJkYWdhLWlucHV0XCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXHJcbiAgICAgICAgKGZvY3Vzb3V0KT1cImVkaXRWYWx1ZShpdGVtLmtleSwgZ2V0VmFsdWVGcm9tRXZlbnQoJGV2ZW50KSlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgQGlmICghZGlzYWJsZWQpIHtcclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJkYWdhLXByb3BlcnR5LWJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGcm9tVmFsdWUoaXRlbS5rZXkpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pY29uIGRhZ2EtY2xvc2UtaWNvblwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAoIWRpc2FibGVkKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLXZhbHVlLWl0ZW0taW5wdXRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pbnB1dCBkYWdhLXJlbGF0aXZlbHktcG9zaXRpb25lZFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwia2V5SW5wdXRcIiAvPlxyXG4gICAgICAgICAgQGlmIChrZXlJbnB1dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGFnYS1jbGVhclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyS2V5SW5wdXQoKVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pbnB1dCBkYWdhLXJlbGF0aXZlbHktcG9zaXRpb25lZFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwidmFsdWVJbnB1dFwiIC8+XHJcbiAgICAgICAgICBAaWYgKHZhbHVlSW5wdXQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImRhZ2EtY2xlYXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclZhbHVlSW5wdXQoKVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGFnYS1wcm9wZXJ0eS1idXR0b25cIiAoY2xpY2spPVwiYWRkVG9WYWx1ZSgpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1pY29uIGRhZ2EtYWRkLWljb25cIj48L2Rpdj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DiagramActions, Type, equals } from '@metadev/daga';\nimport { CanvasProviderService } from '../../services/canvas-provider.service';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport { OptionListEditorComponent } from '../option-list-editor/option-list-editor.component';\nimport { getStyleClassName } from '../property-editor.component';\nimport { TextListEditorComponent } from '../text-list-editor/text-list-editor.component';\nimport { TextMapEditorComponent } from '../text-map-editor/text-map-editor.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * Editor of a value set within a property editor.\n * @private\n * @see PropertyEditor\n * @see ValueSet\n */\nexport class ObjectEditorComponent {\n constructor() {\n this.#cdr = inject(ChangeDetectorRef);\n this.#canvasProvider = inject(CanvasProviderService);\n /** How many object-editor elements are parents of this object-editor element. @private */\n this.depth = 0;\n // Attributes for the template\n this.Type = Type;\n this.getStyleClassName = getStyleClassName;\n }\n #cdr;\n #canvasProvider;\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n get userCanEdit() {\n return (this.canvas.canUserPerformAction(DiagramActions.UpdateValues) &&\n this.valueSet?.rootElement?.['removed'] !== true);\n }\n get valueSet() {\n return this._valueSet;\n }\n set valueSet(valueSet) {\n if (this._valueSet !== valueSet) {\n this._valueSet = valueSet;\n // force value change detection\n this.#cdr.detectChanges();\n }\n }\n setValue(property, value) {\n if (this.valueSet === undefined) {\n return;\n }\n if (property.editable !== false) {\n if (!equals(this.valueSet.getValue(property.name), value)) {\n this.valueSet.setValue(property.name, value);\n this.canvas.propertyEditorChanges$?.next();\n }\n }\n }\n dateToLocalDatetimeString(date) {\n if (typeof date === 'string') {\n return date;\n }\n if (date === null || date === undefined || isNaN(date.valueOf())) {\n return '';\n }\n const offsetDate = new Date(date);\n const timezoneOffset = offsetDate.getTimezoneOffset();\n offsetDate.setMinutes(offsetDate.getMinutes() - timezoneOffset);\n return offsetDate.toISOString().substring(0, 19); // for user friendliness, we trim off the milliseconds\n }\n localDatetimeStringToDate(string) {\n // with no timezone specified, the local time is assumed\n return new Date(string);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: ObjectEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: ObjectEditorComponent, isStandalone: true, selector: \"daga-object-editor\", inputs: { valueSet: \"valueSet\", depth: \"depth\" }, ngImport: i0, template: \"@for (property of valueSet?.displayedProperties || []; track property) {\\r\\n <div\\r\\n class=\\\"daga-property\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <p class=\\\"daga-property-name\\\">\\r\\n {{ property.label || property.name }}\\r\\n </p>\\r\\n @if (property.type === Type.Text) {\\r\\n <input\\r\\n type=\\\"daga-text\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.TextArea) {\\r\\n <textarea\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n ></textarea>\\r\\n }\\r\\n @if (property.type === Type.Number) {\\r\\n <input\\r\\n type=\\\"number\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Color) {\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n pattern=\\\"#[0-9a-fA-F]{6}\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Datetime) {\\r\\n <input\\r\\n type=\\\"datetime-local\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"dateToLocalDatetimeString(valueSet?.getValue(property.name))\\\"\\r\\n (ngModelChange)=\\\"setValue(property, localDatetimeStringToDate($event))\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Date) {\\r\\n <input\\r\\n type=\\\"date\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Time) {\\r\\n <input\\r\\n type=\\\"time\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Url) {\\r\\n <input\\r\\n type=\\\"url\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Boolean) {\\r\\n <div class=\\\"daga-radio\\\">\\r\\n <label\\r\\n class=\\\"daga-radio-item daga-radio-start\\\"\\r\\n [class]=\\\"\\r\\n valueSet?.getValue(property.name) === false ? 'daga-checked' : ''\\r\\n \\\"\\r\\n >\\r\\n <input\\r\\n type=\\\"radio\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [name]=\\\"property.name\\\"\\r\\n value=\\\"false\\\"\\r\\n (change)=\\\"setValue(property, false)\\\"\\r\\n />\\r\\n No\\r\\n </label>\\r\\n <label\\r\\n class=\\\"daga-radio-item daga-radio-end\\\"\\r\\n [class]=\\\"\\r\\n valueSet?.getValue(property.name) === true ? 'daga-checked' : ''\\r\\n \\\"\\r\\n >\\r\\n <input\\r\\n type=\\\"radio\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [name]=\\\"property.name\\\"\\r\\n value=\\\"true\\\"\\r\\n (change)=\\\"setValue(property, true)\\\"\\r\\n />\\r\\n Yes\\r\\n </label>\\r\\n </div>\\r\\n }\\r\\n @if (property.type === Type.Option) {\\r\\n <div class=\\\"daga-relatively-positioned\\\">\\r\\n <daga-autocomplete\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [options]=\\\"property.options || []\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n </div>\\r\\n }\\r\\n @if (\\r\\n property.type === Type.OptionList || property.type === Type.OptionSet\\r\\n ) {\\r\\n <daga-option-list-editor\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [allowRepeats]=\\\"property.type === Type.OptionList\\\"\\r\\n [options]=\\\"property.options || []\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-option-list-editor>\\r\\n }\\r\\n @if (property.type === Type.TextList || property.type === Type.TextSet) {\\r\\n <daga-text-list-editor\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [allowRepeats]=\\\"property.type === Type.TextList\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-text-list-editor>\\r\\n }\\r\\n @if (property.type === Type.TextMap) {\\r\\n <daga-text-map-editor\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-text-map-editor>\\r\\n }\\r\\n @if (property.type === Type.Object) {\\r\\n <div class=\\\"daga-left-bar\\\">\\r\\n <daga-object-editor\\r\\n [valueSet]=\\\"valueSet?.getSubValueSet(property.name)\\\"\\r\\n [depth]=\\\"depth + 1\\\"\\r\\n ></daga-object-editor>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n}\\r\\n\", dependencies: [{ kind: \"component\", type: ObjectEditorComponent, selector: \"daga-object-editor\", inputs: [\"valueSet\", \"depth\"] }, { kind: \"component\", type: AutocompleteComponent, selector: \"daga-autocomplete\", inputs: [\"value\", \"valueInput\", \"options\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NumberValueAccessor, selector: \"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.PatternValidator, selector: \"[pattern][formControlName],[pattern][formControl],[pattern][ngModel]\", inputs: [\"pattern\"] }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: OptionListEditorComponent, selector: \"daga-option-list-editor\", inputs: [\"value\", \"options\", \"valueInput\", \"allowRepeats\", \"optionsNotPresentInValue\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: TextListEditorComponent, selector: \"daga-text-list-editor\", inputs: [\"value\", \"valueInput\", \"allowRepeats\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: TextMapEditorComponent, selector: \"daga-text-map-editor\", inputs: [\"value\", \"keyInput\", \"valueInput\", \"disabled\"], outputs: [\"valueChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: ObjectEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-object-editor', imports: [\n AutocompleteComponent,\n FormsModule,\n OptionListEditorComponent,\n TextListEditorComponent,\n TextMapEditorComponent\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@for (property of valueSet?.displayedProperties || []; track property) {\\r\\n <div\\r\\n class=\\\"daga-property\\\"\\r\\n [class]=\\\"getStyleClassName(property.name) + ' daga-depth-' + depth\\\"\\r\\n >\\r\\n <p class=\\\"daga-property-name\\\">\\r\\n {{ property.label || property.name }}\\r\\n </p>\\r\\n @if (property.type === Type.Text) {\\r\\n <input\\r\\n type=\\\"daga-text\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.TextArea) {\\r\\n <textarea\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n ></textarea>\\r\\n }\\r\\n @if (property.type === Type.Number) {\\r\\n <input\\r\\n type=\\\"number\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Color) {\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n pattern=\\\"#[0-9a-fA-F]{6}\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Datetime) {\\r\\n <input\\r\\n type=\\\"datetime-local\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"dateToLocalDatetimeString(valueSet?.getValue(property.name))\\\"\\r\\n (ngModelChange)=\\\"setValue(property, localDatetimeStringToDate($event))\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Date) {\\r\\n <input\\r\\n type=\\\"date\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Time) {\\r\\n <input\\r\\n type=\\\"time\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Url) {\\r\\n <input\\r\\n type=\\\"url\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [ngModel]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (ngModelChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n }\\r\\n @if (property.type === Type.Boolean) {\\r\\n <div class=\\\"daga-radio\\\">\\r\\n <label\\r\\n class=\\\"daga-radio-item daga-radio-start\\\"\\r\\n [class]=\\\"\\r\\n valueSet?.getValue(property.name) === false ? 'daga-checked' : ''\\r\\n \\\"\\r\\n >\\r\\n <input\\r\\n type=\\\"radio\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [name]=\\\"property.name\\\"\\r\\n value=\\\"false\\\"\\r\\n (change)=\\\"setValue(property, false)\\\"\\r\\n />\\r\\n No\\r\\n </label>\\r\\n <label\\r\\n class=\\\"daga-radio-item daga-radio-end\\\"\\r\\n [class]=\\\"\\r\\n valueSet?.getValue(property.name) === true ? 'daga-checked' : ''\\r\\n \\\"\\r\\n >\\r\\n <input\\r\\n type=\\\"radio\\\"\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [name]=\\\"property.name\\\"\\r\\n value=\\\"true\\\"\\r\\n (change)=\\\"setValue(property, true)\\\"\\r\\n />\\r\\n Yes\\r\\n </label>\\r\\n </div>\\r\\n }\\r\\n @if (property.type === Type.Option) {\\r\\n <div class=\\\"daga-relatively-positioned\\\">\\r\\n <daga-autocomplete\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [options]=\\\"property.options || []\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n />\\r\\n </div>\\r\\n }\\r\\n @if (\\r\\n property.type === Type.OptionList || property.type === Type.OptionSet\\r\\n ) {\\r\\n <daga-option-list-editor\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [allowRepeats]=\\\"property.type === Type.OptionList\\\"\\r\\n [options]=\\\"property.options || []\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-option-list-editor>\\r\\n }\\r\\n @if (property.type === Type.TextList || property.type === Type.TextSet) {\\r\\n <daga-text-list-editor\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [allowRepeats]=\\\"property.type === Type.TextList\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-text-list-editor>\\r\\n }\\r\\n @if (property.type === Type.TextMap) {\\r\\n <daga-text-map-editor\\r\\n [disabled]=\\\"property.editable === false || !userCanEdit\\\"\\r\\n [value]=\\\"valueSet?.getValue(property.name)\\\"\\r\\n (valueChange)=\\\"setValue(property, $event)\\\"\\r\\n ></daga-text-map-editor>\\r\\n }\\r\\n @if (property.type === Type.Object) {\\r\\n <div class=\\\"daga-left-bar\\\">\\r\\n <daga-object-editor\\r\\n [valueSet]=\\\"valueSet?.getSubValueSet(property.name)\\\"\\r\\n [depth]=\\\"depth + 1\\\"\\r\\n ></daga-object-editor>\\r\\n </div>\\r\\n }\\r\\n </div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { valueSet: [{\n type: Input\n }], depth: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9vYmplY3QtZWRpdG9yL29iamVjdC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYWdhLWFuZ3VsYXIvc3JjL2xpYi9wcm9wZXJ0eS1lZGl0b3Ivb2JqZWN0LWVkaXRvci9vYmplY3QtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBRUwsY0FBYyxFQUVkLElBQUksRUFFSixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDL0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7OztBQUV0Rjs7Ozs7R0FLRztBQWFILE1BQU0sT0FBTyxxQkFBcUI7SUFabEM7UUFhRSxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakMsb0JBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMs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QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3FCQUN2QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFrQjNDLFFBQVE7c0JBRFgsS0FBSztnQkFZRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBpbmplY3QsXHJcbiAgSW5wdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgQ2FudmFzLFxyXG4gIERpYWdyYW1BY3Rpb25zLFxyXG4gIFByb3BlcnR5LFxyXG4gIFR5cGUsXHJcbiAgVmFsdWVTZXQsXHJcbiAgZXF1YWxzXHJcbn0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCB7IENhbnZhc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhbnZhcy1wcm92aWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPcHRpb25MaXN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vb3B0aW9uLWxpc3QtZWRpdG9yL29wdGlvbi1saXN0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBnZXRTdHlsZUNsYXNzTmFtZSB9IGZyb20gJy4uL3Byb3BlcnR5LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0TGlzdEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3RleHQtbGlzdC1lZGl0b3IvdGV4dC1saXN0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0TWFwRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC1tYXAtZWRpdG9yL3RleHQtbWFwLWVkaXRvci5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEVkaXRvciBvZiBhIHZhbHVlIHNldCB3aXRoaW4gYSBwcm9wZXJ0eSBlZGl0b3IuXHJcbiAqIEBwcml2YXRlXHJcbiAqIEBzZWUgUHJvcGVydHlFZGl0b3JcclxuICogQHNlZSBWYWx1ZVNldFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkYWdhLW9iamVjdC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE9wdGlvbkxpc3RFZGl0b3JDb21wb25lbnQsXHJcbiAgICBUZXh0TGlzdEVkaXRvckNvbXBvbmVudCxcclxuICAgIFRleHRNYXBFZGl0b3JDb21wb25lbnRcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPYmplY3RFZGl0b3JDb21wb25lbnQge1xyXG4gICNjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICNjYW52YXNQcm92aWRlciA9IGluamVjdChDYW52YXNQcm92aWRlclNlcnZpY2UpO1xyXG5cclxuICBnZXQgY2FudmFzKCk6IENhbnZhcyB7XHJcbiAgICByZXR1cm4gdGhpcy4jY2FudmFzUHJvdmlkZXIuZ2V0Q2FudmFzKCk7XHJcbiAgfVxyXG4gIGdldCB1c2VyQ2FuRWRpdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY2FudmFzLmNhblVzZXJQZXJmb3JtQWN0aW9uKERpYWdyYW1BY3Rpb25zLlVwZGF0ZVZhbHVlcykgJiZcclxuICAgICAgdGhpcy52YWx1ZVNldD8ucm9vdEVsZW1lbnQ/LlsncmVtb3ZlZCddICE9PSB0cnVlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgX3ZhbHVlU2V0PzogVmFsdWVTZXQ7XHJcbiAgQElucHV0KClcclxuICBnZXQgdmFsdWVTZXQoKTogVmFsdWVTZXQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlU2V0O1xyXG4gIH1cclxuICBzZXQgdmFsdWVTZXQodmFsdWVTZXQ6IFZhbHVlU2V0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fdmFsdWVTZXQgIT09IHZhbHVlU2V0KSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlU2V0ID0gdmFsdWVTZXQ7XHJcbiAgICAgIC8vIGZvcmNlIHZhbHVlIGNoYW5nZSBkZXRlY3Rpb25cclxuICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqIEhvdyBtYW55IG9iamVjdC1lZGl0b3IgZWxlbWVudHMgYXJlIHBhcmVudHMgb2YgdGhpcyBvYmplY3QtZWRpdG9yIGVsZW1lbnQuIEBwcml2YXRlICovXHJcbiAgQElucHV0KCkgZGVwdGggPSAwO1xyXG5cclxuICAvLyBBdHRyaWJ1dGVzIGZvciB0aGUgdGVtcGxhdGVcclxuICBUeXBlID0gVHlwZTtcclxuICBnZXRTdHlsZUNsYXNzTmFtZSA9IGdldFN0eWxlQ2xhc3NOYW1lO1xyXG5cclxuICBzZXRWYWx1ZShwcm9wZXJ0eTogUHJvcGVydHksIHZhbHVlOiB1bmtub3duKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZVNldCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChwcm9wZXJ0eS5lZGl0YWJsZSAhPT0gZmFsc2UpIHtcclxuICAgICAgaWYgKCFlcXVhbHModGhpcy52YWx1ZVNldC5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKSwgdmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZVNldC5zZXRWYWx1ZShwcm9wZXJ0eS5uYW1lLCB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5jYW52YXMucHJvcGVydHlFZGl0b3JDaGFuZ2VzJD8ubmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkYXRlVG9Mb2NhbERhdGV0aW1lU3RyaW5nKFxyXG4gICAgZGF0ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IG51bGwgfCB1bmRlZmluZWRcclxuICApOiBzdHJpbmcge1xyXG4gICAgaWYgKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuICAgIGlmIChkYXRlID09PSBudWxsIHx8IGRhdGUgPT09IHVuZGVmaW5lZCB8fCBpc05hTihkYXRlLnZhbHVlT2YoKSkpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2Zmc2V0RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXQgPSBvZmZzZXREYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XHJcbiAgICBvZmZzZXREYXRlLnNldE1pbnV0ZXMob2Zmc2V0RGF0ZS5nZXRNaW51dGVzKCkgLSB0aW1lem9uZU9mZnNldCk7XHJcbiAgICByZXR1cm4gb2Zmc2V0RGF0ZS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAxOSk7IC8vIGZvciB1c2VyIGZyaWVuZGxpbmVzcywgd2UgdHJpbSBvZmYgdGhlIG1pbGxpc2Vjb25kc1xyXG4gIH1cclxuXHJcbiAgbG9jYWxEYXRldGltZVN0cmluZ1RvRGF0ZShzdHJpbmc6IHN0cmluZyk6IERhdGUge1xyXG4gICAgLy8gd2l0aCBubyB0aW1lem9uZSBzcGVjaWZpZWQsIHRoZSBsb2NhbCB0aW1lIGlzIGFzc3VtZWRcclxuICAgIHJldHVybiBuZXcgRGF0ZShzdHJpbmcpO1xyXG4gIH1cclxufVxyXG4iLCJAZm9yIChwcm9wZXJ0eSBvZiB2YWx1ZVNldD8uZGlzcGxheWVkUHJvcGVydGllcyB8fCBbXTsgdHJhY2sgcHJvcGVydHkpIHtcclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImRhZ2EtcHJvcGVydHlcIlxyXG4gICAgW2NsYXNzXT1cImdldFN0eWxlQ2xhc3NOYW1lKHByb3BlcnR5Lm5hbWUpICsgJyBkYWdhLWRlcHRoLScgKyBkZXB0aFwiXHJcbiAgPlxyXG4gICAgPHAgY2xhc3M9XCJkYWdhLXByb3BlcnR5LW5hbWVcIj5cclxuICAgICAge3sgcHJvcGVydHkubGFiZWwgfHwgcHJvcGVydHkubmFtZSB9fVxyXG4gICAgPC9wPlxyXG4gICAgQGlmIChwcm9wZXJ0eS50eXBlID09PSBUeXBlLlRleHQpIHtcclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cImRhZ2EtdGV4dFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cInByb3BlcnR5LmVkaXRhYmxlID09PSBmYWxzZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICAvPlxyXG4gICAgfVxyXG4gICAgQGlmIChwcm9wZXJ0eS50eXBlID09PSBUeXBlLlRleHRBcmVhKSB7XHJcbiAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wZXJ0eS5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVNldD8uZ2V0VmFsdWUocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCAkZXZlbnQpXCJcclxuICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICB9XHJcbiAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wZXJ0eS5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVNldD8uZ2V0VmFsdWUocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCAkZXZlbnQpXCJcclxuICAgICAgLz5cclxuICAgIH1cclxuICAgIEBpZiAocHJvcGVydHkudHlwZSA9PT0gVHlwZS5Db2xvcikge1xyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgcGF0dGVybj1cIiNbMC05YS1mQS1GXXs2fVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cInByb3BlcnR5LmVkaXRhYmxlID09PSBmYWxzZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICAvPlxyXG4gICAgfVxyXG4gICAgQGlmIChwcm9wZXJ0eS50eXBlID09PSBUeXBlLkRhdGV0aW1lKSB7XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cInByb3BlcnR5LmVkaXRhYmxlID09PSBmYWxzZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cImRhdGVUb0xvY2FsRGF0ZXRpbWVTdHJpbmcodmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpKVwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksIGxvY2FsRGF0ZXRpbWVTdHJpbmdUb0RhdGUoJGV2ZW50KSlcIlxyXG4gICAgICAvPlxyXG4gICAgfVxyXG4gICAgQGlmIChwcm9wZXJ0eS50eXBlID09PSBUeXBlLkRhdGUpIHtcclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wZXJ0eS5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVNldD8uZ2V0VmFsdWUocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCAkZXZlbnQpXCJcclxuICAgICAgLz5cclxuICAgIH1cclxuICAgIEBpZiAocHJvcGVydHkudHlwZSA9PT0gVHlwZS5UaW1lKSB7XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0aW1lXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwicHJvcGVydHkuZWRpdGFibGUgPT09IGZhbHNlIHx8ICF1c2VyQ2FuRWRpdFwiXHJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRWYWx1ZShwcm9wZXJ0eSwgJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcbiAgICB9XHJcbiAgICBAaWYgKHByb3BlcnR5LnR5cGUgPT09IFR5cGUuVXJsKSB7XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ1cmxcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wZXJ0eS5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVNldD8uZ2V0VmFsdWUocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCAkZXZlbnQpXCJcclxuICAgICAgLz5cclxuICAgIH1cclxuICAgIEBpZiAocHJvcGVydHkudHlwZSA9PT0gVHlwZS5Cb29sZWFuKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYWdhLXJhZGlvXCI+XHJcbiAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICBjbGFzcz1cImRhZ2EtcmFkaW8taXRlbSBkYWdhLXJhZGlvLXN0YXJ0XCJcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgdmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpID09PSBmYWxzZSA/ICdkYWdhLWNoZWNrZWQnIDogJydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wZXJ0eS5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICAgICAgW25hbWVdPVwicHJvcGVydHkubmFtZVwiXHJcbiAgICAgICAgICAgIHZhbHVlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlKHByb3BlcnR5LCBmYWxzZSlcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIE5vXHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8bGFiZWxcclxuICAgICAgICAgIGNsYXNzPVwiZGFnYS1yYWRpby1pdGVtIGRhZ2EtcmFkaW8tZW5kXCJcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgdmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpID09PSB0cnVlID8gJ2RhZ2EtY2hlY2tlZCcgOiAnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BlcnR5LmVkaXRhYmxlID09PSBmYWxzZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgICAgICBbbmFtZV09XCJwcm9wZXJ0eS5uYW1lXCJcclxuICAgICAgICAgICAgdmFsdWU9XCJ0cnVlXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZShwcm9wZXJ0eSwgdHJ1ZSlcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIFllc1xyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChwcm9wZXJ0eS50eXBlID09PSBUeXBlLk9wdGlvbikge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGFnYS1yZWxhdGl2ZWx5LXBvc2l0aW9uZWRcIj5cclxuICAgICAgICA8ZGFnYS1hdXRvY29tcGxldGVcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wZXJ0eS5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cInByb3BlcnR5Lm9wdGlvbnMgfHwgW11cIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2V0Py5nZXRWYWx1ZShwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChcclxuICAgICAgcHJvcGVydHkudHlwZSA9PT0gVHlwZS5PcHRpb25MaXN0IHx8IHByb3BlcnR5LnR5cGUgPT09IFR5cGUuT3B0aW9uU2V0XHJcbiAgICApIHtcclxuICAgICAgPGRhZ2Etb3B0aW9uLWxpc3QtZWRpdG9yXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cInByb3BlcnR5LmVkaXRhYmxlID09PSBmYWxzZSB8fCAhdXNlckNhbkVkaXRcIlxyXG4gICAgICAgIFthbGxvd1JlcGVhdHNdPVwicHJvcGVydHkudHlwZSA9PT0gVHlwZS5PcHRpb25MaXN0XCJcclxuICAgICAgICBbb3B0aW9uc109XCJwcm9wZXJ0eS5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICBbdmFsdWVdPVwidmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpXCJcclxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICA+PC9kYWdhLW9wdGlvbi1saXN0LWVkaXRvcj5cclxuICAgIH1cclxuICAgIEBpZiAocHJvcGVydHkudHlwZSA9PT0gVHlwZS5UZXh0TGlzdCB8fCBwcm9wZXJ0eS50eXBlID09PSBUeXBlLlRleHRTZXQpIHtcclxuICAgICAgPGRhZ2EtdGV4dC1saXN0LWVkaXRvclxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wZXJ0eS5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICBbYWxsb3dSZXBlYXRzXT1cInByb3BlcnR5LnR5cGUgPT09IFR5cGUuVGV4dExpc3RcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNldD8uZ2V0VmFsdWUocHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRWYWx1ZShwcm9wZXJ0eSwgJGV2ZW50KVwiXHJcbiAgICAgID48L2RhZ2EtdGV4dC1saXN0LWVkaXRvcj5cclxuICAgIH1cclxuICAgIEBpZiAocHJvcGVydHkudHlwZSA9PT0gVHlwZS5UZXh0TWFwKSB7XHJcbiAgICAgIDxkYWdhLXRleHQtbWFwLWVkaXRvclxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wZXJ0eS5lZGl0YWJsZSA9PT0gZmFsc2UgfHwgIXVzZXJDYW5FZGl0XCJcclxuICAgICAgICBbdmFsdWVdPVwidmFsdWVTZXQ/LmdldFZhbHVlKHByb3BlcnR5Lm5hbWUpXCJcclxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0VmFsdWUocHJvcGVydHksICRldmVudClcIlxyXG4gICAgICA+PC9kYWdhLXRleHQtbWFwLWVkaXRvcj5cclxuICAgIH1cclxuICAgIEBpZiAocHJvcGVydHkudHlwZSA9PT0gVHlwZS5PYmplY3QpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImRhZ2EtbGVmdC1iYXJcIj5cclxuICAgICAgICA8ZGFnYS1vYmplY3QtZWRpdG9yXHJcbiAgICAgICAgICBbdmFsdWVTZXRdPVwidmFsdWVTZXQ/LmdldFN1YlZhbHVlU2V0KHByb3BlcnR5Lm5hbWUpXCJcclxuICAgICAgICAgIFtkZXB0aF09XCJkZXB0aCArIDFcIlxyXG4gICAgICAgID48L2RhZ2Etb2JqZWN0LWVkaXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { Corner, Side } from '@metadev/daga';\nimport * as d3 from 'd3';\nimport { CollapseButtonComponent } from '../collapse-button/collapse-button.component';\nimport { DagaConfigurationService } from '../services/daga-configuration.service';\nimport { ObjectEditorComponent } from './object-editor/object-editor.component';\nimport { PropertySettingsComponent } from './property-settings/property-settings.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Duration of the highlight property animation in milliseconds.\n */\nconst HIGHLIGHT_ANIMATION_DURATION_MS = 1000;\n/**\n * Editor of the values of a value set.\n * @private\n * @see ValueSet\n */\nexport class PropertyEditorComponent {\n #cdr = inject(ChangeDetectorRef);\n #configService = inject(DagaConfigurationService);\n get valueSet() {\n return this._valueSet;\n }\n set valueSet(valueSet) {\n if (this._valueSet !== valueSet) {\n this._valueSet = valueSet;\n this.settings = undefined;\n // force value change detection\n this.#cdr.detectChanges();\n }\n }\n ngOnInit() {\n this.sub = this.#configService.config$.subscribe((c) => {\n this.init(c);\n });\n }\n ngAfterViewInit() {\n this.setPanelWidth();\n }\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n init(config) {\n this.location =\n config.components?.propertyEditor?.location || Corner.TopRight;\n this.direction =\n config.components?.propertyEditor?.direction || Side.Bottom;\n this.width = config.components?.propertyEditor?.width || '24rem';\n this.height = config.components?.propertyEditor?.height;\n this.title = undefined;\n this.valueSet = undefined;\n this.setPanelWidth();\n }\n setPanelWidth() {\n if (this.panel !== undefined) {\n switch (this.direction) {\n case Side.Bottom:\n case Side.Top:\n this.selectPanel().style('width', this.width);\n if (this.height) {\n this.selectPanel()\n .select('.daga-panel-content')\n .style('height', this.height);\n }\n break;\n case Side.Left:\n case Side.Right:\n this.selectPanel().style('height', this.width);\n if (this.height) {\n this.selectPanel()\n .select('.daga-panel-content')\n .style('width', this.height);\n }\n break;\n }\n }\n }\n selectPanel() {\n return d3.select(this.panel.nativeElement);\n }\n highlightProperty(...propertyNames) {\n let selector = '';\n let depth = 0;\n for (const propertyName of propertyNames) {\n selector += ` .daga-property.${getStyleClassName(propertyName)}.daga-depth-${depth}`;\n ++depth;\n }\n if (this.valueSet) {\n d3.select(this.panel.nativeElement)\n .select(selector)\n .transition()\n .duration(HIGHLIGHT_ANIMATION_DURATION_MS)\n .ease(d3.easeLinear)\n .styleTween('background-color', () => {\n const interpolator = d3.interpolate('rgba(255, 0, 0, 0)', 'rgba(255, 0, 0, 0.4)');\n return (t) => interpolator(t > 0.5 ? 1 - t : t);\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PropertyEditorComponent, isStandalone: true, selector: \"daga-property-editor\", inputs: { valueSet: \"valueSet\" }, viewQueries: [{ propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], ngImport: i0, template: \"<div\\r\\n #panel\\r\\n class=\\\"daga-panel daga-bottom daga-{{ location }} daga-{{ direction }}\\\"\\r\\n>\\r\\n <daga-collapse-button\\r\\n #collapse\\r\\n [disabled]=\\\"\\r\\n !valueSet ||\\r\\n !valueSet.propertySet ||\\r\\n !valueSet.propertySet.hasProperties()\\r\\n \\\"\\r\\n [direction]=\\\"direction\\\"\\r\\n [collapsableSelector]=\\\"panel\\\"\\r\\n collapsableAdditionalSelector=\\\".daga-panel-content\\\"\\r\\n rule=\\\"display\\\"\\r\\n collapsedValue=\\\"none\\\"\\r\\n visibleValue=\\\"block\\\"\\r\\n />\\r\\n <div class=\\\"daga-panel-content\\\">\\r\\n @if (\\r\\n valueSet &&\\r\\n valueSet.propertySet &&\\r\\n valueSet.propertySet.hasProperties() &&\\r\\n !collapse.collapsed\\r\\n ) {\\r\\n @if (title) {\\r\\n <p class=\\\"daga-title\\\">\\r\\n {{ title }}\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"settings = !settings\\\">\\r\\n <div\\r\\n class=\\\"daga-icon daga-settings-icon\\\"\\r\\n [class]=\\\"\\r\\n settings === undefined\\r\\n ? ''\\r\\n : settings\\r\\n ? 'daga-unrotate'\\r\\n : 'daga-rotate'\\r\\n \\\"\\r\\n ></div>\\r\\n </button>\\r\\n </p>\\r\\n }\\r\\n @if (!settings) {\\r\\n <daga-object-editor [valueSet]=\\\"valueSet\\\" />\\r\\n }\\r\\n @if (settings) {\\r\\n <daga-property-settings [valueSet]=\\\"valueSet\\\" />\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n\", dependencies: [{ kind: \"component\", type: CollapseButtonComponent, selector: \"daga-collapse-button\", inputs: [\"collapsableSelector\", \"collapsableAdditionalSelector\", \"collapsed\", \"disabled\", \"direction\", \"rule\", \"collapsedValue\", \"visibleValue\"] }, { kind: \"component\", type: ObjectEditorComponent, selector: \"daga-object-editor\", inputs: [\"valueSet\", \"depth\"] }, { kind: \"component\", type: PropertySettingsComponent, selector: \"daga-property-settings\", inputs: [\"valueSet\", \"depth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'daga-property-editor', imports: [\n CollapseButtonComponent,\n ObjectEditorComponent,\n PropertySettingsComponent\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\r\\n #panel\\r\\n class=\\\"daga-panel daga-bottom daga-{{ location }} daga-{{ direction }}\\\"\\r\\n>\\r\\n <daga-collapse-button\\r\\n #collapse\\r\\n [disabled]=\\\"\\r\\n !valueSet ||\\r\\n !valueSet.propertySet ||\\r\\n !valueSet.propertySet.hasProperties()\\r\\n \\\"\\r\\n [direction]=\\\"direction\\\"\\r\\n [collapsableSelector]=\\\"panel\\\"\\r\\n collapsableAdditionalSelector=\\\".daga-panel-content\\\"\\r\\n rule=\\\"display\\\"\\r\\n collapsedValue=\\\"none\\\"\\r\\n visibleValue=\\\"block\\\"\\r\\n />\\r\\n <div class=\\\"daga-panel-content\\\">\\r\\n @if (\\r\\n valueSet &&\\r\\n valueSet.propertySet &&\\r\\n valueSet.propertySet.hasProperties() &&\\r\\n !collapse.collapsed\\r\\n ) {\\r\\n @if (title) {\\r\\n <p class=\\\"daga-title\\\">\\r\\n {{ title }}\\r\\n <button class=\\\"daga-property-button\\\" (click)=\\\"settings = !settings\\\">\\r\\n <div\\r\\n class=\\\"daga-icon daga-settings-icon\\\"\\r\\n [class]=\\\"\\r\\n settings === undefined\\r\\n ? ''\\r\\n : settings\\r\\n ? 'daga-unrotate'\\r\\n : 'daga-rotate'\\r\\n \\\"\\r\\n ></div>\\r\\n </button>\\r\\n </p>\\r\\n }\\r\\n @if (!settings) {\\r\\n <daga-object-editor [valueSet]=\\\"valueSet\\\" />\\r\\n }\\r\\n @if (settings) {\\r\\n <daga-property-settings [valueSet]=\\\"valueSet\\\" />\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { panel: [{\n type: ViewChild,\n args: ['panel']\n }], valueSet: [{\n type: Input\n }] } });\nexport const getStyleClassName = (s) => {\n return 'daga-property-name-' + s.replace(/\\s/g, '');\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGFnYS1hbmd1bGFyL3NyYy9saWIvcHJvcGVydHktZWRpdG9yL3Byb3BlcnR5LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9wcm9wZXJ0eS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsTUFBTSxFQUdOLElBQUksRUFFTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFFNUY7O0dBRUc7QUFDSCxNQUFNLCtCQUErQixHQUFHLElBQUksQ0FBQztBQUU3Qzs7OztHQUlHO0FBV0gsTUFBTSxPQUFPLHVCQUF1QjtJQUdsQyxJQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakMsY0FBYyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBV2xELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENB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QUFnR1IsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFTLEVBQVUsRUFBRTtJQUNyRCxPQUFPLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb3JuZXIsXHJcbiAgRGlhZ3JhbUNvbmZpZyxcclxuICBQcm9wZXJ0eUVkaXRvcixcclxuICBTaWRlLFxyXG4gIFZhbHVlU2V0XHJcbn0gZnJvbSAnQG1ldGFkZXYvZGFnYSc7XHJcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbGxhcHNlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sbGFwc2UtYnV0dG9uL2NvbGxhcHNlLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYWdhLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE9iamVjdEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vb2JqZWN0LWVkaXRvci9vYmplY3QtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFByb3BlcnR5U2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LXNldHRpbmdzL3Byb3BlcnR5LXNldHRpbmdzLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogRHVyYXRpb24gb2YgdGhlIGhpZ2hsaWdodCBwcm9wZXJ0eSBhbmltYXRpb24gaW4gbWlsbGlzZWNvbmRzLlxyXG4gKi9cclxuY29uc3QgSElHSExJR0hUX0FOSU1BVElPTl9EVVJBVElPTl9NUyA9IDEwMDA7XHJcblxyXG4vKipcclxuICogRWRpdG9yIG9mIHRoZSB2YWx1ZXMgb2YgYSB2YWx1ZSBzZXQuXHJcbiAqIEBwcml2YXRlXHJcbiAqIEBzZWUgVmFsdWVTZXRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGFnYS1wcm9wZXJ0eS1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbGxhcHNlQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgT2JqZWN0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgUHJvcGVydHlTZXR0aW5nc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3BlcnR5RWRpdG9yQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBQcm9wZXJ0eUVkaXRvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gICNjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICNjb25maWdTZXJ2aWNlID0gaW5qZWN0KERhZ2FDb25maWd1cmF0aW9uU2VydmljZSk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BhbmVsJykgcGFuZWwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgbG9jYXRpb24hOiBDb3JuZXI7XHJcbiAgZGlyZWN0aW9uITogU2lkZTtcclxuICB3aWR0aCE6IHN0cmluZztcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcblxyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIF92YWx1ZVNldDogVmFsdWVTZXQgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBnZXQgdmFsdWVTZXQoKTogVmFsdWVTZXQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlU2V0O1xyXG4gIH1cclxuICBzZXQgdmFsdWVTZXQodmFsdWVTZXQ6IFZhbHVlU2V0IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fdmFsdWVTZXQgIT09IHZhbHVlU2V0KSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlU2V0ID0gdmFsdWVTZXQ7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSB1bmRlZmluZWQ7XHJcbiAgICAgIC8vIGZvcmNlIHZhbHVlIGNoYW5nZSBkZXRlY3Rpb25cclxuICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldHRpbmdzPzogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBzdWI/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWIgPSB0aGlzLiNjb25maWdTZXJ2aWNlLmNvbmZpZyQuc3Vic2NyaWJlKChjKSA9PiB7XHJcbiAgICAgIHRoaXMuaW5pdChjKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRQYW5lbFdpZHRoKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3ViPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdChjb25maWc6IERpYWdyYW1Db25maWcpOiB2b2lkIHtcclxuICAgIHRoaXMubG9jYXRpb24gPVxyXG4gICAgICBjb25maWcuY29tcG9uZW50cz8ucHJvcGVydHlFZGl0b3I/LmxvY2F0aW9uIHx8IENvcm5lci5Ub3BSaWdodDtcclxuICAgIHRoaXMuZGlyZWN0aW9uID1cclxuICAgICAgY29uZmlnLmNvbXBvbmVudHM/LnByb3BlcnR5RWRpdG9yPy5kaXJlY3Rpb24gfHwgU2lkZS5Cb3R0b207XHJcbiAgICB0aGlzLndpZHRoID0gY29uZmlnLmNvbXBvbmVudHM/LnByb3BlcnR5RWRpdG9yPy53aWR0aCB8fCAnMjRyZW0nO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBjb25maWcuY29tcG9uZW50cz8ucHJvcGVydHlFZGl0b3I/LmhlaWdodDtcclxuICAgIHRoaXMudGl0bGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnZhbHVlU2V0ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zZXRQYW5lbFdpZHRoKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYW5lbFdpZHRoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGFuZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgY2FzZSBTaWRlLkJvdHRvbTpcclxuICAgICAgICBjYXNlIFNpZGUuVG9wOlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RQYW5lbCgpLnN0eWxlKCd3aWR0aCcsIHRoaXMud2lkdGgpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UGFuZWwoKVxyXG4gICAgICAgICAgICAgIC5zZWxlY3QoJy5kYWdhLXBhbmVsLWNvbnRlbnQnKVxyXG4gICAgICAgICAgICAgIC5zdHlsZSgnaGVpZ2h0JywgdGhpcy5oZWlnaHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBTaWRlLkxlZnQ6XHJcbiAgICAgICAgY2FzZSBTaWRlLlJpZ2h0OlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RQYW5lbCgpLnN0eWxlKCdoZWlnaHQnLCB0aGlzLndpZHRoKTtcclxuICAgICAgICAgIGlmICh0aGlzLmhlaWdodCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFBhbmVsKClcclxuICAgICAgICAgICAgICAuc2VsZWN0KCcuZGFnYS1wYW5lbC1jb250ZW50JylcclxuICAgICAgICAgICAgICAuc3R5bGUoJ3dpZHRoJywgdGhpcy5oZWlnaHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFBhbmVsKCk6IGQzLlNlbGVjdGlvbjxIVE1MRGl2RWxlbWVudCwgdW5rbm93biwgbnVsbCwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gZDMuc2VsZWN0KHRoaXMucGFuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHRQcm9wZXJ0eSguLi5wcm9wZXJ0eU5hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgbGV0IHNlbGVjdG9yID0gJyc7XHJcbiAgICBsZXQgZGVwdGggPSAwO1xyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgcHJvcGVydHlOYW1lcykge1xyXG4gICAgICBzZWxlY3RvciArPSBgIC5kYWdhLXByb3BlcnR5LiR7Z2V0U3R5bGVDbGFzc05hbWUocHJvcGVydHlOYW1lKX0uZGFnYS1kZXB0aC0ke2RlcHRofWA7XHJcbiAgICAgICsrZGVwdGg7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy52YWx1ZVNldCkge1xyXG4gICAgICBkMy5zZWxlY3QodGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAgIC5zZWxlY3Qoc2VsZWN0b3IpXHJcbiAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgIC5kdXJhdGlvbihISUdITElHSFRfQU5JTUFUSU9OX0RVUkFUSU9OX01TKVxyXG4gICAgICAgIC5lYXNlKGQzLmVhc2VMaW5lYXIpXHJcbiAgICAgICAgLnN0eWxlVHdlZW4oJ2JhY2tncm91bmQtY29sb3InLCAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZShcclxuICAgICAgICAgICAgJ3JnYmEoMjU1LCAwLCAwLCAwKScsXHJcbiAgICAgICAgICAgICdyZ2JhKDI1NSwgMCwgMCwgMC40KSdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gKHQ6IG51bWJlcikgPT4gaW50ZXJwb2xhdG9yKHQgPiAwLjUgPyAxIC0gdCA6IHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldFN0eWxlQ2xhc3NOYW1lID0gKHM6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgcmV0dXJuICdkYWdhLXByb3BlcnR5LW5hbWUtJyArIHMucmVwbGFjZSgvXFxzL2csICcnKTtcclxufTtcclxuIiwiPGRpdlxyXG4gICNwYW5lbFxyXG4gIGNsYXNzPVwiZGFnYS1wYW5lbCBkYWdhLWJvdHRvbSBkYWdhLXt7IGxvY2F0aW9uIH19IGRhZ2Ete3sgZGlyZWN0aW9uIH19XCJcclxuPlxyXG4gIDxkYWdhLWNvbGxhcHNlLWJ1dHRvblxyXG4gICAgI2NvbGxhcHNlXHJcbiAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICF2YWx1ZVNldCB8fFxyXG4gICAgICAhdmFsdWVTZXQucHJvcGVydHlTZXQgfHxcclxuICAgICAgIXZhbHVlU2V0LnByb3BlcnR5U2V0Lmhhc1Byb3BlcnRpZXMoKVxyXG4gICAgXCJcclxuICAgIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCJcclxuICAgIFtjb2xsYXBzYWJsZVNlbGVjdG9yXT1cInBhbmVsXCJcclxuICAgIGNvbGxhcHNhYmxlQWRkaXRpb25hbFNlbGVjdG9yPVwiLmRhZ2EtcGFuZWwtY29udGVudFwiXHJcbiAgICBydWxlPVwiZGlzcGxheVwiXHJcbiAgICBjb2xsYXBzZWRWYWx1ZT1cIm5vbmVcIlxyXG4gICAgdmlzaWJsZVZhbHVlPVwiYmxvY2tcIlxyXG4gIC8+XHJcbiAgPGRpdiBjbGFzcz1cImRhZ2EtcGFuZWwtY29udGVudFwiPlxyXG4gICAgQGlmIChcclxuICAgICAgdmFsdWVTZXQgJiZcclxuICAgICAgdmFsdWVTZXQucHJvcGVydHlTZXQgJiZcclxuICAgICAgdmFsdWVTZXQucHJvcGVydHlTZXQuaGFzUHJvcGVydGllcygpICYmXHJcbiAgICAgICFjb2xsYXBzZS5jb2xsYXBzZWRcclxuICAgICkge1xyXG4gICAgICBAaWYgKHRpdGxlKSB7XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkYWdhLXRpdGxlXCI+XHJcbiAgICAgICAgICB7eyB0aXRsZSB9fVxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRhZ2EtcHJvcGVydHktYnV0dG9uXCIgKGNsaWNrKT1cInNldHRpbmdzID0gIXNldHRpbmdzXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhZ2EtaWNvbiBkYWdhLXNldHRpbmdzLWljb25cIlxyXG4gICAgICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgICAgIHNldHRpbmdzID09PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgICAgICAgICA6IHNldHRpbmdzXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnZGFnYS11bnJvdGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICA6ICdkYWdhLXJvdGF0ZSdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3A+XHJcbiAgICAgIH1cclxuICAgICAgQGlmICghc2V0dGluZ3MpIHtcclxuICAgICAgICA8ZGFnYS1vYmplY3QtZWRpdG9yIFt2YWx1ZVNldF09XCJ2YWx1ZVNldFwiIC8+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChzZXR0aW5ncykge1xyXG4gICAgICAgIDxkYWdhLXByb3BlcnR5LXNldHRpbmdzIFt2YWx1ZVNldF09XCJ2YWx1ZVNldFwiIC8+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { Corner, DagaExporter, DagaImporter, Side } from '@metadev/daga';\nimport { skip } from 'rxjs';\nimport { DiagramButtonsComponent } from '../diagram-buttons/diagram-buttons.component';\nimport { ErrorsComponent } from '../errors/errors.component';\nimport { PaletteComponent } from '../palette/palette.component';\nimport { PropertyEditorComponent } from '../property-editor/property-editor.component';\nimport { CanvasProviderService } from '../services/canvas-provider.service';\nimport { DagaConfigurationService } from '../services/daga-configuration.service';\nimport * as i0 from \"@angular/core\";\n/**\n * The context of a diagram. Every separate diagram must be contained within its own {@link DiagramComponent} and every {@link DiagramComponent} must contain its own {@link DiagramEditorComponent}.\n * This component defines a {@link DagaConfigurationService} and a {@link CanvasProviderService}, which is shared by all the components within and allows accessing the configuration and the canvas of this component's diagram, respectively.\n * @public\n */\nexport class DiagramComponent {\n constructor() {\n this.#configurationService = inject(DagaConfigurationService);\n this.#canvasProvider = inject(CanvasProviderService);\n this.#cdr = inject(ChangeDetectorRef);\n this.importer = new DagaImporter();\n this.exporter = new DagaExporter();\n /**\n * Output for changes to the diagram's model.\n * @public\n */\n this.modelChange = new EventEmitter();\n /**\n * Output for user events on the diagram.\n * @public\n */\n this.diagramEvent = new EventEmitter();\n this.Corner = Corner;\n this.Side = Side;\n }\n #configurationService;\n #canvasProvider;\n #cdr;\n /**\n * Getter for the configuration of this diagram.\n * @public\n */\n get config() {\n return this.#configurationService.getConfig();\n }\n /**\n * Setter for the configuration for the diagram.\n * @public\n */\n set config(config) {\n if (this.#configurationService.getConfig() !== config) {\n this.#configurationService.init(config);\n }\n }\n /**\n * Subject used to track when the diagram configuration has been updated.\n * @public\n */\n get config$() {\n return this.#configurationService.config$;\n }\n /**\n * Getter for the canvas of this diagram.\n * @public\n */\n get canvas() {\n return this.#canvasProvider.getCanvas();\n }\n /**\n * Subject used to track when the canvas has been updated.\n * @public\n */\n get canvas$() {\n return this.#canvasProvider.canvas$;\n }\n /**\n * Subject used to track when the view has been initialized after updating the canvas.\n * @public\n */\n get viewInitialized$() {\n return this.#canvasProvider.viewInitialized$;\n }\n /**\n * Serialized model for the diagram. Used for data binding to the model.\n * @public\n */\n get model() {\n return this._model;\n }\n /**\n * Serialized model for the diagram. Used for data binding to the model.\n * @public\n */\n set model(model) {\n if (this._model !== model) {\n this._model = model;\n const canvas = this.canvas;\n if (canvas) {\n this.importer.import(canvas.model, model);\n }\n }\n }\n ngOnInit() {\n this.#canvasProvider.initCanvas(this, this.config);\n this.setUpCanvas(this.canvas);\n }\n ngAfterViewInit() {\n // wait for setTimeout(0) to force browser to finish calculating the size of parent before initializing the view\n setTimeout(() => {\n this.#canvasProvider.initCanvasView(this.appendTo.nativeElement);\n // initial import of the model\n if (this.model) {\n this.importer.import(this.canvas.model, this.model);\n }\n this.canvasSub = this.#canvasProvider.canvas$\n // we skip the first one as the subscribe() underneath is\n // for when the canvas is reloaded, not initially loaded\n .pipe(skip(1))\n .subscribe((c) => {\n // reset model of the old canvas\n this.model = this.exporter.export(c.model);\n this.setUpCanvas(c);\n });\n this.configurationSub = this.#configurationService.config$\n // we skip the first one as the subscribe() underneath is\n // for when the config is reloaded, not initially loaded\n .pipe(skip(1))\n .subscribe((c) => {\n this.#canvasProvider.initCanvas(this, c);\n this.#canvasProvider.initCanvasView(this.appendTo.nativeElement);\n this.#cdr.detectChanges();\n });\n }, 0);\n }\n ngOnDestroy() {\n this.configurationSub?.unsubscribe();\n this.canvasSub?.unsubscribe();\n }\n setUpCanvas(canvas) {\n canvas.diagramEvent$.subscribe((e) => {\n this.diagramEvent.emit(e);\n });\n canvas.diagramChange$.subscribe(() => {\n const exportedModel = this.exporter.export(this.canvas.model);\n this._model = exportedModel;\n this.modelChange.emit(exportedModel);\n });\n if (this.model) {\n this.importer.import(canvas.model, this.model);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DiagramComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: DiagramComponent, isStandalone: true, selector: \"daga-diagram\", inputs: { config: \"config\", model: \"model\" }, outputs: { modelChange: \"modelChange\", diagramEvent: \"diagramEvent\" }, providers: [CanvasProviderService, DagaConfigurationService], viewQueries: [{ propertyName: \"appendTo\", first: true, predicate: [\"appendTo\"], descendants: true }, { propertyName: \"diagramButtons\", first: true, predicate: [\"diagramButtons\"], descendants: true }, { propertyName: \"palette\", first: true, predicate: [\"palette\"], descendants: true }, { propertyName: \"propertyEditor\", first: true, predicate: [\"propertyEditor\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"daga-append-to\\\" #appendTo></div>\\r\\n@if (\\r\\n config.components?.buttons !== undefined &&\\r\\n config.components?.buttons?.enabled !== false\\r\\n ) {\\r\\n <daga-diagram-buttons\\r\\n #diagramButtons\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.palette !== undefined &&\\r\\n config.components?.palette?.enabled !== false &&\\r\\n config.components?.palette?.sections &&\\r\\n (config.components?.palette?.sections?.length || 0) > 0\\r\\n ) {\\r\\n <daga-palette\\r\\n #palette\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.propertyEditor !== undefined &&\\r\\n config.components?.propertyEditor?.enabled !== false\\r\\n ) {\\r\\n <daga-property-editor\\r\\n #propertyEditor\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.errors !== undefined &&\\r\\n config.components?.errors?.enabled !== false\\r\\n ) {\\r\\n <daga-errors\\r\\n />\\r\\n}\\r\\n<ng-content />\\r\\n\", dependencies: [{ kind: \"component\", type: DiagramButtonsComponent, selector: \"daga-diagram-buttons\", inputs: [\"location\", \"direction\", \"enableAction\", \"enableFilter\", \"enableLayout\", \"enableSelection\", \"enableZoom\"] }, { kind: \"component\", type: PaletteComponent, selector: \"daga-palette\", inputs: [\"palettes\", \"currentPalette\", \"currentCategory\", \"location\", \"direction\", \"width\", \"height\", \"gap\"] }, { kind: \"component\", type: PropertyEditorComponent, selector: \"daga-property-editor\", inputs: [\"valueSet\"] }, { kind: \"component\", type: ErrorsComponent, selector: \"daga-errors\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DiagramComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, selector: 'daga-diagram', providers: [CanvasProviderService, DagaConfigurationService], imports: [\n DiagramButtonsComponent,\n PaletteComponent,\n PropertyEditorComponent,\n ErrorsComponent\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"daga-append-to\\\" #appendTo></div>\\r\\n@if (\\r\\n config.components?.buttons !== undefined &&\\r\\n config.components?.buttons?.enabled !== false\\r\\n ) {\\r\\n <daga-diagram-buttons\\r\\n #diagramButtons\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.palette !== undefined &&\\r\\n config.components?.palette?.enabled !== false &&\\r\\n config.components?.palette?.sections &&\\r\\n (config.components?.palette?.sections?.length || 0) > 0\\r\\n ) {\\r\\n <daga-palette\\r\\n #palette\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.propertyEditor !== undefined &&\\r\\n config.components?.propertyEditor?.enabled !== false\\r\\n ) {\\r\\n <daga-property-editor\\r\\n #propertyEditor\\r\\n />\\r\\n}\\r\\n@if (\\r\\n config.components?.errors !== undefined &&\\r\\n config.components?.errors?.enabled !== false\\r\\n ) {\\r\\n <daga-errors\\r\\n />\\r\\n}\\r\\n<ng-content />\\r\\n\" }]\n }], propDecorators: { appendTo: [{\n type: ViewChild,\n args: ['appendTo']\n }], diagramButtons: [{\n type: ViewChild,\n args: ['diagramButtons']\n }], palette: [{\n type: ViewChild,\n args: ['palette']\n }], propertyEditor: [{\n type: ViewChild,\n args: ['propertyEditor']\n }], config: [{\n type: Input\n }], model: [{\n type: Input\n }], modelChange: [{\n type: Output\n }], diagramEvent: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2RpYWdyYW0vZGlhZ3JhbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2RpYWdyYW0vZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUtaLElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsSUFBSSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBRWxGOzs7O0dBSUc7QUFjSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYjdCO1FBZ0JFLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pELG9CQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEQsU0FBSSxHQUFH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dGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2FudmFzLFxyXG4gIENvcm5lcixcclxuICBEYWdhRXhwb3J0ZXIsXHJcbiAgRGFnYUltcG9ydGVyLFxyXG4gIERhZ2FNb2RlbCxcclxuICBEaWFncmFtQ29uZmlnLFxyXG4gIERpYWdyYW1FZGl0b3IsXHJcbiAgRGlhZ3JhbUV2ZW50LFxyXG4gIFNpZGVcclxufSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2tpcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERpYWdyYW1CdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhZ3JhbS1idXR0b25zL2RpYWdyYW0tYnV0dG9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFcnJvcnNDb21wb25lbnQgfSBmcm9tICcuLi9lcnJvcnMvZXJyb3JzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhbGV0dGVDb21wb25lbnQgfSBmcm9tICcuLi9wYWxldHRlL3BhbGV0dGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvcGVydHlFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbnZhc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NhbnZhcy1wcm92aWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGFnYS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBjb250ZXh0IG9mIGEgZGlhZ3JhbS4gRXZlcnkgc2VwYXJhdGUgZGlhZ3JhbSBtdXN0IGJlIGNvbnRhaW5lZCB3aXRoaW4gaXRzIG93biB7QGxpbmsgRGlhZ3JhbUNvbXBvbmVudH0gYW5kIGV2ZXJ5IHtAbGluayBEaWFncmFtQ29tcG9uZW50fSBtdXN0IGNvbnRhaW4gaXRzIG93biB7QGxpbmsgRGlhZ3JhbUVkaXRvckNvbXBvbmVudH0uXHJcbiAqIFRoaXMgY29tcG9uZW50IGRlZmluZXMgYSB7QGxpbmsgRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlfSBhbmQgYSB7QGxpbmsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlfSwgd2hpY2ggaXMgc2hhcmVkIGJ5IGFsbCB0aGUgY29tcG9uZW50cyB3aXRoaW4gYW5kIGFsbG93cyBhY2Nlc3NpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBjYW52YXMgb2YgdGhpcyBjb21wb25lbnQncyBkaWFncmFtLCByZXNwZWN0aXZlbHkuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdkYWdhLWRpYWdyYW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFncmFtLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtDYW52YXNQcm92aWRlclNlcnZpY2UsIERhZ2FDb25maWd1cmF0aW9uU2VydmljZV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBQYWxldHRlQ29tcG9uZW50LFxyXG4gICAgUHJvcGVydHlFZGl0b3JDb21wb25lbnQsXHJcbiAgICBFcnJvcnNDb21wb25lbnRcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFncmFtQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBEaWFncmFtRWRpdG9yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgI2NvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0KERhZ2FDb25maWd1cmF0aW9uU2VydmljZSk7XHJcbiAgI2NhbnZhc1Byb3ZpZGVyID0gaW5qZWN0KENhbnZhc1Byb3ZpZGVyU2VydmljZSk7XHJcbiAgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2FwcGVuZFRvJykgYXBwZW5kVG8hOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdkaWFncmFtQnV0dG9ucycpIGRpYWdyYW1CdXR0b25zITogRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgncGFsZXR0ZScpIHBhbGV0dGUhOiBQYWxldHRlQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3Byb3BlcnR5RWRpdG9yJykgcHJvcGVydHlFZGl0b3IhOiBQcm9wZXJ0eUVkaXRvckNvbXBvbmVudDtcclxuXHJcbiAgcHJpdmF0ZSBpbXBvcnRlciA9IG5ldyBEYWdhSW1wb3J0ZXIoKTtcclxuICBwcml2YXRlIGV4cG9ydGVyID0gbmV3IERhZ2FFeHBvcnRlcigpO1xyXG4gIHByaXZhdGUgX21vZGVsITogRGFnYU1vZGVsO1xyXG5cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoaXMgZGlhZ3JhbS5cclxuICAgKiBAcHVibGljXHJcbiAgICovXHJcbiAgZ2V0IGNvbmZpZygpOiBEaWFncmFtQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLiNjb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWcoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0dGVyIGZvciB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGRpYWdyYW0uXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbmZpZyhjb25maWc6IERpYWdyYW1Db25maWcpIHtcclxuICAgIGlmICh0aGlzLiNjb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWcoKSAhPT0gY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuI2NvbmZpZ3VyYXRpb25TZXJ2aWNlLmluaXQoY29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB1c2VkIHRvIHRyYWNrIHdoZW4gdGhlIGRpYWdyYW0gY29uZmlndXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBnZXQgY29uZmlnJCgpOiBPYnNlcnZhYmxlPERpYWdyYW1Db25maWc+IHtcclxuICAgIHJldHVybiB0aGlzLiNjb25maWd1cmF0aW9uU2VydmljZS5jb25maWckO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXR0ZXIgZm9yIHRoZSBjYW52YXMgb2YgdGhpcyBkaWFncmFtLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBnZXQgY2FudmFzKCk6IENhbnZhcyB7XHJcbiAgICByZXR1cm4gdGhpcy4jY2FudmFzUHJvdmlkZXIuZ2V0Q2FudmFzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFN1YmplY3QgdXNlZCB0byB0cmFjayB3aGVuIHRoZSBjYW52YXMgaGFzIGJlZW4gdXBkYXRlZC5cclxuICAgKiBAcHVibGljXHJcbiAgICovXHJcbiAgZ2V0IGNhbnZhcyQoKTogT2JzZXJ2YWJsZTxDYW52YXM+IHtcclxuICAgIHJldHVybiB0aGlzLiNjYW52YXNQcm92aWRlci5jYW52YXMkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHVzZWQgdG8gdHJhY2sgd2hlbiB0aGUgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZCBhZnRlciB1cGRhdGluZyB0aGUgY2FudmFzLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBnZXQgdmlld0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPENhbnZhcz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuI2NhbnZhc1Byb3ZpZGVyLnZpZXdJbml0aWFsaXplZCQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlcmlhbGl6ZWQgbW9kZWwgZm9yIHRoZSBkaWFncmFtLiBVc2VkIGZvciBkYXRhIGJpbmRpbmcgdG8gdGhlIG1vZGVsLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBnZXQgbW9kZWwoKTogRGFnYU1vZGVsIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2VyaWFsaXplZCBtb2RlbCBmb3IgdGhlIGRpYWdyYW0uIFVzZWQgZm9yIGRhdGEgYmluZGluZyB0byB0aGUgbW9kZWwuXHJcbiAgICogQHB1YmxpY1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1vZGVsKG1vZGVsOiBEYWdhTW9kZWwpIHtcclxuICAgIGlmICh0aGlzLl9tb2RlbCAhPT0gbW9kZWwpIHtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcclxuICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5jYW52YXM7XHJcbiAgICAgIGlmIChjYW52YXMpIHtcclxuICAgICAgICB0aGlzLmltcG9ydGVyLmltcG9ydChjYW52YXMubW9kZWwsIG1vZGVsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBPdXRwdXQgZm9yIGNoYW5nZXMgdG8gdGhlIGRpYWdyYW0ncyBtb2RlbC5cclxuICAgKiBAcHVibGljXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhZ2FNb2RlbD4oKTtcclxuICAvKipcclxuICAgKiBPdXRwdXQgZm9yIHVzZXIgZXZlbnRzIG9uIHRoZSBkaWFncmFtLlxyXG4gICAqIEBwdWJsaWNcclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBkaWFncmFtRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPERpYWdyYW1FdmVudD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU3ViPzogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgY2FudmFzU3ViPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBDb3JuZXIgPSBDb3JuZXI7XHJcbiAgU2lkZSA9IFNpZGU7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy4jY2FudmFzUHJvdmlkZXIuaW5pdENhbnZhcyh0aGlzLCB0aGlzLmNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5zZXRVcENhbnZhcyh0aGlzLmNhbnZhcyk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyB3YWl0IGZvciBzZXRUaW1lb3V0KDApIHRvIGZvcmNlIGJyb3dzZXIgdG8gZmluaXNoIGNhbGN1bGF0aW5nIHRoZSBzaXplIG9mIHBhcmVudCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRoZSB2aWV3XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy4jY2FudmFzUHJvdmlkZXIuaW5pdENhbnZhc1ZpZXcodGhpcy5hcHBlbmRUby5uYXRpdmVFbGVtZW50KTtcclxuXHJcbiAgICAgIC8vIGluaXRpYWwgaW1wb3J0IG9mIHRoZSBtb2RlbFxyXG4gICAgICBpZiAodGhpcy5tb2RlbCkge1xyXG4gICAgICAgIHRoaXMuaW1wb3J0ZXIuaW1wb3J0KHRoaXMuY2FudmFzLm1vZGVsLCB0aGlzLm1vZGVsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jYW52YXNTdWIgPSB0aGlzLiNjYW52YXNQcm92aWRlci5jYW52YXMkXHJcbiAgICAgICAgLy8gd2Ugc2tpcCB0aGUgZmlyc3Qgb25lIGFzIHRoZSBzdWJzY3JpYmUoKSB1bmRlcm5lYXRoIGlzXHJcbiAgICAgICAgLy8gZm9yIHdoZW4gdGhlIGNhbnZhcyBpcyByZWxvYWRlZCwgbm90IGluaXRpYWxseSBsb2FkZWRcclxuICAgICAgICAucGlwZShza2lwKDEpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGMpID0+IHtcclxuICAgICAgICAgIC8vIHJlc2V0IG1vZGVsIG9mIHRoZSBvbGQgY2FudmFzXHJcbiAgICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5leHBvcnRlci5leHBvcnQoYy5tb2RlbCk7XHJcbiAgICAgICAgICB0aGlzLnNldFVwQ2FudmFzKGMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdWIgPSB0aGlzLiNjb25maWd1cmF0aW9uU2VydmljZS5jb25maWckXHJcbiAgICAgICAgLy8gd2Ugc2tpcCB0aGUgZmlyc3Qgb25lIGFzIHRoZSBzdWJzY3JpYmUoKSB1bmRlcm5lYXRoIGlzXHJcbiAgICAgICAgLy8gZm9yIHdoZW4gdGhlIGNvbmZpZyBpcyByZWxvYWRlZCwgbm90IGluaXRpYWxseSBsb2FkZWRcclxuICAgICAgICAucGlwZShza2lwKDEpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGMpID0+IHtcclxuICAgICAgICAgIHRoaXMuI2NhbnZhc1Byb3ZpZGVyLmluaXRDYW52YXModGhpcywgYyk7XHJcbiAgICAgICAgICB0aGlzLiNjYW52YXNQcm92aWRlci5pbml0Q2FudmFzVmlldyh0aGlzLmFwcGVuZFRvLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgdGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmNhbnZhc1N1Yj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXBDYW52YXMoY2FudmFzOiBDYW52YXMpOiB2b2lkIHtcclxuICAgIGNhbnZhcy5kaWFncmFtRXZlbnQkLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWdyYW1FdmVudC5lbWl0KGUpO1xyXG4gICAgfSk7XHJcbiAgICBjYW52YXMuZGlhZ3JhbUNoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgY29uc3QgZXhwb3J0ZWRNb2RlbCA9IHRoaXMuZXhwb3J0ZXIuZXhwb3J0KHRoaXMuY2FudmFzLm1vZGVsKTtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBleHBvcnRlZE1vZGVsO1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoZXhwb3J0ZWRNb2RlbCk7XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLm1vZGVsKSB7XHJcbiAgICAgIHRoaXMuaW1wb3J0ZXIuaW1wb3J0KGNhbnZhcy5tb2RlbCwgdGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYWdhLWFwcGVuZC10b1wiICNhcHBlbmRUbz48L2Rpdj5cclxuQGlmIChcclxuICBjb25maWcuY29tcG9uZW50cz8uYnV0dG9ucyAhPT0gdW5kZWZpbmVkICYmXHJcbiAgY29uZmlnLmNvbXBvbmVudHM/LmJ1dHRvbnM/LmVuYWJsZWQgIT09IGZhbHNlXHJcbiAgKSB7XHJcbiAgPGRhZ2EtZGlhZ3JhbS1idXR0b25zXHJcbiAgICAjZGlhZ3JhbUJ1dHRvbnNcclxuICAgIC8+XHJcbn1cclxuQGlmIChcclxuICBjb25maWcuY29tcG9uZW50cz8ucGFsZXR0ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgY29uZmlnLmNvbXBvbmVudHM/LnBhbGV0dGU/LmVuYWJsZWQgIT09IGZhbHNlICYmXHJcbiAgY29uZmlnLmNvbXBvbmVudHM/LnBhbGV0dGU/LnNlY3Rpb25zICYmXHJcbiAgKGNvbmZpZy5jb21wb25lbnRzPy5wYWxldHRlPy5zZWN0aW9ucz8ubGVuZ3RoIHx8IDApID4gMFxyXG4gICkge1xyXG4gIDxkYWdhLXBhbGV0dGVcclxuICAgICNwYWxldHRlXHJcbiAgICAvPlxyXG59XHJcbkBpZiAoXHJcbiAgY29uZmlnLmNvbXBvbmVudHM/LnByb3BlcnR5RWRpdG9yICE9PSB1bmRlZmluZWQgJiZcclxuICBjb25maWcuY29tcG9uZW50cz8ucHJvcGVydHlFZGl0b3I/LmVuYWJsZWQgIT09IGZhbHNlXHJcbiAgKSB7XHJcbiAgPGRhZ2EtcHJvcGVydHktZWRpdG9yXHJcbiAgICAjcHJvcGVydHlFZGl0b3JcclxuICAgIC8+XHJcbn1cclxuQGlmIChcclxuICBjb25maWcuY29tcG9uZW50cz8uZXJyb3JzICE9PSB1bmRlZmluZWQgJiZcclxuICBjb25maWcuY29tcG9uZW50cz8uZXJyb3JzPy5lbmFibGVkICE9PSBmYWxzZVxyXG4gICkge1xyXG4gIDxkYWdhLWVycm9yc1xyXG4gICAgLz5cclxufVxyXG48bmctY29udGVudCAvPlxyXG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CollapseButtonComponent } from './collapse-button/collapse-button.component';\nimport { DiagramButtonsComponent } from './diagram-buttons/diagram-buttons.component';\nimport { DiagramComponent } from './diagram/diagram.component';\nimport { ErrorsComponent } from './errors/errors.component';\nimport { PaletteComponent } from './palette/palette.component';\nimport { ObjectEditorComponent } from './property-editor/object-editor/object-editor.component';\nimport { PropertyEditorComponent } from './property-editor/property-editor.component';\nimport { TextListEditorComponent } from './property-editor/text-list-editor/text-list-editor.component';\nimport { TextMapEditorComponent } from './property-editor/text-map-editor/text-map-editor.component';\nimport { CanvasProviderService } from './services/canvas-provider.service';\nimport { DagaConfigurationService } from './services/daga-configuration.service';\nimport * as i0 from \"@angular/core\";\nexport class DagaModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaModule, imports: [CollapseButtonComponent,\n DiagramButtonsComponent,\n DiagramComponent,\n ErrorsComponent,\n ObjectEditorComponent,\n PaletteComponent,\n TextListEditorComponent,\n TextMapEditorComponent,\n PropertyEditorComponent,\n CommonModule,\n FormsModule], exports: [DiagramComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaModule, providers: [DagaConfigurationService, CanvasProviderService], imports: [DiagramComponent,\n ObjectEditorComponent,\n TextListEditorComponent,\n TextMapEditorComponent,\n PropertyEditorComponent,\n CommonModule,\n FormsModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DagaModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [\n CollapseButtonComponent,\n DiagramButtonsComponent,\n DiagramComponent,\n ErrorsComponent,\n ObjectEditorComponent,\n PaletteComponent,\n TextListEditorComponent,\n TextMapEditorComponent,\n PropertyEditorComponent,\n CommonModule,\n FormsModule\n ],\n exports: [DiagramComponent],\n providers: [DagaConfigurationService, CanvasProviderService]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFnYS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbGliL2RhZ2EubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDaEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDeEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBb0JqRixNQUFNLE9BQU8sVUFBVTs4R0FBVixVQUFVOytHQUFWLFVBQVUsWUFmbkIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2QixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQixnQkFBZ0I7WUFDaEIsdUJBQXVCO1lBQ3ZCLHNCQUFzQjtZQUN0Qix1QkFBdUI7WUFDdkIsWUFBWTtZQUNaLFdBQVcsYUFFSCxnQkFBZ0I7K0dBR2YsVUFBVSxhQUZWLENBQUMsd0JBQXdCLEVBQUUscUJBQXFCLENBQUMsWUFYMUQsZ0JBQWdCO1lBRWhCLHFCQUFxQjtZQUVyQix1QkFBdUI7WUFDdkIsc0JBQXNCO1lBQ3RCLHVCQUF1QjtZQUN2QixZQUFZO1lBQ1osV0FBVzs7MkZBS0YsVUFBVTtrQkFsQnRCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDO2lCQUM3RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgQ29sbGFwc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbGxhcHNlLWJ1dHRvbi9jb2xsYXBzZS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpYWdyYW0tYnV0dG9ucy9kaWFncmFtLWJ1dHRvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4vZGlhZ3JhbS9kaWFncmFtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVycm9yc0NvbXBvbmVudCB9IGZyb20gJy4vZXJyb3JzL2Vycm9ycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWxldHRlQ29tcG9uZW50IH0gZnJvbSAnLi9wYWxldHRlL3BhbGV0dGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JqZWN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0eS1lZGl0b3Ivb2JqZWN0LWVkaXRvci9vYmplY3QtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFByb3BlcnR5RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRMaXN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0eS1lZGl0b3IvdGV4dC1saXN0LWVkaXRvci90ZXh0LWxpc3QtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRNYXBFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LWVkaXRvci90ZXh0LW1hcC1lZGl0b3IvdGV4dC1tYXAtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENhbnZhc1Byb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2RhZ2EtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb2xsYXBzZUJ1dHRvbkNvbXBvbmVudCxcclxuICAgIERpYWdyYW1CdXR0b25zQ29tcG9uZW50LFxyXG4gICAgRGlhZ3JhbUNvbXBvbmVudCxcclxuICAgIEVycm9yc0NvbXBvbmVudCxcclxuICAgIE9iamVjdEVkaXRvckNvbXBvbmVudCxcclxuICAgIFBhbGV0dGVDb21wb25lbnQsXHJcbiAgICBUZXh0TGlzdEVkaXRvckNvbXBvbmVudCxcclxuICAgIFRleHRNYXBFZGl0b3JDb21wb25lbnQsXHJcbiAgICBQcm9wZXJ0eUVkaXRvckNvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbRGlhZ3JhbUNvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbRGFnYUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBDYW52YXNQcm92aWRlclNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYWdhTW9kdWxlIHt9XHJcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRldi1kYWdhLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2RhZ2EtYW5ndWxhci9zcmMvbWV0YWRldi1kYWdhLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}