ngx-rs-ant 1.5.8 → 1.6.0

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,15 +1,20 @@
1
1
  import { ElementRef } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class CamundaBpmnEditorComponent {
4
- container?: ElementRef;
5
- config?: ElementRef;
6
- modeler: any;
7
- canvas: any;
8
- xml: any;
9
- isShowXml: boolean;
10
- initialDiagram: string;
4
+ set xml(xml: any);
5
+ get xml(): any;
6
+ private _xml;
7
+ bpmnContainer?: ElementRef;
8
+ bpmnConfig?: ElementRef;
9
+ private modeler;
10
+ private canvas;
11
+ protected isShowXml: boolean;
12
+ private initialDiagram;
13
+ ngOnInit(): void;
11
14
  ngAfterViewInit(): void;
15
+ loadXml(): void;
12
16
  showXml(): void;
17
+ saveXml(callback?: any): void;
13
18
  static ɵfac: i0.ɵɵFactoryDeclaration<CamundaBpmnEditorComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<CamundaBpmnEditorComponent, "rs-camunda-bpmn-editor", never, {}, {}, never, never, false, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<CamundaBpmnEditorComponent, "rs-camunda-bpmn-editor", never, { "xml": "xml"; }, {}, never, never, false, never>;
15
20
  }
@@ -1,4 +1,4 @@
1
- import { Component, ViewChild } from '@angular/core';
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
2
  import BpmnModeler from 'camunda-bpmn-js/lib/camunda-platform/Modeler';
3
3
  import customTranslateModule from './custom/translate';
4
4
  import customUserTaskModule from './custom/user-task';
@@ -31,11 +31,23 @@ export class CamundaBpmnEditorComponent {
31
31
  '</bpmndi:BPMNDiagram>' +
32
32
  '</bpmn:definitions>';
33
33
  }
