@ngx-formly/core 6.3.10 → 7.0.0-alpha.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 (121) hide show
  1. package/README.md +1 -0
  2. package/esm2022/json-schema/formly-json-schema.service.mjs +628 -0
  3. package/esm2022/lib/components/formly.field.mjs +292 -0
  4. package/esm2022/lib/components/formly.form.mjs +164 -0
  5. package/{esm2020 → esm2022}/lib/components/formly.template.mjs +7 -7
  6. package/esm2022/lib/core.config.mjs +36 -0
  7. package/esm2022/lib/core.mjs +20 -0
  8. package/esm2022/lib/core.module.mjs +74 -0
  9. package/esm2022/lib/extensions/core/core.mjs +148 -0
  10. package/esm2022/lib/extensions/field-expression/field-expression.mjs +250 -0
  11. package/esm2022/lib/extensions/field-expression/utils.mjs +17 -0
  12. package/esm2022/lib/extensions/field-form/field-form.mjs +141 -0
  13. package/esm2022/lib/extensions/field-form/utils.mjs +100 -0
  14. package/esm2022/lib/extensions/index.mjs +2 -0
  15. package/esm2022/lib/models/fieldconfig.cache.mjs +2 -0
  16. package/esm2022/lib/models/fieldconfig.mjs +2 -0
  17. package/esm2022/lib/services/formly.builder.mjs +100 -0
  18. package/esm2022/lib/services/formly.config.mjs +229 -0
  19. package/esm2022/lib/templates/field-array.type.mjs +84 -0
  20. package/{esm2020 → esm2022}/lib/templates/field-template.type.mjs +9 -9
  21. package/esm2022/lib/templates/field.type.mjs +57 -0
  22. package/{esm2020 → esm2022}/lib/templates/field.wrapper.mjs +4 -4
  23. package/esm2022/lib/templates/formly.attributes.mjs +187 -0
  24. package/{esm2020 → esm2022}/lib/templates/formly.group.mjs +8 -8
  25. package/{esm2020 → esm2022}/lib/templates/formly.validation-message.mjs +4 -4
  26. package/esm2022/lib/utils.mjs +312 -0
  27. package/esm2022/preset/preset.config.mjs +11 -0
  28. package/esm2022/preset/preset.module.mjs +18 -0
  29. package/{esm2020 → esm2022}/select/select-options.pipe.mjs +4 -4
  30. package/{esm2020 → esm2022}/select/select.module.mjs +5 -5
  31. package/{esm2020 → esm2022}/testing/component-factory.mjs +5 -4
  32. package/{fesm2020 → fesm2022}/ngx-formly-core-json-schema.mjs +6 -6
  33. package/fesm2022/ngx-formly-core-json-schema.mjs.map +1 -0
  34. package/{fesm2020 → fesm2022}/ngx-formly-core-preset.mjs +14 -19
  35. package/fesm2022/ngx-formly-core-preset.mjs.map +1 -0
  36. package/{fesm2020 → fesm2022}/ngx-formly-core-select.mjs +7 -7
  37. package/{fesm2020 → fesm2022}/ngx-formly-core-select.mjs.map +1 -1
  38. package/{fesm2020 → fesm2022}/ngx-formly-core-testing.mjs +4 -3
  39. package/fesm2022/ngx-formly-core-testing.mjs.map +1 -0
  40. package/{fesm2020 → fesm2022}/ngx-formly-core.mjs +1751 -1707
  41. package/fesm2022/ngx-formly-core.mjs.map +1 -0
  42. package/lib/components/formly.field.d.ts +5 -1
  43. package/lib/components/formly.form.d.ts +8 -4
  44. package/lib/components/formly.template.d.ts +1 -1
  45. package/lib/core.config.d.ts +10 -0
  46. package/lib/core.d.ts +4 -3
  47. package/lib/core.module.d.ts +2 -5
  48. package/lib/extensions/field-expression/utils.d.ts +1 -1
  49. package/lib/extensions/index.d.ts +1 -0
  50. package/lib/models/config.d.ts +1 -1
  51. package/lib/models/fieldconfig.cache.d.ts +3 -3
  52. package/lib/models/fieldconfig.d.ts +8 -7
  53. package/lib/services/formly.builder.d.ts +5 -5
  54. package/lib/services/formly.config.d.ts +2 -6
  55. package/lib/templates/field-array.type.d.ts +3 -3
  56. package/lib/templates/field-template.type.d.ts +1 -1
  57. package/lib/templates/field.type.d.ts +5 -5
  58. package/lib/templates/field.wrapper.d.ts +1 -1
  59. package/lib/templates/formly.attributes.d.ts +1 -1
  60. package/lib/templates/formly.group.d.ts +1 -1
  61. package/lib/templates/formly.validation-message.d.ts +1 -1
  62. package/lib/utils.d.ts +3 -3
  63. package/package.json +23 -37
  64. package/preset/preset.config.d.ts +2 -0
  65. package/select/select-options.pipe.d.ts +1 -1
  66. package/esm2020/json-schema/formly-json-schema.service.mjs +0 -628
  67. package/esm2020/lib/components/formly.field.mjs +0 -284
  68. package/esm2020/lib/components/formly.form.mjs +0 -148
  69. package/esm2020/lib/core.mjs +0 -19
  70. package/esm2020/lib/core.module.mjs +0 -91
  71. package/esm2020/lib/extensions/core/core.mjs +0 -148
  72. package/esm2020/lib/extensions/field-expression/field-expression.mjs +0 -250
  73. package/esm2020/lib/extensions/field-expression/utils.mjs +0 -17
  74. package/esm2020/lib/extensions/field-form/field-form.mjs +0 -141
  75. package/esm2020/lib/extensions/field-form/utils.mjs +0 -100
  76. package/esm2020/lib/models/fieldconfig.cache.mjs +0 -2
  77. package/esm2020/lib/models/fieldconfig.mjs +0 -2
  78. package/esm2020/lib/services/formly.builder.mjs +0 -93
  79. package/esm2020/lib/services/formly.config.mjs +0 -229
  80. package/esm2020/lib/templates/field-array.type.mjs +0 -84
  81. package/esm2020/lib/templates/field.type.mjs +0 -57
  82. package/esm2020/lib/templates/formly.attributes.mjs +0 -187
  83. package/esm2020/lib/utils.mjs +0 -312
  84. package/esm2020/preset/preset.module.mjs +0 -32
  85. package/fesm2015/ngx-formly-core-json-schema.mjs +0 -615
  86. package/fesm2015/ngx-formly-core-json-schema.mjs.map +0 -1
  87. package/fesm2015/ngx-formly-core-preset.mjs +0 -69
  88. package/fesm2015/ngx-formly-core-preset.mjs.map +0 -1
  89. package/fesm2015/ngx-formly-core-select.mjs +0 -120
  90. package/fesm2015/ngx-formly-core-select.mjs.map +0 -1
  91. package/fesm2015/ngx-formly-core-testing.mjs +0 -87
  92. package/fesm2015/ngx-formly-core-testing.mjs.map +0 -1
  93. package/fesm2015/ngx-formly-core.mjs +0 -2418
  94. package/fesm2015/ngx-formly-core.mjs.map +0 -1
  95. package/fesm2020/ngx-formly-core-json-schema.mjs.map +0 -1
  96. package/fesm2020/ngx-formly-core-preset.mjs.map +0 -1
  97. package/fesm2020/ngx-formly-core-testing.mjs.map +0 -1
  98. package/fesm2020/ngx-formly-core.mjs.map +0 -1
  99. package/json-schema/package.json +0 -10
  100. package/preset/package.json +0 -10
  101. package/select/package.json +0 -10
  102. package/testing/package.json +0 -10
  103. /package/{esm2020 → esm2022}/json-schema/ngx-formly-core-json-schema.mjs +0 -0
  104. /package/{esm2020 → esm2022}/json-schema/public_api.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/extensions/field-validation/field-validation.mjs +0 -0
  106. /package/{esm2020 → esm2022}/lib/models/config.mjs +0 -0
  107. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  108. /package/{esm2020 → esm2022}/ngx-formly-core.mjs +0 -0
  109. /package/{esm2020 → esm2022}/preset/ngx-formly-core-preset.mjs +0 -0
  110. /package/{esm2020 → esm2022}/preset/preset-substitution.extension.mjs +0 -0
  111. /package/{esm2020 → esm2022}/preset/public_api.mjs +0 -0
  112. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  113. /package/{esm2020 → esm2022}/select/ngx-formly-core-select.mjs +0 -0
  114. /package/{esm2020 → esm2022}/select/public_api.mjs +0 -0
  115. /package/{esm2020 → esm2022}/testing/ngx-formly-core-testing.mjs +0 -0
  116. /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
  117. /package/{ngx-formly-core.d.ts → index.d.ts} +0 -0
  118. /package/json-schema/{ngx-formly-core-json-schema.d.ts → index.d.ts} +0 -0
  119. /package/preset/{ngx-formly-core-preset.d.ts → index.d.ts} +0 -0
  120. /package/select/{ngx-formly-core-select.d.ts → index.d.ts} +0 -0
  121. /package/testing/{ngx-formly-core-testing.d.ts → index.d.ts} +0 -0
