@bizdoc/core 1.15.6 → 1.16.1

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.
Files changed (109) hide show
  1. package/assets/bizdoc-schema.json +14 -13
  2. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  3. package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +113 -44
  4. package/esm2020/lib/admin/configuration-designer/designer.base.mjs +43 -37
  5. package/esm2020/lib/admin/configuration-designer/designer.component.mjs +83 -84
  6. package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +8 -6
  7. package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +7 -7
  8. package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +5 -7
  9. package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +3 -3
  10. package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +31 -26
  11. package/esm2020/lib/admin/configuration-designer/elements/cube-index-utility.component.mjs +32 -0
  12. package/esm2020/lib/admin/configuration-designer/elements/cube-view.component.mjs +3 -3
  13. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +91 -55
  14. package/esm2020/lib/admin/configuration-designer/elements/documents-widget.component.mjs +2 -2
  15. package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +13 -9
  16. package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +30 -39
  17. package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +24 -17
  18. package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +13 -17
  19. package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +3 -3
  20. package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +2 -2
  21. package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +14 -6
  22. package/esm2020/lib/admin/configuration-designer/elements/return-to-role-action.component.mjs +11 -15
  23. package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +12 -8
  24. package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +8 -3
  25. package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +11 -10
  26. package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +5 -6
  27. package/esm2020/lib/admin/configuration-designer/elements/tasks-report.component.mjs +2 -2
  28. package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +11 -11
  29. package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +4 -4
  30. package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +14 -6
  31. package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +13 -11
  32. package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +14 -4
  33. package/esm2020/lib/admin/configuration-designer/icon-picker.component.mjs +12 -6
  34. package/esm2020/lib/admin/configuration-designer/privileges.component.mjs +25 -15
  35. package/esm2020/lib/admin/core/ace.input.mjs +14 -16
  36. package/esm2020/lib/admin/core/color-picker.input.mjs +2 -1
  37. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
  38. package/esm2020/lib/admin/form/designer/designer.component.mjs +96 -40
  39. package/esm2020/lib/admin/patterns/patterns.component.mjs +1 -1
  40. package/esm2020/lib/admin/system.service.mjs +4 -1
  41. package/esm2020/lib/compose/box/box.component.mjs +4 -3
  42. package/esm2020/lib/core/datasource.service.mjs +1 -1
  43. package/esm2020/lib/core/functions.mjs +10 -3
  44. package/esm2020/lib/core/layout/layout.component.mjs +18 -30
  45. package/esm2020/lib/core/mailbox.service.mjs +2 -2
  46. package/esm2020/lib/core/models.mjs +1 -1
  47. package/esm2020/lib/core/translations.mjs +6 -1
  48. package/esm2020/lib/cube/cube-info.service.mjs +1 -1
  49. package/esm2020/lib/cube/cube.service.mjs +1 -1
  50. package/esm2020/lib/cube/declarations.mjs +1 -1
  51. package/esm2020/lib/cube/matrix/matrix.base.mjs +2 -2
  52. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +1 -1
  53. package/esm2020/lib/cube/matrix/table.component.mjs +19 -19
  54. package/esm2020/lib/cube/sum/sum.component.mjs +1 -1
  55. package/esm2020/lib/reports/cube/usage-base.mjs +1 -1
  56. package/esm2020/lib/shared.module.mjs +5 -4
  57. package/esm2020/lib/system.module.mjs +14 -8
  58. package/esm2020/lib/views/cube/parallel.component.mjs +1 -1
  59. package/esm2020/public-api.mjs +3 -2
  60. package/fesm2015/bizdoc-core.mjs +5670 -5435
  61. package/fesm2015/bizdoc-core.mjs.map +1 -1
  62. package/fesm2020/bizdoc-core.mjs +5525 -5291
  63. package/fesm2020/bizdoc-core.mjs.map +1 -1
  64. package/lib/admin/configuration-designer/designer-element.component.d.ts +30 -10
  65. package/lib/admin/configuration-designer/designer.base.d.ts +75 -36
  66. package/lib/admin/configuration-designer/designer.component.d.ts +10 -7
  67. package/lib/admin/configuration-designer/elements/action.component.d.ts +2 -0
  68. package/lib/admin/configuration-designer/elements/analysis-view.component.d.ts +2 -1
  69. package/lib/admin/configuration-designer/elements/configuration-datasource.component.d.ts +9 -8
  70. package/lib/admin/configuration-designer/elements/cube-index-utility.component.d.ts +12 -0
  71. package/lib/admin/configuration-designer/elements/cube.component.d.ts +17 -7
  72. package/lib/admin/configuration-designer/elements/documents-widget.component.d.ts +2 -2
  73. package/lib/admin/configuration-designer/elements/folder.component.d.ts +3 -0
  74. package/lib/admin/configuration-designer/elements/form.component.d.ts +7 -2
  75. package/lib/admin/configuration-designer/elements/guide.component.d.ts +4 -2
  76. package/lib/admin/configuration-designer/elements/matrix-view.component.d.ts +0 -2
  77. package/lib/admin/configuration-designer/elements/pivot-view.component.d.ts +1 -1
  78. package/lib/admin/configuration-designer/elements/report.component.d.ts +3 -0
  79. package/lib/admin/configuration-designer/elements/return-to-role-action.component.d.ts +2 -4
  80. package/lib/admin/configuration-designer/elements/role.component.d.ts +5 -2
  81. package/lib/admin/configuration-designer/elements/rule.component.d.ts +2 -0
  82. package/lib/admin/configuration-designer/elements/state.component.d.ts +4 -1
  83. package/lib/admin/configuration-designer/elements/tasks-report.component.d.ts +2 -2
  84. package/lib/admin/configuration-designer/elements/type.component.d.ts +3 -1
  85. package/lib/admin/configuration-designer/elements/utility.component.d.ts +3 -0
  86. package/lib/admin/configuration-designer/elements/view.component.d.ts +4 -6
  87. package/lib/admin/configuration-designer/elements/widget.component.d.ts +2 -0
  88. package/lib/admin/configuration-designer/privileges.component.d.ts +6 -4
  89. package/lib/admin/core/ace.input.d.ts +4 -4
  90. package/lib/admin/core/color-picker.input.d.ts +1 -0
  91. package/lib/admin/form/designer/designer.component.d.ts +20 -12
  92. package/lib/admin/patterns/patterns.component.d.ts +2 -2
  93. package/lib/admin/system.service.d.ts +6 -0
  94. package/lib/core/datasource.service.d.ts +3 -3
  95. package/lib/core/layout/layout.component.d.ts +0 -2
  96. package/lib/core/models.d.ts +2 -2
  97. package/lib/core/translations.d.ts +5 -0
  98. package/lib/cube/cube-info.service.d.ts +3 -2
  99. package/lib/cube/cube.service.d.ts +8 -8
  100. package/lib/cube/declarations.d.ts +2 -0
  101. package/lib/cube/matrix/matrix.base.d.ts +4 -3
  102. package/lib/cube/matrix/matrix.pane.component.d.ts +3 -2
  103. package/lib/cube/matrix/table.component.d.ts +9 -5
  104. package/lib/reports/cube/usage-base.d.ts +2 -2
  105. package/lib/shared.module.d.ts +150 -151
  106. package/lib/system.module.d.ts +50 -47
  107. package/lib/views/cube/parallel.component.d.ts +1 -1
  108. package/package.json +1 -1
  109. package/public-api.d.ts +4 -3
