@decaf-ts/for-angular 0.0.8 → 0.0.10

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 (105) hide show
  1. package/dist/{lib/assets → assets}/i18n/en.json +10 -1
  2. package/dist/components/empty-state/empty-state.component.d.ts +301 -0
  3. package/dist/components/fieldset/fieldset.component.d.ts +199 -0
  4. package/dist/components/filter/filter.component.d.ts +505 -0
  5. package/dist/components/for-angular-components.module.d.ts +20 -0
  6. package/dist/components/index.d.ts +16 -0
  7. package/dist/components/layout/layout.component.d.ts +133 -0
  8. package/dist/components/list/constants.d.ts +29 -0
  9. package/dist/components/list/list.component.d.ts +849 -0
  10. package/dist/components/list-item/list-item.component.d.ts +390 -0
  11. package/dist/{lib/components → components}/model-renderer/model-renderer.component.d.ts +1 -1
  12. package/dist/components/pagination/constants.d.ts +7 -0
  13. package/dist/components/pagination/pagination.component.d.ts +264 -0
  14. package/dist/components/searchbar/searchbar.component.d.ts +407 -0
  15. package/dist/directives/collapsable.directive.d.ts +8 -0
  16. package/dist/directives/index.d.ts +1 -0
  17. package/dist/engine/NgxBaseComponent.d.ts +541 -0
  18. package/dist/{lib/engine → engine}/index.d.ts +1 -0
  19. package/dist/{lib/engine → engine}/types.d.ts +44 -0
  20. package/dist/{lib/esm2022 → esm2022}/components/component-renderer/component-renderer.component.mjs +3 -3
  21. package/dist/esm2022/components/crud-field/crud-field.component.mjs +301 -0
  22. package/dist/esm2022/components/crud-form/constants.mjs +14 -0
  23. package/dist/esm2022/components/crud-form/crud-form.component.mjs +139 -0
  24. package/dist/esm2022/components/crud-form/types.mjs +2 -0
  25. package/dist/esm2022/components/empty-state/empty-state.component.mjs +348 -0
  26. package/dist/esm2022/components/fieldset/fieldset.component.mjs +225 -0
  27. package/dist/esm2022/components/filter/filter.component.mjs +689 -0
  28. package/dist/esm2022/components/for-angular-components.module.mjs +71 -0
  29. package/dist/esm2022/components/index.mjs +20 -0
  30. package/dist/esm2022/components/layout/layout.component.mjs +176 -0
  31. package/dist/esm2022/components/list/constants.mjs +6 -0
  32. package/dist/esm2022/components/list/list.component.mjs +1236 -0
  33. package/dist/esm2022/components/list-item/list-item.component.mjs +408 -0
  34. package/dist/esm2022/components/model-renderer/model-renderer.component.mjs +138 -0
  35. package/dist/esm2022/components/pagination/constants.mjs +2 -0
  36. package/dist/esm2022/components/pagination/pagination.component.mjs +323 -0
  37. package/dist/esm2022/components/searchbar/searchbar.component.mjs +493 -0
  38. package/dist/esm2022/decaf-ts-for-angular.mjs +5 -0
  39. package/dist/esm2022/directives/collapsable.directive.mjs +28 -0
  40. package/dist/esm2022/directives/index.mjs +2 -0
  41. package/dist/esm2022/engine/DynamicModule.mjs +18 -0
  42. package/dist/esm2022/engine/NgxBaseComponent.mjs +539 -0
  43. package/dist/esm2022/engine/NgxCrudFormField.mjs +125 -0
  44. package/dist/esm2022/engine/NgxFormService.mjs +315 -0
  45. package/dist/esm2022/engine/NgxRenderingEngine.mjs +192 -0
  46. package/dist/esm2022/engine/NgxRenderingEngine2.mjs +332 -0
  47. package/dist/esm2022/engine/ValidatorFactory.mjs +102 -0
  48. package/dist/esm2022/engine/constants.mjs +160 -0
  49. package/dist/esm2022/engine/decorators.mjs +38 -0
  50. package/dist/esm2022/engine/index.mjs +17 -0
  51. package/dist/esm2022/engine/types.mjs +4 -0
  52. package/dist/esm2022/for-angular.module.mjs +118 -0
  53. package/dist/esm2022/helpers/index.mjs +13 -0
  54. package/dist/esm2022/helpers/utils.mjs +415 -0
  55. package/dist/esm2022/interfaces.mjs +2 -0
  56. package/dist/esm2022/public-apis.mjs +14 -0
  57. package/dist/fesm2022/decaf-ts-for-angular.mjs +7109 -0
  58. package/dist/fesm2022/decaf-ts-for-angular.mjs.map +1 -0
  59. package/dist/helpers/index.d.ts +12 -0
  60. package/dist/helpers/utils.d.ts +253 -0
  61. package/dist/{lib/public-apis.d.ts → public-apis.d.ts} +4 -3
  62. package/package.json +5 -3
  63. package/dist/lib/esm2022/components/crud-field/crud-field.component.mjs +0 -297
  64. package/dist/lib/esm2022/components/crud-form/constants.mjs +0 -14
  65. package/dist/lib/esm2022/components/crud-form/crud-form.component.mjs +0 -139
  66. package/dist/lib/esm2022/components/crud-form/types.mjs +0 -2
  67. package/dist/lib/esm2022/components/model-renderer/model-renderer.component.mjs +0 -138
  68. package/dist/lib/esm2022/decaf-ts-for-angular.mjs +0 -5
  69. package/dist/lib/esm2022/engine/DynamicModule.mjs +0 -18
  70. package/dist/lib/esm2022/engine/NgxCrudFormField.mjs +0 -123
  71. package/dist/lib/esm2022/engine/NgxFormService.mjs +0 -315
  72. package/dist/lib/esm2022/engine/NgxRenderingEngine.mjs +0 -192
  73. package/dist/lib/esm2022/engine/NgxRenderingEngine2.mjs +0 -332
  74. package/dist/lib/esm2022/engine/ValidatorFactory.mjs +0 -102
  75. package/dist/lib/esm2022/engine/constants.mjs +0 -160
  76. package/dist/lib/esm2022/engine/decorators.mjs +0 -38
  77. package/dist/lib/esm2022/engine/index.mjs +0 -16
  78. package/dist/lib/esm2022/engine/types.mjs +0 -2
  79. package/dist/lib/esm2022/for-angular.module.mjs +0 -118
  80. package/dist/lib/esm2022/interfaces.mjs +0 -2
  81. package/dist/lib/esm2022/public-apis.mjs +0 -13
  82. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs +0 -2153
  83. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +0 -1
  84. /package/dist/{lib/README.md → README.md} +0 -0
  85. /package/dist/{lib/assets → assets}/images/angular-logo.svg +0 -0
  86. /package/dist/{lib/assets → assets}/images/decaf-logo-black.svg +0 -0
  87. /package/dist/{lib/assets → assets}/images/decaf-logo-lw.svg +0 -0
  88. /package/dist/{lib/assets → assets}/images/decaf-logo-white.svg +0 -0
  89. /package/dist/{lib/assets → assets}/images/decaf-logo.svg +0 -0
  90. /package/dist/{lib/components → components}/component-renderer/component-renderer.component.d.ts +0 -0
  91. /package/dist/{lib/components → components}/crud-field/crud-field.component.d.ts +0 -0
  92. /package/dist/{lib/components → components}/crud-form/constants.d.ts +0 -0
  93. /package/dist/{lib/components → components}/crud-form/crud-form.component.d.ts +0 -0
  94. /package/dist/{lib/components → components}/crud-form/types.d.ts +0 -0
  95. /package/dist/{lib/engine → engine}/DynamicModule.d.ts +0 -0
  96. /package/dist/{lib/engine → engine}/NgxCrudFormField.d.ts +0 -0
  97. /package/dist/{lib/engine → engine}/NgxFormService.d.ts +0 -0
  98. /package/dist/{lib/engine → engine}/NgxRenderingEngine.d.ts +0 -0
  99. /package/dist/{lib/engine → engine}/NgxRenderingEngine2.d.ts +0 -0
  100. /package/dist/{lib/engine → engine}/ValidatorFactory.d.ts +0 -0
  101. /package/dist/{lib/engine → engine}/constants.d.ts +0 -0
  102. /package/dist/{lib/engine → engine}/decorators.d.ts +0 -0
  103. /package/dist/{lib/for-angular.module.d.ts → for-angular.module.d.ts} +0 -0
  104. /package/dist/{lib/index.d.ts → index.d.ts} +0 -0
  105. /package/dist/{lib/interfaces.d.ts → interfaces.d.ts} +0 -0
@@ -1,138 +0,0 @@
1
- import { Component, EventEmitter, inject, Injector, Input, Output, TemplateRef, ViewChild, ViewContainerRef, } from '@angular/core';
2
- import { Model, sf } from '@decaf-ts/decorator-validation';
3
- import { NgComponentOutlet } from '@angular/common';
4
- import { AngularEngineKeys, BaseComponentProps, NgxRenderingEngine2, } from '../../engine';
5
- import { ForAngularModule } from 'src/lib/for-angular.module';
6
- import { ComponentRendererComponent } from '../component-renderer/component-renderer.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- /**
10
- * @description Component for rendering dynamic models
11
- * @summary This component is responsible for dynamically rendering models,
12
- * handling model changes, and managing event subscriptions for the rendered components.
13
- * It uses the NgxRenderingEngine2 to render the models and supports both string and Model inputs.
14
- * @class
15
- * @template M - Type extending Model
16
- * @param {Injector} injector - Angular Injector for dependency injection
17
- * @example
18
- * <ngx-decaf-model-renderer
19
- * [model]="myModel"
20
- * [globals]="globalVariables"
21
- * (listenEvent)="handleEvent($event)">
22
- * </ngx-decaf-model-renderer>
23
- * @mermaid
24
- * sequenceDiagram
25
- * participant App
26
- * participant ModelRenderer
27
- * participant RenderingEngine
28
- * participant Model
29
- * App->>ModelRenderer: Input model
30
- * ModelRenderer->>Model: Parse if string
31
- * Model-->>ModelRenderer: Parsed model
32
- * ModelRenderer->>RenderingEngine: Render model
33
- * RenderingEngine-->>ModelRenderer: Rendered output
34
- * ModelRenderer->>ModelRenderer: Subscribe to events
35
- * ModelRenderer-->>App: Emit events
36
- */
37
- export class ModelRendererComponent {
38
- constructor() {
39
- /**
40
- * @description Global variables to be passed to the rendered component
41
- */
42
- this.globals = {};
43
- /**
44
- * @description Event emitter for custom events from the rendered component
45
- */
46
- this.listenEvent = new EventEmitter();
47
- this.injector = inject(Injector);
48
- this.JSON = JSON;
49
- }
50
- // constructor() {}
51
- /**
52
- * @description Refreshes the rendered model
53
- * @param {string | M} model - The model to be rendered
54
- */
55
- refresh(model) {
56
- model =
57
- typeof model === 'string'
58
- ? Model.build({}, model)
59
- : model;
60
- this.output = model.render(this.globals || {}, this.vcr, this.injector, this.inner);
61
- if (this.output?.inputs)
62
- this.rendererId = sf(AngularEngineKeys.RENDERED_ID, this.output.inputs['rendererId']);
63
- this.instance = this.output?.instance;
64
- this.subscribeEvents();
65
- }
66
- /**
67
- * @description Lifecycle hook that is called when data-bound properties of a directive change
68
- * @param {SimpleChanges} changes - Object containing changes
69
- */
70
- ngOnChanges(changes) {
71
- if (changes[BaseComponentProps.MODEL]) {
72
- const { currentValue } = changes[BaseComponentProps.MODEL];
73
- this.refresh(currentValue);
74
- }
75
- }
76
- /**
77
- * @description Lifecycle hook that is called when a directive, pipe, or service is destroyed
78
- * @return {Promise<void>}
79
- */
80
- async ngOnDestroy() {
81
- if (this.instance) {
82
- this.unsubscribeEvents();
83
- await NgxRenderingEngine2.destroy();
84
- }
85
- this.output = undefined;
86
- }
87
- subscribeEvents() {
88
- if (this.instance) {
89
- const componentKeys = Object.keys(this.instance);
90
- for (const key of componentKeys) {
91
- const value = this.instance[key];
92
- if (value instanceof EventEmitter)
93
- this.instance[key].subscribe((event) => {
94
- this.listenEvent.emit({
95
- component: this.output?.component.name || '',
96
- name: key,
97
- ...event,
98
- });
99
- });
100
- }
101
- }
102
- }
103
- /**
104
- * @description Unsubscribes from events emitted by the rendered component
105
- */
106
- unsubscribeEvents() {
107
- if (this.instance) {
108
- const componentKeys = Object.keys(this.instance);
109
- for (const key of componentKeys) {
110
- const value = this.instance[key];
111
- if (value instanceof EventEmitter)
112
- this.instance[key].unsubscribe();
113
- }
114
- }
115
- }
116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModelRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ModelRendererComponent, isStandalone: true, selector: "ngx-decaf-model-renderer", inputs: { model: "model", globals: "globals", rendererId: "rendererId" }, outputs: { listenEvent: "listenEvent" }, viewQueries: [{ propertyName: "inner", first: true, predicate: ["inner"], descendants: true, read: TemplateRef, static: true }, { propertyName: "vcr", first: true, predicate: ["componentOuter"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: " <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ComponentRendererComponent, selector: "ngx-decaf-component-renderer", inputs: ["tag", "globals", "model", "parent"], outputs: ["listenEvent"] }] }); }
118
- }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModelRendererComponent, decorators: [{
120
- type: Component,
121
- args: [{ standalone: true, imports: [ForAngularModule, NgComponentOutlet, ComponentRendererComponent], selector: 'ngx-decaf-model-renderer', template: " <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n" }]
122
- }], propDecorators: { model: [{
123
- type: Input,
124
- args: [{ required: true }]
125
- }], globals: [{
126
- type: Input
127
- }], inner: [{
128
- type: ViewChild,
129
- args: ['inner', { read: TemplateRef, static: true }]
130
- }], rendererId: [{
131
- type: Input
132
- }], vcr: [{
133
- type: ViewChild,
134
- args: ['componentOuter', { static: true, read: ViewContainerRef }]
135
- }], listenEvent: [{
136
- type: Output
137
- }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vZGVsLXJlbmRlcmVyL21vZGVsLXJlbmRlcmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2RlbC1yZW5kZXJlci9tb2RlbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUVsQixtQkFBbUIsR0FFcEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7OztBQUVoRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBUUgsTUFBTSxPQUFPLHNCQUFzQjtJQVBuQztRQWlCRTs7V0FFRztRQUVILFlBQU8sR0FBNEIsRUFBRSxDQUFDO1FBeUJ0Qzs7V0FFRztRQUVILGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFZOUMsYUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQWtGM0IsU0FBSSxHQUFHLElBQUksQ0FBQztLQUNoQztJQWpGQyxtQkFBbUI7SUFFbkI7OztPQUdHO0lB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QUFzQjttR0FBdEIsc0JBQXNCLGtSQW1CTCxXQUFXLDhHQWlCWSxnQkFBZ0IsZ0VDcEdyRSxnbUJBb0JBLHlERHVDWSxnQkFBZ0IsdVNBQXFCLDBCQUEwQjs7NEZBSzlELHNCQUFzQjtrQkFQbEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsQ0FBQyxZQUNoRSwwQkFBMEI7OEJBWXBDLEtBQUs7c0JBREosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3pCLE9BQU87c0JBRE4sS0FBSztnQkFPTixLQUFLO3NCQURKLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVl2RCxVQUFVO3NCQURULEtBQUs7Z0JBT04sR0FBRztzQkFERixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT3JFLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RlbCwgc2YgfSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgTmdDb21wb25lbnRPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQW5ndWxhckR5bmFtaWNPdXRwdXQsXG4gIEFuZ3VsYXJFbmdpbmVLZXlzLFxuICBCYXNlQ29tcG9uZW50UHJvcHMsXG4gIEJhc2VDdXN0b21FdmVudCxcbiAgTmd4UmVuZGVyaW5nRW5naW5lMixcbiAgUmVuZGVyZWRNb2RlbCxcbn0gZnJvbSAnLi4vLi4vZW5naW5lJztcbmltcG9ydCB7IEtleVZhbHVlLCBSZW5kZXJlckN1c3RvbUV2ZW50IH0gZnJvbSAnc3JjL2xpYi9lbmdpbmUvdHlwZXMnO1xuaW1wb3J0IHsgRm9yQW5ndWxhck1vZHVsZSB9IGZyb20gJ3NyYy9saWIvZm9yLWFuZ3VsYXIubW9kdWxlJztcbmltcG9ydCB7IFJlbmRlcmFibGUgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudC1yZW5kZXJlci9jb21wb25lbnQtcmVuZGVyZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGZvciByZW5kZXJpbmcgZHluYW1pYyBtb2RlbHNcbiAqIEBzdW1tYXJ5IFRoaXMgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBkeW5hbWljYWxseSByZW5kZXJpbmcgbW9kZWxzLFxuICogaGFuZGxpbmcgbW9kZWwgY2hhbmdlcywgYW5kIG1hbmFnaW5nIGV2ZW50IHN1YnNjcmlwdGlvbnMgZm9yIHRoZSByZW5kZXJlZCBjb21wb25lbnRzLlxuICogSXQgdXNlcyB0aGUgTmd4UmVuZGVyaW5nRW5naW5lMiB0byByZW5kZXIgdGhlIG1vZGVscyBhbmQgc3VwcG9ydHMgYm90aCBzdHJpbmcgYW5kIE1vZGVsIGlucHV0cy5cbiAqIEBjbGFzc1xuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHBhcmFtIHtJbmplY3Rvcn0gaW5qZWN0b3IgLSBBbmd1bGFyIEluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICogQGV4YW1wbGVcbiAqIDxuZ3gtZGVjYWYtbW9kZWwtcmVuZGVyZXJcbiAqICAgW21vZGVsXT1cIm15TW9kZWxcIlxuICogICBbZ2xvYmFsc109XCJnbG9iYWxWYXJpYWJsZXNcIlxuICogICAobGlzdGVuRXZlbnQpPVwiaGFuZGxlRXZlbnQoJGV2ZW50KVwiPlxuICogPC9uZ3gtZGVjYWYtbW9kZWwtcmVuZGVyZXI+XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcFxuICogICBwYXJ0aWNpcGFudCBNb2RlbFJlbmRlcmVyXG4gKiAgIHBhcnRpY2lwYW50IFJlbmRlcmluZ0VuZ2luZVxuICogICBwYXJ0aWNpcGFudCBNb2RlbFxuICogICBBcHAtPj5Nb2RlbFJlbmRlcmVyOiBJbnB1dCBtb2RlbFxuICogICBNb2RlbFJlbmRlcmVyLT4+TW9kZWw6IFBhcnNlIGlmIHN0cmluZ1xuICogICBNb2RlbC0tPj5Nb2RlbFJlbmRlcmVyOiBQYXJzZWQgbW9kZWxcbiAqICAgTW9kZWxSZW5kZXJlci0+PlJlbmRlcmluZ0VuZ2luZTogUmVuZGVyIG1vZGVsXG4gKiAgIFJlbmRlcmluZ0VuZ2luZS0tPj5Nb2RlbFJlbmRlcmVyOiBSZW5kZXJlZCBvdXRwdXRcbiAqICAgTW9kZWxSZW5kZXJlci0+Pk1vZGVsUmVuZGVyZXI6IFN1YnNjcmliZSB0byBldmVudHNcbiAqICAgTW9kZWxSZW5kZXJlci0tPj5BcHA6IEVtaXQgZXZlbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9yQW5ndWxhck1vZHVsZSwgTmdDb21wb25lbnRPdXRsZXQsIENvbXBvbmVudFJlbmRlcmVyQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICduZ3gtZGVjYWYtbW9kZWwtcmVuZGVyZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RlbFJlbmRlcmVyQ29tcG9uZW50PE0gZXh0ZW5kcyBNb2RlbD5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUmVuZGVyZWRNb2RlbCB7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbnB1dCBtb2RlbCB0byBiZSByZW5kZXJlZFxuICAgKiBAc3VtbWFyeSBDYW4gYmUgYSBNb2RlbCBpbnN0YW5jZSBvciBhIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9kZWxcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIG1vZGVsITogTSB8IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdsb2JhbCB2YXJpYWJsZXMgdG8gYmUgcGFzc2VkIHRvIHRoZSByZW5kZXJlZCBjb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdsb2JhbHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZW1wbGF0ZSByZWZlcmVuY2UgZm9yIGlubmVyIGNvbnRlbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2lubmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIGlubmVyPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgb2YgdGhlIHJlbmRlcmVkIG1vZGVsXG4gICAqL1xuICBvdXRwdXQ/OiBBbmd1bGFyRHluYW1pY091dHB1dDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVuZGVyZXJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBWaWV3IGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGR5bmFtaWMgY29tcG9uZW50IHJlbmRlcmluZ1xuICAgKi9cbiAgQFZpZXdDaGlsZCgnY29tcG9uZW50T3V0ZXInLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICB2Y3IhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnQgZW1pdHRlciBmb3IgY3VzdG9tIGV2ZW50cyBmcm9tIHRoZSByZW5kZXJlZCBjb21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBsaXN0ZW5FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVuZGVyZXJDdXN0b21FdmVudD4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluc3RhbmNlIG9mIHRoZSBOZ3hSZW5kZXJpbmdFbmdpbmUyXG4gICAqL1xuICBwcml2YXRlIHJlbmRlciE6IE5neFJlbmRlcmluZ0VuZ2luZTI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbnN0YW5jZSBvZiB0aGUgcmVuZGVyZWQgY29tcG9uZW50XG4gICAqL1xuICBwcml2YXRlIGluc3RhbmNlITogS2V5VmFsdWUgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIC8vIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZnJlc2hlcyB0aGUgcmVuZGVyZWQgbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBNfSBtb2RlbCAtIFRoZSBtb2RlbCB0byBiZSByZW5kZXJlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWZyZXNoKG1vZGVsOiBzdHJpbmcgfCBNKSB7XG4gICAgbW9kZWwgPVxuICAgICAgdHlwZW9mIG1vZGVsID09PSAnc3RyaW5nJ1xuICAgICAgICA/IChNb2RlbC5idWlsZCh7fSwgbW9kZWwpIGFzIE0pXG4gICAgICAgIDogbW9kZWw7XG4gICAgdGhpcy5vdXRwdXQgPSAobW9kZWwgYXMgdW5rbm93biBhcyBSZW5kZXJhYmxlKS5yZW5kZXI8QW5ndWxhckR5bmFtaWNPdXRwdXQ+KFxuICAgICAgdGhpcy5nbG9iYWxzIHx8IHt9LFxuICAgICAgdGhpcy52Y3IsXG4gICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgdGhpcy5pbm5lcixcbiAgICApO1xuICAgIGlmICh0aGlzLm91dHB1dD8uaW5wdXRzKVxuICAgICAgdGhpcy5yZW5kZXJlcklkID0gc2YoXG4gICAgICAgIEFuZ3VsYXJFbmdpbmVLZXlzLlJFTkRFUkVEX0lELFxuICAgICAgICAodGhpcy5vdXRwdXQuaW5wdXRzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVsncmVuZGVyZXJJZCddIGFzIHN0cmluZyxcbiAgICAgICk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMub3V0cHV0Py5pbnN0YW5jZTtcbiAgICB0aGlzLnN1YnNjcmliZUV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCB3aGVuIGRhdGEtYm91bmQgcHJvcGVydGllcyBvZiBhIGRpcmVjdGl2ZSBjaGFuZ2VcbiAgICogQHBhcmFtIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzIC0gT2JqZWN0IGNvbnRhaW5pbmcgY2hhbmdlc1xuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW0Jhc2VDb21wb25lbnRQcm9wcy5NT0RFTF0pIHtcbiAgICAgIGNvbnN0IHsgY3VycmVudFZhbHVlIH0gPSBjaGFuZ2VzW0Jhc2VDb21wb25lbnRQcm9wcy5NT0RFTF07XG4gICAgICB0aGlzLnJlZnJlc2goY3VycmVudFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIHdoZW4gYSBkaXJlY3RpdmUsIHBpcGUsIG9yIHNlcnZpY2UgaXMgZGVzdHJveWVkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBuZ09uRGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZUV2ZW50cygpO1xuICAgICAgYXdhaXQgTmd4UmVuZGVyaW5nRW5naW5lMi5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMub3V0cHV0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbmNlKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGNvbXBvbmVudEtleXMpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmluc3RhbmNlW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEV2ZW50RW1pdHRlcilcbiAgICAgICAgICAodGhpcy5pbnN0YW5jZSBhcyBLZXlWYWx1ZSlba2V5XS5zdWJzY3JpYmUoKGV2ZW50OiBQYXJ0aWFsPEJhc2VDdXN0b21FdmVudD4pID0+IHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5vdXRwdXQ/LmNvbXBvbmVudC5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICBuYW1lOiBrZXksXG4gICAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgfSBhcyBSZW5kZXJlckN1c3RvbUV2ZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVuc3Vic2NyaWJlcyBmcm9tIGV2ZW50cyBlbWl0dGVkIGJ5IHRoZSByZW5kZXJlZCBjb21wb25lbnRcbiAgICovXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbmNlKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGNvbXBvbmVudEtleXMpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmluc3RhbmNlW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEV2ZW50RW1pdHRlcilcbiAgICAgICAgICB0aGlzLmluc3RhbmNlW2tleV0udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgSlNPTiA9IEpTT047XG59XG4iLCIgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3V0ZXI+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNpbm5lcj5cbiAgICA8ZGl2ICBbaWRdPVwicmVuZGVyZXJJZCB8fCBudWxsXCI+XG4gICAgICBAZm9yIChjaGlsZCBvZiBvdXRwdXQ/LmNoaWxkcmVuOyB0cmFjayBjaGlsZCkge1xuICAgICAgICBAaWYoY2hpbGQ/LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICA8bmd4LWRlY2FmLWNvbXBvbmVudC1yZW5kZXJlciBbcGFyZW50XT1cImNoaWxkXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgI2NoaWxkQ29tcG9uZW50c1xuICAgICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiXG4gICAgICAgICAgICAgIGNoaWxkLmNvbXBvbmVudDtcbiAgICAgICAgICAgICAgaW5qZWN0b3I6IGNoaWxkLmluamVjdG9yO1xuICAgICAgICAgICAgICBpbnB1dHM6IGNoaWxkLmlucHV0cztcbiAgICAgICAgICAgICAgY29udGVudDpjaGlsZC5jb250ZW50O1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-apis';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWYtdHMtZm9yLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2RlY2FmLXRzLWZvci1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaXMnO1xuIl19
@@ -1,18 +0,0 @@
1
- /**
2
- * @description Abstract base class for dynamic Angular modules
3
- * @summary The DynamicModule serves as a base class for Angular modules that need to be
4
- * dynamically loaded or configured at runtime. It provides a common type for the rendering
5
- * engine to identify and work with dynamic modules.
6
- * @class DynamicModule
7
- * @example
8
- * ```typescript
9
- * @NgModule({
10
- * declarations: [MyComponent],
11
- * imports: [CommonModule]
12
- * })
13
- * export class MyDynamicModule extends DynamicModule {}
14
- * ```
15
- */
16
- export class DynamicModule {
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL0R5bmFtaWNNb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQWdCLGFBQWE7Q0FBRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGR5bmFtaWMgQW5ndWxhciBtb2R1bGVzXG4gKiBAc3VtbWFyeSBUaGUgRHluYW1pY01vZHVsZSBzZXJ2ZXMgYXMgYSBiYXNlIGNsYXNzIGZvciBBbmd1bGFyIG1vZHVsZXMgdGhhdCBuZWVkIHRvIGJlXG4gKiBkeW5hbWljYWxseSBsb2FkZWQgb3IgY29uZmlndXJlZCBhdCBydW50aW1lLiBJdCBwcm92aWRlcyBhIGNvbW1vbiB0eXBlIGZvciB0aGUgcmVuZGVyaW5nXG4gKiBlbmdpbmUgdG8gaWRlbnRpZnkgYW5kIHdvcmsgd2l0aCBkeW5hbWljIG1vZHVsZXMuXG4gKiBAY2xhc3MgRHluYW1pY01vZHVsZVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBOZ01vZHVsZSh7XG4gKiAgIGRlY2xhcmF0aW9uczogW015Q29tcG9uZW50XSxcbiAqICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlEeW5hbWljTW9kdWxlIGV4dGVuZHMgRHluYW1pY01vZHVsZSB7fVxuICogYGBgXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEeW5hbWljTW9kdWxlIHt9XG4iXX0=
@@ -1,123 +0,0 @@
1
- import { RenderingError } from '@decaf-ts/ui-decorators';
2
- import { InternalError, OperationKeys } from '@decaf-ts/db-decorators';
3
- import { inject } from '@angular/core';
4
- import { NgxFormService } from './NgxFormService';
5
- import { sf } from '@decaf-ts/decorator-validation';
6
- import { TranslateService } from '@ngx-translate/core';
7
- /**
8
- * @class NgxCrudFormField
9
- * @implements {FieldProperties}
10
- * @implements {ControlValueAccessor}
11
- * @summary Abstract class representing a CRUD form field for Angular applications
12
- * @description This class provides the base implementation for CRUD form fields in Angular,
13
- * implementing both CrudFormField and ControlValueAccessor interfaces.
14
- */
15
- export class NgxCrudFormField {
16
- constructor() {
17
- this.translateService = inject(TranslateService);
18
- // protected constructor() {}
19
- /**
20
- * @summary String formatting function
21
- * @description Provides access to the sf function for error message formatting
22
- * @prop {function(string, ...string): string} sf - String formatting function
23
- */
24
- this.sf = sf;
25
- /**
26
- * @summary Change callback function
27
- * @description Function called when the field value changes
28
- * @property {function(): unknown} onChange - onChange event handler
29
- */
30
- this.onChange = () => { };
31
- /**
32
- * @summary Touch callback function
33
- * @description Function called when the field is touched
34
- * @property {function(): unknown} onTouch - onTouch event handler
35
- */
36
- this.onTouch = () => { };
37
- }
38
- /**
39
- * @summary Write value to the field
40
- * @description Sets the value of the field
41
- * @param {string} obj - The value to be set
42
- */
43
- writeValue(obj) {
44
- this.value = obj;
45
- }
46
- /**
47
- * @summary Register change callback
48
- * @description Registers a function to be called when the field value changes
49
- * @param {function(): unknown} fn - The function to be called on change
50
- */
51
- registerOnChange(fn) {
52
- this.onChange = fn;
53
- }
54
- /**
55
- * @summary Register touch callback
56
- * @description Registers a function to be called when the field is touched
57
- * @param {function(): unknown} fn - The function to be called on touch
58
- */
59
- registerOnTouched(fn) {
60
- this.onTouch = fn;
61
- }
62
- /**
63
- * @summary Set disabled state
64
- * @description Sets the disabled state of the field
65
- * @param {boolean} isDisabled - Whether the field should be disabled
66
- */
67
- setDisabledState(isDisabled) {
68
- this.disabled = isDisabled;
69
- }
70
- /**
71
- * @summary After view initialization logic
72
- * @description Performs necessary setup after the view has been initialized
73
- * @returns {HTMLElement} The parent element of the field
74
- */
75
- afterViewInit() {
76
- let parent;
77
- switch (this.operation) {
78
- case OperationKeys.READ:
79
- case OperationKeys.DELETE:
80
- return this.component.nativeElement.parentElement;
81
- case OperationKeys.CREATE:
82
- case OperationKeys.UPDATE:
83
- try {
84
- parent = NgxFormService.getParentEl(this.component.nativeElement, 'div');
85
- }
86
- catch (e) {
87
- throw new RenderingError(`Unable to retrieve parent form element for the ${this.operation}: ${e instanceof Error ? e.message : e}`);
88
- }
89
- // NgxFormService.register(parent.id, this.formGroup, this as AngularFieldDefinition);
90
- return parent;
91
- default:
92
- throw new InternalError(`Invalid operation: ${this.operation}`);
93
- }
94
- }
95
- /**
96
- * @summary Cleanup on component destruction
97
- * @description Unregisters the field when the component is destroyed
98
- */
99
- onDestroy() {
100
- if (this.formGroup)
101
- NgxFormService.unregister(this.formGroup);
102
- }
103
- /**
104
- * @summary Get field errors
105
- * @description Retrieves all errors associated with the field
106
- * @returns {string|void} An array of error objects
107
- */
108
- getErrors(parent) {
109
- const formControl = this.formControl;
110
- if ((!formControl.pristine || formControl.touched) && !formControl.valid) {
111
- const collapsableContainer = parent.closest('ion-accordion-group');
112
- if (collapsableContainer)
113
- collapsableContainer.setAttribute('value', 'open');
114
- const errors = Object.keys(formControl.errors ?? {}).map(key => ({
115
- key: key,
116
- message: key,
117
- }));
118
- for (const error of errors)
119
- return `* ${this.sf(this.translateService.instant(`errors.${error?.['message']}`), this[error?.['key']] ?? "")}`;
120
- }
121
- }
122
- }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmd4Q3J1ZEZvcm1GaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL05neENydWRGb3JtRmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRSxPQUFPLEVBQWtCLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RixPQUFPLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBZ0IsZ0JBQWdCO0lBQXRDO1FBb0RVLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBUXBELDZCQUE2QjtRQUU3Qjs7OztXQUlHO1FBQ0gsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUVSOzs7O1dBSUc7UUFDSCxhQUFRLEdBQWtCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUVuQzs7OztXQUlHO1FBQ0gsWUFBTyxHQUFrQixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUEyRnBDLENBQUM7SUF6RkM7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBaUI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxFQUFpQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFFLFVBQW1CO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYTtRQUNYLElBQUksTUFBbUIsQ0FBQztRQUN4QixRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixLQUFLLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDeEIsS0FBSyxhQUFhLENBQUMsTUFBTTtnQkFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7WUFDcEQsS0FBSyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQzFCLEtBQUssYUFBYSxDQUFDLE1BQU07Z0JBQ3ZCLElBQUksQ0FBQztvQkFDSCxNQUFNLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0UsQ0FBQztnQkFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksY0FBYyxDQUFDLGtEQUFrRCxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RJLENBQUM7Z0JBQ0Qsc0ZBQXNGO2dCQUN0RixPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxNQUFNLElBQUksYUFBYSxDQUFDLHNCQUFzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxJQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2YsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsTUFBbUI7UUFDM0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4RSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNuRSxJQUFHLG9CQUFvQjtnQkFDckIsb0JBQW9CLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNyRCxNQUFNLE1BQU0sR0FBNkIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pGLEdBQUcsRUFBRSxHQUFHO2dCQUNSLE9BQU8sRUFBRSxHQUFHO2FBQ2IsQ0FBQyxDQUFDLENBQUM7WUFDSixLQUFJLE1BQU0sS0FBSyxJQUFJLE1BQU07Z0JBQ3ZCLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUcsSUFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDbkksQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkUHJvcGVydGllcywgUmVuZGVyaW5nRXJyb3IgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBLZXlWYWx1ZSwgUG9zc2libGVJbnB1dFR5cGVzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBDcnVkT3BlcmF0aW9ucywgSW50ZXJuYWxFcnJvciwgT3BlcmF0aW9uS2V5cyB9IGZyb20gJ0BkZWNhZi10cy9kYi1kZWNvcmF0b3JzJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hGb3JtU2VydmljZSB9IGZyb20gJy4vTmd4Rm9ybVNlcnZpY2UnO1xuaW1wb3J0IHsgc2YgfSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG4vKipcbiAqIEBjbGFzcyBOZ3hDcnVkRm9ybUZpZWxkXG4gKiBAaW1wbGVtZW50cyB7RmllbGRQcm9wZXJ0aWVzfVxuICogQGltcGxlbWVudHMge0NvbnRyb2xWYWx1ZUFjY2Vzc29yfVxuICogQHN1bW1hcnkgQWJzdHJhY3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgQ1JVRCBmb3JtIGZpZWxkIGZvciBBbmd1bGFyIGFwcGxpY2F0aW9uc1xuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgcHJvdmlkZXMgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gZm9yIENSVUQgZm9ybSBmaWVsZHMgaW4gQW5ndWxhcixcbiAqIGltcGxlbWVudGluZyBib3RoIENydWRGb3JtRmllbGQgYW5kIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3hDcnVkRm9ybUZpZWxkIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZpZWxkUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWZlcmVuY2UgdG8gdGhlIGNvbXBvbmVudCdzIGVsZW1lbnRcbiAgICogQGRlc2NyaXB0aW9uIEVsZW1lbnRSZWYgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQncyBuYXRpdmUgZWxlbWVudFxuICAgKi9cbiAgY29tcG9uZW50ITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogQHN1bW1hcnkgQ3VycmVudCBDUlVEIG9wZXJhdGlvblxuICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgY3VycmVudCBDUlVEIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWRcbiAgICovXG4gIG9wZXJhdGlvbiE6IENydWRPcGVyYXRpb25zO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBGb3JtIGdyb3VwIGZvciB0aGUgZmllbGRcbiAgICogQGRlc2NyaXB0aW9uIEFuZ3VsYXIgRm9ybUdyb3VwIGluc3RhbmNlIGZvciB0aGUgZmllbGRcbiAgICovXG4gIGZvcm1Hcm91cCE6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcblxuICBmb3JtQ29udHJvbCE6IEZvcm1Db250cm9sO1xuXG4gIG5hbWUhOiBzdHJpbmc7XG5cbiAgcGF0aCE6IHN0cmluZztcblxuICBjaGlsZE9mPzogc3RyaW5nO1xuXG4gIHR5cGUhOiBQb3NzaWJsZUlucHV0VHlwZXM7XG5cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8vIFZhbGlkYXRpb25cblxuICBmb3JtYXQ/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIG1heD86IG51bWJlciB8IERhdGU7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWluPzogbnVtYmVyIHwgRGF0ZTtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICBwYXR0ZXJuPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgc3RlcD86IG51bWJlcjtcbiAgZXF1YWxzPzogc3RyaW5nO1xuICBkaWZmZXJlbnQ/OiBzdHJpbmc7XG4gIGxlc3NUaGFuPzogc3RyaW5nO1xuICBsZXNzVGhhbk9yRXF1YWw/OiBzdHJpbmc7XG4gIGdyZWF0ZXJUaGFuPzogc3RyaW5nO1xuICBncmVhdGVyVGhhbk9yRXF1YWw/OiBzdHJpbmc7XG5cbiAgdmFsdWUhOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlO1xuXG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICAvKipcbiAgICogQHN1bW1hcnkgUGFyZW50IEhUTUwgZWxlbWVudFxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgSFRNTCBlbGVtZW50IG9mIHRoZSBmaWVsZFxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcmVudD86IEhUTUxFbGVtZW50O1xuXG4gIC8vIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFN0cmluZyBmb3JtYXR0aW5nIGZ1bmN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIHNmIGZ1bmN0aW9uIGZvciBlcnJvciBtZXNzYWdlIGZvcm1hdHRpbmdcbiAgICogQHByb3Age2Z1bmN0aW9uKHN0cmluZywgLi4uc3RyaW5nKTogc3RyaW5nfSBzZiAtIFN0cmluZyBmb3JtYXR0aW5nIGZ1bmN0aW9uXG4gICAqL1xuICBzZiA9IHNmO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBDaGFuZ2UgY2FsbGJhY2sgZnVuY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBmaWVsZCB2YWx1ZSBjaGFuZ2VzXG4gICAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oKTogdW5rbm93bn0gb25DaGFuZ2UgLSBvbkNoYW5nZSBldmVudCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZTogKCkgPT4gdW5rbm93biA9ICgpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBUb3VjaCBjYWxsYmFjayBmdW5jdGlvblxuICAgKiBAZGVzY3JpcHRpb24gRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGZpZWxkIGlzIHRvdWNoZWRcbiAgICogQHByb3BlcnR5IHtmdW5jdGlvbigpOiB1bmtub3dufSBvblRvdWNoIC0gb25Ub3VjaCBldmVudCBoYW5kbGVyXG4gICAqL1xuICBvblRvdWNoOiAoKSA9PiB1bmtub3duID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFdyaXRlIHZhbHVlIHRvIHRoZSBmaWVsZFxuICAgKiBAZGVzY3JpcHRpb24gU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvYmogLSBUaGUgdmFsdWUgdG8gYmUgc2V0XG4gICAqL1xuICB3cml0ZVZhbHVlKG9iajogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlciBjaGFuZ2UgY2FsbGJhY2tcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBmaWVsZCB2YWx1ZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKTogdW5rbm93bn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uIGNoYW5nZVxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4gdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlciB0b3VjaCBjYWxsYmFja1xuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGZpZWxkIGlzIHRvdWNoZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbigpOiB1bmtub3dufSBmbiAtIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gdG91Y2hcbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgU2V0IGRpc2FibGVkIHN0YXRlXG4gICAqIEBkZXNjcmlwdGlvbiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgZmllbGRcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0Rpc2FibGVkIC0gV2hldGhlciB0aGUgZmllbGQgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgQWZ0ZXIgdmlldyBpbml0aWFsaXphdGlvbiBsb2dpY1xuICAgKiBAZGVzY3JpcHRpb24gUGVyZm9ybXMgbmVjZXNzYXJ5IHNldHVwIGFmdGVyIHRoZSB2aWV3IGhhcyBiZWVuIGluaXRpYWxpemVkXG4gICAqIEByZXR1cm5zIHtIVE1MRWxlbWVudH0gVGhlIHBhcmVudCBlbGVtZW50IG9mIHRoZSBmaWVsZFxuICAgKi9cbiAgYWZ0ZXJWaWV3SW5pdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgbGV0IHBhcmVudDogSFRNTEVsZW1lbnQ7XG4gICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgY2FzZSBPcGVyYXRpb25LZXlzLlJFQUQ6XG4gICAgICBjYXNlIE9wZXJhdGlvbktleXMuREVMRVRFOlxuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgY2FzZSBPcGVyYXRpb25LZXlzLkNSRUFURTpcbiAgICAgIGNhc2UgT3BlcmF0aW9uS2V5cy5VUERBVEU6XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcGFyZW50ID0gTmd4Rm9ybVNlcnZpY2UuZ2V0UGFyZW50RWwodGhpcy5jb21wb25lbnQubmF0aXZlRWxlbWVudCwgJ2RpdicpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKGBVbmFibGUgdG8gcmV0cmlldmUgcGFyZW50IGZvcm0gZWxlbWVudCBmb3IgdGhlICR7dGhpcy5vcGVyYXRpb259OiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTmd4Rm9ybVNlcnZpY2UucmVnaXN0ZXIocGFyZW50LmlkLCB0aGlzLmZvcm1Hcm91cCwgdGhpcyBhcyBBbmd1bGFyRmllbGREZWZpbml0aW9uKTtcbiAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBJbnZhbGlkIG9wZXJhdGlvbjogJHt0aGlzLm9wZXJhdGlvbn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgQ2xlYW51cCBvbiBjb21wb25lbnQgZGVzdHJ1Y3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIFVucmVnaXN0ZXJzIHRoZSBmaWVsZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkXG4gICAqL1xuICBvbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYodGhpcy5mb3JtR3JvdXApXG4gICAgICBOZ3hGb3JtU2VydmljZS51bnJlZ2lzdGVyKHRoaXMuZm9ybUdyb3VwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBHZXQgZmllbGQgZXJyb3JzXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYWxsIGVycm9ycyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkXG4gICAqIEByZXR1cm5zIHtzdHJpbmd8dm9pZH0gQW4gYXJyYXkgb2YgZXJyb3Igb2JqZWN0c1xuICAgKi9cbiAgZ2V0RXJyb3JzKHBhcmVudDogSFRNTEVsZW1lbnQpOiBzdHJpbmcgfCB2b2lkIHtcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2w7XG4gICAgaWYoKCFmb3JtQ29udHJvbC5wcmlzdGluZSB8fCBmb3JtQ29udHJvbC50b3VjaGVkKSAmJiAhZm9ybUNvbnRyb2wudmFsaWQpIHtcbiAgICAgIGNvbnN0IGNvbGxhcHNhYmxlQ29udGFpbmVyID0gcGFyZW50LmNsb3Nlc3QoJ2lvbi1hY2NvcmRpb24tZ3JvdXAnKTtcbiAgICAgIGlmKGNvbGxhcHNhYmxlQ29udGFpbmVyKVxuICAgICAgICBjb2xsYXBzYWJsZUNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJ29wZW4nKTtcbiAgICAgIGNvbnN0IGVycm9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdID0gT2JqZWN0LmtleXMoZm9ybUNvbnRyb2wuZXJyb3JzID8/IHt9KS5tYXAoa2V5ID0+ICh7XG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBtZXNzYWdlOiBrZXksXG4gICAgICB9KSk7XG4gICAgICBmb3IoY29uc3QgZXJyb3Igb2YgZXJyb3JzKVxuICAgICAgICByZXR1cm4gYCogJHt0aGlzLnNmKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBlcnJvcnMuJHtlcnJvcj8uWydtZXNzYWdlJ119YCksICh0aGlzIGFzIEtleVZhbHVlKVtlcnJvcj8uWydrZXknXV0gPz8gXCJcIil9YDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==