34
+ set xml(xml) {
35
+ this._xml = xml;
36
+ this.loadXml();
37
+ }
38
+ get xml() {
39
+ return this._xml;
40
+ }
41
+ ngOnInit() {
42
+ if (!this.xml) {
43
+ this.xml = this.initialDiagram;
44
+ }
45
+ }
34
46
  ngAfterViewInit() {
35
47
  this.modeler = new BpmnModeler({
36
- container: this.container?.nativeElement,
48
+ container: this.bpmnContainer?.nativeElement,
37
49
  propertiesPanel: {
38
- parent: this.config?.nativeElement,
50
+ parent: this.bpmnConfig?.nativeElement,
39
51
  },
40
52
  keyboard: {
41
53
  bindTo: document,
@@ -53,29 +65,41 @@ export class CamundaBpmnEditorComponent {
53
65
  this.modeler._container.removeChild(logo);
54
66
  }
55
67
  this.canvas = this.modeler.get('canvas');
56
- this.modeler.importXML(this.initialDiagram).then(() => {
68
+ this.loadXml();
69
+ }
70
+ loadXml() {
71
+ this.modeler.importXML(this.xml).then(() => {
57
72
  this.canvas.zoom('fit-viewport');
58
73
  });
59
74
  }
60
75
  showXml() {
61
76
  if (!this.isShowXml) {
62
- this.modeler.saveXML({ format: true }).then((response) => {
63
- this.xml = response.xml;
77
+ this.saveXml((xml) => {
78
+ this.xml = xml;
64
79
  });
65
80
  }
66
81
  this.isShowXml = !this.isShowXml;
67
82
  }
83
+ saveXml(callback) {
84
+ this.modeler.saveXML({ format: true }).then((response) => {
85
+ if (callback) {
86
+ callback(response.xml);
87
+ }
88
+ });
89
+ }
68
90
  }
69
91
  CamundaBpmnEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CamundaBpmnEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
70
- CamundaBpmnEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CamundaBpmnEditorComponent, selector: "rs-camunda-bpmn-editor", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "config", first: true, predicate: ["config"], descendants: true }], ngImport: i0, template: "<div class=\"main\">\n <div class=\"container\" #container></div>\n <div class=\"config\" #config></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.CodeEditorComponent, selector: "rs-code-editor", inputs: ["code", "language", "readonly", "enableMinimap", "consoleMessage"], outputs: ["codeChange", "onContentReady"] }, { kind: "component", type: i3.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }] });
92
+ CamundaBpmnEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CamundaBpmnEditorComponent, selector: "rs-camunda-bpmn-editor", inputs: { xml: "xml" }, viewQueries: [{ propertyName: "bpmnContainer", first: true, predicate: ["bpmnContainer"], descendants: true }, { propertyName: "bpmnConfig", first: true, predicate: ["bpmnConfig"], descendants: true }], ngImport: i0, template: "<div class=\"main\">\n <div class=\"container\" #bpmnContainer></div>\n <div class=\"config\" #bpmnConfig></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.CodeEditorComponent, selector: "rs-code-editor", inputs: ["code", "language", "readonly", "enableMinimap", "consoleMessage"], outputs: ["codeChange", "onContentReady"] }, { kind: "component", type: i3.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }] });
71
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CamundaBpmnEditorComponent, decorators: [{
72
94
  type: Component,
73
- args: [{ selector: 'rs-camunda-bpmn-editor', template: "<div class=\"main\">\n <div class=\"container\" #container></div>\n <div class=\"config\" #config></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"] }]
74
- }], propDecorators: { container: [{
95
+ args: [{ selector: 'rs-camunda-bpmn-editor', template: "<div class=\"main\">\n <div class=\"container\" #bpmnContainer></div>\n <div class=\"config\" #bpmnConfig></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"] }]
96
+ }], propDecorators: { xml: [{
97
+ type: Input
98
+ }], bpmnContainer: [{
75
99
  type: ViewChild,
76
- args: ['container']
77
- }], config: [{
100
+ args: ['bpmnContainer']
101
+ }], bpmnConfig: [{
78
102
  type: ViewChild,
79
- args: ['config']
103
+ args: ['bpmnConfig']
80
104
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtdW5kYS1icG1uLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9jYW11bmRhLWJwbW4tZWRpdG9yL2NhbXVuZGEtYnBtbi1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvY2FtdW5kYS1icG1uLWVkaXRvci9jYW11bmRhLWJwbW4tZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sV0FBVyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZFLE9BQU8scUJBQXFCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxvQkFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLHVCQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8scUJBQXFCLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTywyQkFBMkIsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFPMUQsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQVdFLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsbUJBQWMsR0FDWix3Q0FBd0M7WUFDeEMsMEVBQTBFO1lBQzFFLDJEQUEyRDtZQUMzRCwwREFBMEQ7WUFDMUQsb0RBQW9EO1lBQ3BELCtDQUErQztZQUMvQyxxQkFBcUI7WUFDckIsbURBQW1EO1lBQ25ELHNDQUFzQztZQUN0QyxpQkFBaUI7WUFDakIseUNBQXlDO1lBQ3pDLDZEQUE2RDtZQUM3RCw0RUFBNEU7WUFDNUUsNkRBQTZEO1lBQzdELHFCQUFxQjtZQUNyQixxQkFBcUI7WUFDckIsdUJBQXVCO1lBQ3ZCLHFCQUFxQixDQUFDO0tBcUN6QjtJQW5DQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhO1lBQ3hDLGVBQWUsRUFBRTtnQkFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhO2FBQ25DO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxRQUFRO2FBQ2pCO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2pCLHFCQUFxQjtnQkFDckIsb0JBQW9CO2dCQUNwQix1QkFBdUI7Z0JBQ3ZCLHFCQUFxQjtnQkFDckIsMkJBQTJCO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDMUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUMxRCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7O3VIQTdEVSwwQkFBMEI7MkdBQTFCLDBCQUEwQix5UENidkMsK2ZBV0E7MkZERWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3Qjs4QkFLVixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0QsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBCcG1uTW9kZWxlciBmcm9tICdjYW11bmRhLWJwbW4tanMvbGliL2NhbXVuZGEtcGxhdGZvcm0vTW9kZWxlcic7XHJcbmltcG9ydCBjdXN0b21UcmFuc2xhdGVNb2R1bGUgZnJvbSAnLi9jdXN0b20vdHJhbnNsYXRlJztcclxuaW1wb3J0IGN1c3RvbVVzZXJUYXNrTW9kdWxlIGZyb20gJy4vY3VzdG9tL3VzZXItdGFzayc7XHJcbmltcG9ydCBjdXN0b21TZXJ2aWNlVGFza01vZHVsZSBmcm9tICcuL2N1c3RvbS9zZXJ2aWNlLXRhc2snO1xyXG5pbXBvcnQgY3VzdG9tSGlkZU90aGVyTW9kdWxlIGZyb20gJy4vY3VzdG9tL2hpZGUtb3RoZXInO1xyXG5pbXBvcnQgY3VzdG9tUHJvcGVydGllc1BhbmVsTW9kdWxlIGZyb20gJy4vY3VzdG9tL2NvbmZpZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JzLWNhbXVuZGEtYnBtbi1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYW11bmRhLWJwbW4tZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYW11bmRhLWJwbW4tZWRpdG9yLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENhbXVuZGFCcG1uRWRpdG9yQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXI/OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbmZpZycpIGNvbmZpZz86IEVsZW1lbnRSZWY7XHJcbiAgbW9kZWxlcjogYW55O1xyXG4gIGNhbnZhczogYW55O1xyXG4gIHhtbDogYW55O1xyXG4gIGlzU2hvd1htbCA9IGZhbHNlO1xyXG4gIGluaXRpYWxEaWFncmFtID1cclxuICAgICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz4nICtcclxuICAgICc8YnBtbjpkZWZpbml0aW9ucyB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiICcgK1xyXG4gICAgJ3htbG5zOmJwbW49XCJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L01PREVMXCIgJyArXHJcbiAgICAneG1sbnM6YnBtbmRpPVwiaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9ESVwiICcgK1xyXG4gICAgJ3htbG5zOmRjPVwiaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvRENcIiAnICtcclxuICAgICd0YXJnZXROYW1lc3BhY2U9XCJodHRwOi8vYnBtbi5pby9zY2hlbWEvYnBtblwiICcgK1xyXG4gICAgJ2lkPVwiRGVmaW5pdGlvbnNfMVwiPicgK1xyXG4gICAgJzxicG1uOnByb2Nlc3MgaWQ9XCJQcm9jZXNzXzFcIiBpc0V4ZWN1dGFibGU9XCJ0cnVlXCI+JyArXHJcbiAgICAnPGJwbW46c3RhcnRFdmVudCBpZD1cIlN0YXJ0RXZlbnRfMVwiLz4nICtcclxuICAgICc8L2JwbW46cHJvY2Vzcz4nICtcclxuICAgICc8YnBtbmRpOkJQTU5EaWFncmFtIGlkPVwiQlBNTkRpYWdyYW1fMVwiPicgK1xyXG4gICAgJzxicG1uZGk6QlBNTlBsYW5lIGlkPVwiQlBNTlBsYW5lXzFcIiBicG1uRWxlbWVudD1cIlByb2Nlc3NfMVwiPicgK1xyXG4gICAgJzxicG1uZGk6QlBNTlNoYXBlIGlkPVwiX0JQTU5TaGFwZV9TdGFydEV2ZW50XzJcIiBicG1uRWxlbWVudD1cIlN0YXJ0RXZlbnRfMVwiPicgK1xyXG4gICAgJzxkYzpCb3VuZHMgaGVpZ2h0PVwiMzYuMFwiIHdpZHRoPVwiMzYuMFwiIHg9XCIxNzMuMFwiIHk9XCIxMDIuMFwiLz4nICtcclxuICAgICc8L2JwbW5kaTpCUE1OU2hhcGU+JyArXHJcbiAgICAnPC9icG1uZGk6QlBNTlBsYW5lPicgK1xyXG4gICAgJzwvYnBtbmRpOkJQTU5EaWFncmFtPicgK1xyXG4gICAgJzwvYnBtbjpkZWZpbml0aW9ucz4nO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLm1vZGVsZXIgPSBuZXcgQnBtbk1vZGVsZXIoe1xyXG4gICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LFxyXG4gICAgICBwcm9wZXJ0aWVzUGFuZWw6IHtcclxuICAgICAgICBwYXJlbnQ6IHRoaXMuY29uZmlnPy5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB9LFxyXG4gICAgICBrZXlib2FyZDoge1xyXG4gICAgICAgIGJpbmRUbzogZG9jdW1lbnQsXHJcbiAgICAgIH0sXHJcbiAgICAgIGFkZGl0aW9uYWxNb2R1bGVzOiBbXHJcbiAgICAgICAgY3VzdG9tVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgICAgIGN1c3RvbVVzZXJUYXNrTW9kdWxlLFxyXG4gICAgICAgIGN1c3RvbVNlcnZpY2VUYXNrTW9kdWxlLFxyXG4gICAgICAgIGN1c3RvbUhpZGVPdGhlck1vZHVsZSxcclxuICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzUGFuZWxNb2R1bGVcclxuICAgICAgXVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBsb2dvID0gdGhpcy5tb2RlbGVyLl9jb250YWluZXIucXVlcnlTZWxlY3RvcignLmJqcy1wb3dlcmVkLWJ5Jyk7XHJcbiAgICBpZiAobG9nbykge1xyXG4gICAgICB0aGlzLm1vZGVsZXIuX2NvbnRhaW5lci5yZW1vdmVDaGlsZChsb2dvKVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYW52YXMgPSB0aGlzLm1vZGVsZXIuZ2V0KCdjYW52YXMnKTtcclxuICAgIHRoaXMubW9kZWxlci5pbXBvcnRYTUwodGhpcy5pbml0aWFsRGlhZ3JhbSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2FudmFzLnpvb20oJ2ZpdC12aWV3cG9ydCcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93WG1sKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzU2hvd1htbCkge1xyXG4gICAgICB0aGlzLm1vZGVsZXIuc2F2ZVhNTCh7Zm9ybWF0OiB0cnVlfSkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMueG1sID0gcmVzcG9uc2UueG1sO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNTaG93WG1sID0gIXRoaXMuaXNTaG93WG1sO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWFpblwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgI2NvbnRhaW5lcj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbmZpZ1wiICNjb25maWc+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ4bWwtdmlld2VyXCIgW25nU3R5bGVdPVwie2Rpc3BsYXk6IGlzU2hvd1htbCA/ICdmbGV4JyA6ICdub25lJ31cIj5cbiAgICA8cnMtY29kZS1lZGl0b3IgbGFuZ3VhZ2U9XCJ4bWxcIiBbY29kZV09XCJ4bWxcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtlbmFibGVNaW5pbWFwXT1cInRydWVcIj48L3JzLWNvZGUtZWRpdG9yPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICA8ZHgtYnV0dG9uIFt0eXBlXT1cImlzU2hvd1htbCA/ICdkZWZhdWx0JyA6ICdub3JtYWwnXCIgdGV4dD1cIlhNTFwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgKG9uQ2xpY2spPVwic2hvd1htbCgpXCI+PC9keC1idXR0b24+XG48L2Rpdj5cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtdW5kYS1icG1uLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9jYW11bmRhLWJwbW4tZWRpdG9yL2NhbXVuZGEtYnBtbi1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvY2FtdW5kYS1icG1uLWVkaXRvci9jYW11bmRhLWJwbW4tZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLFdBQVcsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RSxPQUFPLHFCQUFxQixNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sb0JBQW9CLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyx1QkFBdUIsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLHFCQUFxQixNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sMkJBQTJCLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBTzFELE1BQU0sT0FBTywwQkFBMEI7SUFMdkM7UUFxQlksY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUNwQix3Q0FBd0M7WUFDeEMsMEVBQTBFO1lBQzFFLDJEQUEyRDtZQUMzRCwwREFBMEQ7WUFDMUQsb0RBQW9EO1lBQ3BELCtDQUErQztZQUMvQyxxQkFBcUI7WUFDckIsbURBQW1EO1lBQ25ELHNDQUFzQztZQUN0QyxpQkFBaUI7WUFDakIseUNBQXlDO1lBQ3pDLDZEQUE2RDtZQUM3RCw0RUFBNEU7WUFDNUUsNkRBQTZEO1lBQzdELHFCQUFxQjtZQUNyQixxQkFBcUI7WUFDckIsdUJBQXVCO1lBQ3ZCLHFCQUFxQixDQUFDO0tBdUR6QjtJQXpGQyxJQUNJLEdBQUcsQ0FBQyxHQUFRO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQTRCRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYTtZQUM1QyxlQUFlLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYTthQUN2QztZQUNELFFBQVEsRUFBRTtnQkFDUixNQUFNLEVBQUUsUUFBUTthQUNqQjtZQUNELGlCQUFpQixFQUFFO2dCQUNqQixxQkFBcUI7Z0JBQ3JCLG9CQUFvQjtnQkFDcEIsdUJBQXVCO2dCQUN2QixxQkFBcUI7Z0JBQ3JCLDJCQUEyQjthQUM1QjtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUN4QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxRQUFjO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDMUQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUhBekZVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLGlTQ2J2Qyx1Z0JBV0E7MkZERWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3Qjs4QkFNOUIsR0FBRztzQkFETixLQUFLO2dCQVdzQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0QsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgQnBtbk1vZGVsZXIgZnJvbSAnY2FtdW5kYS1icG1uLWpzL2xpYi9jYW11bmRhLXBsYXRmb3JtL01vZGVsZXInO1xyXG5pbXBvcnQgY3VzdG9tVHJhbnNsYXRlTW9kdWxlIGZyb20gJy4vY3VzdG9tL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCBjdXN0b21Vc2VyVGFza01vZHVsZSBmcm9tICcuL2N1c3RvbS91c2VyLXRhc2snO1xyXG5pbXBvcnQgY3VzdG9tU2VydmljZVRhc2tNb2R1bGUgZnJvbSAnLi9jdXN0b20vc2VydmljZS10YXNrJztcclxuaW1wb3J0IGN1c3RvbUhpZGVPdGhlck1vZHVsZSBmcm9tICcuL2N1c3RvbS9oaWRlLW90aGVyJztcclxuaW1wb3J0IGN1c3RvbVByb3BlcnRpZXNQYW5lbE1vZHVsZSBmcm9tICcuL2N1c3RvbS9jb25maWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdycy1jYW11bmRhLWJwbW4tZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FtdW5kYS1icG1uLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FtdW5kYS1icG1uLWVkaXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYW11bmRhQnBtbkVkaXRvckNvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICBzZXQgeG1sKHhtbDogYW55KSB7XHJcbiAgICB0aGlzLl94bWwgPSB4bWw7XHJcbiAgICB0aGlzLmxvYWRYbWwoKTtcclxuICB9XHJcblxyXG4gIGdldCB4bWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5feG1sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfeG1sOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnYnBtbkNvbnRhaW5lcicpIGJwbW5Db250YWluZXI/OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2JwbW5Db25maWcnKSBicG1uQ29uZmlnPzogRWxlbWVudFJlZjtcclxuICBwcml2YXRlIG1vZGVsZXI6IGFueTtcclxuICBwcml2YXRlIGNhbnZhczogYW55O1xyXG4gIHByb3RlY3RlZCBpc1Nob3dYbWwgPSBmYWxzZTtcclxuICBwcml2YXRlIGluaXRpYWxEaWFncmFtID1cclxuICAgICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz4nICtcclxuICAgICc8YnBtbjpkZWZpbml0aW9ucyB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiICcgK1xyXG4gICAgJ3htbG5zOmJwbW49XCJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L01PREVMXCIgJyArXHJcbiAgICAneG1sbnM6YnBtbmRpPVwiaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9ESVwiICcgK1xyXG4gICAgJ3htbG5zOmRjPVwiaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvRENcIiAnICtcclxuICAgICd0YXJnZXROYW1lc3BhY2U9XCJodHRwOi8vYnBtbi5pby9zY2hlbWEvYnBtblwiICcgK1xyXG4gICAgJ2lkPVwiRGVmaW5pdGlvbnNfMVwiPicgK1xyXG4gICAgJzxicG1uOnByb2Nlc3MgaWQ9XCJQcm9jZXNzXzFcIiBpc0V4ZWN1dGFibGU9XCJ0cnVlXCI+JyArXHJcbiAgICAnPGJwbW46c3RhcnRFdmVudCBpZD1cIlN0YXJ0RXZlbnRfMVwiLz4nICtcclxuICAgICc8L2JwbW46cHJvY2Vzcz4nICtcclxuICAgICc8YnBtbmRpOkJQTU5EaWFncmFtIGlkPVwiQlBNTkRpYWdyYW1fMVwiPicgK1xyXG4gICAgJzxicG1uZGk6QlBNTlBsYW5lIGlkPVwiQlBNTlBsYW5lXzFcIiBicG1uRWxlbWVudD1cIlByb2Nlc3NfMVwiPicgK1xyXG4gICAgJzxicG1uZGk6QlBNTlNoYXBlIGlkPVwiX0JQTU5TaGFwZV9TdGFydEV2ZW50XzJcIiBicG1uRWxlbWVudD1cIlN0YXJ0RXZlbnRfMVwiPicgK1xyXG4gICAgJzxkYzpCb3VuZHMgaGVpZ2h0PVwiMzYuMFwiIHdpZHRoPVwiMzYuMFwiIHg9XCIxNzMuMFwiIHk9XCIxMDIuMFwiLz4nICtcclxuICAgICc8L2JwbW5kaTpCUE1OU2hhcGU+JyArXHJcbiAgICAnPC9icG1uZGk6QlBNTlBsYW5lPicgK1xyXG4gICAgJzwvYnBtbmRpOkJQTU5EaWFncmFtPicgK1xyXG4gICAgJzwvYnBtbjpkZWZpbml0aW9ucz4nO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy54bWwpIHtcclxuICAgICAgdGhpcy54bWwgPSB0aGlzLmluaXRpYWxEaWFncmFtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5tb2RlbGVyID0gbmV3IEJwbW5Nb2RlbGVyKHtcclxuICAgICAgY29udGFpbmVyOiB0aGlzLmJwbW5Db250YWluZXI/Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHByb3BlcnRpZXNQYW5lbDoge1xyXG4gICAgICAgIHBhcmVudDogdGhpcy5icG1uQ29uZmlnPy5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB9LFxyXG4gICAgICBrZXlib2FyZDoge1xyXG4gICAgICAgIGJpbmRUbzogZG9jdW1lbnQsXHJcbiAgICAgIH0sXHJcbiAgICAgIGFkZGl0aW9uYWxNb2R1bGVzOiBbXHJcbiAgICAgICAgY3VzdG9tVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgICAgIGN1c3RvbVVzZXJUYXNrTW9kdWxlLFxyXG4gICAgICAgIGN1c3RvbVNlcnZpY2VUYXNrTW9kdWxlLFxyXG4gICAgICAgIGN1c3RvbUhpZGVPdGhlck1vZHVsZSxcclxuICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzUGFuZWxNb2R1bGVcclxuICAgICAgXVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBsb2dvID0gdGhpcy5tb2RlbGVyLl9jb250YWluZXIucXVlcnlTZWxlY3RvcignLmJqcy1wb3dlcmVkLWJ5Jyk7XHJcbiAgICBpZiAobG9nbykge1xyXG4gICAgICB0aGlzLm1vZGVsZXIuX2NvbnRhaW5lci5yZW1vdmVDaGlsZChsb2dvKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2FudmFzID0gdGhpcy5tb2RlbGVyLmdldCgnY2FudmFzJyk7XHJcbiAgICB0aGlzLmxvYWRYbWwoKTtcclxuICB9XHJcblxyXG4gIGxvYWRYbWwoKSB7XHJcbiAgICB0aGlzLm1vZGVsZXIuaW1wb3J0WE1MKHRoaXMueG1sKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5jYW52YXMuem9vbSgnZml0LXZpZXdwb3J0Jyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dYbWwoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTaG93WG1sKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVhtbCgoeG1sOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnhtbCA9IHhtbDtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuaXNTaG93WG1sID0gIXRoaXMuaXNTaG93WG1sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVYbWwoY2FsbGJhY2s/OiBhbnkpIHtcclxuICAgIHRoaXMubW9kZWxlci5zYXZlWE1MKHtmb3JtYXQ6IHRydWV9KS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlLnhtbCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWFpblwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgI2JwbW5Db250YWluZXI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb25maWdcIiAjYnBtbkNvbmZpZz48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInhtbC12aWV3ZXJcIiBbbmdTdHlsZV09XCJ7ZGlzcGxheTogaXNTaG93WG1sID8gJ2ZsZXgnIDogJ25vbmUnfVwiPlxuICAgIDxycy1jb2RlLWVkaXRvciBsYW5ndWFnZT1cInhtbFwiIFtjb2RlXT1cInhtbFwiIFtyZWFkb25seV09XCJ0cnVlXCIgW2VuYWJsZU1pbmltYXBdPVwidHJ1ZVwiPjwvcnMtY29kZS1lZGl0b3I+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gIDxkeC1idXR0b24gW3R5cGVdPVwiaXNTaG93WG1sID8gJ2RlZmF1bHQnIDogJ25vcm1hbCdcIiB0ZXh0PVwiWE1MXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAob25DbGljayk9XCJzaG93WG1sKClcIj48L2R4LWJ1dHRvbj5cbjwvZGl2PlxuIl19
@@ -1721,12 +1721,24 @@ class CamundaBpmnEditorComponent {
1721
1721
  '</bpmndi:BPMNDiagram>' +
1722
1722
  '</bpmn:definitions>';
1723
1723
  }
1724
+ set xml(xml) {
1725
+ this._xml = xml;
1726
+ this.loadXml();
1727
+ }
1728
+ get xml() {
1729
+ return this._xml;
1730
+ }
1731
+ ngOnInit() {
1732
+ if (!this.xml) {
1733
+ this.xml = this.initialDiagram;
1734
+ }
1735
+ }
1724
1736
  ngAfterViewInit() {
1725
1737
  var _a, _b;
1726
1738
  this.modeler = new BpmnModeler({
1727
- container: (_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement,
1739
+ container: (_a = this.bpmnContainer) === null || _a === void 0 ? void 0 : _a.nativeElement,
1728
1740
  propertiesPanel: {
1729
- parent: (_b = this.config) === null || _b === void 0 ? void 0 : _b.nativeElement,
1741
+ parent: (_b = this.bpmnConfig) === null || _b === void 0 ? void 0 : _b.nativeElement,
1730
1742
  },
1731
1743
  keyboard: {
1732
1744
  bindTo: document,
@@ -1744,30 +1756,42 @@ class CamundaBpmnEditorComponent {
1744
1756
  this.modeler._container.removeChild(logo);
1745
1757
  }
1746
1758
  this.canvas = this.modeler.get('canvas');
1747
- this.modeler.importXML(this.initialDiagram).then(() => {
1759
+ this.loadXml();
1760
+ }
1761
+ loadXml() {
1762
+ this.modeler.importXML(this.xml).then(() => {
1748
1763
  this.canvas.zoom('fit-viewport');
1749
1764
  });
1750
1765
  }
1751
1766
  showXml() {
1752
1767
  if (!this.isShowXml) {
1753
- this.modeler.saveXML({ format: true }).then((response) => {
1754
- this.xml = response.xml;
1768
+ this.saveXml((xml) => {
1769
+ this.xml = xml;
1755
1770
  });
1756
1771
  }
1757
1772
  this.isShowXml = !this.isShowXml;
1758
1773
  }
1774
+ saveXml(callback) {
1775
+ this.modeler.saveXML({ format: true }).then((response) => {
1776
+ if (callback) {
1777
+ callback(response.xml);
1778
+ }
1779
+ });
1780
+ }
1759
1781
  }
1760
1782
  CamundaBpmnEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CamundaBpmnEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1761
- CamundaBpmnEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CamundaBpmnEditorComponent, selector: "rs-camunda-bpmn-editor", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "config", first: true, predicate: ["config"], descendants: true }], ngImport: i0, template: "<div class=\"main\">\n <div class=\"container\" #container></div>\n <div class=\"config\" #config></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CodeEditorComponent, selector: "rs-code-editor", inputs: ["code", "language", "readonly", "enableMinimap", "consoleMessage"], outputs: ["codeChange", "onContentReady"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }] });
1783
+ CamundaBpmnEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CamundaBpmnEditorComponent, selector: "rs-camunda-bpmn-editor", inputs: { xml: "xml" }, viewQueries: [{ propertyName: "bpmnContainer", first: true, predicate: ["bpmnContainer"], descendants: true }, { propertyName: "bpmnConfig", first: true, predicate: ["bpmnConfig"], descendants: true }], ngImport: i0, template: "<div class=\"main\">\n <div class=\"container\" #bpmnContainer></div>\n <div class=\"config\" #bpmnConfig></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CodeEditorComponent, selector: "rs-code-editor", inputs: ["code", "language", "readonly", "enableMinimap", "consoleMessage"], outputs: ["codeChange", "onContentReady"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }] });
1762
1784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CamundaBpmnEditorComponent, decorators: [{
1763
1785
  type: Component,
1764
- args: [{ selector: 'rs-camunda-bpmn-editor', template: "<div class=\"main\">\n <div class=\"container\" #container></div>\n <div class=\"config\" #config></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"] }]
1765
- }], propDecorators: { container: [{
1786
+ args: [{ selector: 'rs-camunda-bpmn-editor', template: "<div class=\"main\">\n <div class=\"container\" #bpmnContainer></div>\n <div class=\"config\" #bpmnConfig></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"] }]
1787
+ }], propDecorators: { xml: [{
1788
+ type: Input
1789
+ }], bpmnContainer: [{
1766
1790
  type: ViewChild,
1767
- args: ['container']
1768
- }], config: [{
1791
+ args: ['bpmnContainer']
1792
+ }], bpmnConfig: [{
1769
1793
  type: ViewChild,
1770
- args: ['config']
1794
+ args: ['bpmnConfig']
1771
1795
  }] } });
1772
1796
 
1773
1797
  class CodeEditorModule {