@dynamic-field-kit/angular 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +190 -0
  2. package/LICENSE +21 -0
  3. package/README.md +144 -5
  4. package/dist/components/DynamicFormDevTools.d.ts +16 -0
  5. package/dist/components/DynamicInput.d.ts +2 -1
  6. package/dist/components/FieldInput.d.ts +7 -1
  7. package/dist/components/MultiFieldInput.d.ts +13 -2
  8. package/dist/fesm2022/dynamic-field-kit-angular.mjs +578 -34
  9. package/dist/index.d.ts +1 -1
  10. package/dist/layout/index.d.ts +2 -2
  11. package/dist/lib/dynamic-field-kit.module.d.ts +4 -4
  12. package/dist/lib/dynamic-form.store.d.ts +23 -0
  13. package/dist/public-api.d.ts +10 -8
  14. package/package.json +58 -24
  15. package/dist/README.md +0 -235
  16. package/dist/esm2022/components/BaseInput.mjs +0 -59
  17. package/dist/esm2022/components/DynamicInput.mjs +0 -244
  18. package/dist/esm2022/components/FieldInput.mjs +0 -99
  19. package/dist/esm2022/components/MultiFieldInput.mjs +0 -338
  20. package/dist/esm2022/dynamic-field-kit-angular.mjs +0 -5
  21. package/dist/esm2022/fieldRegistryToken.mjs +0 -12
  22. package/dist/esm2022/layout/defaultLayouts.mjs +0 -114
  23. package/dist/esm2022/layout/index.mjs +0 -3
  24. package/dist/esm2022/layout/layoutRegistry.mjs +0 -14
  25. package/dist/esm2022/lib/dynamic-field-kit.module.mjs +0 -52
  26. package/dist/esm2022/public-api.mjs +0 -18
  27. package/dist/esm2022/types/layout.mjs +0 -2
  28. package/dist/fesm2022/dynamic-field-kit-angular.mjs.map +0 -1
  29. package/ng-package.json +0 -7
  30. package/src/components/BaseInput.ts +0 -57
  31. package/src/components/DynamicInput.ts +0 -280
  32. package/src/components/FieldInput.ts +0 -74
  33. package/src/components/MultiFieldInput.ts +0 -331
  34. package/src/fieldRegistryToken.ts +0 -15
  35. package/src/layout/defaultLayouts.ts +0 -70
  36. package/src/layout/index.ts +0 -2
  37. package/src/layout/layoutRegistry.ts +0 -25
  38. package/src/lib/dynamic-field-kit.module.ts +0 -29
  39. package/src/public-api.ts +0 -40
  40. package/src/types/layout.ts +0 -14
  41. package/test/DynamicInput.spec.ts +0 -230
  42. package/test/FieldInput.spec.ts +0 -146
  43. package/test/MultiFieldInput.spec.ts +0 -256
  44. package/test/helpers/renderers.ts +0 -89
  45. package/test/layout.spec.ts +0 -119
  46. package/test/publicApi.spec.ts +0 -64
  47. package/test/setup.ts +0 -12
  48. package/test/smoke.spec.ts +0 -27
  49. package/tsconfig.json +0 -13
  50. package/tsconfig.spec.json +0 -9
  51. package/vitest.config.ts +0 -30
