ets-fe-ng-sdk 17.0.417 → 17.0.419

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.
@@ -61,13 +61,13 @@ export class FormErrorComponent {
61
61
  for (const key in form.controls) {
62
62
  if (Object.prototype.hasOwnProperty.call(form.controls, key)) {
63
63
  const control = form.controls[key];
64
- messages.push(...this.getErrorMessages(control, key, _index, form.labelValue ||
65
- (formName ? this.uS.formatField(formName) : formName?.toSentenceCase())));
64
+ messages.push(...this.getErrorMessages(control, key, _index, form.labelValue || (formName ? this.uS.formatField(formName) : parent)));
66
65
  }
67
66
  }
68
67
  else if (form instanceof FormArray)
69
68
  for (let index = 0; index < form.length; index++) {
70
69
  const control = form.controls[index];
70
+ debugger;
71
71
  messages.push(...this.getErrorMessages(control, undefined, index + 1, form.labelValue || (formName ? this.uS.formatField(formName) : parent)));
72
72
  }
73
73
  return messages;
@@ -75,7 +75,7 @@ export class FormErrorComponent {
75
75
  // console.log('message', this.message);
76
76
  }
77
77
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormErrorComponent, deps: [{ token: i0.ElementRef }, { token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: FormErrorComponent, isStandalone: true, selector: "form-error", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, lgGridNo: { classPropertyName: "lgGridNo", publicName: "lgGridNo", isSignal: true, isRequired: false, transformFunction: null }, xxlGridNo: { classPropertyName: "xxlGridNo", publicName: "xxlGridNo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of errors(); track item) {\n @if (item.formControl) {\n <div class=\"d-flex\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{item.parent}}\" />\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"], outputs: ["labelChange"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: InfoIconComponent, selector: "app-info-icon", inputs: ["text", "coloured", "left", "right"] }] }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: FormErrorComponent, isStandalone: true, selector: "form-error", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, lgGridNo: { classPropertyName: "lgGridNo", publicName: "lgGridNo", isSignal: true, isRequired: false, transformFunction: null }, xxlGridNo: { classPropertyName: "xxlGridNo", publicName: "xxlGridNo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of errors(); track item) {\n @if (item.formControl) {\n <div class=\"error-item-case\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{ item.parent }}\" />\n <!-- <div class=\"\" [matTooltip]=\"item.parent\">Parent</div> -->\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}:host .error-item-case{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"], outputs: ["labelChange"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: InfoIconComponent, selector: "app-info-icon", inputs: ["text", "coloured", "left", "right"] }] }); }
79
79
  }
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormErrorComponent, decorators: [{
81
81
  type: Component,
@@ -86,7 +86,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
86
86
  BtnComponent,
87
87
  MatTooltipModule,
88
88
  InfoIconComponent,
89
- ], template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of errors(); track item) {\n @if (item.formControl) {\n <div class=\"d-flex\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{item.parent}}\" />\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}\n"] }]
89
+ ], template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of errors(); track item) {\n @if (item.formControl) {\n <div class=\"error-item-case\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{ item.parent }}\" />\n <!-- <div class=\"\" [matTooltip]=\"item.parent\">Parent</div> -->\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}:host .error-item-case{display:flex;align-items:center}\n"] }]
90
90
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.UtilityService }] });
91
91
  function hasError(control) {
92
92
  if (control?.pending)
@@ -97,4 +97,4 @@ function hasError(control) {
97
97
  return true;
98
98
  return false;
99
99
  }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxTQUFTLEVBSVQsUUFBUSxFQUVSLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBZSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQWlCckUsTUFBTSxPQUFPLGtCQUFrQjtJQXNE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Q3ZFLENBQ0YsQ0FBQzthQUNIO1FBQ0gsT0FBTyxRQUFRLENBQUM7UUFDaEIsWUFBWTtRQUNaLHdDQUF3QztJQUMxQyxDQUFDOzhHQTVHVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw0Y0N0Qy9CLHduQ0FtQ0Esd0xETEksWUFBWSw0SUFDWixnQkFBZ0IscURBQ2hCLDBCQUEwQiwyTkFDMUIsWUFBWSxrZ0JBQ1osZ0JBQWdCLCtCQUNoQixpQkFBaUI7OzJGQUdSLGtCQUFrQjtrQkFmOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUlQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixpQkFBaUI7cUJBQ2xCOztBQWtISCxTQUFTLFFBQVEsQ0FBQyxPQUF3QjtJQUN4QyxJQUFJLE9BQU8sRUFBRSxPQUFPO1FBQUUsT0FBTyxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNO1FBQUUsT0FBTyxLQUFLLENBQUM7U0FDbkMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDekQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZSwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSW5mb0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9pbmZvLWljb24vaW5mby1pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tZXJyb3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgSW5mb0ljb25Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FcnJvckNvbXBvbmVudCB7XG4gIC8vIHJlYWRvbmx5IGVycm9ycyA9IHNpZ25hbDx7IGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7IGxhYmVsOiBzdHJpbmc7IHBhcmVudD86IHN0cmluZyB9W10+KFtdKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0PEZvcm0gfCBGb3JtW10+KCk7XG4gIHJlYWRvbmx5IGVycm9ycyA9IHRvU2lnbmFsPElFcnJvcj4oXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuZm9ybSkucGlwZShcbiAgICAgIGZpbHRlcigodikgPT4gISF2KSxcbiAgICAgIHN3aXRjaE1hcCgodikgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheSh2KVxuICAgICAgICAgID8gbWVyZ2UoLi4udi5tYXAoKGYpID0+IGYuc3RhdHVzQ2hhbmdlcykpLnBpcGUoXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICAgICAgICBtYXAoKGZvcm1TdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBmb3JtU3RhdHVzID09ICdJTlZBTElEJyB8fFxuICAgICAgICAgICAgICAgICAgZm9ybVN0YXR1cyA9PSAnUEVORElORycgfHxcbiAgICAgICAgICAgICAgICAgIHYuc29tZSgoZikgPT4gZi5zdGF0dXMgPT0gJ0lOVkFMSUQnIHx8IGYuc3RhdHVzID09ICdQRU5ESU5HJylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB1bmlxQnkoXG4gICAgICAgICAgICAgICAgICAgICAgdi5mbGF0TWFwKChmKSA9PiB0aGlzLmdldEVycm9yTWVzc2FnZXMoZikpLFxuICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgKSB8fCBbXVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogdi5zdGF0dXNDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICAgICAgICBtYXAoKGZvcm1TdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBmb3JtU3RhdHVzID09ICdJTlZBTElEJyB8fFxuICAgICAgICAgICAgICAgICAgZm9ybVN0YXR1cyA9PSAnUEVORElORycgfHxcbiAgICAgICAgICAgICAgICAgIHYuc3RhdHVzID09ICdJTlZBTElEJyB8fFxuICAgICAgICAgICAgICAgICAgdi5zdGF0dXMgPT0gJ1BFTkRJTkcnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXJyb3JNZXNzYWdlcyh2KTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBkZWJvdW5jZVRpbWUoNjAwKSxcbiAgICApLFxuICApO1xuXG4gIC8vIHByb3RlY3RlZCBmb3JtPzogRm9ybTtcbiAgLy8gcHJvdGVjdGVkIGZvcm1zPzogRm9ybVtdO1xuICByZWFkb25seSBsZ0dyaWRObyA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oMik7XG4gIHJlYWRvbmx5IHh4bEdyaWRObyA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oMyk7XG5cbiAgcmVhZG9ubHkgaGFzRXJyb3IgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLmVycm9ycygpPy5sZW5ndGggPiAwKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UsXG4gICkge31cblxuICBnZXRFcnJvck1lc3NhZ2VzKFxuICAgIGZvcm06IEZvcm0gfCBBYnN0cmFjdENvbnRyb2wsXG4gICAgZm9ybU5hbWU/OiBzdHJpbmcsXG4gICAgX2luZGV4PzogbnVtYmVyLFxuICAgIHBhcmVudD86IHN0cmluZyxcbiAgKTogSUVycm9yIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBsZXQgbWVzc2FnZXM6IElFcnJvciA9IFtdO1xuICAgIGlmIChoYXNFcnJvcihmb3JtKSkge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBtZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgZm9ybUNvbnRyb2w6IGZvcm0sXG4gICAgICAgIGxhYmVsOlxuICAgICAgICAgIChfaW5kZXggPyBgSXRlbSAke19pbmRleH06IGAgOiAnJykgK1xuICAgICAgICAgIChmb3JtLmxhYmVsVmFsdWUgfHxcbiAgICAgICAgICAgIChmb3JtTmFtZSA/IHRoaXMudVMuZm9ybWF0RmllbGQoZm9ybU5hbWUpIDogZm9ybU5hbWU/LnRvU2VudGVuY2VDYXNlKCkpKSxcbiAgICAgICAgcGFyZW50LFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybS5jb250cm9scykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZvcm0uY29udHJvbHMsIGtleSkpIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1trZXldO1xuICAgICAgICAgIG1lc3NhZ2VzLnB1c2goXG4gICAgICAgICAgICAuLi50aGlzLmdldEVycm9yTWVzc2FnZXMoXG4gICAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgX2luZGV4LFxuICAgICAgICAgICAgICBmb3JtLmxhYmVsVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAoZm9ybU5hbWUgPyB0aGlzLnVTLmZvcm1hdEZpZWxkKGZvcm1OYW1lKSA6IGZvcm1OYW1lPy50b1NlbnRlbmNlQ2FzZSgpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZm9ybS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNbaW5kZXhdO1xuICAgICAgICBtZXNzYWdlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMuZ2V0RXJyb3JNZXNzYWdlcyhcbiAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbmRleCArIDEsXG4gICAgICAgICAgICBmb3JtLmxhYmVsVmFsdWUgfHwgKGZvcm1OYW1lID8gdGhpcy51Uy5mb3JtYXRGaWVsZChmb3JtTmFtZSkgOiBwYXJlbnQpLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIC8vIGNvbnNvbGUubG9nKCdtZXNzYWdlJywgdGhpcy5tZXNzYWdlKTtcbiAgfVxufVxudHlwZSBGb3JtID0gRm9ybUdyb3VwIHwgRm9ybUNvbnRyb2wgfCBGb3JtQXJyYXk7XG50eXBlIElFcnJvciA9IHsgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDsgbGFiZWw6IHN0cmluZzsgcGFyZW50OiBzdHJpbmcgfCBudWxsIH1bXTtcbmZ1bmN0aW9uIGhhc0Vycm9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICBpZiAoY29udHJvbD8ucGVuZGluZykgcmV0dXJuIHRydWU7XG4gIGVsc2UgaWYgKCFjb250cm9sPy5lcnJvcnMpIHJldHVybiBmYWxzZTtcbiAgZWxzZSBpZiAoT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmxlbmd0aCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn1cbiIsIkBpZiAoaGFzRXJyb3IoKSkge1xuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMlwiPlxuICAgIDxhcHAtYnRuXG4gICAgICB0ZXh0PVwiRm9ybSBFcnJvcnNcIlxuICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgdHlwZT1cImNsZWFyXCJcbiAgICAgIG1jbGFzcz1cImJ0bi1vdXRsaW5lLXdhcm5pbmdcIlxuICAgICAgKG1jbGljayk9XCJlcnJDb250LmhpZGRlbiA9ICFlcnJDb250LmhpZGRlblwiIC8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGZvcm0tZXJyb3ItY29udGFpbmVyIHAtMyBtdC0yXCIgI2VyckNvbnQgW2hpZGRlbl09XCJ0cnVlXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy1sZy17eyBsZ0dyaWRObygpIH19IHJvdy1jb2xzLXh4bC17eyB4eGxHcmlkTm8oKSB9fVwiPlxuICAgICAgQGlmIChmYWxzZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGQtZmxleFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGUtM1wiPnt7ICdGb3JtIGVycm9ycycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8aHIgY2xhc3M9XCJteS0wXCI+IC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZXJyb3JzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgQGlmIChpdGVtLmZvcm1Db250cm9sKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgQGlmIChpdGVtLnBhcmVudCkge1xuICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiB0ZXh0PVwiR3JvdXA6IHt7aXRlbS5wYXJlbnR9fVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZVxuICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbCB8IHRpdGxlY2FzZVwiXG4gICAgICAgICAgICAgIFtpZ25vcmVEaXJ0aW5lc3NdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cIml0ZW0uZm9ybUNvbnRyb2xcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxTQUFTLEVBSVQsUUFBUSxFQUVSLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBZSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQWlCckUsTUFBTSxPQUFPLGtCQUFrQjtJQXNE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Q3ZFLENBQ0YsQ0FBQzthQUNIO1FBQ0gsT0FBTyxRQUFRLENBQUM7UUFDaEIsWUFBWTtRQUNaLHdDQUF3QztJQUMxQyxDQUFDOzhHQTVHVSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw0Y0N0Qy9CLHF0Q0FvQ0EsK09ETkksWUFBWSw0SUFDWixnQkFBZ0IscURBQ2hCLDBCQUEwQiwyTkFDMUIsWUFBWSxrZ0JBQ1osZ0JBQWdCLCtCQUNoQixpQkFBaUI7OzJGQUdSLGtCQUFrQjtrQkFmOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUlQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixpQkFBaUI7cUJBQ2xCOztBQWtISCxTQUFTLFFBQVEsQ0FBQyxPQUF3QjtJQUN4QyxJQUFJLE9BQU8sRUFBRSxPQUFPO1FBQUUsT0FBTyxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNO1FBQUUsT0FBTyxLQUFLLENBQUM7U0FDbkMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDekQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZSwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSW5mb0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9pbmZvLWljb24vaW5mby1pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tZXJyb3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgSW5mb0ljb25Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FcnJvckNvbXBvbmVudCB7XG4gIC8vIHJlYWRvbmx5IGVycm9ycyA9IHNpZ25hbDx7IGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7IGxhYmVsOiBzdHJpbmc7IHBhcmVudD86IHN0cmluZyB9W10+KFtdKTtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0PEZvcm0gfCBGb3JtW10+KCk7XG4gIHJlYWRvbmx5IGVycm9ycyA9IHRvU2lnbmFsPElFcnJvcj4oXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuZm9ybSkucGlwZShcbiAgICAgIGZpbHRlcigodikgPT4gISF2KSxcbiAgICAgIHN3aXRjaE1hcCgodikgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheSh2KVxuICAgICAgICAgID8gbWVyZ2UoLi4udi5tYXAoKGYpID0+IGYuc3RhdHVzQ2hhbmdlcykpLnBpcGUoXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICAgICAgICBtYXAoKGZvcm1TdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBmb3JtU3RhdHVzID09ICdJTlZBTElEJyB8fFxuICAgICAgICAgICAgICAgICAgZm9ybVN0YXR1cyA9PSAnUEVORElORycgfHxcbiAgICAgICAgICAgICAgICAgIHYuc29tZSgoZikgPT4gZi5zdGF0dXMgPT0gJ0lOVkFMSUQnIHx8IGYuc3RhdHVzID09ICdQRU5ESU5HJylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB1bmlxQnkoXG4gICAgICAgICAgICAgICAgICAgICAgdi5mbGF0TWFwKChmKSA9PiB0aGlzLmdldEVycm9yTWVzc2FnZXMoZikpLFxuICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgKSB8fCBbXVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogdi5zdGF0dXNDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZSg2MDApLFxuICAgICAgICAgICAgICBtYXAoKGZvcm1TdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBmb3JtU3RhdHVzID09ICdJTlZBTElEJyB8fFxuICAgICAgICAgICAgICAgICAgZm9ybVN0YXR1cyA9PSAnUEVORElORycgfHxcbiAgICAgICAgICAgICAgICAgIHYuc3RhdHVzID09ICdJTlZBTElEJyB8fFxuICAgICAgICAgICAgICAgICAgdi5zdGF0dXMgPT0gJ1BFTkRJTkcnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXJyb3JNZXNzYWdlcyh2KTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBkZWJvdW5jZVRpbWUoNjAwKSxcbiAgICApLFxuICApO1xuXG4gIC8vIHByb3RlY3RlZCBmb3JtPzogRm9ybTtcbiAgLy8gcHJvdGVjdGVkIGZvcm1zPzogRm9ybVtdO1xuICByZWFkb25seSBsZ0dyaWRObyA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oMik7XG4gIHJlYWRvbmx5IHh4bEdyaWRObyA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oMyk7XG5cbiAgcmVhZG9ubHkgaGFzRXJyb3IgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLmVycm9ycygpPy5sZW5ndGggPiAwKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHB1YmxpYyB1UzogVXRpbGl0eVNlcnZpY2UsXG4gICkge31cblxuICBnZXRFcnJvck1lc3NhZ2VzKFxuICAgIGZvcm06IEZvcm0gfCBBYnN0cmFjdENvbnRyb2wsXG4gICAgZm9ybU5hbWU/OiBzdHJpbmcsXG4gICAgX2luZGV4PzogbnVtYmVyLFxuICAgIHBhcmVudD86IHN0cmluZyxcbiAgKTogSUVycm9yIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBsZXQgbWVzc2FnZXM6IElFcnJvciA9IFtdO1xuICAgIGlmIChoYXNFcnJvcihmb3JtKSkge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBtZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgZm9ybUNvbnRyb2w6IGZvcm0sXG4gICAgICAgIGxhYmVsOlxuICAgICAgICAgIChfaW5kZXggPyBgSXRlbSAke19pbmRleH06IGAgOiAnJykgK1xuICAgICAgICAgIChmb3JtLmxhYmVsVmFsdWUgfHxcbiAgICAgICAgICAgIChmb3JtTmFtZSA/IHRoaXMudVMuZm9ybWF0RmllbGQoZm9ybU5hbWUpIDogZm9ybU5hbWU/LnRvU2VudGVuY2VDYXNlKCkpKSxcbiAgICAgICAgcGFyZW50LFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybS5jb250cm9scykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZvcm0uY29udHJvbHMsIGtleSkpIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1trZXldO1xuICAgICAgICAgIG1lc3NhZ2VzLnB1c2goXG4gICAgICAgICAgICAuLi50aGlzLmdldEVycm9yTWVzc2FnZXMoXG4gICAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgX2luZGV4LFxuICAgICAgICAgICAgICBmb3JtLmxhYmVsVmFsdWUgfHwgKGZvcm1OYW1lID8gdGhpcy51Uy5mb3JtYXRGaWVsZChmb3JtTmFtZSkgOiBwYXJlbnQpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSlcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmb3JtLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5jb250cm9sc1tpbmRleF07XG4gICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICBtZXNzYWdlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMuZ2V0RXJyb3JNZXNzYWdlcyhcbiAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbmRleCArIDEsXG4gICAgICAgICAgICBmb3JtLmxhYmVsVmFsdWUgfHwgKGZvcm1OYW1lID8gdGhpcy51Uy5mb3JtYXRGaWVsZChmb3JtTmFtZSkgOiBwYXJlbnQpLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIC8vIGNvbnNvbGUubG9nKCdtZXNzYWdlJywgdGhpcy5tZXNzYWdlKTtcbiAgfVxufVxudHlwZSBGb3JtID0gRm9ybUdyb3VwIHwgRm9ybUNvbnRyb2wgfCBGb3JtQXJyYXk7XG50eXBlIElFcnJvciA9IHsgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDsgbGFiZWw6IHN0cmluZzsgcGFyZW50OiBzdHJpbmcgfCBudWxsIH1bXTtcbmZ1bmN0aW9uIGhhc0Vycm9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICBpZiAoY29udHJvbD8ucGVuZGluZykgcmV0dXJuIHRydWU7XG4gIGVsc2UgaWYgKCFjb250cm9sPy5lcnJvcnMpIHJldHVybiBmYWxzZTtcbiAgZWxzZSBpZiAoT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmxlbmd0aCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn1cbiIsIkBpZiAoaGFzRXJyb3IoKSkge1xuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMlwiPlxuICAgIDxhcHAtYnRuXG4gICAgICB0ZXh0PVwiRm9ybSBFcnJvcnNcIlxuICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgdHlwZT1cImNsZWFyXCJcbiAgICAgIG1jbGFzcz1cImJ0bi1vdXRsaW5lLXdhcm5pbmdcIlxuICAgICAgKG1jbGljayk9XCJlcnJDb250LmhpZGRlbiA9ICFlcnJDb250LmhpZGRlblwiIC8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGZvcm0tZXJyb3ItY29udGFpbmVyIHAtMyBtdC0yXCIgI2VyckNvbnQgW2hpZGRlbl09XCJ0cnVlXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy1sZy17eyBsZ0dyaWRObygpIH19IHJvdy1jb2xzLXh4bC17eyB4eGxHcmlkTm8oKSB9fVwiPlxuICAgICAgQGlmIChmYWxzZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGQtZmxleFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGUtM1wiPnt7ICdGb3JtIGVycm9ycycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8aHIgY2xhc3M9XCJteS0wXCI+IC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZXJyb3JzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgQGlmIChpdGVtLmZvcm1Db250cm9sKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWl0ZW0tY2FzZVwiPlxuICAgICAgICAgICAgQGlmIChpdGVtLnBhcmVudCkge1xuICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiB0ZXh0PVwiR3JvdXA6IHt7IGl0ZW0ucGFyZW50IH19XCIgLz5cbiAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiXCIgW21hdFRvb2x0aXBdPVwiaXRlbS5wYXJlbnRcIj5QYXJlbnQ8L2Rpdj4gLS0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZVxuICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbCB8IHRpdGxlY2FzZVwiXG4gICAgICAgICAgICAgIFtpZ25vcmVEaXJ0aW5lc3NdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cIml0ZW0uZm9ybUNvbnRyb2xcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufVxuIl19
@@ -12689,13 +12689,13 @@ class FormErrorComponent {
12689
12689
  for (const key in form.controls) {
12690
12690
  if (Object.prototype.hasOwnProperty.call(form.controls, key)) {
12691
12691
  const control = form.controls[key];
12692
- messages.push(...this.getErrorMessages(control, key, _index, form.labelValue ||
12693
- (formName ? this.uS.formatField(formName) : formName?.toSentenceCase())));
12692
+ messages.push(...this.getErrorMessages(control, key, _index, form.labelValue || (formName ? this.uS.formatField(formName) : parent)));
12694
12693
  }
12695
12694
  }
12696
12695
  else if (form instanceof FormArray)
12697
12696
  for (let index = 0; index < form.length; index++) {
12698
12697
  const control = form.controls[index];
12698
+ debugger;
12699
12699
  messages.push(...this.getErrorMessages(control, undefined, index + 1, form.labelValue || (formName ? this.uS.formatField(formName) : parent)));
12700
12700
  }
12701
12701
  return messages;
@@ -12703,7 +12703,7 @@ class FormErrorComponent {
12703
12703
  // console.log('message', this.message);
12704
12704
  }
12705
12705
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormErrorComponent, deps: [{ token: i0.ElementRef }, { token: UtilityService }], target: i0.ɵɵFactoryTarget.Component }); }
12706
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: FormErrorComponent, isStandalone: true, selector: "form-error", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, lgGridNo: { classPropertyName: "lgGridNo", publicName: "lgGridNo", isSignal: true, isRequired: false, transformFunction: null }, xxlGridNo: { classPropertyName: "xxlGridNo", publicName: "xxlGridNo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of errors(); track item) {\n @if (item.formControl) {\n <div class=\"d-flex\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{item.parent}}\" />\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"], outputs: ["labelChange"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: InfoIconComponent, selector: "app-info-icon", inputs: ["text", "coloured", "left", "right"] }] }); }
12706
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: FormErrorComponent, isStandalone: true, selector: "form-error", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, lgGridNo: { classPropertyName: "lgGridNo", publicName: "lgGridNo", isSignal: true, isRequired: false, transformFunction: null }, xxlGridNo: { classPropertyName: "xxlGridNo", publicName: "xxlGridNo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of errors(); track item) {\n @if (item.formControl) {\n <div class=\"error-item-case\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{ item.parent }}\" />\n <!-- <div class=\"\" [matTooltip]=\"item.parent\">Parent</div> -->\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}:host .error-item-case{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"], outputs: ["labelChange"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: InfoIconComponent, selector: "app-info-icon", inputs: ["text", "coloured", "left", "right"] }] }); }
12707
12707
  }
