@ngx-formly/core 6.3.3 → 6.3.5

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.
@@ -2,7 +2,8 @@ import { Component, Input, ViewContainerRef, ViewChild, ComponentRef, Optional,
2
2
  import { FormControl } from '@angular/forms';
3
3
  import { defineHiddenProp, observe, observeDeep, getFieldValue, assignFieldValue, isObject, markFieldForCheck, hasKey, } from '../utils';
4
4
  import { isObservable } from 'rxjs';
5
- import { debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';
5
+ import { debounceTime, distinctUntilChanged, map, startWith } from 'rxjs/operators';
6
+ import { VERSION } from '@angular/common';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../services/formly.config";
8
9
  import * as i2 from "./formly.template";
@@ -167,8 +168,17 @@ export class FormlyField {
167
168
  this.elementRef && this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);
168
169
  }
169
170
  }),
170
- ...['touched', 'pristine', 'status'].map((prop) => observe(this.field, ['formControl', prop], ({ firstChange }) => !firstChange && markFieldForCheck(this.field))),
171
171
  ];
172
+ const isSignalRequired = +VERSION.major >= 18 && +VERSION.minor >= 1;
173
+ if (!isSignalRequired) {
174
+ ['touched', 'pristine', 'status'].forEach((prop) => this.hostObservers.push(observe(this.field, ['formControl', prop], ({ firstChange }) => !firstChange && markFieldForCheck(this.field))));
175
+ }
176
+ else if (this.field.formControl) {
177
+ const statusChanges = this.field.formControl.statusChanges
178
+ .pipe(distinctUntilChanged())
179
+ .subscribe(() => markFieldForCheck(this.field));
180
+ this.hostObservers.push(statusChanges);
181
+ }
172
182
  }
