@bizdoc/core 1.15.5 → 1.16.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.
Files changed (120) hide show
  1. package/assets/bizdoc-schema.json +14 -13
  2. package/assets/system/icons.json +1 -0
  3. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  4. package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +115 -44
  5. package/esm2020/lib/admin/configuration-designer/designer.base.mjs +48 -15
  6. package/esm2020/lib/admin/configuration-designer/designer.component.mjs +113 -51
  7. package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +7 -12
  8. package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +6 -7
  9. package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +6 -7
  10. package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +5 -1
  11. package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +68 -0
  12. package/esm2020/lib/admin/configuration-designer/elements/cube-index-utility.component.mjs +32 -0
  13. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +78 -57
  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 +9 -11
  16. package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +36 -20
  17. package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +28 -22
  18. package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +41 -9
  19. package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +5 -4
  20. package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +6 -5
  21. package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +10 -10
  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 +15 -10
  24. package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +7 -5
  25. package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +9 -10
  26. package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +5 -4
  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 +8 -9
  29. package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +5 -4
  30. package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +12 -9
  31. package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +8 -8
  32. package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +9 -10
  33. package/esm2020/lib/admin/configuration-designer/icon-picker.component.mjs +167 -0
  34. package/esm2020/lib/admin/configuration-designer/privileges.component.mjs +37 -19
  35. package/esm2020/lib/admin/core/ace.input.mjs +14 -16
  36. package/esm2020/lib/admin/core/color-picker.input.mjs +10 -33
  37. package/esm2020/lib/admin/form/designer/designer.component.mjs +200 -22
  38. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +6 -6
  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 +44 -0
  42. package/esm2020/lib/compose/document.component.mjs +2 -2
  43. package/esm2020/lib/compose/form-ref.mjs +7 -2
  44. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  45. package/esm2020/lib/compose/form.component.mjs +2 -2
  46. package/esm2020/lib/compose/new-menu.component.mjs +3 -3
  47. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +2 -2
  48. package/esm2020/lib/core/functions.mjs +14 -2
  49. package/esm2020/lib/core/layout/layout.component.mjs +18 -30
  50. package/esm2020/lib/core/models.mjs +1 -1
  51. package/esm2020/lib/core/translations.mjs +4 -1
  52. package/esm2020/lib/cube/cube-info.service.mjs +1 -1
  53. package/esm2020/lib/cube/cube.service.mjs +1 -1
  54. package/esm2020/lib/cube/declarations.mjs +1 -1
  55. package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
  56. package/esm2020/lib/cube/matrix/matrix.base.mjs +2 -2
  57. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +1 -1
  58. package/esm2020/lib/cube/matrix/table.component.mjs +19 -19
  59. package/esm2020/lib/cube/sum/sum.component.mjs +1 -1
  60. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +1 -1
  61. package/esm2020/lib/reports/cube/usage-base.mjs +1 -1
  62. package/esm2020/lib/shared.module.mjs +9 -7
  63. package/esm2020/lib/system.module.mjs +13 -7
  64. package/esm2020/lib/views/cube/chart.component.mjs +1 -1
  65. package/esm2020/lib/views/cube/parallel.component.mjs +1 -1
  66. package/esm2020/public-api.mjs +3 -2
  67. package/fesm2015/bizdoc-core.mjs +6056 -5424
  68. package/fesm2015/bizdoc-core.mjs.map +1 -1
  69. package/fesm2020/bizdoc-core.mjs +5839 -5215
  70. package/fesm2020/bizdoc-core.mjs.map +1 -1
  71. package/lib/admin/configuration-designer/designer-element.component.d.ts +30 -10
  72. package/lib/admin/configuration-designer/designer.base.d.ts +95 -39
  73. package/lib/admin/configuration-designer/designer.component.d.ts +19 -5
  74. package/lib/admin/configuration-designer/elements/action.component.d.ts +4 -6
  75. package/lib/admin/configuration-designer/elements/box-form.component.d.ts +2 -4
  76. package/lib/admin/configuration-designer/elements/configuration-datasource.component.d.ts +26 -0
  77. package/lib/admin/configuration-designer/elements/cube-index-utility.component.d.ts +12 -0
  78. package/lib/admin/configuration-designer/elements/cube.component.d.ts +18 -12
  79. package/lib/admin/configuration-designer/elements/folder.component.d.ts +4 -7
  80. package/lib/admin/configuration-designer/elements/form.component.d.ts +12 -11
  81. package/lib/admin/configuration-designer/elements/guide.component.d.ts +4 -6
  82. package/lib/admin/configuration-designer/elements/matrix-view.component.d.ts +7 -1
  83. package/lib/admin/configuration-designer/elements/pivot-view.component.d.ts +1 -1
  84. package/lib/admin/configuration-designer/elements/report.component.d.ts +4 -9
  85. package/lib/admin/configuration-designer/elements/return-to-role-action.component.d.ts +2 -4
  86. package/lib/admin/configuration-designer/elements/role.component.d.ts +5 -7
  87. package/lib/admin/configuration-designer/elements/rule.component.d.ts +5 -6
  88. package/lib/admin/configuration-designer/elements/state.component.d.ts +4 -4
  89. package/lib/admin/configuration-designer/elements/sum-view.component.d.ts +1 -0
  90. package/lib/admin/configuration-designer/elements/type.component.d.ts +3 -11
  91. package/lib/admin/configuration-designer/elements/utility.component.d.ts +6 -5
  92. package/lib/admin/configuration-designer/elements/view.component.d.ts +4 -8
  93. package/lib/admin/configuration-designer/elements/widget.component.d.ts +4 -6
  94. package/lib/admin/configuration-designer/icon-picker.component.d.ts +67 -0
  95. package/lib/admin/configuration-designer/privileges.component.d.ts +8 -7
  96. package/lib/admin/core/ace.input.d.ts +4 -4
  97. package/lib/admin/core/color-picker.input.d.ts +4 -6
  98. package/lib/admin/form/designer/designer.component.d.ts +68 -20
  99. package/lib/admin/form/workflow/workflow.component.d.ts +2 -2
  100. package/lib/admin/patterns/patterns.component.d.ts +2 -2
  101. package/lib/admin/system.service.d.ts +6 -0
  102. package/lib/compose/box/box.component.d.ts +17 -0
  103. package/lib/compose/form-ref.d.ts +6 -2
  104. package/lib/core/layout/layout.component.d.ts +0 -2
  105. package/lib/core/models.d.ts +6 -3
  106. package/lib/core/translations.d.ts +3 -0
  107. package/lib/cube/cube-info.service.d.ts +3 -2
  108. package/lib/cube/cube.service.d.ts +8 -8
  109. package/lib/cube/declarations.d.ts +2 -0
  110. package/lib/cube/matrix/matrix.base.d.ts +4 -3
  111. package/lib/cube/matrix/matrix.pane.component.d.ts +3 -2
  112. package/lib/cube/matrix/table.component.d.ts +8 -6
  113. package/lib/dashboard/cube/cube-analysis.base.d.ts +1 -0
  114. package/lib/reports/cube/usage-base.d.ts +2 -2
  115. package/lib/shared.module.d.ts +33 -33
  116. package/lib/system.module.d.ts +63 -59
  117. package/lib/views/cube/chart.component.d.ts +2 -1
  118. package/lib/views/cube/parallel.component.d.ts +1 -1
  119. package/package.json +1 -1
  120. package/public-api.d.ts +4 -3
