@sebgroup/green-angular 1.7.2 → 1.8.1

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.
@@ -128,7 +128,7 @@ NggDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
128
128
  useExisting: NggDatepickerComponent,
129
129
  multi: true,
130
130
  },
131
- ], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n (blur)=\"blurInput()\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n (focusout)=\"focusoutDialog($event)\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">\n <i></i>Close\n </button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "texts", "loop", "display", "useValue", "label", "options", "valid", "invalid", "compareWith", "searchFilter", "multiSelect", "searchable", "value"], outputs: ["valueChange", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
131
+ ], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n (blur)=\"blurInput()\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n (focusout)=\"focusoutDialog($event)\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">\n <i></i>Close\n </button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "texts", "loop", "display", "useValue", "label", "options", "valid", "invalid", "compareWith", "searchFilter", "fixedPlacement", "multiSelect", "searchable", "value"], outputs: ["valueChange", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
132
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggDatepickerComponent, decorators: [{
133
133
  type: Component,
134
134
  args: [{ selector: 'ngg-datepicker', providers: [
@@ -57,7 +57,7 @@ export class NggDropdownComponent {
57
57
  this.cd.detectChanges();
58
58
  }, (value) => {
59
59
  this.updateValue(value);
60
- });
60
+ }, this.fixedPlacement);
61
61
  }
62
62
  }
63
63
  ngOnDestroy() {
@@ -111,7 +111,7 @@ export class NggDropdownComponent {
111
111
  }
112
112
  }
113
113
  NggDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: Injector }], target: i0.ɵɵFactoryTarget.Component });
114
- NggDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: { id: "id", texts: "texts", loop: "loop", display: "display", useValue: "useValue", label: "label", options: "options", valid: "valid", invalid: "invalid", compareWith: "compareWith", searchFilter: "searchFilter", multiSelect: "multiSelect", searchable: "searchable", value: "value" }, outputs: { valueChange: "valueChange", touched: "touched" }, providers: [
114
+ NggDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: { id: "id", texts: "texts", loop: "loop", display: "display", useValue: "useValue", label: "label", options: "options", valid: "valid", invalid: "invalid", compareWith: "compareWith", searchFilter: "searchFilter", fixedPlacement: "fixedPlacement", multiSelect: "multiSelect", searchable: "searchable", value: "value" }, outputs: { valueChange: "valueChange", touched: "touched" }, providers: [
115
115
  {
116
116
  provide: NG_VALUE_ACCESSOR,
117
117
  useExisting: NggDropdownComponent,
@@ -152,6 +152,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
152
152
  type: Input
153
153
  }], searchFilter: [{
154
154
  type: Input
155
+ }], fixedPlacement: [{
156
+ type: Input
155
157
  }], multiSelect: [{
156
158
  type: Input
157
159
  }], searchable: [{
@@ -178,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
178
180
  type: ContentChild,
179
181
  args: [NggDropdownButtonDirective]
180
182
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBR0wsY0FBYyxFQU1kLGNBQWMsR0FHZixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFBOzs7QUFjeEUsTUFBTSxPQUFPLG9CQUFvQjtJQXVFL0IsWUFDVSxFQUFxQixFQUNILFFBQWtCO1FBRHBDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ0gsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXBFckMsU0FBSSxHQUFhLEtBQUssQ0FBQTtRQUl0QixZQUFPLEdBQXFCLEVBQUUsQ0FBQTtRQVkvQixpQkFBWSxHQUFHLEtBQUssQ0FBQTtRQVFwQixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQWVSLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUE7UUFDeEQsWUFBTyxHQUN4QixJQUFJLFlBQVksRUFBVyxDQUFBO1FBaUI3QixZQUFPLEdBQTJCLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7UUFDcEUsWUFBTyxHQUEyQixjQUFjLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFBO1FBQ3BFLGFBQVEsR0FBMkIsY0FBYyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQTtRQXlEdEUsZUFBVSxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQTZCLEVBQVUsRUFBRTtZQUNwRSxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUE7SUFsREUsQ0FBQztJQTNESixJQUFhLFdBQVcsQ0FBQyxLQUF1QjtRQUM5QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFBO0lBQzFCLENBQUM7SUFHRCxJQUFhLFVBQVUsQ0FBQyxLQUF1QjtRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFBO0lBQ3pCLENBQUM7SUFHRCxJQUFhLEtBQUssQ0FBQyxRQUFhO1FBQzlCLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFBO0lBQ3hCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQUdELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBeUJELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckMsQ0FBQztJQU9ELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUMzQixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFDN0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQy9CLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUE7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUE7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUE7Z0JBQzFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDekIsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN6QixDQUFDLENBQ0YsQ0FBQTtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxJQUFJLENBQUMsT0FBTztZQUNaLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUNoRTtZQUNBLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNoQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBaUI7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQU1ELE1BQU0sQ0FBQyxNQUFhO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFFLE1BQU0sQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxJQUFZLEtBQUs7UUFDZixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUE7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFBO1lBQ3hCLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxNQUFXO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBdUI7UUFDOUMsT0FBTyxDQUNMLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FDekUsQ0FBQTtJQUNILENBQUM7O2lIQWpLVSxvQkFBb0IsbURBeUVyQixRQUFRO3FHQXpFUCxvQkFBb0IsMFlBVHBCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLG9FQXVEYSwwQkFBMEIsK0VBRzFCLDBCQUEwQix1V0N6RzFDLGc0SkFxSkE7MkZEbkdhLG9CQUFvQjtrQkFaaEMsU0FBUzsrQkFDRSxjQUFjLGFBRWI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxzQkFBc0I7NEJBQ2pDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkEyRTVDLE1BQU07MkJBQUMsUUFBUTs0Q0F0RVQsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFTyxXQUFXO3NCQUF2QixLQUFLO2dCQVFPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBUU8sS0FBSztzQkFBakIsS0FBSztnQkFhYSxXQUFXO3NCQUE3QixNQUFNO2dCQUNZLE9BQU87c0JBQXpCLE1BQU07Z0JBR3lCLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDUyxVQUFVO3NCQUF6QyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ1UsV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxhQUFhO2dCQUd4QixZQUFZO3NCQURYLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUl4QyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5nQ29udHJvbCxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHtcbiAgQWJzdHJhY3REcm9wZG93bixcbiAgQ29tcGFyZVdpdGgsXG4gIGNyZWF0ZURyb3Bkb3duLFxuICBEcm9wZG93bkFyZ3MsXG4gIERyb3Bkb3duSGFuZGxlcixcbiAgRHJvcGRvd25PcHRpb24sXG4gIERyb3Bkb3duT3B0aW9uRWxlbWVudCxcbiAgRHJvcGRvd25UZXh0cyxcbiAgZHJvcGRvd25WYWx1ZXMsXG4gIEVsZW1lbnRQcm9wcyxcbiAgU2VhcmNoRmlsdGVyLFxufSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCdcbmltcG9ydCB7IE5nZ0Ryb3Bkb3duT3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wZG93bi1vcHRpb24uZGlyZWN0aXZlJ1xuaW1wb3J0IHsgTmdnRHJvcGRvd25CdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3Bkb3duLWJ1dHRvbi5kaXJlY3RpdmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZy1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ2dEcm9wZG93bkNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dEcm9wZG93bkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBpZD86IHN0cmluZ1xuICBASW5wdXQoKSB0ZXh0cz86IERyb3Bkb3duVGV4dHNcbiAgQElucHV0KCkgbG9vcD86IGJvb2xlYW4gPSBmYWxzZVxuICBASW5wdXQoKSBkaXNwbGF5Pzogc3RyaW5nXG4gIEBJbnB1dCgpIHVzZVZhbHVlPzogc3RyaW5nXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXVxuICBASW5wdXQoKSB2YWxpZD86IGJvb2xlYW5cbiAgQElucHV0KCkgaW52YWxpZD86IGJvb2xlYW5cbiAgQElucHV0KCkgY29tcGFyZVdpdGg/OiBDb21wYXJlV2l0aFxuICBASW5wdXQoKSBzZWFyY2hGaWx0ZXI/OiBTZWFyY2hGaWx0ZXJcblxuICBASW5wdXQoKSBzZXQgbXVsdGlTZWxlY3QodmFsdWU6IHN0cmluZyB8IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aVNlbGVjdCA9IHRoaXMuY29udmVydFRvQm9vbGVhbih2YWx1ZSlcbiAgfVxuICBnZXQgbXVsdGlTZWxlY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpU2VsZWN0XG4gIH1cbiAgcHJpdmF0ZSBfbXVsdGlTZWxlY3QgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHNldCBzZWFyY2hhYmxlKHZhbHVlOiBzdHJpbmcgfCBib29sZWFuKSB7XG4gICAgdGhpcy5fc2VhcmNoYWJsZSA9IHRoaXMuY29udmVydFRvQm9vbGVhbih2YWx1ZSlcbiAgfVxuICBnZXQgc2VhcmNoYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoYWJsZVxuICB9XG4gIHByaXZhdGUgX3NlYXJjaGFibGUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYW5kbGVyPy5zZWxlY3RCeVZhbHVlKG5ld1ZhbHVlKVxuICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWVcbiAgfVxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogYW55XG5cbiAgZ2V0IHNlbGVjdGVkT3B0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXI/LmRyb3Bkb3duLm9wdGlvbnMuZmluZCgobykgPT4gby5zZWxlY3RlZClcbiAgfVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdG91Y2hlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcblxuICBAVmlld0NoaWxkKCd0b2dnbGVyUmVmJykgcHVibGljIHRvZ2dsZXJSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICBAVmlld0NoaWxkKCdsaXN0Ym94UmVmJykgcHVibGljIGxpc3Rib3hSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICBAVmlld0NoaWxkKCdmaWVsZHNldFJlZicpIHB1YmxpYyBmaWVsZHNldFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG5cbiAgQENvbnRlbnRDaGlsZChOZ2dEcm9wZG93bk9wdGlvbkRpcmVjdGl2ZSlcbiAgY3VzdG9tT3B0aW9uPzogTmdnRHJvcGRvd25PcHRpb25EaXJlY3RpdmVcblxuICBAQ29udGVudENoaWxkKE5nZ0Ryb3Bkb3duQnV0dG9uRGlyZWN0aXZlKVxuICBjdXN0b21CdXR0b24/OiBOZ2dEcm9wZG93bkJ1dHRvbkRpcmVjdGl2ZVxuXG4gIG9uQ2hhbmdlRm4/OiAodmFsdWU6IHVua25vd24pID0+IHZvaWRcbiAgb25Ub3VjaGVkRm4/OiAoKSA9PiB2b2lkXG5cbiAgZHJvcGRvd24/OiBBYnN0cmFjdERyb3Bkb3duXG4gIGhhbmRsZXI/OiBEcm9wZG93bkhhbmRsZXJcbiAgdG9nZ2xlcj86IFBhcnRpYWw8RWxlbWVudFByb3BzPiA9IGRyb3Bkb3duVmFsdWVzKCkuZWxlbWVudHM/LnRvZ2dsZXJcbiAgbGlzdGJveD86IFBhcnRpYWw8RWxlbWVudFByb3BzPiA9IGRyb3Bkb3duVmFsdWVzKCkuZWxlbWVudHM/Lmxpc3Rib3hcbiAgZmllbGRzZXQ/OiBQYXJ0aWFsPEVsZW1lbnRQcm9wcz4gPSBkcm9wZG93blZhbHVlcygpLmVsZW1lbnRzPy5maWVsZHNldFxuXG4gIGdldCBjb250cm9sKCk6IE5nQ29udHJvbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbClcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9nZ2xlclJlZj8ubmF0aXZlRWxlbWVudCAmJiB0aGlzLmxpc3Rib3hSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaGFuZGxlciA9IGNyZWF0ZURyb3Bkb3duKFxuICAgICAgICB0aGlzLnByb3BzLFxuICAgICAgICB0aGlzLnRvZ2dsZXJSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5saXN0Ym94UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuZmllbGRzZXRSZWY/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIChkcm9wZG93bikgPT4ge1xuICAgICAgICAgIHRoaXMuZHJvcGRvd24gPSBkcm9wZG93blxuICAgICAgICAgIHRoaXMudG9nZ2xlciA9IGRyb3Bkb3duLmVsZW1lbnRzLnRvZ2dsZXJcbiAgICAgICAgICB0aGlzLmxpc3Rib3ggPSBkcm9wZG93bi5lbGVtZW50cy5saXN0Ym94XG4gICAgICAgICAgdGhpcy5maWVsZHNldCA9IGRyb3Bkb3duLmVsZW1lbnRzLmZpZWxkc2V0XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgfSxcbiAgICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlcj8uZGVzdHJveSgpXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5oYW5kbGVyICYmXG4gICAgICAoY2hhbmdlcy5pZCB8fCBjaGFuZ2VzLnRleHRzIHx8IGNoYW5nZXMubG9vcCB8fCBjaGFuZ2VzLm9wdGlvbnMpXG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZXIudXBkYXRlKHRoaXMucHJvcHMpXG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoKSA9PiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuXG4gIH1cblxuICB0cmFja0J5S2V5ID0gKGluZGV4OiBudW1iZXIsIG9wdGlvbjogRHJvcGRvd25PcHRpb25FbGVtZW50KTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gb3B0aW9uLmF0dHJpYnV0ZXMuaWQgPz8gJydcbiAgfVxuXG4gIHNlYXJjaCgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVyPy5zZWFyY2goKCRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpXG4gIH1cblxuICBwcml2YXRlIGdldCBwcm9wcygpOiBEcm9wZG93bkFyZ3Mge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCB8fCB0aGlzLmRyb3Bkb3duPy5pZCxcbiAgICAgIHRleHRzOiB0aGlzLnRleHRzLFxuICAgICAgdXNlVmFsdWU6IHRoaXMudXNlVmFsdWUsXG4gICAgICBkaXNwbGF5OiB0aGlzLmRpc3BsYXksXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgICBsb29wOiB0aGlzLmxvb3AsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIG11bHRpU2VsZWN0OiB0aGlzLm11bHRpU2VsZWN0LFxuICAgICAgc2VhcmNoYWJsZTogdGhpcy5zZWFyY2hhYmxlLFxuICAgICAgc2VhcmNoRmlsdGVyOiB0aGlzLnNlYXJjaEZpbHRlcixcbiAgICAgIGNvbXBhcmVXaXRoOiB0aGlzLmNvbXBhcmVXaXRoLFxuICAgICAgb25Ub3VjaGVkOiAoKSA9PiB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4/LigpXG4gICAgICAgIHRoaXMudG91Y2hlZC5lbWl0KHRydWUpXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKClcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZShvcHRpb246IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gb3B0aW9uXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG9wdGlvbilcbiAgICB0aGlzLm9uQ2hhbmdlRm4/LihvcHRpb24pXG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUb0Jvb2xlYW4odmFsdWU6IHN0cmluZyB8IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSAndHJ1ZScgfHwgdmFsdWUudG9TdHJpbmcoKSA9PT0gJ3RydWUnIHx8IGZhbHNlXG4gICAgKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgKm5nSWY9XCJsYWJlbFwiIFtpZF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5pZCArICdfbGFiZWwnXCI+e3tcbiAgICBsYWJlbFxuICB9fTwvc3Bhbj5cbiAgPGJ1dHRvblxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbCA/IHRvZ2dsZXI/LmF0dHJpYnV0ZXM/LmlkICsgJ19sYWJlbCcgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIlxuICAgICAgZm9ybUluZm8/LnRleHRDb250ZW50ICYmIChmb3JtSW5mbz8udGV4dENvbnRlbnQ/Lmxlbmd0aCA/PyAwID4gMClcbiAgICAgICAgPyB0b2dnbGVyPy5hdHRyaWJ1dGVzPy5pZCArICdfaW5mbydcbiAgICAgICAgOiBudWxsXG4gICAgXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICN0b2dnbGVyUmVmXG4gICAgW2lkXT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LmlkXCJcbiAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LlsnYXJpYS1oYXNwb3B1cCddXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LlsnYXJpYS1leHBhbmRlZCddXCJcbiAgICBbYXR0ci5hcmlhLW93bnNdPVwidG9nZ2xlcj8uYXR0cmlidXRlcz8uWydhcmlhLW93bnMnXVwiXG4gICAgW3RhYmluZGV4XT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LnRhYkluZGV4XCJcbiAgICBbc3R5bGVdPVwidG9nZ2xlcj8uYXR0cmlidXRlcz8uc3R5bGVcIlxuICAgIFtjbGFzc109XCJ0b2dnbGVyPy5jbGFzc2VzXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlcj8udG9nZ2xlKClcIlxuICAgIFtjbGFzcy5pcy12YWxpZF09XCJ2YWxpZFwiXG4gICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBjdXN0b21CdXR0b24/LnRlbXBsYXRlUmVmICYmICFtdWx0aVNlbGVjdCAmJiBzZWxlY3RlZE9wdGlvblxuICAgICAgICAgID8gY3VzdG9tQnV0dG9uIS50ZW1wbGF0ZVJlZlxuICAgICAgICAgIDogZGVmYXVsdEJ1dHRvbjtcbiAgICAgICAgY29udGV4dDogeyBvcHRpb246IHNlbGVjdGVkT3B0aW9uIH1cbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImZvcm0taW5mb1wiXG4gICAgI2Zvcm1JbmZvXG4gICAgW2F0dHIuaWRdPVwidG9nZ2xlcj8uYXR0cmlidXRlcz8uaWQgKyAnX2luZm8nXCJcbiAgICA+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RhdGEtZm9ybS1pbmZvXVwiPjwvbmctY29udGVudFxuICA+PC9zcGFuPlxuICA8ZGl2XG4gICAgI2xpc3Rib3hSZWZcbiAgICBbaWRdPVwibGlzdGJveD8uYXR0cmlidXRlcz8uaWRcIlxuICAgIFthdHRyLnJvbGVdPVwibGlzdGJveD8uYXR0cmlidXRlcz8ucm9sZVwiXG4gICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIlxuICAgICAgICBsaXN0Ym94Py5hdHRyaWJ1dGVzPy5bJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCddXG4gICAgICBcIlxuICAgIFt0YWJpbmRleF09XCJsaXN0Ym94Py5hdHRyaWJ1dGVzPy50YWJJbmRleFwiXG4gICAgW3N0eWxlXT1cImxpc3Rib3g/LmF0dHJpYnV0ZXM/LnN0eWxlXCJcbiAgICBbY2xhc3NdPVwibGlzdGJveD8uY2xhc3Nlc1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGQtc20tbm9uZSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1ncm93LTEgcHMtNCBmcy0yIGZ3LWJvbGRlclwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJjbG9zZSBtLTQgbS1zbS0yIGQtYmxvY2sgZC1zbS1ub25lXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkcm9wZG93bj8udGV4dHM/LmNsb3NlXCJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZXI/LmNsb3NlKClcIlxuICAgICAgPlxuICAgICAgICA8aT48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8dWwgcm9sZT1cImxpc3Rib3hcIiAqbmdJZj1cIiFkcm9wZG93bj8uaXNNdWx0aVNlbGVjdFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaElucHV0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bGlcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IG9wdGlvbiBvZiBkcm9wZG93bj8ub3B0aW9ucztcbiAgICAgICAgICBsZXQgaW5kZXggPSBpbmRleDtcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5S2V5XG4gICAgICAgIFwiXG4gICAgICAgIFtpZF09XCJvcHRpb24uYXR0cmlidXRlcy5pZFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwib3B0aW9uLmF0dHJpYnV0ZXMucm9sZVwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwib3B0aW9uLmF0dHJpYnV0ZXNbJ2FyaWEtc2VsZWN0ZWQnXVwiXG4gICAgICAgIFtzdHlsZV09XCJvcHRpb24uYXR0cmlidXRlcy5zdHlsZVwiXG4gICAgICAgIFtjbGFzc109XCJvcHRpb24uY2xhc3Nlc1wiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVyPy5zZWxlY3Qob3B0aW9uKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgY3VzdG9tT3B0aW9uPy50ZW1wbGF0ZVJlZlxuICAgICAgICAgICAgICA/IGN1c3RvbU9wdGlvbiEudGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgOiBkZWZhdWx0T3B0aW9uO1xuICAgICAgICAgICAgY29udGV4dDogeyBvcHRpb246IG9wdGlvbiwgaW5kZXg6IGluZGV4IH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPGRpdiAqbmdJZj1cImRyb3Bkb3duPy5pc011bHRpU2VsZWN0XCIgY2xhc3M9XCJzZy1maWVsZHNldC1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hJbnB1dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLVRPRE86IEltcHJvdmUgY2hlY2tib3hlcyBpbiBkcm9wZG93biBhbmd1bGFyLS0+XG4gICAgICA8ZmllbGRzZXRcbiAgICAgICAgI2ZpZWxkc2V0UmVmXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZmllbGRzZXQ/LmF0dHJpYnV0ZXM/LmlkXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICB0YWJJbmRleD1cIi0xXCJcbiAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPGxlZ2VuZCBjbGFzcz1cInNyLW9ubHlcIiBbaWRdPVwiZmllbGRzZXQ/LmF0dHJpYnV0ZXM/LmlkXCI+T3B0aW9uczwvbGVnZW5kPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgW2F0dHIucm9sZV09XCJvcHRpb24uYXR0cmlidXRlcy5yb2xlXCJcbiAgICAgICAgICBbaWRdPVwib3B0aW9uLmF0dHJpYnV0ZXMuaWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwib3B0aW9uLmF0dHJpYnV0ZXNbJ2FyaWEtc2VsZWN0ZWQnXVwiXG4gICAgICAgICAgW2NsYXNzXT1cIm9wdGlvbi5jbGFzc2VzXCJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBvcHRpb24gb2YgZHJvcGRvd24/Lm9wdGlvbnM7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlLZXlcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVyPy5zZWxlY3Qob3B0aW9uLCBmYWxzZSlcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwib3B0aW9uLnNlbGVjdGVkXCJcbiAgICAgICAgICAgIHRhYkluZGV4PVwiLTFcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgY3VzdG9tT3B0aW9uPy50ZW1wbGF0ZVJlZlxuICAgICAgICAgICAgICAgID8gY3VzdG9tT3B0aW9uIS50ZW1wbGF0ZVJlZlxuICAgICAgICAgICAgICAgIDogZGVmYXVsdE9wdGlvbjtcbiAgICAgICAgICAgICAgY29udGV4dDogeyBvcHRpb246IG9wdGlvbiwgaW5kZXg6IGluZGV4IH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxpPjwvaT5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZmllbGRzZXQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEJ1dHRvbiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiPlxuICA8c3Bhbj57eyBkcm9wZG93bj8udGV4dHM/LnNlbGVjdCB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCI+XG4gIHt7IG9wdGlvbltkcm9wZG93biEuZGlzcGxheV0gfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VhcmNoSW5wdXQ+XG4gIDxpbnB1dFxuICAgICpuZ0lmPVwiZHJvcGRvd24/LmlzU2VhcmNoYWJsZVwiXG4gICAgW2lkXT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LmlkICsgJ19zZWFyY2gtaW5wdXQnXCJcbiAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAoaW5wdXQpPVwic2VhcmNoKCRldmVudClcIlxuICAgIHBsYWNlaG9sZGVyPVwie3sgZHJvcGRvd24/LnRleHRzPy5zZWFyY2hQbGFjZWhvbGRlciB9fVwiXG4gICAgY2xhc3M9XCJyb3VuZGVkLTAgcm91bmRlZC10b3AgYm9yZGVyLTAgYm9yZGVyLWJvdHRvbSBib3JkZXItaW5mb1wiXG4gIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBR0wsY0FBYyxFQU9kLGNBQWMsR0FHZixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFBOzs7QUFjeEUsTUFBTSxPQUFPLG9CQUFvQjtJQXdFL0IsWUFDVSxFQUFxQixFQUNILFFBQWtCO1FBRHBDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ0gsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXJFckMsU0FBSSxHQUFhLEtBQUssQ0FBQTtRQUl0QixZQUFPLEdBQXFCLEVBQUUsQ0FBQTtRQWEvQixpQkFBWSxHQUFHLEtBQUssQ0FBQTtRQVFwQixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQWVSLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUE7UUFDeEQsWUFBTyxHQUN4QixJQUFJLFlBQVksRUFBVyxDQUFBO1FBaUI3QixZQUFPLEdBQTJCLGNBQWMsRUFB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Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBUU8sVUFBVTtzQkFBdEIsS0FBSztnQkFRTyxLQUFLO3NCQUFqQixLQUFLO2dCQWFhLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ1ksT0FBTztzQkFBekIsTUFBTTtnQkFHeUIsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxZQUFZO2dCQUNTLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDVSxXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLGFBQWE7Z0JBR3hCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQywwQkFBMEI7Z0JBSXhDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdDb250cm9sLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQge1xuICBBYnN0cmFjdERyb3Bkb3duLFxuICBDb21wYXJlV2l0aCxcbiAgY3JlYXRlRHJvcGRvd24sXG4gIERyb3Bkb3duQXJncyxcbiAgRHJvcGRvd25IYW5kbGVyLFxuICBEcm9wZG93bk9wdGlvbixcbiAgRHJvcGRvd25PcHRpb25FbGVtZW50LFxuICBEcm9wZG93blBsYWNlbWVudHMsXG4gIERyb3Bkb3duVGV4dHMsXG4gIGRyb3Bkb3duVmFsdWVzLFxuICBFbGVtZW50UHJvcHMsXG4gIFNlYXJjaEZpbHRlcixcbn0gZnJvbSAnQHNlYmdyb3VwL2V4dHJhY3QnXG5pbXBvcnQgeyBOZ2dEcm9wZG93bk9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcGRvd24tb3B0aW9uLmRpcmVjdGl2ZSdcbmltcG9ydCB7IE5nZ0Ryb3Bkb3duQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wZG93bi1idXR0b24uZGlyZWN0aXZlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJ2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogTmdnRHJvcGRvd25Db21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdnRHJvcGRvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmdcbiAgQElucHV0KCkgdGV4dHM/OiBEcm9wZG93blRleHRzXG4gIEBJbnB1dCgpIGxvb3A/OiBib29sZWFuID0gZmFsc2VcbiAgQElucHV0KCkgZGlzcGxheT86IHN0cmluZ1xuICBASW5wdXQoKSB1c2VWYWx1ZT86IHN0cmluZ1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZ1xuICBASW5wdXQoKSBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gW11cbiAgQElucHV0KCkgdmFsaWQ/OiBib29sZWFuXG4gIEBJbnB1dCgpIGludmFsaWQ/OiBib29sZWFuXG4gIEBJbnB1dCgpIGNvbXBhcmVXaXRoPzogQ29tcGFyZVdpdGhcbiAgQElucHV0KCkgc2VhcmNoRmlsdGVyPzogU2VhcmNoRmlsdGVyXG4gIEBJbnB1dCgpIGZpeGVkUGxhY2VtZW50PzogRHJvcGRvd25QbGFjZW1lbnRzXG5cbiAgQElucHV0KCkgc2V0IG11bHRpU2VsZWN0KHZhbHVlOiBzdHJpbmcgfCBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlTZWxlY3QgPSB0aGlzLmNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpXG4gIH1cbiAgZ2V0IG11bHRpU2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aVNlbGVjdFxuICB9XG4gIHByaXZhdGUgX211bHRpU2VsZWN0ID0gZmFsc2VcblxuICBASW5wdXQoKSBzZXQgc2VhcmNoYWJsZSh2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbikge1xuICAgIHRoaXMuX3NlYXJjaGFibGUgPSB0aGlzLmNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpXG4gIH1cbiAgZ2V0IHNlYXJjaGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaGFibGVcbiAgfVxuICBwcml2YXRlIF9zZWFyY2hhYmxlID0gZmFsc2VcblxuICBASW5wdXQoKSBzZXQgdmFsdWUobmV3VmFsdWU6IGFueSkge1xuICAgIHRoaXMuaGFuZGxlcj8uc2VsZWN0QnlWYWx1ZShuZXdWYWx1ZSlcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlXG4gIH1cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlXG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueVxuXG4gIGdldCBzZWxlY3RlZE9wdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVyPy5kcm9wZG93bi5vcHRpb25zLmZpbmQoKG8pID0+IG8uc2VsZWN0ZWQpXG4gIH1cblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRvdWNoZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG5cbiAgQFZpZXdDaGlsZCgndG9nZ2xlclJlZicpIHB1YmxpYyB0b2dnbGVyUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgQFZpZXdDaGlsZCgnbGlzdGJveFJlZicpIHB1YmxpYyBsaXN0Ym94UmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgQFZpZXdDaGlsZCgnZmllbGRzZXRSZWYnKSBwdWJsaWMgZmllbGRzZXRSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuXG4gIEBDb250ZW50Q2hpbGQoTmdnRHJvcGRvd25PcHRpb25EaXJlY3RpdmUpXG4gIGN1c3RvbU9wdGlvbj86IE5nZ0Ryb3Bkb3duT3B0aW9uRGlyZWN0aXZlXG5cbiAgQENvbnRlbnRDaGlsZChOZ2dEcm9wZG93bkJ1dHRvbkRpcmVjdGl2ZSlcbiAgY3VzdG9tQnV0dG9uPzogTmdnRHJvcGRvd25CdXR0b25EaXJlY3RpdmVcblxuICBvbkNoYW5nZUZuPzogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkXG4gIG9uVG91Y2hlZEZuPzogKCkgPT4gdm9pZFxuXG4gIGRyb3Bkb3duPzogQWJzdHJhY3REcm9wZG93blxuICBoYW5kbGVyPzogRHJvcGRvd25IYW5kbGVyXG4gIHRvZ2dsZXI/OiBQYXJ0aWFsPEVsZW1lbnRQcm9wcz4gPSBkcm9wZG93blZhbHVlcygpLmVsZW1lbnRzPy50b2dnbGVyXG4gIGxpc3Rib3g/OiBQYXJ0aWFsPEVsZW1lbnRQcm9wcz4gPSBkcm9wZG93blZhbHVlcygpLmVsZW1lbnRzPy5saXN0Ym94XG4gIGZpZWxkc2V0PzogUGFydGlhbDxFbGVtZW50UHJvcHM+ID0gZHJvcGRvd25WYWx1ZXMoKS5lbGVtZW50cz8uZmllbGRzZXRcblxuICBnZXQgY29udHJvbCgpOiBOZ0NvbnRyb2wgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KEluamVjdG9yKSBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvZ2dsZXJSZWY/Lm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5saXN0Ym94UmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmhhbmRsZXIgPSBjcmVhdGVEcm9wZG93bihcbiAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgdGhpcy50b2dnbGVyUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMubGlzdGJveFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmZpZWxkc2V0UmVmPy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAoZHJvcGRvd24pID0+IHtcbiAgICAgICAgICB0aGlzLmRyb3Bkb3duID0gZHJvcGRvd25cbiAgICAgICAgICB0aGlzLnRvZ2dsZXIgPSBkcm9wZG93bi5lbGVtZW50cy50b2dnbGVyXG4gICAgICAgICAgdGhpcy5saXN0Ym94ID0gZHJvcGRvd24uZWxlbWVudHMubGlzdGJveFxuICAgICAgICAgIHRoaXMuZmllbGRzZXQgPSBkcm9wZG93bi5lbGVtZW50cy5maWVsZHNldFxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgIH0sXG4gICAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuZml4ZWRQbGFjZW1lbnRcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZXI/LmRlc3Ryb3koKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaGFuZGxlciAmJlxuICAgICAgKGNoYW5nZXMuaWQgfHwgY2hhbmdlcy50ZXh0cyB8fCBjaGFuZ2VzLmxvb3AgfHwgY2hhbmdlcy5vcHRpb25zKVxuICAgICkge1xuICAgICAgdGhpcy5oYW5kbGVyLnVwZGF0ZSh0aGlzLnByb3BzKVxuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4gdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuXG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmblxuICB9XG5cbiAgdHJhY2tCeUtleSA9IChpbmRleDogbnVtYmVyLCBvcHRpb246IERyb3Bkb3duT3B0aW9uRWxlbWVudCk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIG9wdGlvbi5hdHRyaWJ1dGVzLmlkID8/ICcnXG4gIH1cblxuICBzZWFyY2goJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlcj8uc2VhcmNoKCgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcHJvcHMoKTogRHJvcGRvd25BcmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQgfHwgdGhpcy5kcm9wZG93bj8uaWQsXG4gICAgICB0ZXh0czogdGhpcy50ZXh0cyxcbiAgICAgIHVzZVZhbHVlOiB0aGlzLnVzZVZhbHVlLFxuICAgICAgZGlzcGxheTogdGhpcy5kaXNwbGF5LFxuICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zLFxuICAgICAgbG9vcDogdGhpcy5sb29wLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBtdWx0aVNlbGVjdDogdGhpcy5tdWx0aVNlbGVjdCxcbiAgICAgIHNlYXJjaGFibGU6IHRoaXMuc2VhcmNoYWJsZSxcbiAgICAgIHNlYXJjaEZpbHRlcjogdGhpcy5zZWFyY2hGaWx0ZXIsXG4gICAgICBjb21wYXJlV2l0aDogdGhpcy5jb21wYXJlV2l0aCxcbiAgICAgIG9uVG91Y2hlZDogKCkgPT4ge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuPy4oKVxuICAgICAgICB0aGlzLnRvdWNoZWQuZW1pdCh0cnVlKVxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUob3B0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZSA9IG9wdGlvblxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChvcHRpb24pXG4gICAgdGhpcy5vbkNoYW5nZUZuPy4ob3B0aW9uKVxuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlOiBzdHJpbmcgfCBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlLnRvU3RyaW5nKCkgPT09ICd0cnVlJyB8fCBmYWxzZVxuICAgIClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiICpuZ0lmPVwibGFiZWxcIiBbaWRdPVwidG9nZ2xlcj8uYXR0cmlidXRlcz8uaWQgKyAnX2xhYmVsJ1wiPnt7XG4gICAgbGFiZWxcbiAgfX08L3NwYW4+XG4gIDxidXR0b25cbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWwgPyB0b2dnbGVyPy5hdHRyaWJ1dGVzPy5pZCArICdfbGFiZWwnIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJcbiAgICAgIGZvcm1JbmZvPy50ZXh0Q29udGVudCAmJiAoZm9ybUluZm8/LnRleHRDb250ZW50Py5sZW5ndGggPz8gMCA+IDApXG4gICAgICAgID8gdG9nZ2xlcj8uYXR0cmlidXRlcz8uaWQgKyAnX2luZm8nXG4gICAgICAgIDogbnVsbFxuICAgIFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAjdG9nZ2xlclJlZlxuICAgIFtpZF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5pZFwiXG4gICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5bJ2FyaWEtaGFzcG9wdXAnXVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5bJ2FyaWEtZXhwYW5kZWQnXVwiXG4gICAgW2F0dHIuYXJpYS1vd25zXT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LlsnYXJpYS1vd25zJ11cIlxuICAgIFt0YWJpbmRleF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy50YWJJbmRleFwiXG4gICAgW3N0eWxlXT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LnN0eWxlXCJcbiAgICBbY2xhc3NdPVwidG9nZ2xlcj8uY2xhc3Nlc1wiXG4gICAgKGNsaWNrKT1cImhhbmRsZXI/LnRvZ2dsZSgpXCJcbiAgICBbY2xhc3MuaXMtdmFsaWRdPVwidmFsaWRcIlxuICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImludmFsaWRcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgY3VzdG9tQnV0dG9uPy50ZW1wbGF0ZVJlZiAmJiAhbXVsdGlTZWxlY3QgJiYgc2VsZWN0ZWRPcHRpb25cbiAgICAgICAgICA/IGN1c3RvbUJ1dHRvbiEudGVtcGxhdGVSZWZcbiAgICAgICAgICA6IGRlZmF1bHRCdXR0b247XG4gICAgICAgIGNvbnRleHQ6IHsgb3B0aW9uOiBzZWxlY3RlZE9wdGlvbiB9XG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJmb3JtLWluZm9cIlxuICAgICNmb3JtSW5mb1xuICAgIFthdHRyLmlkXT1cInRvZ2dsZXI/LmF0dHJpYnV0ZXM/LmlkICsgJ19pbmZvJ1wiXG4gICAgPjxuZy1jb250ZW50IHNlbGVjdD1cIltkYXRhLWZvcm0taW5mb11cIj48L25nLWNvbnRlbnRcbiAgPjwvc3Bhbj5cbiAgPGRpdlxuICAgICNsaXN0Ym94UmVmXG4gICAgW2lkXT1cImxpc3Rib3g/LmF0dHJpYnV0ZXM/LmlkXCJcbiAgICBbYXR0ci5yb2xlXT1cImxpc3Rib3g/LmF0dHJpYnV0ZXM/LnJvbGVcIlxuICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJcbiAgICAgICAgbGlzdGJveD8uYXR0cmlidXRlcz8uWydhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnXVxuICAgICAgXCJcbiAgICBbdGFiaW5kZXhdPVwibGlzdGJveD8uYXR0cmlidXRlcz8udGFiSW5kZXhcIlxuICAgIFtzdHlsZV09XCJsaXN0Ym94Py5hdHRyaWJ1dGVzPy5zdHlsZVwiXG4gICAgW2NsYXNzXT1cImxpc3Rib3g/LmNsYXNzZXNcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLXNtLW5vbmUgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZsZXgtZ3Jvdy0xIHBzLTQgZnMtMiBmdy1ib2xkZXJcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY2xvc2UgbS00IG0tc20tMiBkLWJsb2NrIGQtc20tbm9uZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZHJvcGRvd24/LnRleHRzPy5jbG9zZVwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVyPy5jbG9zZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGk+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPHVsIHJvbGU9XCJsaXN0Ym94XCIgKm5nSWY9XCIhZHJvcGRvd24/LmlzTXVsdGlTZWxlY3RcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hJbnB1dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBvcHRpb24gb2YgZHJvcGRvd24/Lm9wdGlvbnM7XG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUtleVxuICAgICAgICBcIlxuICAgICAgICBbaWRdPVwib3B0aW9uLmF0dHJpYnV0ZXMuaWRcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cIm9wdGlvbi5hdHRyaWJ1dGVzLnJvbGVcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIm9wdGlvbi5hdHRyaWJ1dGVzWydhcmlhLXNlbGVjdGVkJ11cIlxuICAgICAgICBbc3R5bGVdPVwib3B0aW9uLmF0dHJpYnV0ZXMuc3R5bGVcIlxuICAgICAgICBbY2xhc3NdPVwib3B0aW9uLmNsYXNzZXNcIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlcj8uc2VsZWN0KG9wdGlvbilcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGN1c3RvbU9wdGlvbj8udGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgPyBjdXN0b21PcHRpb24hLnRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgIDogZGVmYXVsdE9wdGlvbjtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgb3B0aW9uOiBvcHRpb24sIGluZGV4OiBpbmRleCB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXYgKm5nSWY9XCJkcm9wZG93bj8uaXNNdWx0aVNlbGVjdFwiIGNsYXNzPVwic2ctZmllbGRzZXQtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoSW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwhLS1UT0RPOiBJbXByb3ZlIGNoZWNrYm94ZXMgaW4gZHJvcGRvd24gYW5ndWxhci0tPlxuICAgICAgPGZpZWxkc2V0XG4gICAgICAgICNmaWVsZHNldFJlZlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImZpZWxkc2V0Py5hdHRyaWJ1dGVzPy5pZFwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgICAgIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxsZWdlbmQgY2xhc3M9XCJzci1vbmx5XCIgW2lkXT1cImZpZWxkc2V0Py5hdHRyaWJ1dGVzPy5pZFwiPk9wdGlvbnM8L2xlZ2VuZD5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIFthdHRyLnJvbGVdPVwib3B0aW9uLmF0dHJpYnV0ZXMucm9sZVwiXG4gICAgICAgICAgW2lkXT1cIm9wdGlvbi5hdHRyaWJ1dGVzLmlkXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIm9wdGlvbi5hdHRyaWJ1dGVzWydhcmlhLXNlbGVjdGVkJ11cIlxuICAgICAgICAgIFtjbGFzc109XCJvcHRpb24uY2xhc3Nlc1wiXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgb3B0aW9uIG9mIGRyb3Bkb3duPy5vcHRpb25zO1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5S2V5XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlcj8uc2VsZWN0KG9wdGlvbiwgZmFsc2UpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIm9wdGlvbi5zZWxlY3RlZFwiXG4gICAgICAgICAgICB0YWJJbmRleD1cIi0xXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIGN1c3RvbU9wdGlvbj8udGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICA/IGN1c3RvbU9wdGlvbiEudGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICA6IGRlZmF1bHRPcHRpb247XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHsgb3B0aW9uOiBvcHRpb24sIGluZGV4OiBpbmRleCB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8aT48L2k+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b24gbGV0LXNlbGVjdGVkPVwic2VsZWN0ZWRcIj5cbiAgPHNwYW4+e3sgZHJvcGRvd24/LnRleHRzPy5zZWxlY3QgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRPcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiPlxuICB7eyBvcHRpb25bZHJvcGRvd24hLmRpc3BsYXldIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaElucHV0PlxuICA8aW5wdXRcbiAgICAqbmdJZj1cImRyb3Bkb3duPy5pc1NlYXJjaGFibGVcIlxuICAgIFtpZF09XCJ0b2dnbGVyPy5hdHRyaWJ1dGVzPy5pZCArICdfc2VhcmNoLWlucHV0J1wiXG4gICAgdHlwZT1cInNlYXJjaFwiXG4gICAgKGlucHV0KT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICBwbGFjZWhvbGRlcj1cInt7IGRyb3Bkb3duPy50ZXh0cz8uc2VhcmNoUGxhY2Vob2xkZXIgfX1cIlxuICAgIGNsYXNzPVwicm91bmRlZC0wIHJvdW5kZWQtdG9wIGJvcmRlci0wIGJvcmRlci1ib3R0b20gYm9yZGVyLWluZm9cIlxuICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -69,7 +69,7 @@ NggSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
69
69
  useExisting: NggSliderComponent,
70
70
  multi: true,
71
71
  },
72
- ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\" [attr.id]=\"name + '-label'\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-labelledby]=\"name + '-label'\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggSliderComponent, decorators: [{
74
74
  type: Component,
75
75
  args: [{ selector: 'ngg-slider', providers: [
@@ -78,7 +78,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
78
78
  useExisting: NggSliderComponent,
79
79
  multi: true,
80
80
  },
81
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n" }]
81
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\" [attr.id]=\"name + '-label'\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-labelledby]=\"name + '-label'\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n" }]
82
82
  }], propDecorators: { name: [{
83
83
  type: Input
84
84
  }], min: [{
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
108
108
  }], sliderTouch: [{
109
109
  type: Output
110
110
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEUsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsWUFBWSxHQUNiLE1BQU0sbUJBQW1CLENBQUE7Ozs7QUFrQjFCLE1BQU0sT0FBTyxrQkFBa0I7SUFaL0I7UUFlVyxTQUFJLEdBQUcsR0FBRyxRQUFRLEVBQUUsU0FBUyxDQUFBO1FBQzdCLFFBQUcsR0FBRyxDQUFDLENBQUE7UUFDUCxRQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ1QsU0FBSSxHQUFHLENBQUMsQ0FBQTtRQUNSLFVBQUssR0FBRyxFQUFFLENBQUE7UUFDVixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixpQkFBWSxHQUFHLEVBQUUsQ0FBQTtRQUNqQixlQUFVLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQixVQUFLLEdBQUcsQ0FBQyxDQUFBO1FBRVIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFBO1FBQ3pDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQTtRQUluRCxVQUFLLEdBQWdCLEVBQUUsQ0FBQTtLQWlEeEI7SUEvQ0MsUUFB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LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7XG4gIGdldFNsaWRlclRyYWNrQmFja2dyb3VuZCxcbiAgcmFuZG9tSWQsXG4gIHNsaWRlckNvbG9ycyxcbn0gZnJvbSAnQHNlYmdyb3VwL2V4dHJhY3QnXG5cbmludGVyZmFjZSBTbGlkZXJTdHlsZSB7XG4gIGJhY2tncm91bmQ/OiBzdHJpbmdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdnLXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ2dTbGlkZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdnU2xpZGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIG5hbWUgPSBgJHtyYW5kb21JZCgpfS1zbGlkZXJgXG4gIEBJbnB1dCgpIG1pbiA9IDBcbiAgQElucHV0KCkgbWF4ID0gMTAwXG4gIEBJbnB1dCgpIHN0ZXAgPSAxXG4gIEBJbnB1dCgpIGxhYmVsID0gJydcbiAgQElucHV0KCkgaW5zdHJ1Y3Rpb24gPSAnJ1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZSA9ICcnXG4gIEBJbnB1dCgpIGhhc1RleHRib3ggPSBmYWxzZVxuICBASW5wdXQoKSB1bml0TGFiZWwgPSAna3InXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2VcbiAgQElucHV0KCkgdmFsdWUgPSAwXG5cbiAgQE91dHB1dCgpIHNsaWRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIEBPdXRwdXQoKSBzbGlkZXJUb3VjaCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuXG4gIG9uQ2hhbmdlRm4/OiAodmFsOiBudW1iZXIpID0+IHZvaWRcbiAgb25Ub3VjaGVkRm4/OiBWb2lkRnVuY3Rpb25cbiAgc3R5bGU6IFNsaWRlclN0eWxlID0ge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFRyYWNrQmFja2dyb3VuZCgpXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcbiAgICAgIHRoaXMuc2V0VHJhY2tCYWNrZ3JvdW5kKClcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5zbGlkZXJUb3VjaC5lbWl0KHRydWUpXG4gICAgdGhpcy5vblRvdWNoZWRGbiAmJiB0aGlzLm9uVG91Y2hlZEZuKClcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSA/PyAwXG4gICAgdGhpcy5zZXRUcmFja0JhY2tncm91bmQoKVxuICAgIHRoaXMuc2xpZGVyQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSlcbiAgICB0aGlzLm9uQ2hhbmdlRm4gJiYgdGhpcy5vbkNoYW5nZUZuKHRoaXMudmFsdWUpXG4gIH1cblxuICBzZXRUcmFja0JhY2tncm91bmQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc3R5bGUuYmFja2dyb3VuZCA9IHNsaWRlckNvbG9ycy5kaXNhYmxlZFxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgcGVyY2VudCA9ICgodGhpcy52YWx1ZSAtIHRoaXMubWluKSAvICh0aGlzLm1heCAtIHRoaXMubWluKSkgKiAxMDBcbiAgICB0aGlzLnN0eWxlLmJhY2tncm91bmQgPSBnZXRTbGlkZXJUcmFja0JhY2tncm91bmQocGVyY2VudClcbiAgfVxuXG4gIC8qKiBjb250cm9sIHZhbHVlIGFjY2Vzc29yIGZ1bmN0aW9ucyAqL1xuICB3cml0ZVZhbHVlKHZhbDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbCA/PyAwXG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZSgpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm5cbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIiEhbGFiZWxcIiBjbGFzcz1cImdkcy1zbGlkZXItbGFiZWwtY29udGFpbmVyXCI+XG4gIDxkaXY+XG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJuYW1lXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgIDxwICpuZ0lmPVwiISFpbnN0cnVjdGlvblwiPnt7IGluc3RydWN0aW9uIH19PC9wPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1RleHRib3hcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISF1bml0TGFiZWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBncm91cC1ib3JkZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLXRleHRcIj57eyB1bml0TGFiZWwgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVuaXRMYWJlbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGlucHV0XG4gIHR5cGU9XCJyYW5nZVwiXG4gIFthdHRyLmlkXT1cIm5hbWVcIlxuICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICBbYXR0ci5taW5dPVwibWluXCJcbiAgW2F0dHIubWF4XT1cIm1heFwiXG4gIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gIChibHVyKT1cIm9uQmx1cigpXCJcbiAgKGlucHV0KT1cImhhbmRsZUNoYW5nZSgpXCJcbi8+XG5cbjxwICpuZ0lmPVwiISFlcnJvck1lc3NhZ2VcIiBjbGFzcz1cImdkcy1zbGlkZXItZXJyb3ItaW5mb1wiPlxuICB7eyBlcnJvck1lc3NhZ2UgfX1cbjwvcD5cblxuPG5nLXRlbXBsYXRlICNpbnB1dEZpZWxkPlxuICA8aW5wdXRcbiAgICB0eXBlPVwibnVtYmVyXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbY2xhc3MuaXMtaW52YWxpZF09XCIhIWVycm9yTWVzc2FnZVwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbYXR0ci5pZF09XCJuYW1lICsgJy10ZXh0Ym94J1wiXG4gICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgIChpbnB1dCk9XCJoYW5kbGVDaGFuZ2UoKVwiXG4gIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEUsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsWUFBWSxHQUNiLE1BQU0sbUJBQW1CLENBQUE7Ozs7QUFrQjFCLE1BQU0sT0FBTyxrQkFBa0I7SUFaL0I7UUFlVyxTQUFJLEdBQUcsR0FBRyxRQUFRLEVBQUUsU0FBUyxDQUFBO1FBQzdCLFFBQUcsR0FBRyxDQUFDLENBQUE7UUFDUCxRQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ1QsU0FBSSxHQUFHLENBQUMsQ0FBQTtRQUNSLFVBQUssR0FBRyxFQUFFLENBQUE7UUFDVixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixpQkFBWSxHQUFHLEVBQUUsQ0FBQTtRQUNqQixlQUFVLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQixVQUFLLEdBQUcsQ0FBQyxDQUFBO1FBRVIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFBO1FBQ3pDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQTtRQUluRCxVQUFLLEdBQWdCLEVBQUUsQ0FBQTtLQWlEeEI7SUEvQ0MsUUFB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LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7XG4gIGdldFNsaWRlclRyYWNrQmFja2dyb3VuZCxcbiAgcmFuZG9tSWQsXG4gIHNsaWRlckNvbG9ycyxcbn0gZnJvbSAnQHNlYmdyb3VwL2V4dHJhY3QnXG5cbmludGVyZmFjZSBTbGlkZXJTdHlsZSB7XG4gIGJhY2tncm91bmQ/OiBzdHJpbmdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdnLXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ2dTbGlkZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdnU2xpZGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIG5hbWUgPSBgJHtyYW5kb21JZCgpfS1zbGlkZXJgXG4gIEBJbnB1dCgpIG1pbiA9IDBcbiAgQElucHV0KCkgbWF4ID0gMTAwXG4gIEBJbnB1dCgpIHN0ZXAgPSAxXG4gIEBJbnB1dCgpIGxhYmVsID0gJydcbiAgQElucHV0KCkgaW5zdHJ1Y3Rpb24gPSAnJ1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZSA9ICcnXG4gIEBJbnB1dCgpIGhhc1RleHRib3ggPSBmYWxzZVxuICBASW5wdXQoKSB1bml0TGFiZWwgPSAna3InXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2VcbiAgQElucHV0KCkgdmFsdWUgPSAwXG5cbiAgQE91dHB1dCgpIHNsaWRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIEBPdXRwdXQoKSBzbGlkZXJUb3VjaCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuXG4gIG9uQ2hhbmdlRm4/OiAodmFsOiBudW1iZXIpID0+IHZvaWRcbiAgb25Ub3VjaGVkRm4/OiBWb2lkRnVuY3Rpb25cbiAgc3R5bGU6IFNsaWRlclN0eWxlID0ge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFRyYWNrQmFja2dyb3VuZCgpXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcbiAgICAgIHRoaXMuc2V0VHJhY2tCYWNrZ3JvdW5kKClcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5zbGlkZXJUb3VjaC5lbWl0KHRydWUpXG4gICAgdGhpcy5vblRvdWNoZWRGbiAmJiB0aGlzLm9uVG91Y2hlZEZuKClcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSA/PyAwXG4gICAgdGhpcy5zZXRUcmFja0JhY2tncm91bmQoKVxuICAgIHRoaXMuc2xpZGVyQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSlcbiAgICB0aGlzLm9uQ2hhbmdlRm4gJiYgdGhpcy5vbkNoYW5nZUZuKHRoaXMudmFsdWUpXG4gIH1cblxuICBzZXRUcmFja0JhY2tncm91bmQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc3R5bGUuYmFja2dyb3VuZCA9IHNsaWRlckNvbG9ycy5kaXNhYmxlZFxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgcGVyY2VudCA9ICgodGhpcy52YWx1ZSAtIHRoaXMubWluKSAvICh0aGlzLm1heCAtIHRoaXMubWluKSkgKiAxMDBcbiAgICB0aGlzLnN0eWxlLmJhY2tncm91bmQgPSBnZXRTbGlkZXJUcmFja0JhY2tncm91bmQocGVyY2VudClcbiAgfVxuXG4gIC8qKiBjb250cm9sIHZhbHVlIGFjY2Vzc29yIGZ1bmN0aW9ucyAqL1xuICB3cml0ZVZhbHVlKHZhbDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbCA/PyAwXG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZSgpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm5cbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIiEhbGFiZWxcIiBjbGFzcz1cImdkcy1zbGlkZXItbGFiZWwtY29udGFpbmVyXCI+XG4gIDxkaXY+XG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJuYW1lXCIgW2F0dHIuaWRdPVwibmFtZSArICctbGFiZWwnXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgIDxwICpuZ0lmPVwiISFpbnN0cnVjdGlvblwiPnt7IGluc3RydWN0aW9uIH19PC9wPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1RleHRib3hcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISF1bml0TGFiZWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBncm91cC1ib3JkZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLXRleHRcIj57eyB1bml0TGFiZWwgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVuaXRMYWJlbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGlucHV0XG4gIHR5cGU9XCJyYW5nZVwiXG4gIFthdHRyLmlkXT1cIm5hbWVcIlxuICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICBbYXR0ci5taW5dPVwibWluXCJcbiAgW2F0dHIubWF4XT1cIm1heFwiXG4gIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gIChibHVyKT1cIm9uQmx1cigpXCJcbiAgKGlucHV0KT1cImhhbmRsZUNoYW5nZSgpXCJcbi8+XG5cbjxwICpuZ0lmPVwiISFlcnJvck1lc3NhZ2VcIiBjbGFzcz1cImdkcy1zbGlkZXItZXJyb3ItaW5mb1wiPlxuICB7eyBlcnJvck1lc3NhZ2UgfX1cbjwvcD5cblxuPG5nLXRlbXBsYXRlICNpbnB1dEZpZWxkPlxuICA8aW5wdXRcbiAgICB0eXBlPVwibnVtYmVyXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbY2xhc3MuaXMtaW52YWxpZF09XCIhIWVycm9yTWVzc2FnZVwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbYXR0ci5pZF09XCJuYW1lICsgJy10ZXh0Ym94J1wiXG4gICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJuYW1lICsgJy1sYWJlbCdcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgIChpbnB1dCk9XCJoYW5kbGVDaGFuZ2UoKVwiXG4gIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -545,7 +545,7 @@ class NggDropdownComponent {
545
545
  this.cd.detectChanges();
546
546
  }, (value) => {
547
547
  this.updateValue(value);
548
- });
548
+ }, this.fixedPlacement);
549
549
  }
550
550
  }
551
551
  ngOnDestroy() {
@@ -604,7 +604,7 @@ class NggDropdownComponent {
604
604
  }
605
605
  }
606
606
  NggDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: Injector }], target: i0.ɵɵFactoryTarget.Component });
607
- NggDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: { id: "id", texts: "texts", loop: "loop", display: "display", useValue: "useValue", label: "label", options: "options", valid: "valid", invalid: "invalid", compareWith: "compareWith", searchFilter: "searchFilter", multiSelect: "multiSelect", searchable: "searchable", value: "value" }, outputs: { valueChange: "valueChange", touched: "touched" }, providers: [
607
+ NggDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: { id: "id", texts: "texts", loop: "loop", display: "display", useValue: "useValue", label: "label", options: "options", valid: "valid", invalid: "invalid", compareWith: "compareWith", searchFilter: "searchFilter", fixedPlacement: "fixedPlacement", multiSelect: "multiSelect", searchable: "searchable", value: "value" }, outputs: { valueChange: "valueChange", touched: "touched" }, providers: [
608
608
  {
609
609
  provide: NG_VALUE_ACCESSOR,
610
610
  useExisting: NggDropdownComponent,
@@ -647,6 +647,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
647
647
  type: Input
648
648
  }], searchFilter: [{
649
649
  type: Input
650
+ }], fixedPlacement: [{
651
+ type: Input
650
652
  }], multiSelect: [{
651
653
  type: Input
652
654
  }], searchable: [{
@@ -798,7 +800,7 @@ NggDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
798
800
  useExisting: NggDatepickerComponent,
799
801
  multi: true,
800
802
  },
801
- ], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n (blur)=\"blurInput()\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n (focusout)=\"focusoutDialog($event)\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">\n <i></i>Close\n </button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "texts", "loop", "display", "useValue", "label", "options", "valid", "invalid", "compareWith", "searchFilter", "multiSelect", "searchable", "value"], outputs: ["valueChange", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
803
+ ], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n (blur)=\"blurInput()\"\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n (focusout)=\"focusoutDialog($event)\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">\n <i></i>Close\n </button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "texts", "loop", "display", "useValue", "label", "options", "valid", "invalid", "compareWith", "searchFilter", "fixedPlacement", "multiSelect", "searchable", "value"], outputs: ["valueChange", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
802
804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggDatepickerComponent, decorators: [{
803
805
  type: Component,
804
806
  args: [{ selector: 'ngg-datepicker', providers: [
@@ -1361,7 +1363,7 @@ NggSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
1361
1363
  useExisting: NggSliderComponent,
1362
1364
  multi: true,
1363
1365
  },
1364
- ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.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: i2$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1366
+ ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\" [attr.id]=\"name + '-label'\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-labelledby]=\"name + '-label'\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.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: i2$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1365
1367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggSliderComponent, decorators: [{
1366
1368
  type: Component,
1367
1369
  args: [{ selector: 'ngg-slider', providers: [
@@ -1370,7 +1372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1370
1372
  useExisting: NggSliderComponent,
1371
1373
  multi: true,
1372
1374
  },
1373
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n" }]
1375
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"!!label\" class=\"gds-slider-label-container\">\n <div>\n <label [attr.for]=\"name\" [attr.id]=\"name + '-label'\">{{ label }}</label>\n <p *ngIf=\"!!instruction\">{{ instruction }}</p>\n </div>\n <ng-container *ngIf=\"hasTextbox\">\n <ng-container *ngIf=\"!!unitLabel\">\n <div class=\"group group-border\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n <span class=\"form-text\">{{ unitLabel }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!unitLabel\">\n <ng-container *ngTemplateOutlet=\"inputField\"></ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<input\n type=\"range\"\n [attr.id]=\"name\"\n [attr.name]=\"name\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"style\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n/>\n\n<p *ngIf=\"!!errorMessage\" class=\"gds-slider-error-info\">\n {{ errorMessage }}\n</p>\n\n<ng-template #inputField>\n <input\n type=\"number\"\n [(ngModel)]=\"value\"\n [class.is-invalid]=\"!!errorMessage\"\n [attr.name]=\"name\"\n [attr.id]=\"name + '-textbox'\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-labelledby]=\"name + '-label'\"\n [disabled]=\"disabled\"\n (blur)=\"onBlur()\"\n (input)=\"handleChange()\"\n />\n</ng-template>\n" }]
1374
1376
  }], propDecorators: { name: [{
1375
1377
  type: Input
1376
1378
  }], min: [{