@@ -0,0 +1,292 @@
1
+ import { Component, Input, ViewContainerRef, ViewChild, ComponentRef, Optional, } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { defineHiddenProp, observe, observeDeep, getFieldValue, assignFieldValue, isObject, markFieldForCheck, hasKey, isSignalRequired, } from '../utils';
4
+ import { isObservable } from 'rxjs';
5
+ import { debounceTime, distinctUntilChanged, map, startWith } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../services/formly.config";
8
+ import * as i2 from "./formly.template";
9
+ /**
10
+ * The `<formly-field>` component is used to render the UI widget (layout + type) of a given `field`.
11
+ */
12
+ export class FormlyField {
13
+ get containerRef() {
14
+ return this.config.extras.renderFormlyFieldElement ? this.viewContainerRef : this.hostContainerRef;
15
+ }
16
+ get elementRef() {
17
+ if (this.config.extras.renderFormlyFieldElement) {
18
+ return this._elementRef;
19
+ }
20
+ if (this.componentRefs?.[0] instanceof ComponentRef) {
21
+ return this.componentRefs[0].location;
22
+ }
23
+ return null;
24
+ }
25
+ constructor(config, renderer, _elementRef, hostContainerRef, form) {
26
+ this.config = config;
27
+ this.renderer = renderer;
28
+ this._elementRef = _elementRef;
29
+ this.hostContainerRef = hostContainerRef;
30
+ this.form = form;
31
+ this.hostObservers = [];
32
+ this.componentRefs = [];
33
+ this.hooksObservers = [];
34
+ this.detectFieldBuild = false;
35
+ this.valueChangesUnsubscribe = () => { };
36
+ }
37
+ ngAfterContentInit() {
38
+ this.triggerHook('afterContentInit');
39
+ }
40
+ ngAfterViewInit() {
41
+ this.triggerHook('afterViewInit');
42
+ }
43
+ ngDoCheck() {
44
+ if (this.detectFieldBuild && this.field && this.field.options) {
45
+ this.render();
46
+ }
47
+ }
48
+ ngOnInit() {
49
+ this.triggerHook('onInit');
50
+ }
51
+ ngOnChanges(changes) {
52
+ this.triggerHook('onChanges', changes);
53
+ }
54
+ ngOnDestroy() {
55
+ this.resetRefs(this.field);
56
+ this.hostObservers.forEach((hostObserver) => hostObserver.unsubscribe());
57
+ this.hooksObservers.forEach((unsubscribe) => unsubscribe());
58
+ this.valueChangesUnsubscribe();
59
+ this.triggerHook('onDestroy');
60
+ }
61
+ renderField(containerRef, f, wrappers = []) {
62
+ if (this.containerRef === containerRef) {
63
+ this.resetRefs(this.field);
64
+ this.containerRef.clear();
65
+ wrappers = this.field?.wrappers;
66
+ }
67
+ if (wrappers?.length > 0) {
68
+ const [wrapper, ...wps] = wrappers;
69
+ const { component } = this.config.getWrapper(wrapper);
70
+ const ref = containerRef.createComponent(component);
71
+ this.attachComponentRef(ref, f);
72
+ observe(ref.instance, ['fieldComponent'], ({ currentValue, previousValue, firstChange }) => {
73
+ if (currentValue) {
74
+ if (previousValue && previousValue._lContainer === currentValue._lContainer) {
75
+ return;
76
+ }
77
+ const viewRef = previousValue ? previousValue.detach() : null;
78
+ if (viewRef && !viewRef.destroyed) {
79
+ currentValue.insert(viewRef);
80
+ }
81
+ else {
82
+ this.renderField(currentValue, f, wps);
83
+ }
84
+ !firstChange && ref.changeDetectorRef.detectChanges();
85
+ }
86
+ });
87
+ }
88
+ else if (f?.type) {
89
+ const inlineType = this.form?.templates?.find((ref) => ref.name === f.type);
90
+ let ref;
91
+ if (inlineType) {
92
+ ref = containerRef.createEmbeddedView(inlineType.ref, { $implicit: f });
93
+ }
94
+ else {
95
+ const { component } = this.config.getType(f.type, true);
96
+ ref = containerRef.createComponent(component);
97
+ }
98
+ this.attachComponentRef(ref, f);
99
+ }
100
+ }
101
+ triggerHook(name, changes) {
102
+ if (name === 'onInit' || (name === 'onChanges' && changes.field && !changes.field.firstChange)) {
103
+ this.valueChangesUnsubscribe();
104
+ this.valueChangesUnsubscribe = this.fieldChanges(this.field);
105
+ }
106
+ if (this.field?.hooks?.[name]) {
107
+ if (!changes || changes.field) {
108
+ const r = this.field.hooks[name](this.field);
109
+ if (isObservable(r) && ['onInit', 'afterContentInit', 'afterViewInit'].indexOf(name) !== -1) {
110
+ const sub = r.subscribe();
111
+ this.hooksObservers.push(() => sub.unsubscribe());
112
+ }
113
+ }
114
+ }
115
+ if (name === 'onChanges' && changes.field) {
116
+ this.resetRefs(changes.field.previousValue);
117
+ this.render();
118
+ }
119
+ }
120
+ attachComponentRef(ref, field) {
121
+ this.componentRefs.push(ref);
122
+ field._componentRefs.push(ref);
123
+ if (ref instanceof ComponentRef) {
124
+ Object.assign(ref.instance, { field });
125
+ }
126
+ }
127
+ render() {
128
+ if (!this.field) {
129
+ return;
130
+ }
131
+ // require Formly build
132
+ if (!this.field.options) {
133
+ this.detectFieldBuild = true;
134
+ return;
135
+ }
136
+ this.detectFieldBuild = false;
137
+ this.hostObservers.forEach((hostObserver) => hostObserver.unsubscribe());
138
+ this.hostObservers = [
139
+ observe(this.field, ['hide'], ({ firstChange, currentValue }) => {
140
+ const containerRef = this.containerRef;
141
+ if (this.config.extras.lazyRender === false) {
142
+ firstChange && this.renderField(containerRef, this.field);
143
+ if (!firstChange || (firstChange && currentValue)) {
144
+ this.elementRef &&
145
+ this.renderer.setStyle(this.elementRef.nativeElement, 'display', currentValue ? 'none' : '');
146
+ }
147
+ }
148
+ else {
149
+ if (currentValue) {
150
+ containerRef.clear();
151
+ if (this.field.className) {
152
+ this.renderer.removeAttribute(this.elementRef.nativeElement, 'class');
153
+ }
154
+ }
155
+ else {
156
+ this.renderField(containerRef, this.field);
157
+ if (this.field.className) {
158
+ this.renderer.setAttribute(this.elementRef.nativeElement, 'class', this.field.className);
159
+ }
160
+ }
161
+ }
162
+ !firstChange && this.field.options.detectChanges(this.field);
163
+ }),
164
+ observe(this.field, ['className'], ({ firstChange, currentValue }) => {
165
+ if ((!firstChange || (firstChange && currentValue)) &&
166
+ (!this.config.extras.lazyRender || this.field.hide !== true)) {
167
+ this.elementRef && this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);
168
+ }
169
+ }),
170
+ ];
171
+ if (!isSignalRequired()) {
172
+ ['touched', 'pristine', 'status'].forEach((prop) => this.hostObservers.push(observe(this.field, ['formControl', prop], ({ firstChange }) => !firstChange && markFieldForCheck(this.field))));
173
+ }
174
+ else if (this.field.formControl) {
175
+ const events = this.field.formControl.events.subscribe(() => markFieldForCheck(this.field));
176
+ this.hostObservers.push(events);
177
+ }
178
+ }
179
+ resetRefs(field) {
180
+ if (field) {
181
+ if (field._localFields) {
182
+ field._localFields = [];
183
+ }
184
+ else {
185
+ defineHiddenProp(this.field, '_localFields', []);
186
+ }
187
+ if (field._componentRefs) {
188
+ field._componentRefs = field._componentRefs.filter((ref) => this.componentRefs.indexOf(ref) === -1);
189
+ }
190
+ else {
191
+ defineHiddenProp(this.field, '_componentRefs', []);
192
+ }
193
+ }
194
+ this.componentRefs = [];
195
+ }
196
+ fieldChanges(field) {
197
+ if (!field) {
198
+ return () => { };
199
+ }
200
+ const propsObserver = observeDeep(field, ['props'], () => field.options.detectChanges(field));
201
+ const subscribes = [
202
+ () => {
203
+ propsObserver();
204
+ },
205
+ ];
206
+ for (const key of Object.keys(field._expressions || {})) {
207
+ const expressionObserver = observe(field, ['_expressions', key], ({ currentValue, previousValue }) => {
208
+ if (previousValue?.subscription) {
209
+ previousValue.subscription.unsubscribe();
210
+ previousValue.subscription = null;
211
+ }
212
+ if (isObservable(currentValue.value$)) {
213
+ currentValue.subscription = currentValue.value$.subscribe();
214
+ }
215
+ });
216
+ subscribes.push(() => {
217
+ if (field._expressions[key]?.subscription) {
218
+ field._expressions[key].subscription.unsubscribe();
219
+ }
220
+ expressionObserver.unsubscribe();
221
+ });
222
+ }
223
+ for (const path of [['focus'], ['template'], ['fieldGroupClassName'], ['validation', 'show']]) {
224
+ const fieldObserver = observe(field, path, ({ firstChange }) => !firstChange && field.options.detectChanges(field));
225
+ subscribes.push(() => fieldObserver.unsubscribe());
226
+ }
227
+ if (field.formControl && !field.fieldGroup) {
228
+ const control = field.formControl;
229
+ let valueChanges = control.valueChanges.pipe(map((value) => {
230
+ field.parsers?.map((parserFn) => (value = parserFn(value, field)));
231
+ if (!Object.is(value, field.formControl.value)) {
232
+ field.formControl.setValue(value);
233
+ }
234
+ return value;
235
+ }), distinctUntilChanged((x, y) => {
236
+ if (x !== y || Array.isArray(x) || isObject(x)) {
237
+ return false;
238
+ }
239
+ return true;
240
+ }));
241
+ if (control.value !== getFieldValue(field)) {
242
+ valueChanges = valueChanges.pipe(startWith(control.value));
243
+ }
244
+ const { updateOn, debounce } = field.modelOptions;
245
+ if ((!updateOn || updateOn === 'change') && debounce?.default > 0) {
246
+ valueChanges = control.valueChanges.pipe(debounceTime(debounce.default));
247
+ }
248
+ const sub = valueChanges.subscribe((value) => {
249
+ // workaround for https://github.com/angular/angular/issues/13792
250
+ if (control._fields?.length > 1 && control instanceof FormControl) {
251
+ control.patchValue(value, { emitEvent: false, onlySelf: true });
252
+ }
253
+ if (hasKey(field)) {
254
+ assignFieldValue(field, value);
255
+ }
256
+ field.options.fieldChanges.next({ value, field, type: 'valueChanges' });
257
+ });
258
+ subscribes.push(() => sub.unsubscribe());
259
+ }
260
+ let templateFieldsSubs = [];
261
+ observe(field, ['_localFields'], ({ currentValue }) => {
262
+ templateFieldsSubs.forEach((unsubscribe) => unsubscribe());
263
+ templateFieldsSubs = (currentValue || []).map((f) => this.fieldChanges(f));
264
+ });
265
+ return () => {
266
+ subscribes.forEach((unsubscribe) => unsubscribe());
267
+ templateFieldsSubs.forEach((unsubscribe) => unsubscribe());
268
+ };
269
+ }
270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyField, deps: [{ token: i1.FormlyConfig }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i2.FormlyFieldTemplates, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormlyField, isStandalone: true, selector: "formly-field", inputs: { field: "field" }, viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true, styles: [":host:empty{display:none}\n"] }); }
272
+ }
273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyField, decorators: [{
274
+ type: Component,
275
+ args: [{ selector: 'formly-field', template: '<ng-template #container></ng-template>', standalone: true, styles: [":host:empty{display:none}\n"] }]
276
+ }], ctorParameters: function () { return [{ type: i1.FormlyConfig }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i2.FormlyFieldTemplates, decorators: [{
277
+ type: Optional
278
+ }] }]; }, propDecorators: { field: [{
279
+ type: Input
280
+ }], viewContainerRef: [{
281
+ type: ViewChild,
282
+ args: ['container', { read: ViewContainerRef, static: true }]
283
+ }] } });
284
+ export class LegacyFormlyField extends FormlyField {
285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LegacyFormlyField, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
286
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LegacyFormlyField, selector: "formly-field", usesInheritance: true, ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true, styles: [":host:empty{display:none}\n"] }); }
287
+ }
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LegacyFormlyField, decorators: [{
289
+ type: Component,
290
+ args: [{ selector: 'formly-field', template: '<ng-template #container></ng-template>', standalone: false, styles: [":host:empty{display:none}\n"] }]
291
+ }] });
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFlBQVksRUFXWixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFdBQVcsRUFDWCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsTUFBTSxFQUVOLGdCQUFnQixHQUNqQixNQUFNLFVBQVUsQ0FBQztBQUdsQixPQUFPLEVBQTRCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUdwRjs7R0FFRztBQU9ILE1BQU0sT0FBTyxXQUFXO0lBVXRCLElBQVksWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNyRyxDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksWUFBWSxFQUFFO1lBQ25ELE9BQU8sSUFBSSxD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QUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxFQUFFO1lBQ1YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNuRCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQzsrR0ExVVUsV0FBVzttR0FBWCxXQUFXLDhMQUdVLGdCQUFnQixnRUFQdEMsd0NBQXdDOzs0RkFJdkMsV0FBVztrQkFOdkIsU0FBUzsrQkFDRSxjQUFjLFlBQ2Qsd0NBQXdDLGNBRXRDLElBQUk7OzBCQWtDYixRQUFROzRDQTlCRixLQUFLO3NCQUFiLEtBQUs7Z0JBQzRELGdCQUFnQjtzQkFBakYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7QUFnVmxFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxXQUFXOytHQUFyQyxpQkFBaUI7bUdBQWpCLGlCQUFpQiwyRUFKbEIsd0NBQXdDOzs0RkFJdkMsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWMsWUFDZCx3Q0FBd0MsY0FFdEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQ29tcG9uZW50UmVmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBEb0NoZWNrLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBSZW5kZXJlcjIsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlDb25maWcgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb3JtbHkuY29uZmlnJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBGb3JtbHlIb29rQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIGRlZmluZUhpZGRlblByb3AsXG4gIG9ic2VydmUsXG4gIG9ic2VydmVEZWVwLFxuICBnZXRGaWVsZFZhbHVlLFxuICBhc3NpZ25GaWVsZFZhbHVlLFxuICBpc09iamVjdCxcbiAgbWFya0ZpZWxkRm9yQ2hlY2ssXG4gIGhhc0tleSxcbiAgSU9ic2VydmVyLFxuICBpc1NpZ25hbFJlcXVpcmVkLFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGaWVsZFdyYXBwZXIgfSBmcm9tICcuLi90ZW1wbGF0ZXMvZmllbGQud3JhcHBlcic7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuLi90ZW1wbGF0ZXMvZmllbGQudHlwZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZFRlbXBsYXRlcyB9IGZyb20gJy4vZm9ybWx5LnRlbXBsYXRlJztcblxuLyoqXG4gKiBUaGUgYDxmb3JtbHktZmllbGQ+YCBjb21wb25lbnQgaXMgdXNlZCB0byByZW5kZXIgdGhlIFVJIHdpZGdldCAobGF5b3V0ICsgdHlwZSkgb2YgYSBnaXZlbiBgZmllbGRgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktZmllbGQnLFxuICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZSAjY29udGFpbmVyPjwvbmctdGVtcGxhdGU+JyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybWx5LmZpZWxkLnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIFRoZSBmaWVsZCBjb25maWcuICovXG4gIEBJbnB1dCgpIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZztcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgdmlld0NvbnRhaW5lclJlZiE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBob3N0T2JzZXJ2ZXJzOiAoSU9ic2VydmVyPGFueT4gfCBTdWJzY3JpcHRpb24pW10gPSBbXTtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWZzOiAoQ29tcG9uZW50UmVmPEZpZWxkVHlwZT4gfCBFbWJlZGRlZFZpZXdSZWY8RmllbGRUeXBlPilbXSA9IFtdO1xuICBwcml2YXRlIGhvb2tzT2JzZXJ2ZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICBwcml2YXRlIGRldGVjdEZpZWxkQnVpbGQgPSBmYWxzZTtcblxuICBwcml2YXRlIGdldCBjb250YWluZXJSZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmV4dHJhcy5yZW5kZXJGb3JtbHlGaWVsZEVsZW1lbnQgPyB0aGlzLnZpZXdDb250YWluZXJSZWYgOiB0aGlzLmhvc3RDb250YWluZXJSZWY7XG4gIH1cblxuICBwcml2YXRlIGdldCBlbGVtZW50UmVmKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5leHRyYXMucmVuZGVyRm9ybWx5RmllbGRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmcz8uWzBdIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRSZWZzWzBdLmxvY2F0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VzVW5zdWJzY3JpYmUgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZzogRm9ybWx5Q29uZmlnLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaG9zdENvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm06IEZvcm1seUZpZWxkVGVtcGxhdGVzLFxuICApIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMudHJpZ2dlckhvb2soJ2FmdGVyQ29udGVudEluaXQnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnRyaWdnZXJIb29rKCdhZnRlclZpZXdJbml0Jyk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuZGV0ZWN0RmllbGRCdWlsZCAmJiB0aGlzLmZpZWxkICYmIHRoaXMuZmllbGQub3B0aW9ucykge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRyaWdnZXJIb29rKCdvbkluaXQnKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLnRyaWdnZXJIb29rKCdvbkNoYW5nZXMnLCBjaGFuZ2VzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVzZXRSZWZzKHRoaXMuZmllbGQpO1xuICAgIHRoaXMuaG9zdE9ic2VydmVycy5mb3JFYWNoKChob3N0T2JzZXJ2ZXIpID0+IGhvc3RPYnNlcnZlci51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmhvb2tzT2JzZXJ2ZXJzLmZvckVhY2goKHVuc3Vic2NyaWJlKSA9PiB1bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1Vuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy50cmlnZ2VySG9vaygnb25EZXN0cm95Jyk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckZpZWxkKFxuICAgIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBmOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLFxuICAgIHdyYXBwZXJzOiBGb3JtbHlGaWVsZENvbmZpZ1snd3JhcHBlcnMnXSA9IFtdLFxuICApIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJSZWYgPT09IGNvbnRhaW5lclJlZikge1xuICAgICAgdGhpcy5yZXNldFJlZnModGhpcy5maWVsZCk7XG4gICAgICB0aGlzLmNvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgd3JhcHBlcnMgPSB0aGlzLmZpZWxkPy53cmFwcGVycztcbiAgICB9XG5cbiAgICBpZiAod3JhcHBlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IFt3cmFwcGVyLCAuLi53cHNdID0gd3JhcHBlcnM7XG4gICAgICBjb25zdCB7IGNvbXBvbmVudCB9ID0gdGhpcy5jb25maWcuZ2V0V3JhcHBlcih3cmFwcGVyKTtcblxuICAgICAgY29uc3QgcmVmID0gY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxGaWVsZFdyYXBwZXI+KGNvbXBvbmVudCk7XG4gICAgICB0aGlzLmF0dGFjaENvbXBvbmVudFJlZihyZWYsIGYpO1xuICAgICAgb2JzZXJ2ZTxWaWV3Q29udGFpbmVyUmVmICYgeyBfbENvbnRhaW5lcjogYW55IH0+KFxuICAgICAgICByZWYuaW5zdGFuY2UsXG4gICAgICAgIFsnZmllbGRDb21wb25lbnQnXSxcbiAgICAgICAgKHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlLCBmaXJzdENoYW5nZSB9KSA9PiB7XG4gICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUgJiYgcHJldmlvdXNWYWx1ZS5fbENvbnRhaW5lciA9PT0gY3VycmVudFZhbHVlLl9sQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgdmlld1JlZiA9IHByZXZpb3VzVmFsdWUgPyBwcmV2aW91c1ZhbHVlLmRldGFjaCgpIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh2aWV3UmVmICYmICF2aWV3UmVmLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICBjdXJyZW50VmFsdWUuaW5zZXJ0KHZpZXdSZWYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJGaWVsZChjdXJyZW50VmFsdWUsIGYsIHdwcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICFmaXJzdENoYW5nZSAmJiByZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChmPy50eXBlKSB7XG4gICAgICBjb25zdCBpbmxpbmVUeXBlID0gdGhpcy5mb3JtPy50ZW1wbGF0ZXM/LmZpbmQoKHJlZikgPT4gcmVmLm5hbWUgPT09IGYudHlwZSk7XG4gICAgICBsZXQgcmVmOiBDb21wb25lbnRSZWY8YW55PiB8IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuICAgICAgaWYgKGlubGluZVR5cGUpIHtcbiAgICAgICAgcmVmID0gY29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhpbmxpbmVUeXBlLnJlZiwgeyAkaW1wbGljaXQ6IGYgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IGNvbXBvbmVudCB9ID0gdGhpcy5jb25maWcuZ2V0VHlwZShmLnR5cGUsIHRydWUpO1xuICAgICAgICByZWYgPSBjb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PEZpZWxkV3JhcHBlcj4oY29tcG9uZW50IGFzIGFueSk7XG4gICAgICB9XG4gICAgICB0aGlzLmF0dGFjaENvbXBvbmVudFJlZihyZWYsIGYpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlckhvb2sobmFtZToga2V5b2YgRm9ybWx5SG9va0NvbmZpZywgY2hhbmdlcz86IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAobmFtZSA9PT0gJ29uSW5pdCcgfHwgKG5hbWUgPT09ICdvbkNoYW5nZXMnICYmIGNoYW5nZXMuZmllbGQgJiYgIWNoYW5nZXMuZmllbGQuZmlyc3RDaGFuZ2UpKSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlc1Vuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlc1Vuc3Vic2NyaWJlID0gdGhpcy5maWVsZENoYW5nZXModGhpcy5maWVsZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmllbGQ/Lmhvb2tzPy5bbmFtZV0pIHtcbiAgICAgIGlmICghY2hhbmdlcyB8fCBjaGFuZ2VzLmZpZWxkKSB7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmZpZWxkLmhvb2tzW25hbWVdKHRoaXMuZmllbGQpO1xuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHIpICYmIFsnb25Jbml0JywgJ2FmdGVyQ29udGVudEluaXQnLCAnYWZ0ZXJWaWV3SW5pdCddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgY29uc3Qgc3ViID0gci5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB0aGlzLmhvb2tzT2JzZXJ2ZXJzLnB1c2goKCkgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09ICdvbkNoYW5nZXMnICYmIGNoYW5nZXMuZmllbGQpIHtcbiAgICAgIHRoaXMucmVzZXRSZWZzKGNoYW5nZXMuZmllbGQucHJldmlvdXNWYWx1ZSk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoQ29tcG9uZW50UmVmPFQgZXh0ZW5kcyBGaWVsZFR5cGU+KFxuICAgIHJlZjogQ29tcG9uZW50UmVmPFQ+IHwgRW1iZWRkZWRWaWV3UmVmPFQ+LFxuICAgIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLFxuICApIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMucHVzaChyZWYpO1xuICAgIGZpZWxkLl9jb21wb25lbnRSZWZzLnB1c2gocmVmKTtcbiAgICBpZiAocmVmIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlZi5pbnN0YW5jZSwgeyBmaWVsZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuZmllbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyByZXF1aXJlIEZvcm1seSBidWlsZFxuICAgIGlmICghdGhpcy5maWVsZC5vcHRpb25zKSB7XG4gICAgICB0aGlzLmRldGVjdEZpZWxkQnVpbGQgPSB0cnVlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZXRlY3RGaWVsZEJ1aWxkID0gZmFsc2U7XG4gICAgdGhpcy5ob3N0T2JzZXJ2ZXJzLmZvckVhY2goKGhvc3RPYnNlcnZlcikgPT4gaG9zdE9ic2VydmVyLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuaG9zdE9ic2VydmVycyA9IFtcbiAgICAgIG9ic2VydmU8Ym9vbGVhbj4odGhpcy5maWVsZCwgWydoaWRlJ10sICh7IGZpcnN0Q2hhbmdlLCBjdXJyZW50VmFsdWUgfSkgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSB0aGlzLmNvbnRhaW5lclJlZjtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmV4dHJhcy5sYXp5UmVuZGVyID09PSBmYWxzZSkge1xuICAgICAgICAgIGZpcnN0Q2hhbmdlICYmIHRoaXMucmVuZGVyRmllbGQoY29udGFpbmVyUmVmLCB0aGlzLmZpZWxkKTtcbiAgICAgICAgICBpZiAoIWZpcnN0Q2hhbmdlIHx8IChmaXJzdENoYW5nZSAmJiBjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYgJiZcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCBjdXJyZW50VmFsdWUgPyAnbm9uZScgOiAnJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xhc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJGaWVsZChjb250YWluZXJSZWYsIHRoaXMuZmllbGQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xhc3MnLCB0aGlzLmZpZWxkLmNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgIWZpcnN0Q2hhbmdlICYmIHRoaXMuZmllbGQub3B0aW9ucy5kZXRlY3RDaGFuZ2VzKHRoaXMuZmllbGQpO1xuICAgICAgfSksXG4gICAgICBvYnNlcnZlPHN0cmluZz4odGhpcy5maWVsZCwgWydjbGFzc05hbWUnXSwgKHsgZmlyc3RDaGFuZ2UsIGN1cnJlbnRWYWx1ZSB9KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoIWZpcnN0Q2hhbmdlIHx8IChmaXJzdENoYW5nZSAmJiBjdXJyZW50VmFsdWUpKSAmJlxuICAgICAgICAgICghdGhpcy5jb25maWcuZXh0cmFzLmxhenlSZW5kZXIgfHwgdGhpcy5maWVsZC5oaWRlICE9PSB0cnVlKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYgJiYgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGFzcycsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICBpZiAoIWlzU2lnbmFsUmVxdWlyZWQoKSkge1xuICAgICAgWyd0b3VjaGVkJywgJ3ByaXN0aW5lJywgJ3N0YXR1cyddLmZvckVhY2goKHByb3ApID0+XG4gICAgICAgIHRoaXMuaG9zdE9ic2VydmVycy5wdXNoKFxuICAgICAgICAgIG9ic2VydmU8c3RyaW5nPihcbiAgICAgICAgICAgIHRoaXMuZmllbGQsXG4gICAgICAgICAgICBbJ2Zvcm1Db250cm9sJywgcHJvcF0sXG4gICAgICAgICAgICAoeyBmaXJzdENoYW5nZSB9KSA9PiAhZmlyc3RDaGFuZ2UgJiYgbWFya0ZpZWxkRm9yQ2hlY2sodGhpcy5maWVsZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkLmZvcm1Db250cm9sKSB7XG4gICAgICBjb25zdCBldmVudHMgPSAoKHRoaXMuZmllbGQuZm9ybUNvbnRyb2wgYXMgYW55KS5ldmVudHMgYXMgT2JzZXJ2YWJsZTxhbnk+KS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgbWFya0ZpZWxkRm9yQ2hlY2sodGhpcy5maWVsZCksXG4gICAgICApO1xuICAgICAgdGhpcy5ob3N0T2JzZXJ2ZXJzLnB1c2goZXZlbnRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0UmVmcyhmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmIChmaWVsZCkge1xuICAgICAgaWYgKGZpZWxkLl9sb2NhbEZpZWxkcykge1xuICAgICAgICBmaWVsZC5fbG9jYWxGaWVsZHMgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZUhpZGRlblByb3AodGhpcy5maWVsZCwgJ19sb2NhbEZpZWxkcycsIFtdKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLl9jb21wb25lbnRSZWZzKSB7XG4gICAgICAgIGZpZWxkLl9jb21wb25lbnRSZWZzID0gZmllbGQuX2NvbXBvbmVudFJlZnMuZmlsdGVyKChyZWYpID0+IHRoaXMuY29tcG9uZW50UmVmcy5pbmRleE9mKHJlZikgPT09IC0xKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZUhpZGRlblByb3AodGhpcy5maWVsZCwgJ19jb21wb25lbnRSZWZzJywgW10pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50UmVmcyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWVsZENoYW5nZXMoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWZpZWxkKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcHNPYnNlcnZlciA9IG9ic2VydmVEZWVwKGZpZWxkLCBbJ3Byb3BzJ10sICgpID0+IGZpZWxkLm9wdGlvbnMuZGV0ZWN0Q2hhbmdlcyhmaWVsZCkpO1xuICAgIGNvbnN0IHN1YnNjcmliZXMgPSBbXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHByb3BzT2JzZXJ2ZXIoKTtcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZpZWxkLl9leHByZXNzaW9ucyB8fCB7fSkpIHtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25PYnNlcnZlciA9IG9ic2VydmU8Rm9ybWx5RmllbGRDb25maWdDYWNoZVsnX2V4cHJlc3Npb25zJ11bJ2tleSddPihcbiAgICAgICAgZmllbGQsXG4gICAgICAgIFsnX2V4cHJlc3Npb25zJywga2V5XSxcbiAgICAgICAgKHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICBpZiAocHJldmlvdXNWYWx1ZT8uc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZS5zdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKGN1cnJlbnRWYWx1ZS52YWx1ZSQpKSB7XG4gICAgICAgICAgICBjdXJyZW50VmFsdWUuc3Vic2NyaXB0aW9uID0gY3VycmVudFZhbHVlLnZhbHVlJC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgc3Vic2NyaWJlcy5wdXNoKCgpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLl9leHByZXNzaW9uc1trZXldPy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICBmaWVsZC5fZXhwcmVzc2lvbnNba2V5XS5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBleHByZXNzaW9uT2JzZXJ2ZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcGF0aCBvZiBbWydmb2N1cyddLCBbJ3RlbXBsYXRlJ10sIFsnZmllbGRHcm91cENsYXNzTmFtZSddLCBbJ3ZhbGlkYXRpb24nLCAnc2hvdyddXSkge1xuICAgICAgY29uc3QgZmllbGRPYnNlcnZlciA9IG9ic2VydmUoXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBwYXRoLFxuICAgICAgICAoeyBmaXJzdENoYW5nZSB9KSA9PiAhZmlyc3RDaGFuZ2UgJiYgZmllbGQub3B0aW9ucy5kZXRlY3RDaGFuZ2VzKGZpZWxkKSxcbiAgICAgICk7XG4gICAgICBzdWJzY3JpYmVzLnB1c2goKCkgPT4gZmllbGRPYnNlcnZlci51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wgJiYgIWZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmaWVsZC5mb3JtQ29udHJvbDtcbiAgICAgIGxldCB2YWx1ZUNoYW5nZXMgPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBtYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgZmllbGQucGFyc2Vycz8ubWFwKChwYXJzZXJGbikgPT4gKHZhbHVlID0gKHBhcnNlckZuIGFzIGFueSkodmFsdWUsIGZpZWxkKSkpO1xuICAgICAgICAgIGlmICghT2JqZWN0LmlzKHZhbHVlLCBmaWVsZC5mb3JtQ29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoeCwgeSkgPT4ge1xuICAgICAgICAgIGlmICh4ICE9PSB5IHx8IEFycmF5LmlzQXJyYXkoeCkgfHwgaXNPYmplY3QoeCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gZ2V0RmllbGRWYWx1ZShmaWVsZCkpIHtcbiAgICAgICAgdmFsdWVDaGFuZ2VzID0gdmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyB1cGRhdGVPbiwgZGVib3VuY2UgfSA9IGZpZWxkLm1vZGVsT3B0aW9ucztcbiAgICAgIGlmICgoIXVwZGF0ZU9uIHx8IHVwZGF0ZU9uID09PSAnY2hhbmdlJykgJiYgZGVib3VuY2U/LmRlZmF1bHQgPiAwKSB7XG4gICAgICAgIHZhbHVlQ2hhbmdlcyA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlLmRlZmF1bHQpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3ViID0gdmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM3OTJcbiAgICAgICAgaWYgKGNvbnRyb2wuX2ZpZWxkcz8ubGVuZ3RoID4gMSAmJiBjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSwgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzS2V5KGZpZWxkKSkge1xuICAgICAgICAgIGFzc2lnbkZpZWxkVmFsdWUoZmllbGQsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZC5vcHRpb25zLmZpZWxkQ2hhbmdlcy5uZXh0KHsgdmFsdWUsIGZpZWxkLCB0eXBlOiAndmFsdWVDaGFuZ2VzJyB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBzdWJzY3JpYmVzLnB1c2goKCkgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIGxldCB0ZW1wbGF0ZUZpZWxkc1N1YnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG4gICAgb2JzZXJ2ZShmaWVsZCwgWydfbG9jYWxGaWVsZHMnXSwgKHsgY3VycmVudFZhbHVlIH0pID0+IHtcbiAgICAgIHRlbXBsYXRlRmllbGRzU3Vicy5mb3JFYWNoKCh1bnN1YnNjcmliZSkgPT4gdW5zdWJzY3JpYmUoKSk7XG4gICAgICB0ZW1wbGF0ZUZpZWxkc1N1YnMgPSAoY3VycmVudFZhbHVlIHx8IFtdKS5tYXAoKGY6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUpID0+IHRoaXMuZmllbGRDaGFuZ2VzKGYpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdWJzY3JpYmVzLmZvckVhY2goKHVuc3Vic2NyaWJlKSA9PiB1bnN1YnNjcmliZSgpKTtcbiAgICAgIHRlbXBsYXRlRmllbGRzU3Vicy5mb3JFYWNoKCh1bnN1YnNjcmliZSkgPT4gdW5zdWJzY3JpYmUoKSk7XG4gICAgfTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktZmllbGQnLFxuICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZSAjY29udGFpbmVyPjwvbmctdGVtcGxhdGU+JyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybWx5LmZpZWxkLnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIExlZ2FjeUZvcm1seUZpZWxkIGV4dGVuZHMgRm9ybWx5RmllbGQge31cbiJdfQ==
@@ -0,0 +1,164 @@
1
+ import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, ContentChildren, } from '@angular/core';
2
+ import { FormlyFormBuilder } from '../services/formly.builder';
3
+ import { clone, hasKey, isNoopNgZone, isSignalRequired, observeDeep } from '../utils';
4
+ import { switchMap, filter, take } from 'rxjs/operators';
5
+ import { clearControl } from '../extensions/field-form/utils';
6
+ import { FormlyFieldTemplates, FormlyTemplate } from './formly.template';
7
+ import { of } from 'rxjs';
8
+ import { FormlyField } from './formly.field';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../services/formly.builder";
11
+ import * as i2 from "../services/formly.config";
12
+ import * as i3 from "./formly.template";
13
+ import * as i4 from "./formly.field";
14
+ /**
15
+ * The `<form-form>` component is the main container of the form,
16
+ * which takes care of managing the form state
17
+ * and delegates the rendering of each field to `<formly-field>` component.
18
+ */
19
+ export class FormlyForm {
20
+ /** The form instance which allow to track model value and validation status. */
21
+ set form(form) {
22
+ this.field.form = form;
23
+ }
24
+ get form() {
25
+ return this.field.form;
26
+ }
27
+ /** The model to be represented by the form. */
28
+ set model(model) {
29
+ if (this.config.extras.immutable && this._modelChangeValue === model) {
30
+ return;
31
+ }
32
+ this.setField({ model });
33
+ }
34
+ get model() {
35
+ return this.field.model;
36
+ }
37
+ /** The field configurations for building the form. */
38
+ set fields(fieldGroup) {
39
+ this.setField({ fieldGroup });
40
+ }
41
+ get fields() {
42
+ return this.field.fieldGroup;
43
+ }
44
+ /** Options for the form. */
45
+ set options(options) {
46
+ this.setField({ options });
47
+ }
48
+ get options() {
49
+ return this.field.options;
50
+ }
51
+ set templates(templates) {
52
+ this.fieldTemplates.templates = templates;
53
+ }
54
+ constructor(builder, config, ngZone, fieldTemplates) {
55
+ this.builder = builder;
56
+ this.config = config;
57
+ this.ngZone = ngZone;
58
+ this.fieldTemplates = fieldTemplates;
59
+ /** Event that is emitted when the model value is changed */
60
+ this.modelChange = new EventEmitter();
61
+ this.field = { type: 'formly-group' };
62
+ this._modelChangeValue = {};
63
+ this.valueChangesUnsubscribe = () => { };
64
+ }
65
+ ngDoCheck() {
66
+ if (this.config.extras.checkExpressionOn === 'changeDetectionCheck') {
67
+ this.checkExpressionChange();
68
+ }
69
+ }
70
+ ngOnChanges(changes) {
71
+ if (changes.fields && this.form) {
72
+ clearControl(this.form);
73
+ }
74
+ if (changes.fields || changes.form || (changes.model && this._modelChangeValue !== changes.model.currentValue)) {
75
+ this.valueChangesUnsubscribe();
76
+ this.builder.build(this.field);
77
+ this.valueChangesUnsubscribe = this.valueChanges();
78
+ }
79
+ }
80
+ ngOnDestroy() {
81
+ this.valueChangesUnsubscribe();
82
+ }
83
+ checkExpressionChange() {
84
+ this.field.options.checkExpressions?.(this.field);
85
+ }
86
+ valueChanges() {
87
+ this.valueChangesUnsubscribe();
88
+ let formEvents = null;
89
+ if (isSignalRequired()) {
90
+ let submitted = this.options?.parentForm?.submitted;
91
+ formEvents = this.form.events.subscribe(() => {
92
+ if (submitted !== this.options?.parentForm?.submitted) {
93
+ this.options.detectChanges(this.field);
94
+ submitted = this.options?.parentForm?.submitted;
95
+ }
96
+ });
97
+ }
98
+ const fieldChangesDetection = [
99
+ observeDeep(this.field.options, ['formState'], () => this.field.options.detectChanges(this.field)),
100
+ ];
101
+ const valueChanges = this.field.options.fieldChanges
102
+ .pipe(filter(({ field, type }) => hasKey(field) && type === 'valueChanges'), switchMap(() => (isNoopNgZone(this.ngZone) ? of(null) : this.ngZone.onStable.asObservable().pipe(take(1)))))
103
+ .subscribe(() => this.ngZone.runGuarded(() => {
104
+ // runGuarded is used to keep in sync the expression changes
105
+ // https://github.com/ngx-formly/ngx-formly/issues/2095
106
+ this.checkExpressionChange();
107
+ this.modelChange.emit((this._modelChangeValue = clone(this.model)));
108
+ }));
109
+ return () => {
110
+ fieldChangesDetection.forEach((fnc) => fnc());
111
+ formEvents?.unsubscribe();
112
+ valueChanges.unsubscribe();
113
+ };
114
+ }
115
+ setField(field) {
116
+ if (this.config.extras.immutable) {
117
+ this.field = { ...this.field, ...clone(field) };
118
+ }
119
+ else {
120
+ Object.keys(field).forEach((p) => (this.field[p] = field[p]));
121
+ }
122
+ }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyForm, deps: [{ token: i1.FormlyFormBuilder }, { token: i2.FormlyConfig }, { token: i0.NgZone }, { token: i3.FormlyFieldTemplates }], target: i0.ɵɵFactoryTarget.Component }); }
124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormlyForm, isStandalone: true, selector: "formly-form", inputs: { form: "form", model: "model", fields: "fields", options: "options" }, outputs: { modelChange: "modelChange" }, providers: [FormlyFormBuilder, FormlyFieldTemplates], queries: [{ propertyName: "templates", predicate: FormlyTemplate }], usesOnChanges: true, ngImport: i0, template: '<formly-field [field]="field"></formly-field>', isInline: true, dependencies: [{ kind: "component", type: FormlyField, selector: "formly-field", inputs: ["field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
125
+ }
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyForm, decorators: [{
127
+ type: Component,
128
+ args: [{
129
+ selector: 'formly-form',
130
+ template: '<formly-field [field]="field"></formly-field>',
131
+ providers: [FormlyFormBuilder, FormlyFieldTemplates],
132
+ imports: [FormlyField],
133
+ changeDetection: ChangeDetectionStrategy.OnPush,
134
+ standalone: true,
135
+ }]
136
+ }], ctorParameters: function () { return [{ type: i1.FormlyFormBuilder }, { type: i2.FormlyConfig }, { type: i0.NgZone }, { type: i3.FormlyFieldTemplates }]; }, propDecorators: { form: [{
137
+ type: Input
138
+ }], model: [{
139
+ type: Input
140
+ }], fields: [{
141
+ type: Input
142
+ }], options: [{
143
+ type: Input
144
+ }], modelChange: [{
145
+ type: Output
146
+ }], templates: [{
147
+ type: ContentChildren,
148
+ args: [FormlyTemplate]
149
+ }] } });
150
+ export class LegacyFormlyForm extends FormlyForm {
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LegacyFormlyForm, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LegacyFormlyForm, selector: "formly-form", providers: [FormlyFormBuilder, FormlyFieldTemplates], usesInheritance: true, ngImport: i0, template: '<formly-field [field]="field"></formly-field>', isInline: true, dependencies: [{ kind: "component", type: i4.LegacyFormlyField, selector: "formly-field" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
153
+ }
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LegacyFormlyForm, decorators: [{
155
+ type: Component,
156
+ args: [{
157
+ selector: 'formly-form',
158
+ template: '<formly-field [field]="field"></formly-field>',
159
+ providers: [FormlyFormBuilder, FormlyFieldTemplates],
160
+ changeDetection: ChangeDetectionStrategy.OnPush,
161
+ standalone: false,
162
+ }]
163
+ }] });
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybWx5LmZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFHdkIsS0FBSyxFQUVMLFlBQVksRUFDWixNQUFNLEVBR04sZUFBZSxHQUVoQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekUsT0FBTyxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFFN0M7Ozs7R0FJRztBQVNILE1BQU0sT0FBTyxVQUFVO0lBQ3JCLGdGQUFnRjtJQUNoRixJQUNJLElBQUksQ0FBQyxJQUF5QztRQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELCtDQUErQztJQUMvQyxJQUNJLEtBQUssQ0FBQyxLQUFVO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMs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UyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztvQkFDdEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsyTEFJSyxJQUFJO3NCQURQLEtBQUs7Z0JBVUYsS0FBSztzQkFEUixLQUFLO2dCQWNGLE1BQU07c0JBRFQsS0FBSztnQkFVRixPQUFPO3NCQURWLEtBQUs7Z0JBU0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDOEIsU0FBUztzQkFBN0MsZUFBZTt1QkFBQyxjQUFjOztBQStGakMsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFVBQVU7K0dBQW5DLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHNDQUpoQixDQUFDLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLGlEQUQxQywrQ0FBK0M7OzRGQUs5QyxnQkFBZ0I7a0JBUDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSwrQ0FBK0M7b0JBQ3pELFNBQVMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDO29CQUNwRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgRG9DaGVjayxcbiAgT25DaGFuZ2VzLFxuICBJbnB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIE9uRGVzdHJveSxcbiAgTmdab25lLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm1PcHRpb25zLCBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IEZvcm1seUZvcm1CdWlsZGVyIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybWx5LmJ1aWxkZXInO1xuaW1wb3J0IHsgRm9ybWx5Q29uZmlnIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybWx5LmNvbmZpZyc7XG5pbXBvcnQgeyBjbG9uZSwgaGFzS2V5LCBpc05vb3BOZ1pvbmUsIGlzU2lnbmFsUmVxdWlyZWQsIG9ic2VydmVEZWVwIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjbGVhckNvbnRyb2wgfSBmcm9tICcuLi9leHRlbnNpb25zL2ZpZWxkLWZvcm0vdXRpbHMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRUZW1wbGF0ZXMsIEZvcm1seVRlbXBsYXRlIH0gZnJvbSAnLi9mb3JtbHkudGVtcGxhdGUnO1xuaW1wb3J0IHsgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGQgfSBmcm9tICcuL2Zvcm1seS5maWVsZCc7XG5cbi8qKlxuICogVGhlIGA8Zm9ybS1mb3JtPmAgY29tcG9uZW50IGlzIHRoZSBtYWluIGNvbnRhaW5lciBvZiB0aGUgZm9ybSxcbiAqIHdoaWNoIHRha2VzIGNhcmUgb2YgbWFuYWdpbmcgdGhlIGZvcm0gc3RhdGVcbiAqIGFuZCBkZWxlZ2F0ZXMgdGhlIHJlbmRlcmluZyBvZiBlYWNoIGZpZWxkIHRvIGA8Zm9ybWx5LWZpZWxkPmAgY29tcG9uZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktZm9ybScsXG4gIHRlbXBsYXRlOiAnPGZvcm1seS1maWVsZCBbZmllbGRdPVwiZmllbGRcIj48L2Zvcm1seS1maWVsZD4nLFxuICBwcm92aWRlcnM6IFtGb3JtbHlGb3JtQnVpbGRlciwgRm9ybWx5RmllbGRUZW1wbGF0ZXNdLFxuICBpbXBvcnRzOiBbRm9ybWx5RmllbGRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5Rm9ybSBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqIFRoZSBmb3JtIGluc3RhbmNlIHdoaWNoIGFsbG93IHRvIHRyYWNrIG1vZGVsIHZhbHVlIGFuZCB2YWxpZGF0aW9uIHN0YXR1cy4gKi9cbiAgQElucHV0KClcbiAgc2V0IGZvcm0oZm9ybTogVW50eXBlZEZvcm1Hcm91cCB8IFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICB0aGlzLmZpZWxkLmZvcm0gPSBmb3JtO1xuICB9XG4gIGdldCBmb3JtKCk6IFVudHlwZWRGb3JtR3JvdXAgfCBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5mb3JtO1xuICB9XG5cbiAgLyoqIFRoZSBtb2RlbCB0byBiZSByZXByZXNlbnRlZCBieSB0aGUgZm9ybS4gKi9cbiAgQElucHV0KClcbiAgc2V0IG1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZXh0cmFzLmltbXV0YWJsZSAmJiB0aGlzLl9tb2RlbENoYW5nZVZhbHVlID09PSBtb2RlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0RmllbGQoeyBtb2RlbCB9KTtcbiAgfVxuICBnZXQgbW9kZWwoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5tb2RlbDtcbiAgfVxuXG4gIC8qKiBUaGUgZmllbGQgY29uZmlndXJhdGlvbnMgZm9yIGJ1aWxkaW5nIHRoZSBmb3JtLiAqL1xuICBASW5wdXQoKVxuICBzZXQgZmllbGRzKGZpZWxkR3JvdXA6IEZvcm1seUZpZWxkQ29uZmlnW10pIHtcbiAgICB0aGlzLnNldEZpZWxkKHsgZmllbGRHcm91cCB9KTtcbiAgfVxuICBnZXQgZmllbGRzKCk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmZpZWxkR3JvdXA7XG4gIH1cblxuICAvKiogT3B0aW9ucyBmb3IgdGhlIGZvcm0uICovXG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zKSB7XG4gICAgdGhpcy5zZXRGaWVsZCh7IG9wdGlvbnMgfSk7XG4gIH1cbiAgZ2V0IG9wdGlvbnMoKTogRm9ybWx5Rm9ybU9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLm9wdGlvbnM7XG4gIH1cblxuICAvKiogRXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdGhlIG1vZGVsIHZhbHVlIGlzIGNoYW5nZWQgKi9cbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBDb250ZW50Q2hpbGRyZW4oRm9ybWx5VGVtcGxhdGUpIHNldCB0ZW1wbGF0ZXModGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybWx5VGVtcGxhdGU+KSB7XG4gICAgdGhpcy5maWVsZFRlbXBsYXRlcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSA9IHsgdHlwZTogJ2Zvcm1seS1ncm91cCcgfTtcbiAgcHJpdmF0ZSBfbW9kZWxDaGFuZ2VWYWx1ZTogYW55ID0ge307XG4gIHByaXZhdGUgdmFsdWVDaGFuZ2VzVW5zdWJzY3JpYmUgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJ1aWxkZXI6IEZvcm1seUZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGZpZWxkVGVtcGxhdGVzOiBGb3JtbHlGaWVsZFRlbXBsYXRlcyxcbiAgKSB7fVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZXh0cmFzLmNoZWNrRXhwcmVzc2lvbk9uID09PSAnY2hhbmdlRGV0ZWN0aW9uQ2hlY2snKSB7XG4gICAgICB0aGlzLmNoZWNrRXhwcmVzc2lvbkNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5maWVsZHMgJiYgdGhpcy5mb3JtKSB7XG4gICAgICBjbGVhckNvbnRyb2wodGhpcy5mb3JtKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5maWVsZHMgfHwgY2hhbmdlcy5mb3JtIHx8IChjaGFuZ2VzLm1vZGVsICYmIHRoaXMuX21vZGVsQ2hhbmdlVmFsdWUgIT09IGNoYW5nZXMubW9kZWwuY3VycmVudFZhbHVlKSkge1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNVbnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5idWlsZGVyLmJ1aWxkKHRoaXMuZmllbGQpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNVbnN1YnNjcmliZSA9IHRoaXMudmFsdWVDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXNVbnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0V4cHJlc3Npb25DaGFuZ2UoKSB7XG4gICAgdGhpcy5maWVsZC5vcHRpb25zLmNoZWNrRXhwcmVzc2lvbnM/Lih0aGlzLmZpZWxkKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVDaGFuZ2VzKCkge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VzVW5zdWJzY3JpYmUoKTtcblxuICAgIGxldCBmb3JtRXZlbnRzOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgICBpZiAoaXNTaWduYWxSZXF1aXJlZCgpKSB7XG4gICAgICBsZXQgc3VibWl0dGVkID0gdGhpcy5vcHRpb25zPy5wYXJlbnRGb3JtPy5zdWJtaXR0ZWQ7XG4gICAgICBmb3JtRXZlbnRzID0gKHRoaXMuZm9ybSBhcyBhbnkpLmV2ZW50cy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoc3VibWl0dGVkICE9PSB0aGlzLm9wdGlvbnM/LnBhcmVudEZvcm0/LnN1Ym1pdHRlZCkge1xuICAgICAgICAgIHRoaXMub3B0aW9ucy5kZXRlY3RDaGFuZ2VzKHRoaXMuZmllbGQpO1xuICAgICAgICAgIHN1Ym1pdHRlZCA9IHRoaXMub3B0aW9ucz8ucGFyZW50Rm9ybT8uc3VibWl0dGVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZENoYW5nZXNEZXRlY3Rpb246IGFueVtdID0gW1xuICAgICAgb2JzZXJ2ZURlZXAodGhpcy5maWVsZC5vcHRpb25zLCBbJ2Zvcm1TdGF0ZSddLCAoKSA9PiB0aGlzLmZpZWxkLm9wdGlvbnMuZGV0ZWN0Q2hhbmdlcyh0aGlzLmZpZWxkKSksXG4gICAgXTtcbiAgICBjb25zdCB2YWx1ZUNoYW5nZXMgPSB0aGlzLmZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IGZpZWxkLCB0eXBlIH0pID0+IGhhc0tleShmaWVsZCkgJiYgdHlwZSA9PT0gJ3ZhbHVlQ2hhbmdlcycpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gKGlzTm9vcE5nWm9uZSh0aGlzLm5nWm9uZSkgPyBvZihudWxsKSA6IHRoaXMubmdab25lLm9uU3RhYmxlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZSgxKSkpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuR3VhcmRlZCgoKSA9PiB7XG4gICAgICAgICAgLy8gcnVuR3VhcmRlZCBpcyB1c2VkIHRvIGtlZXAgaW4gc3luYyB0aGUgZXhwcmVzc2lvbiBjaGFuZ2VzXG4gICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25neC1mb3JtbHkvbmd4LWZvcm1seS9pc3N1ZXMvMjA5NVxuICAgICAgICAgIHRoaXMuY2hlY2tFeHByZXNzaW9uQ2hhbmdlKCk7XG4gICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KCh0aGlzLl9tb2RlbENoYW5nZVZhbHVlID0gY2xvbmUodGhpcy5tb2RlbCkpKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGZpZWxkQ2hhbmdlc0RldGVjdGlvbi5mb3JFYWNoKChmbmMpID0+IGZuYygpKTtcbiAgICAgIGZvcm1FdmVudHM/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB2YWx1ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGaWVsZChmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5leHRyYXMuaW1tdXRhYmxlKSB7XG4gICAgICB0aGlzLmZpZWxkID0geyAuLi50aGlzLmZpZWxkLCAuLi5jbG9uZShmaWVsZCkgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmtleXMoZmllbGQpLmZvckVhY2goKHApID0+ICgodGhpcy5maWVsZCBhcyBhbnkpW3BdID0gKGZpZWxkIGFzIGFueSlbcF0pKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybWx5LWZvcm0nLFxuICB0ZW1wbGF0ZTogJzxmb3JtbHktZmllbGQgW2ZpZWxkXT1cImZpZWxkXCI+PC9mb3JtbHktZmllbGQ+JyxcbiAgcHJvdmlkZXJzOiBbRm9ybWx5Rm9ybUJ1aWxkZXIsIEZvcm1seUZpZWxkVGVtcGxhdGVzXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBMZWdhY3lGb3JtbHlGb3JtIGV4dGVuZHMgRm9ybWx5Rm9ybSB7fVxuIl19
@@ -7,10 +7,10 @@ export class FormlyTemplate {
7
7
  ngOnChanges() {
8
8
  this.name = this.name || 'formly-group';
9
9
  }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FormlyTemplate, selector: "[formlyTemplate]", inputs: { name: ["formlyTemplate", "name"] }, usesOnChanges: true, ngImport: i0 }); }
