@tft/crispr-forms 13.0.9 → 13.0.12

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.
@@ -9,7 +9,7 @@ export class CrisprFieldDirective {
9
9
  this.renderer = renderer;
10
10
  this.cdr = cdr;
11
11
  }
12
- async ngOnInit() {
12
+ async ngOnChanges() {
13
13
  /**
14
14
  * create component and set values from config on its instance
15
15
  */
@@ -40,7 +40,7 @@ export class CrisprFieldDirective {
40
40
  }
41
41
  }
42
42
  CrisprFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43
- CrisprFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFieldDirective, selector: "[crisprField]", inputs: { config: "config", group: "group", value: "value" }, ngImport: i0 });
43
+ CrisprFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFieldDirective, selector: "[crisprField]", inputs: { config: "config", group: "group", value: "value" }, usesOnChanges: true, ngImport: i0 });
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldDirective, decorators: [{
45
45
  type: Directive,
46
46
  args: [{
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImpor
74
74
  ]
75
75
  }]
76
76
  }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9maWVsZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQVUsU0FBUyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUF3QixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLG9CQUFvQjtJQU8vQixZQUNVLFNBQTJCLEVBQzNCLFFBQW1CLEVBQ25CLEdBQXNCO1FBRnRCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFDN0IsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRO1FBQ1o7O1dBRUc7UUFDSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQXVCLFNBQVMsQ0FBQyxDQUFDO1FBRXJGLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDbEMsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNuQztTQUNGO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixpRUFBaUU7UUFDakUseUdBQXlHO1FBQ3pHLElBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLDBEQUEwRDtZQUMxRCxJQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sS0FBSyxDQUFDLGdDQUFnQyxLQUFLLDBCQUEwQixDQUFDLENBQUM7YUFDOUU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDcEU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQXhDVSxvQkFBb0I7cUdBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQUhoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjsrSkFHVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSzs7QUFpRFIsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQXJEakIsb0JBQW9CLGFBNEM3QixZQUFZLGFBNUNILG9CQUFvQjsrR0FxRHBCLGlCQUFpQixZQVZuQjtZQUNQLFlBQVk7U0FDYjsyRkFRVSxpQkFBaUI7a0JBWDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjtxQkFDckI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLG9CQUFvQjtxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBWaWV3Q29udGFpbmVyUmVmLCBPbkluaXQsIFJlbmRlcmVyMiwgTmdNb2R1bGUsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7IEFueUZpZWxkQ29uZmlnLCBDb250cm9sVmFsdWUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBDcmlzcHJGaWVsZENvbXBvbmVudCwgRklFTERfQ09NUE9ORU5UUywgaXNDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9maWVsZC1jb21wb25lbnQtbWFwLmNvbnN0JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjcmlzcHJGaWVsZF0nXG59KVxuZXhwb3J0IGNsYXNzIENyaXNwckZpZWxkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBjb25maWc6IEFueUZpZWxkQ29uZmlnO1xuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSB2YWx1ZTogQ29udHJvbFZhbHVlIHwgYW55W107XG4gIGNvbXBvbmVudDogQ3Jpc3ByRmllbGRDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIC8qKlxuICAgICAqIGNyZWF0ZSBjb21wb25lbnQgYW5kIHNldCB2YWx1ZXMgZnJvbSBjb25maWcgb24gaXRzIGluc3RhbmNlXG4gICAgICovXG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb25maWcuY29tcG9uZW50IHx8IGF3YWl0IEZJRUxEX0NPTVBPTkVOVFNbdGhpcy5jb25maWcuY29udHJvbFR5cGVdO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudDxDcmlzcHJGaWVsZENvbXBvbmVudD4oY29tcG9uZW50KTtcblxuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIHRoaXMuY29tcG9uZW50LmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIGlmICggaXNDb250cm9sQ29tcG9uZW50KHRoaXMuY29tcG9uZW50KSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgaWYgKCd2YWx1ZScgaW4gdGhpcy5jb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgLy8gYWRkcyBhbnkgY29uZmlnIGNsYXNzZXMgdG8gdGhlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBjb21wb25lbnRcbiAgICAvLyBkb2luZyB0aGlzIGhlcmUga2VlcHMgdXMgZnJvbSBoYXZpbmcgdG8gZXh0ZW5kIGEgYmFzZSBjb21wb25lbnQgaW50byBlYWNoIGZpZWxkIGNvbXBvbmVudCBpbmRpdmlkdWFsbHlcbiAgICBpZighdGhpcy5jb25maWcuY2xhc3NlcykgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlnLmNsYXNzZXMuZm9yRWFjaCgoa2xhc3MpID0+IHtcbiAgICAgIC8vIGNoZWNrIGZvciBwYXNzaW5nIG11bHRpcGxlIGNsYXNzZXMgaW4gb25lIGFycmF5IGVsZW1lbnRcbiAgICAgIGlmKGtsYXNzLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYEltcHJvcGVybHkgZm9ybWF0dGVkIGNsYXNzLiAnJHtrbGFzc30nIGNhbm5vdCBjb250YWluIHNwYWNlcy5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsIGtsYXNzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENyaXNwckZpZWxkRGlyZWN0aXZlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENyaXNwckZpZWxkRGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3Jpc3ByRmllbGRNb2R1bGUge1xufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9maWVsZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBSy9DLE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFDVSxTQUEyQixFQUMzQixRQUFtQixFQUNuQixHQUFzQjtRQUZ0QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQzdCLENBQUM7SUFFSixLQUFLLENBQUMsV0FBVztRQUNmOztXQUVHO1FBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUF1QixTQUFTLENBQUMsQ0FBQztRQUVyRixJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2xDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbkM7U0FDRjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsaUVBQWlFO1FBQ2pFLHlHQUF5RztRQUN6RyxJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNwQywwREFBMEQ7WUFDMUQsSUFBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QixNQUFNLEtBQUssQ0FBQyxnQ0FBZ0MsS0FBSywwQkFBMEIsQ0FBQyxDQUFDO2FBQzlFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3BFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEF4Q1Usb0JBQW9CO3FHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7K0pBR1UsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7O0FBaURSLE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFyRGpCLG9CQUFvQixhQTRDN0IsWUFBWSxhQTVDSCxvQkFBb0I7K0dBcURwQixpQkFBaUIsWUFWbkI7WUFDUCxZQUFZO1NBQ2I7MkZBUVUsaUJBQWlCO2tCQVg3QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7cUJBQ3JCO29CQUNELFlBQVksRUFBRTt3QkFDWixvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiwgUmVuZGVyZXIyLCBOZ01vZHVsZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHR5cGUgeyBBbnlGaWVsZENvbmZpZywgQ29udHJvbFZhbHVlIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ3Jpc3ByRmllbGRDb21wb25lbnQsIEZJRUxEX0NPTVBPTkVOVFMsIGlzQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vZmllbGQtY29tcG9uZW50LW1hcC5jb25zdCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY3Jpc3ByRmllbGRdJ1xufSlcbmV4cG9ydCBjbGFzcyBDcmlzcHJGaWVsZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgY29uZmlnOiBBbnlGaWVsZENvbmZpZztcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgdmFsdWU6IENvbnRyb2xWYWx1ZSB8IGFueVtdO1xuICBjb21wb25lbnQ6IENyaXNwckZpZWxkQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBhc3luYyBuZ09uQ2hhbmdlcygpIHtcbiAgICAvKipcbiAgICAgKiBjcmVhdGUgY29tcG9uZW50IGFuZCBzZXQgdmFsdWVzIGZyb20gY29uZmlnIG9uIGl0cyBpbnN0YW5jZVxuICAgICAqL1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29uZmlnLmNvbXBvbmVudCB8fCBhd2FpdCBGSUVMRF9DT01QT05FTlRTW3RoaXMuY29uZmlnLmNvbnRyb2xUeXBlXTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQ8Q3Jpc3ByRmllbGRDb21wb25lbnQ+KGNvbXBvbmVudCk7XG5cbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB0aGlzLmNvbXBvbmVudC5jb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoIGlzQ29udHJvbENvbXBvbmVudCh0aGlzLmNvbXBvbmVudCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50Lmdyb3VwID0gdGhpcy5ncm91cDtcbiAgICAgIGlmICgndmFsdWUnIGluIHRoaXMuY29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vIGFkZHMgYW55IGNvbmZpZyBjbGFzc2VzIHRvIHRoZSBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29tcG9uZW50XG4gICAgLy8gZG9pbmcgdGhpcyBoZXJlIGtlZXBzIHVzIGZyb20gaGF2aW5nIHRvIGV4dGVuZCBhIGJhc2UgY29tcG9uZW50IGludG8gZWFjaCBmaWVsZCBjb21wb25lbnQgaW5kaXZpZHVhbGx5XG4gICAgaWYoIXRoaXMuY29uZmlnLmNsYXNzZXMpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpZy5jbGFzc2VzLmZvckVhY2goKGtsYXNzKSA9PiB7XG4gICAgICAvLyBjaGVjayBmb3IgcGFzc2luZyBtdWx0aXBsZSBjbGFzc2VzIGluIG9uZSBhcnJheSBlbGVtZW50XG4gICAgICBpZihrbGFzcy5pbmNsdWRlcygnICcpKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBJbXByb3Blcmx5IGZvcm1hdHRlZCBjbGFzcy4gJyR7a2xhc3N9JyBjYW5ub3QgY29udGFpbiBzcGFjZXMuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LCBrbGFzcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDcmlzcHJGaWVsZERpcmVjdGl2ZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDcmlzcHJGaWVsZERpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENyaXNwckZpZWxkTW9kdWxlIHtcbn1cbiJdfQ==
@@ -18,9 +18,11 @@ export class CrisprFormComponent {
18
18
  this.statusChanges = this.form.statusChanges;
19
19
  this.subs = [];
20
20
  }