@@ -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,150 @@
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
+ if (!this.model.privileges)
44
+ this.model.privileges = {};
45
+ const injector = Injector.create([{
46
+ provide: DesignerRef, useValue: new DesignerRef(this.designer, this.model)
47
+ }], this._injector);
48
+ let typeinstance;
49
+ let factory = this._cfr.resolve(this.template);
50
+ let cRef = this._container.createComponent(factory, 0, injector);
51
+ cRef.instance.model = this.model;
52
+ cRef.instance.editMode = this.editMode;
53
+ typeinstance = cRef.instance;
54
+ let elementinstance;
55
+ if (this.model.template) {
56
+ let factory = this._cfr.resolve(this.model.template);
57
+ let cRef = this._econtainer.createComponent(factory, 0, injector);
58
+ cRef.instance.model = this.model;
59
+ cRef.instance.editMode = this.editMode;
60
+ elementinstance = cRef.instance;
61
+ }
22
62
  if (this.editMode) {
23
- this._instance.form.patchValue(this.model);
24
- this._instance.form.valueChanges.pipe(takeUntil(this._destroy)).
63
+ this.change = new EventEmitter();
64
+ this.form = this._fb.group({
65
+ name: this._fb.control(null, Validators.required),
66
+ title: this._fb.control(null, Validators.required),
67
+ });
68
+ this._destroy = new Subject();
69
+ const { name, title } = this.form.controls;
70
+ !this.model.draft && name.disable();
71
+ this.model.draft && title.valueChanges.pipe(takeUntil(this._destroy)).subscribe((t) => !typeinstance.disablefancyname && t && name.setValue(programName(t)));
72
+ this.form.patchValue(this.model);
73
+ this.form.valueChanges.pipe(takeUntil(this._destroy)).
25
74
  subscribe(v => {
26
75
  Object.assign(this.model, v);
76
+ this.dirty = true;
27
77
  this.change.emit();
28
78
  });
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);
79
+ let state, typestate, elementstate;
80
+ function validate() {
81
+ return (!typestate || typestate === 'VALID') && (!state || state === 'VALID') && (!elementstate || elementstate === 'VALID');
82
+ }
83
+ this.form.statusChanges.pipe(takeUntil(this._destroy)).subscribe(s => {
84
+ state = s;
85
+ this.valid = validate();
86
+ });
87
+ typeinstance.form.patchValue(this.model);
88
+ typeinstance.form.statusChanges.pipe(takeUntil(this._destroy)).subscribe(s => {
89
+ typestate = s;
90
+ this.valid = validate();
91
+ });
92
+ typeinstance.form.valueChanges.pipe(takeUntil(this._destroy)).subscribe(v => {
93
+ Object.assign(this.model, v);
94
+ this.dirty = true;
38
95
  this.change.emit();
39
96
  });
97
+ if (elementinstance) {
98
+ elementinstance.form.patchValue(this.model.options);
99
+ elementinstance.form.valueChanges.pipe(takeUntil(this._destroy)).
100
+ subscribe(v => this.assignargs(v));
101
+ elementinstance.form.statusChanges.pipe(takeUntil(this._destroy)).subscribe(s => {
102
+ typestate = s;
103
+ this.valid = validate();
104
+ });
105
+ }
40
106
  }
