@valtimo/components 12.47.0 → 12.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,6 +24,9 @@ export class FormIoIbanComponent {
24
24
  this.ibanForm.controls.iban.setValue(this.value);
25
25
  this.ibanForm.controls.iban.setValidators(this.required ? [Validators.required, ibanValidator()] : [ibanValidator()]);
26
26
  this.ibanForm.controls.iban.updateValueAndValidity();
27
+ if (this.value) {
28
+ this.ibanForm.controls.iban.markAsTouched();
29
+ }
27
30
  if (this.disabled) {
28
31
  Object.keys(this.ibanForm.controls).forEach(key => {
29
32
  this.ibanForm?.get(key)?.disable();
@@ -38,9 +41,7 @@ export class FormIoIbanComponent {
38
41
  this._subscriptions.unsubscribe();
39
42
  }
40
43
  onValueChange() {
41
- this.value = this.ibanForm.valid
42
- ? this.ibanForm.controls.iban.value
43
- : [this.ibanForm.value];
44
+ this.value = this.ibanForm.controls.iban.value ?? '';
44
45
  this.valueChange.emit(this.value);
45
46
  }
46
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormIoIbanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -58,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
58
59
  }], valueChange: [{
59
60
  type: Output
60
61
  }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby1pYmFuL2liYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWlvL2Zvcm0taW8taWJhbi9pYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQUdsQzs7R0FFRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFMaEM7UUFPa0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoRCxhQUFRLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDOUIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztTQUMxQixDQUFDLENBQUM7UUFDYyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FrQ3REO0lBaENRLGVBQWU7UUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQzNFLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUVyRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8sYUFBYTtRQUNsQixJQUFJLENBQUMsS0FBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSztZQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDbkMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0F6Q1UsbUJBQW1CO21HQUFuQixtQkFBbUIscUtDZGhDLHFtQkFrQkE7OzRGREphLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxjQUFjOzhCQUtSLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNXLFdBQVc7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge2liYW5WYWxpZGF0b3J9IGZyb20gJy4vaWJhbi52YWxpZGF0b3JzJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Rm9ybWlvQ3VzdG9tQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzJztcblxuLyoqXG4gKiBDdXN0b20gZm9ybWlvIGNvbXBvbmVudCBmb3IgaWJhbiBiYW5rIGFjY291bnRzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWliYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWJhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2liYW4uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUlvSWJhbkNvbXBvbmVudCBpbXBsZW1lbnRzIEZvcm1pb0N1c3RvbUNvbXBvbmVudDxhbnk+LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgdmFsdWU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBpYmFuRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGliYW46IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmliYW5Gb3JtLmNvbnRyb2xzLmliYW4uc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmliYW5Gb3JtLmNvbnRyb2xzLmliYW4uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgdGhpcy5yZXF1aXJlZCA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBpYmFuVmFsaWRhdG9yKCldIDogW2liYW5WYWxpZGF0b3IoKV1cbiAgICAgICk7XG4gICAgICB0aGlzLmliYW5Gb3JtLmNvbnRyb2xzLmliYW4udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmliYW5Gb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgdGhpcy5pYmFuRm9ybT8uZ2V0KGtleSk/LmRpc2FibGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICB0aGlzLmliYW5Gb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIG9uVmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgKHRoaXMudmFsdWUgYXMgYW55KSA9IHRoaXMuaWJhbkZvcm0udmFsaWRcbiAgICAgID8gdGhpcy5pYmFuRm9ybS5jb250cm9scy5pYmFuLnZhbHVlXG4gICAgICA6IFt0aGlzLmliYW5Gb3JtLnZhbHVlXTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpYmFuRm9ybS1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImliYW5Gb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgIDxpbnB1dCBjZHNUZXh0IGlkPVwiaWJhblwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiaWJhblwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybWlvLWVycm9ycyBpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGliYW5Gb3JtLmNvbnRyb2xzLmliYW4uaW52YWxpZCAmJlxuICAgICAgICAoaWJhbkZvcm0uY29udHJvbHMuaWJhbi50b3VjaGVkIHx8ICFpYmFuRm9ybS5jb250cm9scy5pYmFuLnByaXN0aW5lKSAmJlxuICAgICAgICBpYmFuRm9ybS5jb250cm9scz8uaWJhbj8uZXJyb3JzXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHQgZXJyb3JcIj5cbiAgICAgICAge3sgJ2Zvcm1pb1RyYW5zbGF0aW9ucy5mb3JtaW9JYmFuQ29tcG9uZW50LmVycm9yTWVzc2FnZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby1pYmFuL2liYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWlvL2Zvcm0taW8taWJhbi9pYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQUdsQzs7R0FFRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFMaEM7UUFTa0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRCxhQUFRLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDOUIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztTQUMxQixDQUFDLENBQUM7UUFDYyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FvQ3REO0lBbENRLGVBQWU7UUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQzNFLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUVyRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNoRCxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDckMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBN0NVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHFLQ2RoQyxxbUJBa0JBOzs0RkRKYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsY0FBYzs4QkFPUixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVyxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtpYmFuVmFsaWRhdG9yfSBmcm9tICcuL2liYW4udmFsaWRhdG9ycyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Zvcm1pb0N1c3RvbUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kdWxlcyc7XG5cbi8qKlxuICogQ3VzdG9tIGZvcm1pbyBjb21wb25lbnQgZm9yIGliYW4gYmFuayBhY2NvdW50cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1pYmFuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2liYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pYmFuLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Jb0liYW5Db21wb25lbnRcbiAgaW1wbGVtZW50cyBGb3JtaW9DdXN0b21Db21wb25lbnQ8c3RyaW5nPiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHB1YmxpYyB2YWx1ZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgcHVibGljIGliYW5Gb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgaWJhbjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaWJhbkZvcm0uY29udHJvbHMuaWJhbi5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuaWJhbkZvcm0uY29udHJvbHMuaWJhbi5zZXRWYWxpZGF0b3JzKFxuICAgICAgICB0aGlzLnJlcXVpcmVkID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIGliYW5WYWxpZGF0b3IoKV0gOiBbaWJhblZhbGlkYXRvcigpXVxuICAgICAgKTtcbiAgICAgIHRoaXMuaWJhbkZvcm0uY29udHJvbHMuaWJhbi51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuaWJhbkZvcm0uY29udHJvbHMuaWJhbi5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuaWJhbkZvcm0uY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICB0aGlzLmliYW5Gb3JtPy5nZXQoa2V5KT8uZGlzYWJsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIHRoaXMuaWJhbkZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pYmFuRm9ybS5jb250cm9scy5pYmFuLnZhbHVlID8/ICcnO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImliYW5Gb3JtLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiaWJhbkZvcm1cIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgPGlucHV0IGNkc1RleHQgaWQ9XCJpYmFuXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJpYmFuXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtaW8tZXJyb3JzIGludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgaWJhbkZvcm0uY29udHJvbHMuaWJhbi5pbnZhbGlkICYmXG4gICAgICAgIChpYmFuRm9ybS5jb250cm9scy5pYmFuLnRvdWNoZWQgfHwgIWliYW5Gb3JtLmNvbnRyb2xzLmliYW4ucHJpc3RpbmUpICYmXG4gICAgICAgIGliYW5Gb3JtLmNvbnRyb2xzPy5pYmFuPy5lcnJvcnNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dCBlcnJvclwiPlxuICAgICAgICB7eyAnZm9ybWlvVHJhbnNsYXRpb25zLmZvcm1pb0liYW5Db21wb25lbnQuZXJyb3JNZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,6 +1,9 @@
1
+ import { TranslateService } from '@ngx-translate/core';
1
2
  import { FormIoIbanComponent } from './iban.component';
2
3
  import { registerCustomFormioComponent } from '../../../modules';
3
- const COMPONENT_OPTIONS = {
4
+ import { isValidIban } from './iban.validators';
5
+ const ERROR_MESSAGE_TRANSLATION_KEY = 'formioTranslations.formioIbanComponent.errorMessage';
6
+ const getComponentOptions = (injector) => ({
4
7
  type: 'iban',
5
8
  selector: 'valtimo-iban',
6
9
  title: 'Iban',
@@ -15,8 +18,11 @@ const COMPONENT_OPTIONS = {
15
18
  required: false,
16
19
  },
17
20
  },
18
- };
21
+ customValidator: (value) => isValidIban(value)
22
+ ? null
23
+ : injector.get(TranslateService).instant(ERROR_MESSAGE_TRANSLATION_KEY),
24
+ });
19
25
  export function registerFormioIbanComponent(injector) {
20
- registerCustomFormioComponent(COMPONENT_OPTIONS, FormIoIbanComponent, injector);
26
+ registerCustomFormioComponent(getComponentOptions(injector), FormIoIbanComponent, injector);
21
27
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5mb3JtaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby1pYmFuL2liYW4uZm9ybWlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBNEIsNkJBQTZCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRixNQUFNLGlCQUFpQixHQUE4QjtJQUNuRCxJQUFJLEVBQUUsTUFBTTtJQUNaLFFBQVEsRUFBRSxjQUFjO0lBQ3hCLEtBQUssRUFBRSxNQUFNO0lBQ2IsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsR0FBRyxFQUFFLE1BQU07UUFDWCxTQUFTLEVBQUUsS0FBSztRQUNoQixTQUFTLEVBQUUsSUFBSTtRQUNmLFFBQVEsRUFBRTtZQUNSLFFBQVEsRUFBRSxLQUFLO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFFBQWtCO0lBQzVELDZCQUE2QixDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2xGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUlvSWJhbkNvbXBvbmVudH0gZnJvbSAnLi9pYmFuLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1pb0N1c3RvbUNvbXBvbmVudEluZm8sIHJlZ2lzdGVyQ3VzdG9tRm9ybWlvQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzJztcblxuY29uc3QgQ09NUE9ORU5UX09QVElPTlM6IEZvcm1pb0N1c3RvbUNvbXBvbmVudEluZm8gPSB7XG4gIHR5cGU6ICdpYmFuJyxcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWliYW4nLFxuICB0aXRsZTogJ0liYW4nLFxuICBncm91cDogJ2Jhc2ljJyxcbiAgaWNvbjogJ2JhbmsnLFxuICBzY2hlbWE6IHtcbiAgICBsYWJlbDogJ0liYW4gY29tcG9uZW50JyxcbiAgICBrZXk6ICdpYmFuJyxcbiAgICBoaWRlTGFiZWw6IGZhbHNlLFxuICAgIHRhYmxlVmlldzogdHJ1ZSxcbiAgICB2YWxpZGF0ZToge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJGb3JtaW9JYmFuQ29tcG9uZW50KGluamVjdG9yOiBJbmplY3Rvcikge1xuICByZWdpc3RlckN1c3RvbUZvcm1pb0NvbXBvbmVudChDT01QT05FTlRfT1BUSU9OUywgRm9ybUlvSWJhbkNvbXBvbmVudCwgaW5qZWN0b3IpO1xufVxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5mb3JtaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby1pYmFuL2liYW4uZm9ybWlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBNEIsNkJBQTZCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFOUMsTUFBTSw2QkFBNkIsR0FBRyxxREFBcUQsQ0FBQztBQUU1RixNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBa0IsRUFBNkIsRUFBRSxDQUFDLENBQUM7SUFDOUUsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsY0FBYztJQUN4QixLQUFLLEVBQUUsTUFBTTtJQUNiLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLEdBQUcsRUFBRSxNQUFNO1FBQ1gsU0FBUyxFQUFFLEtBQUs7UUFDaEIsU0FBUyxFQUFFLElBQUk7UUFDZixRQUFRLEVBQUU7WUFDUixRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGO0lBQ0QsZUFBZSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDakMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNoQixDQUFDLENBQUMsSUFBSTtRQUNOLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDO0NBQzVFLENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxRQUFrQjtJQUM1RCw2QkFBNkIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rvcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGb3JtSW9JYmFuQ29tcG9uZW50fSBmcm9tICcuL2liYW4uY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWlvQ3VzdG9tQ29tcG9uZW50SW5mbywgcmVnaXN0ZXJDdXN0b21Gb3JtaW9Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uL21vZHVsZXMnO1xuaW1wb3J0IHtpc1ZhbGlkSWJhbn0gZnJvbSAnLi9pYmFuLnZhbGlkYXRvcnMnO1xuXG5jb25zdCBFUlJPUl9NRVNTQUdFX1RSQU5TTEFUSU9OX0tFWSA9ICdmb3JtaW9UcmFuc2xhdGlvbnMuZm9ybWlvSWJhbkNvbXBvbmVudC5lcnJvck1lc3NhZ2UnO1xuXG5jb25zdCBnZXRDb21wb25lbnRPcHRpb25zID0gKGluamVjdG9yOiBJbmplY3Rvcik6IEZvcm1pb0N1c3RvbUNvbXBvbmVudEluZm8gPT4gKHtcbiAgdHlwZTogJ2liYW4nLFxuICBzZWxlY3RvcjogJ3ZhbHRpbW8taWJhbicsXG4gIHRpdGxlOiAnSWJhbicsXG4gIGdyb3VwOiAnYmFzaWMnLFxuICBpY29uOiAnYmFuaycsXG4gIHNjaGVtYToge1xuICAgIGxhYmVsOiAnSWJhbiBjb21wb25lbnQnLFxuICAgIGtleTogJ2liYW4nLFxuICAgIGhpZGVMYWJlbDogZmFsc2UsXG4gICAgdGFibGVWaWV3OiB0cnVlLFxuICAgIHZhbGlkYXRlOiB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgfSxcbiAgY3VzdG9tVmFsaWRhdG9yOiAodmFsdWU6IHN0cmluZykgPT5cbiAgICBpc1ZhbGlkSWJhbih2YWx1ZSlcbiAgICAgID8gbnVsbFxuICAgICAgOiBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSkuaW5zdGFudChFUlJPUl9NRVNTQUdFX1RSQU5TTEFUSU9OX0tFWSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRm9ybWlvSWJhbkNvbXBvbmVudChpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgcmVnaXN0ZXJDdXN0b21Gb3JtaW9Db21wb25lbnQoZ2V0Q29tcG9uZW50T3B0aW9ucyhpbmplY3RvciksIEZvcm1Jb0liYW5Db21wb25lbnQsIGluamVjdG9yKTtcbn1cbiJdfQ==
@@ -1,26 +1,30 @@
1
1
  /**
2
- * Custom iban validator for angular forms.
3
2
  * Checks if the iban is valid.
4
3
  * First move the first four chracters from the beginngin to the end of the string.
5
4
  * Change the letter to a numeric representation.
6
5
  * Calculate the modulo in a parts, because javascript cannot accuratly calculate the modulus for large numbers.
7
6
  *
7
+ * @returns True if the iban is valid or the value is empty.
8
+ */
9
+ export function isValidIban(value) {
10
+ const valueString = value == null ? '' : String(value);
11
+ if (!valueString) {
12
+ return true;
13
+ }
14
+ const rearranged = valueString.substring(4) + valueString.substring(0, 4);
15
+ const numeric = Array.from(rearranged)
16
+ .map(c => (isNaN(parseInt(c, 10)) ? (c.charCodeAt(0) - 55).toString() : c))
17
+ .join('');
18
+ return (Array.from(numeric)
19
+ .map(c => parseInt(c, 10))
20
+ .reduce((remainder, value) => (remainder * 10 + value) % 97, 0) === 1);
21
+ }
22
+ /**
23
+ * Custom iban validator for angular forms.
24
+ *
8
25
  * @returns Null if the iban is valid or the value is an empty string, else return an object with isIbanValid property.
9
26
  */
10
27
  export function ibanValidator() {
11
- return (control) => {
12
- const valueString = String(control.value);
13
- if (valueString.match(/^$/)) {
14
- return null;
15
- }
16
- const rearranged = valueString.substring(4, valueString.length) + valueString.substring(0, 4);
17
- const numeric = Array.from(rearranged)
18
- .map(c => (isNaN(parseInt(c, 10)) ? (c.charCodeAt(0) - 55).toString() : c))
19
- .join('');
20
- const isValidIban = Array.from(numeric)
21
- .map(c => parseInt(c, 10))
22
- .reduce((remainder, value) => (remainder * 10 + value) % 97, 0);
23
- return isValidIban === 1 ? null : { isIbanValid: 'IBAN voldoet niet' };
24
- };
28
+ return (control) => isValidIban(control.value) ? null : { isIbanValid: 'IBAN voldoet niet' };
25
29
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi52YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWlvL2Zvcm0taW8taWJhbi9pYmFuLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNuQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDMUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1osTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDcEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUN6QixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sV0FBVyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBDdXN0b20gaWJhbiB2YWxpZGF0b3IgZm9yIGFuZ3VsYXIgZm9ybXMuXG4gKiBDaGVja3MgaWYgdGhlIGliYW4gaXMgdmFsaWQuXG4gKiBGaXJzdCBtb3ZlIHRoZSBmaXJzdCBmb3VyIGNocmFjdGVycyBmcm9tIHRoZSBiZWdpbm5naW4gdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuICogQ2hhbmdlIHRoZSBsZXR0ZXIgdG8gYSBudW1lcmljIHJlcHJlc2VudGF0aW9uLlxuICogQ2FsY3VsYXRlIHRoZSBtb2R1bG8gaW4gYSBwYXJ0cywgYmVjYXVzZSBqYXZhc2NyaXB0IGNhbm5vdCBhY2N1cmF0bHkgY2FsY3VsYXRlIHRoZSBtb2R1bHVzIGZvciBsYXJnZSBudW1iZXJzLlxuICpcbiAqIEByZXR1cm5zIE51bGwgaWYgdGhlIGliYW4gaXMgdmFsaWQgb3IgdGhlIHZhbHVlIGlzIGFuIGVtcHR5IHN0cmluZywgZWxzZSByZXR1cm4gYW4gb2JqZWN0IHdpdGggaXNJYmFuVmFsaWQgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpYmFuVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgdmFsdWVTdHJpbmcgPSBTdHJpbmcoY29udHJvbC52YWx1ZSk7XG4gICAgaWYgKHZhbHVlU3RyaW5nLm1hdGNoKC9eJC8pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVhcnJhbmdlZCA9IHZhbHVlU3RyaW5nLnN1YnN0cmluZyg0LCB2YWx1ZVN0cmluZy5sZW5ndGgpICsgdmFsdWVTdHJpbmcuc3Vic3RyaW5nKDAsIDQpO1xuICAgIGNvbnN0IG51bWVyaWMgPSBBcnJheS5mcm9tKHJlYXJyYW5nZWQpXG4gICAgICAubWFwKGMgPT4gKGlzTmFOKHBhcnNlSW50KGMsIDEwKSkgPyAoYy5jaGFyQ29kZUF0KDApIC0gNTUpLnRvU3RyaW5nKCkgOiBjKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICBjb25zdCBpc1ZhbGlkSWJhbiA9IEFycmF5LmZyb20obnVtZXJpYylcbiAgICAgIC5tYXAoYyA9PiBwYXJzZUludChjLCAxMCkpXG4gICAgICAucmVkdWNlKChyZW1haW5kZXIsIHZhbHVlKSA9PiAocmVtYWluZGVyICogMTAgKyB2YWx1ZSkgJSA5NywgMCk7XG4gICAgcmV0dXJuIGlzVmFsaWRJYmFuID09PSAxID8gbnVsbCA6IHtpc0liYW5WYWxpZDogJ0lCQU4gdm9sZG9ldCBuaWV0J307XG4gIH07XG59XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi52YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWlvL2Zvcm0taW8taWJhbi9pYmFuLnZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYztJQUN4QyxNQUFNLFdBQVcsR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUNuQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1osT0FBTyxDQUNMLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ2hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDekIsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ3hFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFLENBQzNELFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBpYmFuIGlzIHZhbGlkLlxuICogRmlyc3QgbW92ZSB0aGUgZmlyc3QgZm91ciBjaHJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uZ2luIHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbiAqIENoYW5nZSB0aGUgbGV0dGVyIHRvIGEgbnVtZXJpYyByZXByZXNlbnRhdGlvbi5cbiAqIENhbGN1bGF0ZSB0aGUgbW9kdWxvIGluIGEgcGFydHMsIGJlY2F1c2UgamF2YXNjcmlwdCBjYW5ub3QgYWNjdXJhdGx5IGNhbGN1bGF0ZSB0aGUgbW9kdWx1cyBmb3IgbGFyZ2UgbnVtYmVycy5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpYmFuIGlzIHZhbGlkIG9yIHRoZSB2YWx1ZSBpcyBlbXB0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRJYmFuKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGNvbnN0IHZhbHVlU3RyaW5nID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHZhbHVlKTtcbiAgaWYgKCF2YWx1ZVN0cmluZykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IHJlYXJyYW5nZWQgPSB2YWx1ZVN0cmluZy5zdWJzdHJpbmcoNCkgKyB2YWx1ZVN0cmluZy5zdWJzdHJpbmcoMCwgNCk7XG4gIGNvbnN0IG51bWVyaWMgPSBBcnJheS5mcm9tKHJlYXJyYW5nZWQpXG4gICAgLm1hcChjID0+IChpc05hTihwYXJzZUludChjLCAxMCkpID8gKGMuY2hhckNvZGVBdCgwKSAtIDU1KS50b1N0cmluZygpIDogYykpXG4gICAgLmpvaW4oJycpO1xuICByZXR1cm4gKFxuICAgIEFycmF5LmZyb20obnVtZXJpYylcbiAgICAgIC5tYXAoYyA9PiBwYXJzZUludChjLCAxMCkpXG4gICAgICAucmVkdWNlKChyZW1haW5kZXIsIHZhbHVlKSA9PiAocmVtYWluZGVyICogMTAgKyB2YWx1ZSkgJSA5NywgMCkgPT09IDFcbiAgKTtcbn1cblxuLyoqXG4gKiBDdXN0b20gaWJhbiB2YWxpZGF0b3IgZm9yIGFuZ3VsYXIgZm9ybXMuXG4gKlxuICogQHJldHVybnMgTnVsbCBpZiB0aGUgaWJhbiBpcyB2YWxpZCBvciB0aGUgdmFsdWUgaXMgYW4gZW1wdHkgc3RyaW5nLCBlbHNlIHJldHVybiBhbiBvYmplY3Qgd2l0aCBpc0liYW5WYWxpZCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGliYW5WYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+XG4gICAgaXNWYWxpZEliYW4oY29udHJvbC52YWx1ZSkgPyBudWxsIDoge2lzSWJhblZhbGlkOiAnSUJBTiB2b2xkb2V0IG5pZXQnfTtcbn1cbiJdfQ==
@@ -29,14 +29,14 @@ export class TimelineComponent {
29
29
  }) || []);
30
30
  }
31
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimelineComponent, selector: "valtimo-timeline", inputs: { items: "items", actions: "actions" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimelineComponent, selector: "valtimo-timeline", inputs: { items: "items", actions: "actions" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ (action?.label | translate) || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimelineComponent, decorators: [{
35
35
  type: Component,
36
- args: [{ selector: 'valtimo-timeline', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"] }]
36
+ args: [{ selector: 'valtimo-timeline', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ (action?.label | translate) || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"] }]
37
37
  }], propDecorators: { items: [{
38
38
  type: Input
39
39
  }], actions: [{
40
40
  type: Input
41
41
  }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90aW1lbGluZS90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RpbWVsaW5lL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFRL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUlyQixtQkFBbUIsQ0FBQyxJQUFrQixFQUFFLE9BQW1CO1FBQ2hFLE9BQU8sQ0FDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDNUIsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXBFLElBQUksUUFBUSxJQUFJLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ1QsQ0FBQztJQUNKLENBQUM7K0dBakJVLGlCQUFpQjttR0FBakIsaUJBQWlCLHdHQ3ZCOUIsbWpGQTRFQTs7NEZEckRhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxrQkFBa0I7OEJBS25CLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGltZWxpbmVJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXRpbWVsaW5lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGltZWxpbmVDb21wb25lbnQge1xuICBASW5wdXQoKSBpdGVtczogQXJyYXk8VGltZWxpbmVJdGVtPjtcbiAgQElucHV0KCkgYWN0aW9ucz86IGFueVtdO1xuXG4gIHB1YmxpYyBnZXRTdXBwb3J0ZWRBY3Rpb25zKGl0ZW06IFRpbWVsaW5lSXRlbSwgYWN0aW9uczogQXJyYXk8YW55Pik6IEFycmF5PGFueT4ge1xuICAgIHJldHVybiAoXG4gICAgICBhY3Rpb25zPy5maWx0ZXIoYWN0aW9uID0+IHtcbiAgICAgICAgY29uc3QgYWN0aW9uSWQgPSBhY3Rpb24/LmlkO1xuICAgICAgICBjb25zdCBpdGVtU3VwcG9ydGVkQWN0aW9ucyA9IEFycmF5LmlzQXJyYXkoaXRlbS5zdXBwb3J0ZWRBY3Rpb25JZHMpO1xuXG4gICAgICAgIGlmIChhY3Rpb25JZCAmJiBpdGVtU3VwcG9ydGVkQWN0aW9ucykge1xuICAgICAgICAgIHJldHVybiBpdGVtLnN1cHBvcnRlZEFjdGlvbklkcy5pbmNsdWRlcyhhY3Rpb25JZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pIHx8IFtdXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGlkPVwibm8tcmVzdWx0c1wiIGNsYXNzPVwicC01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID09PSAwXCI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYi01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID4gMFwiPlxuICA8dWwgY2xhc3M9XCJ0aW1lbGluZSBtYi0wIHB5LTVcIj5cbiAgICA8bGkgY2xhc3M9XCJ0aW1lbGluZS1pdGVtIHN0YXR1cy1kb25lXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1kYXRlXCI+XG4gICAgICAgIDxzcGFuPnt7IGl0ZW0uZGF0ZSB9fTwvc3Bhbj5cblxuICAgICAgICA8YnIgLz5cblxuICAgICAgICA8c3Bhbj57eyBpdGVtLnRpbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRpbWVsaW5lLWNvbnRlbnQgbXQtMVwiXG4gICAgICAgICpuZ0lmPVwie3N1cHBvcnRlZEFjdGlvbnM6IGdldFN1cHBvcnRlZEFjdGlvbnMoaXRlbSwgYWN0aW9ucyl9IGFzIHZhcnNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtaGVhZGVyIHAtMFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmUtYXV0aG9yXCI+e3sgaXRlbS51c2VyIH19PC9zcGFuPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIGFjdGlvbnMtZHJvcGRvd25cIiAqbmdJZj1cInZhcnMuc3VwcG9ydGVkQWN0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICAgIGlkPVwiZHJvcGRvd25NZW51XCJcbiAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhY3Rpb24taWNvbiBpY29uIG1kaSBtZGktZG90cy12ZXJ0aWNhbFwiPjwvaT5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZhcnMuc3VwcG9ydGVkQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jYWxsYmFjayhpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcC0yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uaWNvbiAhPT0gbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaVwiIFtuZ0NsYXNzXT1cImFjdGlvbi5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAge3sgYWN0aW9uPy5sYWJlbCB8fCAnLScgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnIgLz5cblxuICAgICAgICAgIDxwIGNsYXNzPVwidGltZWxpbmUtYWN0aXZpdHlcIj57eyBpdGVtLmFjdGl2aXR5IH19PC9wPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVsaW5lLXN1bW1hcnlcIj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyBpdGVtLnN1bW1hcnlUcmFuc2xhdGlvbktleSB8IHRyYW5zbGF0ZTogaXRlbS5zdW1tYXJ5VHJhbnNsYXRpb25QYXJhbXMgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90aW1lbGluZS90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RpbWVsaW5lL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFRL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUlyQixtQkFBbUIsQ0FBQyxJQUFrQixFQUFFLE9BQW1CO1FBQ2hFLE9BQU8sQ0FDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDNUIsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXBFLElBQUksUUFBUSxJQUFJLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ1QsQ0FBQztJQUNKLENBQUM7K0dBakJVLGlCQUFpQjttR0FBakIsaUJBQWlCLHdHQ3ZCOUIsaWtGQTRFQTs7NEZEckRhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxrQkFBa0I7OEJBS25CLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGltZWxpbmVJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXRpbWVsaW5lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGltZWxpbmVDb21wb25lbnQge1xuICBASW5wdXQoKSBpdGVtczogQXJyYXk8VGltZWxpbmVJdGVtPjtcbiAgQElucHV0KCkgYWN0aW9ucz86IGFueVtdO1xuXG4gIHB1YmxpYyBnZXRTdXBwb3J0ZWRBY3Rpb25zKGl0ZW06IFRpbWVsaW5lSXRlbSwgYWN0aW9uczogQXJyYXk8YW55Pik6IEFycmF5PGFueT4ge1xuICAgIHJldHVybiAoXG4gICAgICBhY3Rpb25zPy5maWx0ZXIoYWN0aW9uID0+IHtcbiAgICAgICAgY29uc3QgYWN0aW9uSWQgPSBhY3Rpb24/LmlkO1xuICAgICAgICBjb25zdCBpdGVtU3VwcG9ydGVkQWN0aW9ucyA9IEFycmF5LmlzQXJyYXkoaXRlbS5zdXBwb3J0ZWRBY3Rpb25JZHMpO1xuXG4gICAgICAgIGlmIChhY3Rpb25JZCAmJiBpdGVtU3VwcG9ydGVkQWN0aW9ucykge1xuICAgICAgICAgIHJldHVybiBpdGVtLnN1cHBvcnRlZEFjdGlvbklkcy5pbmNsdWRlcyhhY3Rpb25JZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pIHx8IFtdXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGlkPVwibm8tcmVzdWx0c1wiIGNsYXNzPVwicC01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID09PSAwXCI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYi01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID4gMFwiPlxuICA8dWwgY2xhc3M9XCJ0aW1lbGluZSBtYi0wIHB5LTVcIj5cbiAgICA8bGkgY2xhc3M9XCJ0aW1lbGluZS1pdGVtIHN0YXR1cy1kb25lXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1kYXRlXCI+XG4gICAgICAgIDxzcGFuPnt7IGl0ZW0uZGF0ZSB9fTwvc3Bhbj5cblxuICAgICAgICA8YnIgLz5cblxuICAgICAgICA8c3Bhbj57eyBpdGVtLnRpbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRpbWVsaW5lLWNvbnRlbnQgbXQtMVwiXG4gICAgICAgICpuZ0lmPVwie3N1cHBvcnRlZEFjdGlvbnM6IGdldFN1cHBvcnRlZEFjdGlvbnMoaXRlbSwgYWN0aW9ucyl9IGFzIHZhcnNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtaGVhZGVyIHAtMFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmUtYXV0aG9yXCI+e3sgaXRlbS51c2VyIH19PC9zcGFuPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIGFjdGlvbnMtZHJvcGRvd25cIiAqbmdJZj1cInZhcnMuc3VwcG9ydGVkQWN0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgZC1ibG9ja1wiXG4gICAgICAgICAgICAgIGlkPVwiZHJvcGRvd25NZW51XCJcbiAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhY3Rpb24taWNvbiBpY29uIG1kaSBtZGktZG90cy12ZXJ0aWNhbFwiPjwvaT5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZhcnMuc3VwcG9ydGVkQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jYWxsYmFjayhpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcC0yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uaWNvbiAhPT0gbnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaVwiIFtuZ0NsYXNzXT1cImFjdGlvbi5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAge3sgKGFjdGlvbj8ubGFiZWwgfCB0cmFuc2xhdGUpIHx8ICctJyB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxiciAvPlxuXG4gICAgICAgICAgPHAgY2xhc3M9XCJ0aW1lbGluZS1hY3Rpdml0eVwiPnt7IGl0ZW0uYWN0aXZpdHkgfX08L3A+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtc3VtbWFyeVwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0uc3VtbWFyeVRyYW5zbGF0aW9uS2V5IHwgdHJhbnNsYXRlOiBpdGVtLnN1bW1hcnlUcmFuc2xhdGlvblBhcmFtcyB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
@@ -161,6 +161,32 @@ export function createCustomFormioComponent(customComponentOptions) {
161
161
  this.bindCustomOptions();
162
162
  return changed;
163
163
  }
164
+ // Lets a custom component reject a value through customValidator, instead of having to encode
165
+ // the invalidity into the value itself.
166
+ // @ts-ignore
167
+ checkComponentValidity(data, dirty, row, options = {}) {
168
+ // @ts-ignore
169
+ const result = super.checkComponentValidity(data, dirty, row, options);
170
+ const customValidator = customComponentOptions.customValidator;
171
+ if (!customValidator ||
172
+ this.shouldSkipValidation(data, dirty, row) ||
173
+ this.isEmpty(this.dataValue)) {
174
+ return result;
175
+ }
176
+ const applyCustomValidator = (valid) => {
177
+ if (!valid)
178
+ return false;
179
+ const message = customValidator(this.dataValue);
180
+ if (!message)
181
+ return true;
182
+ if (!options.silentCheck)
183
+ this.setCustomValidity(message, dirty);
184
+ return false;
185
+ };
186
+ return typeof result?.then === 'function'
187
+ ? Promise.resolve(result).then(applyCustomValidator)
188
+ : applyCustomValidator(result);
189
+ }
164
190
  // Add extra option to support multiple value (e.g. datagrid) with single angular component (disableMultiValueWrapper)
165
191
  useWrapper() {
166
192
  return (this.component.hasOwnProperty('multiple') &&
@@ -181,4 +207,4 @@ export function createCustomFormioComponent(customComponentOptions) {
181
207
  }
182
208
  };
183
209
  }
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWN1c3RvbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9tb2R1bGVzL2N1c3RvbS1mb3JtaW8tY29tcG9uZW50L2NyZWF0ZS1jdXN0b20tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFjLFVBQVUsRUFBMkIsS0FBSyxJQUFJLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoRyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUN2RCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBRTNELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxzQkFBaUQ7SUFDM0YsT0FBTyxNQUFNLGVBQWdCLFNBQVEsa0JBQWtCO2lCQUM5QyxhQUFRLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQUFBakUsQ0FBa0U7UUFLakYsTUFBTSxDQUFDLE1BQU07WUFDWCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDL0IsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNO2dCQUNoQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsSUFBSTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksYUFBYTtZQUNmLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxVQUFVO1lBQ1osT0FBTyxzQkFBc0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ25ELENBQUM7UUFF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Z0JBQy9ELFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7QnVpbGRlckluZm8sIENvbXBvbmVudHMsIEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hLCBVdGlscyBhcyBGb3JtaW9VdGlsc30gZnJvbSAnZm9ybWlvanMnO1xuaW1wb3J0IHtGb3JtaW9DdXN0b21Db21wb25lbnRJbmZvLCBGb3JtaW9DdXN0b21FbGVtZW50LCBGb3JtaW9FdmVudH0gZnJvbSAnLi9lbGVtZW50cy5jb21tb24nO1xuaW1wb3J0IHtjbG9uZSwgaXNBcnJheSwgaXNOaWx9IGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IEJhc2VJbnB1dENvbXBvbmVudCA9IENvbXBvbmVudHMuY29tcG9uZW50cy5pbnB1dDtcbmNvbnN0IFRleHRmaWVsZENvbXBvbmVudCA9IENvbXBvbmVudHMuY29tcG9uZW50cy50ZXh0ZmllbGQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21Gb3JtaW9Db21wb25lbnQoY3VzdG9tQ29tcG9uZW50T3B0aW9uczogRm9ybWlvQ3VzdG9tQ29tcG9uZW50SW5mbykge1xuICByZXR1cm4gY2xhc3MgQ3VzdG9tQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50IHtcbiAgICBzdGF0aWMgZWRpdEZvcm0gPSBjdXN0b21Db21wb25lbnRPcHRpb25zLmVkaXRGb3JtIHx8IFRleHRmaWVsZENvbXBvbmVudC5lZGl0Rm9ybTtcbiAgICBpZCA9IEZvcm1pb1V0aWxzLmdldFJhbmRvbUNvbXBvbmVudElkKCk7XG4gICAgdHlwZSA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudHlwZTtcbiAgICBfY3VzdG9tQW5ndWxhckVsZW1lbnQ6IEZvcm1pb0N1c3RvbUVsZW1lbnQ7XG5cbiAgICBzdGF0aWMgc2NoZW1hKCkge1xuICAgICAgcmV0dXJuIEJhc2VJbnB1dENvbXBvbmVudC5zY2hlbWEoe1xuICAgICAgICAuLi5jdXN0b21Db21wb25lbnRPcHRpb25zLnNjaGVtYSxcbiAgICAgICAgdHlwZTogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50eXBlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkZWZhdWx0U2NoZW1hKCkge1xuICAgICAgcmV0dXJuIEN1c3RvbUNvbXBvbmVudC5zY2hlbWEoKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGVtcHR5VmFsdWUoKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5lbXB0eVZhbHVlIHx8IG51bGw7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBidWlsZGVySW5mbygpOiBCdWlsZGVySW5mbyB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50aXRsZSxcbiAgICAgICAgZ3JvdXA6IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZ3JvdXAsXG4gICAgICAgIGljb246IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuaWNvbixcbiAgICAgICAgd2VpZ2h0OiBjdXN0b21Db21wb25lbnRPcHRpb25zLndlaWdodCxcbiAgICAgICAgZG9jdW1lbnRhdGlvbjogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5kb2N1bWVudGF0aW9uLFxuICAgICAgICBzY2hlbWE6IEN1c3RvbUNvbXBvbmVudC5zY2hlbWEoKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgY29tcG9uZW50OiBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSxcbiAgICAgIG9wdGlvbnM6IGFueSxcbiAgICAgIGRhdGE6IGFueVxuICAgICkge1xuICAgICAgc3VwZXIoXG4gICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgc2FuaXRpemVDb25maWc6IHtcbiAgICAgICAgICAgIGFkZFRhZ3M6IFtjdXN0b21Db21wb25lbnRPcHRpb25zLnNlbGVjdG9yXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkYXRhXG4gICAgICApO1xuXG4gICAgICBpZiAoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5leHRyYVZhbGlkYXRvcnMpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0b3JzID0gdGhpcy52YWxpZGF0b3JzLmNvbmNhdChjdXN0b21Db21wb25lbnRPcHRpb25zLmV4dHJhVmFsaWRhdG9ycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWxlbWVudEluZm8oKSB7XG4gICAgICBjb25zdCBpbmZvID0gc3VwZXIuZWxlbWVudEluZm8oKTtcbiAgICAgIGluZm8udHlwZSA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3I7XG4gICAgICBpbmZvLmNoYW5nZUV2ZW50ID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5jaGFuZ2VFdmVudCB8fCAndmFsdWVDaGFuZ2UnO1xuICAgICAgaW5mby5hdHRyID0ge1xuICAgICAgICAuLi5pbmZvLmF0dHIsXG4gICAgICAgIGNsYXNzOiBpbmZvLmF0dHIuY2xhc3MucmVwbGFjZSgnZm9ybS1jb250cm9sJywgJ2Zvcm0tY29udHJvbC1jdXN0b20tZmllbGQnKSwgLy8gcmVtb3ZlIHRoZSBmb3JtLWNvbnRyb2wgY2xhc3MgYXMgdGhlIGN1c3RvbSBhbmd1bGFyIGNvbXBvbmVudCBtYXkgbG9vayBkaWZmZXJlbnRcbiAgICAgIH07XG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0IGlucHV0SW5mbygpIHtcbiAgICAgIGNvbnN0IGluZm8gPSB7XG4gICAgICAgIGlkOiB0aGlzLmtleSxcbiAgICAgICAgLi4udGhpcy5lbGVtZW50SW5mbygpLFxuICAgICAgfTtcbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIHJlbmRlckVsZW1lbnQodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgY29uc3QgaW5mbyA9IHRoaXMuaW5wdXRJbmZvO1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyVGVtcGxhdGUoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy50ZW1wbGF0ZSB8fCAnaW5wdXQnLCB7XG4gICAgICAgIGlucHV0OiBpbmZvLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5kZXgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhdHRhY2goZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgIGxldCBzdXBlckF0dGFjaCA9IHN1cGVyLmF0dGFjaChlbGVtZW50KTtcblxuICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zZWxlY3Rvcik7XG5cbiAgICAgIC8vIEJpbmQgdGhlIGN1c3RvbSBvcHRpb25zIGFuZCB0aGUgdmFsaWRhdGlvbnMgdG8gdGhlIEFuZ3VsYXIgY29tcG9uZW50J3MgaW5wdXRzIChmbGF0dGVuZWQpXG4gICAgICBpZiAodGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQpIHtcbiAgICAgICAgLy8gVG8gbWFrZSBzdXJlIHdlIGhhdmUgd29ya2luZyBpbnB1dCBpbiBJRS4uLlxuICAgICAgICAvLyBJRSBkb2Vzbid0IHJlbmRlciBpdCBwcm9wZXJseSBpZiBpdCdzIG5vdCB2aXNpYmxlIG9uIHRoZSBzY3JlZW5cbiAgICAgICAgLy8gZHVlIHRvIHRoZSB3aG9sZSBzdHJ1Y3R1cmUgYXBwbGllZCB2aWEgaW5uZXJIVE1MIHRvIHRoZSBwYXJlbnRcbiAgICAgICAgLy8gc28gd2UgbmVlZCB0byB1c2UgYXBwZW5kQ2hpbGRcbiAgICAgICAgaWYgKCF0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25nLXZlcnNpb24nKSkge1xuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgncmVmJyk7XG5cbiAgICAgICAgICBjb25zdCBuZXdDdXN0b21FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3JcbiAgICAgICAgICApIGFzIEZvcm1pb0N1c3RvbUVsZW1lbnQ7XG5cbiAgICAgICAgICBuZXdDdXN0b21FbGVtZW50LnNldEF0dHJpYnV0ZSgncmVmJywgJ2lucHV0Jyk7XG4gICAgICAgICAgT2JqZWN0LmtleXModGhpcy5pbnB1dEluZm8uYXR0cikuZm9yRWFjaCgoYXR0cjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBuZXdDdXN0b21FbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmlucHV0SW5mby5hdHRyW2F0dHJdKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LmFwcGVuZENoaWxkKG5ld0N1c3RvbUVsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50ID0gbmV3Q3VzdG9tRWxlbWVudDtcblxuICAgICAgICAgIHN1cGVyQXR0YWNoID0gc3VwZXIuYXR0YWNoKGVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmluZCBjdXN0b21PcHRpb25zXG4gICAgICAgIHRoaXMuYmluZEN1c3RvbU9wdGlvbnMoKTtcbiAgICAgICAgLy8gQmluZCB2YWxpZGF0ZSBvcHRpb25zXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29tcG9uZW50LnZhbGlkYXRlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50LnZhbGlkYXRlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50W2tleV0gPSB0aGlzLmNvbXBvbmVudC52YWxpZGF0ZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBCaW5kIG9wdGlvbnMgZXhwbGljaXRseSBzZXRcbiAgICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5maWVsZE9wdGlvbnM7XG4gICAgICAgIGlmIChpc0FycmF5KGZpZWxkT3B0aW9ucykgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZE9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZE9wdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudFtmaWVsZE9wdGlvbnNba2V5XV0gPSB0aGlzLmNvbXBvbmVudFtmaWVsZE9wdGlvbnNba2V5XV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXR0YWNoIGV2ZW50IGxpc3RlbmVyIGZvciBlbWl0IGV2ZW50XG4gICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ2Zvcm1pb0V2ZW50JyxcbiAgICAgICAgICAoZXZlbnQ6IEN1c3RvbUV2ZW50PEZvcm1pb0V2ZW50PikgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0KGV2ZW50LmRldGFpbC5ldmVudE5hbWUsIHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQuZGV0YWlsLmRhdGEsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5jb21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHdlIGJpbmQgdGhlIHZhbHVlIChpZiBpdCBpc24ndCBhIG11bHRpcGxlLXZhbHVlIGNvbXBvbmVudCB3aXRoIG5vIHdyYXBwZXIpXG4gICAgICAgIGlmICghdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQudmFsdWUgJiYgIXRoaXMuY29tcG9uZW50LmRpc2FibGVNdWx0aVZhbHVlV3JhcHBlcikge1xuICAgICAgICAgIHRoaXMucmVzdG9yZVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdXBlckF0dGFjaDtcbiAgICB9XG5cbiAgICAvLyBQdXNoIHRoZSAocG9zc2libHkgbXV0YXRlZCkgY3VzdG9tT3B0aW9ucyBvbnRvIHRoZSBBbmd1bGFyIGVsZW1lbnQuIEV4dHJhY3RlZCBmcm9tIGF0dGFjaCgpIHNvXG4gICAgLy8gaXQgY2FuIGFsc28gYmUgcmUtcnVuIGZyb20gc2V0VmFsdWUoKTogYSBjYWxjdWxhdGVWYWx1ZSBleHByZXNzaW9uIGNhbiBtdXRhdGVcbiAgICAvLyB0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zIGFzIGEgc2lkZSBlZmZlY3QsIGJ1dCBhdHRhY2goKSAoYW5kIHRoZXJlZm9yZSB0aGUgb3JpZ2luYWwgaW5saW5lXG4gICAgLy8gYmluZGluZykgb25seSByZS1ydW5zIG9uIGEgcmVkcmF3LCB3aGljaCBpcyBub3QgZ3VhcmFudGVlZCB0byBmaXJlIGFmdGVyIHRoZSBjYWxjdWxhdGlvbi5cbiAgICAvLyBCaW5kaW5nIGlzIGlkZW1wb3RlbnQsIHNvIHJlLXJ1bm5pbmcgaXQgaXMgaGFybWxlc3MuXG4gICAgYmluZEN1c3RvbU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICBpZiAoIXRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29tcG9uZW50LmN1c3RvbU9wdGlvbnMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zLCBrZXkpICYmXG4gICAgICAgICAga2V5ICE9PSAnX19wcm90b19fJyAmJlxuICAgICAgICAgIGtleSAhPT0gJ2NvbnN0cnVjdG9yJyAmJlxuICAgICAgICAgIGtleSAhPT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnRba2V5XSA9IHRoaXMuY29tcG9uZW50LmN1c3RvbU9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXRWYWx1ZSh2YWx1ZTogYW55LCBmbGFnczogYW55ID0ge30pIHtcbiAgICAgIGNvbnN0IGNoYW5nZWQgPSBzdXBlci5zZXRWYWx1ZSh2YWx1ZSwgZmxhZ3MpO1xuICAgICAgLy8gRm9ybUlPIGNhbGxzIHNldFZhbHVlKCkgaW1tZWRpYXRlbHkgYWZ0ZXIgZXZhbHVhdGluZyBjYWxjdWxhdGVWYWx1ZSwgc28gcmUtYXBwbHlpbmcgdGhlXG4gICAgICAvLyBjdXN0b21PcHRpb25zIGhlcmUgcmVhY2hlcyB0aGUgQW5ndWxhciBlbGVtZW50IHJpZ2h0IGF3YXksIGluZGVwZW5kZW50IG9mIHJlZHJhdyB0aW1pbmcuXG4gICAgICB0aGlzLmJpbmRDdXN0b21PcHRpb25zKCk7XG4gICAgICByZXR1cm4gY2hhbmdlZDtcbiAgICB9XG5cbiAgICAvLyBBZGQgZXh0cmEgb3B0aW9uIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmFsdWUgKGUuZy4gZGF0YWdyaWQpIHdpdGggc2luZ2xlIGFuZ3VsYXIgY29tcG9uZW50IChkaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXIpXG4gICAgdXNlV3JhcHBlcigpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lmhhc093blByb3BlcnR5KCdtdWx0aXBsZScpICYmXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lm11bHRpcGxlICYmXG4gICAgICAgICF0aGlzLmNvbXBvbmVudC5kaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5lbXB0eVZhbHVlO1xuXG4gICAgICAvLyBoYW5kbGUgZmFsc3kgZGVmYXVsdCB2YWx1ZVxuICAgICAgaWYgKCFpc05pbCh0aGlzLmNvbXBvbmVudC5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuY29tcG9uZW50LmRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50LmN1c3RvbURlZmF1bHRWYWx1ZSAmJiAhdGhpcy5vcHRpb25zLnByZXZpZXcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5ldmFsdWF0ZSh0aGlzLmNvbXBvbmVudC5jdXN0b21EZWZhdWx0VmFsdWUsIHt2YWx1ZTogJyd9LCAndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb25lKGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICB9O1xufVxuIl19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWN1c3RvbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9tb2R1bGVzL2N1c3RvbS1mb3JtaW8tY29tcG9uZW50L2NyZWF0ZS1jdXN0b20tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFjLFVBQVUsRUFBMkIsS0FBSyxJQUFJLFdBQVcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoRyxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUN2RCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBRTNELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxzQkFBaUQ7SUFDM0YsT0FBTyxNQUFNLGVBQWdCLFNBQVEsa0JBQWtCO2lCQUM5QyxhQUFRLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQUFBakUsQ0FBa0U7UUFLakYsTUFBTSxDQUFDLE1BQU07WUFDWCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDL0IsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNO2dCQUNoQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsSUFBSTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksYUFBYTtZQUNmLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxVQUFVO1lBQ1osT0FBTyxzQkFBc0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ25ELENBQUM7UUFF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SSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hGLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0J1aWxkZXJJbmZvLCBDb21wb25lbnRzLCBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSwgVXRpbHMgYXMgRm9ybWlvVXRpbHN9IGZyb20gJ2Zvcm1pb2pzJztcbmltcG9ydCB7Rm9ybWlvQ3VzdG9tQ29tcG9uZW50SW5mbywgRm9ybWlvQ3VzdG9tRWxlbWVudCwgRm9ybWlvRXZlbnR9IGZyb20gJy4vZWxlbWVudHMuY29tbW9uJztcbmltcG9ydCB7Y2xvbmUsIGlzQXJyYXksIGlzTmlsfSBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBCYXNlSW5wdXRDb21wb25lbnQgPSBDb21wb25lbnRzLmNvbXBvbmVudHMuaW5wdXQ7XG5jb25zdCBUZXh0ZmllbGRDb21wb25lbnQgPSBDb21wb25lbnRzLmNvbXBvbmVudHMudGV4dGZpZWxkO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3VzdG9tRm9ybWlvQ29tcG9uZW50KGN1c3RvbUNvbXBvbmVudE9wdGlvbnM6IEZvcm1pb0N1c3RvbUNvbXBvbmVudEluZm8pIHtcbiAgcmV0dXJuIGNsYXNzIEN1c3RvbUNvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudCB7XG4gICAgc3RhdGljIGVkaXRGb3JtID0gY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5lZGl0Rm9ybSB8fCBUZXh0ZmllbGRDb21wb25lbnQuZWRpdEZvcm07XG4gICAgaWQgPSBGb3JtaW9VdGlscy5nZXRSYW5kb21Db21wb25lbnRJZCgpO1xuICAgIHR5cGUgPSBjdXN0b21Db21wb25lbnRPcHRpb25zLnR5cGU7XG4gICAgX2N1c3RvbUFuZ3VsYXJFbGVtZW50OiBGb3JtaW9DdXN0b21FbGVtZW50O1xuXG4gICAgc3RhdGljIHNjaGVtYSgpIHtcbiAgICAgIHJldHVybiBCYXNlSW5wdXRDb21wb25lbnQuc2NoZW1hKHtcbiAgICAgICAgLi4uY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zY2hlbWEsXG4gICAgICAgIHR5cGU6IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgZGVmYXVsdFNjaGVtYSgpIHtcbiAgICAgIHJldHVybiBDdXN0b21Db21wb25lbnQuc2NoZW1hKCk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBlbXB0eVZhbHVlKCkge1xuICAgICAgcmV0dXJuIGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZW1wdHlWYWx1ZSB8fCBudWxsO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgYnVpbGRlckluZm8oKTogQnVpbGRlckluZm8ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudGl0bGUsXG4gICAgICAgIGdyb3VwOiBjdXN0b21Db21wb25lbnRPcHRpb25zLmdyb3VwLFxuICAgICAgICBpY29uOiBjdXN0b21Db21wb25lbnRPcHRpb25zLmljb24sXG4gICAgICAgIHdlaWdodDogY3VzdG9tQ29tcG9uZW50T3B0aW9ucy53ZWlnaHQsXG4gICAgICAgIGRvY3VtZW50YXRpb246IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZG9jdW1lbnRhdGlvbixcbiAgICAgICAgc2NoZW1hOiBDdXN0b21Db21wb25lbnQuc2NoZW1hKCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHVibGljIGNvbXBvbmVudDogRXh0ZW5kZWRDb21wb25lbnRTY2hlbWEsXG4gICAgICBvcHRpb25zOiBhbnksXG4gICAgICBkYXRhOiBhbnlcbiAgICApIHtcbiAgICAgIHN1cGVyKFxuICAgICAgICBjb21wb25lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIHNhbml0aXplQ29uZmlnOiB7XG4gICAgICAgICAgICBhZGRUYWdzOiBbY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5zZWxlY3Rvcl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcblxuICAgICAgaWYgKGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZXh0cmFWYWxpZGF0b3JzKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdG9ycyA9IHRoaXMudmFsaWRhdG9ycy5jb25jYXQoY3VzdG9tQ29tcG9uZW50T3B0aW9ucy5leHRyYVZhbGlkYXRvcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsZW1lbnRJbmZvKCkge1xuICAgICAgY29uc3QgaW5mbyA9IHN1cGVyLmVsZW1lbnRJbmZvKCk7XG4gICAgICBpbmZvLnR5cGUgPSBjdXN0b21Db21wb25lbnRPcHRpb25zLnNlbGVjdG9yO1xuICAgICAgaW5mby5jaGFuZ2VFdmVudCA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuY2hhbmdlRXZlbnQgfHwgJ3ZhbHVlQ2hhbmdlJztcbiAgICAgIGluZm8uYXR0ciA9IHtcbiAgICAgICAgLi4uaW5mby5hdHRyLFxuICAgICAgICBjbGFzczogaW5mby5hdHRyLmNsYXNzLnJlcGxhY2UoJ2Zvcm0tY29udHJvbCcsICdmb3JtLWNvbnRyb2wtY3VzdG9tLWZpZWxkJyksIC8vIHJlbW92ZSB0aGUgZm9ybS1jb250cm9sIGNsYXNzIGFzIHRoZSBjdXN0b20gYW5ndWxhciBjb21wb25lbnQgbWF5IGxvb2sgZGlmZmVyZW50XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBpbnB1dEluZm8oKSB7XG4gICAgICBjb25zdCBpbmZvID0ge1xuICAgICAgICBpZDogdGhpcy5rZXksXG4gICAgICAgIC4uLnRoaXMuZWxlbWVudEluZm8oKSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICByZW5kZXJFbGVtZW50KHZhbHVlOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IGluZm8gPSB0aGlzLmlucHV0SW5mbztcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlclRlbXBsYXRlKGN1c3RvbUNvbXBvbmVudE9wdGlvbnMudGVtcGxhdGUgfHwgJ2lucHV0Jywge1xuICAgICAgICBpbnB1dDogaW5mbyxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGluZGV4LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXR0YWNoKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICBsZXQgc3VwZXJBdHRhY2ggPSBzdXBlci5hdHRhY2goZWxlbWVudCk7XG5cbiAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50ID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuc2VsZWN0b3IpO1xuXG4gICAgICAvLyBCaW5kIHRoZSBjdXN0b20gb3B0aW9ucyBhbmQgdGhlIHZhbGlkYXRpb25zIHRvIHRoZSBBbmd1bGFyIGNvbXBvbmVudCdzIGlucHV0cyAoZmxhdHRlbmVkKVxuICAgICAgaWYgKHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50KSB7XG4gICAgICAgIC8vIFRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHdvcmtpbmcgaW5wdXQgaW4gSUUuLi5cbiAgICAgICAgLy8gSUUgZG9lc24ndCByZW5kZXIgaXQgcHJvcGVybHkgaWYgaXQncyBub3QgdmlzaWJsZSBvbiB0aGUgc2NyZWVuXG4gICAgICAgIC8vIGR1ZSB0byB0aGUgd2hvbGUgc3RydWN0dXJlIGFwcGxpZWQgdmlhIGlubmVySFRNTCB0byB0aGUgcGFyZW50XG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gdXNlIGFwcGVuZENoaWxkXG4gICAgICAgIGlmICghdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnQuZ2V0QXR0cmlidXRlKCduZy12ZXJzaW9uJykpIHtcbiAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JlZicpO1xuXG4gICAgICAgICAgY29uc3QgbmV3Q3VzdG9tRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnRPcHRpb25zLnNlbGVjdG9yXG4gICAgICAgICAgKSBhcyBGb3JtaW9DdXN0b21FbGVtZW50O1xuXG4gICAgICAgICAgbmV3Q3VzdG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlZicsICdpbnB1dCcpO1xuICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRJbmZvLmF0dHIpLmZvckVhY2goKGF0dHI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbmV3Q3VzdG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ciwgdGhpcy5pbnB1dEluZm8uYXR0clthdHRyXSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5hcHBlbmRDaGlsZChuZXdDdXN0b21FbGVtZW50KTtcbiAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudCA9IG5ld0N1c3RvbUVsZW1lbnQ7XG5cbiAgICAgICAgICBzdXBlckF0dGFjaCA9IHN1cGVyLmF0dGFjaChlbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJpbmQgY3VzdG9tT3B0aW9uc1xuICAgICAgICB0aGlzLmJpbmRDdXN0b21PcHRpb25zKCk7XG4gICAgICAgIC8vIEJpbmQgdmFsaWRhdGUgb3B0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbXBvbmVudC52YWxpZGF0ZSkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudC52YWxpZGF0ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudFtrZXldID0gdGhpcy5jb21wb25lbnQudmFsaWRhdGVba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQmluZCBvcHRpb25zIGV4cGxpY2l0bHkgc2V0XG4gICAgICAgIGNvbnN0IGZpZWxkT3B0aW9ucyA9IGN1c3RvbUNvbXBvbmVudE9wdGlvbnMuZmllbGRPcHRpb25zO1xuICAgICAgICBpZiAoaXNBcnJheShmaWVsZE9wdGlvbnMpICYmIGZpZWxkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRPcHRpb25zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tQW5ndWxhckVsZW1lbnRbZmllbGRPcHRpb25zW2tleV1dID0gdGhpcy5jb21wb25lbnRbZmllbGRPcHRpb25zW2tleV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF0dGFjaCBldmVudCBsaXN0ZW5lciBmb3IgZW1pdCBldmVudFxuICAgICAgICB0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdmb3JtaW9FdmVudCcsXG4gICAgICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDxGb3JtaW9FdmVudD4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdChldmVudC5kZXRhaWwuZXZlbnROYW1lLCB7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LmRldGFpbC5kYXRhLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuY29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB3ZSBiaW5kIHRoZSB2YWx1ZSAoaWYgaXQgaXNuJ3QgYSBtdWx0aXBsZS12YWx1ZSBjb21wb25lbnQgd2l0aCBubyB3cmFwcGVyKVxuICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50LnZhbHVlICYmICF0aGlzLmNvbXBvbmVudC5kaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXIpIHtcbiAgICAgICAgICB0aGlzLnJlc3RvcmVWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VwZXJBdHRhY2g7XG4gICAgfVxuXG4gICAgLy8gUHVzaCB0aGUgKHBvc3NpYmx5IG11dGF0ZWQpIGN1c3RvbU9wdGlvbnMgb250byB0aGUgQW5ndWxhciBlbGVtZW50LiBFeHRyYWN0ZWQgZnJvbSBhdHRhY2goKSBzb1xuICAgIC8vIGl0IGNhbiBhbHNvIGJlIHJlLXJ1biBmcm9tIHNldFZhbHVlKCk6IGEgY2FsY3VsYXRlVmFsdWUgZXhwcmVzc2lvbiBjYW4gbXV0YXRlXG4gICAgLy8gdGhpcy5jb21wb25lbnQuY3VzdG9tT3B0aW9ucyBhcyBhIHNpZGUgZWZmZWN0LCBidXQgYXR0YWNoKCkgKGFuZCB0aGVyZWZvcmUgdGhlIG9yaWdpbmFsIGlubGluZVxuICAgIC8vIGJpbmRpbmcpIG9ubHkgcmUtcnVucyBvbiBhIHJlZHJhdywgd2hpY2ggaXMgbm90IGd1YXJhbnRlZWQgdG8gZmlyZSBhZnRlciB0aGUgY2FsY3VsYXRpb24uXG4gICAgLy8gQmluZGluZyBpcyBpZGVtcG90ZW50LCBzbyByZS1ydW5uaW5nIGl0IGlzIGhhcm1sZXNzLlxuICAgIGJpbmRDdXN0b21PcHRpb25zKCk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLl9jdXN0b21Bbmd1bGFyRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnQuY3VzdG9tT3B0aW9ucywga2V5KSAmJlxuICAgICAgICAgIGtleSAhPT0gJ19fcHJvdG9fXycgJiZcbiAgICAgICAgICBrZXkgIT09ICdjb25zdHJ1Y3RvcicgJiZcbiAgICAgICAgICBrZXkgIT09ICdwcm90b3R5cGUnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX2N1c3RvbUFuZ3VsYXJFbGVtZW50W2tleV0gPSB0aGlzLmNvbXBvbmVudC5jdXN0b21PcHRpb25zW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2V0VmFsdWUodmFsdWU6IGFueSwgZmxhZ3M6IGFueSA9IHt9KSB7XG4gICAgICBjb25zdCBjaGFuZ2VkID0gc3VwZXIuc2V0VmFsdWUodmFsdWUsIGZsYWdzKTtcbiAgICAgIC8vIEZvcm1JTyBjYWxscyBzZXRWYWx1ZSgpIGltbWVkaWF0ZWx5IGFmdGVyIGV2YWx1YXRpbmcgY2FsY3VsYXRlVmFsdWUsIHNvIHJlLWFwcGx5aW5nIHRoZVxuICAgICAgLy8gY3VzdG9tT3B0aW9ucyBoZXJlIHJlYWNoZXMgdGhlIEFuZ3VsYXIgZWxlbWVudCByaWdodCBhd2F5LCBpbmRlcGVuZGVudCBvZiByZWRyYXcgdGltaW5nLlxuICAgICAgdGhpcy5iaW5kQ3VzdG9tT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIGNoYW5nZWQ7XG4gICAgfVxuXG4gICAgLy8gTGV0cyBhIGN1c3RvbSBjb21wb25lbnQgcmVqZWN0IGEgdmFsdWUgdGhyb3VnaCBjdXN0b21WYWxpZGF0b3IsIGluc3RlYWQgb2YgaGF2aW5nIHRvIGVuY29kZVxuICAgIC8vIHRoZSBpbnZhbGlkaXR5IGludG8gdGhlIHZhbHVlIGl0c2VsZi5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY2hlY2tDb21wb25lbnRWYWxpZGl0eShkYXRhOiBhbnksIGRpcnR5OiBib29sZWFuLCByb3c6IGFueSwgb3B0aW9uczogYW55ID0ge30pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLmNoZWNrQ29tcG9uZW50VmFsaWRpdHkoZGF0YSwgZGlydHksIHJvdywgb3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXN0b21WYWxpZGF0b3IgPSBjdXN0b21Db21wb25lbnRPcHRpb25zLmN1c3RvbVZhbGlkYXRvcjtcblxuICAgICAgaWYgKFxuICAgICAgICAhY3VzdG9tVmFsaWRhdG9yIHx8XG4gICAgICAgIHRoaXMuc2hvdWxkU2tpcFZhbGlkYXRpb24oZGF0YSwgZGlydHksIHJvdykgfHxcbiAgICAgICAgdGhpcy5pc0VtcHR5KHRoaXMuZGF0YVZhbHVlKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcGx5Q3VzdG9tVmFsaWRhdG9yID0gKHZhbGlkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghdmFsaWQpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCBtZXNzYWdlID0gY3VzdG9tVmFsaWRhdG9yKHRoaXMuZGF0YVZhbHVlKTtcbiAgICAgICAgaWYgKCFtZXNzYWdlKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50Q2hlY2spIHRoaXMuc2V0Q3VzdG9tVmFsaWRpdHkobWVzc2FnZSwgZGlydHkpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdHlwZW9mIHJlc3VsdD8udGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4oYXBwbHlDdXN0b21WYWxpZGF0b3IpXG4gICAgICAgIDogYXBwbHlDdXN0b21WYWxpZGF0b3IocmVzdWx0KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgZXh0cmEgb3B0aW9uIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmFsdWUgKGUuZy4gZGF0YWdyaWQpIHdpdGggc2luZ2xlIGFuZ3VsYXIgY29tcG9uZW50IChkaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXIpXG4gICAgdXNlV3JhcHBlcigpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lmhhc093blByb3BlcnR5KCdtdWx0aXBsZScpICYmXG4gICAgICAgIHRoaXMuY29tcG9uZW50Lm11bHRpcGxlICYmXG4gICAgICAgICF0aGlzLmNvbXBvbmVudC5kaXNhYmxlTXVsdGlWYWx1ZVdyYXBwZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5lbXB0eVZhbHVlO1xuXG4gICAgICAvLyBoYW5kbGUgZmFsc3kgZGVmYXVsdCB2YWx1ZVxuICAgICAgaWYgKCFpc05pbCh0aGlzLmNvbXBvbmVudC5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuY29tcG9uZW50LmRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50LmN1c3RvbURlZmF1bHRWYWx1ZSAmJiAhdGhpcy5vcHRpb25zLnByZXZpZXcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5ldmFsdWF0ZSh0aGlzLmNvbXBvbmVudC5jdXN0b21EZWZhdWx0VmFsdWUsIHt2YWx1ZTogJyd9LCAndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb25lKGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICB9O1xufVxuIl19
@@ -14,4 +14,4 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  export {};
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMuY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvbW9kdWxlcy9jdXN0b20tZm9ybWlvLWNvbXBvbmVudC9lbGVtZW50cy5jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0J1aWxkZXJJbmZvLCBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSwgVmFsaWRhdGVPcHRpb25zfSBmcm9tICdmb3JtaW9qcyc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nRWxlbWVudCwgV2l0aFByb3BlcnRpZXN9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcblxuLy8gQ3VzdG9tIEFuZ3VsYXIgQ29tcG9uZW50c1xuZXhwb3J0IGludGVyZmFjZSBGb3JtaW9DdXN0b21Db21wb25lbnRJbmZvIGV4dGVuZHMgQnVpbGRlckluZm8ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIGVtcHR5VmFsdWU/OiBhbnk7XG4gIGV4dHJhVmFsaWRhdG9ycz86IChrZXlvZiBWYWxpZGF0ZU9wdGlvbnMpW107XG4gIGZpZWxkT3B0aW9ucz86IHN0cmluZ1tdO1xuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgY2hhbmdlRXZlbnQ/OiBzdHJpbmc7IC8vIERlZmF1bHQ6IHZhbHVlQ2hhbmdlXG4gIGVkaXRGb3JtPzogKCkgPT4ge2NvbXBvbmVudHM6IEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hW119O1xufVxuXG5leHBvcnQgdHlwZSBGb3JtaW9DdXN0b21FbGVtZW50ID0gTmdFbGVtZW50ICZcbiAgV2l0aFByb3BlcnRpZXM8e3ZhbHVlOiBhbnl9ICYgRXh0ZW5kZWRDb21wb25lbnRTY2hlbWE+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1pb0V2ZW50IHtcbiAgZXZlbnROYW1lOiBzdHJpbmc7XG4gIGRhdGE/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1pb0N1c3RvbUNvbXBvbmVudDxUPiB7XG4gIHZhbHVlOiBUOyAvLyBTaG91bGQgYmUgYW4gQElucHV0XG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VD47IC8vIFNob3VsZCBiZSBhbiBAT3V0cHV0XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBmb3JtaW9FdmVudD86IEV2ZW50RW1pdHRlcjxGb3JtaW9FdmVudD47IC8vIFNob3VsZCBiZSBhbiBAT3V0cHV0XG59XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMuY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvbW9kdWxlcy9jdXN0b20tZm9ybWlvLWNvbXBvbmVudC9lbGVtZW50cy5jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0J1aWxkZXJJbmZvLCBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSwgVmFsaWRhdGVPcHRpb25zfSBmcm9tICdmb3JtaW9qcyc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nRWxlbWVudCwgV2l0aFByb3BlcnRpZXN9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcblxuLy8gQ3VzdG9tIEFuZ3VsYXIgQ29tcG9uZW50c1xuZXhwb3J0IGludGVyZmFjZSBGb3JtaW9DdXN0b21Db21wb25lbnRJbmZvIGV4dGVuZHMgQnVpbGRlckluZm8ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIGVtcHR5VmFsdWU/OiBhbnk7XG4gIGV4dHJhVmFsaWRhdG9ycz86IChrZXlvZiBWYWxpZGF0ZU9wdGlvbnMpW107XG4gIGZpZWxkT3B0aW9ucz86IHN0cmluZ1tdO1xuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgY2hhbmdlRXZlbnQ/OiBzdHJpbmc7IC8vIERlZmF1bHQ6IHZhbHVlQ2hhbmdlXG4gIGVkaXRGb3JtPzogKCkgPT4ge2NvbXBvbmVudHM6IEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hW119O1xuICBjdXN0b21WYWxpZGF0b3I/OiAodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgRm9ybWlvQ3VzdG9tRWxlbWVudCA9IE5nRWxlbWVudCAmXG4gIFdpdGhQcm9wZXJ0aWVzPHt2YWx1ZTogYW55fSAmIEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hPjtcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtaW9FdmVudCB7XG4gIGV2ZW50TmFtZTogc3RyaW5nO1xuICBkYXRhPzoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtaW9DdXN0b21Db21wb25lbnQ8VD4ge1xuICB2YWx1ZTogVDsgLy8gU2hvdWxkIGJlIGFuIEBJbnB1dFxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPFQ+OyAvLyBTaG91bGQgYmUgYW4gQE91dHB1dFxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgZm9ybWlvRXZlbnQ/OiBFdmVudEVtaXR0ZXI8Rm9ybWlvRXZlbnQ+OyAvLyBTaG91bGQgYmUgYW4gQE91dHB1dFxufVxuIl19
@@ -2426,6 +2426,32 @@ function createCustomFormioComponent(customComponentOptions) {
2426
2426
  this.bindCustomOptions();
2427
2427
  return changed;
2428
2428
  }
2429
+ // Lets a custom component reject a value through customValidator, instead of having to encode
2430
+ // the invalidity into the value itself.
2431
+ // @ts-ignore
2432
+ checkComponentValidity(data, dirty, row, options = {}) {
2433
+ // @ts-ignore
2434
+ const result = super.checkComponentValidity(data, dirty, row, options);
2435
+ const customValidator = customComponentOptions.customValidator;
2436
+ if (!customValidator ||
2437
+ this.shouldSkipValidation(data, dirty, row) ||
2438
+ this.isEmpty(this.dataValue)) {
2439
+ return result;
2440
+ }
2441
+ const applyCustomValidator = (valid) => {
2442
+ if (!valid)
2443
+ return false;
2444
+ const message = customValidator(this.dataValue);
2445
+ if (!message)
2446
+ return true;
2447
+ if (!options.silentCheck)
2448
+ this.setCustomValidity(message, dirty);
2449
+ return false;
2450
+ };
2451
+ return typeof result?.then === 'function'
2452
+ ? Promise.resolve(result).then(applyCustomValidator)
2453
+ : applyCustomValidator(result);
2454
+ }
2429
2455
  // Add extra option to support multiple value (e.g. datagrid) with single angular component (disableMultiValueWrapper)
2430
2456
  useWrapper() {
2431
2457
  return (this.component.hasOwnProperty('multiple') &&
@@ -7523,11 +7549,11 @@ class TimelineComponent {
7523
7549
  }) || []);
7524
7550
  }
7525
7551
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7526
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimelineComponent, selector: "valtimo-timeline", inputs: { items: "items", actions: "actions" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
7552
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimelineComponent, selector: "valtimo-timeline", inputs: { items: "items", actions: "actions" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ (action?.label | translate) || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
7527
7553
  }
7528
7554
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimelineComponent, decorators: [{
7529
7555
  type: Component,
7530
- args: [{ selector: 'valtimo-timeline', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ action?.label || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"] }]
7556
+ args: [{ selector: 'valtimo-timeline', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div id=\"no-results\" class=\"p-5\" *ngIf=\"items?.length === 0\"></div>\n\n<div class=\"pb-5\" *ngIf=\"items?.length > 0\">\n <ul class=\"timeline mb-0 py-5\">\n <li class=\"timeline-item status-done\" *ngFor=\"let item of items\">\n <div class=\"timeline-date\">\n <span>{{ item.date }}</span>\n\n <br />\n\n <span>{{ item.time }}</span>\n </div>\n\n <div\n class=\"timeline-content mt-1\"\n *ngIf=\"{supportedActions: getSupportedActions(item, actions)} as vars\"\n >\n <div class=\"timeline-header p-0\">\n <span class=\"timeline-author\">{{ item.user }}</span>\n\n <div class=\"dropdown actions-dropdown\" *ngIf=\"vars.supportedActions?.length > 0\">\n <a\n class=\"dropdown-toggle d-block\"\n id=\"dropdownMenu\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"action-icon icon mdi mdi-dots-vertical\"></i>\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenu\">\n <a\n *ngFor=\"let action of vars.supportedActions\"\n (click)=\"action.callback(item, $event)\"\n class=\"dropdown-item p-2\"\n >\n <ng-container *ngIf=\"action.icon !== null\">\n <i class=\"icon mdi\" [ngClass]=\"action.icon\"></i>\n </ng-container>\n\n {{ (action?.label | translate) || '-' }}\n </a>\n </div>\n </div>\n\n <br />\n\n <p class=\"timeline-activity\">{{ item.activity }}</p>\n\n <div class=\"timeline-summary\">\n <p>\n {{ item.summaryTranslationKey | translate: item.summaryTranslationParams }}\n </p>\n </div>\n </div>\n </div>\n </li>\n </ul>\n</div>\n", styles: [".timeline-activity{font-size:100%}.timeline-summary p{font-size:.8rem;white-space:pre-line}.actions-dropdown{position:absolute;top:12px;right:12px;cursor:pointer}\n"] }]
7531
7557
  }], propDecorators: { items: [{
7532
7558
  type: Input
7533
7559
  }], actions: [{
@@ -9196,29 +9222,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
9196
9222
  }] } });
9197
9223
 
9198
9224
  /**
9199
- * Custom iban validator for angular forms.
9200
9225
  * Checks if the iban is valid.
9201
9226
  * First move the first four chracters from the beginngin to the end of the string.
9202
9227
  * Change the letter to a numeric representation.
9203
9228
  * Calculate the modulo in a parts, because javascript cannot accuratly calculate the modulus for large numbers.
9204
9229
  *
9230
+ * @returns True if the iban is valid or the value is empty.
9231
+ */
9232
+ function isValidIban(value) {
9233
+ const valueString = value == null ? '' : String(value);
9234
+ if (!valueString) {
9235
+ return true;
9236
+ }
9237
+ const rearranged = valueString.substring(4) + valueString.substring(0, 4);
9238
+ const numeric = Array.from(rearranged)
9239
+ .map(c => (isNaN(parseInt(c, 10)) ? (c.charCodeAt(0) - 55).toString() : c))
9240
+ .join('');
9241
+ return (Array.from(numeric)
9242
+ .map(c => parseInt(c, 10))
9243
+ .reduce((remainder, value) => (remainder * 10 + value) % 97, 0) === 1);
9244
+ }
9245
+ /**
9246
+ * Custom iban validator for angular forms.
9247
+ *
9205
9248
  * @returns Null if the iban is valid or the value is an empty string, else return an object with isIbanValid property.
9206
9249
  */
9207
9250
  function ibanValidator() {
9208
- return (control) => {
9209
- const valueString = String(control.value);
9210
- if (valueString.match(/^$/)) {
9211
- return null;
9212
- }
9213
- const rearranged = valueString.substring(4, valueString.length) + valueString.substring(0, 4);
9214
- const numeric = Array.from(rearranged)
9215
- .map(c => (isNaN(parseInt(c, 10)) ? (c.charCodeAt(0) - 55).toString() : c))
9216
- .join('');
9217
- const isValidIban = Array.from(numeric)
9218
- .map(c => parseInt(c, 10))
9219
- .reduce((remainder, value) => (remainder * 10 + value) % 97, 0);
9220
- return isValidIban === 1 ? null : { isIbanValid: 'IBAN voldoet niet' };
9221
- };
9251
+ return (control) => isValidIban(control.value) ? null : { isIbanValid: 'IBAN voldoet niet' };
9222
9252
  }
9223
9253
 
9224
9254
  /**
@@ -9239,6 +9269,9 @@ class FormIoIbanComponent {
9239
9269
  this.ibanForm.controls.iban.setValue(this.value);
9240
9270
  this.ibanForm.controls.iban.setValidators(this.required ? [Validators.required, ibanValidator()] : [ibanValidator()]);
9241
9271
  this.ibanForm.controls.iban.updateValueAndValidity();
9272
+ if (this.value) {
9273
+ this.ibanForm.controls.iban.markAsTouched();
9274
+ }
9242
9275
  if (this.disabled) {
9243
9276
  Object.keys(this.ibanForm.controls).forEach(key => {
9244
9277
  this.ibanForm?.get(key)?.disable();
@@ -9253,9 +9286,7 @@ class FormIoIbanComponent {
9253
9286
  this._subscriptions.unsubscribe();
9254
9287
  }
9255
9288
  onValueChange() {
9256
- this.value = this.ibanForm.valid
9257
- ? this.ibanForm.controls.iban.value
9258
- : [this.ibanForm.value];
9289
+ this.value = this.ibanForm.controls.iban.value ?? '';
9259
9290
  this.valueChange.emit(this.value);
9260
9291
  }
9261
9292
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormIoIbanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -10839,7 +10870,7 @@ const formIoUploaderEditForm = () => ({
10839
10870
  * limitations under the License.
10840
10871
  */
10841
10872
  const customUploaderType = 'valtimo-file';
10842
- const COMPONENT_OPTIONS$5 = {
10873
+ const COMPONENT_OPTIONS$4 = {
10843
10874
  type: customUploaderType,
10844
10875
  selector: 'valtimo-form-io-uploader',
10845
10876
  title: 'Valtimo File Upload',
@@ -10850,7 +10881,7 @@ const COMPONENT_OPTIONS$5 = {
10850
10881
  editForm: formIoUploaderEditForm,
10851
10882
  };
10852
10883
  function registerFormioUploadComponent(injector) {
10853
- const originalUploadComponent = createCustomFormioComponent(COMPONENT_OPTIONS$5);
10884
+ const originalUploadComponent = createCustomFormioComponent(COMPONENT_OPTIONS$4);
10854
10885
  // override setValue function to allow for setting an array value
10855
10886
  class UploaderComponent extends originalUploadComponent {
10856
10887
  setValue(value) {
@@ -10864,8 +10895,8 @@ function registerFormioUploadComponent(injector) {
10864
10895
  return true;
10865
10896
  }
10866
10897
  }
10867
- if (!customElements.get(COMPONENT_OPTIONS$5.selector)) {
10868
- registerCustomFormioComponentWithClass(COMPONENT_OPTIONS$5, FormIoUploaderComponent, UploaderComponent, injector);
10898
+ if (!customElements.get(COMPONENT_OPTIONS$4.selector)) {
10899
+ registerCustomFormioComponentWithClass(COMPONENT_OPTIONS$4, FormIoUploaderComponent, UploaderComponent, injector);
10869
10900
  }
10870
10901
  }
10871
10902
 
@@ -10948,7 +10979,7 @@ const formIoCurrentUserEditForm = () => ({
10948
10979
  * See the License for the specific language governing permissions and
10949
10980
  * limitations under the License.
10950
10981
  */
10951
- const COMPONENT_OPTIONS$4 = {
10982
+ const COMPONENT_OPTIONS$3 = {
10952
10983
  type: 'valtimo-current-user',
10953
10984
  selector: 'valtimo-form-io-current-user',
10954
10985
  title: 'Valtimo Current User',
@@ -10961,10 +10992,11 @@ const COMPONENT_OPTIONS$4 = {
10961
10992
  },
10962
10993
  };
10963
10994
  function registerFormioCurrentUserComponent(injector) {
10964
- registerCustomFormioComponent(COMPONENT_OPTIONS$4, FormIoCurrentUserComponent, injector);
10995
+ registerCustomFormioComponent(COMPONENT_OPTIONS$3, FormIoCurrentUserComponent, injector);
10965
10996
  }
10966
10997
 
10967
- const COMPONENT_OPTIONS$3 = {
10998
+ const ERROR_MESSAGE_TRANSLATION_KEY = 'formioTranslations.formioIbanComponent.errorMessage';
10999
+ const getComponentOptions = (injector) => ({
10968
11000
  type: 'iban',
10969
11001
  selector: 'valtimo-iban',
10970
11002
  title: 'Iban',
@@ -10979,9 +11011,12 @@ const COMPONENT_OPTIONS$3 = {
10979
11011
  required: false,
10980
11012
  },
10981
11013
  },
10982
- };
11014
+ customValidator: (value) => isValidIban(value)
11015
+ ? null
11016
+ : injector.get(TranslateService).instant(ERROR_MESSAGE_TRANSLATION_KEY),
11017
+ });
10983
11018
  function registerFormioIbanComponent(injector) {
10984
- registerCustomFormioComponent(COMPONENT_OPTIONS$3, FormIoIbanComponent, injector);
11019
+ registerCustomFormioComponent(getComponentOptions(injector), FormIoIbanComponent, injector);
10985
11020
  }
10986
11021
 
10987
11022
  /*