10
12
  }
11
- FormlyTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormlyTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
12
- FormlyTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: FormlyTemplate, selector: "[formlyTemplate]", inputs: { name: ["formlyTemplate", "name"] }, usesOnChanges: true, ngImport: i0 });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormlyTemplate, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyTemplate, decorators: [{
14
14
  type: Directive,
15
15
  args: [{ selector: '[formlyTemplate]' }]
16
16
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { name: [{
@@ -19,10 +19,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
19
19
  }] } });
20
20
  // workarround for https://github.com/angular/angular/issues/43227#issuecomment-904173738
21
21
  export class FormlyFieldTemplates {
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyFieldTemplates, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
23
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyFieldTemplates }); }
22
24
  }
23
- FormlyFieldTemplates.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormlyFieldTemplates, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
24
- FormlyFieldTemplates.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormlyFieldTemplates });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormlyFieldTemplates, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormlyFieldTemplates, decorators: [{
26
26
  type: Injectable
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LnRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1seS50ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFDLE1BQU0sZUFBZSxDQUFDOztBQUdoRyxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFtQixHQUFxQjtRQUFyQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtJQUFHLENBQUM7SUFFNUMsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxjQUFjLENBQUM7SUFDMUMsQ0FBQzs7NEdBUFUsY0FBYztnR0FBZCxjQUFjOzRGQUFkLGNBQWM7a0JBRDFCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7a0dBRWhCLElBQUk7c0JBQTVCLEtBQUs7dUJBQUMsZ0JBQWdCOztBQVN6Qix5RkFBeUY7QUFFekYsTUFBTSxPQUFPLG9CQUFvQjs7a0hBQXBCLG9CQUFvQjtzSEFBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGFibGUsIElucHV0LCBPbkNoYW5nZXMsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2Zvcm1seVRlbXBsYXRlXScgfSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlUZW1wbGF0ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgnZm9ybWx5VGVtcGxhdGUnKSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUgfHwgJ2Zvcm1seS1ncm91cCc7XG4gIH1cbn1cblxuLy8gd29ya2Fycm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzQzMjI3I2lzc3VlY29tbWVudC05MDQxNzM3MzhcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZFRlbXBsYXRlcyB7XG4gIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxGb3JtbHlUZW1wbGF0ZT47XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LnRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1seS50ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFDLE1BQU0sZUFBZSxDQUFDOztBQUdoRyxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFtQixHQUFxQjtRQUFyQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtJQUFHLENBQUM7SUFFNUMsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxjQUFjLENBQUM7SUFDMUMsQ0FBQzsrR0FQVSxjQUFjO21HQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7a0dBRWhCLElBQUk7c0JBQTVCLEtBQUs7dUJBQUMsZ0JBQWdCOztBQVN6Qix5RkFBeUY7QUFFekYsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGFibGUsIElucHV0LCBPbkNoYW5nZXMsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2Zvcm1seVRlbXBsYXRlXScgfSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlUZW1wbGF0ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgnZm9ybWx5VGVtcGxhdGUnKSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWUgfHwgJ2Zvcm1seS1ncm91cCc7XG4gIH1cbn1cblxuLy8gd29ya2Fycm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzQzMjI3I2lzc3VlY29tbWVudC05MDQxNzM3MzhcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZFRlbXBsYXRlcyB7XG4gIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxGb3JtbHlUZW1wbGF0ZT47XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { FieldExpressionExtension } from './extensions';
3
+ import { CoreExtension } from './extensions/core/core';
4
+ import { FieldFormExtension } from './extensions/field-form/field-form';
5
+ import { FieldValidationExtension } from './extensions/field-validation/field-validation';
6
+ import { FormlyTemplateType } from './templates/field-template.type';
7
+ import { FormlyGroup } from './templates/formly.group';
8
+ import { FormlyConfig } from './services/formly.config';
9
+ /**
10
+ * An InjectionToken for registering additional formly config options (types, wrappers ...).
11
+ */
12
+ export const FORMLY_CONFIG = new InjectionToken('FORMLY_CONFIG');
13
+ export function withDefaultConfig(config) {
14
+ return {
15
+ types: [
16
+ { name: 'formly-group', component: FormlyGroup },
17
+ { name: 'formly-template', component: FormlyTemplateType },
18
+ ],
19
+ extensions: [
20
+ { name: 'core', extension: new CoreExtension(config), priority: -250 },
21
+ { name: 'field-validation', extension: new FieldValidationExtension(config), priority: -200 },
22
+ { name: 'field-form', extension: new FieldFormExtension(), priority: -150 },
23
+ { name: 'field-expression', extension: new FieldExpressionExtension(), priority: -100 },
24
+ ],
25
+ };
26
+ }
27
+ export const provideFormlyCore = (configs = []) => {
28
+ return [
29
+ { provide: FORMLY_CONFIG, multi: true, useFactory: withDefaultConfig, deps: [FormlyConfig] },
30
+ provideFormlyConfig(configs),
31
+ ];
32
+ };
33
+ export const provideFormlyConfig = (configs = []) => {
34
+ return [{ provide: FORMLY_CONFIG, multi: true, useValue: configs }];
35
+ };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9zcmMvbGliL2NvcmUuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFpQixlQUFlLENBQUMsQ0FBQztBQUVqRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBb0I7SUFDcEQsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRTtTQUMzRDtRQUNELFVBQVUsRUFBRTtZQUNWLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQ3RFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxJQUFJLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRTtZQUM3RixFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUU7WUFDM0UsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLElBQUksd0JBQXdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUU7U0FDeEY7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsVUFBeUMsRUFBRSxFQUFZLEVBQUU7SUFDekYsT0FBTztRQUNMLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRTtRQUM1RixtQkFBbUIsQ0FBQyxPQUFPLENBQUM7S0FDN0IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsVUFBeUMsRUFBRSxFQUFZLEVBQUU7SUFDM0YsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRFeHByZXNzaW9uRXh0ZW5zaW9uIH0gZnJvbSAnLi9leHRlbnNpb25zJztcbmltcG9ydCB7IENvcmVFeHRlbnNpb24gfSBmcm9tICcuL2V4dGVuc2lvbnMvY29yZS9jb3JlJztcbmltcG9ydCB7IEZpZWxkRm9ybUV4dGVuc2lvbiB9IGZyb20gJy4vZXh0ZW5zaW9ucy9maWVsZC1mb3JtL2ZpZWxkLWZvcm0nO1xuaW1wb3J0IHsgRmllbGRWYWxpZGF0aW9uRXh0ZW5zaW9uIH0gZnJvbSAnLi9leHRlbnNpb25zL2ZpZWxkLXZhbGlkYXRpb24vZmllbGQtdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBGb3JtbHlUZW1wbGF0ZVR5cGUgfSBmcm9tICcuL3RlbXBsYXRlcy9maWVsZC10ZW1wbGF0ZS50eXBlJztcbmltcG9ydCB7IEZvcm1seUdyb3VwIH0gZnJvbSAnLi90ZW1wbGF0ZXMvZm9ybWx5Lmdyb3VwJztcbmltcG9ydCB7IENvbmZpZ09wdGlvbiB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEZvcm1seUNvbmZpZyB9IGZyb20gJy4vc2VydmljZXMvZm9ybWx5LmNvbmZpZyc7XG5cbi8qKlxuICogQW4gSW5qZWN0aW9uVG9rZW4gZm9yIHJlZ2lzdGVyaW5nIGFkZGl0aW9uYWwgZm9ybWx5IGNvbmZpZyBvcHRpb25zICh0eXBlcywgd3JhcHBlcnMgLi4uKS5cbiAqL1xuZXhwb3J0IGNvbnN0IEZPUk1MWV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZmlnT3B0aW9uW10+KCdGT1JNTFlfQ09ORklHJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGVmYXVsdENvbmZpZyhjb25maWc6IEZvcm1seUNvbmZpZyk6IENvbmZpZ09wdGlvbiB7XG4gIHJldHVybiB7XG4gICAgdHlwZXM6IFtcbiAgICAgIHsgbmFtZTogJ2Zvcm1seS1ncm91cCcsIGNvbXBvbmVudDogRm9ybWx5R3JvdXAgfSxcbiAgICAgIHsgbmFtZTogJ2Zvcm1seS10ZW1wbGF0ZScsIGNvbXBvbmVudDogRm9ybWx5VGVtcGxhdGVUeXBlIH0sXG4gICAgXSxcbiAgICBleHRlbnNpb25zOiBbXG4gICAgICB7IG5hbWU6ICdjb3JlJywgZXh0ZW5zaW9uOiBuZXcgQ29yZUV4dGVuc2lvbihjb25maWcpLCBwcmlvcml0eTogLTI1MCB9LFxuICAgICAgeyBuYW1lOiAnZmllbGQtdmFsaWRhdGlvbicsIGV4dGVuc2lvbjogbmV3IEZpZWxkVmFsaWRhdGlvbkV4dGVuc2lvbihjb25maWcpLCBwcmlvcml0eTogLTIwMCB9LFxuICAgICAgeyBuYW1lOiAnZmllbGQtZm9ybScsIGV4dGVuc2lvbjogbmV3IEZpZWxkRm9ybUV4dGVuc2lvbigpLCBwcmlvcml0eTogLTE1MCB9LFxuICAgICAgeyBuYW1lOiAnZmllbGQtZXhwcmVzc2lvbicsIGV4dGVuc2lvbjogbmV3IEZpZWxkRXhwcmVzc2lvbkV4dGVuc2lvbigpLCBwcmlvcml0eTogLTEwMCB9LFxuICAgIF0sXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlRm9ybWx5Q29yZSA9IChjb25maWdzOiBDb25maWdPcHRpb24gfCBDb25maWdPcHRpb25bXSA9IFtdKTogUHJvdmlkZXIgPT4ge1xuICByZXR1cm4gW1xuICAgIHsgcHJvdmlkZTogRk9STUxZX0NPTkZJRywgbXVsdGk6IHRydWUsIHVzZUZhY3Rvcnk6IHdpdGhEZWZhdWx0Q29uZmlnLCBkZXBzOiBbRm9ybWx5Q29uZmlnXSB9LFxuICAgIHByb3ZpZGVGb3JtbHlDb25maWcoY29uZmlncyksXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZUZvcm1seUNvbmZpZyA9IChjb25maWdzOiBDb25maWdPcHRpb24gfCBDb25maWdPcHRpb25bXSA9IFtdKTogUHJvdmlkZXIgPT4ge1xuICByZXR1cm4gW3sgcHJvdmlkZTogRk9STUxZX0NPTkZJRywgbXVsdGk6IHRydWUsIHVzZVZhbHVlOiBjb25maWdzIH1dO1xufTtcbiJdfQ==