173
183
  resetRefs(field) {
174
184
  if (field) {
@@ -218,7 +228,13 @@ export class FormlyField {
218
228
  }
219
229
  if (field.formControl && !field.fieldGroup) {
220
230
  const control = field.formControl;
221
- let valueChanges = control.valueChanges.pipe(distinctUntilChanged((x, y) => {
231
+ let valueChanges = control.valueChanges.pipe(map((value) => {
232
+ field.parsers?.map((parserFn) => (value = parserFn(value, field)));
233
+ if (!Object.is(value, field.formControl.value)) {
234
+ field.formControl.setValue(value);
235
+ }
236
+ return value;
237
+ }), distinctUntilChanged((x, y) => {
222
238
  if (x !== y || Array.isArray(x) || isObject(x)) {
223
239
  return false;
224
240
  }
@@ -236,11 +252,6 @@ export class FormlyField {
236
252
  if (control._fields?.length > 1 && control instanceof FormControl) {
237
253
  control.patchValue(value, { emitEvent: false, onlySelf: true });
238
254
  }
239
- field.parsers?.forEach((parserFn) => (value = parserFn(value)));
240
- if (value !== field.formControl.value) {
241
- field.formControl.setValue(value);
242
- return;
243
- }
244
255
  if (hasKey(field)) {
245
256
  assignFieldValue(field, value);
246
257
  }
@@ -272,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
272
283
  type: ViewChild,
273
284
  args: ['container', { read: ViewContainerRef, static: true }]
274
285
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFlBQVksRUFXWixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFdBQVcsRUFDWCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsTUFBTSxHQUVQLE1BQU0sVUFBVSxDQUFDO0FBR2xCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUcvRTs7R0FFRztBQU1ILE1BQU0sT0FBTyxXQUFXO0lBMkJ0QixZQUNVLE1BQW9CLEVBQ3BCLFFBQW1CLEVBQ25CLFdBQXVCLEVBQ3ZCLGdCQUFrQyxFQUN0QixJQUEwQjtRQUp0QyxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFzQjtRQTNCeEMsa0JBQWEsR0FBcUIsRUFBRSxDQUFDO1FBQ3JDLGtCQUFhLEdBQTZELEVBQUUsQ0FBQztRQUM3RSxtQkFBYyxHQUFlLEVBQUUsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFpQmpDLDRCQUF1QixHQUFHLEdBQUcsRUFBRSxHQUFF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Qzs0RkFHdkMsV0FBVztrQkFMdkIsU0FBUzsrQkFDRSxjQUFjLFlBQ2Qsd0NBQXdDOzswQkFtQy9DLFFBQVE7NENBOUJGLEtBQUs7c0JBQWIsS0FBSztnQkFDNEQsZ0JBQWdCO3NCQUFqRixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0NoaWxkLFxuICBDb21wb25lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIERvQ2hlY2ssXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIFJlbmRlcmVyMixcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUNvbmZpZyB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm1seS5jb25maWcnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIEZvcm1seUhvb2tDb25maWcgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgZGVmaW5lSGlkZGVuUHJvcCxcbiAgb2JzZXJ2ZSxcbiAgb2JzZXJ2ZURlZXAsXG4gIGdldEZpZWxkVmFsdWUsXG4gIGFzc2lnbkZpZWxkVmFsdWUsXG4gIGlzT2JqZWN0LFxuICBtYXJrRmllbGRGb3JDaGVjayxcbiAgaGFzS2V5LFxuICBJT2JzZXJ2ZXIsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEZpZWxkV3JhcHBlciB9IGZyb20gJy4uL3RlbXBsYXRlcy9maWVsZC53cmFwcGVyJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4uL3RlbXBsYXRlcy9maWVsZC50eXBlJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRUZW1wbGF0ZXMgfSBmcm9tICcuL2Zvcm1seS50ZW1wbGF0ZSc7XG5cbi8qKlxuICogVGhlIGA8Zm9ybWx5LWZpZWxkPmAgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIHRoZSBVSSB3aWRnZXQgKGxheW91dCArIHR5cGUpIG9mIGEgZ2l2ZW4gYGZpZWxkYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybWx5LWZpZWxkJyxcbiAgdGVtcGxhdGU6ICc8bmctdGVtcGxhdGUgI2NvbnRhaW5lcj48L25nLXRlbXBsYXRlPicsXG4gIHN0eWxlVXJsczogWycuL2Zvcm1seS5maWVsZC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkIGltcGxlbWVudHMgRG9DaGVjaywgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBUaGUgZmllbGQgY29uZmlnLiAqL1xuICBASW5wdXQoKSBmaWVsZDogRm9ybWx5RmllbGRDb25maWc7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHZpZXdDb250YWluZXJSZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIHByaXZhdGUgaG9zdE9ic2VydmVyczogSU9ic2VydmVyPGFueT5bXSA9IFtdO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZnM6IChDb21wb25lbnRSZWY8RmllbGRUeXBlPiB8IEVtYmVkZGVkVmlld1JlZjxGaWVsZFR5cGU+KVtdID0gW107XG4gIHByaXZhdGUgaG9va3NPYnNlcnZlcnM6IEZ1bmN0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBkZXRlY3RGaWVsZEJ1aWxkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBnZXQgY29udGFpbmVyUmVmKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5leHRyYXMucmVuZGVyRm9ybWx5RmllbGRFbGVtZW50ID8gdGhpcy52aWV3Q29udGFpbmVyUmVmIDogdGhpcy5ob3N0Q29udGFpbmVyUmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZWxlbWVudFJlZigpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZXh0cmFzLnJlbmRlckZvcm1seUZpZWxkRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZnM/LlswXSBpbnN0YW5jZW9mIENvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50UmVmc1swXS5sb2NhdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhbHVlQ2hhbmdlc1Vuc3Vic2NyaWJlID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maWc6IEZvcm1seUNvbmZpZyxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGhvc3RDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtOiBGb3JtbHlGaWVsZFRlbXBsYXRlcyxcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLnRyaWdnZXJIb29rKCdhZnRlckNvbnRlbnRJbml0Jyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy50cmlnZ2VySG9vaygnYWZ0ZXJWaWV3SW5pdCcpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLmRldGVjdEZpZWxkQnVpbGQgJiYgdGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50cmlnZ2VySG9vaygnb25Jbml0Jyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy50cmlnZ2VySG9vaygnb25DaGFuZ2VzJywgY2hhbmdlcyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlc2V0UmVmcyh0aGlzLmZpZWxkKTtcbiAgICB0aGlzLmhvc3RPYnNlcnZlcnMuZm9yRWFjaCgoaG9zdE9ic2VydmVyKSA9PiBob3N0T2JzZXJ2ZXIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5ob29rc09ic2VydmVycy5mb3JFYWNoKCh1bnN1YnNjcmliZSkgPT4gdW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXNVbnN1YnNjcmliZSgpO1xuICAgIHRoaXMudHJpZ2dlckhvb2soJ29uRGVzdHJveScpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJGaWVsZChcbiAgICBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgZjogRm9ybWx5RmllbGRDb25maWdDYWNoZSxcbiAgICB3cmFwcGVyczogRm9ybWx5RmllbGRDb25maWdbJ3dyYXBwZXJzJ10gPSBbXSxcbiAgKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyUmVmID09PSBjb250YWluZXJSZWYpIHtcbiAgICAgIHRoaXMucmVzZXRSZWZzKHRoaXMuZmllbGQpO1xuICAgICAgdGhpcy5jb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgIHdyYXBwZXJzID0gdGhpcy5maWVsZD8ud3JhcHBlcnM7XG4gICAgfVxuXG4gICAgaWYgKHdyYXBwZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBbd3JhcHBlciwgLi4ud3BzXSA9IHdyYXBwZXJzO1xuICAgICAgY29uc3QgeyBjb21wb25lbnQgfSA9IHRoaXMuY29uZmlnLmdldFdyYXBwZXIod3JhcHBlcik7XG5cbiAgICAgIGNvbnN0IHJlZiA9IGNvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8RmllbGRXcmFwcGVyPihjb21wb25lbnQpO1xuICAgICAgdGhpcy5hdHRhY2hDb21wb25lbnRSZWYocmVmLCBmKTtcbiAgICAgIG9ic2VydmU8Vmlld0NvbnRhaW5lclJlZiAmIHsgX2xDb250YWluZXI6IGFueSB9PihcbiAgICAgICAgcmVmLmluc3RhbmNlLFxuICAgICAgICBbJ2ZpZWxkQ29tcG9uZW50J10sXG4gICAgICAgICh7IGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSwgZmlyc3RDaGFuZ2UgfSkgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c1ZhbHVlICYmIHByZXZpb3VzVmFsdWUuX2xDb250YWluZXIgPT09IGN1cnJlbnRWYWx1ZS5fbENvbnRhaW5lcikge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZXdSZWYgPSBwcmV2aW91c1ZhbHVlID8gcHJldmlvdXNWYWx1ZS5kZXRhY2goKSA6IG51bGw7XG4gICAgICAgICAgICBpZiAodmlld1JlZiAmJiAhdmlld1JlZi5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgY3VycmVudFZhbHVlLmluc2VydCh2aWV3UmVmKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyRmllbGQoY3VycmVudFZhbHVlLCBmLCB3cHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAhZmlyc3RDaGFuZ2UgJiYgcmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoZj8udHlwZSkge1xuICAgICAgY29uc3QgaW5saW5lVHlwZSA9IHRoaXMuZm9ybT8udGVtcGxhdGVzPy5maW5kKChyZWYpID0+IHJlZi5uYW1lID09PSBmLnR5cGUpO1xuICAgICAgbGV0IHJlZjogQ29tcG9uZW50UmVmPGFueT4gfCBFbWJlZGRlZFZpZXdSZWY8YW55PjtcbiAgICAgIGlmIChpbmxpbmVUeXBlKSB7XG4gICAgICAgIHJlZiA9IGNvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcoaW5saW5lVHlwZS5yZWYsIHsgJGltcGxpY2l0OiBmIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyBjb21wb25lbnQgfSA9IHRoaXMuY29uZmlnLmdldFR5cGUoZi50eXBlLCB0cnVlKTtcbiAgICAgICAgcmVmID0gY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxGaWVsZFdyYXBwZXI+KGNvbXBvbmVudCBhcyBhbnkpO1xuICAgICAgfVxuICAgICAgdGhpcy5hdHRhY2hDb21wb25lbnRSZWYocmVmLCBmKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJIb29rKG5hbWU6IGtleW9mIEZvcm1seUhvb2tDb25maWcsIGNoYW5nZXM/OiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKG5hbWUgPT09ICdvbkluaXQnIHx8IChuYW1lID09PSAnb25DaGFuZ2VzJyAmJiBjaGFuZ2VzLmZpZWxkICYmICFjaGFuZ2VzLmZpZWxkLmZpcnN0Q2hhbmdlKSkge1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNVbnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNVbnN1YnNjcmliZSA9IHRoaXMuZmllbGRDaGFuZ2VzKHRoaXMuZmllbGQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpZWxkPy5ob29rcz8uW25hbWVdKSB7XG4gICAgICBpZiAoIWNoYW5nZXMgfHwgY2hhbmdlcy5maWVsZCkge1xuICAgICAgICBjb25zdCByID0gdGhpcy5maWVsZC5ob29rc1tuYW1lXSh0aGlzLmZpZWxkKTtcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyKSAmJiBbJ29uSW5pdCcsICdhZnRlckNvbnRlbnRJbml0JywgJ2FmdGVyVmlld0luaXQnXS5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgICAgIGNvbnN0IHN1YiA9IHIuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5ob29rc09ic2VydmVycy5wdXNoKCgpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuYW1lID09PSAnb25DaGFuZ2VzJyAmJiBjaGFuZ2VzLmZpZWxkKSB7XG4gICAgICB0aGlzLnJlc2V0UmVmcyhjaGFuZ2VzLmZpZWxkLnByZXZpb3VzVmFsdWUpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaENvbXBvbmVudFJlZjxUIGV4dGVuZHMgRmllbGRUeXBlPihcbiAgICByZWY6IENvbXBvbmVudFJlZjxUPiB8IEVtYmVkZGVkVmlld1JlZjxUPixcbiAgICBmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSxcbiAgKSB7XG4gICAgdGhpcy5jb21wb25lbnRSZWZzLnB1c2gocmVmKTtcbiAgICBmaWVsZC5fY29tcG9uZW50UmVmcy5wdXNoKHJlZik7XG4gICAgaWYgKHJlZiBpbnN0YW5jZW9mIENvbXBvbmVudFJlZikge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWYuaW5zdGFuY2UsIHsgZmllbGQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLmZpZWxkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gcmVxdWlyZSBGb3JtbHkgYnVpbGRcbiAgICBpZiAoIXRoaXMuZmllbGQub3B0aW9ucykge1xuICAgICAgdGhpcy5kZXRlY3RGaWVsZEJ1aWxkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGV0ZWN0RmllbGRCdWlsZCA9IGZhbHNlO1xuICAgIHRoaXMuaG9zdE9ic2VydmVycy5mb3JFYWNoKChob3N0T2JzZXJ2ZXIpID0+IGhvc3RPYnNlcnZlci51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmhvc3RPYnNlcnZlcnMgPSBbXG4gICAgICBvYnNlcnZlPGJvb2xlYW4+KHRoaXMuZmllbGQsIFsnaGlkZSddLCAoeyBmaXJzdENoYW5nZSwgY3VycmVudFZhbHVlIH0pID0+IHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gdGhpcy5jb250YWluZXJSZWY7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5leHRyYXMubGF6eVJlbmRlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBmaXJzdENoYW5nZSAmJiB0aGlzLnJlbmRlckZpZWxkKGNvbnRhaW5lclJlZiwgdGhpcy5maWVsZCk7XG4gICAgICAgICAgaWYgKCFmaXJzdENoYW5nZSB8fCAoZmlyc3RDaGFuZ2UgJiYgY3VycmVudFZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmICYmXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgY3VycmVudFZhbHVlID8gJ25vbmUnIDogJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBjb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsYXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRmllbGQoY29udGFpbmVyUmVmLCB0aGlzLmZpZWxkKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsYXNzJywgdGhpcy5maWVsZC5jbGFzc05hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICFmaXJzdENoYW5nZSAmJiB0aGlzLmZpZWxkLm9wdGlvbnMuZGV0ZWN0Q2hhbmdlcyh0aGlzLmZpZWxkKTtcbiAgICAgIH0pLFxuICAgICAgb2JzZXJ2ZTxzdHJpbmc+KHRoaXMuZmllbGQsIFsnY2xhc3NOYW1lJ10sICh7IGZpcnN0Q2hhbmdlLCBjdXJyZW50VmFsdWUgfSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKCFmaXJzdENoYW5nZSB8fCAoZmlyc3RDaGFuZ2UgJiYgY3VycmVudFZhbHVlKSkgJiZcbiAgICAgICAgICAoIXRoaXMuY29uZmlnLmV4dHJhcy5sYXp5UmVuZGVyIHx8IHRoaXMuZmllbGQuaGlkZSAhPT0gdHJ1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmICYmIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xhc3MnLCBjdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIC4uLlsndG91Y2hlZCcsICdwcmlzdGluZScsICdzdGF0dXMnXS5tYXAoKHByb3ApID0+XG4gICAgICAgIG9ic2VydmU8c3RyaW5nPihcbiAgICAgICAgICB0aGlzLmZpZWxkLFxuICAgICAgICAgIFsnZm9ybUNvbnRyb2wnLCBwcm9wXSxcbiAgICAgICAgICAoeyBmaXJzdENoYW5nZSB9KSA9PiAhZmlyc3RDaGFuZ2UgJiYgbWFya0ZpZWxkRm9yQ2hlY2sodGhpcy5maWVsZCksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHJlc2V0UmVmcyhmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmIChmaWVsZCkge1xuICAgICAgaWYgKGZpZWxkLl9sb2NhbEZpZWxkcykge1xuICAgICAgICBmaWVsZC5fbG9jYWxGaWVsZHMgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZUhpZGRlblByb3AodGhpcy5maWVsZCwgJ19sb2NhbEZpZWxkcycsIFtdKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLl9jb21wb25lbnRSZWZzKSB7XG4gICAgICAgIGZpZWxkLl9jb21wb25lbnRSZWZzID0gZmllbGQuX2NvbXBvbmVudFJlZnMuZmlsdGVyKChyZWYpID0+IHRoaXMuY29tcG9uZW50UmVmcy5pbmRleE9mKHJlZikgPT09IC0xKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZUhpZGRlblByb3AodGhpcy5maWVsZCwgJ19jb21wb25lbnRSZWZzJywgW10pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50UmVmcyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWVsZENoYW5nZXMoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWZpZWxkKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgfVxuXG4gICAgY29uc3Qgc3Vic2NyaWJlcyA9IFtvYnNlcnZlRGVlcChmaWVsZCwgWydwcm9wcyddLCAoKSA9PiBmaWVsZC5vcHRpb25zLmRldGVjdENoYW5nZXMoZmllbGQpKV07XG5cbiAgICBpZiAoZmllbGQub3B0aW9ucykge1xuICAgICAgc3Vic2NyaWJlcy5wdXNoKG9ic2VydmVEZWVwKGZpZWxkLm9wdGlvbnMsIFsnZm9ybVN0YXRlJ10sICgpID0+IGZpZWxkLm9wdGlvbnMuZGV0ZWN0Q2hhbmdlcyhmaWVsZCkpKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWVsZC5fZXhwcmVzc2lvbnMgfHwge30pKSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uT2JzZXJ2ZXIgPSBvYnNlcnZlPEZvcm1seUZpZWxkQ29uZmlnQ2FjaGVbJ19leHByZXNzaW9ucyddWydrZXknXT4oXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBbJ19leHByZXNzaW9ucycsIGtleV0sXG4gICAgICAgICh7IGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWU/LnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZS5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUuc3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShjdXJyZW50VmFsdWUudmFsdWUkKSkge1xuICAgICAgICAgICAgY3VycmVudFZhbHVlLnN1YnNjcmlwdGlvbiA9IGN1cnJlbnRWYWx1ZS52YWx1ZSQuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHN1YnNjcmliZXMucHVzaCgoKSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5fZXhwcmVzc2lvbnNba2V5XT8uc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgZmllbGQuX2V4cHJlc3Npb25zW2tleV0uc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwcmVzc2lvbk9ic2VydmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgW1snZm9jdXMnXSwgWyd0ZW1wbGF0ZSddLCBbJ2ZpZWxkR3JvdXBDbGFzc05hbWUnXSwgWyd2YWxpZGF0aW9uJywgJ3Nob3cnXV0pIHtcbiAgICAgIGNvbnN0IGZpZWxkT2JzZXJ2ZXIgPSBvYnNlcnZlKFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgKHsgZmlyc3RDaGFuZ2UgfSkgPT4gIWZpcnN0Q2hhbmdlICYmIGZpZWxkLm9wdGlvbnMuZGV0ZWN0Q2hhbmdlcyhmaWVsZCksXG4gICAgICApO1xuICAgICAgc3Vic2NyaWJlcy5wdXNoKCgpID0+IGZpZWxkT2JzZXJ2ZXIudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLmZvcm1Db250cm9sICYmICFmaWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gZmllbGQuZm9ybUNvbnRyb2w7XG4gICAgICBsZXQgdmFsdWVDaGFuZ2VzID0gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHgsIHkpID0+IHtcbiAgICAgICAgICBpZiAoeCAhPT0geSB8fCBBcnJheS5pc0FycmF5KHgpIHx8IGlzT2JqZWN0KHgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgIT09IGdldEZpZWxkVmFsdWUoZmllbGQpKSB7XG4gICAgICAgIHZhbHVlQ2hhbmdlcyA9IHZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgdXBkYXRlT24sIGRlYm91bmNlIH0gPSBmaWVsZC5tb2RlbE9wdGlvbnM7XG4gICAgICBpZiAoKCF1cGRhdGVPbiB8fCB1cGRhdGVPbiA9PT0gJ2NoYW5nZScpICYmIGRlYm91bmNlPy5kZWZhdWx0ID4gMCkge1xuICAgICAgICB2YWx1ZUNoYW5nZXMgPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZShkZWJvdW5jZS5kZWZhdWx0KSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YiA9IHZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNzkyXG4gICAgICAgIGlmIChjb250cm9sLl9maWVsZHM/Lmxlbmd0aCA+IDEgJiYgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZmllbGQucGFyc2Vycz8uZm9yRWFjaCgocGFyc2VyRm4pID0+ICh2YWx1ZSA9IHBhcnNlckZuKHZhbHVlKSkpO1xuICAgICAgICBpZiAodmFsdWUgIT09IGZpZWxkLmZvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNLZXkoZmllbGQpKSB7XG4gICAgICAgICAgYXNzaWduRmllbGRWYWx1ZShmaWVsZCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzLm5leHQoeyB2YWx1ZSwgZmllbGQsIHR5cGU6ICd2YWx1ZUNoYW5nZXMnIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHN1YnNjcmliZXMucHVzaCgoKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgbGV0IHRlbXBsYXRlRmllbGRzU3ViczogKCgpID0+IHZvaWQpW10gPSBbXTtcbiAgICBvYnNlcnZlKGZpZWxkLCBbJ19sb2NhbEZpZWxkcyddLCAoeyBjdXJyZW50VmFsdWUgfSkgPT4ge1xuICAgICAgdGVtcGxhdGVGaWVsZHNTdWJzLmZvckVhY2goKHVuc3Vic2NyaWJlKSA9PiB1bnN1YnNjcmliZSgpKTtcbiAgICAgIHRlbXBsYXRlRmllbGRzU3VicyA9IChjdXJyZW50VmFsdWUgfHwgW10pLm1hcCgoZjogRm9ybWx5RmllbGRDb25maWdDYWNoZSkgPT4gdGhpcy5maWVsZENoYW5nZXMoZikpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHN1YnNjcmliZXMuZm9yRWFjaCgodW5zdWJzY3JpYmUpID0+IHVuc3Vic2NyaWJlKCkpO1xuICAgICAgdGVtcGxhdGVGaWVsZHNTdWJzLmZvckVhY2goKHVuc3Vic2NyaWJlKSA9PiB1bnN1YnNjcmliZSgpKTtcbiAgICB9O1xuICB9XG59XG4iXX0=
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFlBQVksRUFXWixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFdBQVcsRUFDWCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsTUFBTSxHQUVQLE1BQU0sVUFBVSxDQUFDO0FBR2xCLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUUxQzs7R0FFRztBQU1ILE1BQU0sT0FBTyxXQUFXO0lBMkJ0QixZQUNVLE1BQW9CLEVBQ3BCLFFBQW1CLEVBQ25CLFdBQXVCLEVBQ3ZCLGdCQUFrQyxFQUN0QixJQUEwQjtRQUp0QyxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFzQjtRQTNCeEMsa0JBQWEsR0FBc0MsRUFBRSxDQUFDO1FBQ3RELGtCQUFhLEdBQTZELEVBQUUsQ0FBQztRQUM3RSxtQkFBYyxHQUFlLEVBQUUsQ0FBQztRQUNoQyxx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QyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxrQkFBa0IsR0FBbUIsRUFBRSxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUNwRCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDM0Qsa0JBQWtCLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBeUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLEVBQUU7WUFDVixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUM7SUFDSixDQUFDOzt5R0ExVVUsV0FBVzs2RkFBWCxXQUFXLDBLQUdVLGdCQUFnQixnRUFOdEMsd0NBQXdDOzRGQUd2QyxXQUFXO2tCQUx2QixTQUFTOytCQUNFLGNBQWMsWUFDZCx3Q0FBd0M7OzBCQW1DL0MsUUFBUTs0Q0E5QkYsS0FBSztzQkFBYixLQUFLO2dCQUM0RCxnQkFBZ0I7c0JBQWpGLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3Q2hpbGQsXG4gIENvbXBvbmVudFJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgRG9DaGVjayxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgUmVuZGVyZXIyLFxuICBFbGVtZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5Q29uZmlnIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybWx5LmNvbmZpZyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5RmllbGRDb25maWdDYWNoZSwgRm9ybWx5SG9va0NvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBkZWZpbmVIaWRkZW5Qcm9wLFxuICBvYnNlcnZlLFxuICBvYnNlcnZlRGVlcCxcbiAgZ2V0RmllbGRWYWx1ZSxcbiAgYXNzaWduRmllbGRWYWx1ZSxcbiAgaXNPYmplY3QsXG4gIG1hcmtGaWVsZEZvckNoZWNrLFxuICBoYXNLZXksXG4gIElPYnNlcnZlcixcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmllbGRXcmFwcGVyIH0gZnJvbSAnLi4vdGVtcGxhdGVzL2ZpZWxkLndyYXBwZXInO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi4vdGVtcGxhdGVzL2ZpZWxkLnR5cGUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRUZW1wbGF0ZXMgfSBmcm9tICcuL2Zvcm1seS50ZW1wbGF0ZSc7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBUaGUgYDxmb3JtbHktZmllbGQ+YCBjb21wb25lbnQgaXMgdXNlZCB0byByZW5kZXIgdGhlIFVJIHdpZGdldCAobGF5b3V0ICsgdHlwZSkgb2YgYSBnaXZlbiBgZmllbGRgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktZmllbGQnLFxuICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZSAjY29udGFpbmVyPjwvbmctdGVtcGxhdGU+JyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybWx5LmZpZWxkLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIFRoZSBmaWVsZCBjb25maWcuICovXG4gIEBJbnB1dCgpIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZztcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgdmlld0NvbnRhaW5lclJlZiE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBob3N0T2JzZXJ2ZXJzOiAoSU9ic2VydmVyPGFueT4gfCBTdWJzY3JpcHRpb24pW10gPSBbXTtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWZzOiAoQ29tcG9uZW50UmVmPEZpZWxkVHlwZT4gfCBFbWJlZGRlZFZpZXdSZWY8RmllbGRUeXBlPilbXSA9IFtdO1xuICBwcml2YXRlIGhvb2tzT2JzZXJ2ZXJzOiBGdW5jdGlvbltdID0gW107XG4gIHByaXZhdGUgZGV0ZWN0RmllbGRCdWlsZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZ2V0IGNvbnRhaW5lclJlZigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZXh0cmFzLnJlbmRlckZvcm1seUZpZWxkRWxlbWVudCA/IHRoaXMudmlld0NvbnRhaW5lclJlZiA6IHRoaXMuaG9zdENvbnRhaW5lclJlZjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGVsZW1lbnRSZWYoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmV4dHJhcy5yZW5kZXJGb3JtbHlGaWVsZEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWZzPy5bMF0gaW5zdGFuY2VvZiBDb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZnNbMF0ubG9jYXRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YWx1ZUNoYW5nZXNVbnN1YnNjcmliZSA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBob3N0Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybTogRm9ybWx5RmllbGRUZW1wbGF0ZXMsXG4gICkge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy50cmlnZ2VySG9vaygnYWZ0ZXJDb250ZW50SW5pdCcpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudHJpZ2dlckhvb2soJ2FmdGVyVmlld0luaXQnKTtcbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5kZXRlY3RGaWVsZEJ1aWxkICYmIHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5vcHRpb25zKSB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudHJpZ2dlckhvb2soJ29uSW5pdCcpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMudHJpZ2dlckhvb2soJ29uQ2hhbmdlcycsIGNoYW5nZXMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNldFJlZnModGhpcy5maWVsZCk7XG4gICAgdGhpcy5ob3N0T2JzZXJ2ZXJzLmZvckVhY2goKGhvc3RPYnNlcnZlcikgPT4gaG9zdE9ic2VydmVyLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuaG9va3NPYnNlcnZlcnMuZm9yRWFjaCgodW5zdWJzY3JpYmUpID0+IHVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2VzVW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnRyaWdnZXJIb29rKCdvbkRlc3Ryb3knKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRmllbGQoXG4gICAgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGY6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsXG4gICAgd3JhcHBlcnM6IEZvcm1seUZpZWxkQ29uZmlnWyd3cmFwcGVycyddID0gW10sXG4gICkge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclJlZiA9PT0gY29udGFpbmVyUmVmKSB7XG4gICAgICB0aGlzLnJlc2V0UmVmcyh0aGlzLmZpZWxkKTtcbiAgICAgIHRoaXMuY29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICB3cmFwcGVycyA9IHRoaXMuZmllbGQ/LndyYXBwZXJzO1xuICAgIH1cblxuICAgIGlmICh3cmFwcGVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgW3dyYXBwZXIsIC4uLndwc10gPSB3cmFwcGVycztcbiAgICAgIGNvbnN0IHsgY29tcG9uZW50IH0gPSB0aGlzLmNvbmZpZy5nZXRXcmFwcGVyKHdyYXBwZXIpO1xuXG4gICAgICBjb25zdCByZWYgPSBjb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PEZpZWxkV3JhcHBlcj4oY29tcG9uZW50KTtcbiAgICAgIHRoaXMuYXR0YWNoQ29tcG9uZW50UmVmKHJlZiwgZik7XG4gICAgICBvYnNlcnZlPFZpZXdDb250YWluZXJSZWYgJiB7IF9sQ29udGFpbmVyOiBhbnkgfT4oXG4gICAgICAgIHJlZi5pbnN0YW5jZSxcbiAgICAgICAgWydmaWVsZENvbXBvbmVudCddLFxuICAgICAgICAoeyBjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUsIGZpcnN0Q2hhbmdlIH0pID0+IHtcbiAgICAgICAgICBpZiAoY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNWYWx1ZSAmJiBwcmV2aW91c1ZhbHVlLl9sQ29udGFpbmVyID09PSBjdXJyZW50VmFsdWUuX2xDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2aWV3UmVmID0gcHJldmlvdXNWYWx1ZSA/IHByZXZpb3VzVmFsdWUuZGV0YWNoKCkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKHZpZXdSZWYgJiYgIXZpZXdSZWYuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZS5pbnNlcnQodmlld1JlZik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnJlbmRlckZpZWxkKGN1cnJlbnRWYWx1ZSwgZiwgd3BzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgIWZpcnN0Q2hhbmdlICYmIHJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGY/LnR5cGUpIHtcbiAgICAgIGNvbnN0IGlubGluZVR5cGUgPSB0aGlzLmZvcm0/LnRlbXBsYXRlcz8uZmluZCgocmVmKSA9PiByZWYubmFtZSA9PT0gZi50eXBlKTtcbiAgICAgIGxldCByZWY6IENvbXBvbmVudFJlZjxhbnk+IHwgRW1iZWRkZWRWaWV3UmVmPGFueT47XG4gICAgICBpZiAoaW5saW5lVHlwZSkge1xuICAgICAgICByZWYgPSBjb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KGlubGluZVR5cGUucmVmLCB7ICRpbXBsaWNpdDogZiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgY29tcG9uZW50IH0gPSB0aGlzLmNvbmZpZy5nZXRUeXBlKGYudHlwZSwgdHJ1ZSk7XG4gICAgICAgIHJlZiA9IGNvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8RmllbGRXcmFwcGVyPihjb21wb25lbnQgYXMgYW55KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYXR0YWNoQ29tcG9uZW50UmVmKHJlZiwgZik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmlnZ2VySG9vayhuYW1lOiBrZXlvZiBGb3JtbHlIb29rQ29uZmlnLCBjaGFuZ2VzPzogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChuYW1lID09PSAnb25Jbml0JyB8fCAobmFtZSA9PT0gJ29uQ2hhbmdlcycgJiYgY2hhbmdlcy5maWVsZCAmJiAhY2hhbmdlcy5maWVsZC5maXJzdENoYW5nZSkpIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VzVW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VzVW5zdWJzY3JpYmUgPSB0aGlzLmZpZWxkQ2hhbmdlcyh0aGlzLmZpZWxkKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWVsZD8uaG9va3M/LltuYW1lXSkge1xuICAgICAgaWYgKCFjaGFuZ2VzIHx8IGNoYW5nZXMuZmllbGQpIHtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuZmllbGQuaG9va3NbbmFtZV0odGhpcy5maWVsZCk7XG4gICAgICAgIGlmIChpc09ic2VydmFibGUocikgJiYgWydvbkluaXQnLCAnYWZ0ZXJDb250ZW50SW5pdCcsICdhZnRlclZpZXdJbml0J10uaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCBzdWIgPSByLnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMuaG9va3NPYnNlcnZlcnMucHVzaCgoKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSA9PT0gJ29uQ2hhbmdlcycgJiYgY2hhbmdlcy5maWVsZCkge1xuICAgICAgdGhpcy5yZXNldFJlZnMoY2hhbmdlcy5maWVsZC5wcmV2aW91c1ZhbHVlKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hDb21wb25lbnRSZWY8VCBleHRlbmRzIEZpZWxkVHlwZT4oXG4gICAgcmVmOiBDb21wb25lbnRSZWY8VD4gfCBFbWJlZGRlZFZpZXdSZWY8VD4sXG4gICAgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsXG4gICkge1xuICAgIHRoaXMuY29tcG9uZW50UmVmcy5wdXNoKHJlZik7XG4gICAgZmllbGQuX2NvbXBvbmVudFJlZnMucHVzaChyZWYpO1xuICAgIGlmIChyZWYgaW5zdGFuY2VvZiBDb21wb25lbnRSZWYpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVmLmluc3RhbmNlLCB7IGZpZWxkIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5maWVsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHJlcXVpcmUgRm9ybWx5IGJ1aWxkXG4gICAgaWYgKCF0aGlzLmZpZWxkLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMuZGV0ZWN0RmllbGRCdWlsZCA9IHRydWU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRldGVjdEZpZWxkQnVpbGQgPSBmYWxzZTtcbiAgICB0aGlzLmhvc3RPYnNlcnZlcnMuZm9yRWFjaCgoaG9zdE9ic2VydmVyKSA9PiBob3N0T2JzZXJ2ZXIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5ob3N0T2JzZXJ2ZXJzID0gW1xuICAgICAgb2JzZXJ2ZTxib29sZWFuPih0aGlzLmZpZWxkLCBbJ2hpZGUnXSwgKHsgZmlyc3RDaGFuZ2UsIGN1cnJlbnRWYWx1ZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHRoaXMuY29udGFpbmVyUmVmO1xuICAgICAgICBpZiAodGhpcy5jb25maWcuZXh0cmFzLmxhenlSZW5kZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgZmlyc3RDaGFuZ2UgJiYgdGhpcy5yZW5kZXJGaWVsZChjb250YWluZXJSZWYsIHRoaXMuZmllbGQpO1xuICAgICAgICAgIGlmICghZmlyc3RDaGFuZ2UgfHwgKGZpcnN0Q2hhbmdlICYmIGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZiAmJlxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsIGN1cnJlbnRWYWx1ZSA/ICdub25lJyA6ICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgY29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5maWVsZC5jbGFzc05hbWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGFzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckZpZWxkKGNvbnRhaW5lclJlZiwgdGhpcy5maWVsZCk7XG4gICAgICAgICAgICBpZiAodGhpcy5maWVsZC5jbGFzc05hbWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGFzcycsIHRoaXMuZmllbGQuY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAhZmlyc3RDaGFuZ2UgJiYgdGhpcy5maWVsZC5vcHRpb25zLmRldGVjdENoYW5nZXModGhpcy5maWVsZCk7XG4gICAgICB9KSxcbiAgICAgIG9ic2VydmU8c3RyaW5nPih0aGlzLmZpZWxkLCBbJ2NsYXNzTmFtZSddLCAoeyBmaXJzdENoYW5nZSwgY3VycmVudFZhbHVlIH0pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICghZmlyc3RDaGFuZ2UgfHwgKGZpcnN0Q2hhbmdlICYmIGN1cnJlbnRWYWx1ZSkpICYmXG4gICAgICAgICAgKCF0aGlzLmNvbmZpZy5leHRyYXMubGF6eVJlbmRlciB8fCB0aGlzLmZpZWxkLmhpZGUgIT09IHRydWUpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZiAmJiB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsYXNzJywgY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgXTtcblxuICAgIGNvbnN0IGlzU2lnbmFsUmVxdWlyZWQgPSArVkVSU0lPTi5tYWpvciA+PSAxOCAmJiArVkVSU0lPTi5taW5vciA+PSAxO1xuICAgIGlmICghaXNTaWduYWxSZXF1aXJlZCkge1xuICAgICAgWyd0b3VjaGVkJywgJ3ByaXN0aW5lJywgJ3N0YXR1cyddLmZvckVhY2goKHByb3ApID0+XG4gICAgICAgIHRoaXMuaG9zdE9ic2VydmVycy5wdXNoKFxuICAgICAgICAgIG9ic2VydmU8c3RyaW5nPihcbiAgICAgICAgICAgIHRoaXMuZmllbGQsXG4gICAgICAgICAgICBbJ2Zvcm1Db250cm9sJywgcHJvcF0sXG4gICAgICAgICAgICAoeyBmaXJzdENoYW5nZSB9KSA9PiAhZmlyc3RDaGFuZ2UgJiYgbWFya0ZpZWxkRm9yQ2hlY2sodGhpcy5maWVsZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkLmZvcm1Db250cm9sKSB7XG4gICAgICBjb25zdCBzdGF0dXNDaGFuZ2VzID0gdGhpcy5maWVsZC5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gbWFya0ZpZWxkRm9yQ2hlY2sodGhpcy5maWVsZCkpO1xuICAgICAgdGhpcy5ob3N0T2JzZXJ2ZXJzLnB1c2goc3RhdHVzQ2hhbmdlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldFJlZnMoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUpIHtcbiAgICBpZiAoZmllbGQpIHtcbiAgICAgIGlmIChmaWVsZC5fbG9jYWxGaWVsZHMpIHtcbiAgICAgICAgZmllbGQuX2xvY2FsRmllbGRzID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZpbmVIaWRkZW5Qcm9wKHRoaXMuZmllbGQsICdfbG9jYWxGaWVsZHMnLCBbXSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC5fY29tcG9uZW50UmVmcykge1xuICAgICAgICBmaWVsZC5fY29tcG9uZW50UmVmcyA9IGZpZWxkLl9jb21wb25lbnRSZWZzLmZpbHRlcigocmVmKSA9PiB0aGlzLmNvbXBvbmVudFJlZnMuaW5kZXhPZihyZWYpID09PSAtMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZpbmVIaWRkZW5Qcm9wKHRoaXMuZmllbGQsICdfY29tcG9uZW50UmVmcycsIFtdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZmllbGRDaGFuZ2VzKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFmaWVsZCkge1xuICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgIH1cblxuICAgIGNvbnN0IHN1YnNjcmliZXMgPSBbb2JzZXJ2ZURlZXAoZmllbGQsIFsncHJvcHMnXSwgKCkgPT4gZmllbGQub3B0aW9ucy5kZXRlY3RDaGFuZ2VzKGZpZWxkKSldO1xuXG4gICAgaWYgKGZpZWxkLm9wdGlvbnMpIHtcbiAgICAgIHN1YnNjcmliZXMucHVzaChvYnNlcnZlRGVlcChmaWVsZC5vcHRpb25zLCBbJ2Zvcm1TdGF0ZSddLCAoKSA9PiBmaWVsZC5vcHRpb25zLmRldGVjdENoYW5nZXMoZmllbGQpKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZmllbGQuX2V4cHJlc3Npb25zIHx8IHt9KSkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbk9ic2VydmVyID0gb2JzZXJ2ZTxGb3JtbHlGaWVsZENvbmZpZ0NhY2hlWydfZXhwcmVzc2lvbnMnXVsna2V5J10+KFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgWydfZXhwcmVzc2lvbnMnLCBrZXldLFxuICAgICAgICAoeyBjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUgfSkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2aW91c1ZhbHVlPy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlLnN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc09ic2VydmFibGUoY3VycmVudFZhbHVlLnZhbHVlJCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZS5zdWJzY3JpcHRpb24gPSBjdXJyZW50VmFsdWUudmFsdWUkLnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBzdWJzY3JpYmVzLnB1c2goKCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuX2V4cHJlc3Npb25zW2tleV0/LnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgIGZpZWxkLl9leHByZXNzaW9uc1trZXldLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGV4cHJlc3Npb25PYnNlcnZlci51bnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwYXRoIG9mIFtbJ2ZvY3VzJ10sIFsndGVtcGxhdGUnXSwgWydmaWVsZEdyb3VwQ2xhc3NOYW1lJ10sIFsndmFsaWRhdGlvbicsICdzaG93J11dKSB7XG4gICAgICBjb25zdCBmaWVsZE9ic2VydmVyID0gb2JzZXJ2ZShcbiAgICAgICAgZmllbGQsXG4gICAgICAgIHBhdGgsXG4gICAgICAgICh7IGZpcnN0Q2hhbmdlIH0pID0+ICFmaXJzdENoYW5nZSAmJiBmaWVsZC5vcHRpb25zLmRldGVjdENoYW5nZXMoZmllbGQpLFxuICAgICAgKTtcbiAgICAgIHN1YnNjcmliZXMucHVzaCgoKSA9PiBmaWVsZE9ic2VydmVyLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIGlmIChmaWVsZC5mb3JtQ29udHJvbCAmJiAhZmllbGQuZmllbGRHcm91cCkge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmZvcm1Db250cm9sO1xuICAgICAgbGV0IHZhbHVlQ2hhbmdlcyA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIG1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICBmaWVsZC5wYXJzZXJzPy5tYXAoKHBhcnNlckZuKSA9PiAodmFsdWUgPSAocGFyc2VyRm4gYXMgYW55KSh2YWx1ZSwgZmllbGQpKSk7XG4gICAgICAgICAgaWYgKCFPYmplY3QuaXModmFsdWUsIGZpZWxkLmZvcm1Db250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCh4LCB5KSA9PiB7XG4gICAgICAgICAgaWYgKHggIT09IHkgfHwgQXJyYXkuaXNBcnJheSh4KSB8fCBpc09iamVjdCh4KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChjb250cm9sLnZhbHVlICE9PSBnZXRGaWVsZFZhbHVlKGZpZWxkKSkge1xuICAgICAgICB2YWx1ZUNoYW5nZXMgPSB2YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHVwZGF0ZU9uLCBkZWJvdW5jZSB9ID0gZmllbGQubW9kZWxPcHRpb25zO1xuICAgICAgaWYgKCghdXBkYXRlT24gfHwgdXBkYXRlT24gPT09ICdjaGFuZ2UnKSAmJiBkZWJvdW5jZT8uZGVmYXVsdCA+IDApIHtcbiAgICAgICAgdmFsdWVDaGFuZ2VzID0gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoZGVib3VuY2UuZGVmYXVsdCkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdWIgPSB2YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAvLyB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMzc5MlxuICAgICAgICBpZiAoY29udHJvbC5fZmllbGRzPy5sZW5ndGggPiAxICYmIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNLZXkoZmllbGQpKSB7XG4gICAgICAgICAgYXNzaWduRmllbGRWYWx1ZShmaWVsZCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzLm5leHQoeyB2YWx1ZSwgZmllbGQsIHR5cGU6ICd2YWx1ZUNoYW5nZXMnIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHN1YnNjcmliZXMucHVzaCgoKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgbGV0IHRlbXBsYXRlRmllbGRzU3ViczogKCgpID0+IHZvaWQpW10gPSBbXTtcbiAgICBvYnNlcnZlKGZpZWxkLCBbJ19sb2NhbEZpZWxkcyddLCAoeyBjdXJyZW50VmFsdWUgfSkgPT4ge1xuICAgICAgdGVtcGxhdGVGaWVsZHNTdWJzLmZvckVhY2goKHVuc3Vic2NyaWJlKSA9PiB1bnN1YnNjcmliZSgpKTtcbiAgICAgIHRlbXBsYXRlRmllbGRzU3VicyA9IChjdXJyZW50VmFsdWUgfHwgW10pLm1hcCgoZjogRm9ybWx5RmllbGRDb25maWdDYWNoZSkgPT4gdGhpcy5maWVsZENoYW5nZXMoZikpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHN1YnNjcmliZXMuZm9yRWFjaCgodW5zdWJzY3JpYmUpID0+IHVuc3Vic2NyaWJlKCkpO1xuICAgICAgdGVtcGxhdGVGaWVsZHNTdWJzLmZvckVhY2goKHVuc3Vic2NyaWJlKSA9PiB1bnN1YnNjcmliZSgpKTtcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -63,7 +63,7 @@ class FormlyJsonschema {
63
63
  }
64
64
  _toFieldConfig(schema, _a) {
65
65
  var _b;
66
- var { key } = _a, options = __rest(_a, ["key"]);
66
+ var { key, isOptional } = _a, options = __rest(_a, ["key", "isOptional"]);
67
67
  schema = this.resolveSchema(schema, options);
68
68
  const types = this.guessSchemaType(schema);
69
69
  let field = {
@@ -85,34 +85,29 @@ class FormlyJsonschema {
85
85
  if (options.resetOnHide) {
86
86
  field.resetOnHide = true;
87
87
  }
88
- if (key && options.strict) {
89
- this.addValidator(field, 'type', (c, f) => {
90
- const value = ɵgetFieldValue(f);
91
- if (value != null) {
92
- switch (field.type) {
93
- case 'string': {
94
- return typeof value === 'string';
95
- }
96
- case 'integer': {
97
- return isInteger(value);
98
- }
99
- case 'number': {
100
- return typeof value === 'number';
101
- }
102
- case 'object': {
103
- return isObject(value);
104
- }
105
- case 'array': {
106
- return Array.isArray(value);
107
- }
108
- }
109
- }
110
- return true;
111
- });
112
- }
113
88
  if (options.shareFormControl === false) {
114
89
  field.shareFormControl = false;
115
90
  }
91
+ if (field.defaultValue === undefined && types.length === 1 && isOptional === false) {
92
+ switch (types[0]) {
93
+ case 'null': {
94
+ field.defaultValue = null;
95
+ break;
96
+ }
97
+ case 'string': {
98
+ field.defaultValue = '';
99
+ break;
100
+ }
101
+ case 'object': {
102
+ field.defaultValue = {};
103
+ break;
104
+ }
105
+ case 'array': {
106
+ field.defaultValue = schema.minItems > 0 ? Array.from(new Array(schema.minItems)) : [];
107
+ break;
108
+ }
109
+ }
110
+ }
116
111
  if (options.ignoreDefault) {
117
112
  delete field.defaultValue;
118
113
  }
@@ -152,17 +147,18 @@ class FormlyJsonschema {
152
147
  case 'number':
153
148
  case 'integer': {
154
149
  field.parsers = [
155
- (v) => {
156
- var _a, _b;
150
+ (v, f) => {
157
151
  v = toNumber(v);
158
- if (v === null &&
159
- typeof document !== 'undefined' &&
160
- field.id &&
161
- !((_b = (_a = document.querySelector(`#${field.id}`)) === null || _a === void 0 ? void 0 : _a.validity) === null || _b === void 0 ? void 0 : _b.badInput)) {
162
- v = undefined;
163
- }
164
- if (v !== field.formControl.value) {
165
- field.formControl.setValue(v, { emitModelToViewChange: false });
152
+ if (v === null && f) {
153
+ const input = typeof document !== 'undefined' && f.id
154
+ ? document.querySelector(`#${f.id}`)
155
+ : undefined;
156
+ if (input && !input.validity.badInput) {
157
+ v = undefined;
158
+ }
159
+ if (v !== f.formControl.value) {
160
+ f.formControl.setValue(v, { emitModelToViewChange: false });
161
+ }
166
162
  }
167
163
  return v;
168
164
  },
@@ -196,11 +192,11 @@ class FormlyJsonschema {
196
192
  }
197
193
  case 'string': {
198
194
  field.parsers = [
199
- (v) => {
195
+ (v, f) => {
200
196
  if (types.indexOf('null') !== -1) {
201
197
  v = isEmpty(v) ? null : v;
202
198
  }
203
- else if (!field.props.required) {
199
+ else if (f && !f.props.required) {
204
200
  v = v === '' ? undefined : v;
205
201
  }
206
202
  return v;
@@ -220,7 +216,7 @@ class FormlyJsonschema {
220
216
  const { propDeps, schemaDeps } = this.resolveDependencies(schema);
221
217
  Object.keys(schema.properties || {}).forEach((property) => {
222
218
  const isRequired = Array.isArray(schema.required) && schema.required.indexOf(property) !== -1;
223
- const f = this._toFieldConfig(schema.properties[property], Object.assign(Object.assign({}, options), { key: property, isOptional: options.isOptional || !isRequired }));
219
+ const f = this._toFieldConfig(schema.properties[property], Object.assign(Object.assign({}, options), { key: property, isOptional: isOptional || !isRequired }));
224
220
  field.fieldGroup.push(f);
225
221
  if (isRequired || propDeps[property]) {
226
222
  f.expressions = Object.assign(Object.assign({}, (f.expressions || {})), { 'props.required': (f) => {
@@ -275,7 +271,7 @@ class FormlyJsonschema {
275
271
  const value = ɵgetFieldValue(f);
276
272
  return isEmpty(value) || value.length >= schema.minItems;
277
273
  });
278
- if (!options.isOptional && schema.minItems > 0 && field.defaultValue === undefined) {
274
+ if (!isOptional && schema.minItems > 0 && field.defaultValue === undefined) {
279
275
  field.defaultValue = Array.from(new Array(schema.minItems));
280
276
  }
281
277
  }
@@ -321,11 +317,11 @@ class FormlyJsonschema {
321
317
  }
322
318
  const isMultiSchema = items.oneOf || items.anyOf;
323
319
  // When items is a single schema, the additionalItems keyword is meaningless, and it should not be used.
324
- const f = this._toFieldConfig(items, isMultiSchema ? Object.assign(Object.assign({}, options), { key: `${root.fieldGroup.length}` }) : options);
320
+ const f = this._toFieldConfig(items, isMultiSchema
321
+ ? Object.assign(Object.assign({}, options), { key: `${root.fieldGroup.length}`, isOptional: false }) : Object.assign(Object.assign({}, options), { isOptional: false }));
325
322
  if (isMultiSchema && !ɵhasKey(f)) {
326
323
  f.key = null;
327
324
  }
328
- f.props.required = true;
329
325
  return f;
330
326
  }
331
327
  const length = root.fieldGroup ? root.fieldGroup.length : 0;
@@ -583,7 +579,7 @@ class FormlyJsonschema {
583
579
  field = schema._field = root.options.build({
584
580
  form: Array.isArray(model) ? new FormArray([]) : new FormGroup({}),
585
581
  fieldGroup: [
586
- this._toFieldConfig(schema, Object.assign(Object.assign({}, options), { resetOnHide: true, ignoreDefault: true, map: null, strict: true })),
582
+ this._toFieldConfig(schema, Object.assign(Object.assign({}, options), { resetOnHide: true, ignoreDefault: true, map: null })),
587
583
  ],
588
584
  model,
589
585
  options: {},
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-formly-core-json-schema.mjs","sources":["../../../../src/core/json-schema/src/formly-json-schema.service.ts","../../../../src/core/json-schema/src/ngx-formly-core-json-schema.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { JSONSchema7, JSONSchema7Definition } from 'json-schema';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport {\n ɵreverseDeepMerge as reverseDeepMerge,\n ɵgetFieldValue as getFieldValue,\n ɵclone as clone,\n ɵhasKey as hasKey,\n} from '@ngx-formly/core';\nimport { tap } from 'rxjs/operators';\n\nexport interface FormlyJsonschemaOptions {\n /**\n * allows to intercept the mapping, taking the already mapped\n * formly field and the original JSONSchema source from which it\n * was mapped.\n */\n map?: (mappedField: FormlyFieldConfig, mapSource: JSONSchema7) => FormlyFieldConfig;\n}\n\ninterface FormlyJSONSchema7 extends JSONSchema7 {\n widget?: { formlyConfig: FormlyFieldConfig };\n}\n\n// https://stackoverflow.com/a/27865285\nfunction decimalPlaces(a: number) {\n if (!isFinite(a)) {\n return 0;\n }\n\n let e = 1,\n p = 0;\n while (Math.round(a * e) / e !== a) {\n e *= 10;\n p++;\n }\n\n return p;\n}\n\nfunction isEmpty(v: any) {\n return v === '' || v == null;\n}\n\nfunction isObject(v: any) {\n return v != null && typeof v === 'object' && !Array.isArray(v);\n}\n\nfunction isInteger(value: any) {\n return Number.isInteger ? Number.isInteger(value) : typeof value === 'number' && Math.floor(value) === value;\n}\n\nfunction isConst(schema: JSONSchema7Definition) {\n return typeof schema === 'object' && (schema.hasOwnProperty('const') || (schema.enum && schema.enum.length === 1));\n}\n\nfunction toNumber(value: string | number | null) {\n if (value === '' || value === undefined) {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n const val = parseFloat(value);\n return !isNaN(val) ? val : value;\n}\n\nfunction totalMatchedFields(field: FormlyFieldConfig): number {\n if (!field.fieldGroup) {\n return hasKey(field) && getFieldValue(field) !== undefined ? 1 : 0;\n }\n\n const total = field.fieldGroup.reduce((s, f) => totalMatchedFields(f) + s, 0);\n if (total === 0 && hasKey(field)) {\n const value = getFieldValue(field);\n if (\n value === null ||\n (value !== undefined && ((field.fieldArray && Array.isArray(value)) || (!field.fieldArray && isObject(value))))\n ) {\n return 1;\n }\n }\n\n return total;\n}\n\ninterface IOptions extends FormlyJsonschemaOptions {\n schema: FormlyJSONSchema7;\n resetOnHide?: boolean;\n shareFormControl?: boolean;\n ignoreDefault?: boolean;\n strict?: boolean;\n readOnly?: boolean;\n key?: FormlyFieldConfig['key'];\n isOptional?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyJsonschema {\n toFieldConfig(schema: JSONSchema7, options?: FormlyJsonschemaOptions): FormlyFieldConfig {\n schema = clone(schema);\n return this._toFieldConfig(schema, { schema, ...(options || {}) });\n }\n\n private _toFieldConfig(schema: FormlyJSONSchema7, { key, ...options }: IOptions): FormlyFieldConfig {\n schema = this.resolveSchema(schema, options);\n const types = this.guessSchemaType(schema);\n\n let field: FormlyFieldConfig & { shareFormControl?: boolean } = {\n type: types[0],\n defaultValue: schema.default,\n props: {\n label: schema.title,\n readonly: schema.readOnly,\n description: schema.description,\n },\n };\n\n if (key != null) {\n field.key = key;\n }\n\n if (!options.ignoreDefault && (schema.readOnly || options.readOnly)) {\n field.props.disabled = true;\n options = { ...options, readOnly: true };\n }\n\n if (options.resetOnHide) {\n field.resetOnHide = true;\n }\n\n if (key && options.strict) {\n this.addValidator(field, 'type', (c: AbstractControl, f: FormlyFieldConfig) => {\n const value = getFieldValue(f);\n if (value != null) {\n switch (field.type) {\n case 'string': {\n return typeof value === 'string';\n }\n case 'integer': {\n return isInteger(value);\n }\n case 'number': {\n return typeof value === 'number';\n }\n case 'object': {\n return isObject(value);\n }\n case 'array': {\n return Array.isArray(value);\n }\n }\n }\n\n return true;\n });\n }\n\n if (options.shareFormControl === false) {\n field.shareFormControl = false;\n }\n\n if (options.ignoreDefault) {\n delete field.defaultValue;\n }\n\n this.addValidator(field, 'type', {\n schemaType: types,\n expression: ({ value }: AbstractControl) => {\n if (value === undefined) {\n return true;\n }\n\n if (value === null && types.indexOf('null') !== -1) {\n return true;\n }\n\n switch (types[0]) {\n case 'null': {\n return typeof value === null;\n }\n case 'string': {\n return typeof value === 'string';\n }\n case 'integer': {\n return isInteger(value);\n }\n case 'number': {\n return typeof value === 'number';\n }\n case 'object': {\n return isObject(value);\n }\n case 'array': {\n return Array.isArray(value);\n }\n }\n\n return true;\n },\n });\n\n switch (field.type) {\n case 'number':\n case 'integer': {\n field.parsers = [\n (v: string | number) => {\n v = toNumber(v);\n\n if (\n v === null &&\n typeof document !== 'undefined' &&\n field.id &&\n !document.querySelector<HTMLInputElement>(`#${field.id}`)?.validity?.badInput\n ) {\n v = undefined;\n }\n\n if (v !== field.formControl.value) {\n field.formControl.setValue(v, { emitModelToViewChange: false });\n }\n\n return v;\n },\n ];\n\n if (schema.hasOwnProperty('minimum')) {\n field.props.min = schema.minimum;\n }\n\n if (schema.hasOwnProperty('maximum')) {\n field.props.max = schema.maximum;\n }\n\n if (schema.hasOwnProperty('exclusiveMinimum')) {\n field.props.exclusiveMinimum = schema.exclusiveMinimum;\n this.addValidator(\n field,\n 'exclusiveMinimum',\n ({ value }: AbstractControl) => isEmpty(value) || value > schema.exclusiveMinimum,\n );\n }\n\n if (schema.hasOwnProperty('exclusiveMaximum')) {\n field.props.exclusiveMaximum = schema.exclusiveMaximum;\n this.addValidator(\n field,\n 'exclusiveMaximum',\n ({ value }: AbstractControl) => isEmpty(value) || value < schema.exclusiveMaximum,\n );\n }\n\n if (schema.hasOwnProperty('multipleOf')) {\n field.props.step = schema.multipleOf;\n this.addValidator(field, 'multipleOf', ({ value }: AbstractControl) => {\n if (isEmpty(value) || typeof value !== 'number' || value === 0 || schema.multipleOf <= 0) {\n return true;\n }\n\n // https://github.com/ajv-validator/ajv/issues/652#issue-283610859\n const multiplier = Math.pow(10, decimalPlaces(schema.multipleOf));\n return Math.round(value * multiplier) % Math.round(schema.multipleOf * multiplier) === 0;\n });\n }\n break;\n }\n case 'string': {\n field.parsers = [\n (v) => {\n if (types.indexOf('null') !== -1) {\n v = isEmpty(v) ? null : v;\n } else if (!field.props.required) {\n v = v === '' ? undefined : v;\n }\n\n return v;\n },\n ];\n\n ['minLength', 'maxLength', 'pattern'].forEach((prop) => {\n if (schema.hasOwnProperty(prop)) {\n field.props[prop] = (schema as any)[prop];\n }\n });\n break;\n }\n case 'object': {\n if (!field.fieldGroup) {\n field.fieldGroup = [];\n }\n\n const { propDeps, schemaDeps } = this.resolveDependencies(schema);\n Object.keys(schema.properties || {}).forEach((property) => {\n const isRequired = Array.isArray(schema.required) && schema.required.indexOf(property) !== -1;\n const f = this._toFieldConfig(<JSONSchema7>schema.properties[property], {\n ...options,\n key: property,\n isOptional: options.isOptional || !isRequired,\n });\n\n field.fieldGroup.push(f);\n if (isRequired || propDeps[property]) {\n f.expressions = {\n ...(f.expressions || {}),\n 'props.required': (f) => {\n let parent = f.parent;\n const model = f.fieldGroup && f.key != null ? parent.model : f.model;\n while (parent.key == null && parent.parent) {\n parent = parent.parent;\n }\n\n const required = parent && parent.props ? parent.props.required : false;\n if (!model && !required) {\n return false;\n }\n\n if (Array.isArray(schema.required) && schema.required.indexOf(property) !== -1) {\n return true;\n }\n\n return propDeps[property] && f.model && propDeps[property].some((k) => !isEmpty(f.model[k]));\n },\n };\n }\n\n if (schemaDeps[property]) {\n const getConstValue = (s: JSONSchema7) => {\n return s.hasOwnProperty('const') ? s.const : s.enum[0];\n };\n\n const oneOfSchema = schemaDeps[property].oneOf as JSONSchema7[];\n if (\n oneOfSchema &&\n oneOfSchema.every((o) => o.properties && o.properties[property] && isConst(o.properties[property]))\n ) {\n oneOfSchema.forEach((oneOfSchemaItem) => {\n const { [property]: constSchema, ...properties } = oneOfSchemaItem.properties;\n field.fieldGroup.push({\n ...this._toFieldConfig(\n { ...oneOfSchemaItem, properties },\n { ...options, shareFormControl: false, resetOnHide: true },\n ),\n expressions: {\n hide: (f) => !f.model || getConstValue(constSchema as JSONSchema7) !== f.model[property],\n },\n });\n });\n } else {\n field.fieldGroup.push({\n ...this._toFieldConfig(schemaDeps[property], options),\n expressions: {\n hide: (f) => !f.model || isEmpty(f.model[property]),\n },\n });\n }\n }\n });\n\n if (schema.oneOf) {\n field.fieldGroup.push(\n this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.oneOf, { ...options, shareFormControl: false }),\n );\n }\n\n if (schema.anyOf) {\n field.fieldGroup.push(this.resolveMultiSchema('anyOf', <JSONSchema7[]>schema.anyOf, options));\n }\n break;\n }\n case 'array': {\n if (schema.hasOwnProperty('minItems')) {\n field.props.minItems = schema.minItems;\n this.addValidator(field, 'minItems', (c: AbstractControl, f: FormlyFieldConfig) => {\n const value = getFieldValue(f);\n return isEmpty(value) || value.length >= schema.minItems;\n });\n\n if (!options.isOptional && schema.minItems > 0 && field.defaultValue === undefined) {\n field.defaultValue = Array.from(new Array(schema.minItems));\n }\n }\n if (schema.hasOwnProperty('maxItems')) {\n field.props.maxItems = schema.maxItems;\n this.addValidator(field, 'maxItems', (c: AbstractControl, f: FormlyFieldConfig) => {\n const value = getFieldValue(f);\n return isEmpty(value) || value.length <= schema.maxItems;\n });\n }\n if (schema.hasOwnProperty('uniqueItems')) {\n field.props.uniqueItems = schema.uniqueItems;\n this.addValidator(field, 'uniqueItems', (c: AbstractControl, f: FormlyFieldConfig) => {\n const value = getFieldValue(f);\n if (isEmpty(value) || !schema.uniqueItems) {\n return true;\n }\n\n const uniqueItems = Array.from(\n new Set(\n value.map((v: any) =>\n JSON.stringify(v, (k, o) => {\n if (isObject(o)) {\n return Object.keys(o)\n .sort()\n .reduce((obj: any, key) => {\n obj[key] = o[key];\n return obj;\n }, {});\n }\n\n return o;\n }),\n ),\n ),\n );\n\n return uniqueItems.length === value.length;\n });\n }\n\n // resolve items schema needed for isEnum check\n if (schema.items && !Array.isArray(schema.items)) {\n schema.items = this.resolveSchema(<JSONSchema7>schema.items, options);\n }\n\n // TODO: remove isEnum check once adding an option to skip extension\n if (!this.isEnum(schema)) {\n field.fieldArray = (root: FormlyFieldConfig) => {\n const items = schema.items as JSONSchema7 | JSONSchema7[];\n if (!Array.isArray(items)) {\n if (!items) {\n return {};\n }\n\n const isMultiSchema = items.oneOf || items.anyOf;\n\n // When items is a single schema, the additionalItems keyword is meaningless, and it should not be used.\n const f = this._toFieldConfig(\n items,\n isMultiSchema ? { ...options, key: `${root.fieldGroup.length}` } : options,\n );\n\n if (isMultiSchema && !hasKey(f)) {\n f.key = null;\n }\n\n f.props.required = true;\n\n return f;\n }\n\n const length = root.fieldGroup ? root.fieldGroup.length : 0;\n const itemSchema = items[length] ? items[length] : schema.additionalItems;\n const f = itemSchema ? this._toFieldConfig(<JSONSchema7>itemSchema, options) : {};\n if (f.props) {\n f.props.required = true;\n }\n if (items[length]) {\n f.props.removable = false;\n }\n\n return f;\n };\n }\n break;\n }\n }\n\n if (schema.hasOwnProperty('const')) {\n field.props.const = schema.const;\n this.addValidator(field, 'const', ({ value }: AbstractControl) => value === schema.const);\n if (!field.type) {\n field.defaultValue = schema.const;\n }\n }\n\n if (this.isEnum(schema)) {\n const enumOptions = this.toEnumOptions(schema);\n const multiple = field.type === 'array';\n\n field.type = 'enum';\n field.props.multiple = multiple;\n field.props.options = enumOptions;\n\n const enumValues = enumOptions.map((o) => o.value);\n this.addValidator(field, 'enum', ({ value }: AbstractControl) => {\n if (value === undefined) {\n return true;\n }\n\n if (multiple) {\n return Array.isArray(value) ? value.every((o) => enumValues.includes(o)) : false;\n }\n\n return enumValues.includes(value);\n });\n }\n\n if (schema.oneOf && !field.type) {\n delete field.key;\n field.fieldGroup = [\n this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.oneOf, { ...options, key, shareFormControl: false }),\n ];\n }\n\n if (schema.oneOf && !field.type) {\n delete field.key;\n field.fieldGroup = [\n this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.oneOf, { ...options, key, shareFormControl: false }),\n ];\n }\n\n // map in possible formlyConfig options from the widget property\n if (schema.widget?.formlyConfig) {\n field = this.mergeFields(field, schema.widget.formlyConfig);\n }\n\n field.templateOptions = field.props;\n // if there is a map function passed in, use it to allow the user to\n // further customize how fields are being mapped\n return options.map ? options.map(field, schema) : field;\n }\n\n private resolveSchema(schema: JSONSchema7, options: IOptions): JSONSchema7 {\n if (schema && schema.$ref) {\n schema = this.resolveDefinition(schema, options);\n }\n\n if (schema && schema.allOf) {\n schema = this.resolveAllOf(schema, options);\n }\n\n return schema;\n }\n\n private resolveAllOf({ allOf, ...baseSchema }: FormlyJSONSchema7, options: IOptions) {\n if (!allOf.length) {\n throw Error(`allOf array can not be empty ${allOf}.`);\n }\n\n return (allOf as FormlyJSONSchema7[]).reduce((base: FormlyJSONSchema7, schema: FormlyJSONSchema7) => {\n schema = this.resolveSchema(schema, options);\n if (base.required && schema.required) {\n base.required = [...base.required, ...schema.required];\n }\n\n if (schema.uniqueItems) {\n base.uniqueItems = schema.uniqueItems;\n }\n\n // resolve to min value\n (\n ['maxLength', 'maximum', 'exclusiveMaximum', 'maxItems', 'maxProperties'] as (keyof FormlyJSONSchema7)[]\n ).forEach((prop) => {\n if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n (base as any)[prop] = base[prop] < schema[prop] ? base[prop] : schema[prop];\n }\n });\n\n // resolve to max value\n (\n ['minLength', 'minimum', 'exclusiveMinimum', 'minItems', 'minProperties'] as (keyof FormlyJSONSchema7)[]\n ).forEach((prop) => {\n if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n (base as any)[prop] = base[prop] > schema[prop] ? base[prop] : schema[prop];\n }\n });\n\n return reverseDeepMerge(base, schema);\n }, baseSchema);\n }\n\n private resolveMultiSchema(mode: 'oneOf' | 'anyOf', schemas: JSONSchema7[], options: IOptions): FormlyFieldConfig {\n return {\n type: 'multischema',\n fieldGroup: [\n {\n type: 'enum',\n defaultValue: -1,\n props: {\n multiple: mode === 'anyOf',\n options: schemas.map((s, i) => ({ label: s.title, value: i, disabled: s.readOnly })),\n },\n hooks: {\n onInit: (f) => f.formControl.valueChanges.pipe(tap(() => f.options.detectChanges(f.parent))),\n },\n },\n {\n fieldGroup: schemas.map((s, i) => ({\n ...this._toFieldConfig(s, { ...options, resetOnHide: true }),\n expressions: {\n hide: (f, forceUpdate?: boolean) => {\n const control = f.parent.parent.fieldGroup[0].formControl;\n if (control.value === -1 || forceUpdate) {\n let value = f.parent.fieldGroup\n .map(\n (f, i) =>\n [f, i, this.isFieldValid(f, i, schemas, options)] as [FormlyFieldConfig, number, boolean],\n )\n .sort(([f1, , f1Valid], [f2, , f2Valid]) => {\n if (f1Valid !== f2Valid) {\n return f2Valid ? 1 : -1;\n }\n\n const matchedFields1 = totalMatchedFields(f1);\n const matchedFields2 = totalMatchedFields(f2);\n if (matchedFields1 === matchedFields2) {\n if (f1.props.disabled === f2.props.disabled) {\n return 0;\n }\n\n return matchedFields2 > matchedFields1 ? 1 : -1;\n }\n\n return matchedFields2 > matchedFields1 ? 1 : -1;\n })\n .map(([, i]) => i);\n\n if (mode === 'anyOf') {\n const definedValue = value.filter((i) => totalMatchedFields(f.parent.fieldGroup[i]));\n value = definedValue.length > 0 ? definedValue : [value[0] || 0];\n }\n\n value = value.length > 0 ? value : [0];\n control.setValue(mode === 'anyOf' ? value : value[0]);\n }\n\n return Array.isArray(control.value) ? control.value.indexOf(i) === -1 : control.value !== i;\n },\n },\n })),\n },\n ],\n };\n }\n\n private resolveDefinition(schema: FormlyJSONSchema7, options: IOptions): FormlyJSONSchema7 {\n const [uri, pointer] = schema.$ref.split('#/');\n if (uri) {\n throw Error(`Remote schemas for ${schema.$ref} not supported yet.`);\n }\n\n const definition = !pointer\n ? null\n : pointer\n .split('/')\n .reduce((def, path) => (def?.hasOwnProperty(path) ? (def as any)[path] : null), options.schema);\n\n if (!definition) {\n throw Error(`Cannot find a definition for ${schema.$ref}.`);\n }\n\n if (definition.$ref) {\n return this.resolveDefinition(definition, options);\n }\n\n return {\n ...definition,\n ...['title', 'description', 'default', 'widget'].reduce((annotation, p) => {\n if (schema.hasOwnProperty(p)) {\n annotation[p] = (schema as any)[p];\n }\n\n return annotation;\n }, {} as any),\n };\n }\n\n private resolveDependencies(schema: JSONSchema7) {\n const propDeps: { [id: string]: string[] } = {};\n const schemaDeps: { [id: string]: JSONSchema7 } = {};\n\n Object.keys(schema.dependencies || {}).forEach((prop) => {\n const dependency = schema.dependencies[prop] as JSONSchema7;\n if (Array.isArray(dependency)) {\n // Property dependencies\n dependency.forEach((dep) => {\n if (!propDeps[dep]) {\n propDeps[dep] = [prop];\n } else {\n propDeps[dep].push(prop);\n }\n });\n } else {\n // schema dependencies\n schemaDeps[prop] = dependency;\n }\n });\n\n return { propDeps, schemaDeps };\n }\n\n private guessSchemaType(schema: JSONSchema7) {\n const type = schema?.type;\n if (!type && schema?.properties) {\n return ['object'];\n }\n\n if (Array.isArray(type)) {\n if (type.length === 1) {\n return type;\n }\n\n if (type.length === 2 && type.indexOf('null') !== -1) {\n return type.sort((t1) => (t1 == 'null' ? 1 : -1));\n }\n\n return type;\n }\n\n return type ? [type] : [];\n }\n\n private addValidator(field: FormlyFieldConfig, name: string, validator: FormlyFieldConfig['validators']) {\n field.validators = field.validators || {};\n field.validators[name] = validator;\n }\n\n private isEnum(schema: JSONSchema7): boolean {\n return (\n !!schema.enum ||\n (schema.anyOf && (schema.anyOf as JSONSchema7[]).every(isConst)) ||\n (schema.oneOf && (schema.oneOf as JSONSchema7[]).every(isConst)) ||\n (schema.uniqueItems && schema.items && !Array.isArray(schema.items) && this.isEnum(<JSONSchema7>schema.items))\n );\n }\n\n private toEnumOptions(schema: JSONSchema7): { value: any; label: any }[] {\n if (schema.enum) {\n return schema.enum.map((value) => ({ value, label: value }));\n }\n\n const toEnum = (s: JSONSchema7) => {\n const value = s.hasOwnProperty('const') ? s.const : s.enum[0];\n const option: any = { value, label: s.title || value };\n if (s.readOnly) {\n option.disabled = true;\n }\n\n return option;\n };\n\n if (schema.anyOf) {\n return (schema.anyOf as JSONSchema7[]).map(toEnum);\n }\n\n if (schema.oneOf) {\n return (schema.oneOf as JSONSchema7[]).map(toEnum);\n }\n\n return this.toEnumOptions(<JSONSchema7>schema.items);\n }\n\n private isFieldValid(\n root: FormlyFieldConfig & { _schemasFields?: { [key: number]: FormlyFieldConfig } },\n i: number,\n schemas: JSONSchema7[],\n options: IOptions,\n ): boolean {\n const schema = schemas[i] as JSONSchema7 & { _field?: FormlyFieldConfig };\n if (!schema._field) {\n Object.defineProperty(schema, '_field', { enumerable: false, writable: true, configurable: true });\n }\n\n let field = schema._field;\n let model = root.model ? root.model : root.fieldArray ? [] : {};\n if (root.model && hasKey(root)) {\n model = { [Array.isArray(root.key) ? root.key.join('.') : root.key]: getFieldValue(root) };\n }\n\n model = clone(model);\n if (!field) {\n field = schema._field = root.options.build({\n form: Array.isArray(model) ? new FormArray([]) : new FormGroup({}),\n fieldGroup: [\n this._toFieldConfig(schema, {\n ...options,\n resetOnHide: true,\n ignoreDefault: true,\n map: null,\n strict: true,\n }),\n ],\n model,\n options: {},\n });\n } else {\n (field as any).model = model;\n root.options.build(field);\n }\n\n return field.form.valid;\n }\n\n private mergeFields(f1: any, f2: any) {\n for (let prop in f2) {\n const f1Prop = prop === 'templateOptions' ? 'props' : prop;\n if (isObject(f1[f1Prop]) && isObject(f2[prop])) {\n f1[f1Prop] = this.mergeFields(f1[f1Prop], f2[prop]);\n } else if (f2[prop] != null) {\n f1[f1Prop] = f2[prop];\n }\n }\n\n return f1;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["hasKey","getFieldValue","clone","reverseDeepMerge"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-formly-core-json-schema.mjs","sources":["../../../../src/core/json-schema/src/formly-json-schema.service.ts","../../../../src/core/json-schema/src/ngx-formly-core-json-schema.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { JSONSchema7, JSONSchema7Definition } from 'json-schema';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport {\n ɵreverseDeepMerge as reverseDeepMerge,\n ɵgetFieldValue as getFieldValue,\n ɵclone as clone,\n ɵhasKey as hasKey,\n} from '@ngx-formly/core';\nimport { tap } from 'rxjs/operators';\n\nexport interface FormlyJsonschemaOptions {\n /**\n * allows to intercept the mapping, taking the already mapped\n * formly field and the original JSONSchema source from which it\n * was mapped.\n */\n map?: (mappedField: FormlyFieldConfig, mapSource: JSONSchema7) => FormlyFieldConfig;\n}\n\ninterface FormlyJSONSchema7 extends JSONSchema7 {\n widget?: { formlyConfig: FormlyFieldConfig };\n}\n\n// https://stackoverflow.com/a/27865285\nfunction decimalPlaces(a: number) {\n if (!isFinite(a)) {\n return 0;\n }\n\n let e = 1,\n p = 0;\n while (Math.round(a * e) / e !== a) {\n e *= 10;\n p++;\n }\n\n return p;\n}\n\nfunction isEmpty(v: any) {\n return v === '' || v == null;\n}\n\nfunction isObject(v: any) {\n return v != null && typeof v === 'object' && !Array.isArray(v);\n}\n\nfunction isInteger(value: any) {\n return Number.isInteger ? Number.isInteger(value) : typeof value === 'number' && Math.floor(value) === value;\n}\n\nfunction isConst(schema: JSONSchema7Definition) {\n return typeof schema === 'object' && (schema.hasOwnProperty('const') || (schema.enum && schema.enum.length === 1));\n}\n\nfunction toNumber(value: string | number | null) {\n if (value === '' || value === undefined) {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n const val = parseFloat(value);\n return !isNaN(val) ? val : value;\n}\n\nfunction totalMatchedFields(field: FormlyFieldConfig): number {\n if (!field.fieldGroup) {\n return hasKey(field) && getFieldValue(field) !== undefined ? 1 : 0;\n }\n\n const total = field.fieldGroup.reduce((s, f) => totalMatchedFields(f) + s, 0);\n if (total === 0 && hasKey(field)) {\n const value = getFieldValue(field);\n if (\n value === null ||\n (value !== undefined && ((field.fieldArray && Array.isArray(value)) || (!field.fieldArray && isObject(value))))\n ) {\n return 1;\n }\n }\n\n return total;\n}\n\ninterface IOptions extends FormlyJsonschemaOptions {\n schema: FormlyJSONSchema7;\n resetOnHide?: boolean;\n shareFormControl?: boolean;\n ignoreDefault?: boolean;\n strict?: boolean;\n readOnly?: boolean;\n key?: FormlyFieldConfig['key'];\n isOptional?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyJsonschema {\n toFieldConfig(schema: JSONSchema7, options?: FormlyJsonschemaOptions): FormlyFieldConfig {\n schema = clone(schema);\n return this._toFieldConfig(schema, { schema, ...(options || {}) });\n }\n\n private _toFieldConfig(schema: FormlyJSONSchema7, { key, isOptional, ...options }: IOptions): FormlyFieldConfig {\n schema = this.resolveSchema(schema, options);\n const types = this.guessSchemaType(schema);\n\n let field: FormlyFieldConfig & { shareFormControl?: boolean } = {\n type: types[0],\n defaultValue: schema.default,\n props: {\n label: schema.title,\n readonly: schema.readOnly,\n description: schema.description,\n },\n };\n\n if (key != null) {\n field.key = key;\n }\n\n if (!options.ignoreDefault && (schema.readOnly || options.readOnly)) {\n field.props.disabled = true;\n options = { ...options, readOnly: true };\n }\n\n if (options.resetOnHide) {\n field.resetOnHide = true;\n }\n\n if (options.shareFormControl === false) {\n field.shareFormControl = false;\n }\n\n if (field.defaultValue === undefined && types.length === 1 && isOptional === false) {\n switch (types[0]) {\n case 'null': {\n field.defaultValue = null;\n break;\n }\n case 'string': {\n field.defaultValue = '';\n break;\n }\n case 'object': {\n field.defaultValue = {};\n break;\n }\n case 'array': {\n field.defaultValue = schema.minItems > 0 ? Array.from(new Array(schema.minItems)) : [];\n break;\n }\n }\n }\n\n if (options.ignoreDefault) {\n delete field.defaultValue;\n }\n\n this.addValidator(field, 'type', {\n schemaType: types,\n expression: ({ value }: AbstractControl) => {\n if (value === undefined) {\n return true;\n }\n\n if (value === null && types.indexOf('null') !== -1) {\n return true;\n }\n\n switch (types[0]) {\n case 'null': {\n return typeof value === null;\n }\n case 'string': {\n return typeof value === 'string';\n }\n case 'integer': {\n return isInteger(value);\n }\n case 'number': {\n return typeof value === 'number';\n }\n case 'object': {\n return isObject(value);\n }\n case 'array': {\n return Array.isArray(value);\n }\n }\n\n return true;\n },\n });\n\n switch (field.type) {\n case 'number':\n case 'integer': {\n field.parsers = [\n (v: string | number, f: FormlyFieldConfig) => {\n v = toNumber(v);\n\n if (v === null && f) {\n const input =\n typeof document !== 'undefined' && f.id\n ? document.querySelector<HTMLInputElement>(`#${f.id}`)\n : undefined;\n if (input && !input.validity.badInput) {\n v = undefined;\n }\n\n if (v !== f.formControl.value) {\n f.formControl.setValue(v, { emitModelToViewChange: false });\n }\n }\n\n return v;\n },\n ] as ((value: any, f?: FormlyFieldConfig) => any)[];\n\n if (schema.hasOwnProperty('minimum')) {\n field.props.min = schema.minimum;\n }\n\n if (schema.hasOwnProperty('maximum')) {\n field.props.max = schema.maximum;\n }\n\n if (schema.hasOwnProperty('exclusiveMinimum')) {\n field.props.exclusiveMinimum = schema.exclusiveMinimum;\n this.addValidator(\n field,\n 'exclusiveMinimum',\n ({ value }: AbstractControl) => isEmpty(value) || value > schema.exclusiveMinimum,\n );\n }\n\n if (schema.hasOwnProperty('exclusiveMaximum')) {\n field.props.exclusiveMaximum = schema.exclusiveMaximum;\n this.addValidator(\n field,\n 'exclusiveMaximum',\n ({ value }: AbstractControl) => isEmpty(value) || value < schema.exclusiveMaximum,\n );\n }\n\n if (schema.hasOwnProperty('multipleOf')) {\n field.props.step = schema.multipleOf;\n this.addValidator(field, 'multipleOf', ({ value }: AbstractControl) => {\n if (isEmpty(value) || typeof value !== 'number' || value === 0 || schema.multipleOf <= 0) {\n return true;\n }\n\n // https://github.com/ajv-validator/ajv/issues/652#issue-283610859\n const multiplier = Math.pow(10, decimalPlaces(schema.multipleOf));\n return Math.round(value * multiplier) % Math.round(schema.multipleOf * multiplier) === 0;\n });\n }\n break;\n }\n case 'string': {\n field.parsers = [\n (v, f: FormlyFieldConfig) => {\n if (types.indexOf('null') !== -1) {\n v = isEmpty(v) ? null : v;\n } else if (f && !f.props.required) {\n v = v === '' ? undefined : v;\n }\n\n return v;\n },\n ] as ((value: any, f?: FormlyFieldConfig) => any)[];\n\n ['minLength', 'maxLength', 'pattern'].forEach((prop) => {\n if (schema.hasOwnProperty(prop)) {\n field.props[prop] = (schema as any)[prop];\n }\n });\n break;\n }\n case 'object': {\n if (!field.fieldGroup) {\n field.fieldGroup = [];\n }\n\n const { propDeps, schemaDeps } = this.resolveDependencies(schema);\n Object.keys(schema.properties || {}).forEach((property) => {\n const isRequired = Array.isArray(schema.required) && schema.required.indexOf(property) !== -1;\n const f = this._toFieldConfig(<JSONSchema7>schema.properties[property], {\n ...options,\n key: property,\n isOptional: isOptional || !isRequired,\n });\n\n field.fieldGroup.push(f);\n if (isRequired || propDeps[property]) {\n f.expressions = {\n ...(f.expressions || {}),\n 'props.required': (f) => {\n let parent = f.parent;\n const model = f.fieldGroup && f.key != null ? parent.model : f.model;\n while (parent.key == null && parent.parent) {\n parent = parent.parent;\n }\n\n const required = parent && parent.props ? parent.props.required : false;\n if (!model && !required) {\n return false;\n }\n\n if (Array.isArray(schema.required) && schema.required.indexOf(property) !== -1) {\n return true;\n }\n\n return propDeps[property] && f.model && propDeps[property].some((k) => !isEmpty(f.model[k]));\n },\n };\n }\n\n if (schemaDeps[property]) {\n const getConstValue = (s: JSONSchema7) => {\n return s.hasOwnProperty('const') ? s.const : s.enum[0];\n };\n\n const oneOfSchema = schemaDeps[property].oneOf as JSONSchema7[];\n if (\n oneOfSchema &&\n oneOfSchema.every((o) => o.properties && o.properties[property] && isConst(o.properties[property]))\n ) {\n oneOfSchema.forEach((oneOfSchemaItem) => {\n const { [property]: constSchema, ...properties } = oneOfSchemaItem.properties;\n field.fieldGroup.push({\n ...this._toFieldConfig(\n { ...oneOfSchemaItem, properties },\n { ...options, shareFormControl: false, resetOnHide: true },\n ),\n expressions: {\n hide: (f) => !f.model || getConstValue(constSchema as JSONSchema7) !== f.model[property],\n },\n });\n });\n } else {\n field.fieldGroup.push({\n ...this._toFieldConfig(schemaDeps[property], options),\n expressions: {\n hide: (f) => !f.model || isEmpty(f.model[property]),\n },\n });\n }\n }\n });\n\n if (schema.oneOf) {\n field.fieldGroup.push(\n this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.oneOf, { ...options, shareFormControl: false }),\n );\n }\n\n if (schema.anyOf) {\n field.fieldGroup.push(this.resolveMultiSchema('anyOf', <JSONSchema7[]>schema.anyOf, options));\n }\n break;\n }\n case 'array': {\n if (schema.hasOwnProperty('minItems')) {\n field.props.minItems = schema.minItems;\n this.addValidator(field, 'minItems', (c: AbstractControl, f: FormlyFieldConfig) => {\n const value = getFieldValue(f);\n return isEmpty(value) || value.length >= schema.minItems;\n });\n if (!isOptional && schema.minItems > 0 && field.defaultValue === undefined) {\n field.defaultValue = Array.from(new Array(schema.minItems));\n }\n }\n if (schema.hasOwnProperty('maxItems')) {\n field.props.maxItems = schema.maxItems;\n this.addValidator(field, 'maxItems', (c: AbstractControl, f: FormlyFieldConfig) => {\n const value = getFieldValue(f);\n return isEmpty(value) || value.length <= schema.maxItems;\n });\n }\n if (schema.hasOwnProperty('uniqueItems')) {\n field.props.uniqueItems = schema.uniqueItems;\n this.addValidator(field, 'uniqueItems', (c: AbstractControl, f: FormlyFieldConfig) => {\n const value = getFieldValue(f);\n if (isEmpty(value) || !schema.uniqueItems) {\n return true;\n }\n\n const uniqueItems = Array.from(\n new Set(\n value.map((v: any) =>\n JSON.stringify(v, (k, o) => {\n if (isObject(o)) {\n return Object.keys(o)\n .sort()\n .reduce((obj: any, key) => {\n obj[key] = o[key];\n return obj;\n }, {});\n }\n\n return o;\n }),\n ),\n ),\n );\n\n return uniqueItems.length === value.length;\n });\n }\n\n // resolve items schema needed for isEnum check\n if (schema.items && !Array.isArray(schema.items)) {\n schema.items = this.resolveSchema(<JSONSchema7>schema.items, options);\n }\n\n // TODO: remove isEnum check once adding an option to skip extension\n if (!this.isEnum(schema)) {\n field.fieldArray = (root: FormlyFieldConfig) => {\n const items = schema.items as JSONSchema7 | JSONSchema7[];\n if (!Array.isArray(items)) {\n if (!items) {\n return {};\n }\n\n const isMultiSchema = items.oneOf || items.anyOf;\n\n // When items is a single schema, the additionalItems keyword is meaningless, and it should not be used.\n const f = this._toFieldConfig(\n items,\n isMultiSchema\n ? { ...options, key: `${root.fieldGroup.length}`, isOptional: false }\n : { ...options, isOptional: false },\n );\n\n if (isMultiSchema && !hasKey(f)) {\n f.key = null;\n }\n\n return f;\n }\n\n const length = root.fieldGroup ? root.fieldGroup.length : 0;\n const itemSchema = items[length] ? items[length] : schema.additionalItems;\n const f = itemSchema ? this._toFieldConfig(<JSONSchema7>itemSchema, options) : {};\n if (f.props) {\n f.props.required = true;\n }\n if (items[length]) {\n f.props.removable = false;\n }\n\n return f;\n };\n }\n break;\n }\n }\n\n if (schema.hasOwnProperty('const')) {\n field.props.const = schema.const;\n this.addValidator(field, 'const', ({ value }: AbstractControl) => value === schema.const);\n if (!field.type) {\n field.defaultValue = schema.const;\n }\n }\n\n if (this.isEnum(schema)) {\n const enumOptions = this.toEnumOptions(schema);\n const multiple = field.type === 'array';\n\n field.type = 'enum';\n field.props.multiple = multiple;\n field.props.options = enumOptions;\n\n const enumValues = enumOptions.map((o) => o.value);\n this.addValidator(field, 'enum', ({ value }: AbstractControl) => {\n if (value === undefined) {\n return true;\n }\n\n if (multiple) {\n return Array.isArray(value) ? value.every((o) => enumValues.includes(o)) : false;\n }\n\n return enumValues.includes(value);\n });\n }\n\n if (schema.oneOf && !field.type) {\n delete field.key;\n field.fieldGroup = [\n this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.oneOf, { ...options, key, shareFormControl: false }),\n ];\n }\n\n if (schema.oneOf && !field.type) {\n delete field.key;\n field.fieldGroup = [\n this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.oneOf, { ...options, key, shareFormControl: false }),\n ];\n }\n\n // map in possible formlyConfig options from the widget property\n if (schema.widget?.formlyConfig) {\n field = this.mergeFields(field, schema.widget.formlyConfig);\n }\n\n field.templateOptions = field.props;\n // if there is a map function passed in, use it to allow the user to\n // further customize how fields are being mapped\n return options.map ? options.map(field, schema) : field;\n }\n\n private resolveSchema(schema: JSONSchema7, options: IOptions): JSONSchema7 {\n if (schema && schema.$ref) {\n schema = this.resolveDefinition(schema, options);\n }\n\n if (schema && schema.allOf) {\n schema = this.resolveAllOf(schema, options);\n }\n\n return schema;\n }\n\n private resolveAllOf({ allOf, ...baseSchema }: FormlyJSONSchema7, options: IOptions) {\n if (!allOf.length) {\n throw Error(`allOf array can not be empty ${allOf}.`);\n }\n\n return (allOf as FormlyJSONSchema7[]).reduce((base: FormlyJSONSchema7, schema: FormlyJSONSchema7) => {\n schema = this.resolveSchema(schema, options);\n if (base.required && schema.required) {\n base.required = [...base.required, ...schema.required];\n }\n\n if (schema.uniqueItems) {\n base.uniqueItems = schema.uniqueItems;\n }\n\n // resolve to min value\n (\n ['maxLength', 'maximum', 'exclusiveMaximum', 'maxItems', 'maxProperties'] as (keyof FormlyJSONSchema7)[]\n ).forEach((prop) => {\n if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n (base as any)[prop] = base[prop] < schema[prop] ? base[prop] : schema[prop];\n }\n });\n\n // resolve to max value\n (\n ['minLength', 'minimum', 'exclusiveMinimum', 'minItems', 'minProperties'] as (keyof FormlyJSONSchema7)[]\n ).forEach((prop) => {\n if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n (base as any)[prop] = base[prop] > schema[prop] ? base[prop] : schema[prop];\n }\n });\n\n return reverseDeepMerge(base, schema);\n }, baseSchema);\n }\n\n private resolveMultiSchema(mode: 'oneOf' | 'anyOf', schemas: JSONSchema7[], options: IOptions): FormlyFieldConfig {\n return {\n type: 'multischema',\n fieldGroup: [\n {\n type: 'enum',\n defaultValue: -1,\n props: {\n multiple: mode === 'anyOf',\n options: schemas.map((s, i) => ({ label: s.title, value: i, disabled: s.readOnly })),\n },\n hooks: {\n onInit: (f) => f.formControl.valueChanges.pipe(tap(() => f.options.detectChanges(f.parent))),\n },\n },\n {\n fieldGroup: schemas.map((s, i) => ({\n ...this._toFieldConfig(s, { ...options, resetOnHide: true }),\n expressions: {\n hide: (f, forceUpdate?: boolean) => {\n const control = f.parent.parent.fieldGroup[0].formControl;\n if (control.value === -1 || forceUpdate) {\n let value = f.parent.fieldGroup\n .map(\n (f, i) =>\n [f, i, this.isFieldValid(f, i, schemas, options)] as [FormlyFieldConfig, number, boolean],\n )\n .sort(([f1, , f1Valid], [f2, , f2Valid]) => {\n if (f1Valid !== f2Valid) {\n return f2Valid ? 1 : -1;\n }\n\n const matchedFields1 = totalMatchedFields(f1);\n const matchedFields2 = totalMatchedFields(f2);\n if (matchedFields1 === matchedFields2) {\n if (f1.props.disabled === f2.props.disabled) {\n return 0;\n }\n\n return matchedFields2 > matchedFields1 ? 1 : -1;\n }\n\n return matchedFields2 > matchedFields1 ? 1 : -1;\n })\n .map(([, i]) => i);\n\n if (mode === 'anyOf') {\n const definedValue = value.filter((i) => totalMatchedFields(f.parent.fieldGroup[i]));\n value = definedValue.length > 0 ? definedValue : [value[0] || 0];\n }\n\n value = value.length > 0 ? value : [0];\n control.setValue(mode === 'anyOf' ? value : value[0]);\n }\n\n return Array.isArray(control.value) ? control.value.indexOf(i) === -1 : control.value !== i;\n },\n },\n })),\n },\n ],\n };\n }\n\n private resolveDefinition(schema: FormlyJSONSchema7, options: IOptions): FormlyJSONSchema7 {\n const [uri, pointer] = schema.$ref.split('#/');\n if (uri) {\n throw Error(`Remote schemas for ${schema.$ref} not supported yet.`);\n }\n\n const definition = !pointer\n ? null\n : pointer\n .split('/')\n .reduce((def, path) => (def?.hasOwnProperty(path) ? (def as any)[path] : null), options.schema);\n\n if (!definition) {\n throw Error(`Cannot find a definition for ${schema.$ref}.`);\n }\n\n if (definition.$ref) {\n return this.resolveDefinition(definition, options);\n }\n\n return {\n ...definition,\n ...['title', 'description', 'default', 'widget'].reduce((annotation, p) => {\n if (schema.hasOwnProperty(p)) {\n annotation[p] = (schema as any)[p];\n }\n\n return annotation;\n }, {} as any),\n };\n }\n\n private resolveDependencies(schema: JSONSchema7) {\n const propDeps: { [id: string]: string[] } = {};\n const schemaDeps: { [id: string]: JSONSchema7 } = {};\n\n Object.keys(schema.dependencies || {}).forEach((prop) => {\n const dependency = schema.dependencies[prop] as JSONSchema7;\n if (Array.isArray(dependency)) {\n // Property dependencies\n dependency.forEach((dep) => {\n if (!propDeps[dep]) {\n propDeps[dep] = [prop];\n } else {\n propDeps[dep].push(prop);\n }\n });\n } else {\n // schema dependencies\n schemaDeps[prop] = dependency;\n }\n });\n\n return { propDeps, schemaDeps };\n }\n\n private guessSchemaType(schema: JSONSchema7) {\n const type = schema?.type;\n if (!type && schema?.properties) {\n return ['object'];\n }\n\n if (Array.isArray(type)) {\n if (type.length === 1) {\n return type;\n }\n\n if (type.length === 2 && type.indexOf('null') !== -1) {\n return type.sort((t1) => (t1 == 'null' ? 1 : -1));\n }\n\n return type;\n }\n\n return type ? [type] : [];\n }\n\n private addValidator(field: FormlyFieldConfig, name: string, validator: FormlyFieldConfig['validators']) {\n field.validators = field.validators || {};\n field.validators[name] = validator;\n }\n\n private isEnum(schema: JSONSchema7): boolean {\n return (\n !!schema.enum ||\n (schema.anyOf && (schema.anyOf as JSONSchema7[]).every(isConst)) ||\n (schema.oneOf && (schema.oneOf as JSONSchema7[]).every(isConst)) ||\n (schema.uniqueItems && schema.items && !Array.isArray(schema.items) && this.isEnum(<JSONSchema7>schema.items))\n );\n }\n\n private toEnumOptions(schema: JSONSchema7): { value: any; label: any }[] {\n if (schema.enum) {\n return schema.enum.map((value) => ({ value, label: value }));\n }\n\n const toEnum = (s: JSONSchema7) => {\n const value = s.hasOwnProperty('const') ? s.const : s.enum[0];\n const option: any = { value, label: s.title || value };\n if (s.readOnly) {\n option.disabled = true;\n }\n\n return option;\n };\n\n if (schema.anyOf) {\n return (schema.anyOf as JSONSchema7[]).map(toEnum);\n }\n\n if (schema.oneOf) {\n return (schema.oneOf as JSONSchema7[]).map(toEnum);\n }\n\n return this.toEnumOptions(<JSONSchema7>schema.items);\n }\n\n private isFieldValid(\n root: FormlyFieldConfig & { _schemasFields?: { [key: number]: FormlyFieldConfig } },\n i: number,\n schemas: JSONSchema7[],\n options: IOptions,\n ): boolean {\n const schema = schemas[i] as JSONSchema7 & { _field?: FormlyFieldConfig };\n if (!schema._field) {\n Object.defineProperty(schema, '_field', { enumerable: false, writable: true, configurable: true });\n }\n\n let field = schema._field;\n let model = root.model ? root.model : root.fieldArray ? [] : {};\n if (root.model && hasKey(root)) {\n model = { [Array.isArray(root.key) ? root.key.join('.') : root.key]: getFieldValue(root) };\n }\n\n model = clone(model);\n if (!field) {\n field = schema._field = root.options.build({\n form: Array.isArray(model) ? new FormArray([]) : new FormGroup({}),\n fieldGroup: [\n this._toFieldConfig(schema, {\n ...options,\n resetOnHide: true,\n ignoreDefault: true,\n map: null,\n }),\n ],\n model,\n options: {},\n });\n } else {\n (field as any).model = model;\n root.options.build(field);\n }\n\n return field.form.valid;\n }\n\n private mergeFields(f1: any, f2: any) {\n for (let prop in f2) {\n const f1Prop = prop === 'templateOptions' ? 'props' : prop;\n if (isObject(f1[f1Prop]) && isObject(f2[prop])) {\n f1[f1Prop] = this.mergeFields(f1[f1Prop], f2[prop]);\n } else if (f2[prop] != null) {\n f1[f1Prop] = f2[prop];\n }\n }\n\n return f1;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["hasKey","getFieldValue","clone","reverseDeepMerge"],"mappings":"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"}