@@ -819,18 +819,19 @@
819
819
  "type": "string"
820
820
  },
821
821
  "Rules": {
822
- "patternProperties": {
823
- "^.*$": {
824
- "type": "object",
825
- "properties": {
826
- "Roles": {
827
- "type": "array",
828
- "items": { "type": "string" }
829
- },
830
- "Rule": { "type": "string" },
831
- "Title": { "type": "string" }
832
- }
833
- }
822
+ "type": "array",
823
+ "items": {
824
+ "type": "object",
825
+ "properties": {
826
+ "Roles": {
827
+ "type": "array",
828
+ "items": { "type": "string" }
829
+ },
830
+ "Rule": { "type": "string" },
831
+ "Title": { "type": "string" },
832
+ "Name": { "type": "string" }
833
+ },
834
+ "required": [ "Name" ]
834
835
  }
835
836
  },
836
837
  "History": {
@@ -840,7 +841,7 @@
840
841
  }
841
842
  }
842
843
  },
843
- "required": [
844
+ "required":
844
845
  "Format",
845
846
  "Workflow"
846
847
  ]
@@ -17,11 +17,11 @@ export class AdminMenuComponent {
17
17
  }
18
18
  }
19
19
  AdminMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AdminMenuComponent, deps: [{ token: i1.SessionService }], target: i0.ɵɵFactoryTarget.Component });
20
- AdminMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: AdminMenuComponent, selector: "bizdoc-admin-menu", inputs: { collapsed: "collapsed" }, ngImport: i0, template: "<!--<span class=\"mat-subheader\">BizDoc</span>\r\n<h1 class=\"mat-display-1\">{{'System'|translate}}</h1>-->\r\n\r\n<mat-nav-list>\r\n <h3 matSubheader *ngIf=\"!collapsed\">{{'Workflow'|translate}}</h3>\r\n <mat-list-item *ngFor=\"let f of profile.forms\" [slotRouterLink]='[\"admin/forms\", f.name]' slotRouterLinkActive=\"active\">\r\n <mat-icon matListIcon [bizdocTooltip]=\"f.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{f.icon}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n\r\n <h3 matSubheader *ngIf=\"!collapsed\">{{'Utilities'|translate}}</h3>\r\n\r\n <mat-list-item *ngFor=\"let u of profile.utilities\" [slotRouterLink]='[\"admin/utilities\", u.name]' slotRouterLinkActive=\"active\">\r\n <mat-icon matListIcon [bizdocTooltip]=\"u.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{u.icon || 'build'}}</mat-icon>\r\n <span matLine>{{u.title}}</span>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i4.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i4.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i4.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "directive", type: i8.SlotRouterDirective, selector: "[slotRouterLink]", inputs: ["slotRouterLink", "slotRouterLinkActive", "slotRouterLinkDisabled", "slotRouterLinkPolicy", "slotRouterLinkOptions"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
20
+ AdminMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: AdminMenuComponent, selector: "bizdoc-admin-menu", inputs: { collapsed: "collapsed" }, ngImport: i0, template: "<!--<span class=\"mat-subheader\">BizDoc</span>\r\n<h1 class=\"mat-display-1\">{{'System'|translate}}</h1>-->\r\n\r\n<mat-nav-list>\r\n <h3 matSubheader *ngIf=\"!collapsed\">{{'Workflow'|translate}}</h3>\r\n <mat-list-item *ngFor=\"let f of profile.forms\" [slotRouterLink]='[\"admin/forms\", f.name]' slotRouterLinkActive=\"active\">\r\n <mat-icon matListIcon [bizdocTooltip]=\"f.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{f.icon|| 'description'}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n\r\n <h3 matSubheader *ngIf=\"!collapsed\">{{'Utilities'|translate}}</h3>\r\n\r\n <mat-list-item *ngFor=\"let u of profile.utilities\" [slotRouterLink]='[\"admin/utilities\", u.name]' slotRouterLinkActive=\"active\">\r\n <mat-icon matListIcon [bizdocTooltip]=\"u.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{u.icon || 'build'}}</mat-icon>\r\n <span matLine>{{u.title}}</span>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i4.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i4.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i4.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "directive", type: i8.SlotRouterDirective, selector: "[slotRouterLink]", inputs: ["slotRouterLink", "slotRouterLinkActive", "slotRouterLinkDisabled", "slotRouterLinkPolicy", "slotRouterLinkOptions"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AdminMenuComponent, decorators: [{
22
22
  type: Component,