12708
12708
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FormErrorComponent, decorators: [{
12709
12709
  type: Component,
@@ -12714,7 +12714,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
12714
12714
  BtnComponent,
12715
12715
  MatTooltipModule,
12716
12716
  InfoIconComponent,
12717
- ], template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of errors(); track item) {\n @if (item.formControl) {\n <div class=\"d-flex\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{item.parent}}\" />\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}\n"] }]
12717
+ ], template: "@if (hasError()) {\n <div class=\"d-flex justify-content-end mt-2\">\n <app-btn\n text=\"Form Errors\"\n icon=\"info\"\n type=\"clear\"\n mclass=\"btn-outline-warning\"\n (mclick)=\"errCont.hidden = !errCont.hidden\" />\n </div>\n <div class=\"border form-error-container p-3 mt-2\" #errCont [hidden]=\"true\">\n <div class=\"row row-cols-lg-{{ lgGridNo() }} row-cols-xxl-{{ xxlGridNo() }}\">\n @if (false) {\n <div class=\"col-lg-12 d-flex\">\n <div>\n <div class=\"pe-3\">{{ 'Form errors' | appTranslate | async }}</div>\n <!-- <hr class=\"my-0\"> -->\n </div>\n </div>\n }\n @for (item of errors(); track item) {\n @if (item.formControl) {\n <div class=\"error-item-case\">\n @if (item.parent) {\n <app-info-icon text=\"Group: {{ item.parent }}\" />\n <!-- <div class=\"\" [matTooltip]=\"item.parent\">Parent</div> -->\n }\n <app-validation-message\n [label]=\"item.label | titlecase\"\n [ignoreDirtiness]=\"true\"\n [control]=\"item.formControl\" />\n </div>\n }\n }\n </div>\n </div>\n}\n", styles: [":host ::ng-deep .errormssg{color:#870000}:host .form-error-container{border-radius:10px}:host app-info-icon{margin-right:5px}:host .error-item-case{display:flex;align-items:center}\n"] }]
12718
12718
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: UtilityService }] });
12719
12719
  function hasError(control) {
12720
12720
  if (control?.pending)