@formio/angular 8.0.0-rc.7 → 8.0.0-rc.9

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.
@@ -378,7 +378,7 @@ export class FormioBaseComponent {
378
378
  }
379
379
  : {
380
380
  message: error.message || error.toString(),
381
- paths: error.path ? [error.path] : [],
381
+ paths: (error.path || error.formattedKeyOrPath) ? [error.path || error.formattedKeyOrPath] : [],
382
382
  }
383
383
  : {
384
384
  message: '',
@@ -409,9 +409,6 @@ export class FormioBaseComponent {
409
409
  });
410
410
  }
411
411
  }
412
- if (!this.noAlerts) {
413
- this.formio.showErrors();
414
- }
415
412
  }
416
413
  if (shouldErrorDisplay) {
417
414
  this.alerts.addAlert({
@@ -421,6 +418,9 @@ export class FormioBaseComponent {
421
418
  });
422
419
  }
423
420
  });
421
+ if (this.formio && !this.noAlerts) {
422
+ this.formio.showErrors(errors);
423
+ }
424
424
  }
425
425
  focusOnComponet(key) {
426
426
  if (this.formio) {
@@ -577,4 +577,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
577
577
  type: ViewChild,
578
578
  args: ['formio', { static: true }]
579
579
  }] } });
580
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWlvQmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL3NyYy9Gb3JtaW9CYXNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBd0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFDekQsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFLM0MsTUFBTSxPQUFPLG1CQUFtQjtJQTZEckI7SUFDWTtJQUNBO0lBOURaLElBQUksQ0FBYztJQUNsQixVQUFVLEdBQVMsRUFBRSxDQUFDO0lBQ3RCLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLE9BQU8sQ0FBaUI7SUFDeEIsT0FBTyxDQUFpQjtJQUN4QixNQUFNLEdBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUM1QixhQUFhLENBQU87SUFDcEIsYUFBYSxDQUFPO0lBQ3BCLFFBQVEsR0FBSyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFLLEtBQUssQ0FBQztJQUNuQixXQUFXLEdBQUssS0FBSyxDQUFDO0lBQ3RCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQW9DO0lBQzNDLEtBQUssQ0FBcUI7SUFDMUIsT0FBTyxDQUF3QjtJQUMvQixV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WTtzQkFBckIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ2dDLGFBQWE7c0JBQW5ELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1pb1NlcnZpY2UgfSBmcm9tICcuL2Zvcm1pby5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1pb0FsZXJ0cyB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydHMvZm9ybWlvLmFsZXJ0cyc7XG5pbXBvcnQgeyBGb3JtaW9BcHBDb25maWcgfSBmcm9tICcuL2Zvcm1pby5jb25maWcnO1xuaW1wb3J0IHsgRm9ybWlvRXJyb3IsIEZvcm1pb0Zvcm0sIEZvcm1pb09wdGlvbnMsIEZvcm1pb1JlZnJlc2hWYWx1ZSB9IGZyb20gJy4vZm9ybWlvLmNvbW1vbic7XG5pbXBvcnQgeyBhc3NpZ24sIGdldCwgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDdXN0b21UYWdzU2VydmljZSB9IGZyb20gJy4vY3VzdG9tLXRhZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ0Bmb3JtaW8vanMnO1xuaW1wb3J0IHsgQWxlcnRzUG9zaXRpb24gfSBmcm9tICcuL3R5cGVzL2FsZXJ0cy1wb3NpdGlvbic7XG5jb25zdCB7IEV2YWx1YXRvciwgZmFzdENsb25lRGVlcCB9ID0gVXRpbHM7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWlvQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBmb3JtPzogRm9ybWlvRm9ybTtcbiAgQElucHV0KCkgc3VibWlzc2lvbj86IGFueSA9IHt9O1xuICBASW5wdXQoKSBzcmM/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVybD86IHN0cmluZztcbiAgQElucHV0KCkgc2VydmljZT86IEZvcm1pb1NlcnZpY2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBGb3JtaW9PcHRpb25zO1xuICBASW5wdXQoKSBub2V2YWwgPyA9IEV2YWx1YXRvci5ub2V2YWw7XG4gIEBJbnB1dCgpIGZvcm1pb09wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlbmRlck9wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID8gPSBmYWxzZTtcbiAgQElucHV0KCkgdmlld09ubHkgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlTG9hZGluZyA/ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVDb21wb25lbnRzPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBFdmVudEVtaXR0ZXI8Rm9ybWlvUmVmcmVzaFZhbHVlPjtcbiAgQElucHV0KCkgZXJyb3I/OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KCkgc3VjY2Vzcz86IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBASW5wdXQoKSBzdWJtaXREb25lPzogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIEBJbnB1dCgpIGxhbmd1YWdlPzogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIEBJbnB1dCgpIGhvb2tzPzogYW55ID0ge307XG4gIEBJbnB1dCgpIHJlbmRlcmVyPzogYW55O1xuICBASW5wdXQoKSB3YXRjaFN1Ym1pc3Npb25FcnJvcnMgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhVGFibGVBY3Rpb25zPyA6IGFueSA9IFtdXG4gIEBPdXRwdXQoKSByZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGN1c3RvbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkaW5nU3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIHByZXZQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBuZXh0UGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBAT3V0cHV0KCkgYmVmb3JlU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSByb3dBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0FkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd1NlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2hhbmdlSXRlbXNQZXJQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGludmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBlcnJvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZm9ybUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHN1Ym1pc3Npb25Mb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybWlvQmFzZUNvbXBvbmVudD4oKTtcbiAgQFZpZXdDaGlsZCgnZm9ybWlvJywgeyBzdGF0aWM6IHRydWUgfSkgZm9ybWlvRWxlbWVudD86IEVsZW1lbnRSZWY8YW55PjtcblxuICBwdWJsaWMgQWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbjtcbiAgcHVibGljIGZvcm1pbzogYW55O1xuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIGFsZXJ0cyA9IG5ldyBGb3JtaW9BbGVydHMoKTtcbiAgcHVibGljIGZvcm1pb1JlYWR5OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSBmb3JtaW9SZWFkeVJlc29sdmU6IGFueTtcbiAgcHJpdmF0ZSBzdWJtaXR0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3VibWlzc2lvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIG5vQWxlcnRzOiBib29sZWFuO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRm9ybWlvQXBwQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjdXN0b21UYWdzPzogQ3VzdG9tVGFnc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1pb1JlYWR5ID0gbmV3IFByb21pc2UoKHJlYWR5KSA9PiB7XG4gICAgICB0aGlzLmZvcm1pb1JlYWR5UmVzb2x2ZSA9IHJlYWR5O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gIH1cblxuICBnZXRSZW5kZXJlck9wdGlvbnMoKSB7XG4gICAgY29uc3QgZXh0cmFUYWdzID0gdGhpcy5jdXN0b21UYWdzID8gdGhpcy5jdXN0b21UYWdzLnRhZ3MgOiBbXTtcbiAgICByZXR1cm4gYXNzaWduKHt9LCB7XG4gICAgICBpY29uczogZ2V0KHRoaXMuY29uZmlnLCAnaWNvbnMnLCAnZm9udGF3ZXNvbWUnKSxcbiAgICAgIG5vQWxlcnRzOiBnZXQodGhpcy5vcHRpb25zLCAnbm9BbGVydHMnLCB0cnVlKSxcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRPbmx5LFxuICAgICAgdmlld0FzSHRtbDogdGhpcy52aWV3T25seSxcbiAgICAgIC4uLih0aGlzLnZpZXdPbmx5ICYmIHsgcmVuZGVyTW9kZTogXCJodG1sXCIgfSksXG4gICAgICBpMThuOiBnZXQodGhpcy5vcHRpb25zLCAnaTE4bicsIG51bGwpLFxuICAgICAgZmlsZVNlcnZpY2U6IGdldCh0aGlzLm9wdGlvbnMsICdmaWxlU2VydmljZScsIG51bGwpLFxuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBzYW5pdGl6ZUNvbmZpZzoge1xuICAgICAgICBhZGRUYWdzOiBleHRyYVRhZ3NcbiAgICAgIH0sXG4gICAgICBkYXRhVGFibGVBY3Rpb25zOiB0aGlzLmRhdGFUYWJsZUFjdGlvbnNcbiAgICB9LCB0aGlzLnJlbmRlck9wdGlvbnMgfHwge30pO1xuICB9XG5cbiAgY3JlYXRlUmVuZGVyZXIoKSB7XG4gICAgY29uc3QgUmVuZGVyZXIgPSB0aGlzLmdldFJlbmRlcmVyKCk7XG4gICAgY29uc3QgZm9ybSA9IChuZXcgUmVuZGVyZXIoXG4gICAgICB0aGlzLmZvcm1pb0VsZW1lbnQgPyB0aGlzLmZvcm1pb0VsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGwsXG4gICAgICB0aGlzLmZvcm0sXG4gICAgICB0aGlzLmdldFJlbmRlcmVyT3B0aW9ucygpXG4gICAgKSk7XG4gICAgcmV0dXJuIGZvcm0uaW5zdGFuY2U7XG4gIH1cblxuICBzZXRGb3JtVXJsKHVybCkge1xuICAgIHRoaXMuZm9ybWlvLnNldFVybCh1cmwsIHRoaXMuZm9ybWlvT3B0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBzZXRGb3JtKGZvcm06IEZvcm1pb0Zvcm0pIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm0udGl0bGUpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmZvcm0udGl0bGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uY29tcG9uZW50cyAmJiB0aGlzLmZvcm0uY29tcG9uZW50c1swXSkge1xuICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuZm9ybS5jb21wb25lbnRzWzBdLmxhYmVsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIG91dCB0aGUgZWxlbWVudCB0byByZW5kZXIgdGhlIG5ldyBmb3JtLlxuICAgIGlmICh0aGlzLmZvcm1pb0VsZW1lbnQgJiYgdGhpcy5mb3JtaW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZm9ybWlvRWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pbyA9IHRoaXMuY3JlYXRlUmVuZGVyZXIoKTtcblxuICAgIGlmKCF0aGlzLmZvcm1pbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHRoaXMuc3VibWlzc2lvbiwge1xuICAgICAgZnJvbVN1Ym1pc3Npb246IGZhbHNlXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVuZGVyT3B0aW9ucyAmJiB0aGlzLnJlbmRlck9wdGlvbnMudmFsaWRhdGVPbkluaXQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKHRoaXMuc3VibWlzc2lvbiwge3ZhbGlkYXRlT25Jbml0OiB0cnVlfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5zZXRGb3JtVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICB0aGlzLnNldEZvcm1VcmwodGhpcy5zcmMpO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5ub3N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5hdHRhY2hGb3JtRXZlbnRzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtaW8ucmVhZHkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlYWR5LmVtaXQodGhpcyk7XG4gICAgICAgIHRoaXMuZm9ybWlvUmVhZHlSZXNvbHZlKHRoaXMuZm9ybWlvKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeSkge1xuICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeS50aGVuKChzdWJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25Mb2FkLmVtaXQoc3VibWlzc2lvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWlvO1xuICAgIH0pO1xuICB9XG5cbiAgYXR0YWNoRm9ybUV2ZW50cygpIHtcbiAgICB0aGlzLmZvcm1pby5vbigncHJldlBhZ2UnLCAoZGF0YTogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5vblByZXZQYWdlKGRhdGEpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ25leHRQYWdlJywgKGRhdGE6IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25OZXh0UGFnZShkYXRhKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdjaGFuZ2UnLCAodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25DaGFuZ2UodmFsdWUsIGZsYWdzLCBpc01vZGlmaWVkKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dBZGQnLCAoY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGQuZW1pdChjb21wb25lbnQpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0FkZGVkJywgKGRhdGE6IGFueSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGRlZC5lbWl0KHtjb21wb25lbnQsIHJvdzogZGF0YX0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXQnLCAoZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyLCBjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0VkaXQuZW1pdCh7Y29tcG9uZW50LCByb3c6IGRhdGEsIHJvd0luZGV4LCBpbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXRlZCcsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RWRpdGVkLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0RlbGV0ZScsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGluZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RGVsZXRlLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dDbGljaycsIChyb3c6IGFueSwgcm93SW5kZXg6IG51bWJlciwgaW5kZXg6IG51bWJlcixjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0NsaWNrLmVtaXQoe2NvbXBvbmVudCwgcm93LCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dTZWxlY3RDaGFuZ2UnLCAoc2VsZWN0ZWRSb3dzOiBhbnlbXSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dTZWxlY3RDaGFuZ2UuZW1pdCh7c2VsZWN0ZWRSb3dzLCBjb21wb25lbnR9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdwYWdlJywgKGN1cnJlbnRQYWdlOiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucGFnZS5lbWl0KHtjdXJyZW50UGFnZSwgY29tcG9uZW50fSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY2hhbmdlSXRlbXNQZXJQYWdlJywgKGl0ZW1zUGVyUGFnZTpudW1iZXIpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VJdGVtc1BlclBhZ2UuZW1pdCh7aXRlbXNQZXJQYWdlfSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY3VzdG9tRXZlbnQnLCAoZXZlbnQ6IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmN1c3RvbUV2ZW50LmVtaXQoZXZlbnQpKVxuICAgICk7XG5cbiAgICBbJ2ZpbGVVcGxvYWRpbmdTdGFydCcsICdmaWxlVXBsb2FkaW5nRW5kJ10uZm9yRWFjaCgoZXZlbnROYW1lLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gISFpbmRleCA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgIHRoaXMuZm9ybWlvLm9uKGV2ZW50TmFtZSwgKCkgPT5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZmlsZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHN0YXR1cykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtaW8ub24oJ3N1Ym1pdCcsIChzdWJtaXNzaW9uOiBhbnksIHNhdmVkOiBib29sZWFuKSA9PlxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuc3VibWl0Rm9ybShzdWJtaXNzaW9uLCBzYXZlZCkpXG4gICAgKTtcbiAgICB0aGlzLmZvcm1pby5vbignZXJyb3InLCAoZXJyOiBhbnkpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5vbkVycm9yKGVycik7XG4gICAgfSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyZW5kZXInLCAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yZW5kZXIuZW1pdCgpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ2Zvcm1Mb2FkJywgKGxvYWRlZEZvcm06IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmZvcm1Mb2FkLmVtaXQobG9hZGVkRm9ybSkpXG4gICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHRyYVRhZ3MgPSB0aGlzLmN1c3RvbVRhZ3MgPyB0aGlzLmN1c3RvbVRhZ3MudGFncyA6IFtdO1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBGb3JtaW9PcHRpb25zID0ge1xuICAgICAgZXJyb3JzOiB7XG4gICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZml4IHRoZSBmb2xsb3dpbmcgZXJyb3JzIGJlZm9yZSBzdWJtaXR0aW5nLidcbiAgICAgIH0sXG4gICAgICBhbGVydHM6IHtcbiAgICAgICAgc3VibWl0TWVzc2FnZTogJ1N1Ym1pc3Npb24gQ29tcGxldGUuJ1xuICAgICAgfSxcbiAgICAgIGRpc2FibGVBbGVydHM6IGZhbHNlLFxuICAgICAgaG9va3M6IHtcbiAgICAgICAgYmVmb3JlU3VibWl0OiBudWxsXG4gICAgICB9LFxuICAgICAgc2FuaXRpemVDb25maWc6IHtcbiAgICAgICAgYWRkVGFnczogZXh0cmFUYWdzXG4gICAgICB9LFxuICAgICAgYWxlcnRzUG9zaXRpb246IEFsZXJ0c1Bvc2l0aW9uLnRvcCxcbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuYWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbi5ub25lO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIEV2YWx1YXRvci5ub2V2YWwgPSB0aGlzLm5vZXZhbDtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIGlmICh0aGlzLmxhbmd1YWdlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMubGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuZm9ybWlvLmxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2Uuc3Vic2NyaWJlKChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1pby5sYW5ndWFnZSA9IGxhbmc7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnJlZnJlc2gpIHtcbiAgICAgIHRoaXMucmVmcmVzaC5zdWJzY3JpYmUoKHJlZnJlc2g6IEZvcm1pb1JlZnJlc2hWYWx1ZSkgPT5cbiAgICAgICAgdGhpcy5vblJlZnJlc2gocmVmcmVzaClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc3Vic2NyaWJlKChlcnI6IGFueSkgPT4gdGhpcy5vbkVycm9yKGVycikpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuc3VjY2Vzcy5zdWJzY3JpYmUoKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJtaXREb25lKSB7XG4gICAgICB0aGlzLnN1Ym1pdERvbmUuc3Vic2NyaWJlKChzdWJtaXNzaW9uOiBvYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RG9uZScsIHN1Ym1pc3Npb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnNyYyk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNldEZvcm1Gcm9tU3JjKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCAmJiAhdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Rm9ybUZyb21TcmMoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmxvYWRGb3JtKHsgcGFyYW1zOiB7IGxpdmU6IDEgfSB9KS5zdWJzY3JpYmUoXG4gICAgICAoZm9ybTogRm9ybWlvRm9ybSkgPT4ge1xuICAgICAgICBpZiAoZm9ybSAmJiBmb3JtLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm0oZm9ybSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBhIHN1Ym1pc3Npb24gaXMgYWxzbyBwcm92aWRlZC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzRW1wdHkodGhpcy5zdWJtaXNzaW9uKSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZS5mb3JtaW8uc3VibWlzc2lvbklkXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VydmljZS5sb2FkU3VibWlzc2lvbigpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChzdWJtaXNzaW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb24gPSB0aGlzLmZvcm1pby5zdWJtaXNzaW9uID0gc3VibWlzc2lvbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5vbkVycm9yKGVycilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVmcmVzaChyZWZyZXNoOiBGb3JtaW9SZWZyZXNoVmFsdWUpIHtcbiAgICB0aGlzLmZvcm1pb1JlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHJlZnJlc2guZm9ybSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRGb3JtKHJlZnJlc2guZm9ybSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uc2V0U3VibWlzc2lvbihyZWZyZXNoLnN1Ym1pc3Npb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHJlZnJlc2guc3VibWlzc2lvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHJlZnJlc2gucHJvcGVydHkpIHtcbiAgICAgICAgICBjYXNlICdzdWJtaXNzaW9uJzpcbiAgICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb24gPSByZWZyZXNoLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICB0aGlzLmZvcm1pby5mb3JtID0gcmVmcmVzaC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpIHtcbiAgICBFdmFsdWF0b3Iubm9ldmFsID0gdGhpcy5ub2V2YWw7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmIGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtKGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtaW9SZWFkeS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjaGFuZ2VzLnN1Ym1pc3Npb24gJiYgY2hhbmdlcy5zdWJtaXNzaW9uLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKGNoYW5nZXMuc3VibWlzc2lvbi5jdXJyZW50VmFsdWUsIHtcbiAgICAgICAgICBmcm9tU3VibWlzc2lvbjogIWNoYW5nZXMuc3VibWlzc2lvbi5maXJzdENoYW5nZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXMuaGlkZUNvbXBvbmVudHMgJiYgY2hhbmdlcy5oaWRlQ29tcG9uZW50cy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgY29uc3QgaGlkZGVuQ29tcG9uZW50cyA9IGNoYW5nZXMuaGlkZUNvbXBvbmVudHMuY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLmhpZGUgPSBoaWRkZW5Db21wb25lbnRzO1xuICAgICAgICB0aGlzLmZvcm1pby5ldmVyeUNvbXBvbmVudCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMuaGlkZSA9IGhpZGRlbkNvbXBvbmVudHM7XG4gICAgICAgICAgaWYgKGhpZGRlbkNvbXBvbmVudHMuaW5jbHVkZXMoY29tcG9uZW50LmNvbXBvbmVudC5rZXkpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblByZXZQYWdlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0cyhbXSk7XG4gICAgdGhpcy5wcmV2UGFnZS5lbWl0KGRhdGEpO1xuICB9XG5cbiAgb25OZXh0UGFnZShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMubmV4dFBhZ2UuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uU3VibWl0KHN1Ym1pc3Npb246IGFueSwgc2F2ZWQ6IGJvb2xlYW4sIG5vZW1pdD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gdHJ1ZTtcblxuICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKGZhc3RDbG9uZURlZXAoc3VibWlzc2lvbiksIHtcbiAgICAgIG5vVmFsaWRhdGU6IHRydWUsXG4gICAgICBub0NoZWNrOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLmVtaXQoJ3N1Ym1pdERvbmUnLCBzdWJtaXNzaW9uKTtcbiAgICB9XG4gICAgaWYgKCFub2VtaXQpIHtcbiAgICAgIHRoaXMuc3VibWl0LmVtaXQoc3VibWlzc2lvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdWNjZXNzKSB7XG4gICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgbWVzc2FnZTogZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uRXJyb3IoZXJyOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICBpZiAoIWVycikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBpdCBpcyBhbiBhcnJheS5cbiAgICBjb25zdCBlcnJvcnMgPSBBcnJheS5pc0FycmF5KGVycikgPyBlcnIgOiBbZXJyXTtcblxuICAgIC8vIEVtaXQgdGhlc2UgZXJyb3JzIGFnYWluLlxuICAgIHRoaXMuZXJyb3JDaGFuZ2UuZW1pdChlcnJvcnMpO1xuXG4gICAgaWYgKGVyci5zaWxlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RXJyb3InLCBlcnJvcnMpO1xuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9uZSBhbmQgc2V0IHRoZSBhbGVydHMgYXJyYXkuXG4gICAgZXJyb3JzLmZvckVhY2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgcGF0aHMsXG4gICAgICB9ID0gZXJyb3JcbiAgICAgICAgPyBlcnJvci5kZXRhaWxzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBkZXRhaWwubWVzc2FnZSksXG4gICAgICAgICAgICBwYXRoczogZXJyb3IuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gZGV0YWlsLnBhdGgpLFxuICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhdGhzOiBlcnJvci5wYXRoID8gW2Vycm9yLnBhdGhdIDogW10sXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBwYXRoczogW10sXG4gICAgICAgIH07XG5cbiAgICAgIGxldCBzaG91bGRFcnJvckRpc3BsYXkgPSB0cnVlO1xuXG4gICAgICBpZiAodGhpcy5mb3JtaW8pIHtcbiAgICAgICAgcGF0aHMuZm9yRWFjaCgocGF0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmZvcm1pby5nZXRDb21wb25lbnQocGF0aCk7XG4gICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IEFycmF5LmlzQXJyYXkoY29tcG9uZW50KSA/IGNvbXBvbmVudCA6IFtjb21wb25lbnRdO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZVRleHQgPSBBcnJheS5pc0FycmF5KG1lc3NhZ2UpID8gbWVzc2FnZVtpbmRleF0gOiBtZXNzYWdlO1xuICAgICAgICAgICAgY29tcG9uZW50cy5mb3JFYWNoKChjb21wKSA9PiBjb21wLnNldEN1c3RvbVZhbGlkaXR5KG1lc3NhZ2VUZXh0LCB0cnVlKSk7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0cy5hZGRBbGVydCh7XG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlW2luZGV4XSxcbiAgICAgICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzaG91bGRFcnJvckRpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICgod2luZG93IGFzIGFueSkuVlBBVF9FTkFCTEVEKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PT0nc3RyaW5nJyAmJiB0aGlzLmZvcm1pby5jb21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1pby5jb21wb25lbnRzLmZvckVhY2goKGNvbXApID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNvbXAgJiYgY29tcC50eXBlICE9PSAnYnV0dG9uJykge1xuICAgICAgICAgICAgICAgIGNvbXAuc2V0Q3VzdG9tVmFsaWRpdHkobWVzc2FnZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5ub0FsZXJ0cykge1xuICAgICAgICAgIHRoaXMuZm9ybWlvLnNob3dFcnJvcnMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkRXJyb3JEaXNwbGF5KSB7XG4gICAgICAgIHRoaXMuYWxlcnRzLmFkZEFsZXJ0KHtcbiAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIGNvbXBvbmVudDogZXJyb3IuY29tcG9uZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvY3VzT25Db21wb25ldChrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZm9jdXNPbkNvbXBvbmVudChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHN1Ym1pdEV4ZWN1dGUoc3VibWlzc2lvbjogb2JqZWN0LCBzYXZlZCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiAhdGhpcy51cmwgJiYgIXNhdmVkKSB7XG4gICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgLnNhdmVTdWJtaXNzaW9uKHN1Ym1pc3Npb24pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHN1Yjoge30pID0+IHRoaXMub25TdWJtaXQoc3ViLCB0cnVlKSxcbiAgICAgICAgICBlcnIgPT4gdGhpcy5vbkVycm9yKGVycilcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vblN1Ym1pdChzdWJtaXNzaW9uLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0Rm9ybShzdWJtaXNzaW9uOiBhbnksIHNhdmVkID0gZmFsc2UpIHtcbiAgICAvLyBLZWVwIGRvdWJsZSBzdWJtaXRzIGZyb20gb2NjdXJyaW5nLi4uXG4gICAgaWYgKHRoaXMuc3VibWl0dGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5zZXRNZXRhZGF0YShzdWJtaXNzaW9uKTtcbiAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gZmFsc2U7XG4gICAgdGhpcy5zdWJtaXR0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmJlZm9yZVN1Ym1pdC5lbWl0KHN1Ym1pc3Npb24pO1xuXG4gICAgLy8gaWYgdGhleSBwcm92aWRlIGEgYmVmb3JlU3VibWl0IGhvb2ssIHRoZW4gYWxsb3cgdGhlbSB0byBhbHRlciB0aGUgc3VibWlzc2lvbiBhc3luY2hyb25vdXNseVxuICAgIC8vIG9yIGV2ZW4gcHJvdmlkZSBhIGN1c3RvbSBFcnJvciBtZXRob2QuXG4gICAgY29uc3QgYmVmb3JlU3VibWl0ID0gZ2V0KHRoaXMub3B0aW9ucywgJ2hvb2tzLmJlZm9yZVN1Ym1pdCcpO1xuICAgIGlmIChiZWZvcmVTdWJtaXQpIHtcbiAgICAgIGJlZm9yZVN1Ym1pdChzdWJtaXNzaW9uLCAoZXJyOiBGb3JtaW9FcnJvciwgc3ViOiBvYmplY3QpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHRoaXMub25FcnJvcihlcnIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Ym1pdEV4ZWN1dGUoc3ViLCBzYXZlZCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJtaXRFeGVjdXRlKHN1Ym1pc3Npb24sIHNhdmVkKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZSh2YWx1ZTogYW55LCBmbGFnczogYW55LCBpc01vZGlmaWVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMud2F0Y2hTdWJtaXNzaW9uRXJyb3JzICYmICF0aGlzLnN1Ym1pc3Npb25TdWNjZXNzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBnZXQodGhpcywgJ2Zvcm1pby5lcnJvcnMnLCBbXSk7XG4gICAgICBjb25zdCBhbGVydHMgPSBnZXQodGhpcywgJ2FsZXJ0cy5hbGVydHMnLCBbXSk7XG4gICAgICBjb25zdCBzdWJtaXR0ZWQgPSBnZXQodGhpcywgJ2Zvcm1pby5zdWJtaXR0ZWQnLCBmYWxzZSk7XG4gICAgICBpZiAoc3VibWl0dGVkICYmIChlcnJvcnMubGVuZ3RoIHx8IGFsZXJ0cy5sZW5ndGgpKSB7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnJvcnMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jaGFuZ2UuZW1pdCh7Li4udmFsdWUsIGZsYWdzLCBpc01vZGlmaWVkfSk7XG4gIH1cbn1cbiJdfQ==
580
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWlvQmFzZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL3NyYy9Gb3JtaW9CYXNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBd0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFDekQsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFLM0MsTUFBTSxPQUFPLG1CQUFtQjtJQTZEckI7SUFDWTtJQUNBO0lBOURaLElBQUksQ0FBYztJQUNsQixVQUFVLEdBQVMsRUFBRSxDQUFDO0lBQ3RCLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLE9BQU8sQ0FBaUI7SUFDeEIsT0FBTyxDQUFpQjtJQUN4QixNQUFNLEdBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUM1QixhQUFhLENBQU87SUFDcEIsYUFBYSxDQUFPO0lBQ3BCLFFBQVEsR0FBSyxLQUFLLENBQUM7SUFDbkIsUUFBUSxHQUFLLEtBQUssQ0FBQztJQUNuQixXQUFXLEdBQUssS0FBSyxDQUFDO0lBQ3RCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQW9DO0lBQzNDLEtBQUssQ0FBcUI7SUFDMUIsT0FBTyxDQUF3QjtJQUMvQixV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QUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ2dDLGFBQWE7c0JBQW5ELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1pb1NlcnZpY2UgfSBmcm9tICcuL2Zvcm1pby5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1pb0FsZXJ0cyB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydHMvZm9ybWlvLmFsZXJ0cyc7XG5pbXBvcnQgeyBGb3JtaW9BcHBDb25maWcgfSBmcm9tICcuL2Zvcm1pby5jb25maWcnO1xuaW1wb3J0IHsgRm9ybWlvRXJyb3IsIEZvcm1pb0Zvcm0sIEZvcm1pb09wdGlvbnMsIEZvcm1pb1JlZnJlc2hWYWx1ZSB9IGZyb20gJy4vZm9ybWlvLmNvbW1vbic7XG5pbXBvcnQgeyBhc3NpZ24sIGdldCwgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDdXN0b21UYWdzU2VydmljZSB9IGZyb20gJy4vY3VzdG9tLXRhZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ0Bmb3JtaW8vanMnO1xuaW1wb3J0IHsgQWxlcnRzUG9zaXRpb24gfSBmcm9tICcuL3R5cGVzL2FsZXJ0cy1wb3NpdGlvbic7XG5jb25zdCB7IEV2YWx1YXRvciwgZmFzdENsb25lRGVlcCB9ID0gVXRpbHM7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWlvQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBmb3JtPzogRm9ybWlvRm9ybTtcbiAgQElucHV0KCkgc3VibWlzc2lvbj86IGFueSA9IHt9O1xuICBASW5wdXQoKSBzcmM/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVybD86IHN0cmluZztcbiAgQElucHV0KCkgc2VydmljZT86IEZvcm1pb1NlcnZpY2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBGb3JtaW9PcHRpb25zO1xuICBASW5wdXQoKSBub2V2YWwgPyA9IEV2YWx1YXRvci5ub2V2YWw7XG4gIEBJbnB1dCgpIGZvcm1pb09wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlbmRlck9wdGlvbnM/OiBhbnk7XG4gIEBJbnB1dCgpIHJlYWRPbmx5ID8gPSBmYWxzZTtcbiAgQElucHV0KCkgdmlld09ubHkgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlTG9hZGluZyA/ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVDb21wb25lbnRzPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBFdmVudEVtaXR0ZXI8Rm9ybWlvUmVmcmVzaFZhbHVlPjtcbiAgQElucHV0KCkgZXJyb3I/OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KCkgc3VjY2Vzcz86IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBASW5wdXQoKSBzdWJtaXREb25lPzogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIEBJbnB1dCgpIGxhbmd1YWdlPzogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIEBJbnB1dCgpIGhvb2tzPzogYW55ID0ge307XG4gIEBJbnB1dCgpIHJlbmRlcmVyPzogYW55O1xuICBASW5wdXQoKSB3YXRjaFN1Ym1pc3Npb25FcnJvcnMgPyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhVGFibGVBY3Rpb25zPyA6IGFueSA9IFtdXG4gIEBPdXRwdXQoKSByZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGN1c3RvbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkaW5nU3RhdHVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIHByZXZQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSBuZXh0UGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuICBAT3V0cHV0KCkgYmVmb3JlU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIEBPdXRwdXQoKSByb3dBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0FkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dFZGl0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd1NlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2hhbmdlSXRlbXNQZXJQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgQE91dHB1dCgpIGludmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBlcnJvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZm9ybUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHN1Ym1pc3Npb25Mb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybWlvQmFzZUNvbXBvbmVudD4oKTtcbiAgQFZpZXdDaGlsZCgnZm9ybWlvJywgeyBzdGF0aWM6IHRydWUgfSkgZm9ybWlvRWxlbWVudD86IEVsZW1lbnRSZWY8YW55PjtcblxuICBwdWJsaWMgQWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbjtcbiAgcHVibGljIGZvcm1pbzogYW55O1xuICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIGFsZXJ0cyA9IG5ldyBGb3JtaW9BbGVydHMoKTtcbiAgcHVibGljIGZvcm1pb1JlYWR5OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSBmb3JtaW9SZWFkeVJlc29sdmU6IGFueTtcbiAgcHJpdmF0ZSBzdWJtaXR0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3VibWlzc2lvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIG5vQWxlcnRzOiBib29sZWFuO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRm9ybWlvQXBwQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjdXN0b21UYWdzPzogQ3VzdG9tVGFnc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1pb1JlYWR5ID0gbmV3IFByb21pc2UoKHJlYWR5KSA9PiB7XG4gICAgICB0aGlzLmZvcm1pb1JlYWR5UmVzb2x2ZSA9IHJlYWR5O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XG4gIH1cblxuICBnZXRSZW5kZXJlck9wdGlvbnMoKSB7XG4gICAgY29uc3QgZXh0cmFUYWdzID0gdGhpcy5jdXN0b21UYWdzID8gdGhpcy5jdXN0b21UYWdzLnRhZ3MgOiBbXTtcbiAgICByZXR1cm4gYXNzaWduKHt9LCB7XG4gICAgICBpY29uczogZ2V0KHRoaXMuY29uZmlnLCAnaWNvbnMnLCAnZm9udGF3ZXNvbWUnKSxcbiAgICAgIG5vQWxlcnRzOiBnZXQodGhpcy5vcHRpb25zLCAnbm9BbGVydHMnLCB0cnVlKSxcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRPbmx5LFxuICAgICAgdmlld0FzSHRtbDogdGhpcy52aWV3T25seSxcbiAgICAgIC4uLih0aGlzLnZpZXdPbmx5ICYmIHsgcmVuZGVyTW9kZTogXCJodG1sXCIgfSksXG4gICAgICBpMThuOiBnZXQodGhpcy5vcHRpb25zLCAnaTE4bicsIG51bGwpLFxuICAgICAgZmlsZVNlcnZpY2U6IGdldCh0aGlzLm9wdGlvbnMsICdmaWxlU2VydmljZScsIG51bGwpLFxuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBzYW5pdGl6ZUNvbmZpZzoge1xuICAgICAgICBhZGRUYWdzOiBleHRyYVRhZ3NcbiAgICAgIH0sXG4gICAgICBkYXRhVGFibGVBY3Rpb25zOiB0aGlzLmRhdGFUYWJsZUFjdGlvbnNcbiAgICB9LCB0aGlzLnJlbmRlck9wdGlvbnMgfHwge30pO1xuICB9XG5cbiAgY3JlYXRlUmVuZGVyZXIoKSB7XG4gICAgY29uc3QgUmVuZGVyZXIgPSB0aGlzLmdldFJlbmRlcmVyKCk7XG4gICAgY29uc3QgZm9ybSA9IChuZXcgUmVuZGVyZXIoXG4gICAgICB0aGlzLmZvcm1pb0VsZW1lbnQgPyB0aGlzLmZvcm1pb0VsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGwsXG4gICAgICB0aGlzLmZvcm0sXG4gICAgICB0aGlzLmdldFJlbmRlcmVyT3B0aW9ucygpXG4gICAgKSk7XG4gICAgcmV0dXJuIGZvcm0uaW5zdGFuY2U7XG4gIH1cblxuICBzZXRGb3JtVXJsKHVybCkge1xuICAgIHRoaXMuZm9ybWlvLnNldFVybCh1cmwsIHRoaXMuZm9ybWlvT3B0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBzZXRGb3JtKGZvcm06IEZvcm1pb0Zvcm0pIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm0udGl0bGUpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmZvcm0udGl0bGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uY29tcG9uZW50cyAmJiB0aGlzLmZvcm0uY29tcG9uZW50c1swXSkge1xuICAgICAgdGhpcy5sYWJlbCA9IHRoaXMuZm9ybS5jb21wb25lbnRzWzBdLmxhYmVsO1xuICAgIH1cblxuICAgIC8vIENsZWFyIG91dCB0aGUgZWxlbWVudCB0byByZW5kZXIgdGhlIG5ldyBmb3JtLlxuICAgIGlmICh0aGlzLmZvcm1pb0VsZW1lbnQgJiYgdGhpcy5mb3JtaW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZm9ybWlvRWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pbyA9IHRoaXMuY3JlYXRlUmVuZGVyZXIoKTtcblxuICAgIGlmKCF0aGlzLmZvcm1pbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHRoaXMuc3VibWlzc2lvbiwge1xuICAgICAgZnJvbVN1Ym1pc3Npb246IGZhbHNlXG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVuZGVyT3B0aW9ucyAmJiB0aGlzLnJlbmRlck9wdGlvbnMudmFsaWRhdGVPbkluaXQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKHRoaXMuc3VibWlzc2lvbiwge3ZhbGlkYXRlT25Jbml0OiB0cnVlfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgdGhpcy5zZXRGb3JtVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICB0aGlzLnNldEZvcm1VcmwodGhpcy5zcmMpO1xuICAgIH1cbiAgICB0aGlzLmZvcm1pby5ub3N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5hdHRhY2hGb3JtRXZlbnRzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtaW8ucmVhZHkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlYWR5LmVtaXQodGhpcyk7XG4gICAgICAgIHRoaXMuZm9ybWlvUmVhZHlSZXNvbHZlKHRoaXMuZm9ybWlvKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeSkge1xuICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb25SZWFkeS50aGVuKChzdWJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25Mb2FkLmVtaXQoc3VibWlzc2lvbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWlvO1xuICAgIH0pO1xuICB9XG5cbiAgYXR0YWNoRm9ybUV2ZW50cygpIHtcbiAgICB0aGlzLmZvcm1pby5vbigncHJldlBhZ2UnLCAoZGF0YTogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5vblByZXZQYWdlKGRhdGEpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ25leHRQYWdlJywgKGRhdGE6IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25OZXh0UGFnZShkYXRhKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdjaGFuZ2UnLCAodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMub25DaGFuZ2UodmFsdWUsIGZsYWdzLCBpc01vZGlmaWVkKSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dBZGQnLCAoY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGQuZW1pdChjb21wb25lbnQpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0FkZGVkJywgKGRhdGE6IGFueSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dBZGRlZC5lbWl0KHtjb21wb25lbnQsIHJvdzogZGF0YX0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXQnLCAoZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyLCBjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0VkaXQuZW1pdCh7Y29tcG9uZW50LCByb3c6IGRhdGEsIHJvd0luZGV4LCBpbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0VkaXRlZCcsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RWRpdGVkLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleH0pKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ3Jvd0RlbGV0ZScsIChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGluZGV4OiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm93RGVsZXRlLmVtaXQoe2NvbXBvbmVudCwgcm93OiBkYXRhLCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dDbGljaycsIChyb3c6IGFueSwgcm93SW5kZXg6IG51bWJlciwgaW5kZXg6IG51bWJlcixjb21wb25lbnQ6IGFueSkgPT4gIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJvd0NsaWNrLmVtaXQoe2NvbXBvbmVudCwgcm93LCByb3dJbmRleCwgaW5kZXh9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyb3dTZWxlY3RDaGFuZ2UnLCAoc2VsZWN0ZWRSb3dzOiBhbnlbXSwgY29tcG9uZW50OiBhbnkpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yb3dTZWxlY3RDaGFuZ2UuZW1pdCh7c2VsZWN0ZWRSb3dzLCBjb21wb25lbnR9KSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdwYWdlJywgKGN1cnJlbnRQYWdlOiBudW1iZXIsIGNvbXBvbmVudDogYW55KSA9PiAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucGFnZS5lbWl0KHtjdXJyZW50UGFnZSwgY29tcG9uZW50fSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY2hhbmdlSXRlbXNQZXJQYWdlJywgKGl0ZW1zUGVyUGFnZTpudW1iZXIpID0+ICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VJdGVtc1BlclBhZ2UuZW1pdCh7aXRlbXNQZXJQYWdlfSkpKTtcbiAgICB0aGlzLmZvcm1pby5vbignY3VzdG9tRXZlbnQnLCAoZXZlbnQ6IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmN1c3RvbUV2ZW50LmVtaXQoZXZlbnQpKVxuICAgICk7XG5cbiAgICBbJ2ZpbGVVcGxvYWRpbmdTdGFydCcsICdmaWxlVXBsb2FkaW5nRW5kJ10uZm9yRWFjaCgoZXZlbnROYW1lLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gISFpbmRleCA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgIHRoaXMuZm9ybWlvLm9uKGV2ZW50TmFtZSwgKCkgPT5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZmlsZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHN0YXR1cykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtaW8ub24oJ3N1Ym1pdCcsIChzdWJtaXNzaW9uOiBhbnksIHNhdmVkOiBib29sZWFuKSA9PlxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuc3VibWl0Rm9ybShzdWJtaXNzaW9uLCBzYXZlZCkpXG4gICAgKTtcbiAgICB0aGlzLmZvcm1pby5vbignZXJyb3InLCAoZXJyOiBhbnkpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5vbkVycm9yKGVycik7XG4gICAgfSkpO1xuICAgIHRoaXMuZm9ybWlvLm9uKCdyZW5kZXInLCAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yZW5kZXIuZW1pdCgpKSk7XG4gICAgdGhpcy5mb3JtaW8ub24oJ2Zvcm1Mb2FkJywgKGxvYWRlZEZvcm06IGFueSkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmZvcm1Mb2FkLmVtaXQobG9hZGVkRm9ybSkpXG4gICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHRyYVRhZ3MgPSB0aGlzLmN1c3RvbVRhZ3MgPyB0aGlzLmN1c3RvbVRhZ3MudGFncyA6IFtdO1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBGb3JtaW9PcHRpb25zID0ge1xuICAgICAgZXJyb3JzOiB7XG4gICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZml4IHRoZSBmb2xsb3dpbmcgZXJyb3JzIGJlZm9yZSBzdWJtaXR0aW5nLidcbiAgICAgIH0sXG4gICAgICBhbGVydHM6IHtcbiAgICAgICAgc3VibWl0TWVzc2FnZTogJ1N1Ym1pc3Npb24gQ29tcGxldGUuJ1xuICAgICAgfSxcbiAgICAgIGRpc2FibGVBbGVydHM6IGZhbHNlLFxuICAgICAgaG9va3M6IHtcbiAgICAgICAgYmVmb3JlU3VibWl0OiBudWxsXG4gICAgICB9LFxuICAgICAgc2FuaXRpemVDb25maWc6IHtcbiAgICAgICAgYWRkVGFnczogZXh0cmFUYWdzXG4gICAgICB9LFxuICAgICAgYWxlcnRzUG9zaXRpb246IEFsZXJ0c1Bvc2l0aW9uLnRvcCxcbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlQWxlcnRzKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuYWxlcnRzUG9zaXRpb24gPSBBbGVydHNQb3NpdGlvbi5ub25lO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIEV2YWx1YXRvci5ub2V2YWwgPSB0aGlzLm5vZXZhbDtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIGlmICh0aGlzLmxhbmd1YWdlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMubGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuZm9ybWlvLmxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2Uuc3Vic2NyaWJlKChsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1pby5sYW5ndWFnZSA9IGxhbmc7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnJlZnJlc2gpIHtcbiAgICAgIHRoaXMucmVmcmVzaC5zdWJzY3JpYmUoKHJlZnJlc2g6IEZvcm1pb1JlZnJlc2hWYWx1ZSkgPT5cbiAgICAgICAgdGhpcy5vblJlZnJlc2gocmVmcmVzaClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc3Vic2NyaWJlKChlcnI6IGFueSkgPT4gdGhpcy5vbkVycm9yKGVycikpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuc3VjY2Vzcy5zdWJzY3JpYmUoKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJtaXREb25lKSB7XG4gICAgICB0aGlzLnN1Ym1pdERvbmUuc3Vic2NyaWJlKChzdWJtaXNzaW9uOiBvYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RG9uZScsIHN1Ym1pc3Npb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnNyYyk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNldEZvcm1Gcm9tU3JjKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVybCAmJiAhdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRm9ybWlvU2VydmljZSh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Rm9ybUZyb21TcmMoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmxvYWRGb3JtKHsgcGFyYW1zOiB7IGxpdmU6IDEgfSB9KS5zdWJzY3JpYmUoXG4gICAgICAoZm9ybTogRm9ybWlvRm9ybSkgPT4ge1xuICAgICAgICBpZiAoZm9ybSAmJiBmb3JtLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm0oZm9ybSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBhIHN1Ym1pc3Npb24gaXMgYWxzbyBwcm92aWRlZC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzRW1wdHkodGhpcy5zdWJtaXNzaW9uKSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZSAmJlxuICAgICAgICAgIHRoaXMuc2VydmljZS5mb3JtaW8uc3VibWlzc2lvbklkXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VydmljZS5sb2FkU3VibWlzc2lvbigpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChzdWJtaXNzaW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pc3Npb24gPSB0aGlzLmZvcm1pby5zdWJtaXNzaW9uID0gc3VibWlzc2lvbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5vbkVycm9yKGVycilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmZvcm1pbykge1xuICAgICAgdGhpcy5mb3JtaW8uZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVmcmVzaChyZWZyZXNoOiBGb3JtaW9SZWZyZXNoVmFsdWUpIHtcbiAgICB0aGlzLmZvcm1pb1JlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHJlZnJlc2guZm9ybSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRGb3JtKHJlZnJlc2guZm9ybSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uc2V0U3VibWlzc2lvbihyZWZyZXNoLnN1Ym1pc3Npb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJlZnJlc2guc3VibWlzc2lvbikge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKHJlZnJlc2guc3VibWlzc2lvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHJlZnJlc2gucHJvcGVydHkpIHtcbiAgICAgICAgICBjYXNlICdzdWJtaXNzaW9uJzpcbiAgICAgICAgICAgIHRoaXMuZm9ybWlvLnN1Ym1pc3Npb24gPSByZWZyZXNoLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgICAgICB0aGlzLmZvcm1pby5mb3JtID0gcmVmcmVzaC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpIHtcbiAgICBFdmFsdWF0b3Iubm9ldmFsID0gdGhpcy5ub2V2YWw7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmIGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtKGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtaW9SZWFkeS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjaGFuZ2VzLnN1Ym1pc3Npb24gJiYgY2hhbmdlcy5zdWJtaXNzaW9uLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmZvcm1pby5zZXRTdWJtaXNzaW9uKGNoYW5nZXMuc3VibWlzc2lvbi5jdXJyZW50VmFsdWUsIHtcbiAgICAgICAgICBmcm9tU3VibWlzc2lvbjogIWNoYW5nZXMuc3VibWlzc2lvbi5maXJzdENoYW5nZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXMuaGlkZUNvbXBvbmVudHMgJiYgY2hhbmdlcy5oaWRlQ29tcG9uZW50cy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgY29uc3QgaGlkZGVuQ29tcG9uZW50cyA9IGNoYW5nZXMuaGlkZUNvbXBvbmVudHMuY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLmZvcm1pby5vcHRpb25zLmhpZGUgPSBoaWRkZW5Db21wb25lbnRzO1xuICAgICAgICB0aGlzLmZvcm1pby5ldmVyeUNvbXBvbmVudCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMuaGlkZSA9IGhpZGRlbkNvbXBvbmVudHM7XG4gICAgICAgICAgaWYgKGhpZGRlbkNvbXBvbmVudHMuaW5jbHVkZXMoY29tcG9uZW50LmNvbXBvbmVudC5rZXkpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblByZXZQYWdlKGRhdGE6IGFueSkge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0cyhbXSk7XG4gICAgdGhpcy5wcmV2UGFnZS5lbWl0KGRhdGEpO1xuICB9XG5cbiAgb25OZXh0UGFnZShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMubmV4dFBhZ2UuZW1pdChkYXRhKTtcbiAgfVxuXG4gIG9uU3VibWl0KHN1Ym1pc3Npb246IGFueSwgc2F2ZWQ6IGJvb2xlYW4sIG5vZW1pdD86IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pc3Npb25TdWNjZXNzID0gdHJ1ZTtcblxuICAgIHRoaXMuZm9ybWlvLnNldFZhbHVlKGZhc3RDbG9uZURlZXAoc3VibWlzc2lvbiksIHtcbiAgICAgIG5vVmFsaWRhdGU6IHRydWUsXG4gICAgICBub0NoZWNrOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIHRoaXMuZm9ybWlvLmVtaXQoJ3N1Ym1pdERvbmUnLCBzdWJtaXNzaW9uKTtcbiAgICB9XG4gICAgaWYgKCFub2VtaXQpIHtcbiAgICAgIHRoaXMuc3VibWl0LmVtaXQoc3VibWlzc2lvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdWNjZXNzKSB7XG4gICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydCh7XG4gICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgbWVzc2FnZTogZ2V0KHRoaXMub3B0aW9ucywgJ2FsZXJ0cy5zdWJtaXRNZXNzYWdlJylcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uRXJyb3IoZXJyOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydHMoW10pO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICBpZiAoIWVycikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBpdCBpcyBhbiBhcnJheS5cbiAgICBjb25zdCBlcnJvcnMgPSBBcnJheS5pc0FycmF5KGVycikgPyBlcnIgOiBbZXJyXTtcblxuICAgIC8vIEVtaXQgdGhlc2UgZXJyb3JzIGFnYWluLlxuICAgIHRoaXMuZXJyb3JDaGFuZ2UuZW1pdChlcnJvcnMpO1xuXG4gICAgaWYgKGVyci5zaWxlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtaW8uZW1pdCgnc3VibWl0RXJyb3InLCBlcnJvcnMpO1xuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9uZSBhbmQgc2V0IHRoZSBhbGVydHMgYXJyYXkuXG4gICAgZXJyb3JzLmZvckVhY2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgcGF0aHMsXG4gICAgICB9ID0gZXJyb3JcbiAgICAgICAgPyBlcnJvci5kZXRhaWxzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBkZXRhaWwubWVzc2FnZSksXG4gICAgICAgICAgICBwYXRoczogZXJyb3IuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gZGV0YWlsLnBhdGgpLFxuICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhdGhzOiAoZXJyb3IucGF0aCB8fCBlcnJvci5mb3JtYXR0ZWRLZXlPclBhdGgpID8gW2Vycm9yLnBhdGggfHwgZXJyb3IuZm9ybWF0dGVkS2V5T3JQYXRoXSA6IFtdLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgcGF0aHM6IFtdLFxuICAgICAgICB9O1xuXG4gICAgICBsZXQgc2hvdWxkRXJyb3JEaXNwbGF5ID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuZm9ybWlvKSB7XG4gICAgICAgIHBhdGhzLmZvckVhY2goKHBhdGgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5mb3JtaW8uZ2V0Q29tcG9uZW50KHBhdGgpO1xuICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBBcnJheS5pc0FycmF5KGNvbXBvbmVudCkgPyBjb21wb25lbnQgOiBbY29tcG9uZW50XTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VUZXh0ID0gQXJyYXkuaXNBcnJheShtZXNzYWdlKSA/IG1lc3NhZ2VbaW5kZXhdIDogbWVzc2FnZTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuZm9yRWFjaCgoY29tcCkgPT4gY29tcC5zZXRDdXN0b21WYWxpZGl0eShtZXNzYWdlVGV4dCwgdHJ1ZSkpO1xuICAgICAgICAgICAgdGhpcy5hbGVydHMuYWRkQWxlcnQoe1xuICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZVtpbmRleF0sXG4gICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2hvdWxkRXJyb3JEaXNwbGF5ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLlZQQVRfRU5BQkxFRCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09J3N0cmluZycgJiYgdGhpcy5mb3JtaW8uY29tcG9uZW50cykge1xuICAgICAgICAgICAgdGhpcy5mb3JtaW8uY29tcG9uZW50cy5mb3JFYWNoKChjb21wKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb21wICYmIGNvbXAudHlwZSAhPT0gJ2J1dHRvbicpIHtcbiAgICAgICAgICAgICAgICBjb21wLnNldEN1c3RvbVZhbGlkaXR5KG1lc3NhZ2UsIHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZEVycm9yRGlzcGxheSkge1xuICAgICAgICB0aGlzLmFsZXJ0cy5hZGRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICBjb21wb25lbnQ6IGVycm9yLmNvbXBvbmVudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgIXRoaXMubm9BbGVydHMpIHtcbiAgICAgIHRoaXMuZm9ybWlvLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c09uQ29tcG9uZXQoa2V5OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mb3JtaW8pIHtcbiAgICAgIHRoaXMuZm9ybWlvLmZvY3VzT25Db21wb25lbnQoa2V5KTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXRFeGVjdXRlKHN1Ym1pc3Npb246IG9iamVjdCwgc2F2ZWQgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgIXRoaXMudXJsICYmICFzYXZlZCkge1xuICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5zYXZlU3VibWlzc2lvbihzdWJtaXNzaW9uKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChzdWI6IHt9KSA9PiB0aGlzLm9uU3VibWl0KHN1YiwgdHJ1ZSksXG4gICAgICAgICAgZXJyID0+IHRoaXMub25FcnJvcihlcnIpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25TdWJtaXQoc3VibWlzc2lvbiwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHN1Ym1pdEZvcm0oc3VibWlzc2lvbjogYW55LCBzYXZlZCA9IGZhbHNlKSB7XG4gICAgLy8gS2VlcCBkb3VibGUgc3VibWl0cyBmcm9tIG9jY3VycmluZy4uLlxuICAgIGlmICh0aGlzLnN1Ym1pdHRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb3JtaW8uc2V0TWV0YWRhdGEoc3VibWlzc2lvbik7XG4gICAgdGhpcy5zdWJtaXNzaW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IHRydWU7XG4gICAgdGhpcy5iZWZvcmVTdWJtaXQuZW1pdChzdWJtaXNzaW9uKTtcblxuICAgIC8vIGlmIHRoZXkgcHJvdmlkZSBhIGJlZm9yZVN1Ym1pdCBob29rLCB0aGVuIGFsbG93IHRoZW0gdG8gYWx0ZXIgdGhlIHN1Ym1pc3Npb24gYXN5bmNocm9ub3VzbHlcbiAgICAvLyBvciBldmVuIHByb3ZpZGUgYSBjdXN0b20gRXJyb3IgbWV0aG9kLlxuICAgIGNvbnN0IGJlZm9yZVN1Ym1pdCA9IGdldCh0aGlzLm9wdGlvbnMsICdob29rcy5iZWZvcmVTdWJtaXQnKTtcbiAgICBpZiAoYmVmb3JlU3VibWl0KSB7XG4gICAgICBiZWZvcmVTdWJtaXQoc3VibWlzc2lvbiwgKGVycjogRm9ybWlvRXJyb3IsIHN1Yjogb2JqZWN0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWJtaXRFeGVjdXRlKHN1Yiwgc2F2ZWQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3VibWl0RXhlY3V0ZShzdWJtaXNzaW9uLCBzYXZlZCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6IGFueSwgZmxhZ3M6IGFueSwgaXNNb2RpZmllZDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLndhdGNoU3VibWlzc2lvbkVycm9ycyAmJiAhdGhpcy5zdWJtaXNzaW9uU3VjY2Vzcykge1xuICAgICAgY29uc3QgZXJyb3JzID0gZ2V0KHRoaXMsICdmb3JtaW8uZXJyb3JzJywgW10pO1xuICAgICAgY29uc3QgYWxlcnRzID0gZ2V0KHRoaXMsICdhbGVydHMuYWxlcnRzJywgW10pO1xuICAgICAgY29uc3Qgc3VibWl0dGVkID0gZ2V0KHRoaXMsICdmb3JtaW8uc3VibWl0dGVkJywgZmFsc2UpO1xuICAgICAgaWYgKHN1Ym1pdHRlZCAmJiAoZXJyb3JzLmxlbmd0aCB8fCBhbGVydHMubGVuZ3RoKSkge1xuICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlLmVtaXQoey4uLnZhbHVlLCBmbGFncywgaXNNb2RpZmllZH0pO1xuICB9XG59XG4iXX0=
@@ -51,7 +51,7 @@ export class FormioAuthService {
51
51
  this.resetPassForm =
52
52
  this.appConfig.appUrl +
53
53
  '/' +
54
- get(this.config, 'register.form', 'resetpass');
54
+ get(this.config, 'resetpass.form', 'resetpass');
55
55
  this.onLogin = new EventEmitter();
56
56
  this.onLogout = new EventEmitter();
57
57
  this.onRegister = new EventEmitter();
@@ -196,4 +196,4 @@ export class FormioAuthService {
196
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FormioAuthService, decorators: [{
197
197
  type: Injectable
198
198
  }], ctorParameters: () => [{ type: i1.FormioAppConfig }, { type: i2.FormioAuthConfig }] });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mb3JtaW8vYXV0aC9zcmMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFHcEMsTUFBTSxPQUFPLGlCQUFpQjtJQTZCbkI7SUFDQTtJQTdCRixJQUFJLENBQU07SUFDVixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFNBQVMsQ0FBUztJQUNsQixPQUFPLENBQXVCO0lBQzlCLFFBQVEsQ0FBdUI7SUFFL0IsWUFBWSxDQUFTO0lBQ3JCLFVBQVUsQ0FBdUI7SUFDakMsTUFBTSxDQUF1QjtJQUM3QixPQUFPLENBQW9CO0lBRTNCLGFBQWEsQ0FBUztJQUN0QixXQUFXLENBQXVCO0lBRWxDLEtBQUssQ0FBbUI7SUFDeEIsWUFBWSxDQUFNO0lBQ2xCLFdBQVcsQ0FBTTtJQUVqQixZQUFZLENBQWdCO0lBQzVCLFdBQVcsQ0FBZ0I7SUFDM0IsU0FBUyxDQUFnQjtJQUN6QixVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JCLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUMzQixLQUFLLENBQU07SUFDWCxFQUFFLEdBQVEsRUFBRSxDQUFDO0lBRXBCLFlBQ1MsU0FBMEIsRUFDMUIsTUFBd0I7UUFEeEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFFL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENB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QVMsQ0FBQyxFQUFFLENBQUM7WUFDL0UsT0FBUSxNQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxNQUFNLENBQUMsTUFBTSxFQUFFO2FBQ1osSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsU0FBUyxlQUFlLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO2dCQUM5RixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxlQUFlLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQzt1R0FwTlUsaUJBQWlCOzJHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWlvQXV0aENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgRm9ybWlvQXBwQ29uZmlnIH0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7IGdldCwgZWFjaCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBGb3JtaW8gfSBmcm9tICdAZm9ybWlvL2pzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1pb0F1dGhTZXJ2aWNlIHtcbiAgcHVibGljIHVzZXI6IGFueTtcbiAgcHVibGljIGF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgbG9naW5Gb3JtOiBzdHJpbmc7XG4gIHB1YmxpYyBvbkxvZ2luOiBFdmVudEVtaXR0ZXI8b2JqZWN0PjtcbiAgcHVibGljIG9uTG9nb3V0OiBFdmVudEVtaXR0ZXI8b2JqZWN0PjtcblxuICBwdWJsaWMgcmVnaXN0ZXJGb3JtOiBzdHJpbmc7XG4gIHB1YmxpYyBvblJlZ2lzdGVyOiBFdmVudEVtaXR0ZXI8b2JqZWN0PjtcbiAgcHVibGljIG9uVXNlcjogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIHB1YmxpYyBvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBwdWJsaWMgcmVzZXRQYXNzRm9ybTogc3RyaW5nO1xuICBwdWJsaWMgb25SZXNldFBhc3M6IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuXG4gIHB1YmxpYyByZWFkeTogUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIHJlYWR5UmVzb2x2ZTogYW55O1xuICBwdWJsaWMgcmVhZHlSZWplY3Q6IGFueTtcblxuICBwdWJsaWMgcHJvamVjdFJlYWR5PzogUHJvbWlzZTxhbnk+O1xuICBwdWJsaWMgYWNjZXNzUmVhZHk/OiBQcm9taXNlPGFueT47XG4gIHB1YmxpYyB1c2VyUmVhZHk/OiBQcm9taXNlPGFueT47XG4gIHB1YmxpYyBmb3JtQWNjZXNzOiBhbnkgPSB7fTtcbiAgcHVibGljIHN1Ym1pc3Npb25BY2Nlc3M6IGFueSA9IHt9O1xuICBwdWJsaWMgcm9sZXM6IGFueTtcbiAgcHVibGljIGlzOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYXBwQ29uZmlnOiBGb3JtaW9BcHBDb25maWcsXG4gICAgcHVibGljIGNvbmZpZzogRm9ybWlvQXV0aENvbmZpZ1xuICApIHtcbiAgICB0aGlzLnVzZXIgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuYXBwQ29uZmlnICYmIHRoaXMuYXBwQ29uZmlnLmFwcFVybCkge1xuICAgICAgRm9ybWlvLnNldEJhc2VVcmwodGhpcy5hcHBDb25maWcuYXBpVXJsKTtcbiAgICAgIEZvcm1pby5zZXRQcm9qZWN0VXJsKHRoaXMuYXBwQ29uZmlnLmFwcFVybCk7XG4gICAgICBGb3JtaW8uZm9ybU9ubHkgPSAhIXRoaXMuYXBwQ29uZmlnLmZvcm1Pbmx5O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdZb3UgbXVzdCBwcm92aWRlIGFuIEFwcENvbmZpZyB3aXRoaW4geW91ciBhcHBsaWNhdGlvbiEnKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2luRm9ybSA9XG4gICAgICB0aGlzLmFwcENvbmZpZy5hcHBVcmwgK1xuICAgICAgJy8nICtcbiAgICAgIGdldCh0aGlzLmNvbmZpZywgJ2xvZ2luLmZvcm0nLCAndXNlci9sb2dpbicpO1xuICAgIHRoaXMucmVnaXN0ZXJGb3JtID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmFwcFVybCArXG4gICAgICAnLycgK1xuICAgICAgZ2V0KHRoaXMuY29uZmlnLCAncmVnaXN0ZXIuZm9ybScsICd1c2VyL3JlZ2lzdGVyJyk7XG4gICAgdGhpcy5yZXNldFBhc3NGb3JtID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmFwcFVybCArXG4gICAgICAnLycgK1xuICAgICAgZ2V0KHRoaXMuY29uZmlnLCAncmVnaXN0ZXIuZm9ybScsICdyZXNldHBhc3MnKTtcbiAgICB0aGlzLm9uTG9naW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vbkxvZ291dCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLm9uUmVnaXN0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vblVzZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnksIHJlamVjdDogYW55KSA9PiB7XG4gICAgICB0aGlzLnJlYWR5UmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB0aGlzLnJlYWR5UmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuXG4gICAgLy8gUmVnaXN0ZXIgZm9yIHRoZSBjb3JlIGV2ZW50cy5cbiAgICBGb3JtaW8uZXZlbnRzLm9uKCdmb3JtaW8uYmFkVG9rZW4nLCAoKSA9PiB0aGlzLmxvZ291dEVycm9yKCkpO1xuICAgIEZvcm1pby5ldmVudHMub24oJ2Zvcm1pby5zZXNzaW9uRXhwaXJlZCcsICgpID0+IHRoaXMubG9nb3V0RXJyb3IoKSk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5kZWxheUF1dGgpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9naW5TdWJtaXQoc3VibWlzc2lvbjogb2JqZWN0KSB7XG4gICAgdGhpcy5zZXRVc2VyKHN1Ym1pc3Npb24pO1xuICAgIHRoaXMub25Mb2dpbi5lbWl0KHN1Ym1pc3Npb24pO1xuICB9XG5cbiAgb25SZWdpc3RlclN1Ym1pdChzdWJtaXNzaW9uOiBvYmplY3QpIHtcbiAgICB0aGlzLnNldFVzZXIoc3VibWlzc2lvbik7XG4gICAgdGhpcy5vblJlZ2lzdGVyLmVtaXQoc3VibWlzc2lvbik7XG4gIH1cblxuICBvblJlc2V0UGFzc1N1Ym1pdChzdWJtaXNzaW9uOiBvYmplY3QpIHtcbiAgICB0aGlzLm9uUmVzZXRQYXNzLmVtaXQoc3VibWlzc2lvbik7XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMucHJvamVjdFJlYWR5ID0gRm9ybWlvLm1ha2VTdGF0aWNSZXF1ZXN0KHRoaXMuYXBwQ29uZmlnLmFwcFVybCkudGhlbihcbiAgICAgIChwcm9qZWN0OiBhbnkpID0+IHtcbiAgICAgICAgZWFjaChwcm9qZWN0LmFjY2VzcywgKGFjY2VzczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtQWNjZXNzW2FjY2Vzcy50eXBlXSA9IGFjY2Vzcy5yb2xlcztcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgKCk6IGFueSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUFjY2VzcyA9IHt9O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gR2V0IHRoZSBhY2Nlc3MgZm9yIHRoaXMgcHJvamVjdC5cbiAgICB0aGlzLmFjY2Vzc1JlYWR5ID0gRm9ybWlvLm1ha2VTdGF0aWNSZXF1ZXN0KFxuICAgICAgdGhpcy5hcHBDb25maWcuYXBwVXJsICsgJy9hY2Nlc3MnXG4gICAgKVxuICAgICAgLnRoZW4oKGFjY2VzczogYW55KSA9PiB7XG4gICAgICAgIGVhY2goYWNjZXNzLmZvcm1zLCAoZm9ybTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uQWNjZXNzW2Zvcm0ubmFtZV0gPSB7fTtcbiAgICAgICAgICBmb3JtLnN1Ym1pc3Npb25BY2Nlc3MuZm9yRWFjaCgoc3ViQWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VibWlzc2lvbkFjY2Vzc1tmb3JtLm5hbWVdW3N1YkFjY2Vzcy50eXBlXSA9IHN1YkFjY2Vzcy5yb2xlcztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucm9sZXMgPSBhY2Nlc3Mucm9sZXM7XG4gICAgICAgIHJldHVybiBhY2Nlc3M7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpOiBhbnkgPT4ge1xuICAgICAgICBpZiAoZXJyID09PSAnVG9rZW4gRXhwaXJlZCcgfHwgZXJyID09PSAnQmFkIFRva2VuJykge1xuICAgICAgICAgIHRoaXMuc2V0VXNlcihudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvbGVzID0ge307XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSlcblxuICAgIGxldCBjdXJyZW50VXNlclByb21pc2U6IFByb21pc2U8YW55PjtcbiAgICBpZiAodGhpcy5jb25maWcub2F1dGgpIHtcbiAgICAgIC8vIE1ha2UgYSBmaXggdG8gdGhlIGhhc2ggdG8gcmVtb3ZlIHN0YXJ0aW5nIFwiL1wiIHRoYXQgYW5ndWxhciBtaWdodCBwdXQgdGhlcmUuXG4gICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggJiYgd2luZG93LmxvY2F0aW9uLmhhc2gubWF0Y2goL14jXFwvYWNjZXNzX3Rva2VuLykpIHtcbiAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgd2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiNcXC9hY2Nlc3NfdG9rZW4vLCAnI2FjY2Vzc190b2tlbicpKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5pdGlhdGUgdGhlIFNTTyBpZiB0aGV5IHByb3ZpZGUgb2F1dGggc2V0dGluZ3MuXG4gICAgICBjdXJyZW50VXNlclByb21pc2UgPSBGb3JtaW8uc3NvSW5pdCh0aGlzLmNvbmZpZy5vYXV0aC50eXBlLCB0aGlzLmNvbmZpZy5vYXV0aC5vcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFVzZXJQcm9taXNlID0gRm9ybWlvLmN1cnJlbnRVc2VyKG51bGwsIHtcbiAgICAgICAgaWdub3JlQ2FjaGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXNlclJlYWR5ID0gY3VycmVudFVzZXJQcm9taXNlLnRoZW4oKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZXRVc2VyKHVzZXIpO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgdGhpcy5zZXRVc2VyKG51bGwpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuXG4gICAgLy8gVHJpZ2dlciB3ZSBhcmUgcmVkeSB3aGVuIGFsbCBwcm9taXNlcyBoYXZlIHJlc29sdmVkLlxuICAgIGlmICh0aGlzLmFjY2Vzc1JlYWR5KSB7XG4gICAgICB0aGlzLmFjY2Vzc1JlYWR5XG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMucHJvamVjdFJlYWR5KVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLnVzZXJSZWFkeSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5yZWFkeVJlc29sdmUodHJ1ZSkpXG4gICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHRoaXMucmVhZHlSZWplY3QoZXJyKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0VXNlcih1c2VyOiBhbnkpIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBGb3JtaW8ubmFtZXNwYWNlIHx8ICdmb3JtaW8nO1xuICAgIGlmICh1c2VyKSB7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7bmFtZXNwYWNlfUFwcFVzZXJgLCBKU09OLnN0cmluZ2lmeSh1c2VyKSk7XG4gICAgICB0aGlzLnNldFVzZXJSb2xlcygpO1xuICAgICAgRm9ybWlvLnNldFVzZXIodXNlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlciA9IG51bGw7XG4gICAgICB0aGlzLmlzID0ge307XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtuYW1lc3BhY2V9QXBwVXNlcmApO1xuICAgICAgRm9ybWlvLmNsZWFyQ2FjaGUoKTtcbiAgICAgIEZvcm1pby5zZXRVc2VyKG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aGVudGljYXRlZCA9ICEhRm9ybWlvLmdldFRva2VuKCk7XG4gICAgdGhpcy5vblVzZXIuZW1pdCh0aGlzLnVzZXIpO1xuICB9XG5cbiAgc2V0VXNlclJvbGVzKCkge1xuICAgIGlmICh0aGlzLmFjY2Vzc1JlYWR5KSB7XG4gICAgICB0aGlzLmFjY2Vzc1JlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgICBlYWNoKHRoaXMucm9sZXMsIChyb2xlOiBhbnksIHJvbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyLnJvbGVzLmluZGV4T2Yocm9sZS5faWQpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5pc1tyb2xlTmFtZV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBsb2dvdXRFcnJvcigpIHtcbiAgICB0aGlzLnNldFVzZXIobnVsbCk7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gRm9ybWlvLm5hbWVzcGFjZSB8fCAnZm9ybWlvJztcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtuYW1lc3BhY2V9VG9rZW5gKTtcbiAgICB0aGlzLm9uRXJyb3IuZW1pdCgpO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IEZvcm1pby5uYW1lc3BhY2UgfHwgJ2Zvcm1pbyc7XG4gICAgY29uc3QgdG9rZW5OYW1lID0gYCR7bmFtZXNwYWNlfVRva2VuYDtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRva2VuTmFtZSk7XG4gICAgaWYgKChGb3JtaW8gYXMgYW55KS50b2tlbnMgJiYgKEZvcm1pbyBhcyBhbnkpLnRva2Vucy5oYXNPd25Qcm9wZXJ0eSh0b2tlbk5hbWUpKSB7XG4gICAgICBkZWxldGUgKEZvcm1pbyBhcyBhbnkpLnRva2Vuc1t0b2tlbk5hbWVdO1xuICAgIH1cblxuICAgIEZvcm1pby5sb2dvdXQoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFVzZXIobnVsbCk7XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtuYW1lc3BhY2V9TG9nb3V0QXV0aFVybGApKSB7XG4gICAgICAgICAgd2luZG93Lm9wZW4obG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7bmFtZXNwYWNlfUxvZ291dEF1dGhVcmxgKSwgbnVsbCwgJ3dpZHRoPTEwMjAsaGVpZ2h0PTYxOCcpO1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke25hbWVzcGFjZX1Mb2dvdXRBdXRoVXJsYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkxvZ291dC5lbWl0KCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHRoaXMubG9nb3V0RXJyb3IoKSk7XG4gIH1cbn1cbiJdfQ==
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mb3JtaW8vYXV0aC9zcmMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFHcEMsTUFBTSxPQUFPLGlCQUFpQjtJQTZCbkI7SUFDQTtJQTdCRixJQUFJLENBQU07SUFDVixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFNBQVMsQ0FBUztJQUNsQixPQUFPLENBQXVCO0lBQzlCLFFBQVEsQ0FBdUI7SUFFL0IsWUFBWSxDQUFTO0lBQ3JCLFVBQVUsQ0FBdUI7SUFDakMsTUFBTSxDQUF1QjtJQUM3QixPQUFPLENBQW9CO0lBRTNCLGFBQWEsQ0FBUztJQUN0QixXQUFXLENBQXVCO0lBRWxDLEtBQUssQ0FBbUI7SUFDeEIsWUFBWSxDQUFNO0lBQ2xCLFdBQVcsQ0FBTTtJQUVqQixZQUFZLENBQWdCO0lBQzVCLFdBQVcsQ0FBZ0I7SUFDM0IsU0FBUyxDQUFnQjtJQUN6QixVQUFVLEdBQVEsRUFBRSxDQUFDO0lBQ3JCLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUMzQixLQUFLLENBQU07SUFDWCxFQUFFLEdBQVEsRUFBRSxDQUFDO0lBRXBCLFlBQ1MsU0FBMEIsRUFDMUIsTUFBd0I7UUFEeEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFFL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENB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U0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxPQUFRLE1BQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLEVBQUU7YUFDWixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixDQUFDLENBQUM7Z0JBQzlGLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO3VHQXBOVSxpQkFBaUI7MkdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtaW9BdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgeyBGb3JtaW9BcHBDb25maWcgfSBmcm9tICdAZm9ybWlvL2FuZ3VsYXInO1xuaW1wb3J0IHsgZ2V0LCBlYWNoIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEZvcm1pbyB9IGZyb20gJ0Bmb3JtaW8vanMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybWlvQXV0aFNlcnZpY2Uge1xuICBwdWJsaWMgdXNlcjogYW55O1xuICBwdWJsaWMgYXV0aGVudGljYXRlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsb2dpbkZvcm06IHN0cmluZztcbiAgcHVibGljIG9uTG9naW46IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBwdWJsaWMgb25Mb2dvdXQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuXG4gIHB1YmxpYyByZWdpc3RlckZvcm06IHN0cmluZztcbiAgcHVibGljIG9uUmVnaXN0ZXI6IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBwdWJsaWMgb25Vc2VyOiBFdmVudEVtaXR0ZXI8b2JqZWN0PjtcbiAgcHVibGljIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIHB1YmxpYyByZXNldFBhc3NGb3JtOiBzdHJpbmc7XG4gIHB1YmxpYyBvblJlc2V0UGFzczogRXZlbnRFbWl0dGVyPG9iamVjdD47XG5cbiAgcHVibGljIHJlYWR5OiBQcm9taXNlPGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZHlSZXNvbHZlOiBhbnk7XG4gIHB1YmxpYyByZWFkeVJlamVjdDogYW55O1xuXG4gIHB1YmxpYyBwcm9qZWN0UmVhZHk/OiBQcm9taXNlPGFueT47XG4gIHB1YmxpYyBhY2Nlc3NSZWFkeT86IFByb21pc2U8YW55PjtcbiAgcHVibGljIHVzZXJSZWFkeT86IFByb21pc2U8YW55PjtcbiAgcHVibGljIGZvcm1BY2Nlc3M6IGFueSA9IHt9O1xuICBwdWJsaWMgc3VibWlzc2lvbkFjY2VzczogYW55ID0ge307XG4gIHB1YmxpYyByb2xlczogYW55O1xuICBwdWJsaWMgaXM6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhcHBDb25maWc6IEZvcm1pb0FwcENvbmZpZyxcbiAgICBwdWJsaWMgY29uZmlnOiBGb3JtaW9BdXRoQ29uZmlnXG4gICkge1xuICAgIHRoaXMudXNlciA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5hcHBDb25maWcgJiYgdGhpcy5hcHBDb25maWcuYXBwVXJsKSB7XG4gICAgICBGb3JtaW8uc2V0QmFzZVVybCh0aGlzLmFwcENvbmZpZy5hcGlVcmwpO1xuICAgICAgRm9ybWlvLnNldFByb2plY3RVcmwodGhpcy5hcHBDb25maWcuYXBwVXJsKTtcbiAgICAgIEZvcm1pby5mb3JtT25seSA9ICEhdGhpcy5hcHBDb25maWcuZm9ybU9ubHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1lvdSBtdXN0IHByb3ZpZGUgYW4gQXBwQ29uZmlnIHdpdGhpbiB5b3VyIGFwcGxpY2F0aW9uIScpO1xuICAgIH1cblxuICAgIHRoaXMubG9naW5Gb3JtID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmFwcFVybCArXG4gICAgICAnLycgK1xuICAgICAgZ2V0KHRoaXMuY29uZmlnLCAnbG9naW4uZm9ybScsICd1c2VyL2xvZ2luJyk7XG4gICAgdGhpcy5yZWdpc3RlckZvcm0gPVxuICAgICAgdGhpcy5hcHBDb25maWcuYXBwVXJsICtcbiAgICAgICcvJyArXG4gICAgICBnZXQodGhpcy5jb25maWcsICdyZWdpc3Rlci5mb3JtJywgJ3VzZXIvcmVnaXN0ZXInKTtcbiAgICB0aGlzLnJlc2V0UGFzc0Zvcm0gPVxuICAgICAgdGhpcy5hcHBDb25maWcuYXBwVXJsICtcbiAgICAgICcvJyArXG4gICAgICBnZXQodGhpcy5jb25maWcsICdyZXNldHBhc3MuZm9ybScsICdyZXNldHBhc3MnKTtcbiAgICB0aGlzLm9uTG9naW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vbkxvZ291dCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLm9uUmVnaXN0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vblVzZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnksIHJlamVjdDogYW55KSA9PiB7XG4gICAgICB0aGlzLnJlYWR5UmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB0aGlzLnJlYWR5UmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuXG4gICAgLy8gUmVnaXN0ZXIgZm9yIHRoZSBjb3JlIGV2ZW50cy5cbiAgICBGb3JtaW8uZXZlbnRzLm9uKCdmb3JtaW8uYmFkVG9rZW4nLCAoKSA9PiB0aGlzLmxvZ291dEVycm9yKCkpO1xuICAgIEZvcm1pby5ldmVudHMub24oJ2Zvcm1pby5zZXNzaW9uRXhwaXJlZCcsICgpID0+IHRoaXMubG9nb3V0RXJyb3IoKSk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5kZWxheUF1dGgpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9naW5TdWJtaXQoc3VibWlzc2lvbjogb2JqZWN0KSB7XG4gICAgdGhpcy5zZXRVc2VyKHN1Ym1pc3Npb24pO1xuICAgIHRoaXMub25Mb2dpbi5lbWl0KHN1Ym1pc3Npb24pO1xuICB9XG5cbiAgb25SZWdpc3RlclN1Ym1pdChzdWJtaXNzaW9uOiBvYmplY3QpIHtcbiAgICB0aGlzLnNldFVzZXIoc3VibWlzc2lvbik7XG4gICAgdGhpcy5vblJlZ2lzdGVyLmVtaXQoc3VibWlzc2lvbik7XG4gIH1cblxuICBvblJlc2V0UGFzc1N1Ym1pdChzdWJtaXNzaW9uOiBvYmplY3QpIHtcbiAgICB0aGlzLm9uUmVzZXRQYXNzLmVtaXQoc3VibWlzc2lvbik7XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMucHJvamVjdFJlYWR5ID0gRm9ybWlvLm1ha2VTdGF0aWNSZXF1ZXN0KHRoaXMuYXBwQ29uZmlnLmFwcFVybCkudGhlbihcbiAgICAgIChwcm9qZWN0OiBhbnkpID0+IHtcbiAgICAgICAgZWFjaChwcm9qZWN0LmFjY2VzcywgKGFjY2VzczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtQWNjZXNzW2FjY2Vzcy50eXBlXSA9IGFjY2Vzcy5yb2xlcztcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgKCk6IGFueSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUFjY2VzcyA9IHt9O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gR2V0IHRoZSBhY2Nlc3MgZm9yIHRoaXMgcHJvamVjdC5cbiAgICB0aGlzLmFjY2Vzc1JlYWR5ID0gRm9ybWlvLm1ha2VTdGF0aWNSZXF1ZXN0KFxuICAgICAgdGhpcy5hcHBDb25maWcuYXBwVXJsICsgJy9hY2Nlc3MnXG4gICAgKVxuICAgICAgLnRoZW4oKGFjY2VzczogYW55KSA9PiB7XG4gICAgICAgIGVhY2goYWNjZXNzLmZvcm1zLCAoZm9ybTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uQWNjZXNzW2Zvcm0ubmFtZV0gPSB7fTtcbiAgICAgICAgICBmb3JtLnN1Ym1pc3Npb25BY2Nlc3MuZm9yRWFjaCgoc3ViQWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VibWlzc2lvbkFjY2Vzc1tmb3JtLm5hbWVdW3N1YkFjY2Vzcy50eXBlXSA9IHN1YkFjY2Vzcy5yb2xlcztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucm9sZXMgPSBhY2Nlc3Mucm9sZXM7XG4gICAgICAgIHJldHVybiBhY2Nlc3M7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpOiBhbnkgPT4ge1xuICAgICAgICBpZiAoZXJyID09PSAnVG9rZW4gRXhwaXJlZCcgfHwgZXJyID09PSAnQmFkIFRva2VuJykge1xuICAgICAgICAgIHRoaXMuc2V0VXNlcihudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvbGVzID0ge307XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSlcblxuICAgIGxldCBjdXJyZW50VXNlclByb21pc2U6IFByb21pc2U8YW55PjtcbiAgICBpZiAodGhpcy5jb25maWcub2F1dGgpIHtcbiAgICAgIC8vIE1ha2UgYSBmaXggdG8gdGhlIGhhc2ggdG8gcmVtb3ZlIHN0YXJ0aW5nIFwiL1wiIHRoYXQgYW5ndWxhciBtaWdodCBwdXQgdGhlcmUuXG4gICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggJiYgd2luZG93LmxvY2F0aW9uLmhhc2gubWF0Y2goL14jXFwvYWNjZXNzX3Rva2VuLykpIHtcbiAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgd2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZSgvXiNcXC9hY2Nlc3NfdG9rZW4vLCAnI2FjY2Vzc190b2tlbicpKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW5pdGlhdGUgdGhlIFNTTyBpZiB0aGV5IHByb3ZpZGUgb2F1dGggc2V0dGluZ3MuXG4gICAgICBjdXJyZW50VXNlclByb21pc2UgPSBGb3JtaW8uc3NvSW5pdCh0aGlzLmNvbmZpZy5vYXV0aC50eXBlLCB0aGlzLmNvbmZpZy5vYXV0aC5vcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFVzZXJQcm9taXNlID0gRm9ybWlvLmN1cnJlbnRVc2VyKG51bGwsIHtcbiAgICAgICAgaWdub3JlQ2FjaGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXNlclJlYWR5ID0gY3VycmVudFVzZXJQcm9taXNlLnRoZW4oKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZXRVc2VyKHVzZXIpO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgdGhpcy5zZXRVc2VyKG51bGwpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuXG4gICAgLy8gVHJpZ2dlciB3ZSBhcmUgcmVkeSB3aGVuIGFsbCBwcm9taXNlcyBoYXZlIHJlc29sdmVkLlxuICAgIGlmICh0aGlzLmFjY2Vzc1JlYWR5KSB7XG4gICAgICB0aGlzLmFjY2Vzc1JlYWR5XG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMucHJvamVjdFJlYWR5KVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLnVzZXJSZWFkeSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5yZWFkeVJlc29sdmUodHJ1ZSkpXG4gICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHRoaXMucmVhZHlSZWplY3QoZXJyKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0VXNlcih1c2VyOiBhbnkpIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBGb3JtaW8ubmFtZXNwYWNlIHx8ICdmb3JtaW8nO1xuICAgIGlmICh1c2VyKSB7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7bmFtZXNwYWNlfUFwcFVzZXJgLCBKU09OLnN0cmluZ2lmeSh1c2VyKSk7XG4gICAgICB0aGlzLnNldFVzZXJSb2xlcygpO1xuICAgICAgRm9ybWlvLnNldFVzZXIodXNlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlciA9IG51bGw7XG4gICAgICB0aGlzLmlzID0ge307XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtuYW1lc3BhY2V9QXBwVXNlcmApO1xuICAgICAgRm9ybWlvLmNsZWFyQ2FjaGUoKTtcbiAgICAgIEZvcm1pby5zZXRVc2VyKG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aGVudGljYXRlZCA9ICEhRm9ybWlvLmdldFRva2VuKCk7XG4gICAgdGhpcy5vblVzZXIuZW1pdCh0aGlzLnVzZXIpO1xuICB9XG5cbiAgc2V0VXNlclJvbGVzKCkge1xuICAgIGlmICh0aGlzLmFjY2Vzc1JlYWR5KSB7XG4gICAgICB0aGlzLmFjY2Vzc1JlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgICBlYWNoKHRoaXMucm9sZXMsIChyb2xlOiBhbnksIHJvbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyLnJvbGVzLmluZGV4T2Yocm9sZS5faWQpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5pc1tyb2xlTmFtZV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBsb2dvdXRFcnJvcigpIHtcbiAgICB0aGlzLnNldFVzZXIobnVsbCk7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gRm9ybWlvLm5hbWVzcGFjZSB8fCAnZm9ybWlvJztcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtuYW1lc3BhY2V9VG9rZW5gKTtcbiAgICB0aGlzLm9uRXJyb3IuZW1pdCgpO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IEZvcm1pby5uYW1lc3BhY2UgfHwgJ2Zvcm1pbyc7XG4gICAgY29uc3QgdG9rZW5OYW1lID0gYCR7bmFtZXNwYWNlfVRva2VuYDtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRva2VuTmFtZSk7XG4gICAgaWYgKChGb3JtaW8gYXMgYW55KS50b2tlbnMgJiYgKEZvcm1pbyBhcyBhbnkpLnRva2Vucy5oYXNPd25Qcm9wZXJ0eSh0b2tlbk5hbWUpKSB7XG4gICAgICBkZWxldGUgKEZvcm1pbyBhcyBhbnkpLnRva2Vuc1t0b2tlbk5hbWVdO1xuICAgIH1cblxuICAgIEZvcm1pby5sb2dvdXQoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFVzZXIobnVsbCk7XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtuYW1lc3BhY2V9TG9nb3V0QXV0aFVybGApKSB7XG4gICAgICAgICAgd2luZG93Lm9wZW4obG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7bmFtZXNwYWNlfUxvZ291dEF1dGhVcmxgKSwgbnVsbCwgJ3dpZHRoPTEwMjAsaGVpZ2h0PTYxOCcpO1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke25hbWVzcGFjZX1Mb2dvdXRBdXRoVXJsYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkxvZ291dC5lbWl0KCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHRoaXMubG9nb3V0RXJyb3IoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -74,7 +74,7 @@ class FormioAuthService {
74
74
  this.resetPassForm =
75
75
  this.appConfig.appUrl +
76
76
  '/' +
77
- get(this.config, 'register.form', 'resetpass');
77
+ get(this.config, 'resetpass.form', 'resetpass');
78
78
  this.onLogin = new EventEmitter();
79
79
  this.onLogout = new EventEmitter();
80
80
  this.onRegister = new EventEmitter();
@@ -1 +1 @@
1
- {"version":3,"file":"formio-angular-auth.mjs","sources":["../../../projects/angular-formio/auth/src/auth.config.ts","../../../projects/angular-formio/auth/src/auth.service.ts","../../../projects/angular-formio/auth/src/auth.component.ts","../../../projects/angular-formio/auth/src/auth.component.html","../../../projects/angular-formio/auth/src/login/login.component.ts","../../../projects/angular-formio/auth/src/login/login.component.html","../../../projects/angular-formio/auth/src/register/register.component.ts","../../../projects/angular-formio/auth/src/register/register.component.html","../../../projects/angular-formio/auth/src/resetpass/resetpass.component.ts","../../../projects/angular-formio/auth/src/resetpass/resetpass.component.html","../../../projects/angular-formio/auth/src/auth.routes.ts","../../../projects/angular-formio/auth/src/auth.module.ts","../../../projects/angular-formio/auth/src/formio-angular-auth.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport interface FormioAuthFormConfig {\n path?: string;\n form?: string;\n component?: any;\n}\n\nexport interface FormioAuthRouteConfig {\n auth?: any;\n login?: any;\n register?: any;\n resetpass?: any;\n}\n\n@Injectable()\nexport class FormioAuthConfig {\n component?: any;\n delayAuth?: any;\n login?: FormioAuthFormConfig;\n register?: FormioAuthFormConfig;\n resetpass?: FormioAuthFormConfig;\n oauth?: FormioOAuthConfig;\n}\n\n\nexport interface FormioOAuthConfig {\n type: FormioOauthType;\n options: FormioOktaConfig | FormioSamlConfig;\n}\n\nexport enum FormioOauthType {\n okta = 'okta',\n saml = 'saml',\n}\n\nexport interface FormioOktaConfig extends OktaConfig {\n formio?: any;\n}\n\nexport interface FormioSamlConfig {\n relay: string;\n}\n\n// for more details about Okta configuration options see https://github.com/okta/okta-auth-js#configuration-reference\nexport interface OktaConfig {\n url?: string;\n tokenManager?: OktaTokenManagerConfig;\n issuer?: string;\n clientId?: string;\n redirectUri?: string;\n postLogoutRedirectUri?: string;\n pkce?: boolean;\n authorizeUrl?: string;\n userinfoUrl?: string;\n tokenUrl?: string;\n ignoreSignature?: boolean;\n maxClockSkew?: number;\n scopes?: string[];\n httpRequestClient?: Function;\n}\n\nexport interface OktaTokenManagerConfig {\n storage?: string | {\n getItem?: Function;\n setItem?: Function;\n };\n secure?: boolean;\n autoRenew?: boolean;\n expireEarlySeconds?: number;\n storageKey?: string;\n}\n","import { EventEmitter, Injectable, Inject } from '@angular/core';\nimport { FormioAuthConfig } from './auth.config';\nimport { FormioAppConfig } from '@formio/angular';\nimport { get, each } from 'lodash';\nimport { Formio } from '@formio/js';\n\n@Injectable()\nexport class FormioAuthService {\n public user: any;\n public authenticated = false;\n\n public loginForm: string;\n public onLogin: EventEmitter<object>;\n public onLogout: EventEmitter<object>;\n\n public registerForm: string;\n public onRegister: EventEmitter<object>;\n public onUser: EventEmitter<object>;\n public onError: EventEmitter<any>;\n\n public resetPassForm: string;\n public onResetPass: EventEmitter<object>;\n\n public ready: Promise<boolean>;\n public readyResolve: any;\n public readyReject: any;\n\n public projectReady?: Promise<any>;\n public accessReady?: Promise<any>;\n public userReady?: Promise<any>;\n public formAccess: any = {};\n public submissionAccess: any = {};\n public roles: any;\n public is: any = {};\n\n constructor(\n public appConfig: FormioAppConfig,\n public config: FormioAuthConfig\n ) {\n this.user = null;\n\n if (this.appConfig && this.appConfig.appUrl) {\n Formio.setBaseUrl(this.appConfig.apiUrl);\n Formio.setProjectUrl(this.appConfig.appUrl);\n Formio.formOnly = !!this.appConfig.formOnly;\n } else {\n console.error('You must provide an AppConfig within your application!');\n }\n\n this.loginForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'login.form', 'user/login');\n this.registerForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'register.form', 'user/register');\n this.resetPassForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'register.form', 'resetpass');\n this.onLogin = new EventEmitter();\n this.onLogout = new EventEmitter();\n this.onRegister = new EventEmitter();\n this.onUser = new EventEmitter();\n this.onError = new EventEmitter();\n\n this.ready = new Promise((resolve: any, reject: any) => {\n this.readyResolve = resolve;\n this.readyReject = reject;\n });\n\n // Register for the core events.\n Formio.events.on('formio.badToken', () => this.logoutError());\n Formio.events.on('formio.sessionExpired', () => this.logoutError());\n if (!this.config.delayAuth) {\n this.init();\n }\n }\n\n onLoginSubmit(submission: object) {\n this.setUser(submission);\n this.onLogin.emit(submission);\n }\n\n onRegisterSubmit(submission: object) {\n this.setUser(submission);\n this.onRegister.emit(submission);\n }\n\n onResetPassSubmit(submission: object) {\n this.onResetPass.emit(submission);\n }\n\n init() {\n this.projectReady = Formio.makeStaticRequest(this.appConfig.appUrl).then(\n (project: any) => {\n each(project.access, (access: any) => {\n this.formAccess[access.type] = access.roles;\n });\n },\n (): any => {\n this.formAccess = {};\n return null;\n }\n );\n\n // Get the access for this project.\n this.accessReady = Formio.makeStaticRequest(\n this.appConfig.appUrl + '/access'\n )\n .then((access: any) => {\n each(access.forms, (form: any) => {\n this.submissionAccess[form.name] = {};\n form.submissionAccess.forEach((subAccess: any) => {\n this.submissionAccess[form.name][subAccess.type] = subAccess.roles;\n });\n });\n this.roles = access.roles;\n return access;\n })\n .catch((err): any => {\n if (err === 'Token Expired' || err === 'Bad Token') {\n this.setUser(null);\n }\n this.roles = {};\n return null;\n })\n\n let currentUserPromise: Promise<any>;\n if (this.config.oauth) {\n // Make a fix to the hash to remove starting \"/\" that angular might put there.\n if (window.location.hash && window.location.hash.match(/^#\\/access_token/)) {\n history.pushState(null, null, window.location.hash.replace(/^#\\/access_token/, '#access_token'));\n }\n\n // Initiate the SSO if they provide oauth settings.\n currentUserPromise = Formio.ssoInit(this.config.oauth.type, this.config.oauth.options);\n } else {\n currentUserPromise = Formio.currentUser(null, {\n ignoreCache: true\n });\n }\n\n this.userReady = currentUserPromise.then((user: any) => {\n this.setUser(user);\n return user;\n }).catch((err) => {\n this.setUser(null);\n throw err;\n });\n\n // Trigger we are redy when all promises have resolved.\n if (this.accessReady) {\n this.accessReady\n .then(() => this.projectReady)\n .then(() => this.userReady)\n .then(() => this.readyResolve(true))\n .catch((err: any) => this.readyReject(err));\n }\n }\n\n setUser(user: any) {\n const namespace = Formio.namespace || 'formio';\n if (user) {\n this.user = user;\n localStorage.setItem(`${namespace}AppUser`, JSON.stringify(user));\n this.setUserRoles();\n Formio.setUser(user);\n } else {\n this.user = null;\n this.is = {};\n localStorage.removeItem(`${namespace}AppUser`);\n Formio.clearCache();\n Formio.setUser(null);\n }\n\n this.authenticated = !!Formio.getToken();\n this.onUser.emit(this.user);\n }\n\n setUserRoles() {\n if (this.accessReady) {\n this.accessReady.then(() => {\n each(this.roles, (role: any, roleName: string) => {\n if (this.user.roles.indexOf(role._id) !== -1) {\n this.is[roleName] = true;\n }\n });\n });\n }\n }\n\n logoutError() {\n this.setUser(null);\n const namespace = Formio.namespace || 'formio';\n localStorage.removeItem(`${namespace}Token`);\n this.onError.emit();\n }\n\n logout() {\n const namespace = Formio.namespace || 'formio';\n const tokenName = `${namespace}Token`;\n\n localStorage.removeItem(tokenName);\n if ((Formio as any).tokens && (Formio as any).tokens.hasOwnProperty(tokenName)) {\n delete (Formio as any).tokens[tokenName];\n }\n\n Formio.logout()\n .then(() => {\n this.setUser(null);\n if (localStorage.getItem(`${namespace}LogoutAuthUrl`)) {\n window.open(localStorage.getItem(`${namespace}LogoutAuthUrl`), null, 'width=1020,height=618');\n localStorage.removeItem(`${namespace}LogoutAuthUrl`);\n }\n this.onLogout.emit();\n })\n .catch(() => this.logoutError());\n }\n}\n","import { Component } from '@angular/core';\n@Component({\n templateUrl: './auth.component.html'\n})\nexport class FormioAuthComponent {}\n","<div class=\"card card-primary panel panel-default\">\n <div class=\"card-header panel-heading\">\n <ul class=\"nav nav-tabs card-header-tabs\">\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"login\" routerLinkActive=\"active\">Login</a></li>\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"register\" routerLinkActive=\"active\">Register</a></li>\n </ul>\n </div>\n <div class=\"card-body panel-body\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './login.component.html'\n})\nexport class FormioAuthLoginComponent {\n public renderOptions: any = {\n submitOnEnter: true\n };\n constructor(public service: FormioAuthService) {}\n}\n","<formio [src]=\"service.loginForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onLoginSubmit($event)\"></formio>\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './register.component.html'\n})\nexport class FormioAuthRegisterComponent {\n public renderOptions: any = {\n submitOnEnter: true\n };\n constructor(public service: FormioAuthService) {}\n}\n","<formio [src]=\"service.registerForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onRegisterSubmit($event)\"></formio>\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './resetpass.component.html'\n})\nexport class FormioResetPassComponent {\n constructor(public service: FormioAuthService) {}\n}\n","<formio [src]=\"service.resetPassForm\" (submit)=\"service.onResetPassSubmit($event)\"></formio>\n","import { Routes } from '@angular/router';\nimport { FormioAuthRouteConfig } from './auth.config';\nimport { FormioAuthComponent } from './auth.component';\nimport { FormioAuthLoginComponent } from './login/login.component';\nimport { FormioAuthRegisterComponent } from './register/register.component';\nimport { FormioResetPassComponent } from './resetpass/resetpass.component';\n\nexport function FormioAuthRoutes(config?: FormioAuthRouteConfig): Routes {\n return [\n {\n path: '',\n component: config && config.auth ? config.auth : FormioAuthComponent,\n children: [\n {\n path: '',\n redirectTo: 'login',\n pathMatch: 'full'\n },\n {\n path: 'login',\n component: config && config.login ? config.login : FormioAuthLoginComponent\n },\n {\n path: 'register',\n component: config && config.register ? config.register : FormioAuthRegisterComponent\n },\n {\n path: 'resetpass',\n component: config && config.resetpass ? config.resetpass : FormioResetPassComponent\n }\n ]\n }\n ];\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormioModule } from '@formio/angular';\nimport { FormioAuthComponent } from './auth.component';\nimport { FormioAuthLoginComponent } from './login/login.component';\nimport { FormioAuthRegisterComponent } from './register/register.component';\nimport { FormioResetPassComponent } from './resetpass/resetpass.component';\nimport { FormioAuthRouteConfig } from './auth.config';\nimport { FormioAuthRoutes } from './auth.routes';\nimport { extendRouter } from '@formio/angular';\n\n@NgModule({\n imports: [\n CommonModule,\n FormioModule,\n RouterModule\n ],\n declarations: [\n FormioAuthComponent,\n FormioAuthLoginComponent,\n FormioAuthRegisterComponent,\n FormioResetPassComponent\n ]\n})\nexport class FormioAuth {\n static forRoot(config?: FormioAuthRouteConfig): any {\n return extendRouter(FormioAuth, config, FormioAuthRoutes);\n }\n static forChild(config?: FormioAuthRouteConfig): any {\n return extendRouter(FormioAuth, config, FormioAuthRoutes);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.FormioAuthConfig","i1.FormioAuthService"],"mappings":"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"}
1
+ {"version":3,"file":"formio-angular-auth.mjs","sources":["../../../projects/angular-formio/auth/src/auth.config.ts","../../../projects/angular-formio/auth/src/auth.service.ts","../../../projects/angular-formio/auth/src/auth.component.ts","../../../projects/angular-formio/auth/src/auth.component.html","../../../projects/angular-formio/auth/src/login/login.component.ts","../../../projects/angular-formio/auth/src/login/login.component.html","../../../projects/angular-formio/auth/src/register/register.component.ts","../../../projects/angular-formio/auth/src/register/register.component.html","../../../projects/angular-formio/auth/src/resetpass/resetpass.component.ts","../../../projects/angular-formio/auth/src/resetpass/resetpass.component.html","../../../projects/angular-formio/auth/src/auth.routes.ts","../../../projects/angular-formio/auth/src/auth.module.ts","../../../projects/angular-formio/auth/src/formio-angular-auth.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport interface FormioAuthFormConfig {\n path?: string;\n form?: string;\n component?: any;\n}\n\nexport interface FormioAuthRouteConfig {\n auth?: any;\n login?: any;\n register?: any;\n resetpass?: any;\n}\n\n@Injectable()\nexport class FormioAuthConfig {\n component?: any;\n delayAuth?: any;\n login?: FormioAuthFormConfig;\n register?: FormioAuthFormConfig;\n resetpass?: FormioAuthFormConfig;\n oauth?: FormioOAuthConfig;\n}\n\n\nexport interface FormioOAuthConfig {\n type: FormioOauthType;\n options: FormioOktaConfig | FormioSamlConfig;\n}\n\nexport enum FormioOauthType {\n okta = 'okta',\n saml = 'saml',\n}\n\nexport interface FormioOktaConfig extends OktaConfig {\n formio?: any;\n}\n\nexport interface FormioSamlConfig {\n relay: string;\n}\n\n// for more details about Okta configuration options see https://github.com/okta/okta-auth-js#configuration-reference\nexport interface OktaConfig {\n url?: string;\n tokenManager?: OktaTokenManagerConfig;\n issuer?: string;\n clientId?: string;\n redirectUri?: string;\n postLogoutRedirectUri?: string;\n pkce?: boolean;\n authorizeUrl?: string;\n userinfoUrl?: string;\n tokenUrl?: string;\n ignoreSignature?: boolean;\n maxClockSkew?: number;\n scopes?: string[];\n httpRequestClient?: Function;\n}\n\nexport interface OktaTokenManagerConfig {\n storage?: string | {\n getItem?: Function;\n setItem?: Function;\n };\n secure?: boolean;\n autoRenew?: boolean;\n expireEarlySeconds?: number;\n storageKey?: string;\n}\n","import { EventEmitter, Injectable, Inject } from '@angular/core';\nimport { FormioAuthConfig } from './auth.config';\nimport { FormioAppConfig } from '@formio/angular';\nimport { get, each } from 'lodash';\nimport { Formio } from '@formio/js';\n\n@Injectable()\nexport class FormioAuthService {\n public user: any;\n public authenticated = false;\n\n public loginForm: string;\n public onLogin: EventEmitter<object>;\n public onLogout: EventEmitter<object>;\n\n public registerForm: string;\n public onRegister: EventEmitter<object>;\n public onUser: EventEmitter<object>;\n public onError: EventEmitter<any>;\n\n public resetPassForm: string;\n public onResetPass: EventEmitter<object>;\n\n public ready: Promise<boolean>;\n public readyResolve: any;\n public readyReject: any;\n\n public projectReady?: Promise<any>;\n public accessReady?: Promise<any>;\n public userReady?: Promise<any>;\n public formAccess: any = {};\n public submissionAccess: any = {};\n public roles: any;\n public is: any = {};\n\n constructor(\n public appConfig: FormioAppConfig,\n public config: FormioAuthConfig\n ) {\n this.user = null;\n\n if (this.appConfig && this.appConfig.appUrl) {\n Formio.setBaseUrl(this.appConfig.apiUrl);\n Formio.setProjectUrl(this.appConfig.appUrl);\n Formio.formOnly = !!this.appConfig.formOnly;\n } else {\n console.error('You must provide an AppConfig within your application!');\n }\n\n this.loginForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'login.form', 'user/login');\n this.registerForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'register.form', 'user/register');\n this.resetPassForm =\n this.appConfig.appUrl +\n '/' +\n get(this.config, 'resetpass.form', 'resetpass');\n this.onLogin = new EventEmitter();\n this.onLogout = new EventEmitter();\n this.onRegister = new EventEmitter();\n this.onUser = new EventEmitter();\n this.onError = new EventEmitter();\n\n this.ready = new Promise((resolve: any, reject: any) => {\n this.readyResolve = resolve;\n this.readyReject = reject;\n });\n\n // Register for the core events.\n Formio.events.on('formio.badToken', () => this.logoutError());\n Formio.events.on('formio.sessionExpired', () => this.logoutError());\n if (!this.config.delayAuth) {\n this.init();\n }\n }\n\n onLoginSubmit(submission: object) {\n this.setUser(submission);\n this.onLogin.emit(submission);\n }\n\n onRegisterSubmit(submission: object) {\n this.setUser(submission);\n this.onRegister.emit(submission);\n }\n\n onResetPassSubmit(submission: object) {\n this.onResetPass.emit(submission);\n }\n\n init() {\n this.projectReady = Formio.makeStaticRequest(this.appConfig.appUrl).then(\n (project: any) => {\n each(project.access, (access: any) => {\n this.formAccess[access.type] = access.roles;\n });\n },\n (): any => {\n this.formAccess = {};\n return null;\n }\n );\n\n // Get the access for this project.\n this.accessReady = Formio.makeStaticRequest(\n this.appConfig.appUrl + '/access'\n )\n .then((access: any) => {\n each(access.forms, (form: any) => {\n this.submissionAccess[form.name] = {};\n form.submissionAccess.forEach((subAccess: any) => {\n this.submissionAccess[form.name][subAccess.type] = subAccess.roles;\n });\n });\n this.roles = access.roles;\n return access;\n })\n .catch((err): any => {\n if (err === 'Token Expired' || err === 'Bad Token') {\n this.setUser(null);\n }\n this.roles = {};\n return null;\n })\n\n let currentUserPromise: Promise<any>;\n if (this.config.oauth) {\n // Make a fix to the hash to remove starting \"/\" that angular might put there.\n if (window.location.hash && window.location.hash.match(/^#\\/access_token/)) {\n history.pushState(null, null, window.location.hash.replace(/^#\\/access_token/, '#access_token'));\n }\n\n // Initiate the SSO if they provide oauth settings.\n currentUserPromise = Formio.ssoInit(this.config.oauth.type, this.config.oauth.options);\n } else {\n currentUserPromise = Formio.currentUser(null, {\n ignoreCache: true\n });\n }\n\n this.userReady = currentUserPromise.then((user: any) => {\n this.setUser(user);\n return user;\n }).catch((err) => {\n this.setUser(null);\n throw err;\n });\n\n // Trigger we are redy when all promises have resolved.\n if (this.accessReady) {\n this.accessReady\n .then(() => this.projectReady)\n .then(() => this.userReady)\n .then(() => this.readyResolve(true))\n .catch((err: any) => this.readyReject(err));\n }\n }\n\n setUser(user: any) {\n const namespace = Formio.namespace || 'formio';\n if (user) {\n this.user = user;\n localStorage.setItem(`${namespace}AppUser`, JSON.stringify(user));\n this.setUserRoles();\n Formio.setUser(user);\n } else {\n this.user = null;\n this.is = {};\n localStorage.removeItem(`${namespace}AppUser`);\n Formio.clearCache();\n Formio.setUser(null);\n }\n\n this.authenticated = !!Formio.getToken();\n this.onUser.emit(this.user);\n }\n\n setUserRoles() {\n if (this.accessReady) {\n this.accessReady.then(() => {\n each(this.roles, (role: any, roleName: string) => {\n if (this.user.roles.indexOf(role._id) !== -1) {\n this.is[roleName] = true;\n }\n });\n });\n }\n }\n\n logoutError() {\n this.setUser(null);\n const namespace = Formio.namespace || 'formio';\n localStorage.removeItem(`${namespace}Token`);\n this.onError.emit();\n }\n\n logout() {\n const namespace = Formio.namespace || 'formio';\n const tokenName = `${namespace}Token`;\n\n localStorage.removeItem(tokenName);\n if ((Formio as any).tokens && (Formio as any).tokens.hasOwnProperty(tokenName)) {\n delete (Formio as any).tokens[tokenName];\n }\n\n Formio.logout()\n .then(() => {\n this.setUser(null);\n if (localStorage.getItem(`${namespace}LogoutAuthUrl`)) {\n window.open(localStorage.getItem(`${namespace}LogoutAuthUrl`), null, 'width=1020,height=618');\n localStorage.removeItem(`${namespace}LogoutAuthUrl`);\n }\n this.onLogout.emit();\n })\n .catch(() => this.logoutError());\n }\n}\n","import { Component } from '@angular/core';\n@Component({\n templateUrl: './auth.component.html'\n})\nexport class FormioAuthComponent {}\n","<div class=\"card card-primary panel panel-default\">\n <div class=\"card-header panel-heading\">\n <ul class=\"nav nav-tabs card-header-tabs\">\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"login\" routerLinkActive=\"active\">Login</a></li>\n <li class=\"nav-item\" role=\"presentation\" routerLinkActive=\"active\"><a class=\"nav-link\" routerLink=\"register\" routerLinkActive=\"active\">Register</a></li>\n </ul>\n </div>\n <div class=\"card-body panel-body\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './login.component.html'\n})\nexport class FormioAuthLoginComponent {\n public renderOptions: any = {\n submitOnEnter: true\n };\n constructor(public service: FormioAuthService) {}\n}\n","<formio [src]=\"service.loginForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onLoginSubmit($event)\"></formio>\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './register.component.html'\n})\nexport class FormioAuthRegisterComponent {\n public renderOptions: any = {\n submitOnEnter: true\n };\n constructor(public service: FormioAuthService) {}\n}\n","<formio [src]=\"service.registerForm\" [renderOptions]=\"renderOptions\" (submit)=\"service.onRegisterSubmit($event)\"></formio>\n","import { Component } from '@angular/core';\nimport { FormioAuthService } from '../auth.service';\n@Component({\n templateUrl: './resetpass.component.html'\n})\nexport class FormioResetPassComponent {\n constructor(public service: FormioAuthService) {}\n}\n","<formio [src]=\"service.resetPassForm\" (submit)=\"service.onResetPassSubmit($event)\"></formio>\n","import { Routes } from '@angular/router';\nimport { FormioAuthRouteConfig } from './auth.config';\nimport { FormioAuthComponent } from './auth.component';\nimport { FormioAuthLoginComponent } from './login/login.component';\nimport { FormioAuthRegisterComponent } from './register/register.component';\nimport { FormioResetPassComponent } from './resetpass/resetpass.component';\n\nexport function FormioAuthRoutes(config?: FormioAuthRouteConfig): Routes {\n return [\n {\n path: '',\n component: config && config.auth ? config.auth : FormioAuthComponent,\n children: [\n {\n path: '',\n redirectTo: 'login',\n pathMatch: 'full'\n },\n {\n path: 'login',\n component: config && config.login ? config.login : FormioAuthLoginComponent\n },\n {\n path: 'register',\n component: config && config.register ? config.register : FormioAuthRegisterComponent\n },\n {\n path: 'resetpass',\n component: config && config.resetpass ? config.resetpass : FormioResetPassComponent\n }\n ]\n }\n ];\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormioModule } from '@formio/angular';\nimport { FormioAuthComponent } from './auth.component';\nimport { FormioAuthLoginComponent } from './login/login.component';\nimport { FormioAuthRegisterComponent } from './register/register.component';\nimport { FormioResetPassComponent } from './resetpass/resetpass.component';\nimport { FormioAuthRouteConfig } from './auth.config';\nimport { FormioAuthRoutes } from './auth.routes';\nimport { extendRouter } from '@formio/angular';\n\n@NgModule({\n imports: [\n CommonModule,\n FormioModule,\n RouterModule\n ],\n declarations: [\n FormioAuthComponent,\n FormioAuthLoginComponent,\n FormioAuthRegisterComponent,\n FormioResetPassComponent\n ]\n})\nexport class FormioAuth {\n static forRoot(config?: FormioAuthRouteConfig): any {\n return extendRouter(FormioAuth, config, FormioAuthRoutes);\n }\n static forChild(config?: FormioAuthRouteConfig): any {\n return extendRouter(FormioAuth, config, FormioAuthRoutes);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.FormioAuthConfig","i1.FormioAuthService"],"mappings":"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"}
@@ -563,7 +563,7 @@ class FormioBaseComponent {
563
563
  }
564
564
  : {
565
565
  message: error.message || error.toString(),
566
- paths: error.path ? [error.path] : [],
566
+ paths: (error.path || error.formattedKeyOrPath) ? [error.path || error.formattedKeyOrPath] : [],
567
567
  }
568
568
  : {
569
569
  message: '',
@@ -594,9 +594,6 @@ class FormioBaseComponent {
594
594
  });
595
595
  }