23
- args: [{ selector: 'bizdoc-admin-menu', template: "<!--<span class=\"mat-subheader\">BizDoc</span>\r\n<h1 class=\"mat-display-1\">{{'System'|translate}}</h1>-->\r\n\r\n<mat-nav-list>\r\n <h3 matSubheader *ngIf=\"!collapsed\">{{'Workflow'|translate}}</h3>\r\n <mat-list-item *ngFor=\"let f of profile.forms\" [slotRouterLink]='[\"admin/forms\", f.name]' slotRouterLinkActive=\"active\">\r\n <mat-icon matListIcon [bizdocTooltip]=\"f.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{f.icon}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n\r\n <h3 matSubheader *ngIf=\"!collapsed\">{{'Utilities'|translate}}</h3>\r\n\r\n <mat-list-item *ngFor=\"let u of profile.utilities\" [slotRouterLink]='[\"admin/utilities\", u.name]' slotRouterLinkActive=\"active\">\r\n <mat-icon matListIcon [bizdocTooltip]=\"u.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{u.icon || 'build'}}</mat-icon>\r\n <span matLine>{{u.title}}</span>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n" }]
23
+ args: [{ selector: 'bizdoc-admin-menu', template: "<!--<span class=\"mat-subheader\">BizDoc</span>\r\n<h1 class=\"mat-display-1\">{{'System'|translate}}</h1>-->\r\n\r\n<mat-nav-list>\r\n <h3 matSubheader *ngIf=\"!collapsed\">{{'Workflow'|translate}}</h3>\r\n <mat-list-item *ngFor=\"let f of profile.forms\" [slotRouterLink]='[\"admin/forms\", f.name]' slotRouterLinkActive=\"active\">\r\n <mat-icon matListIcon [bizdocTooltip]=\"f.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{f.icon|| 'description'}}</mat-icon>\r\n <span matLine>{{f.title}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n\r\n <h3 matSubheader *ngIf=\"!collapsed\">{{'Utilities'|translate}}</h3>\r\n\r\n <mat-list-item *ngFor=\"let u of profile.utilities\" [slotRouterLink]='[\"admin/utilities\", u.name]' slotRouterLinkActive=\"active\">\r\n <mat-icon matListIcon [bizdocTooltip]=\"u.title\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">{{u.icon || 'build'}}</mat-icon>\r\n <span matLine>{{u.title}}</span>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n" }]
24
24
  }], ctorParameters: function () { return [{ type: i1.SessionService }]; }, propDecorators: { collapsed: [{
25
25
  type: Input
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2FkbWluLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hZG1pbi1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVF6RCxNQUFNLE9BQU8sa0JBQWtCO0lBSTdCLFlBQVksT0FBdUI7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7K0dBVFUsa0JBQWtCO21HQUFsQixrQkFBa0IsNkZDUi9CLHVoQ0FrQkE7MkZEVmEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLG1CQUFtQjtxR0FJcEIsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9maWxlIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWFkbWluLW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZG1pbi1tZW51LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRtaW5NZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBjb2xsYXBzZWQ6IGJvb2xlYW47XHJcbiAgcHJvZmlsZTogUHJvZmlsZTtcclxuXHJcbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UpIHtcclxuICAgIHRoaXMucHJvZmlsZSA9IHNlc3Npb24ucHJvZmlsZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPCEtLTxzcGFuIGNsYXNzPVwibWF0LXN1YmhlYWRlclwiPkJpekRvYzwvc3Bhbj5cclxuPGgxIGNsYXNzPVwibWF0LWRpc3BsYXktMVwiPnt7J1N5c3RlbSd8dHJhbnNsYXRlfX08L2gxPi0tPlxyXG5cclxuPG1hdC1uYXYtbGlzdD5cclxuICA8aDMgbWF0U3ViaGVhZGVyICpuZ0lmPVwiIWNvbGxhcHNlZFwiPnt7J1dvcmtmbG93J3x0cmFuc2xhdGV9fTwvaDM+XHJcbiAgPG1hdC1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IGYgb2YgcHJvZmlsZS5mb3Jtc1wiIFtzbG90Um91dGVyTGlua109J1tcImFkbWluL2Zvcm1zXCIsIGYubmFtZV0nIHNsb3RSb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+XHJcbiAgICA8bWF0LWljb24gbWF0TGlzdEljb24gW2JpemRvY1Rvb2x0aXBdPVwiZi50aXRsZVwiIGJpemRvY1Rvb2x0aXBQb3NpdGlvbj1cImVuZFwiIFtiaXpkb2NUb29sdGlwRGlzYWJsZWRdPVwiIWNvbGxhcHNlZFwiPnt7Zi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgPHNwYW4gbWF0TGluZT57e2YudGl0bGV9fTwvc3Bhbj5cclxuICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcblxyXG4gIDxoMyBtYXRTdWJoZWFkZXIgKm5nSWY9XCIhY29sbGFwc2VkXCI+e3snVXRpbGl0aWVzJ3x0cmFuc2xhdGV9fTwvaDM+XHJcblxyXG4gIDxtYXQtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCB1IG9mIHByb2ZpbGUudXRpbGl0aWVzXCIgW3Nsb3RSb3V0ZXJMaW5rXT0nW1wiYWRtaW4vdXRpbGl0aWVzXCIsIHUubmFtZV0nIHNsb3RSb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+XHJcbiAgICA8bWF0LWljb24gbWF0TGlzdEljb24gW2JpemRvY1Rvb2x0aXBdPVwidS50aXRsZVwiIGJpemRvY1Rvb2x0aXBQb3NpdGlvbj1cImVuZFwiIFtiaXpkb2NUb29sdGlwRGlzYWJsZWRdPVwiIWNvbGxhcHNlZFwiPnt7dS5pY29uIHx8ICdidWlsZCd9fTwvbWF0LWljb24+XHJcbiAgICA8c3BhbiBtYXRMaW5lPnt7dS50aXRsZX19PC9zcGFuPlxyXG4gIDwvbWF0LWxpc3QtaXRlbT5cclxuPC9tYXQtbmF2LWxpc3Q+XHJcbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2FkbWluLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9hZG1pbi1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVF6RCxNQUFNLE9BQU8sa0JBQWtCO0lBSTdCLFlBQVksT0FBdUI7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7K0dBVFUsa0JBQWtCO21HQUFsQixrQkFBa0IsNkZDUi9CLHVpQ0FrQkE7MkZEVmEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLG1CQUFtQjtxR0FJcEIsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9maWxlIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWFkbWluLW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZG1pbi1tZW51LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRtaW5NZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBjb2xsYXBzZWQ6IGJvb2xlYW47XHJcbiAgcHJvZmlsZTogUHJvZmlsZTtcclxuXHJcbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UpIHtcclxuICAgIHRoaXMucHJvZmlsZSA9IHNlc3Npb24ucHJvZmlsZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPCEtLTxzcGFuIGNsYXNzPVwibWF0LXN1YmhlYWRlclwiPkJpekRvYzwvc3Bhbj5cclxuPGgxIGNsYXNzPVwibWF0LWRpc3BsYXktMVwiPnt7J1N5c3RlbSd8dHJhbnNsYXRlfX08L2gxPi0tPlxyXG5cclxuPG1hdC1uYXYtbGlzdD5cclxuICA8aDMgbWF0U3ViaGVhZGVyICpuZ0lmPVwiIWNvbGxhcHNlZFwiPnt7J1dvcmtmbG93J3x0cmFuc2xhdGV9fTwvaDM+XHJcbiAgPG1hdC1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IGYgb2YgcHJvZmlsZS5mb3Jtc1wiIFtzbG90Um91dGVyTGlua109J1tcImFkbWluL2Zvcm1zXCIsIGYubmFtZV0nIHNsb3RSb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+XHJcbiAgICA8bWF0LWljb24gbWF0TGlzdEljb24gW2JpemRvY1Rvb2x0aXBdPVwiZi50aXRsZVwiIGJpemRvY1Rvb2x0aXBQb3NpdGlvbj1cImVuZFwiIFtiaXpkb2NUb29sdGlwRGlzYWJsZWRdPVwiIWNvbGxhcHNlZFwiPnt7Zi5pY29ufHwgJ2Rlc2NyaXB0aW9uJ319PC9tYXQtaWNvbj5cclxuICAgIDxzcGFuIG1hdExpbmU+e3tmLnRpdGxlfX08L3NwYW4+XHJcbiAgPC9tYXQtbGlzdC1pdGVtPlxyXG4gIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG5cclxuICA8aDMgbWF0U3ViaGVhZGVyICpuZ0lmPVwiIWNvbGxhcHNlZFwiPnt7J1V0aWxpdGllcyd8dHJhbnNsYXRlfX08L2gzPlxyXG5cclxuICA8bWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgdSBvZiBwcm9maWxlLnV0aWxpdGllc1wiIFtzbG90Um91dGVyTGlua109J1tcImFkbWluL3V0aWxpdGllc1wiLCB1Lm5hbWVdJyBzbG90Um91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiPlxyXG4gICAgPG1hdC1pY29uIG1hdExpc3RJY29uIFtiaXpkb2NUb29sdGlwXT1cInUudGl0bGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJlbmRcIiBbYml6ZG9jVG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIj57e3UuaWNvbiB8fCAnYnVpbGQnfX08L21hdC1pY29uPlxyXG4gICAgPHNwYW4gbWF0TGluZT57e3UudGl0bGV9fTwvc3Bhbj5cclxuICA8L21hdC1saXN0LWl0ZW0+XHJcbjwvbWF0LW5hdi1saXN0PlxyXG4iXX0=
@@ -1,79 +1,148 @@
1
- import { Component, EventEmitter, Injector, Input, Optional, Output, ViewChild, ViewContainerRef } from "@angular/core";
1
+ import { Component, EventEmitter, HostListener, Injector, Input, Optional, ViewChild, ViewContainerRef } from "@angular/core";
2
+ import { Validators } from "@angular/forms";
2
3
  import { Subject, takeUntil } from "rxjs";
3
- import { DesignerRef } from "./designer.base";
4
+ import { DesignerRef, programName } from "./designer.base";
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../../core/slots/pane-ref";
6
- import * as i2 from "../../core/component-factory-resolver";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "../../core/component-factory-resolver";
9
+ import * as i4 from "@angular/common";
10
+ import * as i5 from "@angular/material/toolbar";
11
+ import * as i6 from "@angular/material/form-field";
12
+ import * as i7 from "@angular/material/button";
13
+ import * as i8 from "@angular/material/input";
14
+ import * as i9 from "@angular/material/icon";
15
+ import * as i10 from "../../core/pipes/translate.pipe";
7
16
  /**/
8
17
  export class DesignerItemComponent {
9
- constructor(_injector, pane, _cfr) {
18
+ constructor(_injector, _pane, _fb, _cfr) {
10
19
  this._injector = _injector;
20
+ this._pane = _pane;
21
+ this._fb = _fb;
11
22
  this._cfr = _cfr;
12
- this.change = new EventEmitter();
13
- this._destroy = new Subject();
14
- if (pane)
15
- Object.assign(this, pane.data);
23
+ if (_pane && _pane.dialog) {
24
+ const { designer, editMode, isNew, model, template } = _pane.data;
25
+ this._model = model;
26
+ this._isNew = isNew;
27
+ Object.assign(this, {
28
+ designer, editMode,
29
+ model: JSON.parse(JSON.stringify(model)),
30
+ template
31
+ });
32
+ }
16
33
  }
17
- ngOnDestroy() {
18
- this._destroy.next();
34
+ save() {
35
+ if (this._isNew) {
36
+ }
37
+ Object.assign(this._model, this.model);
38
+ this._pane.close();
19
39
  }
20
40
  ngOnInit() {
21
- this._instance = this._component(this.template);
41
+ if (!this.model.options)
42
+ this.model.options = {};
43
+ const injector = Injector.create([{
44
+ provide: DesignerRef, useValue: new DesignerRef(this.designer, this.model)
45
+ }], this._injector);
46
+ let typeinstance;
47
+ let factory = this._cfr.resolve(this.template);
48
+ let cRef = this._container.createComponent(factory, 0, injector);
49
+ cRef.instance.model = this.model;
50
+ cRef.instance.editMode = this.editMode;
51
+ typeinstance = cRef.instance;
52
+ let elementinstance;
53
+ if (this.model.template) {
54
+ let factory = this._cfr.resolve(this.model.template);
55
+ let cRef = this._econtainer.createComponent(factory, 0, injector);
56
+ cRef.instance.model = this.model;
57
+ cRef.instance.editMode = this.editMode;
58
+ elementinstance = cRef.instance;
59
+ }
22
60
  if (this.editMode) {
23
- this._instance.form.patchValue(this.model);
24
- this._instance.form.valueChanges.pipe(takeUntil(this._destroy)).
61
+ this.change = new EventEmitter();
62
+ this.form = this._fb.group({
63
+ name: this._fb.control(null, Validators.required),
64
+ title: this._fb.control(null, Validators.required),
65
+ });
66
+ this._destroy = new Subject();
67
+ const { name, title } = this.form.controls;
68
+ !this.model.draft && name.disable();
69
+ this.model.draft && title.valueChanges.pipe(takeUntil(this._destroy)).subscribe((t) => t && name.setValue(programName(t)));
70
+ this.form.patchValue(this.model);
71
+ this.form.valueChanges.pipe(takeUntil(this._destroy)).
25
72
  subscribe(v => {
26
73
  Object.assign(this.model, v);
74
+ this.dirty = true;
27
75
  this.change.emit();
28
76
  });
29
- }
30
- if (this.model.template) {
31
- if (!this.model.options)
32
- this.model.options = {};
33
- this._optionsinstance = this._component(this.model.template);
34
- this._optionsinstance.form.patchValue(this.model.options);
35
- this._optionsinstance.form.valueChanges.pipe(takeUntil(this._destroy)).
36
- subscribe(v => {
37
- Object.assign(this.model.options, v);
77
+ let state, typestate, elementstate;
78
+ function validate() {
79
+ return (!typestate || typestate === 'VALID') && (!state || state === 'VALID') && (!elementstate || elementstate === 'VALID');
80
+ }
81
+ this.form.statusChanges.pipe(takeUntil(this._destroy)).subscribe(s => {
82
+ state = s;
83
+ this.valid = validate();
84
+ });
85
+ typeinstance.form.patchValue(this.model);
86
+ typeinstance.form.statusChanges.pipe(takeUntil(this._destroy)).subscribe(s => {
87
+ typestate = s;
88
+ this.valid = validate();
89
+ });
90
+ typeinstance.form.valueChanges.pipe(takeUntil(this._destroy)).subscribe(v => {
91
+ Object.assign(this.model, v);
92
+ this.dirty = true;
38
93
  this.change.emit();
39
94
  });
95
+ if (elementinstance) {
96
+ elementinstance.form.patchValue(this.model.options);
97
+ elementinstance.form.valueChanges.pipe(takeUntil(this._destroy)).
98
+ subscribe(v => this.assignargs(v));
99
+ elementinstance.form.statusChanges.pipe(takeUntil(this._destroy)).subscribe(s => {
100
+ typestate = s;
101
+ this.valid = validate();
102
+ });
103
+ }
40
104
  }
41
105
  }
42
- _component(template) {
43
- try {
44
- const injector = Injector.create([{
45
- provide: DesignerRef, useValue: new DesignerRef(this.designer)
46
- }], this._injector);
47
- const factory = this._cfr.resolve(template);
48
- const cRef = this._container.createComponent(factory, 0, injector);
49
- cRef.instance.model = this.model;
50
- cRef.instance.editMode = this.editMode;
51
- return cRef.instance;
52
- }
53
- catch (e) {
54
- throw `${template}, ${e}`;
106
+ assignargs(evt) {
107
+ Object.assign(this.model.options, evt);
108
+ this.dirty = true;
109
+ this.change.emit();
110
+ }
111
+ /**
112
+ * Ctrl-s save
113
+ * @param event
114
+ */
115
+ handleKeyboardEvent(event) {
116
+ if (event.ctrlKey && (event.which === 83 || event.which === 115)) {
117
+ this.valid && this.save();
118
+ event.preventDefault();
55
119
  }
56
120
  }
121
+ ngOnDestroy() {
122
+ this._destroy?.next();
123
+ }
57
124
  }
58
- DesignerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, deps: [{ token: i0.Injector }, { token: i1.PaneRef, optional: true }, { token: i2.BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
59
- DesignerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: { editMode: "editMode", template: "template", model: "model", designer: "designer" }, outputs: { change: "change" }, viewQueries: [{ propertyName: "_container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<span></span><ng-container #container></ng-container>', isInline: true, styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}\n"] });
125
+ DesignerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, deps: [{ token: i0.Injector }, { token: i1.PaneRef, optional: true }, { token: i2.FormBuilder }, { token: i3.BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
126
+ DesignerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: { template: "template", model: "model", designer: "designer" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "_econtainer", first: true, predicate: ["econtainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"editMode; else info\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!valid\"><mat-icon>save</mat-icon></button>\r\n </mat-toolbar>\r\n <span class=\"help\">{{model.help}}</span>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n\r\n<ng-template #info>\r\n <span class=\"family\">{{model.family}}</span>\r\n</ng-template>\r\n\r\n<ng-container #econtainer></ng-container>\r\n<ng-container #container></ng-container>\r\n\r\n", styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
60
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, decorators: [{
61
128
  type: Component,
62
- args: [{ selector: 'bizdoc-designer-element', template: '<span></span><ng-container #container></ng-container>', styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}\n"] }]
129
+ args: [{ selector: 'bizdoc-designer-element', template: "<ng-container *ngIf=\"editMode; else info\">\r\n <mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!valid\"><mat-icon>save</mat-icon></button>\r\n </mat-toolbar>\r\n <span class=\"help\">{{model.help}}</span>\r\n <form autocomplete=\"off\" [formGroup]=\"form\" class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required />\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n </form>\r\n</ng-container>\r\n\r\n<ng-template #info>\r\n <span class=\"family\">{{model.family}}</span>\r\n</ng-template>\r\n\r\n<ng-container #econtainer></ng-container>\r\n<ng-container #container></ng-container>\r\n\r\n", styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}\n"] }]
63
130
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.PaneRef, decorators: [{
64
131
  type: Optional
65
- }] }, { type: i2.BizDocComponentFactoryResolver }]; }, propDecorators: { editMode: [{
66
- type: Input
67
- }], template: [{
132
+ }] }, { type: i2.FormBuilder }, { type: i3.BizDocComponentFactoryResolver }]; }, propDecorators: { template: [{
68
133
  type: Input
69
134
  }], model: [{
70
135
  type: Input
71
136
  }], designer: [{
72
137
  type: Input
73
- }], change: [{
74
- type: Output
75
138
  }], _container: [{
76
139
  type: ViewChild,
77
140
  args: ['container', { static: true, read: ViewContainerRef }]
141
+ }], _econtainer: [{
142
+ type: ViewChild,
143
+ args: ['econtainer', { static: true, read: ViewContainerRef }]
144
+ }], handleKeyboardEvent: [{
145
+ type: HostListener,
146
+ args: ['document:keydown', ['$event']]
78
147
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUMsT0FBTyxFQUFFLFdBQVcsRUFBeUQsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUNyRyxJQUFJO0FBTUosTUFBTSxPQUNFLHFCQUFxQjtJQVkzQixZQUNVLFNBQW1CLEVBQ2YsSUFBYSxFQUNqQixJQUFvQztRQUZwQyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBRW5CLFNBQUksR0FBSixJQUFJLENBQWdDO1FBUjNCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSXBDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSzlDLElBQUksSUFBSTtZQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDWixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLFFBQWdCO1FBQ2pDLElBQUk7WUFDRixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7aUJBQy9ELENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQTJCLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUV0QjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxHQUFHLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7O2tIQXpESyxxQkFBcUI7c0dBQXJCLHFCQUFxQixnUkFRbUIsZ0JBQWdCLDJDQVhwRCx1REFBdUQ7MkZBRzNELHFCQUFxQjtrQkFONUIsU0FBUzsrQkFDRSx5QkFBeUIsWUFFekIsdURBQXVEOzswQkFpQjlELFFBQVE7eUZBWlgsUUFBUTtzQkFEUCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDYSxNQUFNO3NCQUF4QixNQUFNO2dCQUMyRCxVQUFVO3NCQUEzRSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbXBvbmVudC1mYWN0b3J5LXJlc29sdmVyXCI7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tIFwiLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZlwiO1xyXG5pbXBvcnQgeyBEZXNpZ25lclJlZiAsRWxlbWVudE1vZGVsLCBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQsIERlc2lnbmVyTW9kZWwgfSBmcm9tIFwiLi9kZXNpZ25lci5iYXNlXCI7XHJcbi8qKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZGVzaWduZXItZWxlbWVudCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2Rlc2lnbmVyLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICB0ZW1wbGF0ZTogJzxzcGFuPjwvc3Bhbj48bmctY29udGFpbmVyICNjb250YWluZXI+PC9uZy1jb250YWluZXI+J1xyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBEZXNpZ25lckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBlZGl0TW9kZT86IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICB0ZW1wbGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1vZGVsITogRWxlbWVudE1vZGVsO1xyXG4gIEBJbnB1dCgpIGRlc2lnbmVyITogRGVzaWduZXJNb2RlbDtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIF9jb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBfaW5zdGFuY2U6IERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxhbnk+O1xyXG4gIHByaXZhdGUgX29wdGlvbnNpbnN0YW5jZTogRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PGFueT47XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBAT3B0aW9uYWwoKSBwYW5lOiBQYW5lUmVmLFxyXG4gICAgcHJpdmF0ZSBfY2ZyOiBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcclxuICAgIGlmIChwYW5lKSBPYmplY3QuYXNzaWduKHRoaXMsIHBhbmUuZGF0YSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5zdGFuY2UgPSB0aGlzLl9jb21wb25lbnQodGhpcy50ZW1wbGF0ZSk7XHJcbiAgICBpZiAodGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICB0aGlzLl9pbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCk7XHJcbiAgICAgIHRoaXMuX2luc3RhbmNlLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgICBzdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIHYpO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZWwudGVtcGxhdGUpIHtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsLm9wdGlvbnMpIHRoaXMubW9kZWwub3B0aW9ucyA9IHt9O1xyXG4gICAgICB0aGlzLl9vcHRpb25zaW5zdGFuY2UgPSB0aGlzLl9jb21wb25lbnQodGhpcy5tb2RlbC50ZW1wbGF0ZSk7XHJcbiAgICAgIHRoaXMuX29wdGlvbnNpbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbC5vcHRpb25zKTtcclxuICAgICAgdGhpcy5fb3B0aW9uc2luc3RhbmNlLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgICBzdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwub3B0aW9ucywgdik7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb21wb25lbnQodGVtcGxhdGU6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW3tcclxuICAgICAgICBwcm92aWRlOiBEZXNpZ25lclJlZiwgdXNlVmFsdWU6IG5ldyBEZXNpZ25lclJlZih0aGlzLmRlc2lnbmVyKVxyXG4gICAgICB9XSwgdGhpcy5faW5qZWN0b3IpO1xyXG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmUodGVtcGxhdGUpO1xyXG4gICAgICBjb25zdCBjUmVmID0gdGhpcy5fY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudDxEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ+KGZhY3RvcnksIDAsIGluamVjdG9yKTtcclxuICAgICAgY1JlZi5pbnN0YW5jZS5tb2RlbCA9IHRoaXMubW9kZWw7XHJcbiAgICAgIGNSZWYuaW5zdGFuY2UuZWRpdE1vZGUgPSB0aGlzLmVkaXRNb2RlO1xyXG4gICAgICByZXR1cm4gY1JlZi5pbnN0YW5jZTtcclxuXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHRocm93IGAke3RlbXBsYXRlfSwgJHtlfWA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFVLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SixPQUFPLEVBQTZDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxXQUFXLEVBQXVGLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFTaEosSUFBSTtBQU1KLE1BQU0sT0FDRSxxQkFBcUI7SUFjM0IsWUFDVSxTQUFtQixFQUNQLEtBQWMsRUFDMUIsR0FBZ0IsRUFDaEIsSUFBb0M7UUFIcEMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNQLFVBQUssR0FBTCxLQUFLLENBQVM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFnQztRQUU1QyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3pCLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQWtCLENB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QUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRTRELFVBQVU7c0JBQTNFLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0csV0FBVztzQkFBN0UsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFrSGpFLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbFN0YXR1cywgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbXBvbmVudC1mYWN0b3J5LXJlc29sdmVyXCI7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tIFwiLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZlwiO1xyXG5pbXBvcnQgeyBEZXNpZ25lclJlZiwgRWxlbWVudE1vZGVsLCBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQsIERlc2lnbmVyTW9kZWwsIERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQsIHByb2dyYW1OYW1lIH0gZnJvbSBcIi4vZGVzaWduZXIuYmFzZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFbGVtZXREYXRhIHtcclxuICBlZGl0TW9kZTogYm9vbGVhbjtcclxuICBpc05ldzogYm9vbGVhbjtcclxuICB0ZW1wbGF0ZTogc3RyaW5nO1xyXG4gIG1vZGVsOiBFbGVtZW50TW9kZWw7XHJcbiAgZGVzaWduZXI6IERlc2lnbmVyTW9kZWw7XHJcbn1cclxuLyoqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1kZXNpZ25lci1lbGVtZW50JyxcclxuICBzdHlsZVVybHM6IFsnZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHRlbXBsYXRlVXJsOiAnZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgRGVzaWduZXJJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBlZGl0TW9kZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0ZW1wbGF0ZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBtb2RlbCE6IEVsZW1lbnRNb2RlbDtcclxuICBASW5wdXQoKSBkZXNpZ25lciE6IERlc2lnbmVyTW9kZWw7XHJcbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxuICBAVmlld0NoaWxkKCdlY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2Vjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgdmFsaWQ6IGJvb2xlYW47XHJcbiAgZGlydHk6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfaXNOZXc6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfbW9kZWw6IEVsZW1lbnRNb2RlbDxhbnk+O1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3k6IFN1YmplY3Q8dm9pZD47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9wYW5lOiBQYW5lUmVmLFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfY2ZyOiBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgKSB7XHJcbiAgICBpZiAoX3BhbmUgJiYgX3BhbmUuZGlhbG9nKSB7XHJcbiAgICAgIGNvbnN0IHsgZGVzaWduZXIsIGVkaXRNb2RlLCBpc05ldywgbW9kZWwsIHRlbXBsYXRlIH0gPSBfcGFuZS5kYXRhIGFzIEVsZW1ldERhdGE7XHJcbiAgICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XHJcbiAgICAgIHRoaXMuX2lzTmV3ID0gaXNOZXc7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcywge1xyXG4gICAgICAgIGRlc2lnbmVyLCBlZGl0TW9kZSxcclxuICAgICAgICBtb2RlbDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShtb2RlbCkpLFxyXG4gICAgICAgIHRlbXBsYXRlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBzYXZlKCkge1xyXG4gICAgaWYgKHRoaXMuX2lzTmV3KSB7XHJcbiAgICB9XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX21vZGVsLCB0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMuX3BhbmUuY2xvc2UoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubW9kZWwub3B0aW9ucykgdGhpcy5tb2RlbC5vcHRpb25zID0ge307XHJcblxyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW3tcclxuICAgICAgcHJvdmlkZTogRGVzaWduZXJSZWYsIHVzZVZhbHVlOiBuZXcgRGVzaWduZXJSZWYodGhpcy5kZXNpZ25lciwgdGhpcy5tb2RlbClcclxuICAgIH1dLCB0aGlzLl9pbmplY3Rvcik7XHJcblxyXG4gICAgbGV0IHR5cGVpbnN0YW5jZTtcclxuXHJcbiAgICBsZXQgZmFjdG9yeSA9IHRoaXMuX2Nmci5yZXNvbHZlKHRoaXMudGVtcGxhdGUpO1xyXG5cclxuICAgIGxldCBjUmVmID0gdGhpcy5fY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudDxEZXNpZ25lclR5cGVFbGVtZW50Q29tcG9uZW50PihmYWN0b3J5LCAwLCBpbmplY3Rvcik7XHJcbiAgICBjUmVmLmluc3RhbmNlLm1vZGVsID0gdGhpcy5tb2RlbDtcclxuICAgIGNSZWYuaW5zdGFuY2UuZWRpdE1vZGUgPSB0aGlzLmVkaXRNb2RlO1xyXG4gICAgdHlwZWluc3RhbmNlID0gY1JlZi5pbnN0YW5jZTtcclxuXHJcbiAgICBsZXQgZWxlbWVudGluc3RhbmNlO1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGVsLnRlbXBsYXRlKSB7XHJcbiAgICAgIGxldCBmYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmUodGhpcy5tb2RlbC50ZW1wbGF0ZSk7XHJcblxyXG4gICAgICBsZXQgY1JlZiA9IHRoaXMuX2Vjb250YWluZXIuY3JlYXRlQ29tcG9uZW50PERlc2lnbmVyRWxlbWVudENvbXBvbmVudD4oZmFjdG9yeSwgMCwgaW5qZWN0b3IpO1xyXG4gICAgICBjUmVmLmluc3RhbmNlLm1vZGVsID0gdGhpcy5tb2RlbDtcclxuICAgICAgY1JlZi5pbnN0YW5jZS5lZGl0TW9kZSA9IHRoaXMuZWRpdE1vZGU7XHJcbiAgICAgIGVsZW1lbnRpbnN0YW5jZSA9IGNSZWYuaW5zdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdE1vZGUpIHtcclxuICAgICAgdGhpcy5jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgICAgICBuYW1lOiB0aGlzLl9mYi5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICAgIHRpdGxlOiB0aGlzLl9mYi5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAgIGNvbnN0IHsgbmFtZSwgdGl0bGUgfSA9IHRoaXMuZm9ybS5jb250cm9scztcclxuICAgICAgIXRoaXMubW9kZWwuZHJhZnQgJiYgbmFtZS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMubW9kZWwuZHJhZnQgJiYgdGl0bGUudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ6IHN0cmluZykgPT5cclxuICAgICAgICB0ICYmIG5hbWUuc2V0VmFsdWUocHJvZ3JhbU5hbWUodCkpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgICBzdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIHYpO1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGxldCBzdGF0ZTogRm9ybUNvbnRyb2xTdGF0dXMsIHR5cGVzdGF0ZTogRm9ybUNvbnRyb2xTdGF0dXMsIGVsZW1lbnRzdGF0ZTogRm9ybUNvbnRyb2xTdGF0dXM7XHJcbiAgICAgIGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xyXG4gICAgICAgIHJldHVybiAoIXR5cGVzdGF0ZSB8fCB0eXBlc3RhdGUgPT09ICdWQUxJRCcpICYmICghc3RhdGUgfHwgc3RhdGUgPT09ICdWQUxJRCcpICYmICghZWxlbWVudHN0YXRlIHx8IGVsZW1lbnRzdGF0ZSA9PT0gJ1ZBTElEJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShzID0+IHtcclxuICAgICAgICBzdGF0ZSA9IHM7XHJcbiAgICAgICAgdGhpcy52YWxpZCA9IHZhbGlkYXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0eXBlaW5zdGFuY2UuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgICB0eXBlaW5zdGFuY2UuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocyA9PiB7XHJcbiAgICAgICAgdHlwZXN0YXRlID0gcztcclxuICAgICAgICB0aGlzLnZhbGlkID0gdmFsaWRhdGUoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHR5cGVpbnN0YW5jZS5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgdik7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCgpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGVsZW1lbnRpbnN0YW5jZSkge1xyXG4gICAgICAgIGVsZW1lbnRpbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbC5vcHRpb25zKTtcclxuICAgICAgICBlbGVtZW50aW5zdGFuY2UuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICAgICAgc3Vic2NyaWJlKHYgPT4gdGhpcy5hc3NpZ25hcmdzKHYpKTtcclxuICAgICAgICBlbGVtZW50aW5zdGFuY2UuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocyA9PiB7XHJcbiAgICAgICAgICB0eXBlc3RhdGUgPSBzO1xyXG4gICAgICAgICAgdGhpcy52YWxpZCA9IHZhbGlkYXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYXNzaWduYXJncyhldnQpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbC5vcHRpb25zLCBldnQpO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICB0aGlzLmNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEN0cmwtcyBzYXZlXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgKGV2ZW50LndoaWNoID09PSA4MyB8fCBldmVudC53aGljaCA9PT0gMTE1KSkge1xyXG4gICAgICB0aGlzLnZhbGlkICYmIHRoaXMuc2F2ZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3k/Lm5leHQoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRNb2RlOyBlbHNlIGluZm9cIj5cclxuICA8bWF0LXRvb2xiYXI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiF2YWxpZFwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8L21hdC10b29sYmFyPlxyXG4gIDxzcGFuIGNsYXNzPVwiaGVscFwiPnt7bW9kZWwuaGVscH19PC9zcGFuPlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snVGl0bGUnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgJm5ic3A7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snTmFtZSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiByZXF1aXJlZCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Zvcm0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbmZvPlxyXG4gIDxzcGFuIGNsYXNzPVwiZmFtaWx5XCI+e3ttb2RlbC5mYW1pbHl9fTwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy1jb250YWluZXIgI2Vjb250YWluZXI+PC9uZy1jb250YWluZXI+XHJcbjxuZy1jb250YWluZXIgI2NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiJdfQ==