tango-app-ui-manage-settings 3.7.51 → 3.7.52

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.
@@ -127,10 +127,10 @@ export class TraxConfigurationComponent {
127
127
  });
128
128
  }
129
129
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxConfigurationComponent, deps: [{ token: i1.ClientApiService }, { token: i2.ToastService }], target: i0.ɵɵFactoryTarget.Component });
130
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxConfigurationComponent, selector: "lib-trax-configuration", ngImport: i0, template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--chips\">\r\n <span class=\"tc-chip tc-chip--pass\" [title]=\"(config.passLabel.trim() || 'Pass') + ' \u2265 ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.passLabel.trim() || 'Pass' }}</span>\r\n <span class=\"tc-chip-mark\">\u2265 {{ previewPassMark }}%</span>\r\n </span>\r\n <span class=\"tc-chip tc-chip--fail\" [title]=\"(config.failLabel.trim() || 'Fail') + ' < ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.failLabel.trim() || 'Fail' }}</span>\r\n <span class=\"tc-chip-mark\">&lt; {{ previewPassMark }}%</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--text\">\r\n <div><em>{{ config.remarksLabel.trim() || 'Remarks' }}:</em> Door matt worn out at the edges</div>\r\n <div><em>{{ config.additionalRemarksLabel.trim() || 'Additional Remarks' }}:</em> Replaced on 12 Aug</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-preview{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.trax-config .tc-preview--chips{flex-wrap:nowrap;height:44px;padding:0 8px;border-radius:8px;background:#f9fafb}.trax-config .tc-preview--text{display:block;padding:10px 12px;border-radius:8px;background:#f9fafb;color:#344054;font-size:14px;line-height:22px}.trax-config .tc-preview--text em{font-style:italic}.trax-config .tc-chip{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;min-width:0;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}.trax-config .tc-chip--pass{background:#ecfdf3;color:#027a48}.trax-config .tc-chip--fail{background:#fef3f2;color:#b42318}.trax-config .tc-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.trax-config .tc-chip-mark{flex-shrink:0}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
130
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxConfigurationComponent, selector: "lib-trax-configuration", ngImport: i0, template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--chips\">\r\n <span class=\"tc-chip tc-chip--pass\" [title]=\"(config.passLabel.trim() || 'Pass') + ' \u2265 ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.passLabel.trim() || 'Pass' }}</span>\r\n <span class=\"tc-chip-mark\">\u2265 {{ previewPassMark }}%</span>\r\n </span>\r\n <span class=\"tc-chip tc-chip--fail\" [title]=\"(config.failLabel.trim() || 'Fail') + ' < ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.failLabel.trim() || 'Fail' }}</span>\r\n <span class=\"tc-chip-mark\">&lt; {{ previewPassMark }}%</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-preview{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.trax-config .tc-preview--chips{flex-wrap:nowrap;height:44px;padding:0 8px;border-radius:8px;background:#f9fafb}.trax-config .tc-chip{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;min-width:0;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}.trax-config .tc-chip--pass{background:#ecfdf3;color:#027a48}.trax-config .tc-chip--fail{background:#fef3f2;color:#b42318}.trax-config .tc-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.trax-config .tc-chip-mark{flex-shrink:0}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
131
131
  }
132
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxConfigurationComponent, decorators: [{
133
133
  type: Component,
134
- args: [{ selector: 'lib-trax-configuration', template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--chips\">\r\n <span class=\"tc-chip tc-chip--pass\" [title]=\"(config.passLabel.trim() || 'Pass') + ' \u2265 ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.passLabel.trim() || 'Pass' }}</span>\r\n <span class=\"tc-chip-mark\">\u2265 {{ previewPassMark }}%</span>\r\n </span>\r\n <span class=\"tc-chip tc-chip--fail\" [title]=\"(config.failLabel.trim() || 'Fail') + ' < ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.failLabel.trim() || 'Fail' }}</span>\r\n <span class=\"tc-chip-mark\">&lt; {{ previewPassMark }}%</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--text\">\r\n <div><em>{{ config.remarksLabel.trim() || 'Remarks' }}:</em> Door matt worn out at the edges</div>\r\n <div><em>{{ config.additionalRemarksLabel.trim() || 'Additional Remarks' }}:</em> Replaced on 12 Aug</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-preview{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.trax-config .tc-preview--chips{flex-wrap:nowrap;height:44px;padding:0 8px;border-radius:8px;background:#f9fafb}.trax-config .tc-preview--text{display:block;padding:10px 12px;border-radius:8px;background:#f9fafb;color:#344054;font-size:14px;line-height:22px}.trax-config .tc-preview--text em{font-style:italic}.trax-config .tc-chip{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;min-width:0;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}.trax-config .tc-chip--pass{background:#ecfdf3;color:#027a48}.trax-config .tc-chip--fail{background:#fef3f2;color:#b42318}.trax-config .tc-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.trax-config .tc-chip-mark{flex-shrink:0}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"] }]
134
+ args: [{ selector: 'lib-trax-configuration', template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--chips\">\r\n <span class=\"tc-chip tc-chip--pass\" [title]=\"(config.passLabel.trim() || 'Pass') + ' \u2265 ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.passLabel.trim() || 'Pass' }}</span>\r\n <span class=\"tc-chip-mark\">\u2265 {{ previewPassMark }}%</span>\r\n </span>\r\n <span class=\"tc-chip tc-chip--fail\" [title]=\"(config.failLabel.trim() || 'Fail') + ' < ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.failLabel.trim() || 'Fail' }}</span>\r\n <span class=\"tc-chip-mark\">&lt; {{ previewPassMark }}%</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-preview{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.trax-config .tc-preview--chips{flex-wrap:nowrap;height:44px;padding:0 8px;border-radius:8px;background:#f9fafb}.trax-config .tc-chip{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;min-width:0;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}.trax-config .tc-chip--pass{background:#ecfdf3;color:#027a48}.trax-config .tc-chip--fail{background:#fef3f2;color:#b42318}.trax-config .tc-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.trax-config .tc-chip-mark{flex-shrink:0}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"] }]
135
135
  }], ctorParameters: () => [{ type: i1.ClientApiService }, { type: i2.ToastService }] });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJheC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbnMvdHJheC1jb25maWd1cmF0aW9uL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL3RyYXgtY29uZmlndXJhdGlvbi90cmF4LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBVzFDLE1BQU0sUUFBUSxHQUFlO0lBQzNCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLHNCQUFzQixFQUFFLG9CQUFvQjtDQUM3QyxDQUFDO0FBRUY7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUFrQmpCO0lBQW1DO0lBakJ2RCxNQUFNLEdBQWUsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQzVCLE9BQU8sR0FBMEM7UUFDeEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7UUFDOUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7UUFDNUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtLQUNqRCxDQUFDO0lBQ0YsK0VBQStFO0lBQ3RFLGVBQWUsR0FB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LENBQUM7WUFDM0ksQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBOUdVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLDhEQzdCdkMsMHZKQXNGQTs7NEZEekRhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmF4Q29uZmlnIHtcclxuICBwYXNzTGFiZWw6IHN0cmluZztcclxuICBmYWlsTGFiZWw6IHN0cmluZztcclxuICByZW1hcmtzTGFiZWw6IHN0cmluZztcclxuICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRTOiBUcmF4Q29uZmlnID0ge1xyXG4gIHBhc3NMYWJlbDogJ1Bhc3MnLFxyXG4gIGZhaWxMYWJlbDogJ0ZhaWwnLFxyXG4gIHJlbWFya3NMYWJlbDogJ1JlbWFya3MnLFxyXG4gIGFkZGl0aW9uYWxSZW1hcmtzTGFiZWw6ICdBZGRpdGlvbmFsIFJlbWFya3MnXHJcbn07XHJcblxyXG4vKipcclxuICogTWFuYWdlIC0+IFNldHRpbmdzIC0+IFRyYXggQ29uZmlndXJhdGlvbi4gUmVuYW1lcyB0aGUgdHdvIHNjb3Jpbmcgb3V0Y29tZXMgKFBhc3MgLyBGYWlsKVxyXG4gKiBhbmQgdGhlIHR3byBmcmVlLXRleHQgcmVtYXJrIGZpZWxkcyBmb3IgdGhlIHdob2xlIGNsaWVudC4gUmVhZCBhbmQgc2F2ZWQgdGhyb3VnaCB0aGVcclxuICogVHJheCBBUEkgKC90cmF4L2F1ZGl0L3NldHRpbmdzKTsgdGhlIEF1ZGl0IG1vZHVsZSByZWFkcyB0aGUgc2FtZSBkb2N1bWVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRyYXgtY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYXhDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBjb25maWc6IFRyYXhDb25maWcgPSB7IC4uLkRFRkFVTFRTIH07XHJcbiAgcmVhZG9ubHkgcHJlc2V0czogQXJyYXk8eyBwYXNzOiBzdHJpbmc7IGZhaWw6IHN0cmluZyB9PiA9IFtcclxuICAgIHsgcGFzczogJ1Bhc3MnLCBmYWlsOiAnRmFpbCcgfSxcclxuICAgIHsgcGFzczogJ0NvbXBsaWFudCcsIGZhaWw6ICdOb24tQ29tcGxpYW50JyB9LFxyXG4gICAgeyBwYXNzOiAnU2F0aXNmYWN0b3J5JywgZmFpbDogJ1Vuc2F0aXNmYWN0b3J5JyB9XHJcbiAgXTtcclxuICAvKiogUGFzcyBtYXJrIHNob3duIGluIHRoZSBwcmV2aWV3OyBwZXItYXVkaXQgcGFzcyBtYXJrcyBsaXZlIG9uIGVhY2ggYXVkaXQuICovXHJcbiAgcmVhZG9ubHkgcHJldmlld1Bhc3NNYXJrID0gNzU7XHJcblxyXG4gIGNsaWVudElkID0gJyc7XHJcbiAgaXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHNhdmVkOiBUcmF4Q29uZmlnID0geyAuLi5ERUZBVUxUUyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IENsaWVudEFwaVNlcnZpY2UsIHByaXZhdGUgdHM6IFRvYXN0U2VydmljZSkge1xyXG4gICAgdGhpcy5zZXJ2aWNlLmNsaWVudERhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICBpZiAoZT8uY2xpZW50SWQgJiYgZS5jbGllbnRJZCAhPT0gdGhpcy5jbGllbnRJZCkge1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWQgPSBlLmNsaWVudElkO1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2xpZW50SWQpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldFRyYXhDb25maWcodGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCAmJiByZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZWQgPSB0aGlzLnBpY2socmVzLmRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuc2F2ZWQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwaWNrKHNyYzogYW55KTogVHJheENvbmZpZyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwYXNzTGFiZWw6IHNyYz8ucGFzc0xhYmVsIHx8IERFRkFVTFRTLnBhc3NMYWJlbCxcclxuICAgICAgZmFpbExhYmVsOiBzcmM/LmZhaWxMYWJlbCB8fCBERUZBVUxUUy5mYWlsTGFiZWwsXHJcbiAgICAgIHJlbWFya3NMYWJlbDogc3JjPy5yZW1hcmtzTGFiZWwgfHwgREVGQVVMVFMucmVtYXJrc0xhYmVsLFxyXG4gICAgICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiBzcmM/LmFkZGl0aW9uYWxSZW1hcmtzTGFiZWwgfHwgREVGQVVMVFMuYWRkaXRpb25hbFJlbWFya3NMYWJlbFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSAhdGhpcy5pc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5zYXZlZCB9O1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFwcGx5UHJlc2V0KHA6IHsgcGFzczogc3RyaW5nOyBmYWlsOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuY29uZmlnLnBhc3NMYWJlbCA9IHAucGFzcztcclxuICAgIHRoaXMuY29uZmlnLmZhaWxMYWJlbCA9IHAuZmFpbDtcclxuICB9XHJcblxyXG4gIGlzUHJlc2V0KHA6IHsgcGFzczogc3RyaW5nOyBmYWlsOiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhc3NMYWJlbC50cmltKCkgPT09IHAucGFzcyAmJiB0aGlzLmNvbmZpZy5mYWlsTGFiZWwudHJpbSgpID09PSBwLmZhaWw7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuU2F2ZSgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGMgPSB0aGlzLmNvbmZpZztcclxuICAgIHJldHVybiAhdGhpcy5zYXZpbmcgJiYgW2MucGFzc0xhYmVsLCBjLmZhaWxMYWJlbCwgYy5yZW1hcmtzTGFiZWwsIGMuYWRkaXRpb25hbFJlbWFya3NMYWJlbF1cclxuICAgICAgLmV2ZXJ5KHYgPT4gdi50cmltKCkubGVuZ3RoID4gMCAmJiB2LnRyaW0oKS5sZW5ndGggPD0gNDApO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2FuU2F2ZSB8fCAhdGhpcy5jbGllbnRJZCkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBwYXNzTGFiZWw6IHRoaXMuY29uZmlnLnBhc3NMYWJlbC50cmltKCksXHJcbiAgICAgIGZhaWxMYWJlbDogdGhpcy5jb25maWcuZmFpbExhYmVsLnRyaW0oKSxcclxuICAgICAgcmVtYXJrc0xhYmVsOiB0aGlzLmNvbmZpZy5yZW1hcmtzTGFiZWwudHJpbSgpLFxyXG4gICAgICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiB0aGlzLmNvbmZpZy5hZGRpdGlvbmFsUmVtYXJrc0xhYmVsLnRyaW0oKVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2VydmljZS5zYXZlVHJheENvbmZpZyhwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzPy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZWQgPSB0aGlzLnBpY2socmVzLmRhdGEgfHwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5zYXZlZCB9O1xyXG4gICAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KCdUcmF4IGNvbmZpZ3VyYXRpb24gc2F2ZWQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KHJlcz8ubWVzc2FnZSB8fCAnQ291bGQgbm90IHNhdmUgdGhlIFRyYXggY29uZmlndXJhdGlvbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8uZXJyb3I/LmVycm9yIHx8IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ0NvdWxkIG5vdCBzYXZlIHRoZSBUcmF4IGNvbmZpZ3VyYXRpb24nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZUZvcm0oKVwiICpuZ0lmPVwiaXNEaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBhbGlnbi1pdGVtcy1lbmRcIj48c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTE0LjE2NyAyLjVhMi4zNTcgMi4zNTcgMCAxIDEgMy4zMzMgMy4zMzNMNi4yNSAxNy4wODMgMi41IDE3LjVsLjQxNy0zLjc1TDE0LjE2NyAyLjVaXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgPC9zdmc+PC9zcGFuPkVkaXQgRGV0YWlsczwvYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJyb3cgdHJheC1jb25maWdcIiBbY2xhc3MuaXMtcmVhZG9ubHldPVwiaXNEaXNhYmxlZFwiPlxyXG4gIDwhLS0gQXVkaXQgTGFiZWxzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGMtYmxvY2tcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy10aXRsZVwiPkF1ZGl0IExhYmVsczwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRjLWhlbHBcIj5SZW5hbWUgdGhlIHR3byBzY29yaW5nIG91dGNvbWVzLiBUaGVzZSBsYWJlbHMgcmVwbGFjZSBQYXNzIGFuZCBGYWlsIGV2ZXJ5d2hlcmUgaW4gdGhlIEF1ZGl0XHJcbiAgICAgIG1vZHVsZSDigJQgZGFzaGJvYXJkcywgc3RvcmUgbGlzdHMsIGdhbGxlcnkgZmlsdGVycywgcmVwb3J0cyBhbmQgZXhwb3J0cy48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctNCBtdC0xXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsIHRjLWxhYmVsLS1wYXNzXCIgZm9yPVwidHJheFBhc3NMYWJlbFwiPkF0IG9yIGFib3ZlIHRoZSBwYXNzIG1hcms8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhQYXNzTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5wYXNzTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIlBhc3NcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsIHRjLWxhYmVsLS1mYWlsXCIgZm9yPVwidHJheEZhaWxMYWJlbFwiPkJlbG93IHRoZSBwYXNzIG1hcms8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhGYWlsTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5mYWlsTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIkZhaWxcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0Yy1sYWJlbFwiPlByZXZpZXc8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGMtcHJldmlldyB0Yy1wcmV2aWV3LS1jaGlwc1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwIHRjLWNoaXAtLXBhc3NcIiBbdGl0bGVdPVwiKGNvbmZpZy5wYXNzTGFiZWwudHJpbSgpIHx8ICdQYXNzJykgKyAnIOKJpSAnICsgcHJldmlld1Bhc3NNYXJrICsgJyUnXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGMtY2hpcC1uYW1lXCI+e3sgY29uZmlnLnBhc3NMYWJlbC50cmltKCkgfHwgJ1Bhc3MnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRjLWNoaXAtbWFya1wiPuKJpSB7eyBwcmV2aWV3UGFzc01hcmsgfX0lPC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwIHRjLWNoaXAtLWZhaWxcIiBbdGl0bGVdPVwiKGNvbmZpZy5mYWlsTGFiZWwudHJpbSgpIHx8ICdGYWlsJykgKyAnIDwgJyArIHByZXZpZXdQYXNzTWFyayArICclJ1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRjLWNoaXAtbmFtZVwiPnt7IGNvbmZpZy5mYWlsTGFiZWwudHJpbSgpIHx8ICdGYWlsJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwLW1hcmtcIj4mbHQ7IHt7IHByZXZpZXdQYXNzTWFyayB9fSU8L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRjLXByZXNldHMgbXQtNFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRjLXByZXNldHMtbGFiZWxcIj5QcmVzZXRzPC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRjLXByZXNldFwiICpuZ0Zvcj1cImxldCBwIG9mIHByZXNldHNcIiBbY2xhc3MuaXMtb25dPVwiaXNQcmVzZXQocClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgKGNsaWNrKT1cImFwcGx5UHJlc2V0KHApXCI+e3sgcC5wYXNzIH19IC8ge3sgcC5mYWlsIH19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZW1hcmsgRmllbGRzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGMtYmxvY2tcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy10aXRsZVwiPlJlbWFyayBGaWVsZHM8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy1oZWxwXCI+UmVuYW1lIHRoZSB0d28gZnJlZS10ZXh0IGZpZWxkcyBhdWRpdG9ycyBmaWxsIGluIHRoZSBtb2JpbGUgYXBwLiBUaGUgbmFtZXMgYXBwbHkgdG8gdGhlIG1vYmlsZVxyXG4gICAgICBmb3JtLCB0aGUgR2FsbGVyeSwgZXhwb3J0cyBhbmQgQ1NWIGRvd25sb2Fkcy48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctNCBtdC0xXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsXCIgZm9yPVwidHJheFJlbWFya3NMYWJlbFwiPlJlbWFya3MgZmllbGQ8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhSZW1hcmtzTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5yZW1hcmtzTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIlJlbWFya3NcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsXCIgZm9yPVwidHJheEFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcIj5BZGRpdGlvbmFsIFJlbWFya3MgZmllbGQ8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhBZGRpdGlvbmFsUmVtYXJrc0xhYmVsXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjQwXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIHBsYWNlaG9sZGVyPVwiQWRkaXRpb25hbCBSZW1hcmtzXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGMtbGFiZWxcIj5QcmV2aWV3PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRjLXByZXZpZXcgdGMtcHJldmlldy0tdGV4dFwiPlxyXG4gICAgICAgICAgPGRpdj48ZW0+e3sgY29uZmlnLnJlbWFya3NMYWJlbC50cmltKCkgfHwgJ1JlbWFya3MnIH19OjwvZW0+IERvb3IgbWF0dCB3b3JuIG91dCBhdCB0aGUgZWRnZXM8L2Rpdj5cclxuICAgICAgICAgIDxkaXY+PGVtPnt7IGNvbmZpZy5hZGRpdGlvbmFsUmVtYXJrc0xhYmVsLnRyaW0oKSB8fCAnQWRkaXRpb25hbCBSZW1hcmtzJyB9fTo8L2VtPiBSZXBsYWNlZCBvbiAxMiBBdWc8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIiFpc0Rpc2FibGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItNSB3LTEwMCBmb290ZXItc2VwZXJhdG9yXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGEgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG10LTEgbWUtNFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9hPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC00XCIgW2Rpc2FibGVkXT1cIiFjYW5TYXZlXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj5cclxuICAgICAgICA8c3Bhbj57eyBzYXZpbmcgPyAnU2F2aW5n4oCmJyA6ICdTYXZlIENoYW5nZXMnIH19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJheC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbnMvdHJheC1jb25maWd1cmF0aW9uL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL3RyYXgtY29uZmlndXJhdGlvbi90cmF4LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBVzFDLE1BQU0sUUFBUSxHQUFlO0lBQzNCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLHNCQUFzQixFQUFFLG9CQUFvQjtDQUM3QyxDQUFDO0FBRUY7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUFrQmpCO0lBQW1DO0lBakJ2RCxNQUFNLEdBQWUsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQzVCLE9BQU8sR0FBMEM7UUFDeEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7UUFDOUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7UUFDNUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtLQUNqRCxDQUFDO0lBQ0YsK0VBQStFO0lBQ3RFLGVBQWUsR0FB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LENBQUM7WUFDM0ksQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBOUdVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLDhEQzdCdkMsczJJQStFQTs7NEZEbERhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmF4Q29uZmlnIHtcclxuICBwYXNzTGFiZWw6IHN0cmluZztcclxuICBmYWlsTGFiZWw6IHN0cmluZztcclxuICByZW1hcmtzTGFiZWw6IHN0cmluZztcclxuICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRTOiBUcmF4Q29uZmlnID0ge1xyXG4gIHBhc3NMYWJlbDogJ1Bhc3MnLFxyXG4gIGZhaWxMYWJlbDogJ0ZhaWwnLFxyXG4gIHJlbWFya3NMYWJlbDogJ1JlbWFya3MnLFxyXG4gIGFkZGl0aW9uYWxSZW1hcmtzTGFiZWw6ICdBZGRpdGlvbmFsIFJlbWFya3MnXHJcbn07XHJcblxyXG4vKipcclxuICogTWFuYWdlIC0+IFNldHRpbmdzIC0+IFRyYXggQ29uZmlndXJhdGlvbi4gUmVuYW1lcyB0aGUgdHdvIHNjb3Jpbmcgb3V0Y29tZXMgKFBhc3MgLyBGYWlsKVxyXG4gKiBhbmQgdGhlIHR3byBmcmVlLXRleHQgcmVtYXJrIGZpZWxkcyBmb3IgdGhlIHdob2xlIGNsaWVudC4gUmVhZCBhbmQgc2F2ZWQgdGhyb3VnaCB0aGVcclxuICogVHJheCBBUEkgKC90cmF4L2F1ZGl0L3NldHRpbmdzKTsgdGhlIEF1ZGl0IG1vZHVsZSByZWFkcyB0aGUgc2FtZSBkb2N1bWVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRyYXgtY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RyYXgtY29uZmlndXJhdGlvbi5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYXhDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBjb25maWc6IFRyYXhDb25maWcgPSB7IC4uLkRFRkFVTFRTIH07XHJcbiAgcmVhZG9ubHkgcHJlc2V0czogQXJyYXk8eyBwYXNzOiBzdHJpbmc7IGZhaWw6IHN0cmluZyB9PiA9IFtcclxuICAgIHsgcGFzczogJ1Bhc3MnLCBmYWlsOiAnRmFpbCcgfSxcclxuICAgIHsgcGFzczogJ0NvbXBsaWFudCcsIGZhaWw6ICdOb24tQ29tcGxpYW50JyB9LFxyXG4gICAgeyBwYXNzOiAnU2F0aXNmYWN0b3J5JywgZmFpbDogJ1Vuc2F0aXNmYWN0b3J5JyB9XHJcbiAgXTtcclxuICAvKiogUGFzcyBtYXJrIHNob3duIGluIHRoZSBwcmV2aWV3OyBwZXItYXVkaXQgcGFzcyBtYXJrcyBsaXZlIG9uIGVhY2ggYXVkaXQuICovXHJcbiAgcmVhZG9ubHkgcHJldmlld1Bhc3NNYXJrID0gNzU7XHJcblxyXG4gIGNsaWVudElkID0gJyc7XHJcbiAgaXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHNhdmVkOiBUcmF4Q29uZmlnID0geyAuLi5ERUZBVUxUUyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IENsaWVudEFwaVNlcnZpY2UsIHByaXZhdGUgdHM6IFRvYXN0U2VydmljZSkge1xyXG4gICAgdGhpcy5zZXJ2aWNlLmNsaWVudERhdGEucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICBpZiAoZT8uY2xpZW50SWQgJiYgZS5jbGllbnRJZCAhPT0gdGhpcy5jbGllbnRJZCkge1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWQgPSBlLmNsaWVudElkO1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2xpZW50SWQpIHsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldFRyYXhDb25maWcodGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCAmJiByZXM/LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZWQgPSB0aGlzLnBpY2socmVzLmRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5jb25maWcgPSB7IC4uLnRoaXMuc2F2ZWQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwaWNrKHNyYzogYW55KTogVHJheENvbmZpZyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwYXNzTGFiZWw6IHNyYz8ucGFzc0xhYmVsIHx8IERFRkFVTFRTLnBhc3NMYWJlbCxcclxuICAgICAgZmFpbExhYmVsOiBzcmM/LmZhaWxMYWJlbCB8fCBERUZBVUxUUy5mYWlsTGFiZWwsXHJcbiAgICAgIHJlbWFya3NMYWJlbDogc3JjPy5yZW1hcmtzTGFiZWwgfHwgREVGQVVMVFMucmVtYXJrc0xhYmVsLFxyXG4gICAgICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiBzcmM/LmFkZGl0aW9uYWxSZW1hcmtzTGFiZWwgfHwgREVGQVVMVFMuYWRkaXRpb25hbFJlbWFya3NMYWJlbFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSAhdGhpcy5pc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5zYXZlZCB9O1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFwcGx5UHJlc2V0KHA6IHsgcGFzczogc3RyaW5nOyBmYWlsOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuY29uZmlnLnBhc3NMYWJlbCA9IHAucGFzcztcclxuICAgIHRoaXMuY29uZmlnLmZhaWxMYWJlbCA9IHAuZmFpbDtcclxuICB9XHJcblxyXG4gIGlzUHJlc2V0KHA6IHsgcGFzczogc3RyaW5nOyBmYWlsOiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhc3NMYWJlbC50cmltKCkgPT09IHAucGFzcyAmJiB0aGlzLmNvbmZpZy5mYWlsTGFiZWwudHJpbSgpID09PSBwLmZhaWw7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuU2F2ZSgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGMgPSB0aGlzLmNvbmZpZztcclxuICAgIHJldHVybiAhdGhpcy5zYXZpbmcgJiYgW2MucGFzc0xhYmVsLCBjLmZhaWxMYWJlbCwgYy5yZW1hcmtzTGFiZWwsIGMuYWRkaXRpb25hbFJlbWFya3NMYWJlbF1cclxuICAgICAgLmV2ZXJ5KHYgPT4gdi50cmltKCkubGVuZ3RoID4gMCAmJiB2LnRyaW0oKS5sZW5ndGggPD0gNDApO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2FuU2F2ZSB8fCAhdGhpcy5jbGllbnRJZCkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBwYXNzTGFiZWw6IHRoaXMuY29uZmlnLnBhc3NMYWJlbC50cmltKCksXHJcbiAgICAgIGZhaWxMYWJlbDogdGhpcy5jb25maWcuZmFpbExhYmVsLnRyaW0oKSxcclxuICAgICAgcmVtYXJrc0xhYmVsOiB0aGlzLmNvbmZpZy5yZW1hcmtzTGFiZWwudHJpbSgpLFxyXG4gICAgICBhZGRpdGlvbmFsUmVtYXJrc0xhYmVsOiB0aGlzLmNvbmZpZy5hZGRpdGlvbmFsUmVtYXJrc0xhYmVsLnRyaW0oKVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2VydmljZS5zYXZlVHJheENvbmZpZyhwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzPy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZWQgPSB0aGlzLnBpY2socmVzLmRhdGEgfHwgcGF5bG9hZCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5zYXZlZCB9O1xyXG4gICAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KCdUcmF4IGNvbmZpZ3VyYXRpb24gc2F2ZWQnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KHJlcz8ubWVzc2FnZSB8fCAnQ291bGQgbm90IHNhdmUgdGhlIFRyYXggY29uZmlndXJhdGlvbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8uZXJyb3I/LmVycm9yIHx8IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ0NvdWxkIG5vdCBzYXZlIHRoZSBUcmF4IGNvbmZpZ3VyYXRpb24nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZUZvcm0oKVwiICpuZ0lmPVwiaXNEaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBhbGlnbi1pdGVtcy1lbmRcIj48c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTE0LjE2NyAyLjVhMi4zNTcgMi4zNTcgMCAxIDEgMy4zMzMgMy4zMzNMNi4yNSAxNy4wODMgMi41IDE3LjVsLjQxNy0zLjc1TDE0LjE2NyAyLjVaXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgPC9zdmc+PC9zcGFuPkVkaXQgRGV0YWlsczwvYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJyb3cgdHJheC1jb25maWdcIiBbY2xhc3MuaXMtcmVhZG9ubHldPVwiaXNEaXNhYmxlZFwiPlxyXG4gIDwhLS0gQXVkaXQgTGFiZWxzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGMtYmxvY2tcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy10aXRsZVwiPkF1ZGl0IExhYmVsczwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRjLWhlbHBcIj5SZW5hbWUgdGhlIHR3byBzY29yaW5nIG91dGNvbWVzLiBUaGVzZSBsYWJlbHMgcmVwbGFjZSBQYXNzIGFuZCBGYWlsIGV2ZXJ5d2hlcmUgaW4gdGhlIEF1ZGl0XHJcbiAgICAgIG1vZHVsZSDigJQgZGFzaGJvYXJkcywgc3RvcmUgbGlzdHMsIGdhbGxlcnkgZmlsdGVycywgcmVwb3J0cyBhbmQgZXhwb3J0cy48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctNCBtdC0xXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsIHRjLWxhYmVsLS1wYXNzXCIgZm9yPVwidHJheFBhc3NMYWJlbFwiPkF0IG9yIGFib3ZlIHRoZSBwYXNzIG1hcms8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhQYXNzTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5wYXNzTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIlBhc3NcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsIHRjLWxhYmVsLS1mYWlsXCIgZm9yPVwidHJheEZhaWxMYWJlbFwiPkJlbG93IHRoZSBwYXNzIG1hcms8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhGYWlsTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5mYWlsTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIkZhaWxcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0Yy1sYWJlbFwiPlByZXZpZXc8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGMtcHJldmlldyB0Yy1wcmV2aWV3LS1jaGlwc1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwIHRjLWNoaXAtLXBhc3NcIiBbdGl0bGVdPVwiKGNvbmZpZy5wYXNzTGFiZWwudHJpbSgpIHx8ICdQYXNzJykgKyAnIOKJpSAnICsgcHJldmlld1Bhc3NNYXJrICsgJyUnXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGMtY2hpcC1uYW1lXCI+e3sgY29uZmlnLnBhc3NMYWJlbC50cmltKCkgfHwgJ1Bhc3MnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRjLWNoaXAtbWFya1wiPuKJpSB7eyBwcmV2aWV3UGFzc01hcmsgfX0lPC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwIHRjLWNoaXAtLWZhaWxcIiBbdGl0bGVdPVwiKGNvbmZpZy5mYWlsTGFiZWwudHJpbSgpIHx8ICdGYWlsJykgKyAnIDwgJyArIHByZXZpZXdQYXNzTWFyayArICclJ1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRjLWNoaXAtbmFtZVwiPnt7IGNvbmZpZy5mYWlsTGFiZWwudHJpbSgpIHx8ICdGYWlsJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Yy1jaGlwLW1hcmtcIj4mbHQ7IHt7IHByZXZpZXdQYXNzTWFyayB9fSU8L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRjLXByZXNldHMgbXQtNFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRjLXByZXNldHMtbGFiZWxcIj5QcmVzZXRzPC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRjLXByZXNldFwiICpuZ0Zvcj1cImxldCBwIG9mIHByZXNldHNcIiBbY2xhc3MuaXMtb25dPVwiaXNQcmVzZXQocClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgKGNsaWNrKT1cImFwcGx5UHJlc2V0KHApXCI+e3sgcC5wYXNzIH19IC8ge3sgcC5mYWlsIH19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBSZW1hcmsgRmllbGRzIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgdGMtYmxvY2tcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy10aXRsZVwiPlJlbWFyayBGaWVsZHM8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0Yy1oZWxwXCI+UmVuYW1lIHRoZSB0d28gZnJlZS10ZXh0IGZpZWxkcyBhdWRpdG9ycyBmaWxsIGluIHRoZSBtb2JpbGUgYXBwLiBUaGUgbmFtZXMgYXBwbHkgdG8gdGhlIG1vYmlsZVxyXG4gICAgICBmb3JtLCB0aGUgR2FsbGVyeSwgZXhwb3J0cyBhbmQgQ1NWIGRvd25sb2Fkcy48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGctNCBtdC0xXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsXCIgZm9yPVwidHJheFJlbWFya3NMYWJlbFwiPlJlbWFya3MgZmllbGQ8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhSZW1hcmtzTGFiZWxcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNDBcIiBbKG5nTW9kZWwpXT1cImNvbmZpZy5yZW1hcmtzTGFiZWxcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBwbGFjZWhvbGRlcj1cIlJlbWFya3NcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRjLWxhYmVsXCIgZm9yPVwidHJheEFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcIj5BZGRpdGlvbmFsIFJlbWFya3MgZmllbGQ8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInRyYXhBZGRpdGlvbmFsUmVtYXJrc0xhYmVsXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjQwXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmFkZGl0aW9uYWxSZW1hcmtzTGFiZWxcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIHBsYWNlaG9sZGVyPVwiQWRkaXRpb25hbCBSZW1hcmtzXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCIhaXNEaXNhYmxlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTUgdy0xMDAgZm9vdGVyLXNlcGVyYXRvclwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxhIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtdC0xIG1lLTRcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYT5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNFwiIFtkaXNhYmxlZF09XCIhY2FuU2F2ZVwiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICAgICAgPHNwYW4+e3sgc2F2aW5nID8gJ1NhdmluZ+KApicgOiAnU2F2ZSBDaGFuZ2VzJyB9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -12020,11 +12020,11 @@ class TraxConfigurationComponent {
12020
12020
  });
12021
12021
  }
12022
12022
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxConfigurationComponent, deps: [{ token: ClientApiService }, { token: i4.ToastService }], target: i0.ɵɵFactoryTarget.Component });
12023
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxConfigurationComponent, selector: "lib-trax-configuration", ngImport: i0, template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--chips\">\r\n <span class=\"tc-chip tc-chip--pass\" [title]=\"(config.passLabel.trim() || 'Pass') + ' \u2265 ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.passLabel.trim() || 'Pass' }}</span>\r\n <span class=\"tc-chip-mark\">\u2265 {{ previewPassMark }}%</span>\r\n </span>\r\n <span class=\"tc-chip tc-chip--fail\" [title]=\"(config.failLabel.trim() || 'Fail') + ' < ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.failLabel.trim() || 'Fail' }}</span>\r\n <span class=\"tc-chip-mark\">&lt; {{ previewPassMark }}%</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--text\">\r\n <div><em>{{ config.remarksLabel.trim() || 'Remarks' }}:</em> Door matt worn out at the edges</div>\r\n <div><em>{{ config.additionalRemarksLabel.trim() || 'Additional Remarks' }}:</em> Replaced on 12 Aug</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-preview{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.trax-config .tc-preview--chips{flex-wrap:nowrap;height:44px;padding:0 8px;border-radius:8px;background:#f9fafb}.trax-config .tc-preview--text{display:block;padding:10px 12px;border-radius:8px;background:#f9fafb;color:#344054;font-size:14px;line-height:22px}.trax-config .tc-preview--text em{font-style:italic}.trax-config .tc-chip{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;min-width:0;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}.trax-config .tc-chip--pass{background:#ecfdf3;color:#027a48}.trax-config .tc-chip--fail{background:#fef3f2;color:#b42318}.trax-config .tc-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.trax-config .tc-chip-mark{flex-shrink:0}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
12023
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxConfigurationComponent, selector: "lib-trax-configuration", ngImport: i0, template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--chips\">\r\n <span class=\"tc-chip tc-chip--pass\" [title]=\"(config.passLabel.trim() || 'Pass') + ' \u2265 ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.passLabel.trim() || 'Pass' }}</span>\r\n <span class=\"tc-chip-mark\">\u2265 {{ previewPassMark }}%</span>\r\n </span>\r\n <span class=\"tc-chip tc-chip--fail\" [title]=\"(config.failLabel.trim() || 'Fail') + ' < ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.failLabel.trim() || 'Fail' }}</span>\r\n <span class=\"tc-chip-mark\">&lt; {{ previewPassMark }}%</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-preview{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.trax-config .tc-preview--chips{flex-wrap:nowrap;height:44px;padding:0 8px;border-radius:8px;background:#f9fafb}.trax-config .tc-chip{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;min-width:0;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}.trax-config .tc-chip--pass{background:#ecfdf3;color:#027a48}.trax-config .tc-chip--fail{background:#fef3f2;color:#b42318}.trax-config .tc-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.trax-config .tc-chip-mark{flex-shrink:0}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
12024
12024
  }
12025
12025
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxConfigurationComponent, decorators: [{
12026
12026
  type: Component,
12027
- args: [{ selector: 'lib-trax-configuration', template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--chips\">\r\n <span class=\"tc-chip tc-chip--pass\" [title]=\"(config.passLabel.trim() || 'Pass') + ' \u2265 ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.passLabel.trim() || 'Pass' }}</span>\r\n <span class=\"tc-chip-mark\">\u2265 {{ previewPassMark }}%</span>\r\n </span>\r\n <span class=\"tc-chip tc-chip--fail\" [title]=\"(config.failLabel.trim() || 'Fail') + ' < ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.failLabel.trim() || 'Fail' }}</span>\r\n <span class=\"tc-chip-mark\">&lt; {{ previewPassMark }}%</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--text\">\r\n <div><em>{{ config.remarksLabel.trim() || 'Remarks' }}:</em> Door matt worn out at the edges</div>\r\n <div><em>{{ config.additionalRemarksLabel.trim() || 'Additional Remarks' }}:</em> Replaced on 12 Aug</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-preview{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.trax-config .tc-preview--chips{flex-wrap:nowrap;height:44px;padding:0 8px;border-radius:8px;background:#f9fafb}.trax-config .tc-preview--text{display:block;padding:10px 12px;border-radius:8px;background:#f9fafb;color:#344054;font-size:14px;line-height:22px}.trax-config .tc-preview--text em{font-style:italic}.trax-config .tc-chip{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;min-width:0;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}.trax-config .tc-chip--pass{background:#ecfdf3;color:#027a48}.trax-config .tc-chip--fail{background:#fef3f2;color:#b42318}.trax-config .tc-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.trax-config .tc-chip-mark{flex-shrink:0}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"] }]
12027
+ args: [{ selector: 'lib-trax-configuration', template: "<div class=\"d-flex justify-content-end\">\r\n <button (click)=\"toggleForm()\" *ngIf=\"isDisabled\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M14.167 2.5a2.357 2.357 0 1 1 3.333 3.333L6.25 17.083 2.5 17.5l.417-3.75L14.167 2.5Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Edit Details</button>\r\n</div>\r\n\r\n<div class=\"row trax-config\" [class.is-readonly]=\"isDisabled\">\r\n <!-- Audit Labels -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Audit Labels</div>\r\n <div class=\"tc-help\">Rename the two scoring outcomes. These labels replace Pass and Fail everywhere in the Audit\r\n module \u2014 dashboards, store lists, gallery filters, reports and exports.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--pass\" for=\"traxPassLabel\">At or above the pass mark</label>\r\n <input id=\"traxPassLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.passLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Pass\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label tc-label--fail\" for=\"traxFailLabel\">Below the pass mark</label>\r\n <input id=\"traxFailLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.failLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Fail\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"tc-label\">Preview</div>\r\n <div class=\"tc-preview tc-preview--chips\">\r\n <span class=\"tc-chip tc-chip--pass\" [title]=\"(config.passLabel.trim() || 'Pass') + ' \u2265 ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.passLabel.trim() || 'Pass' }}</span>\r\n <span class=\"tc-chip-mark\">\u2265 {{ previewPassMark }}%</span>\r\n </span>\r\n <span class=\"tc-chip tc-chip--fail\" [title]=\"(config.failLabel.trim() || 'Fail') + ' < ' + previewPassMark + '%'\">\r\n <span class=\"tc-chip-name\">{{ config.failLabel.trim() || 'Fail' }}</span>\r\n <span class=\"tc-chip-mark\">&lt; {{ previewPassMark }}%</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tc-presets mt-4\">\r\n <span class=\"tc-presets-label\">Presets</span>\r\n <button type=\"button\" class=\"tc-preset\" *ngFor=\"let p of presets\" [class.is-on]=\"isPreset(p)\"\r\n [disabled]=\"isDisabled\" (click)=\"applyPreset(p)\">{{ p.pass }} / {{ p.fail }}</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Remark Fields -->\r\n <div class=\"col-12 tc-block\">\r\n <div class=\"tc-title\">Remark Fields</div>\r\n <div class=\"tc-help\">Rename the two free-text fields auditors fill in the mobile app. The names apply to the mobile\r\n form, the Gallery, exports and CSV downloads.</div>\r\n\r\n <div class=\"row g-4 mt-1\">\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxRemarksLabel\">Remarks field</label>\r\n <input id=\"traxRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\" [(ngModel)]=\"config.remarksLabel\"\r\n [disabled]=\"isDisabled\" placeholder=\"Remarks\">\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"tc-label\" for=\"traxAdditionalRemarksLabel\">Additional Remarks field</label>\r\n <input id=\"traxAdditionalRemarksLabel\" type=\"text\" class=\"form-control\" maxlength=\"40\"\r\n [(ngModel)]=\"config.additionalRemarksLabel\" [disabled]=\"isDisabled\" placeholder=\"Additional Remarks\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isDisabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <button type=\"button\" class=\"btn btn-primary px-4\" [disabled]=\"!canSave\" (click)=\"onSubmit()\">\r\n <span>{{ saving ? 'Saving\u2026' : 'Save Changes' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".trax-config .tc-block{margin-top:20px;margin-bottom:8px}.trax-config .tc-block+.tc-block{margin-top:36px}.trax-config .tc-title{color:#101828;font-size:16px;font-weight:600;line-height:24px}.trax-config .tc-help{color:#667085;font-size:14px;line-height:20px;margin-top:4px;max-width:760px}.trax-config .tc-label{display:block;color:#344054;font-size:14px;font-weight:500;line-height:20px;margin-bottom:6px}.trax-config .tc-label--pass{color:#027a48}.trax-config .tc-label--fail{color:#b42318}.trax-config .form-control{min-height:44px;border-radius:8px}.trax-config .tc-preview{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.trax-config .tc-preview--chips{flex-wrap:nowrap;height:44px;padding:0 8px;border-radius:8px;background:#f9fafb}.trax-config .tc-chip{display:inline-flex;align-items:center;gap:4px;flex:0 1 auto;min-width:0;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}.trax-config .tc-chip--pass{background:#ecfdf3;color:#027a48}.trax-config .tc-chip--fail{background:#fef3f2;color:#b42318}.trax-config .tc-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.trax-config .tc-chip-mark{flex-shrink:0}.trax-config .tc-presets{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.trax-config .tc-presets-label{color:#667085;font-size:14px}.trax-config .tc-preset{padding:8px 16px;border-radius:999px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-size:14px;font-weight:500;line-height:20px;cursor:pointer}.trax-config .tc-preset.is-on{border-color:#b2ddff;background:#eff8ff;color:#175cd3}.trax-config .tc-preset:disabled{cursor:default;opacity:.7}.trax-config.is-readonly .form-control:disabled{background:#f9fafb;color:#344054}.trax-config .footer-seperator{border-top:1px solid #EAECF0}\n"] }]
12028
12028
  }], ctorParameters: () => [{ type: ClientApiService }, { type: i4.ToastService }] });
12029
12029
 
12030
12030
  class ConfigurationsComponent {