@@ -1,338 +0,0 @@
1
- import { NgClass, NgFor, NgIf } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, } from '@angular/core';
3
- import { applyComputedValues, canAddGroupItem, canRemoveGroupItem, createGroupItem, resolveDisabled, resolveOptions, resolveReadOnly, validateField, validateFields, } from '@dynamic-field-kit/core';
4
- import { FieldInput } from './FieldInput';
5
- import * as i0 from "@angular/core";
6
- const DEFAULT_BREAKPOINT = 768;
7
- export class MultiFieldInput {
8
- cdr;
9
- fieldDescriptions = [];
10
- properties;
11
- onChange = new EventEmitter();
12
- validityChange = new EventEmitter();
13
- layout = 'column';
14
- // Top-level form data, threaded down through repeatable groups so a nested
15
- // field's appearCondition/computeValue can read the root form. Omitted at
16
- // the top level, where the form's own data is the root.
17
- rootData;
18
- data = {};
19
- visibleFields = [];
20
- isMobile = false;
21
- constructor(cdr) {
22
- this.cdr = cdr;
23
- }
24
- onWindowResize() {
25
- const wasMobile = this.isMobile;
26
- this.updateIsMobile();
27
- if (wasMobile !== this.isMobile) {
28
- this.cdr.markForCheck();
29
- }
30
- }
31
- get resolvedLayout() {
32
- if (typeof this.layout === 'object' && this.layout.type === 'responsive') {
33
- return this.isMobile ? this.layout.mobile : this.layout.desktop;
34
- }
35
- return this.layout;
36
- }
37
- get resolvedLayoutType() {
38
- const resolved = this.resolvedLayout;
39
- return typeof resolved === 'string' ? resolved : resolved.type;
40
- }
41
- get gap() {
42
- const resolved = this.resolvedLayout;
43
- if (typeof resolved === 'object' && resolved.gap !== undefined) {
44
- return resolved.gap;
45
- }
46
- return 12;
47
- }
48
- get columns() {
49
- const resolved = this.resolvedLayout;
50
- if (typeof resolved === 'object' && resolved.type === 'grid') {
51
- return resolved.columns ?? 2;
52
- }
53
- return 2;
54
- }
55
- trackByFn(index, field) {
56
- return field.name || index;
57
- }
58
- trackByIndex(index) {
59
- return index;
60
- }
61
- groupTrackByCache = new WeakMap();
62
- // Returns a stable trackBy per group field: item[keyField] when configured,
63
- // else the index. Cached by field reference so the template hands Angular the
64
- // same function each change-detection pass.
65
- groupTrackBy(field) {
66
- let fn = this.groupTrackByCache.get(field);
67
- if (!fn) {
68
- fn = (index, item) => field.keyField ? item[field.keyField] ?? index : index;
69
- this.groupTrackByCache.set(field, fn);
70
- }
71
- return fn;
72
- }
73
- ngOnInit() {
74
- this.updateIsMobile();
75
- this.init();
76
- }
77
- ngOnChanges(_changes) {
78
- this.init();
79
- }
80
- updateIsMobile() {
81
- const breakpoint = typeof this.layout === 'object' && this.layout.type === 'responsive'
82
- ? this.layout.breakpoint ?? DEFAULT_BREAKPOINT
83
- : DEFAULT_BREAKPOINT;
84
- if (typeof window !== 'undefined' &&
85
- typeof window.matchMedia === 'function') {
86
- this.isMobile = window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches;
87
- }
88
- else {
89
- this.isMobile =
90
- typeof window !== 'undefined' && window.innerWidth < breakpoint;
91
- }
92
- }
93
- init() {
94
- if (this.properties) {
95
- this.data = applyComputedValues(this.fieldDescriptions, { ...this.properties }, this.rootData);
96
- }
97
- this.updateVisibleFields();
98
- this.validityChange.emit(validateFields(this.fieldDescriptions, this.data, this.rootData));
99
- }
100
- updateVisibleFields() {
101
- const root = this.rootData ?? this.data;
102
- this.visibleFields = this.fieldDescriptions.filter((f) => !f.appearCondition || f.appearCondition(this.data, root));
103
- }
104
- onFieldChange(event) {
105
- this.commitData({ ...this.data, [event.key]: event.value });
106
- }
107
- getItems(field) {
108
- const value = this.data[field.name];
109
- return Array.isArray(value) ? value : [];
110
- }
111
- getResolvedOptions(field) {
112
- return resolveOptions(field, this.data, this.rootData);
113
- }
114
- getDisabled(field) {
115
- return resolveDisabled(field, this.data, this.rootData);
116
- }
117
- getReadOnly(field) {
118
- return resolveReadOnly(field, this.data, this.rootData);
119
- }
120
- getError(field) {
121
- if (this.getDisabled(field)) {
122
- return undefined;
123
- }
124
- const errors = validateField(field, this.data[field.name], this.data, this.rootData);
125
- return errors.length > 0 ? errors : undefined;
126
- }
127
- canAddItem(field) {
128
- return canAddGroupItem(field, this.getItems(field));
129
- }
130
- canRemoveItem(field) {
131
- return canRemoveGroupItem(field, this.getItems(field));
132
- }
133
- onGroupItemAdd(field) {
134
- if (!this.canAddItem(field)) {
135
- return;
136
- }
137
- const items = this.getItems(field);
138
- this.commitData({
139
- ...this.data,
140
- [field.name]: [...items, createGroupItem(field)],
141
- });
142
- }
143
- onGroupItemRemove(field, index) {
144
- if (!this.canRemoveItem(field)) {
145
- return;
146
- }
147
- const items = this.getItems(field).filter((_, i) => i !== index);
148
- this.commitData({ ...this.data, [field.name]: items });
149
- }
150
- onGroupItemChange(field, index, next) {
151
- const items = this.getItems(field).slice();
152
- items[index] = next;
153
- this.commitData({ ...this.data, [field.name]: items });
154
- }
155
- commitData(nextData) {
156
- this.data = applyComputedValues(this.fieldDescriptions, nextData, this.rootData);
157
- this.updateVisibleFields();
158
- this.onChange.emit(this.data);
159
- this.validityChange.emit(validateFields(this.fieldDescriptions, this.data, this.rootData));
160
- this.cdr.markForCheck();
161
- }
162
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MultiFieldInput, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
163
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: MultiFieldInput, isStandalone: true, selector: "dfk-multi-field-input", inputs: { fieldDescriptions: "fieldDescriptions", properties: "properties", layout: "layout", rootData: "rootData" }, outputs: { onChange: "onChange", validityChange: "validityChange" }, host: { listeners: { "window:resize": "onWindowResize()" } }, usesOnChanges: true, ngImport: i0, template: `
164
- <div
165
- class="p-4 border rounded-lg bg-gray-50"
166
- [ngClass]="{
167
- 'flex flex-col': resolvedLayoutType === 'column',
168
- 'flex flex-row': resolvedLayoutType === 'row',
169
- grid: resolvedLayoutType === 'grid'
170
- }"
171
- [style.gap.px]="gap"
172
- [style.gridTemplateColumns]="
173
- resolvedLayoutType === 'grid' ? 'repeat(' + columns + ', 1fr)' : null
174
- "
175
- >
176
- <ng-container *ngFor="let field of visibleFields; trackBy: trackByFn">
177
- <dfk-field-input
178
- *ngIf="!field.fields"
179
- [fieldDescription]="field"
180
- [value]="data[field.name]"
181
- [options]="getResolvedOptions(field)"
182
- [disabled]="getDisabled(field)"
183
- [readOnly]="getReadOnly(field)"
184
- [error]="getError(field)"
185
- (onValueChangeField)="onFieldChange($event)"
186
- ></dfk-field-input>
187
-
188
- <div *ngIf="field.fields" [class]="field.className">
189
- <div *ngIf="field.label">{{ field.label }}</div>
190
- <div
191
- *ngFor="
192
- let item of getItems(field);
193
- let i = index;
194
- trackBy: groupTrackBy(field)
195
- "
196
- style="display: flex; align-items: flex-start; gap: 8px;"
197
- >
198
- <div style="flex: 1">
199
- <dfk-multi-field-input
200
- [fieldDescriptions]="field.fields"
201
- [properties]="item"
202
- [rootData]="rootData ?? data"
203
- (onChange)="onGroupItemChange(field, i, $event)"
204
- ></dfk-multi-field-input>
205
- </div>
206
- <button
207
- type="button"
208
- [attr.aria-label]="
209
- (field.removeLabel || 'Remove') +
210
- ' ' +
211
- (field.label || field.name) +
212
- ' ' +
213
- (i + 1)
214
- "
215
- (click)="onGroupItemRemove(field, i)"
216
- [disabled]="!canRemoveItem(field)"
217
- >
218
- {{ field.removeLabel || 'Remove' }}
219
- </button>
220
- </div>
221
- <button
222
- type="button"
223
- [attr.aria-label]="
224
- (field.addLabel || 'Add') + ' ' + (field.label || field.name)
225
- "
226
- (click)="onGroupItemAdd(field)"
227
- [disabled]="!canAddItem(field)"
228
- >
229
- {{ field.addLabel || 'Add' }}
230
- </button>
231
- </div>
232
- </ng-container>
233
- </div>
234
- `, isInline: true, dependencies: [{ kind: "component", type: MultiFieldInput, selector: "dfk-multi-field-input", inputs: ["fieldDescriptions", "properties", "layout", "rootData"], outputs: ["onChange", "validityChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FieldInput, selector: "dfk-field-input", inputs: ["fieldDescription", "value", "options", "disabled", "readOnly", "error"], outputs: ["onValueChangeField"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
235
- }
236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MultiFieldInput, decorators: [{
237
- type: Component,
238
- args: [{
239
- selector: 'dfk-multi-field-input',
240
- standalone: true,
241
- // Repeatable field groups render a nested <dfk-multi-field-input> per item
242
- // (see the #groupTpl below), so this component imports itself. That's the
243
- // supported way to give a standalone component recursive template usage
244
- // without a cross-file circular import between FieldInput and a separate
245
- // group component (whose `imports` arrays are evaluated eagerly at module
246
- // load time and would deadlock on an actual circular module reference).
247
- imports: [NgClass, NgFor, NgIf, FieldInput, MultiFieldInput],
248
- changeDetection: ChangeDetectionStrategy.OnPush,
249
- template: `
250
- <div
251
- class="p-4 border rounded-lg bg-gray-50"
252
- [ngClass]="{
253
- 'flex flex-col': resolvedLayoutType === 'column',
254
- 'flex flex-row': resolvedLayoutType === 'row',
255
- grid: resolvedLayoutType === 'grid'
256
- }"
257
- [style.gap.px]="gap"
258
- [style.gridTemplateColumns]="
259
- resolvedLayoutType === 'grid' ? 'repeat(' + columns + ', 1fr)' : null
260
- "
261
- >
262
- <ng-container *ngFor="let field of visibleFields; trackBy: trackByFn">
263
- <dfk-field-input
264
- *ngIf="!field.fields"
265
- [fieldDescription]="field"
266
- [value]="data[field.name]"
267
- [options]="getResolvedOptions(field)"
268
- [disabled]="getDisabled(field)"
269
- [readOnly]="getReadOnly(field)"
270
- [error]="getError(field)"
271
- (onValueChangeField)="onFieldChange($event)"
272
- ></dfk-field-input>
273
-
274
- <div *ngIf="field.fields" [class]="field.className">
275
- <div *ngIf="field.label">{{ field.label }}</div>
276
- <div
277
- *ngFor="
278
- let item of getItems(field);
279
- let i = index;
280
- trackBy: groupTrackBy(field)
281
- "
282
- style="display: flex; align-items: flex-start; gap: 8px;"
283
- >
284
- <div style="flex: 1">
285
- <dfk-multi-field-input
286
- [fieldDescriptions]="field.fields"
287
- [properties]="item"
288
- [rootData]="rootData ?? data"
289
- (onChange)="onGroupItemChange(field, i, $event)"
290
- ></dfk-multi-field-input>
291
- </div>
292
- <button
293
- type="button"
294
- [attr.aria-label]="
295
- (field.removeLabel || 'Remove') +
296
- ' ' +
297
- (field.label || field.name) +
298
- ' ' +
299
- (i + 1)
300
- "
301
- (click)="onGroupItemRemove(field, i)"
302
- [disabled]="!canRemoveItem(field)"
303
- >
304
- {{ field.removeLabel || 'Remove' }}
305
- </button>
306
- </div>
307
- <button
308
- type="button"
309
- [attr.aria-label]="
310
- (field.addLabel || 'Add') + ' ' + (field.label || field.name)
311
- "
312
- (click)="onGroupItemAdd(field)"
313
- [disabled]="!canAddItem(field)"
314
- >
315
- {{ field.addLabel || 'Add' }}
316
- </button>
317
- </div>
318
- </ng-container>
319
- </div>
320
- `,
321
- }]
322
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { fieldDescriptions: [{
323
- type: Input
324
- }], properties: [{
325
- type: Input
326
- }], onChange: [{
327
- type: Output
328
- }], validityChange: [{
329
- type: Output
330
- }], layout: [{
331
- type: Input
332
- }], rootData: [{
333
- type: Input
334
- }], onWindowResize: [{
335
- type: HostListener,
336
- args: ['window:resize']
337
- }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlGaWVsZElucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTXVsdGlGaWVsZElucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGVBQWUsRUFDZixjQUFjLEVBQ2QsZUFBZSxFQUNmLGFBQWEsRUFDYixjQUFjLEdBR2YsTUFBTSx5QkFBeUIsQ0FBQztBQUdqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUUxQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQXNGL0IsTUFBTSxPQUFPLGVBQWU7SUFlTjtJQWRYLGlCQUFpQixHQUF1QixFQUFFLENBQUM7SUFDM0MsVUFBVSxDQUFjO0lBQ3ZCLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0lBQzFDLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUN2RCxNQUFNLEdBQWlCLFFBQVEsQ0FBQztJQUN6QywyRUFBMkU7SUFDM0UsMEVBQTBFO0lBQzFFLHdEQUF3RDtJQUMvQyxRQUFRLENBQWM7SUFFL0IsSUFBSSxHQUFlLEVBQUUsQ0FBQztJQUN0QixhQUFhLEdBQXVCLEVBQUUsQ0FBQztJQUMvQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXpCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQUcsQ0FBQztJQUc5QyxjQUFjO1FBQ1osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFB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OEtBM0VoQixPQUFPLG9GQUFFLEtBQUssbUhBQUUsSUFBSSw2RkFBRSxVQUFVOzs0RkEyRS9CLGVBQWU7a0JBcEYzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQiwyRUFBMkU7b0JBQzNFLDBFQUEwRTtvQkFDMUUsd0VBQXdFO29CQUN4RSx5RUFBeUU7b0JBQ3pFLDBFQUEwRTtvQkFDMUUsd0VBQXdFO29CQUN4RSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLGtCQUFrQjtvQkFDNUQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RVQ7aUJBQ0Y7c0ZBRVUsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQVNOLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBhcHBseUNvbXB1dGVkVmFsdWVzLFxuICBjYW5BZGRHcm91cEl0ZW0sXG4gIGNhblJlbW92ZUdyb3VwSXRlbSxcbiAgY3JlYXRlR3JvdXBJdGVtLFxuICByZXNvbHZlRGlzYWJsZWQsXG4gIHJlc29sdmVPcHRpb25zLFxuICByZXNvbHZlUmVhZE9ubHksXG4gIHZhbGlkYXRlRmllbGQsXG4gIHZhbGlkYXRlRmllbGRzLFxuICBGaWVsZERlc2NyaXB0aW9uLFxuICBQcm9wZXJ0aWVzLFxufSBmcm9tICdAZHluYW1pYy1maWVsZC1raXQvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAZHluYW1pYy1maWVsZC1raXQvY29yZSc7XG5pbXBvcnQgeyBCYXNlTGF5b3V0Q29uZmlnLCBMYXlvdXRDb25maWcgfSBmcm9tICcuLi90eXBlcy9sYXlvdXQnO1xuaW1wb3J0IHsgRmllbGRJbnB1dCB9IGZyb20gJy4vRmllbGRJbnB1dCc7XG5cbmNvbnN0IERFRkFVTFRfQlJFQUtQT0lOVCA9IDc2ODtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGZrLW11bHRpLWZpZWxkLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gUmVwZWF0YWJsZSBmaWVsZCBncm91cHMgcmVuZGVyIGEgbmVzdGVkIDxkZmstbXVsdGktZmllbGQtaW5wdXQ+IHBlciBpdGVtXG4gIC8vIChzZWUgdGhlICNncm91cFRwbCBiZWxvdyksIHNvIHRoaXMgY29tcG9uZW50IGltcG9ydHMgaXRzZWxmLiBUaGF0J3MgdGhlXG4gIC8vIHN1cHBvcnRlZCB3YXkgdG8gZ2l2ZSBhIHN0YW5kYWxvbmUgY29tcG9uZW50IHJlY3Vyc2l2ZSB0ZW1wbGF0ZSB1c2FnZVxuICAvLyB3aXRob3V0IGEgY3Jvc3MtZmlsZSBjaXJjdWxhciBpbXBvcnQgYmV0d2VlbiBGaWVsZElucHV0IGFuZCBhIHNlcGFyYXRlXG4gIC8vIGdyb3VwIGNvbXBvbmVudCAod2hvc2UgYGltcG9ydHNgIGFycmF5cyBhcmUgZXZhbHVhdGVkIGVhZ2VybHkgYXQgbW9kdWxlXG4gIC8vIGxvYWQgdGltZSBhbmQgd291bGQgZGVhZGxvY2sgb24gYW4gYWN0dWFsIGNpcmN1bGFyIG1vZHVsZSByZWZlcmVuY2UpLlxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdGb3IsIE5nSWYsIEZpZWxkSW5wdXQsIE11bHRpRmllbGRJbnB1dF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicC00IGJvcmRlciByb3VuZGVkLWxnIGJnLWdyYXktNTBcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZmxleCBmbGV4LWNvbCc6IHJlc29sdmVkTGF5b3V0VHlwZSA9PT0gJ2NvbHVtbicsXG4gICAgICAgICdmbGV4IGZsZXgtcm93JzogcmVzb2x2ZWRMYXlvdXRUeXBlID09PSAncm93JyxcbiAgICAgICAgZ3JpZDogcmVzb2x2ZWRMYXlvdXRUeXBlID09PSAnZ3JpZCdcbiAgICAgIH1cIlxuICAgICAgW3N0eWxlLmdhcC5weF09XCJnYXBcIlxuICAgICAgW3N0eWxlLmdyaWRUZW1wbGF0ZUNvbHVtbnNdPVwiXG4gICAgICAgIHJlc29sdmVkTGF5b3V0VHlwZSA9PT0gJ2dyaWQnID8gJ3JlcGVhdCgnICsgY29sdW1ucyArICcsIDFmciknIDogbnVsbFxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiB2aXNpYmxlRmllbGRzOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgPGRmay1maWVsZC1pbnB1dFxuICAgICAgICAgICpuZ0lmPVwiIWZpZWxkLmZpZWxkc1wiXG4gICAgICAgICAgW2ZpZWxkRGVzY3JpcHRpb25dPVwiZmllbGRcIlxuICAgICAgICAgIFt2YWx1ZV09XCJkYXRhW2ZpZWxkLm5hbWVdXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJnZXRSZXNvbHZlZE9wdGlvbnMoZmllbGQpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0RGlzYWJsZWQoZmllbGQpXCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwiZ2V0UmVhZE9ubHkoZmllbGQpXCJcbiAgICAgICAgICBbZXJyb3JdPVwiZ2V0RXJyb3IoZmllbGQpXCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZUZpZWxkKT1cIm9uRmllbGRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2Rmay1maWVsZC1pbnB1dD5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZmllbGRzXCIgW2NsYXNzXT1cImZpZWxkLmNsYXNzTmFtZVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5sYWJlbFwiPnt7IGZpZWxkLmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBpdGVtIG9mIGdldEl0ZW1zKGZpZWxkKTtcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICAgICAgdHJhY2tCeTogZ3JvdXBUcmFja0J5KGZpZWxkKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogOHB4O1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXg6IDFcIj5cbiAgICAgICAgICAgICAgPGRmay1tdWx0aS1maWVsZC1pbnB1dFxuICAgICAgICAgICAgICAgIFtmaWVsZERlc2NyaXB0aW9uc109XCJmaWVsZC5maWVsZHNcIlxuICAgICAgICAgICAgICAgIFtwcm9wZXJ0aWVzXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgIFtyb290RGF0YV09XCJyb290RGF0YSA/PyBkYXRhXCJcbiAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25Hcm91cEl0ZW1DaGFuZ2UoZmllbGQsIGksICRldmVudClcIlxuICAgICAgICAgICAgICA+PC9kZmstbXVsdGktZmllbGQtaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgKGZpZWxkLnJlbW92ZUxhYmVsIHx8ICdSZW1vdmUnKSArXG4gICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAoZmllbGQubGFiZWwgfHwgZmllbGQubmFtZSkgK1xuICAgICAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25Hcm91cEl0ZW1SZW1vdmUoZmllbGQsIGkpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5SZW1vdmVJdGVtKGZpZWxkKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZpZWxkLnJlbW92ZUxhYmVsIHx8ICdSZW1vdmUnIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgIChmaWVsZC5hZGRMYWJlbCB8fCAnQWRkJykgKyAnICcgKyAoZmllbGQubGFiZWwgfHwgZmllbGQubmFtZSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Hcm91cEl0ZW1BZGQoZmllbGQpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQWRkSXRlbShmaWVsZClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZpZWxkLmFkZExhYmVsIHx8ICdBZGQnIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpRmllbGRJbnB1dCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZmllbGREZXNjcmlwdGlvbnM6IEZpZWxkRGVzY3JpcHRpb25bXSA9IFtdO1xuICBASW5wdXQoKSBwcm9wZXJ0aWVzPzogUHJvcGVydGllcztcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9wZXJ0aWVzPigpO1xuICBAT3V0cHV0KCkgdmFsaWRpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFZhbGlkYXRpb25SZXN1bHQ+KCk7XG4gIEBJbnB1dCgpIGxheW91dDogTGF5b3V0Q29uZmlnID0gJ2NvbHVtbic7XG4gIC8vIFRvcC1sZXZlbCBmb3JtIGRhdGEsIHRocmVhZGVkIGRvd24gdGhyb3VnaCByZXBlYXRhYmxlIGdyb3VwcyBzbyBhIG5lc3RlZFxuICAvLyBmaWVsZCdzIGFwcGVhckNvbmRpdGlvbi9jb21wdXRlVmFsdWUgY2FuIHJlYWQgdGhlIHJvb3QgZm9ybS4gT21pdHRlZCBhdFxuICAvLyB0aGUgdG9wIGxldmVsLCB3aGVyZSB0aGUgZm9ybSdzIG93biBkYXRhIGlzIHRoZSByb290LlxuICBASW5wdXQoKSByb290RGF0YT86IFByb3BlcnRpZXM7XG5cbiAgZGF0YTogUHJvcGVydGllcyA9IHt9O1xuICB2aXNpYmxlRmllbGRzOiBGaWVsZERlc2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgY29uc3Qgd2FzTW9iaWxlID0gdGhpcy5pc01vYmlsZTtcbiAgICB0aGlzLnVwZGF0ZUlzTW9iaWxlKCk7XG4gICAgaWYgKHdhc01vYmlsZSAhPT0gdGhpcy5pc01vYmlsZSkge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlc29sdmVkTGF5b3V0KCk6IEJhc2VMYXlvdXRDb25maWcge1xuICAgIGlmICh0eXBlb2YgdGhpcy5sYXlvdXQgPT09ICdvYmplY3QnICYmIHRoaXMubGF5b3V0LnR5cGUgPT09ICdyZXNwb25zaXZlJykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyB0aGlzLmxheW91dC5tb2JpbGUgOiB0aGlzLmxheW91dC5kZXNrdG9wO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYXlvdXQgYXMgQmFzZUxheW91dENvbmZpZztcbiAgfVxuXG4gIGdldCByZXNvbHZlZExheW91dFR5cGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRMYXlvdXQ7XG4gICAgcmV0dXJuIHR5cGVvZiByZXNvbHZlZCA9PT0gJ3N0cmluZycgPyByZXNvbHZlZCA6IHJlc29sdmVkLnR5cGU7XG4gIH1cblxuICBnZXQgZ2FwKCk6IG51bWJlciB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkTGF5b3V0O1xuICAgIGlmICh0eXBlb2YgcmVzb2x2ZWQgPT09ICdvYmplY3QnICYmIHJlc29sdmVkLmdhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZWQuZ2FwO1xuICAgIH1cbiAgICByZXR1cm4gMTI7XG4gIH1cblxuICBnZXQgY29sdW1ucygpOiBudW1iZXIge1xuICAgIGNvbnN0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZExheW91dDtcbiAgICBpZiAodHlwZW9mIHJlc29sdmVkID09PSAnb2JqZWN0JyAmJiByZXNvbHZlZC50eXBlID09PSAnZ3JpZCcpIHtcbiAgICAgIHJldHVybiByZXNvbHZlZC5jb2x1bW5zID8/IDI7XG4gICAgfVxuICAgIHJldHVybiAyO1xuICB9XG5cbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGZpZWxkOiBGaWVsZERlc2NyaXB0aW9uKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gZmllbGQubmFtZSB8fCBpbmRleDtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwcml2YXRlIGdyb3VwVHJhY2tCeUNhY2hlID0gbmV3IFdlYWtNYXA8XG4gICAgRmllbGREZXNjcmlwdGlvbixcbiAgICAoaW5kZXg6IG51bWJlciwgaXRlbTogUHJvcGVydGllcykgPT4gdW5rbm93blxuICA+KCk7XG5cbiAgLy8gUmV0dXJucyBhIHN0YWJsZSB0cmFja0J5IHBlciBncm91cCBmaWVsZDogaXRlbVtrZXlGaWVsZF0gd2hlbiBjb25maWd1cmVkLFxuICAvLyBlbHNlIHRoZSBpbmRleC4gQ2FjaGVkIGJ5IGZpZWxkIHJlZmVyZW5jZSBzbyB0aGUgdGVtcGxhdGUgaGFuZHMgQW5ndWxhciB0aGVcbiAgLy8gc2FtZSBmdW5jdGlvbiBlYWNoIGNoYW5nZS1kZXRlY3Rpb24gcGFzcy5cbiAgZ3JvdXBUcmFja0J5KFxuICAgIGZpZWxkOiBGaWVsZERlc2NyaXB0aW9uXG4gICk6IChpbmRleDogbnVtYmVyLCBpdGVtOiBQcm9wZXJ0aWVzKSA9PiB1bmtub3duIHtcbiAgICBsZXQgZm4gPSB0aGlzLmdyb3VwVHJhY2tCeUNhY2hlLmdldChmaWVsZCk7XG4gICAgaWYgKCFmbikge1xuICAgICAgZm4gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogUHJvcGVydGllcykgPT5cbiAgICAgICAgZmllbGQua2V5RmllbGQgPyBpdGVtW2ZpZWxkLmtleUZpZWxkXSA/PyBpbmRleCA6IGluZGV4O1xuICAgICAgdGhpcy5ncm91cFRyYWNrQnlDYWNoZS5zZXQoZmllbGQsIGZuKTtcbiAgICB9XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVJc01vYmlsZSgpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSXNNb2JpbGUoKTogdm9pZCB7XG4gICAgY29uc3QgYnJlYWtwb2ludCA9XG4gICAgICB0eXBlb2YgdGhpcy5sYXlvdXQgPT09ICdvYmplY3QnICYmIHRoaXMubGF5b3V0LnR5cGUgPT09ICdyZXNwb25zaXZlJ1xuICAgICAgICA/IHRoaXMubGF5b3V0LmJyZWFrcG9pbnQgPz8gREVGQVVMVF9CUkVBS1BPSU5UXG4gICAgICAgIDogREVGQVVMVF9CUkVBS1BPSU5UO1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICB0eXBlb2Ygd2luZG93Lm1hdGNoTWVkaWEgPT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYShcbiAgICAgICAgYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludCAtIDF9cHgpYFxuICAgICAgKS5tYXRjaGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID1cbiAgICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmlubmVyV2lkdGggPCBicmVha3BvaW50O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBpZiAodGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmRhdGEgPSBhcHBseUNvbXB1dGVkVmFsdWVzKFxuICAgICAgICB0aGlzLmZpZWxkRGVzY3JpcHRpb25zLFxuICAgICAgICB7IC4uLnRoaXMucHJvcGVydGllcyB9LFxuICAgICAgICB0aGlzLnJvb3REYXRhXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVGaWVsZHMoKTtcbiAgICB0aGlzLnZhbGlkaXR5Q2hhbmdlLmVtaXQoXG4gICAgICB2YWxpZGF0ZUZpZWxkcyh0aGlzLmZpZWxkRGVzY3JpcHRpb25zLCB0aGlzLmRhdGEsIHRoaXMucm9vdERhdGEpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmlzaWJsZUZpZWxkcygpIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5yb290RGF0YSA/PyB0aGlzLmRhdGE7XG4gICAgdGhpcy52aXNpYmxlRmllbGRzID0gdGhpcy5maWVsZERlc2NyaXB0aW9ucy5maWx0ZXIoXG4gICAgICAoZikgPT4gIWYuYXBwZWFyQ29uZGl0aW9uIHx8IGYuYXBwZWFyQ29uZGl0aW9uKHRoaXMuZGF0YSwgcm9vdClcbiAgICApO1xuICB9XG5cbiAgb25GaWVsZENoYW5nZShldmVudDogeyB2YWx1ZTogdW5rbm93bjsga2V5OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHRoaXMuY29tbWl0RGF0YSh7IC4uLnRoaXMuZGF0YSwgW2V2ZW50LmtleV06IGV2ZW50LnZhbHVlIH0pO1xuICB9XG5cbiAgZ2V0SXRlbXMoZmllbGQ6IEZpZWxkRGVzY3JpcHRpb24pOiBQcm9wZXJ0aWVzW10ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRhW2ZpZWxkLm5hbWVdO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/ICh2YWx1ZSBhcyBQcm9wZXJ0aWVzW10pIDogW107XG4gIH1cblxuICBnZXRSZXNvbHZlZE9wdGlvbnMoZmllbGQ6IEZpZWxkRGVzY3JpcHRpb24pOiBQcm9wZXJ0aWVzW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiByZXNvbHZlT3B0aW9ucyhmaWVsZCwgdGhpcy5kYXRhLCB0aGlzLnJvb3REYXRhKTtcbiAgfVxuXG4gIGdldERpc2FibGVkKGZpZWxkOiBGaWVsZERlc2NyaXB0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc29sdmVEaXNhYmxlZChmaWVsZCwgdGhpcy5kYXRhLCB0aGlzLnJvb3REYXRhKTtcbiAgfVxuXG4gIGdldFJlYWRPbmx5KGZpZWxkOiBGaWVsZERlc2NyaXB0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc29sdmVSZWFkT25seShmaWVsZCwgdGhpcy5kYXRhLCB0aGlzLnJvb3REYXRhKTtcbiAgfVxuXG4gIGdldEVycm9yKGZpZWxkOiBGaWVsZERlc2NyaXB0aW9uKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmdldERpc2FibGVkKGZpZWxkKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVGaWVsZChcbiAgICAgIGZpZWxkLFxuICAgICAgdGhpcy5kYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgdGhpcy5kYXRhLFxuICAgICAgdGhpcy5yb290RGF0YVxuICAgICk7XG4gICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPiAwID8gZXJyb3JzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgY2FuQWRkSXRlbShmaWVsZDogRmllbGREZXNjcmlwdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYW5BZGRHcm91cEl0ZW0oZmllbGQsIHRoaXMuZ2V0SXRlbXMoZmllbGQpKTtcbiAgfVxuXG4gIGNhblJlbW92ZUl0ZW0oZmllbGQ6IEZpZWxkRGVzY3JpcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2FuUmVtb3ZlR3JvdXBJdGVtKGZpZWxkLCB0aGlzLmdldEl0ZW1zKGZpZWxkKSk7XG4gIH1cblxuICBvbkdyb3VwSXRlbUFkZChmaWVsZDogRmllbGREZXNjcmlwdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5BZGRJdGVtKGZpZWxkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoZmllbGQpO1xuICAgIHRoaXMuY29tbWl0RGF0YSh7XG4gICAgICAuLi50aGlzLmRhdGEsXG4gICAgICBbZmllbGQubmFtZV06IFsuLi5pdGVtcywgY3JlYXRlR3JvdXBJdGVtKGZpZWxkKV0sXG4gICAgfSk7XG4gIH1cblxuICBvbkdyb3VwSXRlbVJlbW92ZShmaWVsZDogRmllbGREZXNjcmlwdGlvbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5SZW1vdmVJdGVtKGZpZWxkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoZmllbGQpLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgIHRoaXMuY29tbWl0RGF0YSh7IC4uLnRoaXMuZGF0YSwgW2ZpZWxkLm5hbWVdOiBpdGVtcyB9KTtcbiAgfVxuXG4gIG9uR3JvdXBJdGVtQ2hhbmdlKFxuICAgIGZpZWxkOiBGaWVsZERlc2NyaXB0aW9uLFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgbmV4dDogUHJvcGVydGllc1xuICApOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoZmllbGQpLnNsaWNlKCk7XG4gICAgaXRlbXNbaW5kZXhdID0gbmV4dDtcbiAgICB0aGlzLmNvbW1pdERhdGEoeyAuLi50aGlzLmRhdGEsIFtmaWVsZC5uYW1lXTogaXRlbXMgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbW1pdERhdGEobmV4dERhdGE6IFByb3BlcnRpZXMpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEgPSBhcHBseUNvbXB1dGVkVmFsdWVzKFxuICAgICAgdGhpcy5maWVsZERlc2NyaXB0aW9ucyxcbiAgICAgIG5leHREYXRhLFxuICAgICAgdGhpcy5yb290RGF0YVxuICAgICk7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlRmllbGRzKCk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuZGF0YSk7XG4gICAgdGhpcy52YWxpZGl0eUNoYW5nZS5lbWl0KFxuICAgICAgdmFsaWRhdGVGaWVsZHModGhpcy5maWVsZERlc2NyaXB0aW9ucywgdGhpcy5kYXRhLCB0aGlzLnJvb3REYXRhKVxuICAgICk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC1raXQtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9keW5hbWljLWZpZWxkLWtpdC1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,12 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { fieldRegistry } from '@dynamic-field-kit/core';
3
- // Injecting this token yields the process-wide singleton by default, so code
4
- // that never provides it keeps working. Provide it on a component/route to give
5
- // that subtree an isolated set of renderers:
6
- //
7
- // providers: [{ provide: FIELD_REGISTRY, useValue: myScopedRegistry }]
8
- export const FIELD_REGISTRY = new InjectionToken('dfk.FieldRegistry', {
9
- providedIn: 'root',
10
- factory: () => fieldRegistry,
11
- });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRSZWdpc3RyeVRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpZWxkUmVnaXN0cnlUb2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBaUIsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkUsNkVBQTZFO0FBQzdFLGdGQUFnRjtBQUNoRiw2Q0FBNkM7QUFDN0MsRUFBRTtBQUNGLHlFQUF5RTtBQUN6RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQzlDLG1CQUFtQixFQUNuQjtJQUNFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhO0NBQzdCLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFJlZ2lzdHJ5LCBmaWVsZFJlZ2lzdHJ5IH0gZnJvbSAnQGR5bmFtaWMtZmllbGQta2l0L2NvcmUnO1xuXG4vLyBJbmplY3RpbmcgdGhpcyB0b2tlbiB5aWVsZHMgdGhlIHByb2Nlc3Mtd2lkZSBzaW5nbGV0b24gYnkgZGVmYXVsdCwgc28gY29kZVxuLy8gdGhhdCBuZXZlciBwcm92aWRlcyBpdCBrZWVwcyB3b3JraW5nLiBQcm92aWRlIGl0IG9uIGEgY29tcG9uZW50L3JvdXRlIHRvIGdpdmVcbi8vIHRoYXQgc3VidHJlZSBhbiBpc29sYXRlZCBzZXQgb2YgcmVuZGVyZXJzOlxuLy9cbi8vICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGSUVMRF9SRUdJU1RSWSwgdXNlVmFsdWU6IG15U2NvcGVkUmVnaXN0cnkgfV1cbmV4cG9ydCBjb25zdCBGSUVMRF9SRUdJU1RSWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGaWVsZFJlZ2lzdHJ5PihcbiAgJ2Rmay5GaWVsZFJlZ2lzdHJ5JyxcbiAge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiBmaWVsZFJlZ2lzdHJ5LFxuICB9XG4pO1xuIl19
@@ -1,114 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
3
- import { layoutRegistry } from './layoutRegistry';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- export class ColumnLayout {
7
- config;
8
- template;
9
- get gap() {
10
- return this.config?.gap ?? 12;
11
- }
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ColumnLayout, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ColumnLayout, isStandalone: true, selector: "dfk-column-layout", inputs: { config: "config", template: "template" }, ngImport: i0, template: `<div
14
- [style.display]="'flex'"
15
- [style.flexDirection]="'column'"
16
- [style.gap]="gap + 'px'"
17
- >
18
- <ng-container *ngTemplateOutlet="template"></ng-container>
19
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ColumnLayout, decorators: [{
22
- type: Component,
23
- args: [{
24
- selector: 'dfk-column-layout',
25
- standalone: true,
26
- imports: [CommonModule],
27
- template: `<div
28
- [style.display]="'flex'"
29
- [style.flexDirection]="'column'"
30
- [style.gap]="gap + 'px'"
31
- >
32
- <ng-container *ngTemplateOutlet="template"></ng-container>
33
- </div>`,
34
- }]
35
- }], propDecorators: { config: [{
36
- type: Input
37
- }], template: [{
38
- type: Input
39
- }] } });
40
- export class RowLayout {
41
- config;
42
- template;
43
- get gap() {
44
- return this.config?.gap ?? 12;
45
- }
46
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowLayout, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: RowLayout, isStandalone: true, selector: "dfk-row-layout", inputs: { config: "config", template: "template" }, ngImport: i0, template: `<div
48
- [style.display]="'flex'"
49
- [style.flexDirection]="'row'"
50
- [style.gap]="gap + 'px'"
51
- >
52
- <ng-container *ngTemplateOutlet="template"></ng-container>
53
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
54
- }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RowLayout, decorators: [{
56
- type: Component,
57
- args: [{
58
- selector: 'dfk-row-layout',
59
- standalone: true,
60
- imports: [CommonModule],
61
- template: `<div
62
- [style.display]="'flex'"
63
- [style.flexDirection]="'row'"
64
- [style.gap]="gap + 'px'"
65
- >
66
- <ng-container *ngTemplateOutlet="template"></ng-container>
67
- </div>`,
68
- }]
69
- }], propDecorators: { config: [{
70
- type: Input
71
- }], template: [{
72
- type: Input
73
- }] } });
74
- export class GridLayout {
75
- config;
76
- template;
77
- get columns() {
78
- return this.config?.columns ?? 2;
79
- }
80
- get gap() {
81
- return this.config?.gap ?? 12;
82
- }
83
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridLayout, deps: [], target: i0.ɵɵFactoryTarget.Component });
84
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: GridLayout, isStandalone: true, selector: "dfk-grid-layout", inputs: { config: "config", template: "template" }, ngImport: i0, template: `<div
85
- [style.display]="'grid'"
86
- [style.gridTemplateColumns]="'repeat(' + columns + ', 1fr)'"
87
- [style.gap]="gap + 'px'"
88
- >
89
- <ng-container *ngTemplateOutlet="template"></ng-container>
90
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
91
- }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: GridLayout, decorators: [{
93
- type: Component,
94
- args: [{
95
- selector: 'dfk-grid-layout',
96
- standalone: true,
97
- imports: [CommonModule],
98
- template: `<div
99
- [style.display]="'grid'"
100
- [style.gridTemplateColumns]="'repeat(' + columns + ', 1fr)'"
101
- [style.gap]="gap + 'px'"
102
- >
103
- <ng-container *ngTemplateOutlet="template"></ng-container>
104
- </div>`,
105
- }]
106
- }], propDecorators: { config: [{
107
- type: Input
108
- }], template: [{
109
- type: Input
110
- }] } });
111
- layoutRegistry.register('column', ColumnLayout);
112
- layoutRegistry.register('row', RowLayout);
113
- layoutRegistry.register('grid', GridLayout);
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdExheW91dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF5b3V0L2RlZmF1bHRMYXlvdXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQWNsRCxNQUFNLE9BQU8sWUFBWTtJQUNkLE1BQU0sQ0FBb0I7SUFDMUIsUUFBUSxDQUF3QjtJQUN6QyxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO3dHQUxVLFlBQVk7NEZBQVosWUFBWSxpSUFSYjs7Ozs7O1NBTUgsMkRBUEcsWUFBWTs7NEZBU1gsWUFBWTtrQkFaeEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7OztTQU1IO2lCQUNSOzhCQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLOztBQWtCUixNQUFNLE9BQU8sU0FBUztJQUNYLE1BQU0sQ0FBb0I7SUFDMUIsUUFBUSxDQUF3QjtJQUN6QyxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO3dHQUxVLFNBQVM7NEZBQVQsU0FBUyw4SEFSVjs7Ozs7O1NBTUgsMkRBUEcsWUFBWTs7NEZBU1gsU0FBUztrQkFackIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7OztTQU1IO2lCQUNSOzhCQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLOztBQWtCUixNQUFNLE9BQU8sVUFBVTtJQUNaLE1BQU0sQ0FBc0M7SUFDNUMsUUFBUSxDQUF3QjtJQUN6QyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQzt3R0FSVSxVQUFVOzRGQUFWLFVBQVUsK0hBUlg7Ozs7OztTQU1ILDJEQVBHLFlBQVk7OzRGQVNYLFVBQVU7a0JBWnRCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7U0FNSDtpQkFDUjs4QkFFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSzs7QUFTUixjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNoRCxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMxQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbGF5b3V0UmVnaXN0cnkgfSBmcm9tICcuL2xheW91dFJlZ2lzdHJ5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGZrLWNvbHVtbi1sYXlvdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGA8ZGl2XG4gICAgW3N0eWxlLmRpc3BsYXldPVwiJ2ZsZXgnXCJcbiAgICBbc3R5bGUuZmxleERpcmVjdGlvbl09XCInY29sdW1uJ1wiXG4gICAgW3N0eWxlLmdhcF09XCJnYXAgKyAncHgnXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5gLFxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5MYXlvdXQge1xuICBASW5wdXQoKSBjb25maWc/OiB7IGdhcD86IG51bWJlciB9O1xuICBASW5wdXQoKSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBnZXQgZ2FwKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZ2FwID8/IDEyO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rmay1yb3ctbGF5b3V0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgPGRpdlxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIidmbGV4J1wiXG4gICAgW3N0eWxlLmZsZXhEaXJlY3Rpb25dPVwiJ3JvdydcIlxuICAgIFtzdHlsZS5nYXBdPVwiZ2FwICsgJ3B4J1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+YCxcbn0pXG5leHBvcnQgY2xhc3MgUm93TGF5b3V0IHtcbiAgQElucHV0KCkgY29uZmlnPzogeyBnYXA/OiBudW1iZXIgfTtcbiAgQElucHV0KCkgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgZ2V0IGdhcCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LmdhcCA/PyAxMjtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZmstZ3JpZC1sYXlvdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGA8ZGl2XG4gICAgW3N0eWxlLmRpc3BsYXldPVwiJ2dyaWQnXCJcbiAgICBbc3R5bGUuZ3JpZFRlbXBsYXRlQ29sdW1uc109XCIncmVwZWF0KCcgKyBjb2x1bW5zICsgJywgMWZyKSdcIlxuICAgIFtzdHlsZS5nYXBdPVwiZ2FwICsgJ3B4J1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+YCxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZExheW91dCB7XG4gIEBJbnB1dCgpIGNvbmZpZz86IHsgY29sdW1ucz86IG51bWJlcjsgZ2FwPzogbnVtYmVyIH07XG4gIEBJbnB1dCgpIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIGdldCBjb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uY29sdW1ucyA/PyAyO1xuICB9XG4gIGdldCBnYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5nYXAgPz8gMTI7XG4gIH1cbn1cblxubGF5b3V0UmVnaXN0cnkucmVnaXN0ZXIoJ2NvbHVtbicsIENvbHVtbkxheW91dCk7XG5sYXlvdXRSZWdpc3RyeS5yZWdpc3Rlcigncm93JywgUm93TGF5b3V0KTtcbmxheW91dFJlZ2lzdHJ5LnJlZ2lzdGVyKCdncmlkJywgR3JpZExheW91dCk7XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './defaultLayouts';
2
- export { layoutRegistry, LayoutRegistry } from './layoutRegistry';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF5b3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdExheW91dHMnO1xuZXhwb3J0IHsgbGF5b3V0UmVnaXN0cnksIExheW91dFJlZ2lzdHJ5IH0gZnJvbSAnLi9sYXlvdXRSZWdpc3RyeSc7XG4iXX0=
@@ -1,14 +0,0 @@
1
- export class LayoutRegistry {
2
- layouts = new Map();
3
- register(type, component) {
4
- if (this.layouts.has(type)) {
5
- console.warn(`[dynamic-field-kit] Layout "${type}" already exists`);
6
- }
7
- this.layouts.set(type, component);
8
- }
9
- get(type) {
10
- return this.layouts.get(type);
11
- }
12
- }
13
- export const layoutRegistry = new LayoutRegistry();
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0UmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF5b3V0L2xheW91dFJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sT0FBTyxjQUFjO0lBQ2pCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztJQUU1RCxRQUFRLENBQUMsSUFBWSxFQUFFLFNBQWlDO1FBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixJQUFJLGtCQUFrQixDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBMYXlvdXRSZW5kZXJlcjxDID0gdW5rbm93bj4gPSAocHJvcHM6IHtcbiAgY2hpbGRyZW46IHVua25vd25bXTtcbiAgY29uZmlnPzogQztcbn0pID0+IHVua25vd247XG5cbmV4cG9ydCB0eXBlIEFuZ3VsYXJMYXlvdXRDb21wb25lbnQgPSBUeXBlPHVua25vd24+O1xuXG5leHBvcnQgY2xhc3MgTGF5b3V0UmVnaXN0cnkge1xuICBwcml2YXRlIGxheW91dHMgPSBuZXcgTWFwPHN0cmluZywgQW5ndWxhckxheW91dENvbXBvbmVudD4oKTtcblxuICByZWdpc3Rlcih0eXBlOiBzdHJpbmcsIGNvbXBvbmVudDogQW5ndWxhckxheW91dENvbXBvbmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxheW91dHMuaGFzKHR5cGUpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtkeW5hbWljLWZpZWxkLWtpdF0gTGF5b3V0IFwiJHt0eXBlfVwiIGFscmVhZHkgZXhpc3RzYCk7XG4gICAgfVxuICAgIHRoaXMubGF5b3V0cy5zZXQodHlwZSwgY29tcG9uZW50KTtcbiAgfVxuXG4gIGdldCh0eXBlOiBzdHJpbmcpOiBBbmd1bGFyTGF5b3V0Q29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXRzLmdldCh0eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbGF5b3V0UmVnaXN0cnkgPSBuZXcgTGF5b3V0UmVnaXN0cnkoKTtcbiJdfQ==
@@ -1,52 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { DynamicInput } from '../components/DynamicInput';
4
- import { FieldInput } from '../components/FieldInput';
5
- import { MultiFieldInput } from '../components/MultiFieldInput';
6
- import { ColumnLayout, RowLayout, GridLayout } from '../layout/defaultLayouts';
7
- import * as i0 from "@angular/core";
8
- export class DynamicFieldKitModule {
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DynamicFieldKitModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: DynamicFieldKitModule, imports: [CommonModule,
11
- DynamicInput,
12
- FieldInput,
13
- MultiFieldInput,
14
- ColumnLayout,
15
- RowLayout,
16
- GridLayout], exports: [DynamicInput,
17
- FieldInput,
18
- MultiFieldInput,
19
- ColumnLayout,
20
- RowLayout,
21
- GridLayout] });
22
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DynamicFieldKitModule, imports: [CommonModule,
23
- DynamicInput,
24
- FieldInput,
25
- MultiFieldInput,
26
- ColumnLayout,
27
- RowLayout,
28
- GridLayout] });
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DynamicFieldKitModule, decorators: [{
31
- type: NgModule,
32
- args: [{
33
- imports: [
34
- CommonModule,
35
- DynamicInput,
36
- FieldInput,
37
- MultiFieldInput,
38
- ColumnLayout,
39
- RowLayout,
40
- GridLayout,
41
- ],
42
- exports: [
43
- DynamicInput,
44
- FieldInput,
45
- MultiFieldInput,
46
- ColumnLayout,
47
- RowLayout,
48
- GridLayout,
49
- ],
50
- }]
51
- }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC1raXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9keW5hbWljLWZpZWxkLWtpdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBcUIvRSxNQUFNLE9BQU8scUJBQXFCO3dHQUFyQixxQkFBcUI7eUdBQXJCLHFCQUFxQixZQWpCOUIsWUFBWTtZQUNaLFlBQVk7WUFDWixVQUFVO1lBQ1YsZUFBZTtZQUNmLFlBQVk7WUFDWixTQUFTO1lBQ1QsVUFBVSxhQUdWLFlBQVk7WUFDWixVQUFVO1lBQ1YsZUFBZTtZQUNmLFlBQVk7WUFDWixTQUFTO1lBQ1QsVUFBVTt5R0FHRCxxQkFBcUIsWUFqQjlCLFlBQVk7WUFDWixZQUFZO1lBQ1osVUFBVTtZQUNWLGVBQWU7WUFDZixZQUFZO1lBQ1osU0FBUztZQUNULFVBQVU7OzRGQVdELHFCQUFxQjtrQkFuQmpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixTQUFTO3dCQUNULFVBQVU7cUJBQ1g7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxVQUFVO3FCQUNYO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IER5bmFtaWNJbnB1dCB9IGZyb20gJy4uL2NvbXBvbmVudHMvRHluYW1pY0lucHV0JztcbmltcG9ydCB7IEZpZWxkSW5wdXQgfSBmcm9tICcuLi9jb21wb25lbnRzL0ZpZWxkSW5wdXQnO1xuaW1wb3J0IHsgTXVsdGlGaWVsZElucHV0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9NdWx0aUZpZWxkSW5wdXQnO1xuXG5pbXBvcnQgeyBDb2x1bW5MYXlvdXQsIFJvd0xheW91dCwgR3JpZExheW91dCB9IGZyb20gJy4uL2xheW91dC9kZWZhdWx0TGF5b3V0cyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHluYW1pY0lucHV0LFxuICAgIEZpZWxkSW5wdXQsXG4gICAgTXVsdGlGaWVsZElucHV0LFxuICAgIENvbHVtbkxheW91dCxcbiAgICBSb3dMYXlvdXQsXG4gICAgR3JpZExheW91dCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIER5bmFtaWNJbnB1dCxcbiAgICBGaWVsZElucHV0LFxuICAgIE11bHRpRmllbGRJbnB1dCxcbiAgICBDb2x1bW5MYXlvdXQsXG4gICAgUm93TGF5b3V0LFxuICAgIEdyaWRMYXlvdXQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGaWVsZEtpdE1vZHVsZSB7fVxuIl19
@@ -1,18 +0,0 @@
1
- // public-api.ts
2
- // Components
3
- export * from './components/BaseInput';
4
- export * from './components/DynamicInput';
5
- export * from './components/FieldInput';
6
- export * from './components/MultiFieldInput';
7
- // Layout
8
- export * from './layout';
9
- export * from './types/layout';
10
- // Module
11
- export * from './lib/dynamic-field-kit.module';
12
- // Optional: expose registry for advanced use cases, but not required for basic usage
13
- export { fieldRegistry, FieldRegistry } from '@dynamic-field-kit/core';
14
- export { validateField, validateFieldAsync, validateFields, validateFieldsAsync, resolveDisabled, resolveReadOnly, resolveOptions, validators, } from '@dynamic-field-kit/core';
15
- // Scoped registry: provide FIELD_REGISTRY on a component/route to give that
16
- // subtree an isolated set of renderers.
17
- export { FIELD_REGISTRY } from './fieldRegistryToken';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQUVoQixhQUFhO0FBQ2IsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxTQUFTO0FBQ1QsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQixTQUFTO0FBQ1QsY0FBYyxnQ0FBZ0MsQ0FBQztBQVMvQyxxRkFBcUY7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLHlCQUF5QixDQUFDO0FBR2pDLDRFQUE0RTtBQUM1RSx3Q0FBd0M7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcHVibGljLWFwaS50c1xuXG4vLyBDb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvQmFzZUlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9EeW5hbWljSW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL0ZpZWxkSW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL011bHRpRmllbGRJbnB1dCc7XG5cbi8vIExheW91dFxuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9sYXlvdXQnO1xuXG4vLyBNb2R1bGVcbmV4cG9ydCAqIGZyb20gJy4vbGliL2R5bmFtaWMtZmllbGQta2l0Lm1vZHVsZSc7XG5cbi8vIFJlLWV4cG9ydCB0eXBlcyBmcm9tIGNvcmUgKG9ubHkgdHlwZSwgbm90IGV4cG9ydCAqIClcbmV4cG9ydCB0eXBlIHtcbiAgRmllbGREZXNjcmlwdGlvbixcbiAgRmllbGRSZW5kZXJlclByb3BzLFxuICBGaWVsZFR5cGVLZXksXG59IGZyb20gJ0BkeW5hbWljLWZpZWxkLWtpdC9jb3JlJztcblxuLy8gT3B0aW9uYWw6IGV4cG9zZSByZWdpc3RyeSBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzLCBidXQgbm90IHJlcXVpcmVkIGZvciBiYXNpYyB1c2FnZVxuZXhwb3J0IHsgZmllbGRSZWdpc3RyeSwgRmllbGRSZWdpc3RyeSB9IGZyb20gJ0BkeW5hbWljLWZpZWxkLWtpdC9jb3JlJztcblxuZXhwb3J0IHtcbiAgdmFsaWRhdGVGaWVsZCxcbiAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICB2YWxpZGF0ZUZpZWxkcyxcbiAgdmFsaWRhdGVGaWVsZHNBc3luYyxcbiAgcmVzb2x2ZURpc2FibGVkLFxuICByZXNvbHZlUmVhZE9ubHksXG4gIHJlc29sdmVPcHRpb25zLFxuICB2YWxpZGF0b3JzLFxufSBmcm9tICdAZHluYW1pYy1maWVsZC1raXQvY29yZSc7XG5leHBvcnQgdHlwZSB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAZHluYW1pYy1maWVsZC1raXQvY29yZSc7XG5cbi8vIFNjb3BlZCByZWdpc3RyeTogcHJvdmlkZSBGSUVMRF9SRUdJU1RSWSBvbiBhIGNvbXBvbmVudC9yb3V0ZSB0byBnaXZlIHRoYXRcbi8vIHN1YnRyZWUgYW4gaXNvbGF0ZWQgc2V0IG9mIHJlbmRlcmVycy5cbmV4cG9ydCB7IEZJRUxEX1JFR0lTVFJZIH0gZnJvbSAnLi9maWVsZFJlZ2lzdHJ5VG9rZW4nO1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2xheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGF5b3V0IGNvbmZpZyB0eXBlcyBsaXZlIGluIEBkeW5hbWljLWZpZWxkLWtpdC9jb3JlIHNvIHRoZSBjb250cmFjdCBzdGF5c1xuLy8gaWRlbnRpY2FsIGFjcm9zcyBldmVyeSBmcmFtZXdvcmsgYWRhcHRlci4gUmUtZXhwb3J0ZWQgaGVyZSAod2l0aCB0aGVcbi8vIGhpc3RvcmljYWwgQW5ndWxhciAuLi5Db25maWcgYWxpYXNlcykgdG8gcHJlc2VydmUgZXhpc3RpbmcgaW1wb3J0IHBhdGhzLlxuaW1wb3J0IHR5cGUgeyBCYXNlTGF5b3V0LCBSZXNwb25zaXZlTGF5b3V0IH0gZnJvbSAnQGR5bmFtaWMtZmllbGQta2l0L2NvcmUnO1xuXG5leHBvcnQgdHlwZSB7XG4gIENvbHVtbkxheW91dENvbmZpZyxcbiAgUm93TGF5b3V0Q29uZmlnLFxuICBHcmlkTGF5b3V0Q29uZmlnLFxuICBMYXlvdXRDb25maWcsXG59IGZyb20gJ0BkeW5hbWljLWZpZWxkLWtpdC9jb3JlJztcblxuZXhwb3J0IHR5cGUgQmFzZUxheW91dENvbmZpZyA9IEJhc2VMYXlvdXQ7XG5leHBvcnQgdHlwZSBSZXNwb25zaXZlTGF5b3V0Q29uZmlnID0gUmVzcG9uc2l2ZUxheW91dDtcbiJdfQ==