41
107
  }
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}`;
108
+ assignargs(evt) {
109
+ Object.assign(this.model.options, evt);
110
+ this.dirty = true;
111
+ this.change.emit();
112
+ }
113
+ /**
114
+ * Ctrl-s save
115
+ * @param event
116
+ */
117
+ handleKeyboardEvent(event) {
118
+ if (event.ctrlKey && (event.which === 83 || event.which === 115)) {
119
+ this.valid && this.save();
120
+ event.preventDefault();
55
121
  }
56
122
  }
123
+ ngOnDestroy() {
124
+ this._destroy?.next();
125
+ }
57
126
  }
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}\n"] });
127
+ 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 });
128
+ 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 #container></ng-container>\r\n<ng-container #econtainer></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
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, decorators: [{
61
130
  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}\n"] }]
131
+ 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 #container></ng-container>\r\n<ng-container #econtainer></ng-container>\r\n\r\n", styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}\n"] }]
63
132
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.PaneRef, decorators: [{
64
133
  type: Optional
65
- }] }, { type: i2.BizDocComponentFactoryResolver }]; }, propDecorators: { editMode: [{
66
- type: Input
67
- }], template: [{
134
+ }] }, { type: i2.FormBuilder }, { type: i3.BizDocComponentFactoryResolver }]; }, propDecorators: { template: [{
68
135
  type: Input
69
136
  }], model: [{
70
137
  type: Input
71
138
  }], designer: [{
72
139
  type: Input
73
- }], change: [{
74
- type: Output
75
140
  }], _container: [{
76
141
  type: ViewChild,
77
142
  args: ['container', { static: true, read: ViewContainerRef }]
143
+ }], _econtainer: [{
144
+ type: ViewChild,
145
+ args: ['econtainer', { static: true, read: ViewContainerRef }]
146
+ }], handleKeyboardEvent: [{
147
+ type: HostListener,
148
+ args: ['document:keydown', ['$event']]
78
149
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUMsT0FBTyxFQUFFLFdBQVcsRUFBeUQsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUNyRyxJQUFJO0FBTUosTUFBTSxPQUNFLHFCQUFxQjtJQVkzQixZQUNVLFNBQW1CLEVBQ2YsSUFBYSxFQUNqQixJQUFvQztRQUZwQyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBRW5CLFNBQUksR0FBSixJQUFJLENBQWdDO1FBUjNCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSXBDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSzlDLElBQUksSUFBSTtZQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElB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aXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbXBvbmVudC1mYWN0b3J5LXJlc29sdmVyXCI7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tIFwiLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZlwiO1xyXG5pbXBvcnQgeyBEZXNpZ25lclJlZiAsRWxlbWVudE1vZGVsLCBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQsIERlc2lnbmVyTW9kZWwgfSBmcm9tIFwiLi9kZXNpZ25lci5iYXNlXCI7XHJcbi8qKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZGVzaWduZXItZWxlbWVudCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2Rlc2lnbmVyLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICB0ZW1wbGF0ZTogJzxzcGFuPjwvc3Bhbj48bmctY29udGFpbmVyICNjb250YWluZXI+PC9uZy1jb250YWluZXI+J1xyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBEZXNpZ25lckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBlZGl0TW9kZT86IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICB0ZW1wbGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1vZGVsITogRWxlbWVudE1vZGVsO1xyXG4gIEBJbnB1dCgpIGRlc2lnbmVyITogRGVzaWduZXJNb2RlbDtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIF9jb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBfaW5zdGFuY2U6IERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxhbnk+O1xyXG4gIHByaXZhdGUgX29wdGlvbnNpbnN0YW5jZTogRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PGFueT47XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBAT3B0aW9uYWwoKSBwYW5lOiBQYW5lUmVmLFxyXG4gICAgcHJpdmF0ZSBfY2ZyOiBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcclxuICAgIGlmIChwYW5lKSBPYmplY3QuYXNzaWduKHRoaXMsIHBhbmUuZGF0YSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5zdGFuY2UgPSB0aGlzLl9jb21wb25lbnQodGhpcy50ZW1wbGF0ZSk7XHJcbiAgICBpZiAodGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICB0aGlzLl9pbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCk7XHJcbiAgICAgIHRoaXMuX2luc3RhbmNlLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgICBzdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIHYpO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZWwudGVtcGxhdGUpIHtcclxuICAgICAgaWYgKCF0aGlzLm1vZGVsLm9wdGlvbnMpIHRoaXMubW9kZWwub3B0aW9ucyA9IHt9O1xyXG4gICAgICB0aGlzLl9vcHRpb25zaW5zdGFuY2UgPSB0aGlzLl9jb21wb25lbnQodGhpcy5tb2RlbC50ZW1wbGF0ZSk7XHJcbiAgICAgIHRoaXMuX29wdGlvbnNpbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbC5vcHRpb25zKTtcclxuICAgICAgdGhpcy5fb3B0aW9uc2luc3RhbmNlLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgICBzdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwub3B0aW9ucywgdik7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb21wb25lbnQodGVtcGxhdGU6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW3tcclxuICAgICAgICBwcm92aWRlOiBEZXNpZ25lclJlZiwgdXNlVmFsdWU6IG5ldyBEZXNpZ25lclJlZih0aGlzLmRlc2lnbmVyKVxyXG4gICAgICB9XSwgdGhpcy5faW5qZWN0b3IpO1xyXG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmUodGVtcGxhdGUpO1xyXG4gICAgICBjb25zdCBjUmVmID0gdGhpcy5fY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudDxEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ+KGZhY3RvcnksIDAsIGluamVjdG9yKTtcclxuICAgICAgY1JlZi5pbnN0YW5jZS5tb2RlbCA9IHRoaXMubW9kZWw7XHJcbiAgICAgIGNSZWYuaW5zdGFuY2UuZWRpdE1vZGUgPSB0aGlzLmVkaXRNb2RlO1xyXG4gICAgICByZXR1cm4gY1JlZi5pbnN0YW5jZTtcclxuXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHRocm93IGAke3RlbXBsYXRlfSwgJHtlfWA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFVLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SixPQUFPLEVBQTZDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxXQUFXLEVBQXVGLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFTaEosSUFBSTtBQU1KLE1BQU0sT0FDRSxxQkFBcUI7SUFjM0IsWUFDVSxTQUFtQixFQUNQLEtBQWMsRUFDMUIsR0FBZ0IsRUFDaEIsSUFBb0M7UUFIcEMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNQLFVBQUssR0FBTCxLQUFLLENBQVM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFnQztRQUU1QyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3pCLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQWtCLENB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QzdCakUsZzVCQXlCQTsyRkRKUSxxQkFBcUI7a0JBTjVCLFNBQVM7K0JBQ0UseUJBQXlCOzswQkFxQmhDLFFBQVE7bUhBYkYsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFNEQsVUFBVTtzQkFBM0UsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRyxXQUFXO3NCQUE3RSxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQW1IakUsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sU3RhdHVzLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQml6RG9jQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyIH0gZnJvbSBcIi4uLy4uL2NvcmUvY29tcG9uZW50LWZhY3RvcnktcmVzb2x2ZXJcIjtcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gXCIuLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyUmVmLCBFbGVtZW50TW9kZWwsIERlc2lnbmVyRWxlbWVudENvbXBvbmVudCwgRGVzaWduZXJNb2RlbCwgRGVzaWduZXJUeXBlRWxlbWVudENvbXBvbmVudCwgcHJvZ3JhbU5hbWUgfSBmcm9tIFwiLi9kZXNpZ25lci5iYXNlXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1ldERhdGEge1xyXG4gIGVkaXRNb2RlOiBib29sZWFuO1xyXG4gIGlzTmV3OiBib29sZWFuO1xyXG4gIHRlbXBsYXRlOiBzdHJpbmc7XHJcbiAgbW9kZWw6IEVsZW1lbnRNb2RlbDtcclxuICBkZXNpZ25lcjogRGVzaWduZXJNb2RlbDtcclxufVxyXG4vKiovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWRlc2lnbmVyLWVsZW1lbnQnLFxyXG4gIHN0eWxlVXJsczogWydkZXNpZ25lci1lbGVtZW50LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgdGVtcGxhdGVVcmw6ICdkZXNpZ25lci1lbGVtZW50LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBEZXNpZ25lckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG4gIGVkaXRNb2RlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1vZGVsITogRWxlbWVudE1vZGVsO1xyXG4gIEBJbnB1dCgpIGRlc2lnbmVyITogRGVzaWduZXJNb2RlbDtcclxuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBfY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2Vjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBfZWNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxuICB2YWxpZDogYm9vbGVhbjtcclxuICBkaXJ0eTogYm9vbGVhbjtcclxuICBwcml2YXRlIF9pc05ldzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9tb2RlbDogRWxlbWVudE1vZGVsPGFueT47XHJcbiAgcHJpdmF0ZSBfZGVzdHJveTogU3ViamVjdDx2b2lkPjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BhbmU6IFBhbmVSZWYsXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9jZnI6IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICApIHtcclxuICAgIGlmIChfcGFuZSAmJiBfcGFuZS5kaWFsb2cpIHtcclxuICAgICAgY29uc3QgeyBkZXNpZ25lciwgZWRpdE1vZGUsIGlzTmV3LCBtb2RlbCwgdGVtcGxhdGUgfSA9IF9wYW5lLmRhdGEgYXMgRWxlbWV0RGF0YTtcclxuICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5faXNOZXcgPSBpc05ldztcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB7XHJcbiAgICAgICAgZGVzaWduZXIsIGVkaXRNb2RlLFxyXG4gICAgICAgIG1vZGVsOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vZGVsKSksXHJcbiAgICAgICAgdGVtcGxhdGVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5faXNOZXcpIHtcclxuICAgIH1cclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbW9kZWwsIHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5fcGFuZS5jbG9zZSgpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5tb2RlbC5vcHRpb25zKSB0aGlzLm1vZGVsLm9wdGlvbnMgPSB7fTtcclxuICAgIGlmICghdGhpcy5tb2RlbC5wcml2aWxlZ2VzKSB0aGlzLm1vZGVsLnByaXZpbGVnZXMgPSB7fTtcclxuXHJcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbe1xyXG4gICAgICBwcm92aWRlOiBEZXNpZ25lclJlZiwgdXNlVmFsdWU6IG5ldyBEZXNpZ25lclJlZih0aGlzLmRlc2lnbmVyLCB0aGlzLm1vZGVsKVxyXG4gICAgfV0sIHRoaXMuX2luamVjdG9yKTtcclxuXHJcbiAgICBsZXQgdHlwZWluc3RhbmNlO1xyXG5cclxuICAgIGxldCBmYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmUodGhpcy50ZW1wbGF0ZSk7XHJcblxyXG4gICAgbGV0IGNSZWYgPSB0aGlzLl9jb250YWluZXIuY3JlYXRlQ29tcG9uZW50PERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQ+KGZhY3RvcnksIDAsIGluamVjdG9yKTtcclxuICAgIGNSZWYuaW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgY1JlZi5pbnN0YW5jZS5lZGl0TW9kZSA9IHRoaXMuZWRpdE1vZGU7XHJcbiAgICB0eXBlaW5zdGFuY2UgPSBjUmVmLmluc3RhbmNlO1xyXG5cclxuICAgIGxldCBlbGVtZW50aW5zdGFuY2U7XHJcblxyXG4gICAgaWYgKHRoaXMubW9kZWwudGVtcGxhdGUpIHtcclxuICAgICAgbGV0IGZhY3RvcnkgPSB0aGlzLl9jZnIucmVzb2x2ZSh0aGlzLm1vZGVsLnRlbXBsYXRlKTtcclxuXHJcbiAgICAgIGxldCBjUmVmID0gdGhpcy5fZWNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQ8RGVzaWduZXJFbGVtZW50Q29tcG9uZW50PihmYWN0b3J5LCAwLCBpbmplY3Rvcik7XHJcbiAgICAgIGNSZWYuaW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgICBjUmVmLmluc3RhbmNlLmVkaXRNb2RlID0gdGhpcy5lZGl0TW9kZTtcclxuICAgICAgZWxlbWVudGluc3RhbmNlID0gY1JlZi5pbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICB0aGlzLmNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgICAgdGhpcy5mb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgICAgIG5hbWU6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgICAgdGl0bGU6IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLl9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgICAgY29uc3QgeyBuYW1lLCB0aXRsZSB9ID0gdGhpcy5mb3JtLmNvbnRyb2xzO1xyXG4gICAgICAhdGhpcy5tb2RlbC5kcmFmdCAmJiBuYW1lLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5tb2RlbC5kcmFmdCAmJiB0aXRsZS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgodDogc3RyaW5nKSA9PlxyXG4gICAgICAgICF0eXBlaW5zdGFuY2UuZGlzYWJsZWZhbmN5bmFtZSAmJiB0ICYmIG5hbWUuc2V0VmFsdWUocHJvZ3JhbU5hbWUodCkpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgICBzdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIHYpO1xyXG4gICAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGxldCBzdGF0ZTogRm9ybUNvbnRyb2xTdGF0dXMsIHR5cGVzdGF0ZTogRm9ybUNvbnRyb2xTdGF0dXMsIGVsZW1lbnRzdGF0ZTogRm9ybUNvbnRyb2xTdGF0dXM7XHJcbiAgICAgIGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xyXG4gICAgICAgIHJldHVybiAoIXR5cGVzdGF0ZSB8fCB0eXBlc3RhdGUgPT09ICdWQUxJRCcpICYmICghc3RhdGUgfHwgc3RhdGUgPT09ICdWQUxJRCcpICYmICghZWxlbWVudHN0YXRlIHx8IGVsZW1lbnRzdGF0ZSA9PT0gJ1ZBTElEJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShzID0+IHtcclxuICAgICAgICBzdGF0ZSA9IHM7XHJcbiAgICAgICAgdGhpcy52YWxpZCA9IHZhbGlkYXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0eXBlaW5zdGFuY2UuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgICB0eXBlaW5zdGFuY2UuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocyA9PiB7XHJcbiAgICAgICAgdHlwZXN0YXRlID0gcztcclxuICAgICAgICB0aGlzLnZhbGlkID0gdmFsaWRhdGUoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHR5cGVpbnN0YW5jZS5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgdik7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCgpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGVsZW1lbnRpbnN0YW5jZSkge1xyXG4gICAgICAgIGVsZW1lbnRpbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbC5vcHRpb25zKTtcclxuICAgICAgICBlbGVtZW50aW5zdGFuY2UuZm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICAgICAgc3Vic2NyaWJlKHYgPT4gdGhpcy5hc3NpZ25hcmdzKHYpKTtcclxuICAgICAgICBlbGVtZW50aW5zdGFuY2UuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocyA9PiB7XHJcbiAgICAgICAgICB0eXBlc3RhdGUgPSBzO1xyXG4gICAgICAgICAgdGhpcy52YWxpZCA9IHZhbGlkYXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYXNzaWduYXJncyhldnQpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbC5vcHRpb25zLCBldnQpO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICB0aGlzLmNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEN0cmwtcyBzYXZlXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgKGV2ZW50LndoaWNoID09PSA4MyB8fCBldmVudC53aGljaCA9PT0gMTE1KSkge1xyXG4gICAgICB0aGlzLnZhbGlkICYmIHRoaXMuc2F2ZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3k/Lm5leHQoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRNb2RlOyBlbHNlIGluZm9cIj5cclxuICA8bWF0LXRvb2xiYXI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiF2YWxpZFwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8L21hdC10b29sYmFyPlxyXG4gIDxzcGFuIGNsYXNzPVwiaGVscFwiPnt7bW9kZWwuaGVscH19PC9zcGFuPlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snVGl0bGUnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgJm5ic3A7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snTmFtZSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiByZXF1aXJlZCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Zvcm0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbmZvPlxyXG4gIDxzcGFuIGNsYXNzPVwiZmFtaWx5XCI+e3ttb2RlbC5mYW1pbHl9fTwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy1jb250YWluZXIgI2NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAjZWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiJdfQ==
@@ -1,35 +1,66 @@
1
- import { Directive, EventEmitter, Inject, Output } from "@angular/core";
1
+ import { Directive, Inject } from "@angular/core";
2
+ import { Validators } from "@angular/forms";
2
3
  import { isArray } from "../../core/functions";
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/forms";
5
6
  export class DesignerRef {
6
- constructor(_model) {
7
- this._model = _model;
7
+ constructor(_designer, _element) {
8
+ this._designer = _designer;
9
+ this._element = _element;
8
10
  }
9
- get model() { return this._model; }
11
+ get designer() { return this._designer; }
12
+ get element() { return this._element; }
10
13
  }
11
14
  export class DesignerElementComponent {
12
15
  constructor(_fb, _ref) {
13
16
  this._fb = _fb;
14
17
  this._ref = _ref;
15
- this.change = new EventEmitter();
16
18
  }
17
- get args() { return this.model.options; }
19
+ get options() { return this.model.options; }
20
+ ngOnInit() {
21
+ this.model.arguments?.forEach(a => this.form.addControl(a.name, this._fb.control(null, a.required ? Validators.required : null)), { emitEvent: false });
22
+ }
18
23
  }
19
24
  DesignerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementComponent, deps: [{ token: i1.FormBuilder }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Directive });
20
- DesignerElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: DesignerElementComponent, outputs: { change: "change" }, ngImport: i0 });
25
+ DesignerElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: DesignerElementComponent, ngImport: i0 });
21
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementComponent, decorators: [{
22
27
  type: Directive
23
28
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: DesignerRef, decorators: [{
24
29
  type: Inject,
25
30
  args: [DesignerRef]
26
- }] }]; }, propDecorators: { change: [{
27
- type: Output
28
- }] } });
31
+ }] }]; } });
32
+ export class DesignerTypeElementComponent extends DesignerElementComponent {
33
+ setPrivilieges(obj) {
34
+ this.form.get('privileges').patchValue(obj);
35
+ }
36
+ drop(event, collection) {
37
+ const element = collection.at(event.previousIndex);
38
+ collection.removeAt(event.previousIndex);
39
+ collection.insert(event.currentIndex, element);
40
+ }
41
+ ngOnInit() {
42
+ this.privilieges && this.form.addControl('privileges', this._fb.group({
43
+ rule: null,
44
+ roles: this._fb.control([]),
45
+ }), { emitEvent: false });
46
+ }
47
+ }
48
+ DesignerTypeElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerTypeElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
49
+ DesignerTypeElementComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: DesignerTypeElementComponent, usesInheritance: true, ngImport: i0 });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerTypeElementComponent, decorators: [{
51
+ type: Directive
52
+ }] });
53
+ const NAME_CHAR = /[A-Z]+/g, NON_NAME_CHAR = /[^\w]/g;
54
+ export function programName(name) {
55
+ return name.
56
+ replace(NAME_CHAR, (c, i) => (i > 0 && name.charAt(i - 1) !== '-' ? '-' : '') + c.toLowerCase()).
57
+ replace(NON_NAME_CHAR, '_');
58
+ }
59
+ /** */
29
60
  export class DesignerCubeElementComponent extends DesignerElementComponent {
30
61
  constructor(fb, ref) {
31
62
  super(fb, ref);
32
- this.cubes = ref.model.cubes;
63
+ this.cubes = ref.designer.cubes;
33
64
  }
34
65
  _secondaryAxes(axis) {
35
66
  if (!axis)
@@ -60,10 +91,12 @@ export class DesignerCubeElementComponent extends DesignerElementComponent {
60
91
  this._forthAxes(evt.value);
61
92
  }
62
93
  ngOnInit() {
63
- const cubeId = this.args['cube'];
94
+ const cubeId = this.options['cube'];
64
95
  this.cube = !cubeId ? this.cubes[0] : this.cubes.find(c => c.name === cubeId);
65
- this._secondaryAxes(this.args['xAxis']);
66
- this._thirdAxes(this.args['series']);
96
+ if (this.options['xAxis']) {
97
+ this._secondaryAxes(this.options['xAxis']);
98
+ this.options['series'] && this._thirdAxes(this.options['series']);
99
+ }
67
100
  }
68
101
  }
69
102
  DesignerCubeElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerCubeElementComponent, deps: [{ token: i1.FormBuilder }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Directive });
@@ -74,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
74
107
  type: Inject,
75
108
  args: [DesignerRef]
76
109
  }] }]; } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9kZXNpZ25lci5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFL0MsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBb0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFJLENBQUM7SUFDOUMsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztDQUNwQztBQTZCRCxNQUFNLE9BQWdCLHdCQUF3QjtJQU01QyxZQUFzQixHQUFnQixFQUNMLElBQWlCO1FBRDVCLFFBQUcsR0FBSCxHQUFHLENBQWE7UUFDTCxTQUFJLEdBQUosSUFBSSxDQUFhO1FBTi9CLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBT3JELENBQUM7SUFMRCxJQUFJLElBQUksS0FBUSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQzs7cUhBSHZCLHdCQUF3Qiw2Q0FPbEMsV0FBVzt5R0FQRCx3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEN0MsU0FBUztvRkFRK0IsV0FBVzswQkFBL0MsTUFBTTsyQkFBQyxXQUFXOzRDQU5GLE1BQU07c0JBQXhCLE1BQU07O0FBVVQsTUFBTSxPQUFnQiw0QkFBc0MsU0FBUSx3QkFBMkI7SUErQjdGLFlBQVksRUFBZSxFQUNKLEdBQWdCO1FBQ3JDLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFH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ZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7IFNjb3BlVHlwZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDdWJlQXhpcywgQ3ViZUluZGV4LCBDdWJlVmlldywgR3VpZGVTdGVwIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmV4cG9ydCBjbGFzcyBEZXNpZ25lclJlZiB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbW9kZWw6IERlc2lnbmVyTW9kZWwpIHsgfVxyXG4gIGdldCBtb2RlbCgpIHsgcmV0dXJuIHRoaXMuX21vZGVsOyB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50TW9kZWw8VCA9IGFueT4ge1xyXG4gIHByaXZpbGVnZXM6IFByaXZpbGVnZXNNb2RlbDtcclxuICBzdGVwczogR3VpZGVTdGVwW107XHJcbiAgdGVtcGxhdGU6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGN1cnJlbmN5Q29kZT86IHN0cmluZztcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxuICByZXNvdXJjZTogYm9vbGVhbjtcclxuICBvcHRpb25zPzogVDtcclxuICBheGVzOiBDdWJlQXhpc1tdO1xyXG4gIHZpZXdzOiBDdWJlVmlld1tdO1xyXG4gIGluZGljZXM6IEN1YmVJbmRleFtdO1xyXG4gIGNvcHlPZj86IHN0cmluZztcclxuICBzY29wZT86IFNjb3BlVHlwZTtcclxuICBydWxlczogeyBbbmFtZTogc3RyaW5nXTogUGVybWlzc2lvbk1vZGVsIH07XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uTW9kZWwge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmlsZWdlc01vZGVsIHtcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ8VCA9IGFueT4ge1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgbW9kZWw6IEVsZW1lbnRNb2RlbDxUPjtcclxuICBnZXQgYXJncygpOiBUIHsgcmV0dXJuIHRoaXMubW9kZWwub3B0aW9ucyB9XHJcbiAgZWRpdE1vZGU6IGJvb2xlYW47XHJcbiAgYWJzdHJhY3QgZm9ybTogRm9ybUdyb3VwO1xyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgQEluamVjdChEZXNpZ25lclJlZikgcHJvdGVjdGVkIF9yZWY6IERlc2lnbmVyUmVmKSB7XHJcbiAgfVxyXG59XHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzaWduZXJDdWJlRWxlbWVudENvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgY3ViZXM6IEVsZW1lbnRNb2RlbFtdO1xyXG4gIGN1YmU6IEVsZW1lbnRNb2RlbDtcclxuICBzZWNvbmRhcnlBeGVzOiBDdWJlQXhpc1tdO1xyXG4gIHRoaXJkQXhlczogQ3ViZUF4aXNbXTtcclxuICBmb3J0aEF4ZXM6IEN1YmVBeGlzW107XHJcbiAgcHJvdGVjdGVkIF9zZWNvbmRhcnlBeGVzKGF4aXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAoIWF4aXMpIHJldHVybjtcclxuICAgIHRoaXMuc2Vjb25kYXJ5QXhlcyA9IHRoaXMuY3ViZS5heGVzLmZpbHRlcihhID0+IGlzQXJyYXkoYXhpcykgPyBheGlzLmluZGV4T2YoYS5uYW1lKSA8IDAgOiBheGlzICE9PSBhLm5hbWUpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgX3RoaXJkQXhlcyhheGlzOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKCFheGlzKSByZXR1cm47XHJcbiAgICB0aGlzLnRoaXJkQXhlcyA9IHRoaXMuc2Vjb25kYXJ5QXhlcy5maWx0ZXIoYSA9PiBpc0FycmF5KGF4aXMpID8gYXhpcy5pbmRleE9mKGEubmFtZSkgPCAwIDogYS5uYW1lICE9PSBheGlzKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9mb3J0aEF4ZXMoYXhpczogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICghYXhpcykgcmV0dXJuO1xyXG4gICAgdGhpcy5mb3J0aEF4ZXMgPSB0aGlzLnRoaXJkQXhlcy5maWx0ZXIoYSA9PiBpc0FycmF5KGF4aXMpID8gYXhpcy5pbmRleE9mKGEubmFtZSkgPCAwIDogYS5uYW1lICE9PSBheGlzKTtcclxuICB9XHJcbiAgY3ViZVNlbGVjdGVkKGV2dDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICB0aGlzLmN1YmUgPSBldnQudmFsdWU7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdjdWJlJykuc2V0VmFsdWUoKGV2dC52YWx1ZSBhcyBFbGVtZW50TW9kZWwpLm5hbWUpO1xyXG4gIH1cclxuICB4QXhpc1NlbGVjdGVkKGV2dDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICB0aGlzLl9zZWNvbmRhcnlBeGVzKGV2dC52YWx1ZSk7XHJcbiAgfVxyXG4gIHNlcmllc1NlbGVjdGVkKGV2dDogTWF0U2VsZWN0Q2hhbmdlKSB7XHJcbiAgICB0aGlzLl90aGlyZEF4ZXMoZXZ0LnZhbHVlKTtcclxuICB9XHJcbiAgZm9ydGhTZWxlY3RlZChldnQ6IE1hdFNlbGVjdENoYW5nZSkge1xyXG4gICAgdGhpcy5fZm9ydGhBeGVzKGV2dC52YWx1ZSk7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKGZiOiBGb3JtQnVpbGRlcixcclxuICAgIEBJbmplY3QoRGVzaWduZXJSZWYpIHJlZjogRGVzaWduZXJSZWYpIHtcclxuICAgIHN1cGVyKGZiLCByZWYpO1xyXG4gICAgdGhpcy5jdWJlcyA9IHJlZi5tb2RlbC5jdWJlcztcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zdCBjdWJlSWQgPSB0aGlzLmFyZ3NbJ2N1YmUnXTtcclxuICAgIHRoaXMuY3ViZSA9ICFjdWJlSWQgPyB0aGlzLmN1YmVzWzBdIDogdGhpcy5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSBjdWJlSWQpO1xyXG4gICAgdGhpcy5fc2Vjb25kYXJ5QXhlcyh0aGlzLmFyZ3NbJ3hBeGlzJ10pO1xyXG4gICAgdGhpcy5fdGhpcmRBeGVzKHRoaXMuYXJnc1snc2VyaWVzJ10pO1xyXG4gIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2lnbmVyTW9kZWwge1xyXG4gIHV0aWxpdHlOYW1lOiBzdHJpbmc7XHJcbiAgdHlwZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgZ3VpZGVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHJlcG9ydHM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgZm9ybXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgY3ViZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdXRpbGl0aWVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIGZvbGRlcnM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgcm9sZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgcnVsZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdmlld3M6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgd2lkZ2V0czogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICBhY3Rpb25zOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHN0YXRlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxufVxyXG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9kZXNpZ25lci5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUUvQyxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUFvQixTQUF3QixFQUNsQyxRQUFzQjtRQURaLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBYztJQUFJLENBQUM7SUFDckMsSUFBSSxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0NBQ3hDO0FBRUQsTUFBTSxPQUFnQix3QkFBd0I7SUFNNUMsWUFBc0IsR0FBZ0IsRUFDTCxJQUFpQjtRQUQ1QixRQUFHLEdBQUgsR0FBRyxDQUFhO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUNsRCxDQUFDO0lBTEQsSUFBSSxPQUFPLEtBQVEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUM7SUFNOUMsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMs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LE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ25FO0lBQ0gsQ0FBQzs7eUhBM0NtQiw0QkFBNEIsNkNBZ0N0QyxXQUFXOzZHQWhDRCw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFEakQsU0FBUztvRkFpQ29CLFdBQVc7MEJBQXBDLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xyXG5pbXBvcnQgeyBTY29wZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZUF4aXMsIEN1YmVJbmRleCwgQ3ViZVZpZXcsIEZpZWxkSW5mbywgR3VpZGVTdGVwLCBQb3NpdGlvblBvbGljeSB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5leHBvcnQgY2xhc3MgRGVzaWduZXJSZWYge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rlc2lnbmVyOiBEZXNpZ25lck1vZGVsLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudE1vZGVsKSB7IH1cclxuICBnZXQgZGVzaWduZXIoKSB7IHJldHVybiB0aGlzLl9kZXNpZ25lcjsgfVxyXG4gIGdldCBlbGVtZW50KCkgeyByZXR1cm4gdGhpcy5fZWxlbWVudDsgfVxyXG59XHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PFQgPSBhbnk+IHtcclxuICBhcmd1bWVudHM6IGJvb2xlYW47XHJcbiAgbW9kZWw6IEVsZW1lbnRNb2RlbDxUPjtcclxuICBnZXQgb3B0aW9ucygpOiBUIHsgcmV0dXJuIHRoaXMubW9kZWwub3B0aW9ucyB9XHJcbiAgZWRpdE1vZGU6IGJvb2xlYW47XHJcbiAgYWJzdHJhY3QgZm9ybTogRm9ybUdyb3VwO1xyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgQEluamVjdChEZXNpZ25lclJlZikgcHJvdGVjdGVkIF9yZWY6IERlc2lnbmVyUmVmKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5tb2RlbC5hcmd1bWVudHM/LmZvckVhY2goYSA9PiB0aGlzLmZvcm0uYWRkQ29udHJvbChhLm5hbWUsIHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgYS5yZXF1aXJlZCA/IFZhbGlkYXRvcnMucmVxdWlyZWQgOiBudWxsKSksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcbn1cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNpZ25lclR5cGVFbGVtZW50Q29tcG9uZW50PFQgPSBhbnk+IGV4dGVuZHMgRGVzaWduZXJFbGVtZW50Q29tcG9uZW50PFQ+IHtcclxuICBzZXRQcml2aWxpZWdlcyhvYmo6IGFueSkge1xyXG4gICAgdGhpcy5mb3JtLmdldCgncHJpdmlsZWdlcycpLnBhdGNoVmFsdWUob2JqKTtcclxuICB9XHJcbiAgZGlzYWJsZWZhbmN5bmFtZTogYm9vbGVhbjtcclxuICBwcml2aWxpZWdlczogYm9vbGVhbjtcclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxGb3JtR3JvdXA+LCBjb2xsZWN0aW9uOiBGb3JtQXJyYXkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBjb2xsZWN0aW9uLmF0KGV2ZW50LnByZXZpb3VzSW5kZXgpO1xyXG4gICAgY29sbGVjdGlvbi5yZW1vdmVBdChldmVudC5wcmV2aW91c0luZGV4KTtcclxuICAgIGNvbGxlY3Rpb24uaW5zZXJ0KGV2ZW50LmN1cnJlbnRJbmRleCwgZWxlbWVudCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wcml2aWxpZWdlcyAmJiB0aGlzLmZvcm0uYWRkQ29udHJvbCgncHJpdmlsZWdlcycsXHJcbiAgICAgIHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgICAgICBydWxlOiBudWxsLFxyXG4gICAgICAgIHJvbGVzOiB0aGlzLl9mYi5jb250cm9sPHN0cmluZ1tdPihbXSksXHJcbiAgICAgIH0pLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG59XHJcbmNvbnN0IE5BTUVfQ0hBUiA9IC9bQS1aXSsvZyxcclxuICBOT05fTkFNRV9DSEFSID0gL1teXFx3XS9nO1xyXG5leHBvcnQgZnVuY3Rpb24gcHJvZ3JhbU5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIG5hbWUuXHJcbiAgICByZXBsYWNlKE5BTUVfQ0hBUiwgKGMsIGkpID0+IChpID4gMCAmJiBuYW1lLmNoYXJBdChpIC0gMSkgIT09ICctJyA/ICctJyA6ICcnKSArIGMudG9Mb3dlckNhc2UoKSkuXHJcbiAgICByZXBsYWNlKE5PTl9OQU1FX0NIQVIsICdfJyk7XHJcbn1cclxuXHJcbi8qKiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlc2lnbmVyQ3ViZUVsZW1lbnRDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IGN1YmVzOiBFbGVtZW50TW9kZWxbXTtcclxuICBjdWJlOiBFbGVtZW50TW9kZWw7XHJcbiAgc2Vjb25kYXJ5QXhlczogQ3ViZUF4aXNbXTtcclxuICB0aGlyZEF4ZXM6IEN1YmVBeGlzW107XHJcbiAgZm9ydGhBeGVzOiBDdWJlQXhpc1tdO1xyXG4gIHByb3RlY3RlZCBfc2Vjb25kYXJ5QXhlcyhheGlzOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKCFheGlzKSByZXR1cm47XHJcbiAgICB0aGlzLnNlY29uZGFyeUF4ZXMgPSB0aGlzLmN1YmUuYXhlcy5maWx0ZXIoYSA9PiBpc0FycmF5KGF4aXMpID8gYXhpcy5pbmRleE9mKGEubmFtZSkgPCAwIDogYXhpcyAhPT0gYS5uYW1lKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF90aGlyZEF4ZXMoYXhpczogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICghYXhpcykgcmV0dXJuO1xyXG4gICAgdGhpcy50aGlyZEF4ZXMgPSB0aGlzLnNlY29uZGFyeUF4ZXMuZmlsdGVyKGEgPT4gaXNBcnJheShheGlzKSA/IGF4aXMuaW5kZXhPZihhLm5hbWUpIDwgMCA6IGEubmFtZSAhPT0gYXhpcyk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfZm9ydGhBeGVzKGF4aXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAoIWF4aXMpIHJldHVybjtcclxuICAgIHRoaXMuZm9ydGhBeGVzID0gdGhpcy50aGlyZEF4ZXMuZmlsdGVyKGEgPT4gaXNBcnJheShheGlzKSA/IGF4aXMuaW5kZXhPZihhLm5hbWUpIDwgMCA6IGEubmFtZSAhPT0gYXhpcyk7XHJcbiAgfVxyXG4gIGN1YmVTZWxlY3RlZChldnQ6IE1hdFNlbGVjdENoYW5nZSkge1xyXG4gICAgdGhpcy5jdWJlID0gZXZ0LnZhbHVlO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnY3ViZScpLnNldFZhbHVlKChldnQudmFsdWUgYXMgRWxlbWVudE1vZGVsKS5uYW1lKTtcclxuICB9XHJcbiAgeEF4aXNTZWxlY3RlZChldnQ6IE1hdFNlbGVjdENoYW5nZSkge1xyXG4gICAgdGhpcy5fc2Vjb25kYXJ5QXhlcyhldnQudmFsdWUpO1xyXG4gIH1cclxuICBzZXJpZXNTZWxlY3RlZChldnQ6IE1hdFNlbGVjdENoYW5nZSkge1xyXG4gICAgdGhpcy5fdGhpcmRBeGVzKGV2dC52YWx1ZSk7XHJcbiAgfVxyXG4gIGZvcnRoU2VsZWN0ZWQoZXZ0OiBNYXRTZWxlY3RDaGFuZ2UpIHtcclxuICAgIHRoaXMuX2ZvcnRoQXhlcyhldnQudmFsdWUpO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBASW5qZWN0KERlc2lnbmVyUmVmKSByZWY6IERlc2lnbmVyUmVmKSB7XHJcbiAgICBzdXBlcihmYiwgcmVmKTtcclxuICAgIHRoaXMuY3ViZXMgPSByZWYuZGVzaWduZXIuY3ViZXM7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3QgY3ViZUlkID0gdGhpcy5vcHRpb25zWydjdWJlJ107XHJcbiAgICB0aGlzLmN1YmUgPSAhY3ViZUlkID8gdGhpcy5jdWJlc1swXSA6IHRoaXMuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gY3ViZUlkKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnNbJ3hBeGlzJ10pIHtcclxuICAgICAgdGhpcy5fc2Vjb25kYXJ5QXhlcyh0aGlzLm9wdGlvbnNbJ3hBeGlzJ10pO1xyXG4gICAgICB0aGlzLm9wdGlvbnNbJ3NlcmllcyddICYmIHRoaXMuX3RoaXJkQXhlcyh0aGlzLm9wdGlvbnNbJ3NlcmllcyddKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZXNpZ25lck1vZGVsIHtcclxuICB0eXBlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0VHlwZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGd1aWRlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICByZXBvcnRzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRSZXBvcnRzOiBUZW1wbGF0ZUluZm9bXTtcclxuICBmb3JtczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Rm9ybXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGN1YmVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRDdWJlczogVGVtcGxhdGVJbmZvW107XHJcbiAgdXRpbGl0aWVzOiBFbGVtZW50TW9kZWw8YW55PltdO1xyXG4gIHRVdGlsaXRpZXM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGZvbGRlcnM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgcm9sZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgcnVsZXM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFJ1bGVzOiBUZW1wbGF0ZUluZm9bXTtcclxuICB2aWV3czogRWxlbWVudE1vZGVsPGFueT5bXTtcclxuICB0Vmlld3M6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHdpZGdldHM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdFdpZGdldHM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIGFjdGlvbnM6IEVsZW1lbnRNb2RlbDxhbnk+W107XHJcbiAgdEFjdGlvbnM6IFRlbXBsYXRlSW5mb1tdO1xyXG4gIHN0YXRlczogRWxlbWVudE1vZGVsPGFueT5bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlSW5mbyB7XHJcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBmYW1pbHk/OiBzdHJpbmc7XHJcbiAgaGVscD86IHN0cmluZztcclxuICB0eXBlPzogc3RyaW5nO1xyXG4gIGFyZ3VtZW50cz86IEZpZWxkSW5mb1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE1vZGVsPFQgPSBhbnk+IHtcclxuICBvcmRpbmFsPzogbnVtYmVyO1xyXG4gIGhlbHA/OiBzdHJpbmc7XHJcbiAgZmFtaWx5Pzogc3RyaW5nO1xyXG4gIGNvbmZpZ3VyYXRpb25GaWxlPzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgcmVzb3VyY2U/OiBib29sZWFuO1xyXG4gIG9wdGlvbnM/OiBUO1xyXG4gIGFyZ3VtZW50cz86IEZpZWxkSW5mb1tdO1xyXG4gIHByaXZpbGVnZXM/OiBQcml2aWxlZ2VzTW9kZWw7XHJcbiAgYW5vbWFseT86IEFub21hbHlQb2xpY3k7XHJcbiAgYXNzaWduYWJsZT86IGJvb2xlYW47XHJcbiAgcG9zaXRpb24/OiBQb3NpdGlvblBvbGljeTtcclxuICBkYXRhVHlwZT86IHN0cmluZztcclxuICBzdGVwczogR3VpZGVTdGVwW107XHJcbiAgY3VycmVuY3lDb2RlPzogc3RyaW5nO1xyXG4gIGF4ZXM/OiBDdWJlQXhpc1tdO1xyXG4gIHZpZXdzPzogQ3ViZVZpZXdbXTtcclxuICBpbmRpY2VzPzogQ3ViZUluZGV4W107XHJcbiAgY29weU9mPzogc3RyaW5nO1xyXG4gIHNjb3BlPzogU2NvcGVUeXBlO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICBkcmFmdD86IGJvb2xlYW47XHJcbiAgZW1wdHk/OiBib29sZWFuO1xyXG4gIHJ1bGVzPzogUGVybWlzc2lvbk1vZGVsW107XHJcbiAgcG9zaXRpb25zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xyXG4gIHBhdHRlcm5zPzogUGF0dGVybk1vZGVsW107XHJcbn1cclxuZXhwb3J0IHR5cGUgQW5vbWFseVBvbGljeSA9ICdQb3NpdGlvbnMnIHwgJ1JlY2lwaWVudHMnO1xyXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5Nb2RlbCB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIHJ1bGU/OiBzdHJpbmc7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25Nb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcnVsZT86IHN0cmluZztcclxuICByb2xlcz86IHN0cmluZ1tdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmlsZWdlc01vZGVsIHtcclxuICBydWxlPzogc3RyaW5nO1xyXG4gIHJvbGVzPzogc3RyaW5nW107XHJcbn1cclxuIl19