596
596
  }
597
- if (!this.noAlerts) {
598
- this.formio.showErrors();
599
- }
600
597
  }
601
598
  if (shouldErrorDisplay) {
602
599
  this.alerts.addAlert({
@@ -606,6 +603,9 @@ class FormioBaseComponent {
606
603
  });
607
604
  }
608
605
  });
606
+ if (this.formio && !this.noAlerts) {
607
+ this.formio.showErrors(errors);
608
+ }
609
609
  }
610
610
  focusOnComponet(key) {
611
611
  if (this.formio) {
@@ -1 +1 @@
1
- {"version":3,"file":"formio-angular.mjs","sources":["../../../projects/angular-formio/src/formio.config.ts","../../../projects/angular-formio/src/formio.common.ts","../../../projects/angular-formio/src/formio.service.ts","../../../projects/angular-formio/src/formio-promise.service.ts","../../../projects/angular-formio/src/formio.utils.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.ts","../../../projects/angular-formio/src/types/alerts-position.ts","../../../projects/angular-formio/src/custom-tags.service.ts","../../../projects/angular-formio/src/FormioBaseComponent.ts","../../../projects/angular-formio/src/components/loader/formio.loader.component.ts","../../../projects/angular-formio/src/components/loader/formio.loader.component.html","../../../projects/angular-formio/src/components/alerts/parse-html-content.pipe.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.component.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.component.html","../../../projects/angular-formio/src/components/formio/formio.component.ts","../../../projects/angular-formio/src/components/formio/formio.component.html","../../../projects/angular-formio/src/components/formbuilder/formbuilder.component.ts","../../../projects/angular-formio/src/components/formbuilder/formbuilder.component.html","../../../projects/angular-formio/src/components/formioreport/formioreport.component.ts","../../../projects/angular-formio/src/components/formioreport/formioreport.component.html","../../../projects/angular-formio/src/formio.module.ts","../../../projects/angular-formio/src/core.ts","../../../projects/angular-formio/src/formio-angular.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken } from '@angular/core';\nexport const FORMIO_CONFIG = new InjectionToken('formio-config');\nimport { Formio } from '@formio/js';\n\n@Injectable()\nexport class FormioAppConfig {\n [x: string]: any;\n appUrl = '';\n apiUrl = '';\n icons?: string;\n formOnly?: boolean;\n formio?: Formio;\n constructor(@Inject(FORMIO_CONFIG) config: {\n apiUrl?: string,\n baseUrl?: string, \n appUrl?: string,\n projectUrl?: string \n } = {}) {\n this.apiUrl = config.apiUrl || config.baseUrl;\n this.appUrl = config.appUrl || config.projectUrl;\n if (this.apiUrl) {\n Formio.setBaseUrl(this.apiUrl);\n Formio.setProjectUrl(this.appUrl);\n this.formio = new Formio(this.appUrl);\n }\n }\n}\n","import { ExtendedComponentSchema, ValidateOptions } from '@formio/deprecated-types';\nimport { AlertsPosition } from './types/alerts-position';\n\nexport interface ComponentOptions<T = any, V extends ValidateOptions = ValidateOptions> extends ExtendedComponentSchema<T> {\n validate?: V;\n}\n\nexport interface FormioRefreshValue {\n property?: string;\n value?: object;\n form?: object;\n submission?: object;\n}\n\nexport interface AccessSetting {\n type: string;\n roles: string[];\n}\n\nexport interface FormioReport {\n form: string,\n roles: object,\n access: object,\n metadata: object,\n data: object,\n project: string,\n}\n\nexport interface FormioForm {\n title?: string;\n display?: string;\n name?: string;\n path?: string;\n type?: string;\n project?: string;\n template?: string;\n components?: ExtendedComponentSchema[];\n tags?: string[];\n access?: AccessSetting[];\n submissionAccess?: AccessSetting[];\n report?: FormioReport\n}\n\nexport interface ComponentInstance {\n component: ExtendedComponentSchema;\n id: string;\n type: string;\n asString?(value: any): string;\n getView(value: any): string;\n}\n\nexport interface AlertsOptions {\n submitMessage: string;\n}\n\nexport interface ErrorsOptions {\n message: string;\n}\n\nexport class FormioError {\n constructor(\n public message: string,\n public component: ExtendedComponentSchema,\n public silent?: boolean,\n ) {}\n}\n\nexport type FormioSubmissionCallback = (\n error: FormioError,\n submission: object\n) => void;\nexport type FormioBeforeSubmit = (\n submission: object,\n callback: FormioSubmissionCallback\n) => void;\n\nexport interface FormioHookOptions {\n beforeSubmit: FormioBeforeSubmit;\n}\n\nexport interface FormioOptions {\n errors?: ErrorsOptions;\n alerts?: AlertsOptions;\n alertsPosition?: AlertsPosition;\n disableAlerts?: boolean;\n i18n?: object;\n fileService?: object;\n hooks?: FormioHookOptions;\n sanitizeConfig?: any;\n}\n","import { Observable, Observer } from 'rxjs';\nimport { FormioForm } from './formio.common';\nimport { FormioCore as Formio } from '@formio/js';\n\nexport class FormioService {\n public formio: any;\n constructor(public url: string, public options?: object) {\n this.formio = new Formio(this.url, this.options);\n }\n requestWrapper(fn: any) {\n let record: any;\n let called = false;\n return Observable.create((observer: Observer<any>) => {\n try {\n if (!called) {\n called = true;\n fn()\n .then((_record: any) => {\n record = _record;\n observer.next(record);\n observer.complete();\n })\n .catch((err: any) => observer.error(err));\n } else if (record) {\n observer.next(record);\n observer.complete();\n }\n } catch (err) {\n observer.error(err);\n }\n });\n }\n saveForm(form: FormioForm, options?: any): Observable<FormioForm> {\n return this.requestWrapper(() => this.formio.saveForm(form, options));\n }\n loadForm(query?: any, options?: any): Observable<FormioForm> {\n return this.requestWrapper(() => this.formio.loadForm(query, options));\n }\n loadForms(query: any, options?: any): Observable<FormioForm> {\n return this.requestWrapper(() => this.formio.loadForms(query, options));\n }\n loadSubmission(query?: any, options?: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.loadSubmission(query, options));\n }\n userPermissions(user: any, form: any, submission: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.userPermissions(user, form, submission));\n }\n deleteSubmission(data?: any, options?: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.deleteSubmission(data, options));\n }\n saveSubmission(submission: {}, options?: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.saveSubmission(submission, options));\n }\n loadSubmissions(query?: any, options?: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.loadSubmissions(query, options));\n }\n}\n","import { from } from 'rxjs';\nimport { FormioService } from './formio.service';\nimport { FormioForm } from './formio.common';\n\nexport class FormioPromiseService {\n private formioService: FormioService;\n\n constructor(public url: string, public options?: object) {\n this.formioService = new FormioService(url, options);\n }\n\n saveForm(form: FormioForm, options?: any): Promise<any> {\n return this.formioService.saveForm(form, options).toPromise();\n }\n loadForm(query?: any, options?: any): Promise<any> {\n return this.formioService.loadForm(query, options).toPromise();\n }\n loadSubmission(query?: any, options?: any): Promise<any> {\n return this.formioService.loadSubmission(query, options).toPromise();\n }\n userPermissions(user: any, form: any, submission: any): Promise<any> {\n return this.formioService.userPermissions(user, form, submission).toPromise();\n }\n deleteSubmission(data?: any, options?: any): Promise<any> {\n return this.formioService.deleteSubmission(data, options).toPromise();\n }\n loadForms(query: any, options?: any): Promise<any> {\n return this.formioService.loadForms(query, options).toPromise();\n }\n saveSubmission(submission: {}, options?: any): Promise<any> {\n return this.formioService.saveSubmission(submission, options).toPromise();\n }\n loadSubmissions(query?: any, options?: any): Promise<any> {\n return this.formioService.loadSubmissions(query, options).toPromise();\n }\n}\n","import { RouterModule } from '@angular/router';\nimport { find, trim, each, intersection } from 'lodash';\n\nexport function extendRouter(Class: any, config: any, ClassRoutes: any) {\n each(Class.decorators, decorator => {\n each(decorator.args, arg => {\n if (arg.declarations) {\n each(config, component => arg.declarations.push(component));\n }\n if (arg.imports) {\n each(arg.imports, (_import, index) => {\n if (\n (_import.ngModule && (_import.ngModule.name === 'RouterModule')) ||\n (_import.name === 'RouterModule')\n ) {\n arg.imports[index] = RouterModule.forChild(ClassRoutes(config));\n }\n });\n }\n });\n });\n return Class;\n}\n","export interface FormioAlert {\n type: string;\n message: string;\n component?: any;\n}\n\nexport class FormioAlerts {\n public alerts: FormioAlert[] = [];\n\n setAlert(alert: FormioAlert) {\n this.alerts = [alert];\n }\n\n addAlert(alert: FormioAlert) {\n this.alerts.push(alert);\n }\n\n setAlerts(alerts: FormioAlert[]) {\n this.alerts = alerts;\n }\n}\n","export enum AlertsPosition {\n none,\n top,\n bottom,\n both\n}\n","import { Injectable } from '@angular/core';\n@Injectable()\nexport class CustomTagsService {\n tags: string[] = [];\n\n addCustomTag(tag: string) {\n this.tags.push(tag);\n }\n}","import { Component, ElementRef, EventEmitter, Input, NgZone, OnChanges, OnDestroy, OnInit, Optional, Output, ViewChild } from '@angular/core';\nimport { FormioService } from './formio.service';\nimport { FormioAlerts } from './components/alerts/formio.alerts';\nimport { FormioAppConfig } from './formio.config';\nimport { FormioError, FormioForm, FormioOptions, FormioRefreshValue } from './formio.common';\nimport { assign, get, isEmpty } from 'lodash';\nimport { CustomTagsService } from './custom-tags.service';\nimport { Utils } from '@formio/js';\nimport { AlertsPosition } from './types/alerts-position';\nconst { Evaluator, fastCloneDeep } = Utils;\n\n@Component({\n template: ''\n})\nexport class FormioBaseComponent implements OnInit, OnChanges, OnDestroy {\n @Input() form?: FormioForm;\n @Input() submission?: any = {};\n @Input() src?: string;\n @Input() url?: string;\n @Input() service?: FormioService;\n @Input() options?: FormioOptions;\n @Input() noeval ? = Evaluator.noeval;\n @Input() formioOptions?: any;\n @Input() renderOptions?: any;\n @Input() readOnly ? = false;\n @Input() viewOnly ? = false;\n @Input() hideLoading ? = false;\n @Input() hideComponents?: string[];\n @Input() refresh?: EventEmitter<FormioRefreshValue>;\n @Input() error?: EventEmitter<any>;\n @Input() success?: EventEmitter<object>;\n @Input() submitDone?: EventEmitter<object>;\n @Input() language?: EventEmitter<string>;\n @Input() hooks?: any = {};\n @Input() renderer?: any;\n @Input() watchSubmissionErrors ? = false;\n @Input() dataTableActions? : any = []\n @Output() render = new EventEmitter<object>();\n @Output() customEvent = new EventEmitter<object>();\n @Output() fileUploadingStatus = new EventEmitter<string>();\n @Output() submit = new EventEmitter<object>();\n @Output() prevPage = new EventEmitter<object>();\n @Output() nextPage = new EventEmitter<object>();\n @Output() beforeSubmit = new EventEmitter<object>();\n @Output() rowAdd = new EventEmitter<any>();\n @Output() rowAdded = new EventEmitter<any>();\n @Output() rowEdit = new EventEmitter<any>();\n @Output() rowEdited = new EventEmitter<any>();\n @Output() rowDelete = new EventEmitter<any>();\n @Output() rowClick = new EventEmitter<any>();\n @Output() rowSelectChange = new EventEmitter<any>();\n @Output() page = new EventEmitter<any>();\n @Output() changeItemsPerPage = new EventEmitter<any>();\n @Output() change = new EventEmitter<object>();\n @Output() invalid = new EventEmitter<boolean>();\n @Output() errorChange = new EventEmitter<any>();\n @Output() formLoad = new EventEmitter<any>();\n @Output() submissionLoad = new EventEmitter<any>();\n @Output() ready = new EventEmitter<FormioBaseComponent>();\n @ViewChild('formio', { static: true }) formioElement?: ElementRef<any>;\n\n public AlertsPosition = AlertsPosition;\n public formio: any;\n public initialized = false;\n public alerts = new FormioAlerts();\n public formioReady: Promise<any>;\n\n private formioReadyResolve: any;\n private submitting = false;\n private submissionSuccess = false;\n public isLoading: boolean;\n public noAlerts: boolean;\n public label: string;\n\n constructor(\n public ngZone: NgZone,\n @Optional() public config: FormioAppConfig,\n @Optional() public customTags?: CustomTagsService,\n ) {\n this.isLoading = true;\n this.formioReady = new Promise((ready) => {\n this.formioReadyResolve = ready;\n });\n }\n\n getRenderer() {\n return this.renderer;\n }\n\n getRendererOptions() {\n const extraTags = this.customTags ? this.customTags.tags : [];\n return assign({}, {\n icons: get(this.config, 'icons', 'fontawesome'),\n noAlerts: get(this.options, 'noAlerts', true),\n readOnly: this.readOnly,\n viewAsHtml: this.viewOnly,\n ...(this.viewOnly && { renderMode: \"html\" }),\n i18n: get(this.options, 'i18n', null),\n fileService: get(this.options, 'fileService', null),\n hooks: this.hooks,\n sanitizeConfig: {\n addTags: extraTags\n },\n dataTableActions: this.dataTableActions\n }, this.renderOptions || {});\n }\n\n createRenderer() {\n const Renderer = this.getRenderer();\n const form = (new Renderer(\n this.formioElement ? this.formioElement.nativeElement : null,\n this.form,\n this.getRendererOptions()\n ));\n return form.instance;\n }\n\n setFormUrl(url) {\n this.formio.setUrl(url, this.formioOptions || {});\n }\n\n setForm(form: FormioForm) {\n this.form = form;\n if (this.formio) {\n this.formio.destroy();\n }\n\n if (this.form.title) {\n this.label = this.form.title;\n } else if (this.form.components && this.form.components[0]) {\n this.label = this.form.components[0].label;\n }\n\n // Clear out the element to render the new form.\n if (this.formioElement && this.formioElement.nativeElement) {\n this.formioElement.nativeElement.innerHTML = '';\n }\n this.formio = this.createRenderer();\n\n if(!this.formio) {\n return;\n }\n this.formio.setSubmission(this.submission, {\n fromSubmission: false\n });\n if (this.renderOptions && this.renderOptions.validateOnInit) {\n this.formio.setValue(this.submission, {validateOnInit: true});\n }\n if (this.url) {\n this.setFormUrl(this.url);\n }\n if (this.src) {\n this.setFormUrl(this.src);\n }\n this.formio.nosubmit = true;\n this.attachFormEvents();\n\n return this.formio.ready.then(() => {\n this.ngZone.run(() => {\n this.isLoading = false;\n this.ready.emit(this);\n this.formioReadyResolve(this.formio);\n if (this.formio.submissionReady) {\n this.formio.submissionReady.then((submission) => {\n this.submissionLoad.emit(submission);\n });\n }\n });\n return this.formio;\n });\n }\n\n attachFormEvents() {\n this.formio.on('prevPage', (data: any) => this.ngZone.run(() => this.onPrevPage(data)));\n this.formio.on('nextPage', (data: any) => this.ngZone.run(() => this.onNextPage(data)));\n this.formio.on('change', (value: any, flags: any, isModified: boolean) => this.ngZone.run(() => this.onChange(value, flags, isModified)));\n this.formio.on('rowAdd', (component: any) => this.ngZone.run(() => this.rowAdd.emit(component)));\n this.formio.on('rowAdded', (data: any, component: any) => this.ngZone.run(() => this.rowAdded.emit({component, row: data})));\n this.formio.on('rowEdit', (data: any, rowIndex: number, index: number, component: any) => this.ngZone.run(() => this.rowEdit.emit({component, row: data, rowIndex, index})));\n this.formio.on('rowEdited', (data: any, rowIndex: number, component: any) => this.ngZone.run(() => this.rowEdited.emit({component, row: data, rowIndex})));\n this.formio.on('rowDelete', (data: any, rowIndex: number, index: number, component: any) => this.ngZone.run(() => this.rowDelete.emit({component, row: data, rowIndex, index})));\n this.formio.on('rowClick', (row: any, rowIndex: number, index: number,component: any) => this.ngZone.run(() => this.rowClick.emit({component, row, rowIndex, index})));\n this.formio.on('rowSelectChange', (selectedRows: any[], component: any) => this.ngZone.run(() => this.rowSelectChange.emit({selectedRows, component})));\n this.formio.on('page', (currentPage: number, component: any) => this.ngZone.run(() => this.page.emit({currentPage, component})));\n this.formio.on('changeItemsPerPage', (itemsPerPage:number) => this.ngZone.run(() => this.changeItemsPerPage.emit({itemsPerPage})));\n this.formio.on('customEvent', (event: any) =>\n this.ngZone.run(() => this.customEvent.emit(event))\n );\n\n ['fileUploadingStart', 'fileUploadingEnd'].forEach((eventName, index) => {\n const status = !!index ? 'end' : 'start';\n this.formio.on(eventName, () =>\n this.ngZone.run(() => this.fileUploadingStatus.emit(status))\n );\n });\n\n this.formio.on('submit', (submission: any, saved: boolean) =>\n this.ngZone.run(() => this.submitForm(submission, saved))\n );\n this.formio.on('error', (err: any) => this.ngZone.run(() => {\n this.submissionSuccess = false;\n return this.onError(err);\n }));\n this.formio.on('render', () => this.ngZone.run(() => this.render.emit()));\n this.formio.on('formLoad', (loadedForm: any) =>\n this.ngZone.run(() => this.formLoad.emit(loadedForm))\n );\n }\n\n initialize() {\n if (this.initialized) {\n return;\n }\n\n const extraTags = this.customTags ? this.customTags.tags : [];\n const defaultOptions: FormioOptions = {\n errors: {\n message: 'Please fix the following errors before submitting.'\n },\n alerts: {\n submitMessage: 'Submission Complete.'\n },\n disableAlerts: false,\n hooks: {\n beforeSubmit: null\n },\n sanitizeConfig: {\n addTags: extraTags\n },\n alertsPosition: AlertsPosition.top,\n };\n this.options = Object.assign(defaultOptions, this.options);\n if (this.options.disableAlerts) {\n this.options.alertsPosition = AlertsPosition.none;\n }\n this.initialized = true;\n }\n\n ngOnInit() {\n Evaluator.noeval = this.noeval;\n this.initialize();\n\n if (this.language) {\n if (typeof this.language === 'string') {\n this.formio.language = this.language;\n } else {\n this.language.subscribe((lang: string) => {\n this.formio.language = lang;\n });\n }\n }\n\n if (this.refresh) {\n this.refresh.subscribe((refresh: FormioRefreshValue) =>\n this.onRefresh(refresh)\n );\n }\n\n if (this.error) {\n this.error.subscribe((err: any) => this.onError(err));\n }\n\n if (this.success) {\n this.success.subscribe((message: string) => {\n this.alerts.setAlert({\n type: 'success',\n message: message || get(this.options, 'alerts.submitMessage')\n });\n });\n }\n\n if (this.submitDone) {\n this.submitDone.subscribe((submission: object) => {\n this.formio.emit('submitDone', submission);\n });\n }\n\n if (this.src) {\n if (!this.service) {\n this.service = new FormioService(this.src);\n }\n this.isLoading = true;\n this.setFormFromSrc();\n }\n if (this.url && !this.service) {\n this.service = new FormioService(this.url);\n }\n }\n\n setFormFromSrc() {\n this.service.loadForm({ params: { live: 1 } }).subscribe(\n (form: FormioForm) => {\n if (form && form.components) {\n this.ngZone.runOutsideAngular(() => {\n this.setForm(form);\n });\n }\n\n // if a submission is also provided.\n if (\n isEmpty(this.submission) &&\n this.service &&\n this.service.formio.submissionId\n ) {\n this.service.loadSubmission().subscribe(\n (submission: any) => {\n if (this.readOnly) {\n this.formio.options.readOnly = true;\n }\n this.submission = this.formio.submission = submission;\n },\n err => this.onError(err)\n );\n }\n },\n err => this.onError(err)\n );\n }\n\n ngOnDestroy() {\n if (this.formio) {\n this.formio.destroy();\n }\n }\n\n onRefresh(refresh: FormioRefreshValue) {\n this.formioReady.then(() => {\n if (refresh.form) {\n this.formio.setForm(refresh.form).then(() => {\n if (refresh.submission) {\n this.formio.setSubmission(refresh.submission);\n }\n });\n } else if (refresh.submission) {\n this.formio.setSubmission(refresh.submission);\n } else {\n switch (refresh.property) {\n case 'submission':\n this.formio.submission = refresh.value;\n break;\n case 'form':\n this.formio.form = refresh.value;\n break;\n }\n }\n });\n }\n\n ngOnChanges(changes: any) {\n Evaluator.noeval = this.noeval;\n this.initialize();\n\n if (changes.form && changes.form.currentValue) {\n this.ngZone.runOutsideAngular(() => {\n this.setForm(changes.form.currentValue);\n });\n }\n\n this.formioReady.then(() => {\n if (changes.submission && changes.submission.currentValue) {\n this.formio.setSubmission(changes.submission.currentValue, {\n fromSubmission: !changes.submission.firstChange\n });\n }\n\n if (changes.hideComponents && changes.hideComponents.currentValue) {\n const hiddenComponents = changes.hideComponents.currentValue;\n this.formio.options.hide = hiddenComponents;\n this.formio.everyComponent((component) => {\n component.options.hide = hiddenComponents;\n if (hiddenComponents.includes(component.component.key)) {\n component.visible = false;\n }\n });\n }\n });\n }\n\n onPrevPage(data: any) {\n this.alerts.setAlerts([]);\n this.prevPage.emit(data);\n }\n\n onNextPage(data: any) {\n this.alerts.setAlerts([]);\n this.nextPage.emit(data);\n }\n\n onSubmit(submission: any, saved: boolean, noemit?: boolean) {\n this.submitting = false;\n this.submissionSuccess = true;\n\n this.formio.setValue(fastCloneDeep(submission), {\n noValidate: true,\n noCheck: true\n });\n\n if (saved) {\n this.formio.emit('submitDone', submission);\n }\n if (!noemit) {\n this.submit.emit(submission);\n }\n if (!this.success) {\n this.alerts.setAlert({\n type: 'success',\n message: get(this.options, 'alerts.submitMessage')\n });\n }\n }\n\n onError(err: any) {\n this.alerts.setAlerts([]);\n this.submitting = false;\n this.isLoading = false;\n\n if (!err) {\n return;\n }\n\n // Make sure it is an array.\n const errors = Array.isArray(err) ? err : [err];\n\n // Emit these errors again.\n this.errorChange.emit(errors);\n\n if (err.silent) {\n return;\n }\n\n if (this.formio && errors.length) {\n this.formio.emit('submitError', errors);\n }\n\n // Iterate through each one and set the alerts array.\n errors.forEach((error: any) => {\n const {\n message,\n paths,\n } = error\n ? error.details\n ? {\n message: error.details.map((detail) => detail.message),\n paths: error.details.map((detail) => detail.path),\n }\n : {\n message: error.message || error.toString(),\n paths: error.path ? [error.path] : [],\n }\n : {\n message: '',\n paths: [],\n };\n\n let shouldErrorDisplay = true;\n\n if (this.formio) {\n paths.forEach((path, index) => {\n const component = this.formio.getComponent(path);\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n const messageText = Array.isArray(message) ? message[index] : message;\n components.forEach((comp) => comp.setCustomValidity(messageText, true));\n this.alerts.addAlert({\n type: 'danger',\n message: message[index],\n component,\n });\n shouldErrorDisplay = false;\n }\n });\n\n if ((window as any).VPAT_ENABLED) {\n if (typeof error ==='string' && this.formio.components) {\n this.formio.components.forEach((comp) => {\n if (comp && comp.type !== 'button') {\n comp.setCustomValidity(message, true);\n }\n });\n }\n }\n\n if (!this.noAlerts) {\n this.formio.showErrors();\n }\n }\n\n if (shouldErrorDisplay) {\n this.alerts.addAlert({\n type: 'danger',\n message,\n component: error.component,\n });\n }\n });\n }\n\n focusOnComponet(key: any) {\n if (this.formio) {\n this.formio.focusOnComponent(key);\n }\n }\n\n submitExecute(submission: object, saved = false) {\n if (this.service && !this.url && !saved) {\n this.service\n .saveSubmission(submission)\n .subscribe(\n (sub: {}) => this.onSubmit(sub, true),\n err => this.onError(err)\n );\n } else {\n this.onSubmit(submission, false);\n }\n }\n\n submitForm(submission: any, saved = false) {\n // Keep double submits from occurring...\n if (this.submitting) {\n return;\n }\n this.formio.setMetadata(submission);\n this.submissionSuccess = false;\n this.submitting = true;\n this.beforeSubmit.emit(submission);\n\n // if they provide a beforeSubmit hook, then allow them to alter the submission asynchronously\n // or even provide a custom Error method.\n const beforeSubmit = get(this.options, 'hooks.beforeSubmit');\n if (beforeSubmit) {\n beforeSubmit(submission, (err: FormioError, sub: object) => {\n if (err) {\n this.onError(err);\n return;\n }\n this.submitExecute(sub, saved);\n });\n } else {\n this.submitExecute(submission, saved);\n }\n }\n\n onChange(value: any, flags: any, isModified: boolean) {\n if (this.watchSubmissionErrors && !this.submissionSuccess) {\n const errors = get(this, 'formio.errors', []);\n const alerts = get(this, 'alerts.alerts', []);\n const submitted = get(this, 'formio.submitted', false);\n if (submitted && (errors.length || alerts.length)) {\n this.onError(errors);\n }\n }\n return this.change.emit({...value, flags, isModified});\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'formio-loader',\n styleUrls: ['./formio.loader.component.scss'],\n templateUrl: './formio.loader.component.html'\n})\nexport class FormioLoaderComponent {\n @Input() isLoading: boolean;\n}\n","<div class=\"formio-loader-wrapper\" *ngIf=\"isLoading\">\n <div class=\"formio-loader\"></div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'parseHtmlContent', pure: false })\nexport class ParseHtmlContentPipe implements PipeTransform {\n\n /*\n Some messages that are come from formiojs have hex codes. So the main aim of this pipe is transform this messages to html.\n And then render in template.\n */\n transform(content) {\n const parsedContent = new DOMParser().parseFromString(content, 'text/html').body.childNodes[0];\n\n return parsedContent?.textContent;\n }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport { FormioAlerts } from './formio.alerts';\n\n@Component({\n selector: 'formio-alerts',\n templateUrl: './formio.alerts.component.html'\n})\nexport class FormioAlertsComponent implements OnInit {\n @Input() alerts: FormioAlerts;\n @Output() focusComponent = new EventEmitter<object>();\n ngOnInit() {\n if (!this.alerts) {\n this.alerts = new FormioAlerts();\n }\n }\n getComponent (event, alert) {\n this.focusComponent.emit(alert.component.key);\n }\n}\n","<div *ngFor=\"let alert of alerts.alerts\" class=\"alert alert-{{ alert.type }}\" role=\"alert\" (click)=\"getComponent($event, alert)\">\n {{alert.message | parseHtmlContent}}\n</div>\n","import { Component, OnInit, Optional, ViewEncapsulation, Input, NgZone, OnChanges } from '@angular/core';\nimport { FormioAppConfig } from '../../formio.config';\nimport { Formio, Form } from '@formio/js';\nimport { FormioBaseComponent } from '../../FormioBaseComponent';\nimport { CustomTagsService } from '../../custom-tags.service';\n\n/* tslint:disable */\n@Component({\n selector: 'formio',\n templateUrl: './formio.component.html',\n styleUrls: ['../../../../../node_modules/@formio/js/dist/formio.form.min.css'],\n encapsulation: ViewEncapsulation.None,\n})\n/* tslint:enable */\nexport class FormioComponent extends FormioBaseComponent implements OnInit, OnChanges {\n constructor(\n public ngZone: NgZone,\n @Optional() public config: FormioAppConfig,\n @Optional() public customTags?: CustomTagsService,\n ) {\n super(ngZone, config, customTags);\n if (this.config) {\n Formio.setBaseUrl(this.config.apiUrl);\n Formio.setProjectUrl(this.config.appUrl);\n } else {\n console.warn('You must provide an AppConfig within your application!');\n }\n }\n\n getRenderer() {\n return this.renderer || Form;\n }\n}\n","<div role=\"form\" [attr.aria-label]=\"label\">\n <div *ngIf=\"isLoading && !hideLoading\" style=\"position:relative;height:200px\">\n <formio-loader [isLoading]=\"isLoading\"></formio-loader>\n </div>\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.top || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\n <div #formio></div>\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.bottom || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\n</div>\n","import {\n Component,\n Input,\n OnInit,\n OnChanges,\n OnDestroy,\n ViewEncapsulation,\n Optional,\n ElementRef,\n ViewChild,\n EventEmitter,\n Output,\n NgZone\n} from '@angular/core';\nimport { FormioAppConfig } from '../../formio.config';\nimport {\n FormioForm,\n FormioOptions\n} from '../../formio.common';\nimport { Formio, FormBuilder, Utils } from '@formio/js';\nimport { assign } from 'lodash';\nimport { Observable, Subscription } from 'rxjs';\nimport { CustomTagsService } from '../../custom-tags.service';\n\n/* tslint:disable */\n@Component({\n selector: 'form-builder',\n templateUrl: './formbuilder.component.html',\n styleUrls: ['../../../../../node_modules/@formio/js/dist/formio.builder.min.css'],\n encapsulation: ViewEncapsulation.None\n})\n/* tslint:enable */\nexport class FormBuilderComponent implements OnInit, OnChanges, OnDestroy {\n public ready: Promise<object>;\n public readyResolve: any;\n public formio: any;\n public builder: FormBuilder;\n public componentAdding = false;\n private refreshSubscription: Subscription;\n @Input() form?: FormioForm;\n @Input() options?: FormioOptions;\n @Input() formbuilder?: any;\n @Input() noeval ? = false;\n @Input() refresh?: Observable<void>;\n @Input() rebuild?: Observable<object>;\n @Output() change: EventEmitter<object>;\n @ViewChild('builder', { static: true }) builderElement?: ElementRef<any>;\n\n constructor(\n private ngZone: NgZone,\n @Optional() private config: FormioAppConfig,\n @Optional() private customTags?: CustomTagsService\n ) {\n if (this.config) {\n Formio.setBaseUrl(this.config.apiUrl);\n Formio.setProjectUrl(this.config.appUrl);\n } else {\n console.warn('You must provide an AppConfig within your application!');\n }\n\n this.change = new EventEmitter();\n this.ready = new Promise((resolve: any) => {\n this.readyResolve = resolve;\n });\n }\n\n ngOnInit() {\n Utils.Evaluator.noeval = this.noeval;\n\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.ngZone.runOutsideAngular(() => {\n this.buildForm(this.form);\n });\n });\n }\n\n if (this.rebuild) {\n this.rebuild.subscribe((options) => {\n this.ngZone.runOutsideAngular(() => {\n this.rebuildForm(this.form, options);\n });\n });\n }\n }\n\n setInstance(instance: any) {\n this.formio = instance;\n instance.off('addComponent');\n instance.off('saveComponent');\n instance.off('updateComponent');\n instance.off('removeComponent');\n instance.on('addComponent', (component, parent, path, index, isNew) => {\n this.ngZone.run(() => {\n if (isNew) {\n this.componentAdding = true;\n } else {\n this.change.emit({\n type: 'addComponent',\n builder: instance,\n form: instance.schema,\n component: component,\n parent: parent,\n path: path,\n index: index\n });\n this.componentAdding = false;\n }\n });\n });\n instance.on('saveComponent', (component, original, parent, path, index, isNew) => {\n this.ngZone.run(() => {\n this.change.emit({\n type: this.componentAdding ? 'addComponent' : 'saveComponent',\n builder: instance,\n form: instance.schema,\n component: component,\n originalComponent: original,\n parent: parent,\n path: path,\n index: index,\n isNew: isNew || false\n });\n this.componentAdding = false;\n });\n });\n instance.on('updateComponent', (component) => {\n this.ngZone.run(() => {\n this.change.emit({\n type: 'updateComponent',\n builder: instance,\n form: instance.schema,\n component: component\n });\n });\n });\n instance.on('removeComponent', (component, parent, path, index) => {\n this.ngZone.run(() => {\n this.change.emit({\n type: 'deleteComponent',\n builder: instance,\n form: instance.schema,\n component: component,\n parent: parent,\n path: path,\n index: index\n });\n });\n });\n this.ngZone.run(() => {\n this.readyResolve(instance);\n });\n return instance;\n }\n\n setDisplay(display: String, prevDisplay?: string) {\n if (display && display !== prevDisplay) {\n (this.builder as any).setDisplay(display);\n }\n }\n\n buildForm(form: any, prevForm?: any) {\n if (!form || !this.builderElement || !this.builderElement.nativeElement) {\n return;\n }\n\n if (this.builder) {\n this.setDisplay(form.display, prevForm?.display);\n this.setInstance(this.builder.instance);\n this.builder.form = form;\n this.builder.instance.form = form;\n return this.builder.instance;\n }\n\n return this.rebuildForm(form);\n }\n\n rebuildForm(form: any, options?: object) {\n const Builder = this.formbuilder || FormBuilder;\n const extraTags = this.customTags ? this.customTags.tags : [];\n this.builder = new Builder(\n this.builderElement.nativeElement,\n form,\n assign({\n icons: 'fontawesome',\n sanitizeConfig: {\n addTags: extraTags\n }\n }, options || this.options || {})\n );\n return this.builder.ready.then(instance => this.setInstance(instance));\n }\n\n ngOnChanges(changes: any) {\n Utils.Evaluator.noeval = this.noeval;\n\n if (changes.form && changes.form.currentValue) {\n this.ngZone.runOutsideAngular(() => {\n this.buildForm(changes.form.currentValue || {components: []}, changes.form.previousValue);\n });\n }\n }\n\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n\n if (this.formio) {\n this.formio.destroy();\n }\n }\n}\n","<div #builder></div>\n","import { Component, OnInit, ViewEncapsulation, Input, OnChanges, ViewChild, ElementRef, EventEmitter, Output } from '@angular/core';\nimport { Formio } from '@formio/js';\nimport { FormioComponent } from '../formio/formio.component';\nimport { FormioReport } from '../../formio.common';\n\n/* tslint:disable */\n@Component({\n selector: 'formio-report',\n templateUrl: './formioreport.component.html',\n styleUrls: ['../../../../../node_modules/@formio/js/dist/formio.form.min.css'],\n encapsulation: ViewEncapsulation.None,\n})\n/* tslint:enable */\nexport class FormioReportComponent extends FormioComponent implements OnInit, OnChanges {\n @Input() report?: FormioReport;\n @Input() projectEndpoint?: string;\n @Output() fetchDataError = new EventEmitter<any>();\n @ViewChild('report', { static: true }) declare formioElement?: ElementRef<any>;\n\n public isReportLoading: boolean;\n\n setFormFromSrc() {\n this.service.loadSubmission({ params: { live: 1 } }).subscribe(\n (report: FormioReport) => {\n this.report = report;\n if (report && report.data) {\n this.ngZone.runOutsideAngular(() => {\n this.setForm({ components: [], report });\n this.isReportLoading = false;\n });\n }\n },\n err => this.onError(err)\n );\n }\n\n setFormUrl(url) {\n return;\n }\n\n ngOnChanges(changes: any) {\n super.ngOnChanges(changes)\n\n if (changes.report && changes.report.currentValue) {\n this.ngZone.runOutsideAngular(() => {\n this.setForm({ report: changes.report.currentValue, components: [] });\n this.isReportLoading = false;\n });\n }\n }\n\n getRendererOptions() {\n const projectEndpoint = this.projectEndpoint || this.config?.appUrl || this.service?.formio?.projectUrl;\n\n if (!projectEndpoint && !this.src) {\n console.warn('The projectEndpoint url is required to render the Report using JSON schema.');\n }\n return {\n projectEndpoint,\n ...super.getRendererOptions(),\n }\n }\n createRenderer() {\n const Renderer = this.getRenderer();\n if (!Renderer) {\n return null;\n }\n\n const form = (new Renderer(\n this.formioElement ? this.formioElement.nativeElement : null,\n this.report,\n this.getRendererOptions()\n ));\n return form.instance;\n }\n \n attachFormEvents() {\n this.formio.on('fetchDataError', (error: any, component: any) => this.ngZone.run(() => {\n this.alerts.addAlert({\n type: 'danger',\n message: error ? JSON.stringify(error) : error,\n });\n this.fetchDataError.emit({error, component});\n }));\n }\n\n getRenderer() {\n const reportRenderer = (Formio as any).Report;\n if (!reportRenderer) {\n console.error('Report is not found in Formio. Please make sure that you are using the Formio Reporting module and it is correctly included in your application.');\n }\n\n return reportRenderer;\n }\n}\n","<div role=\"form\" [attr.aria-label]=\"label\">\n <div *ngIf=\"isReportLoading && !hideLoading\" style=\"position:relative;height:200px\">\n <formio-loader [isLoading]=\"isReportLoading\"></formio-loader>\n </div>\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.top || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\n <div #report></div>\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.bottom || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormioComponent } from './components/formio/formio.component';\nimport { FormioReportComponent } from './components/formioreport/formioreport.component';\nimport { FormBuilderComponent } from './components/formbuilder/formbuilder.component';\nimport { FormioAlerts } from './components/alerts/formio.alerts';\nimport { ParseHtmlContentPipe } from './components/alerts/parse-html-content.pipe';\nimport { FormioAlertsComponent } from './components/alerts/formio.alerts.component';\nimport { FormioLoaderComponent } from './components/loader/formio.loader.component';\nimport { CustomTagsService } from './custom-tags.service';\nimport { FormioBaseComponent } from './FormioBaseComponent';\n\n@NgModule({\n declarations: [\n FormioComponent,\n FormioReportComponent,\n FormioBaseComponent,\n FormBuilderComponent,\n FormioLoaderComponent,\n FormioAlertsComponent,\n ParseHtmlContentPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n FormioComponent,\n FormioReportComponent,\n FormBuilderComponent,\n FormioLoaderComponent,\n FormioAlertsComponent\n ],\n providers: [\n FormioAlerts,\n CustomTagsService\n ]\n})\nexport class FormioModule {}\n","if (window && typeof (window as any).global === 'undefined') {\n (window as any).global = window;\n}\nexport * from './formio.config';\nexport * from './formio.common';\nexport * from './formio.service';\nexport * from './formio-promise.service';\nexport * from './formio.utils';\nexport * from './FormioBaseComponent';\nexport * from './components/formio/formio.component';\nexport * from './components/formbuilder/formbuilder.component';\nexport * from './components/formioreport/formioreport.component';\nexport * from './components/loader/formio.loader.component';\nexport * from './components/alerts/formio.alerts';\nexport * from './components/alerts/formio.alerts.component';\nexport { FormioModule } from './formio.module';\nexport { ComponentSchema, ExtendedComponentSchema, ElementInfo } from '@formio/deprecated-types';\nexport { Utils as FormioUtils } from '@formio/js';\nexport { Formio } from '@formio/js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Formio","i1.FormioAppConfig","i2.CustomTagsService","i2.ParseHtmlContentPipe","i3","i4.FormioLoaderComponent","i5.FormioAlertsComponent","i2.FormioLoaderComponent","i3.FormioAlertsComponent"],"mappings":"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"}
1
+ {"version":3,"file":"formio-angular.mjs","sources":["../../../projects/angular-formio/src/formio.config.ts","../../../projects/angular-formio/src/formio.common.ts","../../../projects/angular-formio/src/formio.service.ts","../../../projects/angular-formio/src/formio-promise.service.ts","../../../projects/angular-formio/src/formio.utils.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.ts","../../../projects/angular-formio/src/types/alerts-position.ts","../../../projects/angular-formio/src/custom-tags.service.ts","../../../projects/angular-formio/src/FormioBaseComponent.ts","../../../projects/angular-formio/src/components/loader/formio.loader.component.ts","../../../projects/angular-formio/src/components/loader/formio.loader.component.html","../../../projects/angular-formio/src/components/alerts/parse-html-content.pipe.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.component.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.component.html","../../../projects/angular-formio/src/components/formio/formio.component.ts","../../../projects/angular-formio/src/components/formio/formio.component.html","../../../projects/angular-formio/src/components/formbuilder/formbuilder.component.ts","../../../projects/angular-formio/src/components/formbuilder/formbuilder.component.html","../../../projects/angular-formio/src/components/formioreport/formioreport.component.ts","../../../projects/angular-formio/src/components/formioreport/formioreport.component.html","../../../projects/angular-formio/src/formio.module.ts","../../../projects/angular-formio/src/core.ts","../../../projects/angular-formio/src/formio-angular.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken } from '@angular/core';\nexport const FORMIO_CONFIG = new InjectionToken('formio-config');\nimport { Formio } from '@formio/js';\n\n@Injectable()\nexport class FormioAppConfig {\n [x: string]: any;\n appUrl = '';\n apiUrl = '';\n icons?: string;\n formOnly?: boolean;\n formio?: Formio;\n constructor(@Inject(FORMIO_CONFIG) config: {\n apiUrl?: string,\n baseUrl?: string, \n appUrl?: string,\n projectUrl?: string \n } = {}) {\n this.apiUrl = config.apiUrl || config.baseUrl;\n this.appUrl = config.appUrl || config.projectUrl;\n if (this.apiUrl) {\n Formio.setBaseUrl(this.apiUrl);\n Formio.setProjectUrl(this.appUrl);\n this.formio = new Formio(this.appUrl);\n }\n }\n}\n","import { ExtendedComponentSchema, ValidateOptions } from '@formio/deprecated-types';\nimport { AlertsPosition } from './types/alerts-position';\n\nexport interface ComponentOptions<T = any, V extends ValidateOptions = ValidateOptions> extends ExtendedComponentSchema<T> {\n validate?: V;\n}\n\nexport interface FormioRefreshValue {\n property?: string;\n value?: object;\n form?: object;\n submission?: object;\n}\n\nexport interface AccessSetting {\n type: string;\n roles: string[];\n}\n\nexport interface FormioReport {\n form: string,\n roles: object,\n access: object,\n metadata: object,\n data: object,\n project: string,\n}\n\nexport interface FormioForm {\n title?: string;\n display?: string;\n name?: string;\n path?: string;\n type?: string;\n project?: string;\n template?: string;\n components?: ExtendedComponentSchema[];\n tags?: string[];\n access?: AccessSetting[];\n submissionAccess?: AccessSetting[];\n report?: FormioReport\n}\n\nexport interface ComponentInstance {\n component: ExtendedComponentSchema;\n id: string;\n type: string;\n asString?(value: any): string;\n getView(value: any): string;\n}\n\nexport interface AlertsOptions {\n submitMessage: string;\n}\n\nexport interface ErrorsOptions {\n message: string;\n}\n\nexport class FormioError {\n constructor(\n public message: string,\n public component: ExtendedComponentSchema,\n public silent?: boolean,\n ) {}\n}\n\nexport type FormioSubmissionCallback = (\n error: FormioError,\n submission: object\n) => void;\nexport type FormioBeforeSubmit = (\n submission: object,\n callback: FormioSubmissionCallback\n) => void;\n\nexport interface FormioHookOptions {\n beforeSubmit: FormioBeforeSubmit;\n}\n\nexport interface FormioOptions {\n errors?: ErrorsOptions;\n alerts?: AlertsOptions;\n alertsPosition?: AlertsPosition;\n disableAlerts?: boolean;\n i18n?: object;\n fileService?: object;\n hooks?: FormioHookOptions;\n sanitizeConfig?: any;\n}\n","import { Observable, Observer } from 'rxjs';\nimport { FormioForm } from './formio.common';\nimport { FormioCore as Formio } from '@formio/js';\n\nexport class FormioService {\n public formio: any;\n constructor(public url: string, public options?: object) {\n this.formio = new Formio(this.url, this.options);\n }\n requestWrapper(fn: any) {\n let record: any;\n let called = false;\n return Observable.create((observer: Observer<any>) => {\n try {\n if (!called) {\n called = true;\n fn()\n .then((_record: any) => {\n record = _record;\n observer.next(record);\n observer.complete();\n })\n .catch((err: any) => observer.error(err));\n } else if (record) {\n observer.next(record);\n observer.complete();\n }\n } catch (err) {\n observer.error(err);\n }\n });\n }\n saveForm(form: FormioForm, options?: any): Observable<FormioForm> {\n return this.requestWrapper(() => this.formio.saveForm(form, options));\n }\n loadForm(query?: any, options?: any): Observable<FormioForm> {\n return this.requestWrapper(() => this.formio.loadForm(query, options));\n }\n loadForms(query: any, options?: any): Observable<FormioForm> {\n return this.requestWrapper(() => this.formio.loadForms(query, options));\n }\n loadSubmission(query?: any, options?: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.loadSubmission(query, options));\n }\n userPermissions(user: any, form: any, submission: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.userPermissions(user, form, submission));\n }\n deleteSubmission(data?: any, options?: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.deleteSubmission(data, options));\n }\n saveSubmission(submission: {}, options?: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.saveSubmission(submission, options));\n }\n loadSubmissions(query?: any, options?: any): Observable<{}> {\n return this.requestWrapper(() => this.formio.loadSubmissions(query, options));\n }\n}\n","import { from } from 'rxjs';\nimport { FormioService } from './formio.service';\nimport { FormioForm } from './formio.common';\n\nexport class FormioPromiseService {\n private formioService: FormioService;\n\n constructor(public url: string, public options?: object) {\n this.formioService = new FormioService(url, options);\n }\n\n saveForm(form: FormioForm, options?: any): Promise<any> {\n return this.formioService.saveForm(form, options).toPromise();\n }\n loadForm(query?: any, options?: any): Promise<any> {\n return this.formioService.loadForm(query, options).toPromise();\n }\n loadSubmission(query?: any, options?: any): Promise<any> {\n return this.formioService.loadSubmission(query, options).toPromise();\n }\n userPermissions(user: any, form: any, submission: any): Promise<any> {\n return this.formioService.userPermissions(user, form, submission).toPromise();\n }\n deleteSubmission(data?: any, options?: any): Promise<any> {\n return this.formioService.deleteSubmission(data, options).toPromise();\n }\n loadForms(query: any, options?: any): Promise<any> {\n return this.formioService.loadForms(query, options).toPromise();\n }\n saveSubmission(submission: {}, options?: any): Promise<any> {\n return this.formioService.saveSubmission(submission, options).toPromise();\n }\n loadSubmissions(query?: any, options?: any): Promise<any> {\n return this.formioService.loadSubmissions(query, options).toPromise();\n }\n}\n","import { RouterModule } from '@angular/router';\nimport { find, trim, each, intersection } from 'lodash';\n\nexport function extendRouter(Class: any, config: any, ClassRoutes: any) {\n each(Class.decorators, decorator => {\n each(decorator.args, arg => {\n if (arg.declarations) {\n each(config, component => arg.declarations.push(component));\n }\n if (arg.imports) {\n each(arg.imports, (_import, index) => {\n if (\n (_import.ngModule && (_import.ngModule.name === 'RouterModule')) ||\n (_import.name === 'RouterModule')\n ) {\n arg.imports[index] = RouterModule.forChild(ClassRoutes(config));\n }\n });\n }\n });\n });\n return Class;\n}\n","export interface FormioAlert {\n type: string;\n message: string;\n component?: any;\n}\n\nexport class FormioAlerts {\n public alerts: FormioAlert[] = [];\n\n setAlert(alert: FormioAlert) {\n this.alerts = [alert];\n }\n\n addAlert(alert: FormioAlert) {\n this.alerts.push(alert);\n }\n\n setAlerts(alerts: FormioAlert[]) {\n this.alerts = alerts;\n }\n}\n","export enum AlertsPosition {\n none,\n top,\n bottom,\n both\n}\n","import { Injectable } from '@angular/core';\n@Injectable()\nexport class CustomTagsService {\n tags: string[] = [];\n\n addCustomTag(tag: string) {\n this.tags.push(tag);\n }\n}","import { Component, ElementRef, EventEmitter, Input, NgZone, OnChanges, OnDestroy, OnInit, Optional, Output, ViewChild } from '@angular/core';\nimport { FormioService } from './formio.service';\nimport { FormioAlerts } from './components/alerts/formio.alerts';\nimport { FormioAppConfig } from './formio.config';\nimport { FormioError, FormioForm, FormioOptions, FormioRefreshValue } from './formio.common';\nimport { assign, get, isEmpty } from 'lodash';\nimport { CustomTagsService } from './custom-tags.service';\nimport { Utils } from '@formio/js';\nimport { AlertsPosition } from './types/alerts-position';\nconst { Evaluator, fastCloneDeep } = Utils;\n\n@Component({\n template: ''\n})\nexport class FormioBaseComponent implements OnInit, OnChanges, OnDestroy {\n @Input() form?: FormioForm;\n @Input() submission?: any = {};\n @Input() src?: string;\n @Input() url?: string;\n @Input() service?: FormioService;\n @Input() options?: FormioOptions;\n @Input() noeval ? = Evaluator.noeval;\n @Input() formioOptions?: any;\n @Input() renderOptions?: any;\n @Input() readOnly ? = false;\n @Input() viewOnly ? = false;\n @Input() hideLoading ? = false;\n @Input() hideComponents?: string[];\n @Input() refresh?: EventEmitter<FormioRefreshValue>;\n @Input() error?: EventEmitter<any>;\n @Input() success?: EventEmitter<object>;\n @Input() submitDone?: EventEmitter<object>;\n @Input() language?: EventEmitter<string>;\n @Input() hooks?: any = {};\n @Input() renderer?: any;\n @Input() watchSubmissionErrors ? = false;\n @Input() dataTableActions? : any = []\n @Output() render = new EventEmitter<object>();\n @Output() customEvent = new EventEmitter<object>();\n @Output() fileUploadingStatus = new EventEmitter<string>();\n @Output() submit = new EventEmitter<object>();\n @Output() prevPage = new EventEmitter<object>();\n @Output() nextPage = new EventEmitter<object>();\n @Output() beforeSubmit = new EventEmitter<object>();\n @Output() rowAdd = new EventEmitter<any>();\n @Output() rowAdded = new EventEmitter<any>();\n @Output() rowEdit = new EventEmitter<any>();\n @Output() rowEdited = new EventEmitter<any>();\n @Output() rowDelete = new EventEmitter<any>();\n @Output() rowClick = new EventEmitter<any>();\n @Output() rowSelectChange = new EventEmitter<any>();\n @Output() page = new EventEmitter<any>();\n @Output() changeItemsPerPage = new EventEmitter<any>();\n @Output() change = new EventEmitter<object>();\n @Output() invalid = new EventEmitter<boolean>();\n @Output() errorChange = new EventEmitter<any>();\n @Output() formLoad = new EventEmitter<any>();\n @Output() submissionLoad = new EventEmitter<any>();\n @Output() ready = new EventEmitter<FormioBaseComponent>();\n @ViewChild('formio', { static: true }) formioElement?: ElementRef<any>;\n\n public AlertsPosition = AlertsPosition;\n public formio: any;\n public initialized = false;\n public alerts = new FormioAlerts();\n public formioReady: Promise<any>;\n\n private formioReadyResolve: any;\n private submitting = false;\n private submissionSuccess = false;\n public isLoading: boolean;\n public noAlerts: boolean;\n public label: string;\n\n constructor(\n public ngZone: NgZone,\n @Optional() public config: FormioAppConfig,\n @Optional() public customTags?: CustomTagsService,\n ) {\n this.isLoading = true;\n this.formioReady = new Promise((ready) => {\n this.formioReadyResolve = ready;\n });\n }\n\n getRenderer() {\n return this.renderer;\n }\n\n getRendererOptions() {\n const extraTags = this.customTags ? this.customTags.tags : [];\n return assign({}, {\n icons: get(this.config, 'icons', 'fontawesome'),\n noAlerts: get(this.options, 'noAlerts', true),\n readOnly: this.readOnly,\n viewAsHtml: this.viewOnly,\n ...(this.viewOnly && { renderMode: \"html\" }),\n i18n: get(this.options, 'i18n', null),\n fileService: get(this.options, 'fileService', null),\n hooks: this.hooks,\n sanitizeConfig: {\n addTags: extraTags\n },\n dataTableActions: this.dataTableActions\n }, this.renderOptions || {});\n }\n\n createRenderer() {\n const Renderer = this.getRenderer();\n const form = (new Renderer(\n this.formioElement ? this.formioElement.nativeElement : null,\n this.form,\n this.getRendererOptions()\n ));\n return form.instance;\n }\n\n setFormUrl(url) {\n this.formio.setUrl(url, this.formioOptions || {});\n }\n\n setForm(form: FormioForm) {\n this.form = form;\n if (this.formio) {\n this.formio.destroy();\n }\n\n if (this.form.title) {\n this.label = this.form.title;\n } else if (this.form.components && this.form.components[0]) {\n this.label = this.form.components[0].label;\n }\n\n // Clear out the element to render the new form.\n if (this.formioElement && this.formioElement.nativeElement) {\n this.formioElement.nativeElement.innerHTML = '';\n }\n this.formio = this.createRenderer();\n\n if(!this.formio) {\n return;\n }\n this.formio.setSubmission(this.submission, {\n fromSubmission: false\n });\n if (this.renderOptions && this.renderOptions.validateOnInit) {\n this.formio.setValue(this.submission, {validateOnInit: true});\n }\n if (this.url) {\n this.setFormUrl(this.url);\n }\n if (this.src) {\n this.setFormUrl(this.src);\n }\n this.formio.nosubmit = true;\n this.attachFormEvents();\n\n return this.formio.ready.then(() => {\n this.ngZone.run(() => {\n this.isLoading = false;\n this.ready.emit(this);\n this.formioReadyResolve(this.formio);\n if (this.formio.submissionReady) {\n this.formio.submissionReady.then((submission) => {\n this.submissionLoad.emit(submission);\n });\n }\n });\n return this.formio;\n });\n }\n\n attachFormEvents() {\n this.formio.on('prevPage', (data: any) => this.ngZone.run(() => this.onPrevPage(data)));\n this.formio.on('nextPage', (data: any) => this.ngZone.run(() => this.onNextPage(data)));\n this.formio.on('change', (value: any, flags: any, isModified: boolean) => this.ngZone.run(() => this.onChange(value, flags, isModified)));\n this.formio.on('rowAdd', (component: any) => this.ngZone.run(() => this.rowAdd.emit(component)));\n this.formio.on('rowAdded', (data: any, component: any) => this.ngZone.run(() => this.rowAdded.emit({component, row: data})));\n this.formio.on('rowEdit', (data: any, rowIndex: number, index: number, component: any) => this.ngZone.run(() => this.rowEdit.emit({component, row: data, rowIndex, index})));\n this.formio.on('rowEdited', (data: any, rowIndex: number, component: any) => this.ngZone.run(() => this.rowEdited.emit({component, row: data, rowIndex})));\n this.formio.on('rowDelete', (data: any, rowIndex: number, index: number, component: any) => this.ngZone.run(() => this.rowDelete.emit({component, row: data, rowIndex, index})));\n this.formio.on('rowClick', (row: any, rowIndex: number, index: number,component: any) => this.ngZone.run(() => this.rowClick.emit({component, row, rowIndex, index})));\n this.formio.on('rowSelectChange', (selectedRows: any[], component: any) => this.ngZone.run(() => this.rowSelectChange.emit({selectedRows, component})));\n this.formio.on('page', (currentPage: number, component: any) => this.ngZone.run(() => this.page.emit({currentPage, component})));\n this.formio.on('changeItemsPerPage', (itemsPerPage:number) => this.ngZone.run(() => this.changeItemsPerPage.emit({itemsPerPage})));\n this.formio.on('customEvent', (event: any) =>\n this.ngZone.run(() => this.customEvent.emit(event))\n );\n\n ['fileUploadingStart', 'fileUploadingEnd'].forEach((eventName, index) => {\n const status = !!index ? 'end' : 'start';\n this.formio.on(eventName, () =>\n this.ngZone.run(() => this.fileUploadingStatus.emit(status))\n );\n });\n\n this.formio.on('submit', (submission: any, saved: boolean) =>\n this.ngZone.run(() => this.submitForm(submission, saved))\n );\n this.formio.on('error', (err: any) => this.ngZone.run(() => {\n this.submissionSuccess = false;\n return this.onError(err);\n }));\n this.formio.on('render', () => this.ngZone.run(() => this.render.emit()));\n this.formio.on('formLoad', (loadedForm: any) =>\n this.ngZone.run(() => this.formLoad.emit(loadedForm))\n );\n }\n\n initialize() {\n if (this.initialized) {\n return;\n }\n\n const extraTags = this.customTags ? this.customTags.tags : [];\n const defaultOptions: FormioOptions = {\n errors: {\n message: 'Please fix the following errors before submitting.'\n },\n alerts: {\n submitMessage: 'Submission Complete.'\n },\n disableAlerts: false,\n hooks: {\n beforeSubmit: null\n },\n sanitizeConfig: {\n addTags: extraTags\n },\n alertsPosition: AlertsPosition.top,\n };\n this.options = Object.assign(defaultOptions, this.options);\n if (this.options.disableAlerts) {\n this.options.alertsPosition = AlertsPosition.none;\n }\n this.initialized = true;\n }\n\n ngOnInit() {\n Evaluator.noeval = this.noeval;\n this.initialize();\n\n if (this.language) {\n if (typeof this.language === 'string') {\n this.formio.language = this.language;\n } else {\n this.language.subscribe((lang: string) => {\n this.formio.language = lang;\n });\n }\n }\n\n if (this.refresh) {\n this.refresh.subscribe((refresh: FormioRefreshValue) =>\n this.onRefresh(refresh)\n );\n }\n\n if (this.error) {\n this.error.subscribe((err: any) => this.onError(err));\n }\n\n if (this.success) {\n this.success.subscribe((message: string) => {\n this.alerts.setAlert({\n type: 'success',\n message: message || get(this.options, 'alerts.submitMessage')\n });\n });\n }\n\n if (this.submitDone) {\n this.submitDone.subscribe((submission: object) => {\n this.formio.emit('submitDone', submission);\n });\n }\n\n if (this.src) {\n if (!this.service) {\n this.service = new FormioService(this.src);\n }\n this.isLoading = true;\n this.setFormFromSrc();\n }\n if (this.url && !this.service) {\n this.service = new FormioService(this.url);\n }\n }\n\n setFormFromSrc() {\n this.service.loadForm({ params: { live: 1 } }).subscribe(\n (form: FormioForm) => {\n if (form && form.components) {\n this.ngZone.runOutsideAngular(() => {\n this.setForm(form);\n });\n }\n\n // if a submission is also provided.\n if (\n isEmpty(this.submission) &&\n this.service &&\n this.service.formio.submissionId\n ) {\n this.service.loadSubmission().subscribe(\n (submission: any) => {\n if (this.readOnly) {\n this.formio.options.readOnly = true;\n }\n this.submission = this.formio.submission = submission;\n },\n err => this.onError(err)\n );\n }\n },\n err => this.onError(err)\n );\n }\n\n ngOnDestroy() {\n if (this.formio) {\n this.formio.destroy();\n }\n }\n\n onRefresh(refresh: FormioRefreshValue) {\n this.formioReady.then(() => {\n if (refresh.form) {\n this.formio.setForm(refresh.form).then(() => {\n if (refresh.submission) {\n this.formio.setSubmission(refresh.submission);\n }\n });\n } else if (refresh.submission) {\n this.formio.setSubmission(refresh.submission);\n } else {\n switch (refresh.property) {\n case 'submission':\n this.formio.submission = refresh.value;\n break;\n case 'form':\n this.formio.form = refresh.value;\n break;\n }\n }\n });\n }\n\n ngOnChanges(changes: any) {\n Evaluator.noeval = this.noeval;\n this.initialize();\n\n if (changes.form && changes.form.currentValue) {\n this.ngZone.runOutsideAngular(() => {\n this.setForm(changes.form.currentValue);\n });\n }\n\n this.formioReady.then(() => {\n if (changes.submission && changes.submission.currentValue) {\n this.formio.setSubmission(changes.submission.currentValue, {\n fromSubmission: !changes.submission.firstChange\n });\n }\n\n if (changes.hideComponents && changes.hideComponents.currentValue) {\n const hiddenComponents = changes.hideComponents.currentValue;\n this.formio.options.hide = hiddenComponents;\n this.formio.everyComponent((component) => {\n component.options.hide = hiddenComponents;\n if (hiddenComponents.includes(component.component.key)) {\n component.visible = false;\n }\n });\n }\n });\n }\n\n onPrevPage(data: any) {\n this.alerts.setAlerts([]);\n this.prevPage.emit(data);\n }\n\n onNextPage(data: any) {\n this.alerts.setAlerts([]);\n this.nextPage.emit(data);\n }\n\n onSubmit(submission: any, saved: boolean, noemit?: boolean) {\n this.submitting = false;\n this.submissionSuccess = true;\n\n this.formio.setValue(fastCloneDeep(submission), {\n noValidate: true,\n noCheck: true\n });\n\n if (saved) {\n this.formio.emit('submitDone', submission);\n }\n if (!noemit) {\n this.submit.emit(submission);\n }\n if (!this.success) {\n this.alerts.setAlert({\n type: 'success',\n message: get(this.options, 'alerts.submitMessage')\n });\n }\n }\n\n onError(err: any) {\n this.alerts.setAlerts([]);\n this.submitting = false;\n this.isLoading = false;\n\n if (!err) {\n return;\n }\n\n // Make sure it is an array.\n const errors = Array.isArray(err) ? err : [err];\n\n // Emit these errors again.\n this.errorChange.emit(errors);\n\n if (err.silent) {\n return;\n }\n\n if (this.formio && errors.length) {\n this.formio.emit('submitError', errors);\n }\n\n // Iterate through each one and set the alerts array.\n errors.forEach((error: any) => {\n const {\n message,\n paths,\n } = error\n ? error.details\n ? {\n message: error.details.map((detail) => detail.message),\n paths: error.details.map((detail) => detail.path),\n }\n : {\n message: error.message || error.toString(),\n paths: (error.path || error.formattedKeyOrPath) ? [error.path || error.formattedKeyOrPath] : [],\n }\n : {\n message: '',\n paths: [],\n };\n\n let shouldErrorDisplay = true;\n\n if (this.formio) {\n paths.forEach((path, index) => {\n const component = this.formio.getComponent(path);\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n const messageText = Array.isArray(message) ? message[index] : message;\n components.forEach((comp) => comp.setCustomValidity(messageText, true));\n this.alerts.addAlert({\n type: 'danger',\n message: message[index],\n component,\n });\n shouldErrorDisplay = false;\n }\n });\n\n if ((window as any).VPAT_ENABLED) {\n if (typeof error ==='string' && this.formio.components) {\n this.formio.components.forEach((comp) => {\n if (comp && comp.type !== 'button') {\n comp.setCustomValidity(message, true);\n }\n });\n }\n }\n }\n\n if (shouldErrorDisplay) {\n this.alerts.addAlert({\n type: 'danger',\n message,\n component: error.component,\n });\n }\n });\n\n if (this.formio && !this.noAlerts) {\n this.formio.showErrors(errors);\n }\n }\n\n focusOnComponet(key: any) {\n if (this.formio) {\n this.formio.focusOnComponent(key);\n }\n }\n\n submitExecute(submission: object, saved = false) {\n if (this.service && !this.url && !saved) {\n this.service\n .saveSubmission(submission)\n .subscribe(\n (sub: {}) => this.onSubmit(sub, true),\n err => this.onError(err)\n );\n } else {\n this.onSubmit(submission, false);\n }\n }\n\n submitForm(submission: any, saved = false) {\n // Keep double submits from occurring...\n if (this.submitting) {\n return;\n }\n this.formio.setMetadata(submission);\n this.submissionSuccess = false;\n this.submitting = true;\n this.beforeSubmit.emit(submission);\n\n // if they provide a beforeSubmit hook, then allow them to alter the submission asynchronously\n // or even provide a custom Error method.\n const beforeSubmit = get(this.options, 'hooks.beforeSubmit');\n if (beforeSubmit) {\n beforeSubmit(submission, (err: FormioError, sub: object) => {\n if (err) {\n this.onError(err);\n return;\n }\n this.submitExecute(sub, saved);\n });\n } else {\n this.submitExecute(submission, saved);\n }\n }\n\n onChange(value: any, flags: any, isModified: boolean) {\n if (this.watchSubmissionErrors && !this.submissionSuccess) {\n const errors = get(this, 'formio.errors', []);\n const alerts = get(this, 'alerts.alerts', []);\n const submitted = get(this, 'formio.submitted', false);\n if (submitted && (errors.length || alerts.length)) {\n this.onError(errors);\n }\n }\n return this.change.emit({...value, flags, isModified});\n }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'formio-loader',\n styleUrls: ['./formio.loader.component.scss'],\n templateUrl: './formio.loader.component.html'\n})\nexport class FormioLoaderComponent {\n @Input() isLoading: boolean;\n}\n","<div class=\"formio-loader-wrapper\" *ngIf=\"isLoading\">\n <div class=\"formio-loader\"></div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'parseHtmlContent', pure: false })\nexport class ParseHtmlContentPipe implements PipeTransform {\n\n /*\n Some messages that are come from formiojs have hex codes. So the main aim of this pipe is transform this messages to html.\n And then render in template.\n */\n transform(content) {\n const parsedContent = new DOMParser().parseFromString(content, 'text/html').body.childNodes[0];\n\n return parsedContent?.textContent;\n }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport { FormioAlerts } from './formio.alerts';\n\n@Component({\n selector: 'formio-alerts',\n templateUrl: './formio.alerts.component.html'\n})\nexport class FormioAlertsComponent implements OnInit {\n @Input() alerts: FormioAlerts;\n @Output() focusComponent = new EventEmitter<object>();\n ngOnInit() {\n if (!this.alerts) {\n this.alerts = new FormioAlerts();\n }\n }\n getComponent (event, alert) {\n this.focusComponent.emit(alert.component.key);\n }\n}\n","<div *ngFor=\"let alert of alerts.alerts\" class=\"alert alert-{{ alert.type }}\" role=\"alert\" (click)=\"getComponent($event, alert)\">\n {{alert.message | parseHtmlContent}}\n</div>\n","import { Component, OnInit, Optional, ViewEncapsulation, Input, NgZone, OnChanges } from '@angular/core';\nimport { FormioAppConfig } from '../../formio.config';\nimport { Formio, Form } from '@formio/js';\nimport { FormioBaseComponent } from '../../FormioBaseComponent';\nimport { CustomTagsService } from '../../custom-tags.service';\n\n/* tslint:disable */\n@Component({\n selector: 'formio',\n templateUrl: './formio.component.html',\n styleUrls: ['../../../../../node_modules/@formio/js/dist/formio.form.min.css'],\n encapsulation: ViewEncapsulation.None,\n})\n/* tslint:enable */\nexport class FormioComponent extends FormioBaseComponent implements OnInit, OnChanges {\n constructor(\n public ngZone: NgZone,\n @Optional() public config: FormioAppConfig,\n @Optional() public customTags?: CustomTagsService,\n ) {\n super(ngZone, config, customTags);\n if (this.config) {\n Formio.setBaseUrl(this.config.apiUrl);\n Formio.setProjectUrl(this.config.appUrl);\n } else {\n console.warn('You must provide an AppConfig within your application!');\n }\n }\n\n getRenderer() {\n return this.renderer || Form;\n }\n}\n","<div role=\"form\" [attr.aria-label]=\"label\">\n <div *ngIf=\"isLoading && !hideLoading\" style=\"position:relative;height:200px\">\n <formio-loader [isLoading]=\"isLoading\"></formio-loader>\n </div>\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.top || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\n <div #formio></div>\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.bottom || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\n</div>\n","import {\n Component,\n Input,\n OnInit,\n OnChanges,\n OnDestroy,\n ViewEncapsulation,\n Optional,\n ElementRef,\n ViewChild,\n EventEmitter,\n Output,\n NgZone\n} from '@angular/core';\nimport { FormioAppConfig } from '../../formio.config';\nimport {\n FormioForm,\n FormioOptions\n} from '../../formio.common';\nimport { Formio, FormBuilder, Utils } from '@formio/js';\nimport { assign } from 'lodash';\nimport { Observable, Subscription } from 'rxjs';\nimport { CustomTagsService } from '../../custom-tags.service';\n\n/* tslint:disable */\n@Component({\n selector: 'form-builder',\n templateUrl: './formbuilder.component.html',\n styleUrls: ['../../../../../node_modules/@formio/js/dist/formio.builder.min.css'],\n encapsulation: ViewEncapsulation.None\n})\n/* tslint:enable */\nexport class FormBuilderComponent implements OnInit, OnChanges, OnDestroy {\n public ready: Promise<object>;\n public readyResolve: any;\n public formio: any;\n public builder: FormBuilder;\n public componentAdding = false;\n private refreshSubscription: Subscription;\n @Input() form?: FormioForm;\n @Input() options?: FormioOptions;\n @Input() formbuilder?: any;\n @Input() noeval ? = false;\n @Input() refresh?: Observable<void>;\n @Input() rebuild?: Observable<object>;\n @Output() change: EventEmitter<object>;\n @ViewChild('builder', { static: true }) builderElement?: ElementRef<any>;\n\n constructor(\n private ngZone: NgZone,\n @Optional() private config: FormioAppConfig,\n @Optional() private customTags?: CustomTagsService\n ) {\n if (this.config) {\n Formio.setBaseUrl(this.config.apiUrl);\n Formio.setProjectUrl(this.config.appUrl);\n } else {\n console.warn('You must provide an AppConfig within your application!');\n }\n\n this.change = new EventEmitter();\n this.ready = new Promise((resolve: any) => {\n this.readyResolve = resolve;\n });\n }\n\n ngOnInit() {\n Utils.Evaluator.noeval = this.noeval;\n\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.ngZone.runOutsideAngular(() => {\n this.buildForm(this.form);\n });\n });\n }\n\n if (this.rebuild) {\n this.rebuild.subscribe((options) => {\n this.ngZone.runOutsideAngular(() => {\n this.rebuildForm(this.form, options);\n });\n });\n }\n }\n\n setInstance(instance: any) {\n this.formio = instance;\n instance.off('addComponent');\n instance.off('saveComponent');\n instance.off('updateComponent');\n instance.off('removeComponent');\n instance.on('addComponent', (component, parent, path, index, isNew) => {\n this.ngZone.run(() => {\n if (isNew) {\n this.componentAdding = true;\n } else {\n this.change.emit({\n type: 'addComponent',\n builder: instance,\n form: instance.schema,\n component: component,\n parent: parent,\n path: path,\n index: index\n });\n this.componentAdding = false;\n }\n });\n });\n instance.on('saveComponent', (component, original, parent, path, index, isNew) => {\n this.ngZone.run(() => {\n this.change.emit({\n type: this.componentAdding ? 'addComponent' : 'saveComponent',\n builder: instance,\n form: instance.schema,\n component: component,\n originalComponent: original,\n parent: parent,\n path: path,\n index: index,\n isNew: isNew || false\n });\n this.componentAdding = false;\n });\n });\n instance.on('updateComponent', (component) => {\n this.ngZone.run(() => {\n this.change.emit({\n type: 'updateComponent',\n builder: instance,\n form: instance.schema,\n component: component\n });\n });\n });\n instance.on('removeComponent', (component, parent, path, index) => {\n this.ngZone.run(() => {\n this.change.emit({\n type: 'deleteComponent',\n builder: instance,\n form: instance.schema,\n component: component,\n parent: parent,\n path: path,\n index: index\n });\n });\n });\n this.ngZone.run(() => {\n this.readyResolve(instance);\n });\n return instance;\n }\n\n setDisplay(display: String, prevDisplay?: string) {\n if (display && display !== prevDisplay) {\n (this.builder as any).setDisplay(display);\n }\n }\n\n buildForm(form: any, prevForm?: any) {\n if (!form || !this.builderElement || !this.builderElement.nativeElement) {\n return;\n }\n\n if (this.builder) {\n this.setDisplay(form.display, prevForm?.display);\n this.setInstance(this.builder.instance);\n this.builder.form = form;\n this.builder.instance.form = form;\n return this.builder.instance;\n }\n\n return this.rebuildForm(form);\n }\n\n rebuildForm(form: any, options?: object) {\n const Builder = this.formbuilder || FormBuilder;\n const extraTags = this.customTags ? this.customTags.tags : [];\n this.builder = new Builder(\n this.builderElement.nativeElement,\n form,\n assign({\n icons: 'fontawesome',\n sanitizeConfig: {\n addTags: extraTags\n }\n }, options || this.options || {})\n );\n return this.builder.ready.then(instance => this.setInstance(instance));\n }\n\n ngOnChanges(changes: any) {\n Utils.Evaluator.noeval = this.noeval;\n\n if (changes.form && changes.form.currentValue) {\n this.ngZone.runOutsideAngular(() => {\n this.buildForm(changes.form.currentValue || {components: []}, changes.form.previousValue);\n });\n }\n }\n\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n\n if (this.formio) {\n this.formio.destroy();\n }\n }\n}\n","<div #builder></div>\n","import { Component, OnInit, ViewEncapsulation, Input, OnChanges, ViewChild, ElementRef, EventEmitter, Output } from '@angular/core';\nimport { Formio } from '@formio/js';\nimport { FormioComponent } from '../formio/formio.component';\nimport { FormioReport } from '../../formio.common';\n\n/* tslint:disable */\n@Component({\n selector: 'formio-report',\n templateUrl: './formioreport.component.html',\n styleUrls: ['../../../../../node_modules/@formio/js/dist/formio.form.min.css'],\n encapsulation: ViewEncapsulation.None,\n})\n/* tslint:enable */\nexport class FormioReportComponent extends FormioComponent implements OnInit, OnChanges {\n @Input() report?: FormioReport;\n @Input() projectEndpoint?: string;\n @Output() fetchDataError = new EventEmitter<any>();\n @ViewChild('report', { static: true }) declare formioElement?: ElementRef<any>;\n\n public isReportLoading: boolean;\n\n setFormFromSrc() {\n this.service.loadSubmission({ params: { live: 1 } }).subscribe(\n (report: FormioReport) => {\n this.report = report;\n if (report && report.data) {\n this.ngZone.runOutsideAngular(() => {\n this.setForm({ components: [], report });\n this.isReportLoading = false;\n });\n }\n },\n err => this.onError(err)\n );\n }\n\n setFormUrl(url) {\n return;\n }\n\n ngOnChanges(changes: any) {\n super.ngOnChanges(changes)\n\n if (changes.report && changes.report.currentValue) {\n this.ngZone.runOutsideAngular(() => {\n this.setForm({ report: changes.report.currentValue, components: [] });\n this.isReportLoading = false;\n });\n }\n }\n\n getRendererOptions() {\n const projectEndpoint = this.projectEndpoint || this.config?.appUrl || this.service?.formio?.projectUrl;\n\n if (!projectEndpoint && !this.src) {\n console.warn('The projectEndpoint url is required to render the Report using JSON schema.');\n }\n return {\n projectEndpoint,\n ...super.getRendererOptions(),\n }\n }\n createRenderer() {\n const Renderer = this.getRenderer();\n if (!Renderer) {\n return null;\n }\n\n const form = (new Renderer(\n this.formioElement ? this.formioElement.nativeElement : null,\n this.report,\n this.getRendererOptions()\n ));\n return form.instance;\n }\n \n attachFormEvents() {\n this.formio.on('fetchDataError', (error: any, component: any) => this.ngZone.run(() => {\n this.alerts.addAlert({\n type: 'danger',\n message: error ? JSON.stringify(error) : error,\n });\n this.fetchDataError.emit({error, component});\n }));\n }\n\n getRenderer() {\n const reportRenderer = (Formio as any).Report;\n if (!reportRenderer) {\n console.error('Report is not found in Formio. Please make sure that you are using the Formio Reporting module and it is correctly included in your application.');\n }\n\n return reportRenderer;\n }\n}\n","<div role=\"form\" [attr.aria-label]=\"label\">\n <div *ngIf=\"isReportLoading && !hideLoading\" style=\"position:relative;height:200px\">\n <formio-loader [isLoading]=\"isReportLoading\"></formio-loader>\n </div>\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.top || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\n <div #report></div>\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.bottom || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormioComponent } from './components/formio/formio.component';\nimport { FormioReportComponent } from './components/formioreport/formioreport.component';\nimport { FormBuilderComponent } from './components/formbuilder/formbuilder.component';\nimport { FormioAlerts } from './components/alerts/formio.alerts';\nimport { ParseHtmlContentPipe } from './components/alerts/parse-html-content.pipe';\nimport { FormioAlertsComponent } from './components/alerts/formio.alerts.component';\nimport { FormioLoaderComponent } from './components/loader/formio.loader.component';\nimport { CustomTagsService } from './custom-tags.service';\nimport { FormioBaseComponent } from './FormioBaseComponent';\n\n@NgModule({\n declarations: [\n FormioComponent,\n FormioReportComponent,\n FormioBaseComponent,\n FormBuilderComponent,\n FormioLoaderComponent,\n FormioAlertsComponent,\n ParseHtmlContentPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n FormioComponent,\n FormioReportComponent,\n FormBuilderComponent,\n FormioLoaderComponent,\n FormioAlertsComponent\n ],\n providers: [\n FormioAlerts,\n CustomTagsService\n ]\n})\nexport class FormioModule {}\n","if (window && typeof (window as any).global === 'undefined') {\n (window as any).global = window;\n}\nexport * from './formio.config';\nexport * from './formio.common';\nexport * from './formio.service';\nexport * from './formio-promise.service';\nexport * from './formio.utils';\nexport * from './FormioBaseComponent';\nexport * from './components/formio/formio.component';\nexport * from './components/formbuilder/formbuilder.component';\nexport * from './components/formioreport/formioreport.component';\nexport * from './components/loader/formio.loader.component';\nexport * from './components/alerts/formio.alerts';\nexport * from './components/alerts/formio.alerts.component';\nexport { FormioModule } from './formio.module';\nexport { ComponentSchema, ExtendedComponentSchema, ElementInfo } from '@formio/deprecated-types';\nexport { Utils as FormioUtils } from '@formio/js';\nexport { Formio } from '@formio/js';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Formio","i1.FormioAppConfig","i2.CustomTagsService","i2.ParseHtmlContentPipe","i3","i4.FormioLoaderComponent","i5.FormioAlertsComponent","i2.FormioLoaderComponent","i3.FormioAlertsComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formio/angular",
3
- "version": "8.0.0-rc.7",
3
+ "version": "8.0.0-rc.9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/formio/angular-formio"
@@ -57,6 +57,12 @@
57
57
  "esm": "./esm2022/embed/formio-angular-embed.mjs",
58
58
  "default": "./fesm2022/formio-angular-embed.mjs"
59
59
  },
60
+ "./grid": {
61
+ "types": "./grid/index.d.ts",
62
+ "esm2022": "./esm2022/grid/formio-angular-grid.mjs",
63
+ "esm": "./esm2022/grid/formio-angular-grid.mjs",
64
+ "default": "./fesm2022/formio-angular-grid.mjs"
65
+ },
60
66
  "./manager": {
61
67
  "types": "./manager/index.d.ts",
62
68
  "esm2022": "./esm2022/manager/formio-angular-manager.mjs",
@@ -68,12 +74,6 @@
68
74
  "esm2022": "./esm2022/resource/formio-angular-resource.mjs",
69
75
  "esm": "./esm2022/resource/formio-angular-resource.mjs",
70
76
  "default": "./fesm2022/formio-angular-resource.mjs"
71
- },
72
- "./grid": {
73
- "types": "./grid/index.d.ts",
74
- "esm2022": "./esm2022/grid/formio-angular-grid.mjs",
75
- "esm": "./esm2022/grid/formio-angular-grid.mjs",
76
- "default": "./fesm2022/formio-angular-grid.mjs"
77
77
  }
78
78
  },
79
79
  "sideEffects": false,