@dsivd/prestations-ng 17.0.0-beta.13 → 17.0.0-beta.15

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.
@@ -54,11 +54,11 @@ export class FoehnAgendaNavigationComponent {
54
54
  }
55
55
  }
56
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnAgendaNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FoehnAgendaNavigationComponent, selector: "foehn-agenda-navigation", inputs: { id: "id", calendar: "calendar", isSrOnly: "isSrOnly", minDate: "minDate", maxDate: "maxDate" }, outputs: { paginationChange: "paginationChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ms-2 d-xs-none d-sm-block\"\n aria-hidden=\"true\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationPreviousSrOnly'\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-agenda-navigation.previous-week-sr-only'\n | fromDictionary\n : {\n previousWeek:\n calendar.previousWeek\n .label\n }\n }}\n </span>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!calendar.previousWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationPreviousDisabled'\"\n class=\"d-flex align-items-center link-week-disabled px-1\"\n >\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ms-2 d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n </div>\n </li>\n\n <li\n class=\"vd-pagination__item d-flex justify-content-center col-4\"\n *ngIf=\"!isSrOnly\"\n >\n <foehn-date-picker-button\n [model]=\"currentDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selectedDateSrOnlyLabelKey]=\"\n 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date'\n \"\n (userInput)=\"datePickerUserInput($event)\"\n ></foehn-date-picker-button>\n </li>\n\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!!calendar.nextWeek\"\n >\n <button\n [id]=\"id + 'ButtonNextWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.nextWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <span\n aria-hidden=\"true\"\n class=\"vd-pagination__title d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationNextSrOnly'\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-agenda-navigation.next-week-sr-only'\n | fromDictionary\n : {\n nextWeek:\n calendar.nextWeek.label\n }\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ms-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-right>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!calendar.nextWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationNextDisabled'\"\n class=\"d-flex align-items-center link-week-disabled px-1\"\n >\n <span class=\"vd-pagination__title d-xs-none d-sm-block\">\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ms-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </div>\n </li>\n </ul>\n </nav>\n </div>\n</div>\n", styles: [".calendar-week-navigation{margin-bottom:0}.calendar-week-navigation li.vd-pagination__item{margin-top:0}.calendar-week-navigation span.vd-pagination__title{font-size:1em;line-height:1.2em;color:var(--vd-neutral-darker)}.calendar-week-navigation foehn-icon-chevron-right.vd-pagination__title,.calendar-week-navigation foehn-icon-chevron-left.vd-pagination__title{font-size:1.5em;color:var(--vd-neutral-darker)}.calendar-week-navigation .link-week-disabled .vd-pagination__title{color:var(--vd-neutral-light);cursor:not-allowed}.calendar-week-navigation .vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.calendar-week-navigation .vd-pagination__link-reset:focus{background-color:var(--vd-focus)}nav ul{margin-bottom:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: i3.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "component", type: i4.FoehnDatePickerButtonComponent, selector: "foehn-date-picker-button", inputs: ["id", "name", "minYear", "maxYear", "minDate", "maxDate", "displaySelectedDate", "selectedDateSrOnlyLabelKey", "model"], outputs: ["modelChange", "userInput"] }, { kind: "pipe", type: i5.SdkDictionaryPipe, name: "fromDictionary" }] }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FoehnAgendaNavigationComponent, selector: "foehn-agenda-navigation", inputs: { id: "id", calendar: "calendar", isSrOnly: "isSrOnly", minDate: "minDate", maxDate: "maxDate" }, outputs: { paginationChange: "paginationChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ms-2 d-xs-none d-sm-block\"\n aria-hidden=\"true\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationPreviousSrOnly'\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-agenda-navigation.previous-week-sr-only'\n | fromDictionary\n : {\n previousWeek:\n calendar.previousWeek\n .label\n }\n }}\n </span>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!calendar.previousWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationPreviousDisabled'\"\n class=\"d-flex align-items-center link-week-disabled px-1\"\n >\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ms-2 d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n </div>\n </li>\n\n <li\n class=\"vd-pagination__item d-flex justify-content-center col-4\"\n *ngIf=\"!isSrOnly\"\n >\n <foehn-date-picker-button\n [model]=\"currentDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selectedDateSrOnlyLabelKey]=\"\n 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date'\n \"\n (userInput)=\"datePickerUserInput($event)\"\n ></foehn-date-picker-button>\n </li>\n\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!!calendar.nextWeek\"\n >\n <button\n [id]=\"id + 'ButtonNextWeek'\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.nextWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <span\n aria-hidden=\"true\"\n class=\"vd-pagination__title d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationNextSrOnly'\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-agenda-navigation.next-week-sr-only'\n | fromDictionary\n : {\n nextWeek:\n calendar.nextWeek.label\n }\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ms-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-right>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!calendar.nextWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationNextDisabled'\"\n class=\"d-flex align-items-center link-week-disabled px-1\"\n >\n <span class=\"vd-pagination__title d-xs-none d-sm-block\">\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ms-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </div>\n </li>\n </ul>\n </nav>\n </div>\n</div>\n", styles: [".calendar-week-navigation{margin-bottom:0}.calendar-week-navigation li.vd-pagination__item{margin-top:0}.calendar-week-navigation span.vd-pagination__title{font-size:1em;line-height:1.2em}:host ::ng-deep .calendar-week-navigation .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .calendar-week-navigation .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-darker)}.calendar-week-navigation .btn.btn-link{text-transform:none}.calendar-week-navigation .link-week-disabled .vd-pagination__title{color:var(--vd-neutral-light);cursor:not-allowed}.calendar-week-navigation .vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.calendar-week-navigation .vd-pagination__link-reset:focus{background-color:var(--vd-focus)}nav ul{margin-bottom:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: i3.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "component", type: i4.FoehnDatePickerButtonComponent, selector: "foehn-date-picker-button", inputs: ["id", "name", "minYear", "maxYear", "minDate", "maxDate", "displaySelectedDate", "selectedDateSrOnlyLabelKey", "model"], outputs: ["modelChange", "userInput"] }, { kind: "pipe", type: i5.SdkDictionaryPipe, name: "fromDictionary" }] }); }
58
58
  }
59
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnAgendaNavigationComponent, decorators: [{
60
60
  type: Component,
61
- args: [{ selector: 'foehn-agenda-navigation', template: "<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ms-2 d-xs-none d-sm-block\"\n aria-hidden=\"true\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationPreviousSrOnly'\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-agenda-navigation.previous-week-sr-only'\n | fromDictionary\n : {\n previousWeek:\n calendar.previousWeek\n .label\n }\n }}\n </span>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!calendar.previousWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationPreviousDisabled'\"\n class=\"d-flex align-items-center link-week-disabled px-1\"\n >\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ms-2 d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n </div>\n </li>\n\n <li\n class=\"vd-pagination__item d-flex justify-content-center col-4\"\n *ngIf=\"!isSrOnly\"\n >\n <foehn-date-picker-button\n [model]=\"currentDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selectedDateSrOnlyLabelKey]=\"\n 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date'\n \"\n (userInput)=\"datePickerUserInput($event)\"\n ></foehn-date-picker-button>\n </li>\n\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!!calendar.nextWeek\"\n >\n <button\n [id]=\"id + 'ButtonNextWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.nextWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <span\n aria-hidden=\"true\"\n class=\"vd-pagination__title d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationNextSrOnly'\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-agenda-navigation.next-week-sr-only'\n | fromDictionary\n : {\n nextWeek:\n calendar.nextWeek.label\n }\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ms-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-right>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!calendar.nextWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationNextDisabled'\"\n class=\"d-flex align-items-center link-week-disabled px-1\"\n >\n <span class=\"vd-pagination__title d-xs-none d-sm-block\">\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ms-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </div>\n </li>\n </ul>\n </nav>\n </div>\n</div>\n", styles: [".calendar-week-navigation{margin-bottom:0}.calendar-week-navigation li.vd-pagination__item{margin-top:0}.calendar-week-navigation span.vd-pagination__title{font-size:1em;line-height:1.2em;color:var(--vd-neutral-darker)}.calendar-week-navigation foehn-icon-chevron-right.vd-pagination__title,.calendar-week-navigation foehn-icon-chevron-left.vd-pagination__title{font-size:1.5em;color:var(--vd-neutral-darker)}.calendar-week-navigation .link-week-disabled .vd-pagination__title{color:var(--vd-neutral-light);cursor:not-allowed}.calendar-week-navigation .vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.calendar-week-navigation .vd-pagination__link-reset:focus{background-color:var(--vd-focus)}nav ul{margin-bottom:0}\n"] }]
61
+ args: [{ selector: 'foehn-agenda-navigation', template: "<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ms-2 d-xs-none d-sm-block\"\n aria-hidden=\"true\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationPreviousSrOnly'\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-agenda-navigation.previous-week-sr-only'\n | fromDictionary\n : {\n previousWeek:\n calendar.previousWeek\n .label\n }\n }}\n </span>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!calendar.previousWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationPreviousDisabled'\"\n class=\"d-flex align-items-center link-week-disabled px-1\"\n >\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ms-2 d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n </div>\n </li>\n\n <li\n class=\"vd-pagination__item d-flex justify-content-center col-4\"\n *ngIf=\"!isSrOnly\"\n >\n <foehn-date-picker-button\n [model]=\"currentDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selectedDateSrOnlyLabelKey]=\"\n 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date'\n \"\n (userInput)=\"datePickerUserInput($event)\"\n ></foehn-date-picker-button>\n </li>\n\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!!calendar.nextWeek\"\n >\n <button\n [id]=\"id + 'ButtonNextWeek'\"\n class=\"btn btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.nextWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <span\n aria-hidden=\"true\"\n class=\"vd-pagination__title d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationNextSrOnly'\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-agenda-navigation.next-week-sr-only'\n | fromDictionary\n : {\n nextWeek:\n calendar.nextWeek.label\n }\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ms-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-right>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!calendar.nextWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationNextDisabled'\"\n class=\"d-flex align-items-center link-week-disabled px-1\"\n >\n <span class=\"vd-pagination__title d-xs-none d-sm-block\">\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ms-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </div>\n </li>\n </ul>\n </nav>\n </div>\n</div>\n", styles: [".calendar-week-navigation{margin-bottom:0}.calendar-week-navigation li.vd-pagination__item{margin-top:0}.calendar-week-navigation span.vd-pagination__title{font-size:1em;line-height:1.2em}:host ::ng-deep .calendar-week-navigation .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .calendar-week-navigation .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-darker)}.calendar-week-navigation .btn.btn-link{text-transform:none}.calendar-week-navigation .link-week-disabled .vd-pagination__title{color:var(--vd-neutral-light);cursor:not-allowed}.calendar-week-navigation .vd-pagination__link-reset{background:none;border:none;font-weight:inherit;text-decoration-line:none;text-align:inherit;cursor:pointer}.calendar-week-navigation .vd-pagination__link-reset:focus{background-color:var(--vd-focus)}nav ul{margin-bottom:0}\n"] }]
62
62
  }], propDecorators: { id: [{
63
63
  type: Input
64
64
  }], calendar: [{
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
72
72
  }], paginationChange: [{
73
73
  type: Output
74
74
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLW5hdmlnYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFnZW5kYS9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBS2pELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFPekIsTUFBTSxPQUFPLDhCQUE4QjtJQUwzQztRQWFJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFTakIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFJOUMsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0tBK0MzQztJQTdDVyxNQUFNLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxjQUE4QjtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxZQUFzQjtRQUN0QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sY0FBYyxHQUFtQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFO1NBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUN6QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7Z0JBQ3JDLE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFDSSxDQUFDLFFBQVE7Z0JBQ1QsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQzFCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUNuQyxDQUFDO2dCQUNDLElBQUksQ0FBQyxVQUFVO29CQUNYLDhCQUE4QixDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzNELE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEQsQ0FBQztJQUNMLENBQUM7OEdBbkVRLDhCQUE4QjtrR0FBOUIsOEJBQThCLGlQQ3RCM0MscXhQQXVLQTs7MkZEakphLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDSSx5QkFBeUI7OEJBTW5DLEVBQUU7c0JBREQsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgd2Vla09mWWVhciBmcm9tICdkYXlqcy9wbHVnaW4vd2Vla09mWWVhcic7XG5cbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uV2VlayB9IGZyb20gJy4uL3BhZ2luYXRpb24td2Vlay50eXBlJztcblxuZGF5anMuZXh0ZW5kKHdlZWtPZlllYXIpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkFnZW5kYU5hdmlnYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IENhbGVuZGFyO1xuXG4gICAgQElucHV0KClcbiAgICBpc1NyT25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBtaW5EYXRlOiBudW1iZXJbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4RGF0ZTogbnVtYmVyW107XG5cbiAgICBAT3V0cHV0KClcbiAgICBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uV2Vlaz4oKTtcblxuICAgIGN1cnJlbnREYXk6IG51bWJlcltdO1xuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVdpdGhDYWxlbmRhckRhdGUgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q3VycmVudERhdGVBc0FycmF5KCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgICAgICAgcmV0dXJuIFtub3cueWVhcigpLCBub3cubW9udGgoKSArIDEsIG5vdy5kYXRlKCldO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNhbGVuZGFyQ2hhbmdlKGNoYW5nZXMuY2FsZW5kYXIpO1xuICAgIH1cblxuICAgIHBhZ2luYXRlKHBhZ2luYXRpb25XZWVrOiBQYWdpbmF0aW9uV2Vlayk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UubmV4dChwYWdpbmF0aW9uV2Vlayk7XG4gICAgfVxuXG4gICAgZGF0ZVBpY2tlclVzZXJJbnB1dChzZWxlY3RlZERhdGU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcnJpZGVXaXRoQ2FsZW5kYXJEYXRlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRhdGVBc1N0cmluZyA9IGAke3NlbGVjdGVkRGF0ZVswXX0tJHtzZWxlY3RlZERhdGVbMV19LSR7c2VsZWN0ZWREYXRlWzJdfWA7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF5anMgPSBkYXlqcyhkYXRlQXNTdHJpbmcpO1xuICAgICAgICBjb25zdCBudW1iZXJXZWVrID0gc2VsZWN0ZWREYXlqcy53ZWVrKCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25XZWVrOiBQYWdpbmF0aW9uV2VlayA9IHtcbiAgICAgICAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgICAgICAgd2Vla051bWJlcjogbnVtYmVyV2VlayxcbiAgICAgICAgICAgIHllYXI6IHNlbGVjdGVkRGF5anMueWVhcigpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5uZXh0KHBhZ2luYXRpb25XZWVrKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2FsZW5kYXJDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgY2FsZW5kYXIgPSBjaGFuZ2UuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJyaWRlV2l0aENhbGVuZGFyRGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVXaXRoQ2FsZW5kYXJEYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIWNhbGVuZGFyIHx8XG4gICAgICAgICAgICAgICAgIWNhbGVuZGFyLmN1cnJlbnRXZWVrLndlZWsgfHxcbiAgICAgICAgICAgICAgICAhY2FsZW5kYXIuY3VycmVudFdlZWsud2Vlay5sZW5ndGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERheSA9XG4gICAgICAgICAgICAgICAgICAgIEZvZWhuQWdlbmRhTmF2aWdhdGlvbkNvbXBvbmVudC5nZXRDdXJyZW50RGF0ZUFzQXJyYXkoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnREYXkgPSBjYWxlbmRhci5jdXJyZW50V2Vlay53ZWVrWzBdLmRhdGU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93IG1iLTNcIiAqbmdJZj1cIiEhY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgIDxuYXZcbiAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbiBjYWxlbmRhci13ZWVrLW5hdmlnYXRpb25cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmF2LmFyaWEtbGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2xpc3RcIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19pdGVtIHZkLXBhZ2luYXRpb25fX2l0ZW0tLXByZXZpb3VzIGNvbC00XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhIWNhbGVuZGFyLnByZXZpb3VzV2Vla1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnQnV0dG9uUHJldmlvdXNXZWVrJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1saW5rIHZkLXBhZ2luYXRpb25fX2xpbmsgdmQtcGFnaW5hdGlvbl9fbGluay1yZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFnaW5hdGUoY2FsZW5kYXIucHJldmlvdXNXZWVrKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBtcy0yIGQteHMtbm9uZSBkLXNtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICdOYXZpZ2F0aW9uUHJldmlvdXNTck9ubHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5wcmV2aW91cy13ZWVrLXNyLW9ubHknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNXZWVrOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIucHJldmlvdXNXZWVrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19pdGVtIHZkLXBhZ2luYXRpb25fX2l0ZW0tLXByZXZpb3VzIGNvbC00XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY2FsZW5kYXIucHJldmlvdXNXZWVrICYmICFpc1NyT25seVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnTmF2aWdhdGlvblByZXZpb3VzRGlzYWJsZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBsaW5rLXdlZWstZGlzYWJsZWQgcHgtMVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLnByZXZpb3VzLXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlIG1zLTIgZC14cy1ub25lIGQtc20tYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5wcmV2aW91cy13ZWVrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGNvbC00XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNTck9ubHlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWRhdGUtcGlja2VyLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImN1cnJlbnREYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZERhdGVTck9ubHlMYWJlbEtleV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24uZGF0ZS1waWNrZXItYnV0dG9uLnNjcmVlbi1yZWFkZXIuc2VsZWN0ZWQtZGF0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImRhdGVQaWNrZXJVc2VySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWRhdGUtcGlja2VyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9faXRlbSB2ZC1wYWdpbmF0aW9uX19pdGVtLS1uZXh0IGNvbC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhIWNhbGVuZGFyLm5leHRXZWVrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICdCdXR0b25OZXh0V2VlaydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tbGluayB2ZC1wYWdpbmF0aW9uX19saW5rIHZkLXBhZ2luYXRpb25fX2xpbmstcmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhZ2luYXRlKGNhbGVuZGFyLm5leHRXZWVrKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBkLXhzLW5vbmUgZC1zbS1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICdOYXZpZ2F0aW9uTmV4dFNyT25seSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2Vlay1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRXZWVrOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIubmV4dFdlZWsubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2l0ZW0gdmQtcGFnaW5hdGlvbl9faXRlbS0tbmV4dCBjb2wtNCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhbGVuZGFyLm5leHRXZWVrICYmICFpc1NyT25seVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnTmF2aWdhdGlvbk5leHREaXNhYmxlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGxpbmstd2Vlay1kaXNhYmxlZCBweC0xXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBkLXhzLW5vbmUgZC1zbS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5uZXh0LXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLW5hdmlnYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFnZW5kYS9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBS2pELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFPekIsTUFBTSxPQUFPLDhCQUE4QjtJQUwzQztRQWFJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFTakIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFJOUMsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0tBK0MzQztJQTdDVyxNQUFNLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxjQUE4QjtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxZQUFzQjtRQUN0QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sY0FBYyxHQUFtQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFO1NBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUN6QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7Z0JBQ3JDLE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFDSSxDQUFDLFFBQVE7Z0JBQ1QsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQzFCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUNuQyxDQUFDO2dCQUNDLElBQUksQ0FBQyxVQUFVO29CQUNYLDhCQUE4QixDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzNELE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEQsQ0FBQztJQUNMLENBQUM7OEdBbkVRLDhCQUE4QjtrR0FBOUIsOEJBQThCLGlQQ3RCM0MsNnhQQXVLQTs7MkZEakphLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDSSx5QkFBeUI7OEJBTW5DLEVBQUU7c0JBREQsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgd2Vla09mWWVhciBmcm9tICdkYXlqcy9wbHVnaW4vd2Vla09mWWVhcic7XG5cbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uV2VlayB9IGZyb20gJy4uL3BhZ2luYXRpb24td2Vlay50eXBlJztcblxuZGF5anMuZXh0ZW5kKHdlZWtPZlllYXIpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkFnZW5kYU5hdmlnYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IENhbGVuZGFyO1xuXG4gICAgQElucHV0KClcbiAgICBpc1NyT25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBtaW5EYXRlOiBudW1iZXJbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4RGF0ZTogbnVtYmVyW107XG5cbiAgICBAT3V0cHV0KClcbiAgICBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uV2Vlaz4oKTtcblxuICAgIGN1cnJlbnREYXk6IG51bWJlcltdO1xuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVdpdGhDYWxlbmRhckRhdGUgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q3VycmVudERhdGVBc0FycmF5KCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgICAgICAgcmV0dXJuIFtub3cueWVhcigpLCBub3cubW9udGgoKSArIDEsIG5vdy5kYXRlKCldO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNhbGVuZGFyQ2hhbmdlKGNoYW5nZXMuY2FsZW5kYXIpO1xuICAgIH1cblxuICAgIHBhZ2luYXRlKHBhZ2luYXRpb25XZWVrOiBQYWdpbmF0aW9uV2Vlayk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UubmV4dChwYWdpbmF0aW9uV2Vlayk7XG4gICAgfVxuXG4gICAgZGF0ZVBpY2tlclVzZXJJbnB1dChzZWxlY3RlZERhdGU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcnJpZGVXaXRoQ2FsZW5kYXJEYXRlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRhdGVBc1N0cmluZyA9IGAke3NlbGVjdGVkRGF0ZVswXX0tJHtzZWxlY3RlZERhdGVbMV19LSR7c2VsZWN0ZWREYXRlWzJdfWA7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF5anMgPSBkYXlqcyhkYXRlQXNTdHJpbmcpO1xuICAgICAgICBjb25zdCBudW1iZXJXZWVrID0gc2VsZWN0ZWREYXlqcy53ZWVrKCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25XZWVrOiBQYWdpbmF0aW9uV2VlayA9IHtcbiAgICAgICAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgICAgICAgd2Vla051bWJlcjogbnVtYmVyV2VlayxcbiAgICAgICAgICAgIHllYXI6IHNlbGVjdGVkRGF5anMueWVhcigpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5uZXh0KHBhZ2luYXRpb25XZWVrKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2FsZW5kYXJDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgY2FsZW5kYXIgPSBjaGFuZ2UuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJyaWRlV2l0aENhbGVuZGFyRGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVXaXRoQ2FsZW5kYXJEYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIWNhbGVuZGFyIHx8XG4gICAgICAgICAgICAgICAgIWNhbGVuZGFyLmN1cnJlbnRXZWVrLndlZWsgfHxcbiAgICAgICAgICAgICAgICAhY2FsZW5kYXIuY3VycmVudFdlZWsud2Vlay5sZW5ndGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERheSA9XG4gICAgICAgICAgICAgICAgICAgIEZvZWhuQWdlbmRhTmF2aWdhdGlvbkNvbXBvbmVudC5nZXRDdXJyZW50RGF0ZUFzQXJyYXkoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnREYXkgPSBjYWxlbmRhci5jdXJyZW50V2Vlay53ZWVrWzBdLmRhdGU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93IG1iLTNcIiAqbmdJZj1cIiEhY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgIDxuYXZcbiAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbiBjYWxlbmRhci13ZWVrLW5hdmlnYXRpb25cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmF2LmFyaWEtbGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2xpc3RcIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19pdGVtIHZkLXBhZ2luYXRpb25fX2l0ZW0tLXByZXZpb3VzIGNvbC00XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhIWNhbGVuZGFyLnByZXZpb3VzV2Vla1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnQnV0dG9uUHJldmlvdXNXZWVrJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayB2ZC1wYWdpbmF0aW9uX19saW5rIHZkLXBhZ2luYXRpb25fX2xpbmstcmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhZ2luYXRlKGNhbGVuZGFyLnByZXZpb3VzV2VlaylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLnByZXZpb3VzLXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGUgbXMtMiBkLXhzLW5vbmUgZC1zbS1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLnByZXZpb3VzLXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnTmF2aWdhdGlvblByZXZpb3VzU3JPbmx5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2Vlay1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzV2VlazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLnByZXZpb3VzV2Vla1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9faXRlbSB2ZC1wYWdpbmF0aW9uX19pdGVtLS1wcmV2aW91cyBjb2wtNFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhbGVuZGFyLnByZXZpb3VzV2VlayAmJiAhaXNTck9ubHlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ05hdmlnYXRpb25QcmV2aW91c0Rpc2FibGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbGluay13ZWVrLWRpc2FibGVkIHB4LTFcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLWxlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5wcmV2aW91cy13ZWVrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1pY29uLWNoZXZyb24tbGVmdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBtcy0yIGQteHMtbm9uZSBkLXNtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9faXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBjb2wtNFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzU3JPbmx5XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1kYXRlLXBpY2tlci1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJjdXJyZW50RGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWREYXRlU3JPbmx5TGFiZWxLZXldPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmRhdGUtcGlja2VyLWJ1dHRvbi5zY3JlZW4tcmVhZGVyLnNlbGVjdGVkLWRhdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJkYXRlUGlja2VyVXNlcklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1kYXRlLXBpY2tlci1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2l0ZW0gdmQtcGFnaW5hdGlvbl9faXRlbS0tbmV4dCBjb2wtNCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiISFjYWxlbmRhci5uZXh0V2Vla1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnQnV0dG9uTmV4dFdlZWsnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHZkLXBhZ2luYXRpb25fX2xpbmsgdmQtcGFnaW5hdGlvbl9fbGluay1yZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFnaW5hdGUoY2FsZW5kYXIubmV4dFdlZWspXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlIGQteHMtbm9uZSBkLXNtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmV4dC13ZWVrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ05hdmlnYXRpb25OZXh0U3JPbmx5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmV4dC13ZWVrLXNyLW9ubHknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFdlZWs6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5uZXh0V2Vlay5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlIG1zLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmV4dC13ZWVrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1pY29uLWNoZXZyb24tcmlnaHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9faXRlbSB2ZC1wYWdpbmF0aW9uX19pdGVtLS1uZXh0IGNvbC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY2FsZW5kYXIubmV4dFdlZWsgJiYgIWlzU3JPbmx5XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICdOYXZpZ2F0aW9uTmV4dERpc2FibGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbGluay13ZWVrLWRpc2FibGVkIHB4LTFcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlIGQteHMtbm9uZSBkLXNtLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGUgbXMtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmV4dC13ZWVrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1pY29uLWNoZXZyb24tcmlnaHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25hdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -215,7 +215,7 @@ export class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
215
215
  useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
216
216
  multi: true
217
217
  }
218
- ], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ms-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"visually-hidden\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"visually-hidden\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements:\n currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"fst-italic align-self-end ms-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body d-flex flex-wrap ms-auto me-auto ps-3 g-0\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n type=\"button\"\n class=\"btn me-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-info]=\"!isSelected(timeSlot)\"\n [class.btn-primary]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n type=\"button\"\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}.panel-body .btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}.panel-body .btn-info,.panel-body .btn-primary{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-info:hover,.panel-body .btn-primary:hover{box-shadow:0 0 0 .2rem var(--vd-focus)}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
218
+ ], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ms-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"visually-hidden\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"visually-hidden\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements:\n currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"fst-italic align-self-end ms-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body d-flex flex-wrap ms-auto me-auto ps-3 g-0\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n type=\"button\"\n class=\"btn me-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-info]=\"!isSelected(timeSlot)\"\n [class.btn-primary]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n type=\"button\"\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}.panel-body .btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}.panel-body .btn-info,.panel-body .btn-primary{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-info:hover,.panel-body .btn-primary:hover{box-shadow:0 0 0 .2rem var(--vd-focus)}.panel-body .btn.btn-link{padding:0;margin:0 .25rem 0 0}.show-more{cursor:pointer;font-size:.9rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
219
219
  }
220
220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnAgendaTimeslotPanelComponent, decorators: [{
221
221
  type: Component,
@@ -225,7 +225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
225
225
  useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
226
226
  multi: true
227
227
  }
228
- ], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ms-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"visually-hidden\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"visually-hidden\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements:\n currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"fst-italic align-self-end ms-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body d-flex flex-wrap ms-auto me-auto ps-3 g-0\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n type=\"button\"\n class=\"btn me-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-info]=\"!isSelected(timeSlot)\"\n [class.btn-primary]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n type=\"button\"\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}.panel-body .btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}.panel-body .btn-info,.panel-body .btn-primary{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-info:hover,.panel-body .btn-primary:hover{box-shadow:0 0 0 .2rem var(--vd-focus)}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
228
+ ], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ms-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"visually-hidden\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"visually-hidden\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements:\n currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"fst-italic align-self-end ms-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body d-flex flex-wrap ms-auto me-auto ps-3 g-0\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n type=\"button\"\n class=\"btn me-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-info]=\"!isSelected(timeSlot)\"\n [class.btn-primary]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n type=\"button\"\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}.panel-body .btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}.panel-body .btn-info,.panel-body .btn-primary{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-info:hover,.panel-body .btn-primary:hover{box-shadow:0 0 0 .2rem var(--vd-focus)}.panel-body .btn.btn-link{padding:0;margin:0 .25rem 0 0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
229
229
  }], ctorParameters: () => [{ type: i1.SdkDictionaryService }], propDecorators: { timeSlotButtonsElemRef: [{
230
230
  type: ViewChildren,
231
231
  args: ['timeSlotButtonsElemRef']
@@ -345,11 +345,11 @@ export class FoehnDatePickerComponent {
345
345
  return false;
346
346
  }
347
347
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnDatePickerComponent, deps: [{ token: i1.SdkDictionaryService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
348
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FoehnDatePickerComponent, selector: "foehn-date-picker", inputs: { id: "id", name: "name", minYear: "minYear", maxYear: "maxYear", minDate: "minDate", maxDate: "maxDate", datepickerTriggerHtmlElement: "datepickerTriggerHtmlElement", closeable: "closeable", isDatepickerVisible: "isDatepickerVisible", model: "model" }, outputs: { modelChange: "modelChange", userInput: "userInput", isDatepickerVisibleChange: "isDatepickerVisibleChange" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" }, properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "daysButtonsElemRef", predicate: ["dayButtonElemRef"], descendants: true }], ngImport: i0, template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn btn-close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n ></button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n type=\"button\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n type=\"button\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <caption class=\"visually-hidden\">\n {{ 'foehn-date-picker.screen-reader.grid.title' | fromDictionary }}\n </caption>\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substring(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n type=\"button\"\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"\n !isToday(dayOfWeek.date) &&\n !isSelected(dayOfWeek.date)\n \"\n [class.btn-secondary]=\"\n isToday(dayOfWeek.date) &&\n !isSelected(dayOfWeek.date)\n \"\n [class.btn-primary]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#aaa!important}:host ::ng-deep .btn-link .svg-inline--fa:hover{color:#000!important}:host ::ng-deep thead th abbr[title]{text-decoration:underline dotted 1px!important}:host ::ng-deep foehn-select select.form-select{padding:0 0 0 3px;margin:0;height:30px;border-color:#aaa;background-image:none;appearance:auto!important;box-shadow:none}:host ::ng-deep foehn-select select.form-select:hover{border-color:#000;cursor:pointer}:host ::ng-deep foehn-select select.form-select:focus,:host ::ng-deep .btn:focus{box-shadow:0 0 0 2px var(--vd-focus)}:host ::ng-deep foehn-select .form-group{margin-bottom:0!important}.datepicker_header{margin:4px 0}.datepicker_wrapper{max-width:245px;min-width:224px;padding:4px;outline:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper table{width:100%}.datepicker_wrapper thead th{text-align:center;font-weight:400}.datepicker_wrapper .btn{padding:2px 4px}:host ::ng-deep .datepicker_wrapper button.btn-close{position:absolute;right:-24px;top:-24px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:31px;height:35px;opacity:1;scale:.7}.datepicker_wrapper .month-input{width:50%;margin-right:5px}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.2}table tr td>button.btn-info:hover,table tr td>button.btn-secondary:hover,table tr td>button.btn-primary:hover{box-shadow:0 0 0 2px var(--vd-focus)}table tr td>button.btn-info:disabled{box-shadow:none;opacity:.3}table tr td>button.btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}table tr td>button.btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: i4.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.FoehnSelectComponent, selector: "foehn-select", inputs: ["multiple", "noSelectionLabel"] }, { kind: "component", type: i7.FoehnAbbrComponent, selector: "foehn-abbr", inputs: ["title", "text"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SdkDictionaryPipe, name: "fromDictionary" }] }); }
348
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FoehnDatePickerComponent, selector: "foehn-date-picker", inputs: { id: "id", name: "name", minYear: "minYear", maxYear: "maxYear", minDate: "minDate", maxDate: "maxDate", datepickerTriggerHtmlElement: "datepickerTriggerHtmlElement", closeable: "closeable", isDatepickerVisible: "isDatepickerVisible", model: "model" }, outputs: { modelChange: "modelChange", userInput: "userInput", isDatepickerVisibleChange: "isDatepickerVisibleChange" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" }, properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "daysButtonsElemRef", predicate: ["dayButtonElemRef"], descendants: true }], ngImport: i0, template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn btn-close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n ></button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n type=\"button\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n type=\"button\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <caption class=\"visually-hidden\">\n {{ 'foehn-date-picker.screen-reader.grid.title' | fromDictionary }}\n </caption>\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substring(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n type=\"button\"\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"\n !isToday(dayOfWeek.date) &&\n !isSelected(dayOfWeek.date)\n \"\n [class.btn-secondary]=\"\n isToday(dayOfWeek.date) &&\n !isSelected(dayOfWeek.date)\n \"\n [class.btn-primary]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}:host ::ng-deep thead th abbr[title]{text-decoration:underline dotted 1px!important}:host ::ng-deep foehn-select select.form-select{padding:0 0 0 3px;margin:0;height:30px;border-color:#aaa;background-image:none;appearance:auto!important;box-shadow:none}:host ::ng-deep foehn-select select.form-select:hover{border-color:#000;cursor:pointer}:host ::ng-deep foehn-select select.form-select:focus,:host ::ng-deep .btn:focus{box-shadow:0 0 0 2px var(--vd-focus)}:host ::ng-deep foehn-select .form-group{margin-bottom:0!important}.datepicker_header{margin:4px 0}.datepicker_wrapper{max-width:245px;min-width:224px;padding:4px;outline:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper table{width:100%}.datepicker_wrapper thead th{text-align:center;font-weight:400}.datepicker_wrapper .btn{padding:2px 4px}:host ::ng-deep .datepicker_wrapper button.btn-close{position:absolute;right:-24px;top:-24px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:31px;height:35px;opacity:1;scale:.7}.datepicker_wrapper .month-input{width:50%;margin-right:5px}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.2}table tr td>button.btn-info:hover,table tr td>button.btn-secondary:hover,table tr td>button.btn-primary:hover{box-shadow:0 0 0 2px var(--vd-focus)}table tr td>button.btn-info:disabled{box-shadow:none;opacity:.3}table tr td>button.btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}table tr td>button.btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: i4.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.FoehnSelectComponent, selector: "foehn-select", inputs: ["multiple", "noSelectionLabel"] }, { kind: "component", type: i7.FoehnAbbrComponent, selector: "foehn-abbr", inputs: ["title", "text"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SdkDictionaryPipe, name: "fromDictionary" }] }); }
349
349
  }
350
350
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnDatePickerComponent, decorators: [{
351
351
  type: Component,
352
- args: [{ selector: 'foehn-date-picker', template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn btn-close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n ></button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n type=\"button\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n type=\"button\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <caption class=\"visually-hidden\">\n {{ 'foehn-date-picker.screen-reader.grid.title' | fromDictionary }}\n </caption>\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substring(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n type=\"button\"\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"\n !isToday(dayOfWeek.date) &&\n !isSelected(dayOfWeek.date)\n \"\n [class.btn-secondary]=\"\n isToday(dayOfWeek.date) &&\n !isSelected(dayOfWeek.date)\n \"\n [class.btn-primary]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#aaa!important}:host ::ng-deep .btn-link .svg-inline--fa:hover{color:#000!important}:host ::ng-deep thead th abbr[title]{text-decoration:underline dotted 1px!important}:host ::ng-deep foehn-select select.form-select{padding:0 0 0 3px;margin:0;height:30px;border-color:#aaa;background-image:none;appearance:auto!important;box-shadow:none}:host ::ng-deep foehn-select select.form-select:hover{border-color:#000;cursor:pointer}:host ::ng-deep foehn-select select.form-select:focus,:host ::ng-deep .btn:focus{box-shadow:0 0 0 2px var(--vd-focus)}:host ::ng-deep foehn-select .form-group{margin-bottom:0!important}.datepicker_header{margin:4px 0}.datepicker_wrapper{max-width:245px;min-width:224px;padding:4px;outline:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper table{width:100%}.datepicker_wrapper thead th{text-align:center;font-weight:400}.datepicker_wrapper .btn{padding:2px 4px}:host ::ng-deep .datepicker_wrapper button.btn-close{position:absolute;right:-24px;top:-24px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:31px;height:35px;opacity:1;scale:.7}.datepicker_wrapper .month-input{width:50%;margin-right:5px}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.2}table tr td>button.btn-info:hover,table tr td>button.btn-secondary:hover,table tr td>button.btn-primary:hover{box-shadow:0 0 0 2px var(--vd-focus)}table tr td>button.btn-info:disabled{box-shadow:none;opacity:.3}table tr td>button.btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}table tr td>button.btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}\n"] }]
352
+ args: [{ selector: 'foehn-date-picker', template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn btn-close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n ></button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n type=\"button\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"visually-hidden\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n type=\"button\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <caption class=\"visually-hidden\">\n {{ 'foehn-date-picker.screen-reader.grid.title' | fromDictionary }}\n </caption>\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substring(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n type=\"button\"\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"\n !isToday(dayOfWeek.date) &&\n !isSelected(dayOfWeek.date)\n \"\n [class.btn-secondary]=\"\n isToday(dayOfWeek.date) &&\n !isSelected(dayOfWeek.date)\n \"\n [class.btn-primary]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-primary-dark)}:host ::ng-deep .btn.btn-link:hover .svg-inline--fa{color:var(--vd-neutral-dark)}:host ::ng-deep thead th abbr[title]{text-decoration:underline dotted 1px!important}:host ::ng-deep foehn-select select.form-select{padding:0 0 0 3px;margin:0;height:30px;border-color:#aaa;background-image:none;appearance:auto!important;box-shadow:none}:host ::ng-deep foehn-select select.form-select:hover{border-color:#000;cursor:pointer}:host ::ng-deep foehn-select select.form-select:focus,:host ::ng-deep .btn:focus{box-shadow:0 0 0 2px var(--vd-focus)}:host ::ng-deep foehn-select .form-group{margin-bottom:0!important}.datepicker_header{margin:4px 0}.datepicker_wrapper{max-width:245px;min-width:224px;padding:4px;outline:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper table{width:100%}.datepicker_wrapper thead th{text-align:center;font-weight:400}.datepicker_wrapper .btn{padding:2px 4px}:host ::ng-deep .datepicker_wrapper button.btn-close{position:absolute;right:-24px;top:-24px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:31px;height:35px;opacity:1;scale:.7}.datepicker_wrapper .month-input{width:50%;margin-right:5px}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.2}table tr td>button.btn-info:hover,table tr td>button.btn-secondary:hover,table tr td>button.btn-primary:hover{box-shadow:0 0 0 2px var(--vd-focus)}table tr td>button.btn-info:disabled{box-shadow:none;opacity:.3}table tr td>button.btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}table tr td>button.btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}\n"] }]
353
353
  }], ctorParameters: () => [{ type: i1.SdkDictionaryService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { id: [{
354
354
  type: Input
355
355
  }], name: [{
@@ -177,11 +177,11 @@ export class FoehnDropdownMenuComponent {
177
177
  }
178
178
  }
179
179
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnDropdownMenuComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
180
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FoehnDropdownMenuComponent, selector: "foehn-dropdown-menu", inputs: { id: "id", label: "label", model: "model", btnCssClass: "btnCssClass" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" }, properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "buttonTrigger", first: true, predicate: ["buttonTrigger"], descendants: true, static: true }, { propertyName: "entryPoint", first: true, predicate: ["entryPoint"], descendants: true }, { propertyName: "selectedFocusList", predicate: ["selectedFocusList"], descendants: true }], ngImport: i0, template: "<nav\n [attr.id]=\"buildId('NavContainer')\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'foehn-dropdown-menu.aria-label' | fromDictionary\"\n>\n <button\n [attr.id]=\"buildId('TriggerButton')\"\n type=\"button\"\n class=\"d-flex align-items-center btn\"\n [ngClass]=\"btnCssClass\"\n (click)=\"toggleDropdownVisibility()\"\n (focusin)=\"handleFocusIn()\"\n (focusout)=\"handleFocusOut()\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-expanded]=\"isDropdownVisible\"\n [attr.aria-controls]=\"'dropdown-menu-list'\"\n [attr.aria-label]=\"label || null\"\n #buttonTrigger\n >\n <ng-content></ng-content>\n </button>\n\n <div class=\"dropdown-menu-container\" *ngIf=\"!!model && isDropdownVisible\">\n <ul\n id=\"dropdown-menu-list\"\n class=\"parent-list list-group\"\n (focusin)=\"handleFocusIn()\"\n (focusout)=\"handleFocusOut()\"\n [style.left.px]=\"popupPosition.left\"\n [style.top.px]=\"popupPosition.top\"\n tabindex=\"-1\"\n #entryPoint\n >\n <ng-container *ngFor=\"let group of model; let i = index\">\n <ng-container *ngIf=\"!!group.title\">\n <li\n *ngIf=\"i > 0\"\n class=\"list-group-item item-divider\"\n [attr.role]=\"'separator'\"\n ></li>\n <li\n class=\"list-group-item list-group-title\"\n tabindex=\"0\"\n #selectedFocusList\n >\n <strong *ngIf=\"!!group.title\">{{ group.title }}</strong>\n <ul class=\"child-list list-group\">\n <li\n *ngFor=\"let item of group.items\"\n class=\"list-group-item\"\n #selectedFocusList\n >\n <ng-container\n [ngTemplateOutlet]=\"itemLink\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-container>\n </li>\n </ul>\n </li>\n </ng-container>\n <ng-container *ngIf=\"!group.title\">\n <li\n *ngIf=\"i > 0\"\n class=\"list-group-item item-divider\"\n [attr.role]=\"'separator'\"\n ></li>\n <li\n *ngFor=\"let item of group.items; let j = index\"\n class=\"list-group-item\"\n #selectedFocusList\n >\n <ng-container\n [ngTemplateOutlet]=\"itemLink\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n</nav>\n\n<ng-template #itemLink let-item=\"item\">\n <a\n *ngIf=\"!!item.routerLink\"\n [attr.title]=\"item.title\"\n [routerLink]=\"item.routerLink\"\n [innerHTML]=\"item.label\"\n [attr.use-router]=\"true\"\n ></a>\n <a\n *ngIf=\"!item.routerLink\"\n [attr.title]=\"item.title\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target\"\n [innerHTML]=\"item.label\"\n [attr.use-router]=\"false\"\n ></a>\n</ng-template>\n", styles: [":host ::ng-deep .btn .svg-inline--fa{color:#000!important}nav button:after{display:inline-block;width:0;height:0;margin-left:.3em;content:\"\";border-top:.4em solid;border-right:.4em solid transparent;border-bottom:0;border-left:.4em solid transparent}nav button.btn-link:after{color:#000}.dropdown-menu-container{position:relative;width:100%}.dropdown-menu-container .parent-list{position:absolute;top:0;left:0;z-index:9999;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;background-color:#fff;width:max-content;max-width:350px}.dropdown-menu-container .list-group-item{border:0;padding:0}.dropdown-menu-container li.item-divider{border-top:1px solid #ddd!important}.dropdown-menu-container li a{width:100%;color:inherit;display:block;padding:.75rem;word-break:break-word}.dropdown-menu-container li.list-group-title strong{padding-left:.75rem}.dropdown-menu-container ul.child-list a{padding-left:1.5rem}.dropdown-menu-container li a:focus{box-shadow:none}.dropdown-menu-container li.list-group-item:hover,.dropdown-menu-container li.list-group-item a:focus{background-color:var(--vd-primary-dark);outline:none;color:#fff}.dropdown-menu-container .list-group-title{padding-top:.5rem}.dropdown-menu-container li.list-group-title:hover{background:none;color:inherit}.dropdown-menu-container li.list-group-title:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
180
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FoehnDropdownMenuComponent, selector: "foehn-dropdown-menu", inputs: { id: "id", label: "label", model: "model", btnCssClass: "btnCssClass" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" }, properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "buttonTrigger", first: true, predicate: ["buttonTrigger"], descendants: true, static: true }, { propertyName: "entryPoint", first: true, predicate: ["entryPoint"], descendants: true }, { propertyName: "selectedFocusList", predicate: ["selectedFocusList"], descendants: true }], ngImport: i0, template: "<nav\n [attr.id]=\"buildId('NavContainer')\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'foehn-dropdown-menu.aria-label' | fromDictionary\"\n>\n <button\n [attr.id]=\"buildId('TriggerButton')\"\n type=\"button\"\n class=\"d-flex align-items-center btn\"\n [ngClass]=\"btnCssClass\"\n (click)=\"toggleDropdownVisibility()\"\n (focusin)=\"handleFocusIn()\"\n (focusout)=\"handleFocusOut()\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-expanded]=\"isDropdownVisible\"\n [attr.aria-controls]=\"'dropdown-menu-list'\"\n [attr.aria-label]=\"label || null\"\n #buttonTrigger\n >\n <ng-content></ng-content>\n </button>\n\n <div class=\"dropdown-menu-container\" *ngIf=\"!!model && isDropdownVisible\">\n <ul\n id=\"dropdown-menu-list\"\n class=\"parent-list list-group\"\n (focusin)=\"handleFocusIn()\"\n (focusout)=\"handleFocusOut()\"\n [style.left.px]=\"popupPosition.left\"\n [style.top.px]=\"popupPosition.top\"\n tabindex=\"-1\"\n #entryPoint\n >\n <ng-container *ngFor=\"let group of model; let i = index\">\n <ng-container *ngIf=\"!!group.title\">\n <li\n *ngIf=\"i > 0\"\n class=\"list-group-item item-divider\"\n [attr.role]=\"'separator'\"\n ></li>\n <li\n class=\"list-group-item list-group-title\"\n tabindex=\"0\"\n #selectedFocusList\n >\n <strong *ngIf=\"!!group.title\">{{ group.title }}</strong>\n <ul class=\"child-list list-group\">\n <li\n *ngFor=\"let item of group.items\"\n class=\"list-group-item\"\n #selectedFocusList\n >\n <ng-container\n [ngTemplateOutlet]=\"itemLink\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-container>\n </li>\n </ul>\n </li>\n </ng-container>\n <ng-container *ngIf=\"!group.title\">\n <li\n *ngIf=\"i > 0\"\n class=\"list-group-item item-divider\"\n [attr.role]=\"'separator'\"\n ></li>\n <li\n *ngFor=\"let item of group.items; let j = index\"\n class=\"list-group-item\"\n #selectedFocusList\n >\n <ng-container\n [ngTemplateOutlet]=\"itemLink\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n</nav>\n\n<ng-template #itemLink let-item=\"item\">\n <a\n *ngIf=\"!!item.routerLink\"\n [attr.title]=\"item.title\"\n [routerLink]=\"item.routerLink\"\n [innerHTML]=\"item.label\"\n [attr.use-router]=\"true\"\n ></a>\n <a\n *ngIf=\"!item.routerLink\"\n [attr.title]=\"item.title\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target\"\n [innerHTML]=\"item.label\"\n [attr.use-router]=\"false\"\n ></a>\n</ng-template>\n", styles: [":host ::ng-deep .btn .svg-inline--fa{color:#000!important}nav button:after{display:inline-block;width:0;height:0;margin-left:.3em;content:\"\";border-top:.4em solid;border-right:.4em solid transparent;border-bottom:0;border-left:.4em solid transparent}nav button.btn.btn-link:after{color:#000}.dropdown-menu-container{position:relative;width:100%}.dropdown-menu-container .parent-list{position:absolute;top:0;left:0;z-index:9999;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;background-color:#fff;width:max-content;max-width:350px}.dropdown-menu-container .list-group-item{border:0;padding:0}.dropdown-menu-container li.item-divider{border-top:1px solid #ddd!important}.dropdown-menu-container li a{width:100%;color:inherit;display:block;padding:.75rem;word-break:break-word}.dropdown-menu-container li.list-group-title strong{padding-left:.75rem}.dropdown-menu-container ul.child-list a{padding-left:1.5rem}.dropdown-menu-container li a:focus{box-shadow:none}.dropdown-menu-container li.list-group-item:hover,.dropdown-menu-container li.list-group-item a:focus{background-color:var(--vd-primary-dark);outline:none;color:#fff}.dropdown-menu-container .list-group-title{padding-top:.5rem}.dropdown-menu-container li.list-group-title:hover{background:none;color:inherit}.dropdown-menu-container li.list-group-title:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
181
181
  }
182
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnDropdownMenuComponent, decorators: [{
183
183
  type: Component,
184
- args: [{ selector: 'foehn-dropdown-menu', template: "<nav\n [attr.id]=\"buildId('NavContainer')\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'foehn-dropdown-menu.aria-label' | fromDictionary\"\n>\n <button\n [attr.id]=\"buildId('TriggerButton')\"\n type=\"button\"\n class=\"d-flex align-items-center btn\"\n [ngClass]=\"btnCssClass\"\n (click)=\"toggleDropdownVisibility()\"\n (focusin)=\"handleFocusIn()\"\n (focusout)=\"handleFocusOut()\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-expanded]=\"isDropdownVisible\"\n [attr.aria-controls]=\"'dropdown-menu-list'\"\n [attr.aria-label]=\"label || null\"\n #buttonTrigger\n >\n <ng-content></ng-content>\n </button>\n\n <div class=\"dropdown-menu-container\" *ngIf=\"!!model && isDropdownVisible\">\n <ul\n id=\"dropdown-menu-list\"\n class=\"parent-list list-group\"\n (focusin)=\"handleFocusIn()\"\n (focusout)=\"handleFocusOut()\"\n [style.left.px]=\"popupPosition.left\"\n [style.top.px]=\"popupPosition.top\"\n tabindex=\"-1\"\n #entryPoint\n >\n <ng-container *ngFor=\"let group of model; let i = index\">\n <ng-container *ngIf=\"!!group.title\">\n <li\n *ngIf=\"i > 0\"\n class=\"list-group-item item-divider\"\n [attr.role]=\"'separator'\"\n ></li>\n <li\n class=\"list-group-item list-group-title\"\n tabindex=\"0\"\n #selectedFocusList\n >\n <strong *ngIf=\"!!group.title\">{{ group.title }}</strong>\n <ul class=\"child-list list-group\">\n <li\n *ngFor=\"let item of group.items\"\n class=\"list-group-item\"\n #selectedFocusList\n >\n <ng-container\n [ngTemplateOutlet]=\"itemLink\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-container>\n </li>\n </ul>\n </li>\n </ng-container>\n <ng-container *ngIf=\"!group.title\">\n <li\n *ngIf=\"i > 0\"\n class=\"list-group-item item-divider\"\n [attr.role]=\"'separator'\"\n ></li>\n <li\n *ngFor=\"let item of group.items; let j = index\"\n class=\"list-group-item\"\n #selectedFocusList\n >\n <ng-container\n [ngTemplateOutlet]=\"itemLink\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n</nav>\n\n<ng-template #itemLink let-item=\"item\">\n <a\n *ngIf=\"!!item.routerLink\"\n [attr.title]=\"item.title\"\n [routerLink]=\"item.routerLink\"\n [innerHTML]=\"item.label\"\n [attr.use-router]=\"true\"\n ></a>\n <a\n *ngIf=\"!item.routerLink\"\n [attr.title]=\"item.title\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target\"\n [innerHTML]=\"item.label\"\n [attr.use-router]=\"false\"\n ></a>\n</ng-template>\n", styles: [":host ::ng-deep .btn .svg-inline--fa{color:#000!important}nav button:after{display:inline-block;width:0;height:0;margin-left:.3em;content:\"\";border-top:.4em solid;border-right:.4em solid transparent;border-bottom:0;border-left:.4em solid transparent}nav button.btn-link:after{color:#000}.dropdown-menu-container{position:relative;width:100%}.dropdown-menu-container .parent-list{position:absolute;top:0;left:0;z-index:9999;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;background-color:#fff;width:max-content;max-width:350px}.dropdown-menu-container .list-group-item{border:0;padding:0}.dropdown-menu-container li.item-divider{border-top:1px solid #ddd!important}.dropdown-menu-container li a{width:100%;color:inherit;display:block;padding:.75rem;word-break:break-word}.dropdown-menu-container li.list-group-title strong{padding-left:.75rem}.dropdown-menu-container ul.child-list a{padding-left:1.5rem}.dropdown-menu-container li a:focus{box-shadow:none}.dropdown-menu-container li.list-group-item:hover,.dropdown-menu-container li.list-group-item a:focus{background-color:var(--vd-primary-dark);outline:none;color:#fff}.dropdown-menu-container .list-group-title{padding-top:.5rem}.dropdown-menu-container li.list-group-title:hover{background:none;color:inherit}.dropdown-menu-container li.list-group-title:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"] }]
184
+ args: [{ selector: 'foehn-dropdown-menu', template: "<nav\n [attr.id]=\"buildId('NavContainer')\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'foehn-dropdown-menu.aria-label' | fromDictionary\"\n>\n <button\n [attr.id]=\"buildId('TriggerButton')\"\n type=\"button\"\n class=\"d-flex align-items-center btn\"\n [ngClass]=\"btnCssClass\"\n (click)=\"toggleDropdownVisibility()\"\n (focusin)=\"handleFocusIn()\"\n (focusout)=\"handleFocusOut()\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-expanded]=\"isDropdownVisible\"\n [attr.aria-controls]=\"'dropdown-menu-list'\"\n [attr.aria-label]=\"label || null\"\n #buttonTrigger\n >\n <ng-content></ng-content>\n </button>\n\n <div class=\"dropdown-menu-container\" *ngIf=\"!!model && isDropdownVisible\">\n <ul\n id=\"dropdown-menu-list\"\n class=\"parent-list list-group\"\n (focusin)=\"handleFocusIn()\"\n (focusout)=\"handleFocusOut()\"\n [style.left.px]=\"popupPosition.left\"\n [style.top.px]=\"popupPosition.top\"\n tabindex=\"-1\"\n #entryPoint\n >\n <ng-container *ngFor=\"let group of model; let i = index\">\n <ng-container *ngIf=\"!!group.title\">\n <li\n *ngIf=\"i > 0\"\n class=\"list-group-item item-divider\"\n [attr.role]=\"'separator'\"\n ></li>\n <li\n class=\"list-group-item list-group-title\"\n tabindex=\"0\"\n #selectedFocusList\n >\n <strong *ngIf=\"!!group.title\">{{ group.title }}</strong>\n <ul class=\"child-list list-group\">\n <li\n *ngFor=\"let item of group.items\"\n class=\"list-group-item\"\n #selectedFocusList\n >\n <ng-container\n [ngTemplateOutlet]=\"itemLink\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-container>\n </li>\n </ul>\n </li>\n </ng-container>\n <ng-container *ngIf=\"!group.title\">\n <li\n *ngIf=\"i > 0\"\n class=\"list-group-item item-divider\"\n [attr.role]=\"'separator'\"\n ></li>\n <li\n *ngFor=\"let item of group.items; let j = index\"\n class=\"list-group-item\"\n #selectedFocusList\n >\n <ng-container\n [ngTemplateOutlet]=\"itemLink\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n</nav>\n\n<ng-template #itemLink let-item=\"item\">\n <a\n *ngIf=\"!!item.routerLink\"\n [attr.title]=\"item.title\"\n [routerLink]=\"item.routerLink\"\n [innerHTML]=\"item.label\"\n [attr.use-router]=\"true\"\n ></a>\n <a\n *ngIf=\"!item.routerLink\"\n [attr.title]=\"item.title\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target\"\n [innerHTML]=\"item.label\"\n [attr.use-router]=\"false\"\n ></a>\n</ng-template>\n", styles: [":host ::ng-deep .btn .svg-inline--fa{color:#000!important}nav button:after{display:inline-block;width:0;height:0;margin-left:.3em;content:\"\";border-top:.4em solid;border-right:.4em solid transparent;border-bottom:0;border-left:.4em solid transparent}nav button.btn.btn-link:after{color:#000}.dropdown-menu-container{position:relative;width:100%}.dropdown-menu-container .parent-list{position:absolute;top:0;left:0;z-index:9999;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;background-color:#fff;width:max-content;max-width:350px}.dropdown-menu-container .list-group-item{border:0;padding:0}.dropdown-menu-container li.item-divider{border-top:1px solid #ddd!important}.dropdown-menu-container li a{width:100%;color:inherit;display:block;padding:.75rem;word-break:break-word}.dropdown-menu-container li.list-group-title strong{padding-left:.75rem}.dropdown-menu-container ul.child-list a{padding-left:1.5rem}.dropdown-menu-container li a:focus{box-shadow:none}.dropdown-menu-container li.list-group-item:hover,.dropdown-menu-container li.list-group-item a:focus{background-color:var(--vd-primary-dark);outline:none;color:#fff}.dropdown-menu-container .list-group-title{padding-top:.5rem}.dropdown-menu-container li.list-group-title:hover{background:none;color:inherit}.dropdown-menu-container li.list-group-title:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"] }]
185
185
  }], ctorParameters: () => [{ type: i1.Router }], propDecorators: { selectedFocusList: [{
186
186
  type: ViewChildren,
187
187
  args: ['selectedFocusList']
@@ -27,11 +27,11 @@ export class FoehnHelpModalComponent {
27
27
  return this.content && !!this.content.nativeElement.innerHTML.trim();
28
28
  }
29
29
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnHelpModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: { modalContent: "modalContent" }, viewQueries: [{ propertyName: "modalTrigger", first: true, predicate: ["modalTrigger"], descendants: true, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], ngImport: i0, template: "<button\n type=\"button\"\n class=\"clear-button btn btn-link d-flex\"\n (click)=\"open()\"\n #modalTrigger\n>\n <foehn-icon-info-circle\n [class.me-1]=\"hasContent()\"\n [title]=\"modalContent.buttonTitle || '&nbsp;'\"\n ></foehn-icon-info-circle>\n\n <span class=\"visually-hidden button-help-text\" *ngIf=\"!hasContent()\">\n Aide: {{ modalContent.title }}\n </span>\n\n <span #content>\n <ng-content></ng-content>\n </span>\n</button>\n<foehn-modal\n id=\"help-modal\"\n [modalSize]=\"modalContent.modalSize || 'modal-lg'\"\n [modalHeaderText]=\"currentModalTitle\"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n (click)=\"close()\"\n [modalTriggerHtmlElement]=\"modalTrigger\"\n>\n <ng-container *ngIf=\"modalContent\">\n <div *ngIf=\"!!modalContent.body\" [innerHtml]=\"modalContent.body\"></div>\n <img\n *ngFor=\"let image of modalContent.images\"\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"mt-2\"\n [style]=\"\n 'width:' +\n (image.width || '100%') +\n '; ' +\n 'height: ' +\n (image.height || 'auto') +\n ';'\n \"\n />\n </ng-container>\n</foehn-modal>\n", styles: [":host ::ng-deep .modal-body{height:100%}:host ::ng-deep .clear-button.btn .svg-inline--fa{color:#000!important}\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.FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }, { kind: "component", type: i3.FoehnIconInfoCircleComponent, selector: "foehn-icon-info-circle" }] }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: { modalContent: "modalContent" }, viewQueries: [{ propertyName: "modalTrigger", first: true, predicate: ["modalTrigger"], descendants: true, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, static: true }], ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-link d-flex\"\n (click)=\"open()\"\n #modalTrigger\n>\n <foehn-icon-info-circle\n [class.me-1]=\"hasContent()\"\n [title]=\"modalContent.buttonTitle || '&nbsp;'\"\n ></foehn-icon-info-circle>\n\n <span class=\"visually-hidden button-help-text\" *ngIf=\"!hasContent()\">\n Aide: {{ modalContent.title }}\n </span>\n\n <span #content>\n <ng-content></ng-content>\n </span>\n</button>\n<foehn-modal\n id=\"help-modal\"\n [modalSize]=\"modalContent.modalSize || 'modal-lg'\"\n [modalHeaderText]=\"currentModalTitle\"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n (click)=\"close()\"\n [modalTriggerHtmlElement]=\"modalTrigger\"\n>\n <ng-container *ngIf=\"modalContent\">\n <div *ngIf=\"!!modalContent.body\" [innerHtml]=\"modalContent.body\"></div>\n <img\n *ngFor=\"let image of modalContent.images\"\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"mt-2\"\n [style]=\"\n 'width:' +\n (image.width || '100%') +\n '; ' +\n 'height: ' +\n (image.height || 'auto') +\n ';'\n \"\n />\n </ng-container>\n</foehn-modal>\n", styles: [":host ::ng-deep .modal-body{height:100%}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-neutral-darker)}.btn.btn-link{text-decoration:none;padding-left:0;color:var(--vd-neutral-darker)}\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.FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }, { kind: "component", type: i3.FoehnIconInfoCircleComponent, selector: "foehn-icon-info-circle" }] }); }
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FoehnHelpModalComponent, decorators: [{
33
33
  type: Component,
34
- args: [{ selector: 'foehn-help-modal', template: "<button\n type=\"button\"\n class=\"clear-button btn btn-link d-flex\"\n (click)=\"open()\"\n #modalTrigger\n>\n <foehn-icon-info-circle\n [class.me-1]=\"hasContent()\"\n [title]=\"modalContent.buttonTitle || '&nbsp;'\"\n ></foehn-icon-info-circle>\n\n <span class=\"visually-hidden button-help-text\" *ngIf=\"!hasContent()\">\n Aide: {{ modalContent.title }}\n </span>\n\n <span #content>\n <ng-content></ng-content>\n </span>\n</button>\n<foehn-modal\n id=\"help-modal\"\n [modalSize]=\"modalContent.modalSize || 'modal-lg'\"\n [modalHeaderText]=\"currentModalTitle\"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n (click)=\"close()\"\n [modalTriggerHtmlElement]=\"modalTrigger\"\n>\n <ng-container *ngIf=\"modalContent\">\n <div *ngIf=\"!!modalContent.body\" [innerHtml]=\"modalContent.body\"></div>\n <img\n *ngFor=\"let image of modalContent.images\"\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"mt-2\"\n [style]=\"\n 'width:' +\n (image.width || '100%') +\n '; ' +\n 'height: ' +\n (image.height || 'auto') +\n ';'\n \"\n />\n </ng-container>\n</foehn-modal>\n", styles: [":host ::ng-deep .modal-body{height:100%}:host ::ng-deep .clear-button.btn .svg-inline--fa{color:#000!important}\n"] }]
34
+ args: [{ selector: 'foehn-help-modal', template: "<button\n type=\"button\"\n class=\"btn btn-link d-flex\"\n (click)=\"open()\"\n #modalTrigger\n>\n <foehn-icon-info-circle\n [class.me-1]=\"hasContent()\"\n [title]=\"modalContent.buttonTitle || '&nbsp;'\"\n ></foehn-icon-info-circle>\n\n <span class=\"visually-hidden button-help-text\" *ngIf=\"!hasContent()\">\n Aide: {{ modalContent.title }}\n </span>\n\n <span #content>\n <ng-content></ng-content>\n </span>\n</button>\n<foehn-modal\n id=\"help-modal\"\n [modalSize]=\"modalContent.modalSize || 'modal-lg'\"\n [modalHeaderText]=\"currentModalTitle\"\n [isModalVisible]=\"isModalVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n (click)=\"close()\"\n [modalTriggerHtmlElement]=\"modalTrigger\"\n>\n <ng-container *ngIf=\"modalContent\">\n <div *ngIf=\"!!modalContent.body\" [innerHtml]=\"modalContent.body\"></div>\n <img\n *ngFor=\"let image of modalContent.images\"\n [src]=\"image.src\"\n [alt]=\"image.alt\"\n class=\"mt-2\"\n [style]=\"\n 'width:' +\n (image.width || '100%') +\n '; ' +\n 'height: ' +\n (image.height || 'auto') +\n ';'\n \"\n />\n </ng-container>\n</foehn-modal>\n", styles: [":host ::ng-deep .modal-body{height:100%}:host ::ng-deep .btn.btn-link .svg-inline--fa{color:var(--vd-neutral-darker)}.btn.btn-link{text-decoration:none;padding-left:0;color:var(--vd-neutral-darker)}\n"] }]
35
35
  }], propDecorators: { modalContent: [{
36
36
  type: Input
37
37
  }], modalTrigger: [{
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
41
41
  type: ViewChild,
42
42
  args: ['content', { static: true }]
43
43
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taGVscC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4taGVscC1tb2RhbC9mb2Vobi1oZWxwLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1oZWxwLW1vZGFsL2ZvZWhuLWhlbHAtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVN4RSxNQUFNLE9BQU8sdUJBQXVCO0lBTHBDO1FBZVksY0FBUyxHQUFHLEtBQUssQ0FBQztLQTBCN0I7SUF4QkcsSUFBSSxjQUFjO1FBQ2QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBZTtRQUNsQywrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6RSxDQUFDOzhHQW5DUSx1QkFBdUI7a0dBQXZCLHVCQUF1QixpVUNUcEMsZzNDQThDQTs7MkZEckNhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDSSxrQkFBa0I7OEJBTTVCLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJM0MsT0FBTztzQkFETixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSGVscE1vZGFsIH0gZnJvbSAnLi9mb2Vobi1oZWxwLW1vZGFsLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWhlbHAtbW9kYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1oZWxwLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1oZWxwLW1vZGFsLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkhlbHBNb2RhbENvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBtb2RhbENvbnRlbnQ6IEhlbHBNb2RhbDtcblxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsVHJpZ2dlcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbW9kYWxUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgY29udGVudDogRWxlbWVudFJlZjtcblxuICAgIHByaXZhdGUgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBnZXQgaXNNb2RhbFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubW9kYWxDb250ZW50ICYmIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIGdldCBjdXJyZW50TW9kYWxUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RhbENvbnRlbnQgJiYgdGhpcy5tb2RhbENvbnRlbnQudGl0bGU7XG4gICAgfVxuXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHlTdGF0dXMoZmFsc2UpO1xuICAgIH1cblxuICAgIHVwZGF0ZVZpc2liaWxpdHlTdGF0dXMoc3RhdHVzOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIG1vZGFsIGlzIGNsb3NlZCBieSBhbm90aGVyIG1lYW4uXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gc3RhdHVzO1xuICAgIH1cblxuICAgIGhhc0NvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQgJiYgISF0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwudHJpbSgpO1xuICAgIH1cbn1cbiIsIjxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImNsZWFyLWJ1dHRvbiBidG4gYnRuLWxpbmsgZC1mbGV4XCJcbiAgICAoY2xpY2spPVwib3BlbigpXCJcbiAgICAjbW9kYWxUcmlnZ2VyXG4+XG4gICAgPGZvZWhuLWljb24taW5mby1jaXJjbGVcbiAgICAgICAgW2NsYXNzLm1lLTFdPVwiaGFzQ29udGVudCgpXCJcbiAgICAgICAgW3RpdGxlXT1cIm1vZGFsQ29udGVudC5idXR0b25UaXRsZSB8fCAnJm5ic3A7J1wiXG4gICAgPjwvZm9laG4taWNvbi1pbmZvLWNpcmNsZT5cblxuICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuIGJ1dHRvbi1oZWxwLXRleHRcIiAqbmdJZj1cIiFoYXNDb250ZW50KClcIj5cbiAgICAgICAgQWlkZToge3sgbW9kYWxDb250ZW50LnRpdGxlIH19XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW4gI2NvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3NwYW4+XG48L2J1dHRvbj5cbjxmb2Vobi1tb2RhbFxuICAgIGlkPVwiaGVscC1tb2RhbFwiXG4gICAgW21vZGFsU2l6ZV09XCJtb2RhbENvbnRlbnQubW9kYWxTaXplIHx8ICdtb2RhbC1sZydcIlxuICAgIFttb2RhbEhlYWRlclRleHRdPVwiY3VycmVudE1vZGFsVGl0bGVcIlxuICAgIFtpc01vZGFsVmlzaWJsZV09XCJpc01vZGFsVmlzaWJsZVwiXG4gICAgKGlzTW9kYWxWaXNpYmxlQ2hhbmdlKT1cInVwZGF0ZVZpc2liaWxpdHlTdGF0dXMoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgIFttb2RhbFRyaWdnZXJIdG1sRWxlbWVudF09XCJtb2RhbFRyaWdnZXJcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RhbENvbnRlbnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiEhbW9kYWxDb250ZW50LmJvZHlcIiBbaW5uZXJIdG1sXT1cIm1vZGFsQ29udGVudC5ib2R5XCI+PC9kaXY+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBtb2RhbENvbnRlbnQuaW1hZ2VzXCJcbiAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgIFthbHRdPVwiaW1hZ2UuYWx0XCJcbiAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXG4gICAgICAgICAgICBbc3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgJ3dpZHRoOicgK1xuICAgICAgICAgICAgICAgIChpbWFnZS53aWR0aCB8fCAnMTAwJScpICtcbiAgICAgICAgICAgICAgICAnOyAnICtcbiAgICAgICAgICAgICAgICAnaGVpZ2h0OiAnICtcbiAgICAgICAgICAgICAgICAoaW1hZ2UuaGVpZ2h0IHx8ICdhdXRvJykgK1xuICAgICAgICAgICAgICAgICc7J1xuICAgICAgICAgICAgXCJcbiAgICAgICAgLz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZm9laG4tbW9kYWw+XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taGVscC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4taGVscC1tb2RhbC9mb2Vobi1oZWxwLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1oZWxwLW1vZGFsL2ZvZWhuLWhlbHAtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVN4RSxNQUFNLE9BQU8sdUJBQXVCO0lBTHBDO1FBZVksY0FBUyxHQUFHLEtBQUssQ0FBQztLQTBCN0I7SUF4QkcsSUFBSSxjQUFjO1FBQ2QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBZTtRQUNsQywrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6RSxDQUFDOzhHQW5DUSx1QkFBdUI7a0dBQXZCLHVCQUF1QixpVUNUcEMsbTJDQThDQTs7MkZEckNhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDSSxrQkFBa0I7OEJBTTVCLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJM0MsT0FBTztzQkFETixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSGVscE1vZGFsIH0gZnJvbSAnLi9mb2Vobi1oZWxwLW1vZGFsLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWhlbHAtbW9kYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1oZWxwLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1oZWxwLW1vZGFsLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkhlbHBNb2RhbENvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBtb2RhbENvbnRlbnQ6IEhlbHBNb2RhbDtcblxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsVHJpZ2dlcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbW9kYWxUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgY29udGVudDogRWxlbWVudFJlZjtcblxuICAgIHByaXZhdGUgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBnZXQgaXNNb2RhbFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubW9kYWxDb250ZW50ICYmIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIGdldCBjdXJyZW50TW9kYWxUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RhbENvbnRlbnQgJiYgdGhpcy5tb2RhbENvbnRlbnQudGl0bGU7XG4gICAgfVxuXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHlTdGF0dXMoZmFsc2UpO1xuICAgIH1cblxuICAgIHVwZGF0ZVZpc2liaWxpdHlTdGF0dXMoc3RhdHVzOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIG1vZGFsIGlzIGNsb3NlZCBieSBhbm90aGVyIG1lYW4uXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gc3RhdHVzO1xuICAgIH1cblxuICAgIGhhc0NvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQgJiYgISF0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwudHJpbSgpO1xuICAgIH1cbn1cbiIsIjxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBkLWZsZXhcIlxuICAgIChjbGljayk9XCJvcGVuKClcIlxuICAgICNtb2RhbFRyaWdnZXJcbj5cbiAgICA8Zm9laG4taWNvbi1pbmZvLWNpcmNsZVxuICAgICAgICBbY2xhc3MubWUtMV09XCJoYXNDb250ZW50KClcIlxuICAgICAgICBbdGl0bGVdPVwibW9kYWxDb250ZW50LmJ1dHRvblRpdGxlIHx8ICcmbmJzcDsnXCJcbiAgICA+PC9mb2Vobi1pY29uLWluZm8tY2lyY2xlPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW4gYnV0dG9uLWhlbHAtdGV4dFwiICpuZ0lmPVwiIWhhc0NvbnRlbnQoKVwiPlxuICAgICAgICBBaWRlOiB7eyBtb2RhbENvbnRlbnQudGl0bGUgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8c3BhbiAjY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc3Bhbj5cbjwvYnV0dG9uPlxuPGZvZWhuLW1vZGFsXG4gICAgaWQ9XCJoZWxwLW1vZGFsXCJcbiAgICBbbW9kYWxTaXplXT1cIm1vZGFsQ29udGVudC5tb2RhbFNpemUgfHwgJ21vZGFsLWxnJ1wiXG4gICAgW21vZGFsSGVhZGVyVGV4dF09XCJjdXJyZW50TW9kYWxUaXRsZVwiXG4gICAgW2lzTW9kYWxWaXNpYmxlXT1cImlzTW9kYWxWaXNpYmxlXCJcbiAgICAoaXNNb2RhbFZpc2libGVDaGFuZ2UpPVwidXBkYXRlVmlzaWJpbGl0eVN0YXR1cygkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgW21vZGFsVHJpZ2dlckh0bWxFbGVtZW50XT1cIm1vZGFsVHJpZ2dlclwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGFsQ29udGVudFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiISFtb2RhbENvbnRlbnQuYm9keVwiIFtpbm5lckh0bWxdPVwibW9kYWxDb250ZW50LmJvZHlcIj48L2Rpdj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGltYWdlIG9mIG1vZGFsQ29udGVudC5pbWFnZXNcIlxuICAgICAgICAgICAgW3NyY109XCJpbWFnZS5zcmNcIlxuICAgICAgICAgICAgW2FsdF09XCJpbWFnZS5hbHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJcbiAgICAgICAgICAgICAgICAnd2lkdGg6JyArXG4gICAgICAgICAgICAgICAgKGltYWdlLndpZHRoIHx8ICcxMDAlJykgK1xuICAgICAgICAgICAgICAgICc7ICcgK1xuICAgICAgICAgICAgICAgICdoZWlnaHQ6ICcgK1xuICAgICAgICAgICAgICAgIChpbWFnZS5oZWlnaHQgfHwgJ2F1dG8nKSArXG4gICAgICAgICAgICAgICAgJzsnXG4gICAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9mb2Vobi1tb2RhbD5cbiJdfQ==