@wemake4u/form-player-se 1.0.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 (136) hide show
  1. package/README.md +17 -0
  2. package/esm2022/lib/controls/accordion.mjs +7 -0
  3. package/esm2022/lib/controls/button.mjs +7 -0
  4. package/esm2022/lib/controls/checkbox.mjs +7 -0
  5. package/esm2022/lib/controls/checklist.mjs +7 -0
  6. package/esm2022/lib/controls/chipchecklist.mjs +7 -0
  7. package/esm2022/lib/controls/chipradio.mjs +7 -0
  8. package/esm2022/lib/controls/control.mjs +65 -0
  9. package/esm2022/lib/controls/date.mjs +7 -0
  10. package/esm2022/lib/controls/dynamiclist.mjs +4 -0
  11. package/esm2022/lib/controls/factory.mjs +106 -0
  12. package/esm2022/lib/controls/filepicker.mjs +7 -0
  13. package/esm2022/lib/controls/form.mjs +4 -0
  14. package/esm2022/lib/controls/group.mjs +4 -0
  15. package/esm2022/lib/controls/html.mjs +4 -0
  16. package/esm2022/lib/controls/iframe.mjs +4 -0
  17. package/esm2022/lib/controls/image.mjs +4 -0
  18. package/esm2022/lib/controls/number.mjs +7 -0
  19. package/esm2022/lib/controls/radio.mjs +7 -0
  20. package/esm2022/lib/controls/select.mjs +7 -0
  21. package/esm2022/lib/controls/separator.mjs +4 -0
  22. package/esm2022/lib/controls/spacer.mjs +4 -0
  23. package/esm2022/lib/controls/tab.mjs +7 -0
  24. package/esm2022/lib/controls/table.mjs +13 -0
  25. package/esm2022/lib/controls/taglist.mjs +7 -0
  26. package/esm2022/lib/controls/text.mjs +4 -0
  27. package/esm2022/lib/controls/textarea.mjs +7 -0
  28. package/esm2022/lib/controls/textfield.mjs +18 -0
  29. package/esm2022/lib/controls/time.mjs +7 -0
  30. package/esm2022/lib/controls/toggle.mjs +7 -0
  31. package/esm2022/lib/dataSources/interfaces.mjs +2 -0
  32. package/esm2022/lib/dataSources/odata.mjs +131 -0
  33. package/esm2022/lib/dataSources/rest.mjs +48 -0
  34. package/esm2022/lib/directives/accordion.directive.mjs +52 -0
  35. package/esm2022/lib/directives/adorner.directive.mjs +130 -0
  36. package/esm2022/lib/directives/disable.directive.mjs +38 -0
  37. package/esm2022/lib/directives/display.directive.mjs +46 -0
  38. package/esm2022/lib/directives/dropdown.directive.mjs +233 -0
  39. package/esm2022/lib/directives/frame-security.directive.mjs +66 -0
  40. package/esm2022/lib/directives/grid.directive.mjs +68 -0
  41. package/esm2022/lib/directives/register.directive.mjs +86 -0
  42. package/esm2022/lib/directives/repeat.directive.mjs +38 -0
  43. package/esm2022/lib/directives/tab.directive.mjs +49 -0
  44. package/esm2022/lib/directives/updateblur.directive.mjs +32 -0
  45. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +493 -0
  46. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +395 -0
  47. package/esm2022/lib/locale/locale-it.mjs +13 -0
  48. package/esm2022/lib/services/data.service.mjs +29 -0
  49. package/esm2022/lib/services/event.service.mjs +19 -0
  50. package/esm2022/lib/services/feel.service.mjs +73 -0
  51. package/esm2022/lib/services/formatter.service.mjs +60 -0
  52. package/esm2022/lib/services/markdown.service.mjs +24 -0
  53. package/esm2022/lib/services/mime.service.mjs +32 -0
  54. package/esm2022/lib/services/programmability.service.mjs +221 -0
  55. package/esm2022/lib/services/proxy.service.mjs +131 -0
  56. package/esm2022/lib/services/register.service.mjs +60 -0
  57. package/esm2022/lib/services/sanitize.service.mjs +38 -0
  58. package/esm2022/lib/services/scope.service.mjs +46 -0
  59. package/esm2022/lib/services/toast.service.mjs +37 -0
  60. package/esm2022/lib/services/weak.service.mjs +60 -0
  61. package/esm2022/lib/utils/extractFiles.mjs +30 -0
  62. package/esm2022/lib/utils/gridCells.mjs +49 -0
  63. package/esm2022/lib/utils/groupByRow.mjs +30 -0
  64. package/esm2022/lib/utils/patchForm.mjs +55 -0
  65. package/esm2022/lib/utils/toFormData.mjs +11 -0
  66. package/esm2022/public-api.mjs +8 -0
  67. package/esm2022/wemake4u-form-player-se.mjs +5 -0
  68. package/fesm2022/wemake4u-form-player-se.mjs +3101 -0
  69. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -0
  70. package/index.d.ts +5 -0
  71. package/lib/controls/accordion.d.ts +4 -0
  72. package/lib/controls/button.d.ts +4 -0
  73. package/lib/controls/checkbox.d.ts +4 -0
  74. package/lib/controls/checklist.d.ts +4 -0
  75. package/lib/controls/chipchecklist.d.ts +4 -0
  76. package/lib/controls/chipradio.d.ts +4 -0
  77. package/lib/controls/control.d.ts +24 -0
  78. package/lib/controls/date.d.ts +4 -0
  79. package/lib/controls/dynamiclist.d.ts +3 -0
  80. package/lib/controls/factory.d.ts +4 -0
  81. package/lib/controls/filepicker.d.ts +4 -0
  82. package/lib/controls/form.d.ts +3 -0
  83. package/lib/controls/group.d.ts +3 -0
  84. package/lib/controls/html.d.ts +3 -0
  85. package/lib/controls/iframe.d.ts +3 -0
  86. package/lib/controls/image.d.ts +3 -0
  87. package/lib/controls/number.d.ts +4 -0
  88. package/lib/controls/radio.d.ts +4 -0
  89. package/lib/controls/select.d.ts +4 -0
  90. package/lib/controls/separator.d.ts +3 -0
  91. package/lib/controls/spacer.d.ts +3 -0
  92. package/lib/controls/tab.d.ts +4 -0
  93. package/lib/controls/table.d.ts +6 -0
  94. package/lib/controls/taglist.d.ts +4 -0
  95. package/lib/controls/text.d.ts +3 -0
  96. package/lib/controls/textarea.d.ts +4 -0
  97. package/lib/controls/textfield.d.ts +6 -0
  98. package/lib/controls/time.d.ts +4 -0
  99. package/lib/controls/toggle.d.ts +4 -0
  100. package/lib/dataSources/interfaces.d.ts +8 -0
  101. package/lib/dataSources/odata.d.ts +16 -0
  102. package/lib/dataSources/rest.d.ts +16 -0
  103. package/lib/directives/accordion.directive.d.ts +11 -0
  104. package/lib/directives/adorner.directive.d.ts +22 -0
  105. package/lib/directives/disable.directive.d.ts +12 -0
  106. package/lib/directives/display.directive.d.ts +12 -0
  107. package/lib/directives/dropdown.directive.d.ts +26 -0
  108. package/lib/directives/frame-security.directive.d.ts +14 -0
  109. package/lib/directives/grid.directive.d.ts +17 -0
  110. package/lib/directives/register.directive.d.ts +24 -0
  111. package/lib/directives/repeat.directive.d.ts +12 -0
  112. package/lib/directives/tab.directive.d.ts +11 -0
  113. package/lib/directives/updateblur.directive.d.ts +10 -0
  114. package/lib/dynamic-fields/dynamic-fields.component.d.ts +84 -0
  115. package/lib/dynamic-form/dynamic-form.component.d.ts +76 -0
  116. package/lib/locale/locale-it.d.ts +12 -0
  117. package/lib/services/data.service.d.ts +15 -0
  118. package/lib/services/event.service.d.ts +15 -0
  119. package/lib/services/feel.service.d.ts +10 -0
  120. package/lib/services/formatter.service.d.ts +10 -0
  121. package/lib/services/markdown.service.d.ts +7 -0
  122. package/lib/services/mime.service.d.ts +8 -0
  123. package/lib/services/programmability.service.d.ts +39 -0
  124. package/lib/services/proxy.service.d.ts +31 -0
  125. package/lib/services/register.service.d.ts +18 -0
  126. package/lib/services/sanitize.service.d.ts +12 -0
  127. package/lib/services/scope.service.d.ts +13 -0
  128. package/lib/services/toast.service.d.ts +13 -0
  129. package/lib/services/weak.service.d.ts +10 -0
  130. package/lib/utils/extractFiles.d.ts +4 -0
  131. package/lib/utils/gridCells.d.ts +19 -0
  132. package/lib/utils/groupByRow.d.ts +38 -0
  133. package/lib/utils/patchForm.d.ts +8 -0
  134. package/lib/utils/toFormData.d.ts +1 -0
  135. package/package.json +42 -0
  136. package/public-api.d.ts +4 -0
@@ -0,0 +1,233 @@
1
+ import { Directive, Host } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "ngx-sirio-lib";
4
+ export class DropdownDirective {
5
+ el;
6
+ renderer;
7
+ sirioSelect;
8
+ constructor(el, renderer, sirioSelect) {
9
+ this.el = el;
10
+ this.renderer = renderer;
11
+ this.sirioSelect = sirioSelect;
12
+ }
13
+ ngAfterViewInit() {
14
+ this.handleNullValue();
15
+ this.handleSearchable();
16
+ }
17
+ handleNullValue() {
18
+ if (this.sirioSelect
19
+ && this.sirioSelect.value === null
20
+ && Array.isArray(this.sirioSelect.options)) {
21
+ const nullOption = this.sirioSelect.options.find(option => option.value === null);
22
+ if (nullOption) {
23
+ nullOption.isSelected = true;
24
+ }
25
+ }
26
+ }
27
+ handleSearchable() {
28
+ const searchable = this.el.nativeElement.querySelector('.searchable');
29
+ if (searchable) {
30
+ const dropDown = this.el.nativeElement.querySelector('.sirio-dropdown');
31
+ const dropMenu = dropDown.querySelector('.sirio-dropdown-menu');
32
+ const input = searchable.querySelector('input');
33
+ this.renderer.insertBefore(dropDown, searchable, dropMenu);
34
+ this.renderer.listen(input, 'blur', (event) => {
35
+ this.sirioSelect.panel.close();
36
+ });
37
+ this.renderer.listen(input, 'keyup', (event) => {
38
+ this.onKeyUp(event, input);
39
+ });
40
+ this.renderer.listen(input, 'keydown', (event) => {
41
+ this.onKeyDown(event);
42
+ });
43
+ this.sirioSelect.panel.panelOpened.subscribe(() => {
44
+ this.activate(searchable);
45
+ });
46
+ this.sirioSelect.panel.panelClosed.subscribe(() => {
47
+ this.deactivate(searchable);
48
+ });
49
+ }
50
+ }
51
+ deactivate(element) {
52
+ this.renderer.setStyle(element, 'display', 'none');
53
+ }
54
+ activate(element) {
55
+ let currentValue = "";
56
+ if (this.sirioSelect.optionsSelected.length > 0) {
57
+ currentValue = this.sirioSelect.optionsSelected[0].text;
58
+ }
59
+ const input = element.querySelector("input");
60
+ if (!input)
61
+ return;
62
+ input.value = currentValue;
63
+ const dropMenu = this.el.nativeElement.querySelector('.sirio-dropdown-menu');
64
+ this.sirioSelect.options.forEach((option) => {
65
+ this.show(option, true);
66
+ if (currentValue == option.text) {
67
+ dropMenu.scrollTop = this.native(option).offsetTop;
68
+ }
69
+ });
70
+ this.renderer.setStyle(element, 'display', 'inline-block');
71
+ setTimeout(() => {
72
+ input.setSelectionRange(input.value.length, input.value.length);
73
+ input.focus();
74
+ });
75
+ }
76
+ onKeyUp(event, input) {
77
+ const { code } = event;
78
+ switch (code) {
79
+ case 'Enter':
80
+ case 'Space':
81
+ case 'ArrowDown':
82
+ case 'ArrowUp':
83
+ case 'Escape':
84
+ return;
85
+ }
86
+ const value = this.comparable(input.value);
87
+ let firstMatch = true;
88
+ this.sirioSelect.options.forEach((option, index) => {
89
+ const match = this.comparable(option.text).includes(value);
90
+ this.show(option, match);
91
+ if (match && firstMatch) {
92
+ option.setFocus();
93
+ firstMatch = false;
94
+ }
95
+ else {
96
+ option.removeFocus();
97
+ }
98
+ });
99
+ }
100
+ onKeyDown(event) {
101
+ const panel = this.sirioSelect.panel;
102
+ if (!panel) {
103
+ return;
104
+ }
105
+ const panelIsOpen = panel.panelIsOpen;
106
+ const { code } = event;
107
+ if (panelIsOpen) {
108
+ switch (code) {
109
+ case 'Enter':
110
+ case 'Space':
111
+ if (panel.optionFocused) {
112
+ panel.optionFocused?.onOptionSelected(event);
113
+ }
114
+ else {
115
+ panel.close(event);
116
+ event?.preventDefault();
117
+ }
118
+ break;
119
+ case 'ArrowDown':
120
+ this.scrollDown();
121
+ event?.preventDefault();
122
+ break;
123
+ case 'ArrowUp':
124
+ this.scrollUp();
125
+ event?.preventDefault();
126
+ break;
127
+ case 'Escape':
128
+ panel.close(event);
129
+ break;
130
+ default:
131
+ break;
132
+ }
133
+ }
134
+ if (!panelIsOpen) {
135
+ switch (code) {
136
+ case 'Enter':
137
+ case 'Space':
138
+ panel.open(event);
139
+ event?.preventDefault();
140
+ break;
141
+ default:
142
+ break;
143
+ }
144
+ }
145
+ }
146
+ native(option) {
147
+ return option.viewContainerRef.element.nativeElement;
148
+ }
149
+ isHidden(option) {
150
+ return this.native(option).style.display === 'none';
151
+ }
152
+ show(option, value) {
153
+ this.native(option).style.display = value ? '' : 'none';
154
+ }
155
+ comparable(text) {
156
+ return text.toLowerCase().trim();
157
+ }
158
+ scrollDown() {
159
+ const panel = this.sirioSelect.panel;
160
+ if (!panel.optionFocused) {
161
+ panel.scrollBarTop();
162
+ panel.options.first.setFocus();
163
+ return;
164
+ }
165
+ const nextOptionFocused = this.findNextVisibleOption(panel.optionFocusedIndex + 1, panel.options);
166
+ panel.scrollBarDown();
167
+ panel.optionFocused?.removeFocus();
168
+ if (nextOptionFocused) {
169
+ nextOptionFocused?.setFocus();
170
+ return;
171
+ }
172
+ panel.scrollBarTop();
173
+ const firstVisible = this.findNextVisibleOption(0, panel.options);
174
+ if (firstVisible) {
175
+ firstVisible.setFocus();
176
+ }
177
+ }
178
+ scrollUp() {
179
+ const panel = this.sirioSelect.panel;
180
+ if (!panel.optionFocused) {
181
+ panel.scrollBarTop();
182
+ panel.options.last.setFocus();
183
+ return;
184
+ }
185
+ const nextOptionFocused = this.findPreviousVisibleOption(panel.optionFocusedIndex - 1, panel.options);
186
+ if (nextOptionFocused) {
187
+ panel.scrollBarUp();
188
+ panel.optionFocused?.removeFocus();
189
+ nextOptionFocused?.setFocus();
190
+ return;
191
+ }
192
+ panel.optionFocused?.removeFocus();
193
+ panel.scrollBarBottom();
194
+ const lastVisible = this.findPreviousVisibleOption(panel.options.length - 1, panel.options);
195
+ if (lastVisible) {
196
+ lastVisible.setFocus();
197
+ }
198
+ }
199
+ findPreviousVisibleOption(startIndex, options) {
200
+ let i = startIndex;
201
+ while (i >= 0) {
202
+ const option = options.get(i);
203
+ if (!this.isHidden(option)) {
204
+ return option;
205
+ }
206
+ i--;
207
+ }
208
+ return null;
209
+ }
210
+ findNextVisibleOption(startIndex, options) {
211
+ let i = startIndex;
212
+ while (i < options.length) {
213
+ const option = options.get(i);
214
+ if (!this.isHidden(option)) {
215
+ return option;
216
+ }
217
+ i++;
218
+ }
219
+ return null;
220
+ }
221
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SirioSelectComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
222
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DropdownDirective, isStandalone: true, selector: "[dropdown]", ngImport: i0 });
223
+ }
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownDirective, decorators: [{
225
+ type: Directive,
226
+ args: [{
227
+ selector: '[dropdown]',
228
+ standalone: true
229
+ }]
230
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SirioSelectComponent, decorators: [{
231
+ type: Host
232
+ }] }] });
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9kcm9wZG93bi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNkIsSUFBSSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7QUFPdEYsTUFBTSxPQUFPLGlCQUFpQjtJQUdsQjtJQUNBO0lBRVE7SUFKbEIsWUFDVSxFQUFjLEVBQ2QsUUFBbUIsRUFFWCxXQUFpQztRQUh6QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUVYLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtJQUMvQyxDQUFDO0lBRUwsZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLElBQUksQ0FBQyxXQUFXO2VBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEtBQUssSUFBSTtlQUMvQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQzFDLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBRWxGLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCO1FBRXRCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxh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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgSG9zdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkcm9wZG93bl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIFxyXG4gICAgQEhvc3QoKSBwcml2YXRlIHNpcmlvU2VsZWN0OiBTaXJpb1NlbGVjdENvbXBvbmVudFxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlTnVsbFZhbHVlKCk7XHJcbiAgICB0aGlzLmhhbmRsZVNlYXJjaGFibGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTnVsbFZhbHVlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2lyaW9TZWxlY3RcclxuICAgICAgJiYgdGhpcy5zaXJpb1NlbGVjdC52YWx1ZSA9PT0gbnVsbFxyXG4gICAgICAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucylcclxuICAgICkge1xyXG4gICAgICBjb25zdCBudWxsT3B0aW9uID0gdGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gbnVsbCk7XHJcblxyXG4gICAgICBpZiAobnVsbE9wdGlvbikge1xyXG4gICAgICAgIG51bGxPcHRpb24uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2VhcmNoYWJsZSgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBzZWFyY2hhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2hhYmxlJyk7XHJcbiAgICBpZiAoc2VhcmNoYWJsZSkge1xyXG4gICAgICBjb25zdCBkcm9wRG93biA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24nKTtcclxuICAgICAgY29uc3QgZHJvcE1lbnUgPSBkcm9wRG93bi5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24tbWVudScpO1xyXG4gICAgICBjb25zdCBpbnB1dCA9IHNlYXJjaGFibGUucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoZHJvcERvd24sIHNlYXJjaGFibGUsIGRyb3BNZW51KTtcclxuXHJcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGlucHV0LCAnYmx1cicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2lyaW9TZWxlY3QucGFuZWwuY2xvc2UoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dCwgJ2tleXVwJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vbktleVVwKGV2ZW50LCBpbnB1dCk7ICAgICAgICBcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dCwgJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uS2V5RG93bihldmVudCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5wYW5lbE9wZW5lZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGUoc2VhcmNoYWJsZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5wYW5lbENsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZShzZWFyY2hhYmxlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVhY3RpdmF0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjdGl2YXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICBsZXQgY3VycmVudFZhbHVlID0gXCJcIjtcclxuXHJcbiAgICBpZiAodGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zU2VsZWN0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICBjdXJyZW50VmFsdWUgPSB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnNTZWxlY3RlZFswXS50ZXh0XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuXHJcbiAgICBpZiAoIWlucHV0KVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaW5wdXQudmFsdWUgPSBjdXJyZW50VmFsdWU7XHJcblxyXG4gICAgY29uc3QgZHJvcE1lbnUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNpcmlvLWRyb3Bkb3duLW1lbnUnKTtcclxuXHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvdyhvcHRpb24sIHRydWUpO1xyXG4gICAgICBpZiAoY3VycmVudFZhbHVlID09IG9wdGlvbi50ZXh0KSB7XHJcbiAgICAgICAgZHJvcE1lbnUuc2Nyb2xsVG9wID0gdGhpcy5uYXRpdmUob3B0aW9uKS5vZmZzZXRUb3A7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ2Rpc3BsYXknLCAnaW5saW5lLWJsb2NrJyk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGlucHV0LnZhbHVlLmxlbmd0aCwgaW5wdXQudmFsdWUubGVuZ3RoKTtcclxuICAgICAgaW5wdXQuZm9jdXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbnB1dDogYW55KSB7XHJcbiAgICBjb25zdCB7IGNvZGUgfSA9IGV2ZW50O1xyXG5cclxuICAgIHN3aXRjaCAoY29kZSkge1xyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb21wYXJhYmxlKGlucHV0LnZhbHVlKTtcclxuICAgIGxldCBmaXJzdE1hdGNoID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBtYXRjaCA9IHRoaXMuY29tcGFyYWJsZShvcHRpb24udGV4dCkuaW5jbHVkZXModmFsdWUpO1xyXG4gICAgICB0aGlzLnNob3cob3B0aW9uLCBtYXRjaCk7XHJcbiAgICAgIGlmIChtYXRjaCAmJiBmaXJzdE1hdGNoKSB7XHJcbiAgICAgICAgb3B0aW9uLnNldEZvY3VzKCk7XHJcbiAgICAgICAgZmlyc3RNYXRjaCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIG9wdGlvbi5yZW1vdmVGb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBwYW5lbCA9IHRoaXMuc2lyaW9TZWxlY3QucGFuZWw7XHJcbiAgICBpZiAoIXBhbmVsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhbmVsSXNPcGVuID0gcGFuZWwucGFuZWxJc09wZW47XHJcbiAgICBjb25zdCB7IGNvZGUgfSA9IGV2ZW50O1xyXG4gICAgaWYgKHBhbmVsSXNPcGVuKSB7XHJcbiAgICAgIHN3aXRjaCAoY29kZSkge1xyXG4gICAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgICBjYXNlICdTcGFjZSc6XHJcbiAgICAgICAgICBpZiAocGFuZWwub3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICAgICAgICBwYW5lbC5vcHRpb25Gb2N1c2VkPy5vbk9wdGlvblNlbGVjdGVkKGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwYW5lbC5jbG9zZShldmVudCk7XHJcbiAgICAgICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsRG93bigpO1xyXG4gICAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdBcnJvd1VwJzpcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsVXAoKTtcclxuICAgICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICAgIHBhbmVsLmNsb3NlKGV2ZW50KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFwYW5lbElzT3Blbikge1xyXG4gICAgICBzd2l0Y2ggKGNvZGUpIHtcclxuICAgICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgY2FzZSAnU3BhY2UnOlxyXG4gICAgICAgICAgcGFuZWwub3BlbihldmVudCk7XHJcbiAgICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXRpdmUob3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiBvcHRpb24udmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSGlkZGVuKG9wdGlvbjogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5uYXRpdmUob3B0aW9uKS5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3cob3B0aW9uOiBhbnksIHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm5hdGl2ZShvcHRpb24pLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/ICcnIDogJ25vbmUnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wYXJhYmxlKHRleHQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRleHQudG9Mb3dlckNhc2UoKS50cmltKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjcm9sbERvd24oKSB7XHJcbiAgICBjb25zdCBwYW5lbCA9IHRoaXMuc2lyaW9TZWxlY3QucGFuZWw7XHJcbiAgICBpZiAoIXBhbmVsLm9wdGlvbkZvY3VzZWQpIHtcclxuICAgICAgcGFuZWwuc2Nyb2xsQmFyVG9wKCk7XHJcbiAgICAgIHBhbmVsLm9wdGlvbnMuZmlyc3Quc2V0Rm9jdXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbmV4dE9wdGlvbkZvY3VzZWQgPSB0aGlzLmZpbmROZXh0VmlzaWJsZU9wdGlvbihwYW5lbC5vcHRpb25Gb2N1c2VkSW5kZXggKyAxLCBwYW5lbC5vcHRpb25zKTtcclxuICAgIHBhbmVsLnNjcm9sbEJhckRvd24oKTtcclxuICAgIHBhbmVsLm9wdGlvbkZvY3VzZWQ/LnJlbW92ZUZvY3VzKCk7XHJcbiAgICBpZiAobmV4dE9wdGlvbkZvY3VzZWQpIHtcclxuICAgICAgbmV4dE9wdGlvbkZvY3VzZWQ/LnNldEZvY3VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHBhbmVsLnNjcm9sbEJhclRvcCgpO1xyXG4gICAgY29uc3QgZmlyc3RWaXNpYmxlID0gdGhpcy5maW5kTmV4dFZpc2libGVPcHRpb24oMCwgcGFuZWwub3B0aW9ucyk7XHJcbiAgICBpZiAoZmlyc3RWaXNpYmxlKSB7XHJcbiAgICAgIGZpcnN0VmlzaWJsZS5zZXRGb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxVcCgpIHtcclxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5zaXJpb1NlbGVjdC5wYW5lbDtcclxuICAgIGlmICghcGFuZWwub3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICBwYW5lbC5zY3JvbGxCYXJUb3AoKTtcclxuICAgICAgcGFuZWwub3B0aW9ucy5sYXN0LnNldEZvY3VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gICAgXHJcbiAgICBjb25zdCBuZXh0T3B0aW9uRm9jdXNlZCA9IHRoaXMuZmluZFByZXZpb3VzVmlzaWJsZU9wdGlvbihwYW5lbC5vcHRpb25Gb2N1c2VkSW5kZXggLSAxLCBwYW5lbC5vcHRpb25zKTtcclxuICAgIGlmIChuZXh0T3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICBwYW5lbC5zY3JvbGxCYXJVcCgpO1xyXG4gICAgICBwYW5lbC5vcHRpb25Gb2N1c2VkPy5yZW1vdmVGb2N1cygpO1xyXG4gICAgICBuZXh0T3B0aW9uRm9jdXNlZD8uc2V0Rm9jdXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcGFuZWwub3B0aW9uRm9jdXNlZD8ucmVtb3ZlRm9jdXMoKTtcclxuICAgIHBhbmVsLnNjcm9sbEJhckJvdHRvbSgpO1xyXG4gICAgY29uc3QgbGFzdFZpc2libGUgPSB0aGlzLmZpbmRQcmV2aW91c1Zpc2libGVPcHRpb24ocGFuZWwub3B0aW9ucy5sZW5ndGggLSAxLCBwYW5lbC5vcHRpb25zKTtcclxuICAgIGlmIChsYXN0VmlzaWJsZSkge1xyXG4gICAgICBsYXN0VmlzaWJsZS5zZXRGb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kUHJldmlvdXNWaXNpYmxlT3B0aW9uKHN0YXJ0SW5kZXg6IG51bWJlciwgb3B0aW9uczogYW55KTogYW55IHwgbnVsbCB7XHJcbiAgICBsZXQgaSA9IHN0YXJ0SW5kZXg7XHJcbiAgICB3aGlsZSAoaSA+PSAwKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZ2V0KGkpO1xyXG4gICAgICBpZiAoIXRoaXMuaXNIaWRkZW4ob3B0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgaS0tO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmROZXh0VmlzaWJsZU9wdGlvbihzdGFydEluZGV4OiBudW1iZXIsIG9wdGlvbnM6IGFueSk6IGFueSB8IG51bGwge1xyXG4gICAgbGV0IGkgPSBzdGFydEluZGV4O1xyXG4gICAgd2hpbGUgKGkgPCBvcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zLmdldChpKTtcclxuICAgICAgaWYgKCF0aGlzLmlzSGlkZGVuKG9wdGlvbikpIHtcclxuICAgICAgICByZXR1cm4gb3B0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,66 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FrameSecurityDirective {
4
+ el;
5
+ renderer;
6
+ frameSecurity = null;
7
+ constructor(el, renderer) {
8
+ this.el = el;
9
+ this.renderer = renderer;
10
+ }
11
+ ngAfterViewInit() {
12
+ const frame = this.el.nativeElement;
13
+ const sandbox = this.getSandBox(this.frameSecurity);
14
+ if (sandbox)
15
+ this.renderer.setAttribute(frame, 'sandbox', sandbox);
16
+ const allow = this.getAllow(this.frameSecurity);
17
+ if (allow)
18
+ this.renderer.setAttribute(frame, 'allow', allow);
19
+ }
20
+ getSandBox(security) {
21
+ let allowedProperties = [
22
+ "allowScripts",
23
+ "allowSameOrigin",
24
+ "allowForms",
25
+ "allowModals",
26
+ "allowPopups",
27
+ "allowTopNavigation",
28
+ "allowStorageAccessByUserActivation"
29
+ ];
30
+ let sandBox = Object.entries(security)
31
+ .filter(([key, value]) => value === true && allowedProperties.includes(key))
32
+ .map(([key]) => this.camelToKebabCase(key))
33
+ .join(' ');
34
+ return sandBox;
35
+ }
36
+ ;
37
+ getAllow(security) {
38
+ let allowedProperties = [
39
+ "fullscreen",
40
+ "geolocation",
41
+ "camera",
42
+ "microphone"
43
+ ];
44
+ let allow = Object.entries(security)
45
+ .filter(([key, value]) => value === true && allowedProperties.includes(key))
46
+ .map(([key]) => key)
47
+ .join(' ');
48
+ return allow;
49
+ }
50
+ ;
51
+ camelToKebabCase(str) {
52
+ return str.replace(/[A-Z]/g, (match) => '-' + match.toLowerCase());
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FrameSecurityDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
55
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FrameSecurityDirective, isStandalone: true, selector: "[frameSecurity]", inputs: { frameSecurity: "frameSecurity" }, ngImport: i0 });
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FrameSecurityDirective, decorators: [{
58
+ type: Directive,
59
+ args: [{
60
+ selector: '[frameSecurity]',
61
+ standalone: true
62
+ }]
63
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { frameSecurity: [{
64
+ type: Input
65
+ }] } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtc2VjdXJpdHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9mcmFtZS1zZWN1cml0eS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXdDLE1BQU0sZUFBZSxDQUFDOztBQU12RixNQUFNLE9BQU8sc0JBQXNCO0lBR2I7SUFBd0I7SUFGbkMsYUFBYSxHQUFRLElBQUksQ0FBQztJQUVuQyxZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7SUFBSSxDQUFDO0lBRXBFLGVBQWU7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUVwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVwRCxJQUFJLE9BQU87WUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhELElBQUksS0FBSztZQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxRQUFhO1FBQzlCLElBQUksaUJBQWlCLEdBQWE7WUFDaEMsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixZQUFZO1lBQ1osYUFBYTtZQUNiLGFBQWE7WUFDYixvQkFBb0I7WUFDcEIsb0NBQW9DO1NBQ3JDLENBQUM7UUFDRixJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0UsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUViLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFBQSxDQUFDO0lBRU0sUUFBUSxDQUFDLFFBQWE7UUFDNUIsSUFBSSxpQkFBaUIsR0FBYTtZQUNoQyxZQUFZO1lBQ1osYUFBYTtZQUNiLFFBQVE7WUFDUixZQUFZO1NBQ2IsQ0FBQztRQUNGLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2FBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMzRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQUEsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEdBQVc7UUFDbEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7d0dBdERVLHNCQUFzQjs0RkFBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjt1R0FFVSxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tmcmFtZVNlY3VyaXR5XScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJhbWVTZWN1cml0eURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGZyYW1lU2VjdXJpdHk6IGFueSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikgeyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZyYW1lID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGNvbnN0IHNhbmRib3ggPSB0aGlzLmdldFNhbmRCb3godGhpcy5mcmFtZVNlY3VyaXR5KTtcclxuXHJcbiAgICBpZiAoc2FuZGJveClcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZnJhbWUsICdzYW5kYm94Jywgc2FuZGJveCk7XHJcblxyXG4gICAgY29uc3QgYWxsb3cgPSB0aGlzLmdldEFsbG93KHRoaXMuZnJhbWVTZWN1cml0eSk7XHJcblxyXG4gICAgaWYgKGFsbG93KVxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShmcmFtZSwgJ2FsbG93JywgYWxsb3cpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTYW5kQm94KHNlY3VyaXR5OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgbGV0IGFsbG93ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgXCJhbGxvd1NjcmlwdHNcIixcclxuICAgICAgXCJhbGxvd1NhbWVPcmlnaW5cIixcclxuICAgICAgXCJhbGxvd0Zvcm1zXCIsXHJcbiAgICAgIFwiYWxsb3dNb2RhbHNcIixcclxuICAgICAgXCJhbGxvd1BvcHVwc1wiLFxyXG4gICAgICBcImFsbG93VG9wTmF2aWdhdGlvblwiLFxyXG4gICAgICBcImFsbG93U3RvcmFnZUFjY2Vzc0J5VXNlckFjdGl2YXRpb25cIlxyXG4gICAgXTtcclxuICAgIGxldCBzYW5kQm94ID0gT2JqZWN0LmVudHJpZXMoc2VjdXJpdHkpXHJcbiAgICAgIC5maWx0ZXIoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUgPT09IHRydWUgJiYgYWxsb3dlZFByb3BlcnRpZXMuaW5jbHVkZXMoa2V5KSlcclxuICAgICAgLm1hcCgoW2tleV0pID0+IHRoaXMuY2FtZWxUb0tlYmFiQ2FzZShrZXkpKVxyXG4gICAgICAuam9pbignICcpO1xyXG5cclxuICAgIHJldHVybiBzYW5kQm94O1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZ2V0QWxsb3coc2VjdXJpdHk6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgYWxsb3dlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICBcImZ1bGxzY3JlZW5cIixcclxuICAgICAgXCJnZW9sb2NhdGlvblwiLFxyXG4gICAgICBcImNhbWVyYVwiLFxyXG4gICAgICBcIm1pY3JvcGhvbmVcIlxyXG4gICAgXTtcclxuICAgIGxldCBhbGxvdyA9IE9iamVjdC5lbnRyaWVzKHNlY3VyaXR5KVxyXG4gICAgICAuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IHZhbHVlID09PSB0cnVlICYmIGFsbG93ZWRQcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSkpXHJcbiAgICAgIC5tYXAoKFtrZXldKSA9PiBrZXkpXHJcbiAgICAgIC5qb2luKCcgJyk7XHJcblxyXG4gICAgcmV0dXJuIGFsbG93O1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgY2FtZWxUb0tlYmFiQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tBLVpdL2csIChtYXRjaCkgPT4gJy0nICsgbWF0Y2gudG9Mb3dlckNhc2UoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { Directive, Input, Host } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "ag-grid-angular";
4
+ export class GridDirective {
5
+ grid;
6
+ rowSource = null;
7
+ constructor(grid) {
8
+ this.grid = grid;
9
+ grid.gridReady.subscribe(() => {
10
+ this.isGridReady = true;
11
+ });
12
+ }
13
+ ngOnChanges(changes) {
14
+ if (changes["rowSource"]) {
15
+ this.onRowChanges();
16
+ }
17
+ }
18
+ isGridReady = false;
19
+ onRowChanges() {
20
+ if (this.isArray(this.rowSource)) {
21
+ this.setRowData(this.rowSource);
22
+ }
23
+ else if (this.isDataSource(this.rowSource)) {
24
+ this.setDataSource(this.rowSource);
25
+ }
26
+ else {
27
+ this.setRowData([]);
28
+ }
29
+ }
30
+ setRowData(rowSource) {
31
+ this.grid.rowModelType = 'clientSide';
32
+ if (this.isGridReady) {
33
+ this.grid.api.setGridOption('rowData', rowSource);
34
+ }
35
+ else {
36
+ this.grid.rowData = rowSource;
37
+ }
38
+ }
39
+ setDataSource(rowSource) {
40
+ this.grid.rowModelType = 'infinite';
41
+ if (this.isGridReady) {
42
+ this.grid.api.setGridOption('datasource', rowSource);
43
+ }
44
+ else {
45
+ this.grid.datasource = rowSource;
46
+ }
47
+ }
48
+ isArray(rowSource) {
49
+ return Array.isArray(rowSource);
50
+ }
51
+ isDataSource(obj) {
52
+ return typeof obj.getRows === "function";
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridDirective, deps: [{ token: i1.AgGridAngular, host: true }], target: i0.ɵɵFactoryTarget.Directive });
55
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GridDirective, isStandalone: true, selector: "[rowSource]", inputs: { rowSource: "rowSource" }, usesOnChanges: true, ngImport: i0 });
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridDirective, decorators: [{
58
+ type: Directive,
59
+ args: [{
60
+ selector: '[rowSource]',
61
+ standalone: true
62
+ }]
63
+ }], ctorParameters: () => [{ type: i1.AgGridAngular, decorators: [{
64
+ type: Host
65
+ }] }], propDecorators: { rowSource: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2dyaWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRixNQUFNLE9BQU8sYUFBYTtJQUlOO0lBSFQsU0FBUyxHQUFRLElBQUksQ0FBQztJQUUvQixZQUNrQixJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBR25DLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLEdBQVksS0FBSyxDQUFDO0lBRTdCLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7YUFDSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLFNBQWM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEQsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsU0FBYztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2RCxDQUFDO2FBQ0ksQ0FBQztZQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLE9BQU8sQ0FBQyxTQUFjO1FBQzVCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVE7UUFDM0IsT0FBTyxPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzNDLENBQUM7d0dBMURVLGFBQWE7NEZBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFKekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFLSSxJQUFJO3lDQUhFLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEhvc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7IElSb3dzU291cmNlIH0gZnJvbSAnLi4vZGF0YVNvdXJjZXMvaW50ZXJmYWNlcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tyb3dTb3VyY2VdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSByb3dTb3VyY2U6IGFueSA9IG51bGw7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASG9zdCgpIHByaXZhdGUgZ3JpZDogQWdHcmlkQW5ndWxhclxyXG4gICkge1xyXG5cclxuICAgIGdyaWQuZ3JpZFJlYWR5LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNHcmlkUmVhZHkgPSB0cnVlOyAgICAgIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcInJvd1NvdXJjZVwiXSkge1xyXG4gICAgICB0aGlzLm9uUm93Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0dyaWRSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIG9uUm93Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzQXJyYXkodGhpcy5yb3dTb3VyY2UpKSB7XHJcbiAgICAgIHRoaXMuc2V0Um93RGF0YSh0aGlzLnJvd1NvdXJjZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmlzRGF0YVNvdXJjZSh0aGlzLnJvd1NvdXJjZSkpIHtcclxuICAgICAgdGhpcy5zZXREYXRhU291cmNlKHRoaXMucm93U291cmNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFJvd0RhdGEoW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRSb3dEYXRhKHJvd1NvdXJjZTogYW55KSB7XHJcbiAgICB0aGlzLmdyaWQucm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xyXG4gICAgaWYgKHRoaXMuaXNHcmlkUmVhZHkpIHtcclxuICAgICAgdGhpcy5ncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgcm93U291cmNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWQucm93RGF0YSA9IHJvd1NvdXJjZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YVNvdXJjZShyb3dTb3VyY2U6IGFueSkge1xyXG4gICAgdGhpcy5ncmlkLnJvd01vZGVsVHlwZSA9ICdpbmZpbml0ZSc7XHJcbiAgICBpZiAodGhpcy5pc0dyaWRSZWFkeSkge1xyXG4gICAgICB0aGlzLmdyaWQuYXBpLnNldEdyaWRPcHRpb24oJ2RhdGFzb3VyY2UnLCByb3dTb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JpZC5kYXRhc291cmNlID0gcm93U291cmNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FycmF5KHJvd1NvdXJjZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyb3dTb3VyY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RhdGFTb3VyY2Uob2JqOiBhbnkpOiBvYmogaXMgSVJvd3NTb3VyY2Uge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBvYmouZ2V0Um93cyA9PT0gXCJmdW5jdGlvblwiO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,86 @@
1
+ import { Directive, Input, ContentChild, ContentChildren } from '@angular/core';
2
+ import { RegisterService } from '../services/register.service';
3
+ import { createControl } from '../controls/factory';
4
+ import { DynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.component';
5
+ import { ItemControl } from '../controls/control';
6
+ import { Subject } from 'rxjs';
7
+ import { takeUntil } from 'rxjs/operators';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../services/register.service";
10
+ import * as i2 from "../services/proxy.service";
11
+ export class RegisterDirective {
12
+ el;
13
+ registerService;
14
+ proxyService;
15
+ register = null;
16
+ componentRef;
17
+ dynamicField;
18
+ itemFields;
19
+ constructor(el, registerService, proxyService) {
20
+ this.el = el;
21
+ this.registerService = registerService;
22
+ this.proxyService = proxyService;
23
+ }
24
+ ngAfterContentInit() {
25
+ this.registerControl();
26
+ }
27
+ ngOnDestroy() {
28
+ this.unregisterControl();
29
+ this.destroy$.next();
30
+ this.destroy$.complete();
31
+ }
32
+ destroy$ = new Subject();
33
+ registerControl() {
34
+ const name = this.getName();
35
+ const register = (this.register.type === 'dynamiclist')
36
+ ? this.createDynamicRegister(name, this.register, this.componentRef, this.el, this.itemFields)
37
+ : this.dynamicField?.getRegister();
38
+ const control = createControl(name, this.register, this.componentRef, this.el, register);
39
+ this.registerService.register(name, control);
40
+ }
41
+ unregisterControl() {
42
+ this.registerService.unregister(this.getName());
43
+ }
44
+ getName() {
45
+ return this.register.name ?? this.register.id;
46
+ }
47
+ createDynamicRegister(name, metadata, componentRef, el, itemFields) {
48
+ const newRegister = new RegisterService(this.proxyService, null);
49
+ const registerAll = (itemFields) => {
50
+ newRegister.unregisterAll();
51
+ itemFields.forEach((itemField, index) => {
52
+ const register = itemField.getRegister();
53
+ const newName = `${name}-${index}`;
54
+ const control = new ItemControl(newName, index, metadata, componentRef, el, register);
55
+ newRegister.register(newName, control);
56
+ });
57
+ };
58
+ registerAll(itemFields);
59
+ itemFields.changes
60
+ .pipe(takeUntil(this.destroy$))
61
+ .subscribe((itemFields) => {
62
+ registerAll(itemFields);
63
+ });
64
+ return newRegister;
65
+ }
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterDirective, deps: [{ token: i0.ElementRef }, { token: i1.RegisterService }, { token: i2.ProxyService }], target: i0.ɵɵFactoryTarget.Directive });
67
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RegisterDirective, isStandalone: true, selector: "[register]", inputs: { register: "register", componentRef: "componentRef" }, queries: [{ propertyName: "dynamicField", first: true, predicate: DynamicFieldsComponent, descendants: true }, { propertyName: "itemFields", predicate: DynamicFieldsComponent, descendants: true }], ngImport: i0 });
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterDirective, decorators: [{
70
+ type: Directive,
71
+ args: [{
72
+ selector: '[register]',
73
+ standalone: true
74
+ }]
75
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.RegisterService }, { type: i2.ProxyService }], propDecorators: { register: [{
76
+ type: Input
77
+ }], componentRef: [{
78
+ type: Input
79
+ }], dynamicField: [{
80
+ type: ContentChild,
81
+ args: [DynamicFieldsComponent]
82
+ }], itemFields: [{
83
+ type: ContentChildren,
84
+ args: [DynamicFieldsComponent, { descendants: true }]
85
+ }] } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9yZWdpc3Rlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQ2QsWUFBWSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFNM0MsTUFBTSxPQUFPLGlCQUFpQjtJQU9sQjtJQUNBO0lBQ0E7SUFSRCxRQUFRLEdBQVEsSUFBSSxDQUFDO0lBQ3JCLFlBQVksQ0FBTTtJQUNXLFlBQVksQ0FBMEI7SUFDWixVQUFVLENBQXFDO0lBRS9HLFlBQ1UsRUFBYyxFQUNkLGVBQWdDLEVBQ2hDLFlBQTBCO1FBRjFCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDaEMsQ0FBQztJQUVMLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxR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QUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERpcmVjdGl2ZSwgSW5wdXQsIEVsZW1lbnRSZWYsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxyXG4gICwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJveHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJveHkuc2VydmljZSc7XHJcbmltcG9ydCB7IGNyZWF0ZUNvbnRyb2wgfSBmcm9tICcuLi9jb250cm9scy9mYWN0b3J5JztcclxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkc0NvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZmllbGRzL2R5bmFtaWMtZmllbGRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEl0ZW1Db250cm9sIH0gZnJvbSAnLi4vY29udHJvbHMvY29udHJvbCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmVnaXN0ZXJdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgcmVnaXN0ZXI6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgY29tcG9uZW50UmVmOiBhbnk7XHJcbiAgQENvbnRlbnRDaGlsZChEeW5hbWljRmllbGRzQ29tcG9uZW50KSBkeW5hbWljRmllbGQ/OiBEeW5hbWljRmllbGRzQ29tcG9uZW50O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oRHluYW1pY0ZpZWxkc0NvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBpdGVtRmllbGRzITogUXVlcnlMaXN0PER5bmFtaWNGaWVsZHNDb21wb25lbnQ+O1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVnaXN0ZXJTZXJ2aWNlOiBSZWdpc3RlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb3h5U2VydmljZTogUHJveHlTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWdpc3RlckNvbnRyb2woKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51bnJlZ2lzdGVyQ29udHJvbCgpO1xyXG5cclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJDb250cm9sKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpO1xyXG5cclxuICAgIGNvbnN0IHJlZ2lzdGVyID0gKHRoaXMucmVnaXN0ZXIudHlwZSA9PT0gJ2R5bmFtaWNsaXN0JylcclxuICAgICAgPyB0aGlzLmNyZWF0ZUR5bmFtaWNSZWdpc3RlcihuYW1lLCB0aGlzLnJlZ2lzdGVyLCB0aGlzLmNvbXBvbmVudFJlZiwgdGhpcy5lbCwgdGhpcy5pdGVtRmllbGRzKVxyXG4gICAgICA6IHRoaXMuZHluYW1pY0ZpZWxkPy5nZXRSZWdpc3RlcigpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2wgPSBjcmVhdGVDb250cm9sKG5hbWUsIHRoaXMucmVnaXN0ZXIsIHRoaXMuY29tcG9uZW50UmVmLCB0aGlzLmVsLCByZWdpc3Rlcik7XHJcbiAgICB0aGlzLnJlZ2lzdGVyU2VydmljZS5yZWdpc3RlcihuYW1lLCBjb250cm9sKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVucmVnaXN0ZXJDb250cm9sKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWdpc3RlclNlcnZpY2UudW5yZWdpc3Rlcih0aGlzLmdldE5hbWUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyLm5hbWUgPz8gdGhpcy5yZWdpc3Rlci5pZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRHluYW1pY1JlZ2lzdGVyKG5hbWU6IHN0cmluZywgbWV0YWRhdGE6IGFueSwgY29tcG9uZW50UmVmOiBhbnksIGVsOiBFbGVtZW50UmVmXHJcbiAgICAsIGl0ZW1GaWVsZHM6IFF1ZXJ5TGlzdDxEeW5hbWljRmllbGRzQ29tcG9uZW50Pik6IFJlZ2lzdGVyU2VydmljZSB7XHJcblxyXG4gICAgY29uc3QgbmV3UmVnaXN0ZXIgPSBuZXcgUmVnaXN0ZXJTZXJ2aWNlKHRoaXMucHJveHlTZXJ2aWNlLCBudWxsKTtcclxuXHJcbiAgICBjb25zdCByZWdpc3RlckFsbCA9IChpdGVtRmllbGRzOiBRdWVyeUxpc3Q8RHluYW1pY0ZpZWxkc0NvbXBvbmVudD4pID0+IHtcclxuICAgICAgbmV3UmVnaXN0ZXIudW5yZWdpc3RlckFsbCgpO1xyXG4gICAgICBpdGVtRmllbGRzLmZvckVhY2goKGl0ZW1GaWVsZCwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb25zdCByZWdpc3RlciA9IGl0ZW1GaWVsZC5nZXRSZWdpc3RlcigpO1xyXG4gICAgICAgIGNvbnN0IG5ld05hbWUgPSBgJHtuYW1lfS0ke2luZGV4fWA7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBJdGVtQ29udHJvbChuZXdOYW1lLCBpbmRleCwgbWV0YWRhdGEsIGNvbXBvbmVudFJlZiwgZWwsIHJlZ2lzdGVyKTtcclxuICAgICAgICBuZXdSZWdpc3Rlci5yZWdpc3RlcihuZXdOYW1lLCBjb250cm9sKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJBbGwoaXRlbUZpZWxkcyk7XHJcblxyXG4gICAgaXRlbUZpZWxkcy5jaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoaXRlbUZpZWxkczogUXVlcnlMaXN0PER5bmFtaWNGaWVsZHNDb21wb25lbnQ+KSA9PiB7XHJcbiAgICAgICAgcmVnaXN0ZXJBbGwoaXRlbUZpZWxkcyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXdSZWdpc3RlcjtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,38 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ export class RepeatDirective {
5
+ controlContainer;
6
+ repeat = null;
7
+ constructor(controlContainer) {
8
+ this.controlContainer = controlContainer;
9
+ }
10
+ ngOnChanges(changes) {
11
+ if (changes["repeat"]) {
12
+ const formArray = this.controlContainer.control;
13
+ const value = changes["repeat"].currentValue;
14
+ if (Number.isInteger(value) && value >= 0)
15
+ this.resizeArray(formArray, value);
16
+ }
17
+ }
18
+ resizeArray(formArray, size) {
19
+ while (formArray.length < size) {
20
+ formArray.addNewItem();
21
+ }
22
+ while (formArray.length > size) {
23
+ formArray.removeAt(formArray.length - 1);
24
+ }
25
+ }
26
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RepeatDirective, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Directive });
27
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RepeatDirective, isStandalone: true, selector: "[repeat]", inputs: { repeat: "repeat" }, usesOnChanges: true, ngImport: i0 });
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RepeatDirective, decorators: [{
30
+ type: Directive,
31
+ args: [{
32
+ selector: '[repeat]',
33
+ standalone: true
34
+ }]
35
+ }], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { repeat: [{
36
+ type: Input
37
+ }] } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpcmVjdGl2ZXMvcmVwZWF0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7OztBQU8zRSxNQUFNLE9BQU8sZUFBZTtJQUdOO0lBRlgsTUFBTSxHQUFRLElBQUksQ0FBQztJQUU1QixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFJLENBQUM7SUFFM0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQW9CLENBQUM7WUFDN0QsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUM3QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQW9CLEVBQUUsSUFBWTtRQUNwRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDOUIsU0FBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQzt3R0FyQlUsZUFBZTs0RkFBZixlQUFlOzs0RkFBZixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7cUZBRVUsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgQ29udHJvbENvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3JlcGVhdF0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGVhdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgcmVwZWF0OiBhbnkgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIpIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcInJlcGVhdFwiXSkge1xyXG4gICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtQXJyYXk7ICAgICAgXHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlc1tcInJlcGVhdFwiXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAwKVxyXG4gICAgICAgIHRoaXMucmVzaXplQXJyYXkoZm9ybUFycmF5LCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2l6ZUFycmF5KGZvcm1BcnJheTogRm9ybUFycmF5LCBzaXplOiBudW1iZXIpIHtcclxuICAgIHdoaWxlIChmb3JtQXJyYXkubGVuZ3RoIDwgc2l6ZSkge1xyXG4gICAgICAoZm9ybUFycmF5IGFzIGFueSkuYWRkTmV3SXRlbSgpO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKGZvcm1BcnJheS5sZW5ndGggPiBzaXplKSB7XHJcbiAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChmb3JtQXJyYXkubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,49 @@
1
+ import { Directive, Host, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "ngx-sirio-lib";
4
+ export class TabDirective {
5
+ sirioTab;
6
+ tabCount = 0;
7
+ constructor(sirioTab) {
8
+ this.sirioTab = sirioTab;
9
+ }
10
+ ngOnChanges(changes) {
11
+ if (changes["tabCount"]) {
12
+ const previous = changes["tabCount"].previousValue;
13
+ if (previous === undefined)
14
+ return;
15
+ const current = changes["tabCount"].currentValue;
16
+ setTimeout(() => {
17
+ this.sirioTab.setContentItemIndex();
18
+ this.sirioTab.showArrowIfNeeded();
19
+ if (previous < current) {
20
+ this.sirioTab.setActiveIndex(current - 1);
21
+ }
22
+ else {
23
+ if (this.sirioTab.oldIndex == current) {
24
+ // remove last
25
+ this.sirioTab.setActiveIndex(current - 1);
26
+ }
27
+ else if (this.sirioTab.oldIndex < current) {
28
+ // remove middle
29
+ this.sirioTab.setActiveIndex(this.sirioTab.oldIndex);
30
+ }
31
+ }
32
+ });
33
+ }
34
+ }
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabDirective, deps: [{ token: i1.SirioTabComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
36
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TabDirective, isStandalone: true, selector: "[tabCount]", inputs: { tabCount: "tabCount" }, usesOnChanges: true, ngImport: i0 });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: '[tabCount]',
42
+ standalone: true
43
+ }]
44
+ }], ctorParameters: () => [{ type: i1.SirioTabComponent, decorators: [{
45
+ type: Host
46
+ }] }], propDecorators: { tabCount: [{
47
+ type: Input
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpcmVjdGl2ZXMvdGFiLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDOzs7QUFPakYsTUFBTSxPQUFPLFlBQVk7SUFJTDtJQUhULFFBQVEsR0FBVyxDQUFDLENBQUM7SUFFOUIsWUFDa0IsUUFBMkI7UUFBM0IsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7SUFDekMsQ0FBQztJQUVMLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFFbkQsSUFBSSxRQUFRLEtBQUssU0FBUztnQkFDeEIsT0FBTztZQUVULE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFFakQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFFbEMsSUFBSSxRQUFRLEdBQUcsT0FBTyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztxQkFDSSxDQUFDO29CQUNKLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksT0FBTyxFQUFFLENBQUM7d0JBQ3RDLGNBQWM7d0JBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUM1QyxDQUFDO3lCQUNJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLENBQUM7d0JBQzFDLGdCQUFnQjt3QkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzt3R0FuQ1UsWUFBWTs0RkFBWixZQUFZOzs0RkFBWixZQUFZO2tCQUp4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUtJLElBQUk7eUNBSEUsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaXJpb1RhYkNvbXBvbmVudCB9IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbdGFiQ291bnRdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHRhYkNvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBIb3N0KCkgcHJpdmF0ZSBzaXJpb1RhYjogU2lyaW9UYWJDb21wb25lbnRcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcInRhYkNvdW50XCJdKSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzID0gY2hhbmdlc1tcInRhYkNvdW50XCJdLnByZXZpb3VzVmFsdWU7XHJcblxyXG4gICAgICBpZiAocHJldmlvdXMgPT09IHVuZGVmaW5lZClcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBjdXJyZW50ID0gY2hhbmdlc1tcInRhYkNvdW50XCJdLmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2lyaW9UYWIuc2V0Q29udGVudEl0ZW1JbmRleCgpO1xyXG4gICAgICAgIHRoaXMuc2lyaW9UYWIuc2hvd0Fycm93SWZOZWVkZWQoKTtcclxuXHJcbiAgICAgICAgaWYgKHByZXZpb3VzIDwgY3VycmVudCkge1xyXG4gICAgICAgICAgdGhpcy5zaXJpb1RhYi5zZXRBY3RpdmVJbmRleChjdXJyZW50IC0gMSk7XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zaXJpb1RhYi5vbGRJbmRleCA9PSBjdXJyZW50KSB7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBsYXN0XHJcbiAgICAgICAgICAgIHRoaXMuc2lyaW9UYWIuc2V0QWN0aXZlSW5kZXgoY3VycmVudCAtIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5zaXJpb1RhYi5vbGRJbmRleCA8IGN1cnJlbnQpIHtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIG1pZGRsZVxyXG4gICAgICAgICAgICB0aGlzLnNpcmlvVGFiLnNldEFjdGl2ZUluZGV4KHRoaXMuc2lyaW9UYWIub2xkSW5kZXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==