@metadev/daga-angular
Version:
Diagramming engine for editing models on the Web. Made by Metadev.
1 lines • 464 kB
Source Map (JSON)
{"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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Qiw0WkNwQ3BDLG9oR0ErRkE7OzJGRDNEYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUVmLHVCQUF1QixDQUFDLE1BQU07OEJBYS9DLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRy9CLFFBQVE7c0JBRFAsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixZQUFZO3NCQURYLEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBcHBseUxheW91dEFjdGlvbixcclxuICBDYW52YXMsXHJcbiAgQ29ybmVyLFxyXG4gIERpYWdyYW1BY3Rpb25zLFxyXG4gIERpYWdyYW1CdXR0b25zLFxyXG4gIERpYWdyYW1Db25maWcsXHJcbiAgZ2V0TG9jYXRpb25zT2ZOb2RlcyxcclxuICBsYXlvdXRzLFxyXG4gIFNpZGVcclxufSBmcm9tICdAbWV0YWRldi9kYWdhJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2FudmFzUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FudmFzLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYWdhQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYWdhLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQnV0dG9ucyB1c2VkIHRvIHRyaWdnZXIgZGlhZ3JhbSBmdW5jdGlvbmFsaXRpZXMgYnkgdGhlIHVzZXIuXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RhZ2EtZGlhZ3JhbS1idXR0b25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhZ3JhbS1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhZ3JhbUJ1dHRvbnNDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIERpYWdyYW1CdXR0b25zLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgI2NhbnZhc1Byb3ZpZGVyID0gaW5qZWN0KENhbnZhc1Byb3ZpZGVyU2VydmljZSk7XHJcbiAgI2NvbmZpZ1NlcnZpY2UgP