21
- ngOnInit() {
21
+ ngOnChanges(changes) {
22
22
  // build out the form, note that we pass in the form as the third argument and the function modifies it
23
- buildFormGroupFromConfig(this.config, this.value, this.form);
23
+ if (changes.config || changes.value || changes.form) {
24
+ buildFormGroupFromConfig(this.config, this.value, this.form);
25
+ }
24
26
  }
25
27
  handleSubmit() {
26
28
  this.form.markAllAsTouched();
@@ -31,7 +33,7 @@ export class CrisprFormComponent {
31
33
  }
32
34
  }
33
35
  CrisprFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- CrisprFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFormComponent, selector: "crispr-form", inputs: { config: "config", form: "form", value: "value" }, outputs: { submitted: "submitted", valueChanges: "valueChanges", statusChanges: "statusChanges" }, viewQueries: [{ propertyName: "submitTrigger", first: true, predicate: ["submitTrigger"], descendants: true }], ngImport: i0, template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.ControlErrorsFormDirective, selector: "form", inputs: ["errorDictionary"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }], pipes: { "initialControlValue": i5.InitialControlValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
36
+ CrisprFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFormComponent, selector: "crispr-form", inputs: { config: "config", form: "form", value: "value" }, outputs: { submitted: "submitted", valueChanges: "valueChanges", statusChanges: "statusChanges" }, viewQueries: [{ propertyName: "submitTrigger", first: true, predicate: ["submitTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.ControlErrorsFormDirective, selector: "form", inputs: ["errorDictionary"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }], pipes: { "initialControlValue": i5.InitialControlValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
35
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormComponent, decorators: [{
36
38
  type: Component,
37
39
  args: [{ selector: 'crispr-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"] }]
@@ -51,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImpor
51
53
  type: ViewChild,
52
54
  args: ['submitTrigger']
53
55
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFhLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBT2hELE1BQU0sT0FBTyxtQkFBbUI7SUFOaEM7UUFTVyxTQUFJLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsVUFBSyxHQUFzQixJQUFJLENBQUM7UUFFL0IsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDcEQsc0VBQXNFO1FBQzVELGlCQUFZLEdBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZELGtCQUFhLEdBQXVCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXRFLFNBQUksR0FBbUIsRUFBRSxDQUFDO0tBaUIzQjtJQWJDLFFBQVE7UUFDTix1R0FBdUc7UUFDdkcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDOztnSEEzQlUsbUJBQW1CO29HQUFuQixtQkFBbUIsa1VDWGhDLDJ5QkFzQkE7MkZEWGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBSXFCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb250cm9sR3JvdXBWYWx1ZSwgQ29udHJvbFZhbHVlLCBGb3JtQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IGJ1aWxkRm9ybUdyb3VwRnJvbUNvbmZpZyB9IGZyb20gJy4uL2Zvcm0uaGVscGVycyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1mb3JtJyxcbiAgc3R5bGVVcmxzOiBbJ2Zvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICdmb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ3Jpc3ByRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIGlmIG5vIGZvcm0gaGFzIGJlZW4gcGFzc2VkIGluIGJ5IGNvbnN1bWluZyBjb21wb25lbnQsIHdlIGNyZWF0ZSBhbiBlbXB0eSBncm91cCB0byBidWlsZCBvdXRcbiAgQElucHV0KCkgY29uZmlnOiBGb3JtQ29uZmlnO1xuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgQElucHV0KCkgdmFsdWU6IENvbnRyb2xHcm91cFZhbHVlID0gbnVsbDtcblxuICBAT3V0cHV0KCkgc3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XG4gIC8vIHByb3h5IHZhbHVlIGFuZCBzdGF0dXMgY2hhbmdlIGV2ZW50cyB0aHJvdWdoIHRvIGNvbnN1bWluZyBjb21wb25lbnRcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlczogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcztcbiAgQE91dHB1dCgpIHN0YXR1c0NoYW5nZXM6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzO1xuXG4gIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgQFZpZXdDaGlsZCgnc3VibWl0VHJpZ2dlcicpIHN1Ym1pdFRyaWdnZXI6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIGJ1aWxkIG91dCB0aGUgZm9ybSwgbm90ZSB0aGF0IHdlIHBhc3MgaW4gdGhlIGZvcm0gYXMgdGhlIHRoaXJkIGFyZ3VtZW50IGFuZCB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgaXRcbiAgICBidWlsZEZvcm1Hcm91cEZyb21Db25maWcodGhpcy5jb25maWcsIHRoaXMudmFsdWUsIHRoaXMuZm9ybSk7XG4gIH1cblxuICBoYW5kbGVTdWJtaXQoKSB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHRoaXMuZm9ybSk7XG4gIH1cblxuICB0cmlnZ2VyU3VibWl0KCkge1xuICAgIHRoaXMuc3VibWl0VHJpZ2dlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIGNsYXNzPVwiY3Jpc3ByLWZvcm1cIlxuICBbbmdDbGFzc109XCJjb25maWcuY2xhc3Nlc1wiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gIChuZ1N1Ym1pdCk9XCJoYW5kbGVTdWJtaXQoKVwiXG4gIFthdXRvY29tcGxldGVdPVwiY29uZmlnLmF1dG9jb21wbGV0ZSB8fCAnb2ZmJ1wiXG4gIFtlcnJvckRpY3Rpb25hcnldPVwiY29uZmlnLmVycm9yRGljdGlvbmFyeVwiXG4gICNuZ0Zvcm1FbGVtZW50PVwibmdGb3JtXCI+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBjb25maWcuZmllbGRzO1wiXG4gICAgY3Jpc3ByRmllbGRcbiAgICBbdmFsdWVdPVwidmFsdWUgfCBpbml0aWFsQ29udHJvbFZhbHVlIDogZmllbGRcIlxuICAgIFtjb25maWddPVwiZmllbGRcIlxuICAgIFtncm91cF09XCJmb3JtXCI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8IS0tIEhpZGRlbiBidXR0b24sIHByb2dyYW1tYXRpY2FsbHkgY2xpY2tlZCB3aGVuIGNyaXNwciBmb3JtIHRyaWdnZXJTdWJtaXQgZnVuY3Rpb24gY2FsbGVkLlxuICAgIFVzZXMgYSBoaWRkZW4gYnV0dG9uIHdpdGggdHlwZT1cInN1Ym1pdFwiIGJlY2F1c2UgaXQgd2lsbCB0cmlnZ2VyIGJvdGggbmF0aXZlIGZvcm0gc3VibWl0IGV2ZW50XG4gICAgKHdoaWNoIHRoZSBlcnJvciBoYW5kbGVyIGhhcyB0byBsaXN0ZW4gZm9yKSBhbmQgbmdTdWJtaXQgZXZlbnQgIC0tPlxuICA8YnV0dG9uICNzdWJtaXRUcmlnZ2VyIGNsYXNzPVwic3VibWl0LXRyaWdnZXJcIiB0eXBlPVwic3VibWl0XCI+XG4gIDwvYnV0dG9uPlxuPC9mb3JtPlxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQU9oRCxNQUFNLE9BQU8sbUJBQW1CO0lBTmhDO1FBU1csU0FBSSxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLFVBQUssR0FBc0IsSUFBSSxDQUFDO1FBRS9CLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBQ3BELHNFQUFzRTtRQUM1RCxpQkFBWSxHQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2RCxrQkFBYSxHQUF1QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUV0RSxTQUFJLEdBQW1CLEVBQUUsQ0FBQztLQW1CM0I7SUFmQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsdUdBQXVHO1FBQ3ZHLElBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDbEQsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5RDtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7O2dIQTdCVSxtQkFBbUI7b0dBQW5CLG1CQUFtQix1VkNYaEMsMnlCQXNCQTsyRkRYYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl0QyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFJcUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29udHJvbEdyb3VwVmFsdWUsIEZvcm1Db25maWcgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgYnVpbGRGb3JtR3JvdXBGcm9tQ29uZmlnIH0gZnJvbSAnLi4vZm9ybS5oZWxwZXJzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Jpc3ByLWZvcm0nLFxuICBzdHlsZVVybHM6IFsnZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJ2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDcmlzcHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLy8gaWYgbm8gZm9ybSBoYXMgYmVlbiBwYXNzZWQgaW4gYnkgY29uc3VtaW5nIGNvbXBvbmVudCwgd2UgY3JlYXRlIGFuIGVtcHR5IGdyb3VwIHRvIGJ1aWxkIG91dFxuICBASW5wdXQoKSBjb25maWc6IEZvcm1Db25maWc7XG4gIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBASW5wdXQoKSB2YWx1ZTogQ29udHJvbEdyb3VwVmFsdWUgPSBudWxsO1xuXG4gIEBPdXRwdXQoKSBzdWJtaXR0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcbiAgLy8gcHJveHkgdmFsdWUgYW5kIHN0YXR1cyBjaGFuZ2UgZXZlbnRzIHRocm91Z2ggdG8gY29uc3VtaW5nIGNvbXBvbmVudFxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzO1xuICBAT3V0cHV0KCkgc3RhdHVzQ2hhbmdlczogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5mb3JtLnN0YXR1c0NoYW5nZXM7XG5cbiAgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBAVmlld0NoaWxkKCdzdWJtaXRUcmlnZ2VyJykgc3VibWl0VHJpZ2dlcjogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIC8vIGJ1aWxkIG91dCB0aGUgZm9ybSwgbm90ZSB0aGF0IHdlIHBhc3MgaW4gdGhlIGZvcm0gYXMgdGhlIHRoaXJkIGFyZ3VtZW50IGFuZCB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgaXRcbiAgICBpZihjaGFuZ2VzLmNvbmZpZyB8fCBjaGFuZ2VzLnZhbHVlIHx8IGNoYW5nZXMuZm9ybSkge1xuICAgICAgYnVpbGRGb3JtR3JvdXBGcm9tQ29uZmlnKHRoaXMuY29uZmlnLCB0aGlzLnZhbHVlLCB0aGlzLmZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN1Ym1pdCgpIHtcbiAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIHRoaXMuc3VibWl0dGVkLmVtaXQodGhpcy5mb3JtKTtcbiAgfVxuXG4gIHRyaWdnZXJTdWJtaXQoKSB7XG4gICAgdGhpcy5zdWJtaXRUcmlnZ2VyLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxufVxuIiwiPGZvcm1cbiAgY2xhc3M9XCJjcmlzcHItZm9ybVwiXG4gIFtuZ0NsYXNzXT1cImNvbmZpZy5jbGFzc2VzXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCJcbiAgW2F1dG9jb21wbGV0ZV09XCJjb25maWcuYXV0b2NvbXBsZXRlIHx8ICdvZmYnXCJcbiAgW2Vycm9yRGljdGlvbmFyeV09XCJjb25maWcuZXJyb3JEaWN0aW9uYXJ5XCJcbiAgI25nRm9ybUVsZW1lbnQ9XCJuZ0Zvcm1cIj5cblxuICA8bmctY29udGFpbmVyXG4gICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGNvbmZpZy5maWVsZHM7XCJcbiAgICBjcmlzcHJGaWVsZFxuICAgIFt2YWx1ZV09XCJ2YWx1ZSB8IGluaXRpYWxDb250cm9sVmFsdWUgOiBmaWVsZFwiXG4gICAgW2NvbmZpZ109XCJmaWVsZFwiXG4gICAgW2dyb3VwXT1cImZvcm1cIj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gSGlkZGVuIGJ1dHRvbiwgcHJvZ3JhbW1hdGljYWxseSBjbGlja2VkIHdoZW4gY3Jpc3ByIGZvcm0gdHJpZ2dlclN1Ym1pdCBmdW5jdGlvbiBjYWxsZWQuXG4gICAgVXNlcyBhIGhpZGRlbiBidXR0b24gd2l0aCB0eXBlPVwic3VibWl0XCIgYmVjYXVzZSBpdCB3aWxsIHRyaWdnZXIgYm90aCBuYXRpdmUgZm9ybSBzdWJtaXQgZXZlbnRcbiAgICAod2hpY2ggdGhlIGVycm9yIGhhbmRsZXIgaGFzIHRvIGxpc3RlbiBmb3IpIGFuZCBuZ1N1Ym1pdCBldmVudCAgLS0+XG4gIDxidXR0b24gI3N1Ym1pdFRyaWdnZXIgY2xhc3M9XCJzdWJtaXQtdHJpZ2dlclwiIHR5cGU9XCJzdWJtaXRcIj5cbiAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
@@ -149,10 +149,14 @@ export function buildFormGroupFromConfig(config, value = null, group = new FormG
149
149
  if (isControlConfig(controlConfig)) {
150
150
  // then add a control to the group using the controlName from configuration
151
151
  const { controlName } = controlConfig;
152
+ if (group.get(controlName)) {
153
+ group.removeControl(controlName);
154
+ }
152
155
  // if there's a value object and it has a non-null/undefined value for this field use it.
153
156
  // Otherwise, default to null
154
157
  const controlValue = (value && value[controlName]) ?? null;
155
- group.addControl(controlName, createControlForType(controlConfig, controlValue));
158
+ const control = createControlForType(controlConfig, controlValue);
159
+ group.addControl(controlName, control);
156
160
  }
157
161
  });
158
162
  group.setValidators(config.validators);
@@ -183,4 +187,4 @@ export function filterOptionsByLabel(options, searchString) {
183
187
  return option.label && option.label.toLowerCase().includes(searchString.toLowerCase());
184
188
  });
185
189
  }
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9mb3JtLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUNMLFdBQVcsR0FDWixNQUFNLDhCQUE4QixDQUFBO0FBQ3JDLE9BQU8sRUFDTCxJQUFJLEVBRUosRUFBRSxFQUNGLFlBQVksRUFDWixhQUFhLEVBRWQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBZSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXNCN0Q7Ozs7O0VBS0U7QUFDRixNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBZ0IsRUFBRSxNQUEwQjtJQUNoRixrREFBa0Q7SUFDbEQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNoRSxPQUFPLGVBQWUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUk7UUFDcEQsb0ZBQW9GO1FBQ3BGLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLGVBQXdCLEVBQUUsRUFBRTtZQUMvQix3R0FBd0c7WUFDeEcscUhBQXFIO1lBQ3JILElBQUssTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxZQUFZLFFBQVEsRUFBRztnQkFDNUQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNO2dCQUFFLE9BQU8sZUFBZSxDQUFDO2FBQUU7UUFDcEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztLQUNIO1NBQU07UUFDTCxFQUFFO1FBQ0YsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDO0FBWUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsTUFBMkI7SUFDbEYsNEZBQTRGO0lBQzVGLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FBRTtJQUN6RCxxRkFBcUY7SUFDckYsb0RBQW9EO0lBQ3BELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzFELHFGQUFxRjtRQUNyRixPQUFPLHFCQUFxQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sYUFBYSxDQUNsQixhQUFhLENBQ2QsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDakIsR0FBRyxDQUFDLENBQUMsUUFBbUIsRUFBRSxFQUFFO1FBQzFCLGlEQUFpRDtRQUNqRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsWUFBWSxRQUFRLEVBQUU7WUFDMUQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2xDO2FBQU0sRUFBRSx3RUFBd0U7WUFDL0UsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQWNEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsbUJBQXVDO0lBQzlGLHdCQUF3QjtJQUN4QixNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQztJQUNwRCxrRkFBa0Y7SUFDbEYsT0FBTyxhQUFhLENBQ2xCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQzFGLENBQUMsSUFBSTtJQUNKLHlHQUF5RztJQUN6RywwRkFBMEY7SUFDMUYsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3JFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsZUFBZSxDQUFDLEtBQWdCLEVBQUUsV0FBbUI7SUFDNUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsV0FBVyxFQUFFLENBQUcsQ0FBQztLQUNqRTtJQUNELE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQztBQUM5QixDQUFDO0FBQ0Q7Ozs7OztHQU1HO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxVQUEyQixFQUFFLFNBQXVDO0lBQ3ZHLElBQUk7UUFDRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFtQixFQUFFLEVBQTRCLEVBQUUsRUFBRTtZQUM1RSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ2hCO0lBQUMsTUFBTTtRQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUMxRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUM7QUFHRCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLE9BQWtELEVBQ2xELFdBQXVCLEVBQ3ZCLFlBQXFCO0lBRXJCLE9BQU8sT0FBTyxZQUFZLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3BGLENBQUM7QUFDRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxPQUFvQixFQUNwQixXQUFzQixFQUN0QixZQUFxQjtJQUVyQixNQUFNLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2hGLDJCQUEyQjtJQUMzQixNQUFNLGlCQUFpQixHQUFHLGFBQWEsWUFBWSxPQUFPO1FBQzFELHdCQUF3QjtRQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNyQiw0QkFBNEI7UUFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksYUFBYSxDQUFDLE1BQU07WUFDdEQsd0JBQXdCO1lBQ3hCLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQ25CLGdCQUFnQjtZQUNoQixDQUFDLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztnQkFDN0IsWUFBWTtnQkFDWixDQUFDLENBQUMsYUFBYTtnQkFDZixzQkFBc0I7Z0JBQ3RCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDVCxPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUM7QUFFRDs7TUFFTTtBQUNOLE1BQU0sVUFBVSxlQUFlLENBQUMsV0FBOEI7SUFDNUQsT0FBTyxhQUFhLElBQUksV0FBVyxDQUFDO0FBQ3RDLENBQUM7QUFDRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUFrQixFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsUUFBbUIsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQzdHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFFLENBQUMsYUFBNkIsRUFBRSxFQUFFO1FBQ3ZELElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ2xDLDJFQUEyRTtZQUMzRSxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsYUFBYSxDQUFDO1lBQ3BDLHlGQUF5RjtZQUN6Riw2QkFBNkI7WUFDN0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQzNELEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQ2xGO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxhQUE2QixFQUFFLFFBQXNCLElBQUk7SUFDNUYsbURBQW1EO0lBQ25ELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLFNBQVM7UUFDakUsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLGFBQTJCLEVBQUUsS0FBSyxDQUFDO1FBQzlELENBQUMsQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxVQUFVO1lBQ3RELENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUcsYUFBcUMsQ0FBQyxVQUFVLENBQUM7WUFDdEUsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUNmLEtBQUssSUFBSSxJQUFJLEVBQ1osYUFBcUMsQ0FBQyxVQUFVLENBQ2xELENBQUM7SUFFSixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUF1QixFQUFFLFlBQW9CO0lBQ2hGLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUM3QixPQUFPLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBTZWxlY3RPcHRpb24sXG4gIEFueUZpZWxkQ29uZmlnLFxuICBGb3JtQ29uZmlnLFxuICBGb3JtR3JvdXBMaXN0Q29uZmlnLFxuICBDcmlzcHJDb250cm9sQ29uZmlnLFxuICBPcHRpb25zVHlwZSxcbiAgQXV0b2NvbXBsZXRlT3B0aW9uc0NhbGxiYWNrLFxuICBDcmlzcHJGaWVsZENvbmZpZyxcbiAgQ29udHJvbFZhbHVlXG59IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7XG4gIENvbnRyb2xUeXBlLFxufSBmcm9tICcuL21vZGVscy9jcmlzcHItZmllbGQuY29uZmlnJ1xuaW1wb3J0IHtcbiAgZnJvbSxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIGlzT2JzZXJ2YWJsZSxcbiAgY29tYmluZUxhdGVzdCxcbiAgT3BlcmF0b3JGdW5jdGlvblxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHZhbHVlSW4gfSBmcm9tICcuL2Zvcm0ub3BlcmF0b3JzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBEWU5BTUlDIEZPUk0gVVRJTFM6IGEgY29sbGVjdGlvbiBvZiBwdXJlL21vc3RseSBwdXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VmdWwgYm90aCBpbnRlcm5hbGx5IGFuZCBmb3JcbiAqIGRldmVsb3BpbmcgdGhlIGNvbnN1bWluZyBhcHAuXG4gKlxuICogVGhleSBhcmUgc29ydGVkIGJ5IHVzZSBjYXNlOiBidWlsZGluZyBvdXQgdGhlIGZvcm0gb2JqZWN0OyBoZWxwZXIgZnVuY3Rpb25zIHRvIHVzZSB3aXRoIHRoZSBkaXNhYmxlZCQgZnVuY3Rpb247XG4gKiBoZWxwZXIgZnVuY3Rpb25zIHRvIHVzZSB3aXRoIHRoZSBjb21wdXRlIGZpZWxkIGZ1bmN0aW9uOyBhbmQgb3RoZXIgbG9naWMgc2hhcmVkIGJldHdlZW4gY29tcG9uZW50c1xuICovXG5cbi8qKlxuICogUmVxdWlyZWQgY29uZmlndXJhdGlvbiB0byB1c2Ugd2l0aCBjaGVja0NvbnRyb2xGb3JWYWx1ZXMgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja0NvbnRyb2xDb25maWcge1xuICAvLyB0aGUgY29udHJvbCBuYW1lIHRvIHdhdGNoXG4gIGNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIC8vIHRoZSB2YWx1ZXMgdG8gd2F0Y2ggZm9yXG4gIHZhbHVlczogc3RyaW5nW107XG4gIC8vIHRoZSBmdW5jdGlvbiB0byBydW4gb24gdGhlIGJvb2xlYW4gcmV0dXJuZWQgYnkgdGhlIHdhdGNoZXJcbiAgZXZhbHVhdGU/OiAoaXNWYWx1ZUluVmFsdWVzOiBib29sZWFuKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiogV2F0Y2hlcyBhIHNpbmdsZSBjb250cm9sIGZvciBhIGxpc3Qgb2YgdmFsdWVzLCByZXR1cm5zIHRydWUgd2hlbiBmaWVsZCB2YWx1ZSBtYXRjaGVzIGFueSB2YWx1ZSBpbiBsaXN0XG4qIHVubGVzcyBhbiBldmFsdWF0ZSBtZXRob2QgaXMgZm91bmQgb24gY29uZmlnLCBpbiB3aGljaCBjYXNlIHRoYXQgbWV0aG9kIGlzIHJ1biBvbiB0aGUgcmV0dXJuZWQgYm9vbGVhbiB2YWx1ZVxuKiBAcGFyYW0gZ3JvdXAgdGhlIGRpcmVjdCBwYXJlbnQgb2YgdGhlIGZpZWxkIHdlIHdhbnQgdG8gd2F0Y2hcbiogQHBhcmFtIGNvbmZpZ1xuKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NvbnRyb2xGb3JWYWx1ZXMoZ3JvdXA6IEZvcm1Hcm91cCwgY29uZmlnOiBDaGVja0NvbnRyb2xDb25maWcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgLy8gY2hlY2sgdGhhdCBhbGwgdGhlIHBpZWNlcyB3ZSBuZWVkIGFyZSBhdmFpbGFibGVcbiAgaWYgKGNvbmZpZyAmJiBjb25maWcuY29udHJvbE5hbWUgJiYgQXJyYXkuaXNBcnJheShjb25maWcudmFsdWVzKSkge1xuICAgIHJldHVybiBnZXRWYWx1ZUNoYW5nZXMoZ3JvdXAsIGNvbmZpZy5jb250cm9sTmFtZSkucGlwZShcbiAgICAgIC8vIHJldHVybiBhIGJvb2xlYW4sIHRydWUgaWYgdmFsdWUgaXMgaW4gdGhlIHZhbHVlcyBiZWluZyB3YXRjaCBmb3IsIG90aGVyd2lzZSBmYWxzZVxuICAgICAgdmFsdWVJbihjb25maWcudmFsdWVzKSxcbiAgICAgIG1hcCgoaXNWYWx1ZUluVmFsdWVzOiBib29sZWFuKSA9PiB7XG4gICAgICAgIC8vIHNpbmNlIHdlIGNhbiBvbmx5IGNoZWNrIGlmIHRoZSB2YWx1ZSBpcyBpbiB0aGUgbGlzdCBvZiB3YXRjaGVkIHZhbHVlcywgdGhlIGV2YWx1YXRlIGZ1bmN0aW9uIGdpdmVzIHVzXG4gICAgICAgIC8vIGEgY2hhbmNlIHRvIG1ha2Ugb3RoZXIgZGVjaXNpb25zIGJhc2VkIG9uIGlmIHRoZSBib29sZWFuIHJldHVybmVkLCBlLmcuIHJldHVybiB0cnVlIGlmIHZhbHVlIG5vdCBpbiB3YXRjaGVkIHZhbHVlc1xuICAgICAgICBpZiAoIGNvbmZpZy5ldmFsdWF0ZSAmJiBjb25maWcuZXZhbHVhdGUgaW5zdGFuY2VvZiBGdW5jdGlvbiApIHtcbiAgICAgICAgICByZXR1cm4gY29uZmlnLmV2YWx1YXRlKGlzVmFsdWVJblZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSB7IHJldHVybiBpc1ZhbHVlSW5WYWx1ZXM7IH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvL1xuICAgIHJldHVybiBvZih0cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIGZvciBydW5uaW5nIHRoZSBjaGVja0NvbnRyb2xzRm9yVmFsdWVzIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrQ29udHJvbHNDb25maWcge1xuICAvLyBhbiBhcnJheSBvZiBjb250cm9scyB0byB3YXRjaCBhbmQgdGhlIHZhbHVlcyB0byBjaGVjayBmb3JcbiAgd2F0Y2hDb25maWdzOiBDaGVja0NvbnRyb2xDb25maWdbXTtcbiAgLy8gdGhlIGZ1bmN0aW9uIHRvIHJ1biBhZ2FpbnN0IHRoZSBhcnJheSBvZiBjdXJyZW50IGZpZWxkIHZhbHVlSW4gcmVzcG9uc2VzXG4gIGV2YWx1YXRlPzogKCBib29sczogYm9vbGVhbltdICkgPT4gYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXYXRjaGVzIGEgbGlzdCBvZiBmaWVsZHMgZm9yIGluZGl2aWR1YWwgbGlzdHMgb2YgdmFsdWVzIHJldHVybmluZyB0cnVlIHdoZW4gYW55IGZpZWxkIGNvbnRhaW5zIG9uZVxuICogb2YgdGhlIHZhbHVlcyBiZWluZyB3YXRjaGVkIGZvciwgb3Igb3B0aW9uYWxseSBydW5uaW5nIGEgZnVuY3Rpb24gb24gdGhlIGFycmF5IG9mIHJlc29sdmVkIGJvb2xlYW5zXG4gKiBmcm9tIHRoZSBsaXN0ZWQgZmllbGRzIGFuZCByZXR1cm5pbmcgYSBib29sZWFuXG4gKiBAcGFyYW0gZ3JvdXAgdGhlIGZvcm0gZ3JvdXAgdGhhdCBoYXMgdGhlIGZpZWxkcyB0byB3YXRjaCBhcyBkaXJlY3QgZGVzY2VuZGFudHNcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNvbmZpZ3VyYXRpb24gdG8gdXNlIHdoZW4gY2FsbGluZyB0aGUgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29udHJvbHNGb3JWYWx1ZXMoZ3JvdXA6IEZvcm1Hcm91cCwgY29uZmlnOiBDaGVja0NvbnRyb2xzQ29uZmlnKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgLy8gaWYgbm8gY29uZmlnIGlzIHBhc3NlZCB3ZSBqdXN0IHdhbnQgdG8gc2hvdyB0aGUgZmllbGQsIHNvIHdlIHJldHVybiBhbiBvYnNlcnZhYmxlIG9mIHRydWVcbiAgaWYgKCFjb25maWcgfHwgIWNvbmZpZy53YXRjaENvbmZpZ3MpIHsgcmV0dXJuIG9mKHRydWUpOyB9XG4gIC8vIHdlIHJ1biBjaGVja0NvbnRyb2xGb3JWYWx1ZXMgb24gZXZlcnkgY29udHJvbCBpbiB0aGUgbGlzdCBvZiBXYXRjaENvbmZpZ3MgY3JlYXRpbmdcbiAgLy8gYW4gYXJyYXkgb2YgT2JzZXJ2YWJsZSB3YXRjaGluZyBmaWVsZHMgZm9yIHZhbHVlc1xuICBjb25zdCBmaWVsZFRyaWdnZXJzID0gY29uZmlnLndhdGNoQ29uZmlncy5tYXAod2F0Y2hDb25maWcgPT4ge1xuICAgIC8vIHJlc29sdmVzIGEgYm9vbGVhbiwgdHJ1ZSB3aGVuIGZpZWxkIHZhbHVlIG1hdGNoZXMgYSB3YXRjaGVkIHZhbHVlLCBvdGhlcndpc2UgZmFsc2VcbiAgICByZXR1cm4gY2hlY2tDb250cm9sRm9yVmFsdWVzKGdyb3VwLCB3YXRjaENvbmZpZyk7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgIGZpZWxkVHJpZ2dlcnNcbiAgKS5waXBlKFxuICAgIHN0YXJ0V2l0aChbdHJ1ZV0pLFxuICAgIG1hcCgoYm9vbGVhbnM6IGJvb2xlYW5bXSkgPT4ge1xuICAgICAgLy8gaWYgdGhlIHVzZXIgcGFzc2VkIGFuIGV2YWx1YXRlIGZ1bmN0aW9uIHVzZSBpdFxuICAgICAgaWYgKGNvbmZpZy5ldmFsdWF0ZSAmJiBjb25maWcuZXZhbHVhdGUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gY29uZmlnLmV2YWx1YXRlKGJvb2xlYW5zKTtcbiAgICAgIH0gZWxzZSB7IC8vIG90aGVyd2lzZSB3ZSByZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIHdhdGNoZWQgZmllbGRzIHJlc29sdmUgdG8gdHJ1ZVxuICAgICAgICByZXR1cm4gYm9vbGVhbnMuc29tZShib29sID0+IGJvb2wpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIHRoZSBjb21wdXRlVmFsdWUgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlRmllbGRDb25maWc8VCA9IGFueSwgUlQgPSBhbnk+IHtcbiAgLy8gYXJyYXkgb2YgY29udHJvbCBuYW1lcyB3aG8ncyB2YWx1ZXMgd2Ugd2FudCB0byB3YXRjaFxuICBjb250cm9sTmFtZXNUb1dhdGNoOiBzdHJpbmdbXTtcbiAgLy8gdGhlIGZ1bmN0aW9uIHdlIHdhbnQgdG8gY2FsbCBvbiB0aGUgYXJyYXkgb2Ygd2F0Y2hlZCB2YWx1ZXMgdG8gY29tcHV0ZSB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgd2VcbiAgY29tcHV0ZUNhbGxiYWNrOiAoXG4gICAgdmFsdWVzOiAoVClbXVxuICApID0+IFJUO1xufVxuXG4vKipcbiAqIFdhdGNoZXMgdmFsdWVzIG9uIGFuIGFycmF5IG9mIGZpZWxkcywgY29tcHV0aW5nIHRoZWlyIHZhbHVlcyBhcyB0aGV5IGNoYW5nZVxuICogQHBhcmFtIGdyb3VwIHRoZSBncm91cCB0byBnZXQgdGhlIGZpZWxkcyBmcm9tLCBmb3Igbm93IGl0IGNhbiBvbmx5IGJlIHRoZSBwYXJlbnQgb2YgdGhlIGNvbXB1dGVkIGZpZWxkXG4gKiBAcGFyYW0gY29tcHV0ZUZpZWxkc0NvbmZpZyB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGRyaXZlcyB0aGUgY29tcHV0YXRpb24sIGhvbGRzIHRoZSBuYW1lcyB0byB3YXRjaCBhbmQgdGhlXG4gKiBjb21wdXRhdGlvbiBmdW5jdGlvbiB0aGF0IGdldCBjYWxsZWQgYWdhaW5zdCB0aGUgYXJyYXkgb2YgdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlVmFsdWVGcm9tRmllbGRzKGdyb3VwOiBGb3JtR3JvdXAsIGNvbXB1dGVGaWVsZHNDb25maWc6IENvbXB1dGVGaWVsZENvbmZpZyk6IE9ic2VydmFibGU8YW55PiB7XG4gIC8vIFRPRE86IGJldHRlciBjaGVja2luZ1xuICBjb25zdCB7IGNvbnRyb2xOYW1lc1RvV2F0Y2ggfSA9IGNvbXB1dGVGaWVsZHNDb25maWc7XG4gIC8vY3JlYXRlcyBhbiBvYnNlcnZhYmxlIGxpc3RlbmVyIGZvciBlYWNoIGNvbnRyb2wgaW4gdGhlIGNvbnRyb2xOYW1lc1RvV2F0Y2ggYXJyYXlcbiAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgY29udHJvbE5hbWVzVG9XYXRjaC5tYXAoY29udHJvbE5hbWVUb1dhdGNoID0+IGdldFZhbHVlQ2hhbmdlcyhncm91cCwgY29udHJvbE5hbWVUb1dhdGNoKSlcbiAgKS5waXBlKFxuICAgIC8vIGVhY2ggdGltZSBhIHdhdGNoZWQgZmllbGQgdmFsdWVzIGNoYW5nZXMgYSBuZXcgYXJyYXkgb2YgdGhlIGxhdGVzdCBmaWVsZCB2YWx1ZXMgaXMgcGlwZSB0aHJvdWdoIHRvIHRoZVxuICAgIC8vIGNvbXB1dGUgY2FsbGJhY2suIFdoaWNoIHJ1bnMgdGhlIHVzZXJzIGxvZ2ljIG9uIHRoZSB2YWx1ZXMgdG8gY29tcHV0ZSB0aGlzIGZpZWxkcyB2YWx1ZVxuICAgIG1hcCh2YWx1ZXNBcnJheSA9PiBjb21wdXRlRmllbGRzQ29uZmlnLmNvbXB1dGVDYWxsYmFjayh2YWx1ZXNBcnJheSkpLFxuICApO1xufVxuXG4vKipcbiAqIEEgc2ltcGxlIHdyYXBwZXIgZm9yIGRvaW5nIGVycm9yIGNoZWNraW5nIGFyb3VuZCBnZXR0aW5nIHRoZSB2YWx1ZUNoYW5nZXMgb2JzZXJ2YWJsZSBmcm9tIGEgY29udHJvbCBvbiBhIGZvcm0gZ3JvdXBcbiAqIEBwYXJhbSBncm91cCB0aGUgZm9ybSBncm91cCB3ZSB3YW50IHRvIHB1bGwgdGhlIG9ic2VydmFibGUgZnJvbVxuICogQHBhcmFtIGNvbnRyb2xOYW1lIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIHdobydzIHZhbHVlIHdlIHdhbnQgdG8gc3Vic2NyaWJlIHRvXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlQ2hhbmdlcyhncm91cDogRm9ybUdyb3VwLCBjb250cm9sTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbnRyb2wgPSBncm91cC5nZXQoY29udHJvbE5hbWUpO1xuICBpZiAoIWNvbnRyb2wpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGNvbnRyb2wgd2l0aCBjb250cm9sTmFtZSAke2NvbnRyb2xOYW1lfWAsICk7XG4gIH1cbiAgcmV0dXJuIGNvbnRyb2wudmFsdWVDaGFuZ2VzO1xufVxuLyoqXG4gKiAgVE9ETzogbW92ZSB0byB1dGlscyBsaWJyYXJ5IGFmdGVyIGxpYnJhcnkgaXMgYnVpbHRcbiAqICBBbGxvd3MgZGV2ZWxvcGVyIHRvIHBhc3MgYW4gYXJyYXkgb2Ygb3BlcmF0b3JzIGludG8gdGhlIHBpcGUgb2YgYW4gT2JzZXJ2YWJsZS5cbiAqICBVc2VmdWwgZm9yIGNyZWF0aW5nIGZ1bmN0aW9uIHdpdGggYSB2YXJpYWJsZSBhbW91bnQgb2Ygb3BlcmF0b3JzIHRvIGJlIHJ1blxuICogQHBhcmFtIG9ic2VydmFibGUgdGhlIG9ic2VydmFibGUgdG8gcGFzcyB0aGUgb3BlcmF0b3JzIHRvXG4gKiBAcGFyYW0gb3BlcmF0b3JzIGFycmF5IG9mIG9wZXJhdG9ycyB0byBwaXBlXG4gKi9cbmZ1bmN0aW9uIHBpcGVPcGVyYXRvcnNJbnRvT2JzZXJ2YWJsZShvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4sIG9wZXJhdG9yczogT3BlcmF0b3JGdW5jdGlvbjxhbnksIGFueT5bXSkge1xuICB0cnkge1xuICAgIHJldHVybiBvcGVyYXRvcnMucmVkdWNlKChvYnM6IE9ic2VydmFibGU8e30+LCBvcDogT3BlcmF0b3JGdW5jdGlvbjx7fSwge30+KSA9PiB7XG4gICAgICByZXR1cm4gb2JzLnBpcGUob3ApO1xuICAgIH0sIG9ic2VydmFibGUpO1xuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gcGlwZSBvcGVyYXRvcnMgaW50byBvYnNlcnZhYmxlJyk7XG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGxPcHRpb25zSWZGdW5jdGlvbihcbiAgb3B0aW9uczogT3B0aW9uc1R5cGUgfCBBdXRvY29tcGxldGVPcHRpb25zQ2FsbGJhY2ssXG4gIHBhcmVudEdyb3VwPzogRm9ybUdyb3VwLFxuICBzZWFyY2hTdHJpbmc/OiBzdHJpbmdcbik6IE9wdGlvbnNUeXBlIHtcbiAgcmV0dXJuIG9wdGlvbnMgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IG9wdGlvbnMocGFyZW50R3JvdXAsIHNlYXJjaFN0cmluZykgOiBvcHRpb25zO1xufVxuLyoqXG4gKiBUaGUgdXNlciBjYW4gZ2l2ZSB1cyBzZWxlY3Qgb3B0aW9ucyBhcyBhbiBhcnJheSwgYSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRvIGEgcHJvbWlzZSxcbiAqIG9yIGFuIG9ic2VydmFibGUuIFRoaXMgZnVuY3Rpb25zIGNvbnN1bWVzIGFueSBvZiB0aG9zZSBhbmQgcmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXRcbiAqIHJlc29sdmVzIGFuIGFycmF5IG9mIG9wdGlvbnNcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyBwYXNzZWQgaW4gZnJvbSB0aGUgY29uZmlnXG4gKiBAcGFyYW0gZW1wdHlNZXNzYWdlT3B0aW9uIHRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB0aGUgYXJyYXkgaXMgZW1wdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmFibGlmeU9wdGlvbnMoXG4gIG9wdGlvbnM6IE9wdGlvbnNUeXBlLFxuICBwYXJlbnRHcm91cDogRm9ybUdyb3VwLFxuICBzZWFyY2hTdHJpbmc/OiBzdHJpbmcsXG4pOiBPYnNlcnZhYmxlPFNlbGVjdE9wdGlvbltdPiB7XG4gIGNvbnN0IGNhbGxlZE9wdGlvbnMgPSBjYWxsT3B0aW9uc0lmRnVuY3Rpb24ob3B0aW9ucywgcGFyZW50R3JvdXAsIHNlYXJjaFN0cmluZyk7XG4gIC8vIGlmIG9wdGlvbnMgYXJlIGEgcHJvbWlzZVxuICBjb25zdCBvYnNlcnZhYmxlT3B0aW9ucyA9IGNhbGxlZE9wdGlvbnMgaW5zdGFuY2VvZiBQcm9taXNlXG4gIC8vIGNvbnZlcnQgdG8gb2JzZXJ2YWJsZVxuICA/IGZyb20oY2FsbGVkT3B0aW9ucylcbiAgLy8gaWYgYXJyYXkgdGhhdCBpc24ndCBlbXB0eVxuICA6IEFycmF5LmlzQXJyYXkoY2FsbGVkT3B0aW9ucykgJiYgY2FsbGVkT3B0aW9ucy5sZW5ndGhcbiAgLy8gY29udmVydCB0byBvYnNlcnZhYmxlXG4gID8gb2YoY2FsbGVkT3B0aW9ucylcbiAgLy8gaWYgb2JzZXJ2YWJsZVxuICA6IGlzT2JzZXJ2YWJsZShjYWxsZWRPcHRpb25zKVxuICAvLyByZXR1cm4gaXRcbiAgPyBjYWxsZWRPcHRpb25zXG4gIC8vIGVsc2UgYW4gZW1wdHkgYXJyYXlcbiAgOiBvZihbXSk7XG4gIHJldHVybiBvYnNlcnZhYmxlT3B0aW9ucztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBmaWVsZCBjb25maWcgaXMgZm9yIGEgZm9ybSBjb250cm9sIChub3QgYSBkaXZpZGVyLCBoZWFkaW5nIG9yIG90aGVyIG5vbi1jb250cm9sIGZpZWxkKVxuICogICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb250cm9sQ29uZmlnKGZpZWxkQ29uZmlnOiBDcmlzcHJGaWVsZENvbmZpZyk6IGZpZWxkQ29uZmlnIGlzIENyaXNwckNvbnRyb2xDb25maWcge1xuICByZXR1cm4gJ2NvbnRyb2xOYW1lJyBpbiBmaWVsZENvbmZpZztcbn1cbi8qKlxuICogYnVpbGRzIG91dCBmb3JtIGdyb3VwIGJhc2VkIG9uIGNvbmZpZ1xuICogQHBhcmFtIGNvbmZpZyBhIGNvbmZpZ3VyYXRpb24gZm9yIGEgZm9ybSBncm91cFxuICogQHBhcmFtIHZhbHVlIGFuIG9iamVjdCBvZiBpbml0aWFsIHZhbHVlcyB0byBwYXNzIGluXG4gKiBAcGFyYW0gZ3JvdXAgdGhlIGZvcm0gZ3JvdXAgdG8gbW9kaWZ5IGFuZCBidWlsZCBvdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUdyb3VwRnJvbUNvbmZpZyhjb25maWc6IEZvcm1Db25maWcsIHZhbHVlID0gbnVsbCwgZ3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pICkge1xuICBjb25maWcuZmllbGRzLmZvckVhY2goIChjb250cm9sQ29uZmlnOiBBbnlGaWVsZENvbmZpZykgPT4ge1xuICAgIGlmIChpc0NvbnRyb2xDb25maWcoY29udHJvbENvbmZpZykpIHtcbiAgICAgIC8vIHRoZW4gYWRkIGEgY29udHJvbCB0byB0aGUgZ3JvdXAgdXNpbmcgdGhlIGNvbnRyb2xOYW1lIGZyb20gY29uZmlndXJhdGlvblxuICAgICAgY29uc3Qge2NvbnRyb2xOYW1lfSA9IGNvbnRyb2xDb25maWc7XG4gICAgICAvLyBpZiB0aGVyZSdzIGEgdmFsdWUgb2JqZWN0IGFuZCBpdCBoYXMgYSBub24tbnVsbC91bmRlZmluZWQgdmFsdWUgZm9yIHRoaXMgZmllbGQgdXNlIGl0LlxuICAgICAgLy8gT3RoZXJ3aXNlLCBkZWZhdWx0IHRvIG51bGxcbiAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9ICh2YWx1ZSAmJiB2YWx1ZVtjb250cm9sTmFtZV0pID8/IG51bGw7XG4gICAgICBncm91cC5hZGRDb250cm9sKGNvbnRyb2xOYW1lLCBjcmVhdGVDb250cm9sRm9yVHlwZShjb250cm9sQ29uZmlnLCBjb250cm9sVmFsdWUpKTtcbiAgICB9XG4gIH0pO1xuICBncm91cC5zZXRWYWxpZGF0b3JzKGNvbmZpZy52YWxpZGF0b3JzKTtcbiAgcmV0dXJuIGdyb3VwO1xufVxuXG4vKipcbiAqIEFuYWx5emUgdGhlIGNvbmZpZyBhbmQgYnVpbGQgYSBmb3JtIGNvbnRyb2wgdG8gc3BlYy4gTm90aWNlIHdlIGRvbid0IHVzZSBGb3JtQnVpbGRlciBoZXJlXG4gKiBhcyB3ZSB3YW50IHRvIGtlZXAgdGhpcyBmdW5jdGlvbiBwdXJlLlxuICogQHBhcmFtIGNvbnRyb2xDb25maWcgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgY29udHJvbCB0byBidWlsZFxuICogQHBhcmFtIHZhbHVlIGFuIGluaXRpYWwgdmFsdWUgdG8gdXNlIGlmIHBhc3NlZCBpblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29udHJvbEZvclR5cGUoY29udHJvbENvbmZpZzogQW55RmllbGRDb25maWcsIHZhbHVlOiBDb250cm9sVmFsdWUgPSBudWxsKSAge1xuICAvLyBidWlsZCBmb3JtIGNvbnRyb2wgb3V0IGJhc2VkIG9uIHRoZSBjb250cm9sIHR5cGVcbiAgY29uc3QgY29udHJvbCA9IGNvbnRyb2xDb25maWcuY29udHJvbFR5cGUgPT09IENvbnRyb2xUeXBlLlNVQl9HUk9VUFxuICAgID8gYnVpbGRGb3JtR3JvdXBGcm9tQ29uZmlnKGNvbnRyb2xDb25maWcgYXMgRm9ybUNvbmZpZywgdmFsdWUpXG4gICAgOiBjb250cm9sQ29uZmlnLmNvbnRyb2xUeXBlID09PSBDb250cm9sVHlwZS5HUk9VUF9MSVNUXG4gICAgPyBuZXcgRm9ybUFycmF5KFtdLCAoY29udHJvbENvbmZpZyBhcyBGb3JtR3JvdXBMaXN0Q29uZmlnKS52YWxpZGF0b3JzKVxuICAgIDogbmV3IEZvcm1Db250cm9sKFxuICAgICAgdmFsdWUgfHwgbnVsbCxcbiAgICAgIChjb250cm9sQ29uZmlnIGFzIENyaXNwckNvbnRyb2xDb25maWcpLnZhbGlkYXRvcnNcbiAgICApO1xuXG4gIHJldHVybiBjb250cm9sO1xufVxuXG4vKipcbiAqIEEgYmFzaWMgZmlsdGVyIGZ1bmN0aW9uIHRoYXQgZmlsdGVycyB0aGUgc2VhcmNoIHN0cmluZyBhZ2FpbnN0IHRoZSBsYWJlbCBvZiB0aGUgb3B0aW9ucyBvYmplY3RcbiAqIEBwYXJhbSBvcHRpb25zIHRoZSBhcnJheSBvZiBvcHRpb25zIHRvIGZpbHRlclxuICogQHBhcmFtIHNlYXJjaFN0cmluZyB0aGUgc3RyaW5nIGZyb20gdGhlIGlucHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJPcHRpb25zQnlMYWJlbChvcHRpb25zOiBTZWxlY3RPcHRpb25bXSwgc2VhcmNoU3RyaW5nOiBzdHJpbmcpICB7XG4gIHJldHVybiBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4ge1xuICAgIHJldHVybiBvcHRpb24ubGFiZWwgJiYgb3B0aW9uLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpO1xuICB9KTtcbn1cbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9mb3JtLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUNMLFdBQVcsR0FDWixNQUFNLDhCQUE4QixDQUFBO0FBQ3JDLE9BQU8sRUFDTCxJQUFJLEVBRUosRUFBRSxFQUNGLFlBQVksRUFDWixhQUFhLEVBRWQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBZSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXNCN0Q7Ozs7O0VBS0U7QUFDRixNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBZ0IsRUFBRSxNQUEwQjtJQUNoRixrREFBa0Q7SUFDbEQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNoRSxPQUFPLGVBQWUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUk7UUFDcEQsb0ZBQW9GO1FBQ3BGLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLGVBQXdCLEVBQUUsRUFBRTtZQUMvQix3R0FBd0c7WUFDeEcscUhBQXFIO1lBQ3JILElBQUssTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxZQUFZLFFBQVEsRUFBRztnQkFDNUQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNO2dCQUFFLE9BQU8sZUFBZSxDQUFDO2FBQUU7UUFD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T0FBdUIsRUFBRSxZQUFvQjtJQUNoRixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDN0IsT0FBTyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgU2VsZWN0T3B0aW9uLFxuICBBbnlGaWVsZENvbmZpZyxcbiAgRm9ybUNvbmZpZyxcbiAgRm9ybUdyb3VwTGlzdENvbmZpZyxcbiAgQ3Jpc3ByQ29udHJvbENvbmZpZyxcbiAgT3B0aW9uc1R5cGUsXG4gIEF1dG9jb21wbGV0ZU9wdGlvbnNDYWxsYmFjayxcbiAgQ3Jpc3ByRmllbGRDb25maWcsXG4gIENvbnRyb2xWYWx1ZVxufSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge1xuICBDb250cm9sVHlwZSxcbn0gZnJvbSAnLi9tb2RlbHMvY3Jpc3ByLWZpZWxkLmNvbmZpZydcbmltcG9ydCB7XG4gIGZyb20sXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBpc09ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIE9wZXJhdG9yRnVuY3Rpb25cbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB2YWx1ZUluIH0gZnJvbSAnLi9mb3JtLm9wZXJhdG9ycyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogRFlOQU1JQyBGT1JNIFVUSUxTOiBhIGNvbGxlY3Rpb24gb2YgcHVyZS9tb3N0bHkgcHVyZSBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZnVsIGJvdGggaW50ZXJuYWxseSBhbmQgZm9yXG4gKiBkZXZlbG9waW5nIHRoZSBjb25zdW1pbmcgYXBwLlxuICpcbiAqIFRoZXkgYXJlIHNvcnRlZCBieSB1c2UgY2FzZTogYnVpbGRpbmcgb3V0IHRoZSBmb3JtIG9iamVjdDsgaGVscGVyIGZ1bmN0aW9ucyB0byB1c2Ugd2l0aCB0aGUgZGlzYWJsZWQkIGZ1bmN0aW9uO1xuICogaGVscGVyIGZ1bmN0aW9ucyB0byB1c2Ugd2l0aCB0aGUgY29tcHV0ZSBmaWVsZCBmdW5jdGlvbjsgYW5kIG90aGVyIGxvZ2ljIHNoYXJlZCBiZXR3ZWVuIGNvbXBvbmVudHNcbiAqL1xuXG4vKipcbiAqIFJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIHdpdGggY2hlY2tDb250cm9sRm9yVmFsdWVzIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tDb250cm9sQ29uZmlnIHtcbiAgLy8gdGhlIGNvbnRyb2wgbmFtZSB0byB3YXRjaFxuICBjb250cm9sTmFtZTogc3RyaW5nO1xuICAvLyB0aGUgdmFsdWVzIHRvIHdhdGNoIGZvclxuICB2YWx1ZXM6IHN0cmluZ1tdO1xuICAvLyB0aGUgZnVuY3Rpb24gdG8gcnVuIG9uIHRoZSBib29sZWFuIHJldHVybmVkIGJ5IHRoZSB3YXRjaGVyXG4gIGV2YWx1YXRlPzogKGlzVmFsdWVJblZhbHVlczogYm9vbGVhbikgPT4gYm9vbGVhbjtcbn1cblxuLyoqXG4qIFdhdGNoZXMgYSBzaW5nbGUgY29udHJvbCBmb3IgYSBsaXN0IG9mIHZhbHVlcywgcmV0dXJucyB0cnVlIHdoZW4gZmllbGQgdmFsdWUgbWF0Y2hlcyBhbnkgdmFsdWUgaW4gbGlzdFxuKiB1bmxlc3MgYW4gZXZhbHVhdGUgbWV0aG9kIGlzIGZvdW5kIG9uIGNvbmZpZywgaW4gd2hpY2ggY2FzZSB0aGF0IG1ldGhvZCBpcyBydW4gb24gdGhlIHJldHVybmVkIGJvb2xlYW4gdmFsdWVcbiogQHBhcmFtIGdyb3VwIHRoZSBkaXJlY3QgcGFyZW50IG9mIHRoZSBmaWVsZCB3ZSB3YW50IHRvIHdhdGNoXG4qIEBwYXJhbSBjb25maWdcbiovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb250cm9sRm9yVmFsdWVzKGdyb3VwOiBGb3JtR3JvdXAsIGNvbmZpZzogQ2hlY2tDb250cm9sQ29uZmlnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIC8vIGNoZWNrIHRoYXQgYWxsIHRoZSBwaWVjZXMgd2UgbmVlZCBhcmUgYXZhaWxhYmxlXG4gIGlmIChjb25maWcgJiYgY29uZmlnLmNvbnRyb2xOYW1lICYmIEFycmF5LmlzQXJyYXkoY29uZmlnLnZhbHVlcykpIHtcbiAgICByZXR1cm4gZ2V0VmFsdWVDaGFuZ2VzKGdyb3VwLCBjb25maWcuY29udHJvbE5hbWUpLnBpcGUoXG4gICAgICAvLyByZXR1cm4gYSBib29sZWFuLCB0cnVlIGlmIHZhbHVlIGlzIGluIHRoZSB2YWx1ZXMgYmVpbmcgd2F0Y2ggZm9yLCBvdGhlcndpc2UgZmFsc2VcbiAgICAgIHZhbHVlSW4oY29uZmlnLnZhbHVlcyksXG4gICAgICBtYXAoKGlzVmFsdWVJblZhbHVlczogYm9vbGVhbikgPT4ge1xuICAgICAgICAvLyBzaW5jZSB3ZSBjYW4gb25seSBjaGVjayBpZiB0aGUgdmFsdWUgaXMgaW4gdGhlIGxpc3Qgb2Ygd2F0Y2hlZCB2YWx1ZXMsIHRoZSBldmFsdWF0ZSBmdW5jdGlvbiBnaXZlcyB1c1xuICAgICAgICAvLyBhIGNoYW5jZSB0byBtYWtlIG90aGVyIGRlY2lzaW9ucyBiYXNlZCBvbiBpZiB0aGUgYm9vbGVhbiByZXR1cm5lZCwgZS5nLiByZXR1cm4gdHJ1ZSBpZiB2YWx1ZSBub3QgaW4gd2F0Y2hlZCB2YWx1ZXNcbiAgICAgICAgaWYgKCBjb25maWcuZXZhbHVhdGUgJiYgY29uZmlnLmV2YWx1YXRlIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbmZpZy5ldmFsdWF0ZShpc1ZhbHVlSW5WYWx1ZXMpO1xuICAgICAgICB9IGVsc2UgeyByZXR1cm4gaXNWYWx1ZUluVmFsdWVzOyB9XG4gICAgICB9KVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy9cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBmb3IgcnVubmluZyB0aGUgY2hlY2tDb250cm9sc0ZvclZhbHVlcyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja0NvbnRyb2xzQ29uZmlnIHtcbiAgLy8gYW4gYXJyYXkgb2YgY29udHJvbHMgdG8gd2F0Y2ggYW5kIHRoZSB2YWx1ZXMgdG8gY2hlY2sgZm9yXG4gIHdhdGNoQ29uZmlnczogQ2hlY2tDb250cm9sQ29uZmlnW107XG4gIC8vIHRoZSBmdW5jdGlvbiB0byBydW4gYWdhaW5zdCB0aGUgYXJyYXkgb2YgY3VycmVudCBmaWVsZCB2YWx1ZUluIHJlc3BvbnNlc1xuICBldmFsdWF0ZT86ICggYm9vbHM6IGJvb2xlYW5bXSApID0+IGJvb2xlYW47XG59XG5cbi8qKlxuICogV2F0Y2hlcyBhIGxpc3Qgb2YgZmllbGRzIGZvciBpbmRpdmlkdWFsIGxpc3RzIG9mIHZhbHVlcyByZXR1cm5pbmcgdHJ1ZSB3aGVuIGFueSBmaWVsZCBjb250YWlucyBvbmVcbiAqIG9mIHRoZSB2YWx1ZXMgYmVpbmcgd2F0Y2hlZCBmb3IsIG9yIG9wdGlvbmFsbHkgcnVubmluZyBhIGZ1bmN0aW9uIG9uIHRoZSBhcnJheSBvZiByZXNvbHZlZCBib29sZWFuc1xuICogZnJvbSB0aGUgbGlzdGVkIGZpZWxkcyBhbmQgcmV0dXJuaW5nIGEgYm9vbGVhblxuICogQHBhcmFtIGdyb3VwIHRoZSBmb3JtIGdyb3VwIHRoYXQgaGFzIHRoZSBmaWVsZHMgdG8gd2F0Y2ggYXMgZGlyZWN0IGRlc2NlbmRhbnRzXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjb25maWd1cmF0aW9uIHRvIHVzZSB3aGVuIGNhbGxpbmcgdGhlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NvbnRyb2xzRm9yVmFsdWVzKGdyb3VwOiBGb3JtR3JvdXAsIGNvbmZpZzogQ2hlY2tDb250cm9sc0NvbmZpZyk6IE9ic2VydmFibGU8YW55PiB7XG4gIC8vIGlmIG5vIGNvbmZpZyBpcyBwYXNzZWQgd2UganVzdCB3YW50IHRvIHNob3cgdGhlIGZpZWxkLCBzbyB3ZSByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiB0cnVlXG4gIGlmICghY29uZmlnIHx8ICFjb25maWcud2F0Y2hDb25maWdzKSB7IHJldHVybiBvZih0cnVlKTsgfVxuICAvLyB3ZSBydW4gY2hlY2tDb250cm9sRm9yVmFsdWVzIG9uIGV2ZXJ5IGNvbnRyb2wgaW4gdGhlIGxpc3Qgb2YgV2F0Y2hDb25maWdzIGNyZWF0aW5nXG4gIC8vIGFuIGFycmF5IG9mIE9ic2VydmFibGUgd2F0Y2hpbmcgZmllbGRzIGZvciB2YWx1ZXNcbiAgY29uc3QgZmllbGRUcmlnZ2VycyA9IGNvbmZpZy53YXRjaENvbmZpZ3MubWFwKHdhdGNoQ29uZmlnID0+IHtcbiAgICAvLyByZXNvbHZlcyBhIGJvb2xlYW4sIHRydWUgd2hlbiBmaWVsZCB2YWx1ZSBtYXRjaGVzIGEgd2F0Y2hlZCB2YWx1ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgcmV0dXJuIGNoZWNrQ29udHJvbEZvclZhbHVlcyhncm91cCwgd2F0Y2hDb25maWcpO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluZUxhdGVzdChcbiAgICBmaWVsZFRyaWdnZXJzXG4gICkucGlwZShcbiAgICBzdGFydFdpdGgoW3RydWVdKSxcbiAgICBtYXAoKGJvb2xlYW5zOiBib29sZWFuW10pID0+IHtcbiAgICAgIC8vIGlmIHRoZSB1c2VyIHBhc3NlZCBhbiBldmFsdWF0ZSBmdW5jdGlvbiB1c2UgaXRcbiAgICAgIGlmIChjb25maWcuZXZhbHVhdGUgJiYgY29uZmlnLmV2YWx1YXRlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5ldmFsdWF0ZShib29sZWFucyk7XG4gICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2Ugd2UgcmV0dXJuIHRydWUgaWYgYW55IG9mIHRoZSB3YXRjaGVkIGZpZWxkcyByZXNvbHZlIHRvIHRydWVcbiAgICAgICAgcmV0dXJuIGJvb2xlYW5zLnNvbWUoYm9vbCA9PiBib29sKTtcbiAgICAgIH1cbiAgICB9KVxuICApO1xufVxuXG4vKipcbiAqIFRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyB0aGUgY29tcHV0ZVZhbHVlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZUZpZWxkQ29uZmlnPFQgPSBhbnksIFJUID0gYW55PiB7XG4gIC8vIGFycmF5IG9mIGNvbnRyb2wgbmFtZXMgd2hvJ3MgdmFsdWVzIHdlIHdhbnQgdG8gd2F0Y2hcbiAgY29udHJvbE5hbWVzVG9XYXRjaDogc3RyaW5nW107XG4gIC8vIHRoZSBmdW5jdGlvbiB3ZSB3YW50IHRvIGNhbGwgb24gdGhlIGFycmF5IG9mIHdhdGNoZWQgdmFsdWVzIHRvIGNvbXB1dGUgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIHdlXG4gIGNvbXB1dGVDYWxsYmFjazogKFxuICAgIHZhbHVlczogKFQpW11cbiAgKSA9PiBSVDtcbn1cblxuLyoqXG4gKiBXYXRjaGVzIHZhbHVlcyBvbiBhbiBhcnJheSBvZiBmaWVsZHMsIGNvbXB1dGluZyB0aGVpciB2YWx1ZXMgYXMgdGhleSBjaGFuZ2VcbiAqIEBwYXJhbSBncm91cCB0aGUgZ3JvdXAgdG8gZ2V0IHRoZSBmaWVsZHMgZnJvbSwgZm9yIG5vdyBpdCBjYW4gb25seSBiZSB0aGUgcGFyZW50IG9mIHRoZSBjb21wdXRlZCBmaWVsZFxuICogQHBhcmFtIGNvbXB1dGVGaWVsZHNDb25maWcgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBkcml2ZXMgdGhlIGNvbXB1dGF0aW9uLCBob2xkcyB0aGUgbmFtZXMgdG8gd2F0Y2ggYW5kIHRoZVxuICogY29tcHV0YXRpb24gZnVuY3Rpb24gdGhhdCBnZXQgY2FsbGVkIGFnYWluc3QgdGhlIGFycmF5IG9mIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVZhbHVlRnJvbUZpZWxkcyhncm91cDogRm9ybUdyb3VwLCBjb21wdXRlRmllbGRzQ29uZmlnOiBDb21wdXRlRmllbGRDb25maWcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAvLyBUT0RPOiBiZXR0ZXIgY2hlY2tpbmdcbiAgY29uc3QgeyBjb250cm9sTmFtZXNUb1dhdGNoIH0gPSBjb21wdXRlRmllbGRzQ29uZmlnO1xuICAvL2NyZWF0ZXMgYW4gb2JzZXJ2YWJsZSBsaXN0ZW5lciBmb3IgZWFjaCBjb250cm9sIGluIHRoZSBjb250cm9sTmFtZXNUb1dhdGNoIGFycmF5XG4gIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgIGNvbnRyb2xOYW1lc1RvV2F0Y2gubWFwKGNvbnRyb2xOYW1lVG9XYXRjaCA9PiBnZXRWYWx1ZUNoYW5nZXMoZ3JvdXAsIGNvbnRyb2xOYW1lVG9XYXRjaCkpXG4gICkucGlwZShcbiAgICAvLyBlYWNoIHRpbWUgYSB3YXRjaGVkIGZpZWxkIHZhbHVlcyBjaGFuZ2VzIGEgbmV3IGFycmF5IG9mIHRoZSBsYXRlc3QgZmllbGQgdmFsdWVzIGlzIHBpcGUgdGhyb3VnaCB0byB0aGVcbiAgICAvLyBjb21wdXRlIGNhbGxiYWNrLiBXaGljaCBydW5zIHRoZSB1c2VycyBsb2dpYyBvbiB0aGUgdmFsdWVzIHRvIGNvbXB1dGUgdGhpcyBmaWVsZHMgdmFsdWVcbiAgICBtYXAodmFsdWVzQXJyYXkgPT4gY29tcHV0ZUZpZWxkc0NvbmZpZy5jb21wdXRlQ2FsbGJhY2sodmFsdWVzQXJyYXkpKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBBIHNpbXBsZSB3cmFwcGVyIGZvciBkb2luZyBlcnJvciBjaGVja2luZyBhcm91bmQgZ2V0dGluZyB0aGUgdmFsdWVDaGFuZ2VzIG9ic2VydmFibGUgZnJvbSBhIGNvbnRyb2wgb24gYSBmb3JtIGdyb3VwXG4gKiBAcGFyYW0gZ3JvdXAgdGhlIGZvcm0gZ3JvdXAgd2Ugd2FudCB0byBwdWxsIHRoZSBvYnNlcnZhYmxlIGZyb21cbiAqIEBwYXJhbSBjb250cm9sTmFtZSB0aGUgbmFtZSBvZiB0aGUgY29udHJvbCB3aG8ncyB2YWx1ZSB3ZSB3YW50IHRvIHN1YnNjcmliZSB0b1xuICovXG5mdW5jdGlvbiBnZXRWYWx1ZUNoYW5nZXMoZ3JvdXA6IEZvcm1Hcm91cCwgY29udHJvbE5hbWU6IHN0cmluZykge1xuICBjb25zdCBjb250cm9sID0gZ3JvdXAuZ2V0KGNvbnRyb2xOYW1lKTtcbiAgaWYgKCFjb250cm9sKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBjb250cm9sIHdpdGggY29udHJvbE5hbWUgJHtjb250cm9sTmFtZX1gLCApO1xuICB9XG4gIHJldHVybiBjb250cm9sLnZhbHVlQ2hhbmdlcztcbn1cbi8qKlxuICogIFRPRE86IG1vdmUgdG8gdXRpbHMgbGlicmFyeSBhZnRlciBsaWJyYXJ5IGlzIGJ1aWx0XG4gKiAgQWxsb3dzIGRldmVsb3BlciB0byBwYXNzIGFuIGFycmF5IG9mIG9wZXJhdG9ycyBpbnRvIHRoZSBwaXBlIG9mIGFuIE9ic2VydmFibGUuXG4gKiAgVXNlZnVsIGZvciBjcmVhdGluZyBmdW5jdGlvbiB3aXRoIGEgdmFyaWFibGUgYW1vdW50IG9mIG9wZXJhdG9ycyB0byBiZSBydW5cbiAqIEBwYXJhbSBvYnNlcnZhYmxlIHRoZSBvYnNlcnZhYmxlIHRvIHBhc3MgdGhlIG9wZXJhdG9ycyB0b1xuICogQHBhcmFtIG9wZXJhdG9ycyBhcnJheSBvZiBvcGVyYXRvcnMgdG8gcGlwZVxuICovXG5mdW5jdGlvbiBwaXBlT3BlcmF0b3JzSW50b09ic2VydmFibGUob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxhbnk+LCBvcGVyYXRvcnM6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBhbnk+W10pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gb3BlcmF0b3JzLnJlZHVjZSgob2JzOiBPYnNlcnZhYmxlPHt9Piwgb3A6IE9wZXJhdG9yRnVuY3Rpb248e30sIHt9PikgPT4ge1xuICAgICAgcmV0dXJuIG9icy5waXBlKG9wKTtcbiAgICB9LCBvYnNlcnZhYmxlKTtcbiAgfSBjYXRjaCB7XG4gICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIHBpcGUgb3BlcmF0b3JzIGludG8gb2JzZXJ2YWJsZScpO1xuICAgIHJldHVybiBvZihudWxsKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxsT3B0aW9uc0lmRnVuY3Rpb24oXG4gIG9wdGlvbnM6IE9wdGlvbnNUeXBlIHwgQXV0b2NvbXBsZXRlT3B0aW9uc0NhbGxiYWNrLFxuICBwYXJlbnRHcm91cD86IEZvcm1Hcm91cCxcbiAgc2VhcmNoU3RyaW5nPzogc3RyaW5nXG4pOiBPcHRpb25zVHlwZSB7XG4gIHJldHVybiBvcHRpb25zIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBvcHRpb25zKHBhcmVudEdyb3VwLCBzZWFyY2hTdHJpbmcpIDogb3B0aW9ucztcbn1cbi8qKlxuICogVGhlIHVzZXIgY2FuIGdpdmUgdXMgc2VsZWN0IG9wdGlvbnMgYXMgYW4gYXJyYXksIGEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHByb21pc2UsXG4gKiBvciBhbiBvYnNlcnZhYmxlLiBUaGlzIGZ1bmN0aW9ucyBjb25zdW1lcyBhbnkgb2YgdGhvc2UgYW5kIHJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0XG4gKiByZXNvbHZlcyBhbiBhcnJheSBvZiBvcHRpb25zXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgcGFzc2VkIGluIGZyb20gdGhlIGNvbmZpZ1xuICogQHBhcmFtIGVtcHR5TWVzc2FnZU9wdGlvbiB0aGUgbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gdGhlIGFycmF5IGlzIGVtcHR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZhYmxpZnlPcHRpb25zKFxuICBvcHRpb25zOiBPcHRpb25zVHlwZSxcbiAgcGFyZW50R3JvdXA6IEZvcm1Hcm91cCxcbiAgc2VhcmNoU3RyaW5nPzogc3RyaW5nLFxuKTogT2JzZXJ2YWJsZTxTZWxlY3RPcHRpb25bXT4ge1xuICBjb25zdCBjYWxsZWRPcHRpb25zID0gY2FsbE9wdGlvbnNJZkZ1bmN0aW9uKG9wdGlvbnMsIHBhcmVudEdyb3VwLCBzZWFyY2hTdHJpbmcpO1xuICAvLyBpZiBvcHRpb25zIGFyZSBhIHByb21pc2VcbiAgY29uc3Qgb2JzZXJ2YWJsZU9wdGlvbnMgPSBjYWxsZWRPcHRpb25zIGluc3RhbmNlb2YgUHJvbWlzZVxuICAvLyBjb252ZXJ0IHRvIG9ic2VydmFibGVcbiAgPyBmcm9tKGNhbGxlZE9wdGlvbnMpXG4gIC8vIGlmIGFycmF5IHRoYXQgaXNuJ3QgZW1wdHlcbiAgOiBBcnJheS5pc0FycmF5KGNhbGxlZE9wdGlvbnMpICYmIGNhbGxlZE9wdGlvbnMubGVuZ3RoXG4gIC8vIGNvbnZlcnQgdG8gb2JzZXJ2YWJsZVxuICA/IG9mKGNhbGxlZE9wdGlvbnMpXG4gIC8vIGlmIG9ic2VydmFibGVcbiAgOiBpc09ic2VydmFibGUoY2FsbGVkT3B0aW9ucylcbiAgLy8gcmV0dXJuIGl0XG4gID8gY2FsbGVkT3B0aW9uc1xuICAvLyBlbHNlIGFuIGVtcHR5IGFycmF5XG4gIDogb2YoW10pO1xuICByZXR1cm4gb2JzZXJ2YWJsZU9wdGlvbnM7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZmllbGQgY29uZmlnIGlzIGZvciBhIGZvcm0gY29udHJvbCAobm90IGEgZGl2aWRlciwgaGVhZGluZyBvciBvdGhlciBub24tY29udHJvbCBmaWVsZClcbiAqICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJvbENvbmZpZyhmaWVsZENvbmZpZzogQ3Jpc3ByRmllbGRDb25maWcpOiBmaWVsZENvbmZpZyBpcyBDcmlzcHJDb250cm9sQ29uZmlnIHtcbiAgcmV0dXJuICdjb250cm9sTmFtZScgaW4gZmllbGRDb25maWc7XG59XG4vKipcbiAqIGJ1aWxkcyBvdXQgZm9ybSBncm91cCBiYXNlZCBvbiBjb25maWdcbiAqIEBwYXJhbSBjb25maWcgYSBjb25maWd1cmF0aW9uIGZvciBhIGZvcm0gZ3JvdXBcbiAqIEBwYXJhbSB2YWx1ZSBhbiBvYmplY3Qgb2YgaW5pdGlhbCB2YWx1ZXMgdG8gcGFzcyBpblxuICogQHBhcmFtIGdyb3VwIHRoZSBmb3JtIGdyb3VwIHRvIG1vZGlmeSBhbmQgYnVpbGQgb3V0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZvcm1Hcm91cEZyb21Db25maWcoY29uZmlnOiBGb3JtQ29uZmlnLCB2YWx1ZSA9IG51bGwsIGdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KSApIHtcbiAgY29uZmlnLmZpZWxkcy5mb3JFYWNoKCAoY29udHJvbENvbmZpZzogQW55RmllbGRDb25maWcpID0+IHtcbiAgICBpZiAoaXNDb250cm9sQ29uZmlnKGNvbnRyb2xDb25maWcpKSB7XG4gICAgICAvLyB0aGVuIGFkZCBhIGNvbnRyb2wgdG8gdGhlIGdyb3VwIHVzaW5nIHRoZSBjb250cm9sTmFtZSBmcm9tIGNvbmZpZ3VyYXRpb25cbiAgICAgIGNvbnN0IHtjb250cm9sTmFtZX0gPSBjb250cm9sQ29uZmlnO1xuICAgICAgaWYgKGdyb3VwLmdldChjb250cm9sTmFtZSkpIHtcbiAgICAgICAgZ3JvdXAucmVtb3ZlQ29udHJvbChjb250cm9sTmFtZSk7XG4gICAgICB9XG4gICAgICAvLyBpZiB0aGVyZSdzIGEgdmFsdWUgb2JqZWN0IGFuZCBpdCBoYXMgYSBub24tbnVsbC91bmRlZmluZWQgdmFsdWUgZm9yIHRoaXMgZmllbGQgdXNlIGl0LlxuICAgICAgLy8gT3RoZXJ3aXNlLCBkZWZhdWx0IHRvIG51bGxcbiAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9ICh2YWx1ZSAmJiB2YWx1ZVtjb250cm9sTmFtZV0pID8/IG51bGw7XG4gICAgICBjb25zdCBjb250cm9sID0gY3JlYXRlQ29udHJvbEZvclR5cGUoY29udHJvbENvbmZpZywgY29udHJvbFZhbHVlKVxuICAgICAgZ3JvdXAuYWRkQ29udHJvbChjb250cm9sTmFtZSwgY29udHJvbCk7XG4gICAgfVxuICB9KTtcbiAgZ3JvdXAuc2V0VmFsaWRhdG9ycyhjb25maWcudmFsaWRhdG9ycyk7XG4gIHJldHVybiBncm91cDtcbn1cblxuLyoqXG4gKiBBbmFseXplIHRoZSBjb25maWcgYW5kIGJ1aWxkIGEgZm9ybSBjb250cm9sIHRvIHNwZWMuIE5vdGljZSB3ZSBkb24ndCB1c2UgRm9ybUJ1aWxkZXIgaGVyZVxuICogYXMgd2Ugd2FudCB0byBrZWVwIHRoaXMgZnVuY3Rpb24gcHVyZS5cbiAqIEBwYXJhbSBjb250cm9sQ29uZmlnIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGNvbnRyb2wgdG8gYnVpbGRcbiAqIEBwYXJhbSB2YWx1ZSBhbiBpbml0aWFsIHZhbHVlIHRvIHVzZSBpZiBwYXNzZWQgaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRyb2xGb3JUeXBlKGNvbnRyb2xDb25maWc6IEFueUZpZWxkQ29uZmlnLCB2YWx1ZTogQ29udHJvbFZhbHVlID0gbnVsbCkgIHtcbiAgLy8gYnVpbGQgZm9ybSBjb250cm9sIG91dCBiYXNlZCBvbiB0aGUgY29udHJvbCB0eXBlXG4gIGNvbnN0IGNvbnRyb2wgPSBjb250cm9sQ29uZmlnLmNvbnRyb2xUeXBlID09PSBDb250cm9sVHlwZS5TVUJfR1JPVVBcbiAgICA/IGJ1aWxkRm9ybUdyb3VwRnJvbUNvbmZpZyhjb250cm9sQ29uZmlnIGFzIEZvcm1Db25maWcsIHZhbHVlKVxuICAgIDogY29udHJvbENvbmZpZy5jb250cm9sVHlwZSA9PT0gQ29udHJvbFR5cGUuR1JPVVBfTElTVFxuICAgID8gbmV3IEZvcm1BcnJheShbXSwgKGNvbnRyb2xDb25maWcgYXMgRm9ybUdyb3VwTGlzdENvbmZpZykudmFsaWRhdG9ycylcbiAgICA6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgIHZhbHVlIHx8IG51bGwsXG4gICAgICAoY29udHJvbENvbmZpZyBhcyBDcmlzcHJDb250cm9sQ29uZmlnKS52YWxpZGF0b3JzXG4gICAgKTtcblxuICByZXR1cm4gY29udHJvbDtcbn1cblxuLyoqXG4gKiBBIGJhc2ljIGZpbHRlciBmdW5jdGlvbiB0aGF0IGZpbHRlcnMgdGhlIHNlYXJjaCBzdHJpbmcgYWdhaW5zdCB0aGUgbGFiZWwgb2YgdGhlIG9wdGlvbnMgb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9ucyB0aGUgYXJyYXkgb2Ygb3B0aW9ucyB0byBmaWx0ZXJcbiAqIEBwYXJhbSBzZWFyY2hTdHJpbmcgdGhlIHN0cmluZyBmcm9tIHRoZSBpbnB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyT3B0aW9uc0J5TGFiZWwob3B0aW9uczogU2VsZWN0T3B0aW9uW10sIHNlYXJjaFN0cmluZzogc3RyaW5nKSAge1xuICByZXR1cm4gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsICYmIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKTtcbiAgfSk7XG59XG4iXX0=
@@ -244,10 +244,14 @@ function buildFormGroupFromConfig(config, value = null, group = new FormGroup({}
244
244
  if (isControlConfig(controlConfig)) {
245
245
  // then add a control to the group using the controlName from configuration
246
246
  const { controlName } = controlConfig;
247
+ if (group.get(controlName)) {
248
+ group.removeControl(controlName);
249
+ }
247
250
  // if there's a value object and it has a non-null/undefined value for this field use it.
248
251
  // Otherwise, default to null
249
252
  const controlValue = (_a = (value && value[controlName])) !== null && _a !== void 0 ? _a : null;
250
- group.addControl(controlName, createControlForType(controlConfig, controlValue));
253
+ const control = createControlForType(controlConfig, controlValue);
254
+ group.addControl(controlName, control);
251
255
  }
252
256
  });
253
257
  group.setValidators(config.validators);
@@ -1577,7 +1581,7 @@ class CrisprFieldDirective {
1577
1581
  this.renderer = renderer;
1578
1582
  this.cdr = cdr;
1579
1583
  }
1580
- ngOnInit() {
1584
+ ngOnChanges() {
1581
1585
  return __awaiter(this, void 0, void 0, function* () {
1582
1586
  /**
1583
1587
  * create component and set values from config on its instance
@@ -1610,7 +1614,7 @@ class CrisprFieldDirective {
1610
1614
  }
1611
1615
  }
1612
1616
  CrisprFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
1613
- CrisprFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFieldDirective, selector: "[crisprField]", inputs: { config: "config", group: "group", value: "value" }, ngImport: i0 });
1617
+ CrisprFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFieldDirective, selector: "[crisprField]", inputs: { config: "config", group: "group", value: "value" }, usesOnChanges: true, ngImport: i0 });
1614
1618
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFieldDirective, decorators: [{
1615
1619
  type: Directive,
1616
1620
  args: [{
@@ -1672,9 +1676,11 @@ class CrisprFormComponent {
1672
1676
  this.statusChanges = this.form.statusChanges;
1673
1677
  this.subs = [];
1674
1678
  }
1675
- ngOnInit() {
1679
+ ngOnChanges(changes) {
1676
1680
  // build out the form, note that we pass in the form as the third argument and the function modifies it
1677
- buildFormGroupFromConfig(this.config, this.value, this.form);
1681
+ if (changes.config || changes.value || changes.form) {
1682
+ buildFormGroupFromConfig(this.config, this.value, this.form);
1683
+ }
1678
1684
  }
1679
1685
  handleSubmit() {
1680
1686
  this.form.markAllAsTouched();
@@ -1685,7 +1691,7 @@ class CrisprFormComponent {
1685
1691
  }
1686
1692
  }
1687
1693
  CrisprFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1688
- CrisprFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFormComponent, selector: "crispr-form", inputs: { config: "config", form: "form", value: "value" }, outputs: { submitted: "submitted", valueChanges: "valueChanges", statusChanges: "statusChanges" }, viewQueries: [{ propertyName: "submitTrigger", first: true, predicate: ["submitTrigger"], descendants: true }], ngImport: i0, template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"], directives: [{ type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.ControlErrorsFormDirective, selector: "form", inputs: ["errorDictionary"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }], pipes: { "initialControlValue": InitialControlValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
1694
+ CrisprFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: CrisprFormComponent, selector: "crispr-form", inputs: { config: "config", form: "form", value: "value" }, outputs: { submitted: "submitted", valueChanges: "valueChanges", statusChanges: "statusChanges" }, viewQueries: [{ propertyName: "submitTrigger", first: true, predicate: ["submitTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"], directives: [{ type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.ControlErrorsFormDirective, selector: "form", inputs: ["errorDictionary"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }], pipes: { "initialControlValue": InitialControlValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
1689
1695
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CrisprFormComponent, decorators: [{
1690
1696
  type: Component,
1691
1697
  args: [{ selector: 'crispr-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"] }]