@kirbydesign/designsystem 9.6.0 → 9.7.0

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.
Files changed (73) hide show
  1. package/accordion/accordion-item.component.d.ts +2 -1
  2. package/button/button.component.d.ts +1 -1
  3. package/checkbox/checkbox.component.d.ts +8 -4
  4. package/esm2022/accordion/accordion-item.component.mjs +6 -3
  5. package/esm2022/button/button.component.mjs +3 -3
  6. package/esm2022/calendar/calendar.component.mjs +2 -2
  7. package/esm2022/card/card-as-button/card-as-button.directive.mjs +3 -1
  8. package/esm2022/card/card.component.mjs +2 -2
  9. package/esm2022/checkbox/checkbox.component.mjs +17 -10
  10. package/esm2022/dropdown/dropdown.component.mjs +1 -1
  11. package/esm2022/item/item.component.mjs +40 -7
  12. package/esm2022/list/list-item/list-item.component.mjs +2 -2
  13. package/esm2022/list/list.component.mjs +2 -2
  14. package/esm2022/menu/menu.component.mjs +2 -2
  15. package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +2 -2
  16. package/esm2022/modal/modal/alert/alert.component.mjs +2 -2
  17. package/esm2022/modal/modal/footer/modal-footer.component.mjs +3 -3
  18. package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +2 -2
  19. package/esm2022/modal/v2/footer/footer.component.mjs +2 -2
  20. package/esm2022/modal/v2/modal/modal.component.mjs +2 -2
  21. package/esm2022/modal/v2/wrapper/wrapper.component.mjs +2 -2
  22. package/esm2022/page/page-footer/page-footer.component.mjs +2 -2
  23. package/esm2022/page/page.component.mjs +2 -2
  24. package/esm2022/radio/radio.component.mjs +16 -9
  25. package/esm2022/range/range.component.mjs +3 -3
  26. package/esm2022/router-outlet/router-outlet.component.mjs +1 -1
  27. package/esm2022/router-outlet/router-outlet.module.mjs +2 -2
  28. package/esm2022/slide/slides.component.mjs +1 -1
  29. package/esm2022/tabs/tab-button/tab-button.component.mjs +2 -2
  30. package/esm2022/toggle/toggle.component.mjs +20 -7
  31. package/fesm2022/kirbydesign-designsystem-accordion.mjs +5 -2
  32. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  33. package/fesm2022/kirbydesign-designsystem-button.mjs +2 -2
  34. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  35. package/fesm2022/kirbydesign-designsystem-calendar.mjs +1 -1
  36. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  37. package/fesm2022/kirbydesign-designsystem-card.mjs +4 -2
  38. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  39. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +16 -9
  40. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  41. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +1 -1
  42. package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  43. package/fesm2022/kirbydesign-designsystem-item.mjs +60 -28
  44. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  45. package/fesm2022/kirbydesign-designsystem-list.mjs +4 -4
  46. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  47. package/fesm2022/kirbydesign-designsystem-menu.mjs +1 -1
  48. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  49. package/fesm2022/kirbydesign-designsystem-modal-v2.mjs +6 -6
  50. package/fesm2022/kirbydesign-designsystem-modal-v2.mjs.map +1 -1
  51. package/fesm2022/kirbydesign-designsystem-modal.mjs +5 -5
  52. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  53. package/fesm2022/kirbydesign-designsystem-page.mjs +4 -4
  54. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  55. package/fesm2022/kirbydesign-designsystem-radio.mjs +15 -8
  56. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  57. package/fesm2022/kirbydesign-designsystem-range.mjs +2 -2
  58. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  59. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +2 -2
  60. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  61. package/fesm2022/kirbydesign-designsystem-slide.mjs +1 -1
  62. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  63. package/fesm2022/kirbydesign-designsystem-tabs.mjs +2 -2
  64. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  65. package/fesm2022/kirbydesign-designsystem-toggle.mjs +18 -5
  66. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  67. package/item/item.component.d.ts +11 -2
  68. package/package.json +50 -50
  69. package/radio/radio.component.d.ts +8 -4
  70. package/scss/base/_design-tokens.scss +1 -0
  71. package/scss/themes/design-tokens.scss +1 -0
  72. package/toggle/toggle.component.d.ts +8 -4
  73. package/README.md +0 -7
@@ -389,7 +389,7 @@ export class CalendarComponent {
389
389
  return Array.from({ length: numberOfYears + 1 }, (_, i) => (startYear + i).toString());
390
390
  }
391
391
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.CalendarHelper }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component }); }
392
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CalendarComponent, isStandalone: true, selector: "kirby-calendar", inputs: { timezone: "timezone", disableWeekends: "disableWeekends", disablePastDates: "disablePastDates", disableFutureDates: "disableFutureDates", alwaysEnableToday: "alwaysEnableToday", locales: "locales", customLocales: "customLocales", usePopover: "usePopover", yearNavigatorOptions: "yearNavigatorOptions", selectedDate: "selectedDate", disabledDates: "disabledDates", enabledDates: "enabledDates", todayDate: "todayDate", minDate: "minDate", maxDate: "maxDate" }, outputs: { dateChange: "dateChange", dateSelect: "dateSelect", yearSelect: "yearSelect", previousMonthClicked: "previousMonthClicked", nextMonthClicked: "nextMonthClicked" }, host: { properties: { "class.has-year-navigator": "this._hasYearNavigator" } }, providers: [CalendarHelper], viewQueries: [{ propertyName: "calendarContainer", first: true, predicate: ["calendarContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"header\">\n <div class=\"month-navigator\">\n <button\n type=\"button\"\n [disabled]=\"!_canNavigateBack\"\n (click)=\"_changeMonth(-1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\n <kirby-icon name=\"arrow-back\"></kirby-icon>\n </button>\n\n <div class=\"month-and-year\">\n <span class=\"month\">{{ activeMonthName }}</span>\n <span *ngIf=\"!_hasYearNavigator\" class=\"year\">{{ activeYear }}</span>\n </div>\n\n <button\n type=\"button\"\n [disabled]=\"!_canNavigateForward\"\n (click)=\"_changeMonth(1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\n <kirby-icon name=\"arrow-more\"></kirby-icon>\n </button>\n </div>\n <kirby-dropdown\n *ngIf=\"_hasYearNavigator\"\n [usePopover]=\"usePopover\"\n [selectedIndex]=\"navigatedYear\"\n [items]=\"navigableYears\"\n popout=\"left\"\n (change)=\"_changeYear($event)\"\n ></kirby-dropdown>\n</div>\n\n<table>\n <thead>\n <tr>\n <th *ngFor=\"let weekDay of _weekDays\">{{ weekDay }}</th>\n </tr>\n </thead>\n\n <tbody>\n <tr *ngFor=\"let week of _month\">\n <td *ngFor=\"let day of week\">\n <div\n (click)=\"_onDateSelected(day)\"\n class=\"{{ day.cssClasses }} contain-state-layer\"\n [class.selected]=\"day.isSelected\"\n >\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\">{{ day.date }}</span>\n </div>\n </td>\n </tr>\n </tbody>\n</table>\n\n<!-- <iframe src=\"kirby/components/calendar/calendar.webview.html\" #calendarContainer style=\"width: 320px; height: 304px; border: 0\"> -->\n", styles: ["table{width:100%;border-collapse:collapse;-webkit-user-select:none;user-select:none;margin-bottom:8px}th,td{text-align:center;padding:0}th:first-child,td:first-child{padding-left:8px}th:last-child,td:last-child{padding-right:8px}th{height:50px;border-bottom:1px solid var(--kirby-background-color)}.header,th,td{background-color:transparent}.header{display:flex;justify-content:space-between;margin:8px 8px 0}.month-navigator{display:flex;flex-grow:1;align-items:center;justify-content:space-between}.month-navigator button:disabled{opacity:.5;pointer-events:none}.month-and-year{-webkit-user-select:none;user-select:none}.month-and-year .month{font-weight:700;margin-right:8px}:host(.has-year-navigator) .month-navigator{flex-grow:0}:host(.has-year-navigator) .month-and-year{width:80px;margin:0 8px;text-align:center}:host(.has-year-navigator) .month{margin-right:0}.day{display:inline-flex;align-items:center;justify-content:center;border-radius:20px;width:40px;height:40px;margin:4px 0;color:var(--color, var(--kirby-black));background-color:var(--background-color, transparent)}.day.disabled,.day:not(.selectable){--color: #b4b4b4;pointer-events:none}.day.selectable:not(.current-month){--color: var(--kirby-text-color-semi-dark)}.day.today{color:var(--kirby-medium-contrast);background-color:var(--kirby-medium)}@media (hover: hover){.day.today:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.day.today:active,.day.today.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}.day.selected{color:var(--kirby-black-contrast);background-color:var(--kirby-black)}@media (hover: hover){.day.selected:hover{--state-layer-opacity: .24;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}.day.selected:active,.day.selected.interaction-state-active{--state-layer-opacity: .36;--state-layer-background-color: var(--kirby-black-contrast)}.contain-state-layer{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative}.contain-state-layer .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}.contain-state-layer .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}.contain-state-layer .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){.contain-state-layer:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.contain-state-layer:active,.contain-state-layer.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}\n"], dependencies: [{ kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2.DropdownComponent, selector: "kirby-dropdown", inputs: ["items", "selectedIndex", "focusedIndex", "itemTextProperty", "placeholder", "popout", "attentionLevel", "expand", "disabled", "hasError", "size", "tabindex", "usePopover"], outputs: ["change"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i3.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
392
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CalendarComponent, isStandalone: true, selector: "kirby-calendar", inputs: { timezone: "timezone", disableWeekends: "disableWeekends", disablePastDates: "disablePastDates", disableFutureDates: "disableFutureDates", alwaysEnableToday: "alwaysEnableToday", locales: "locales", customLocales: "customLocales", usePopover: "usePopover", yearNavigatorOptions: "yearNavigatorOptions", selectedDate: "selectedDate", disabledDates: "disabledDates", enabledDates: "enabledDates", todayDate: "todayDate", minDate: "minDate", maxDate: "maxDate" }, outputs: { dateChange: "dateChange", dateSelect: "dateSelect", yearSelect: "yearSelect", previousMonthClicked: "previousMonthClicked", nextMonthClicked: "nextMonthClicked" }, host: { properties: { "class.has-year-navigator": "this._hasYearNavigator" } }, providers: [CalendarHelper], viewQueries: [{ propertyName: "calendarContainer", first: true, predicate: ["calendarContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"header\">\n <div class=\"month-navigator\">\n <button\n type=\"button\"\n [disabled]=\"!_canNavigateBack\"\n (click)=\"_changeMonth(-1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\n <kirby-icon name=\"arrow-back\"></kirby-icon>\n </button>\n\n <div class=\"month-and-year\">\n <span class=\"month\">{{ activeMonthName }}</span>\n <span *ngIf=\"!_hasYearNavigator\" class=\"year\">{{ activeYear }}</span>\n </div>\n\n <button\n type=\"button\"\n [disabled]=\"!_canNavigateForward\"\n (click)=\"_changeMonth(1)\"\n kirby-button\n [noDecoration]=\"true\"\n class=\"no-margin\"\n >\n <kirby-icon name=\"arrow-more\"></kirby-icon>\n </button>\n </div>\n <kirby-dropdown\n *ngIf=\"_hasYearNavigator\"\n [usePopover]=\"usePopover\"\n [selectedIndex]=\"navigatedYear\"\n [items]=\"navigableYears\"\n popout=\"left\"\n (change)=\"_changeYear($event)\"\n ></kirby-dropdown>\n</div>\n\n<table>\n <thead>\n <tr>\n <th *ngFor=\"let weekDay of _weekDays\">{{ weekDay }}</th>\n </tr>\n </thead>\n\n <tbody>\n <tr *ngFor=\"let week of _month\">\n <td *ngFor=\"let day of week\">\n <div\n (click)=\"_onDateSelected(day)\"\n class=\"{{ day.cssClasses }} contain-state-layer\"\n [class.selected]=\"day.isSelected\"\n >\n <span class=\"state-layer\" aria-hidden=\"true\"></span>\n <span class=\"content-layer\">{{ day.date }}</span>\n </div>\n </td>\n </tr>\n </tbody>\n</table>\n\n<!-- <iframe src=\"kirby/components/calendar/calendar.webview.html\" #calendarContainer style=\"width: 320px; height: 304px; border: 0\"> -->\n", styles: ["table{width:100%;border-collapse:collapse;-webkit-user-select:none;user-select:none;margin-bottom:8px}th,td{text-align:center;padding:0}th:first-child,td:first-child{padding-left:8px}th:last-child,td:last-child{padding-right:8px}th{height:50px;border-bottom:1px solid var(--kirby-background-color)}.header,th,td{background-color:transparent}.header{display:flex;justify-content:space-between;margin:8px 8px 0}.month-navigator{display:flex;flex-grow:1;align-items:center;justify-content:space-between}.month-navigator button:disabled{opacity:.5;pointer-events:none}.month-and-year{-webkit-user-select:none;user-select:none}.month-and-year .month{font-weight:700;margin-right:8px}:host(.has-year-navigator) .month-navigator{flex-grow:0}:host(.has-year-navigator) .month-and-year{width:80px;margin:0 8px;text-align:center}:host(.has-year-navigator) .month{margin-right:0}.day{display:inline-flex;align-items:center;justify-content:center;border-radius:20px;width:40px;height:40px;margin:4px 0;color:var(--color, var(--kirby-black));background-color:var(--background-color, transparent)}.day.disabled,.day:not(.selectable){--color: #b4b4b4;pointer-events:none}.day.selectable:not(.current-month){--color: var(--kirby-text-color-semi-dark)}.day.today{color:var(--kirby-medium-contrast);background-color:var(--kirby-medium)}@media (hover: hover){.day.today:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.day.today:active,.day.today.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}.day.selected{color:var(--kirby-black-contrast);background-color:var(--kirby-black)}@media (hover: hover){.day.selected:hover{--state-layer-opacity: .24;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}.day.selected:active,.day.selected.interaction-state-active{--state-layer-opacity: .36;--state-layer-background-color: var(--kirby-black-contrast)}.contain-state-layer{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative}.contain-state-layer .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}.contain-state-layer .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}.contain-state-layer .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){.contain-state-layer:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}.contain-state-layer:active,.contain-state-layer.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}\n"], dependencies: [{ kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2.DropdownComponent, selector: "kirby-dropdown", inputs: ["items", "selectedIndex", "focusedIndex", "itemTextProperty", "placeholder", "popout", "attentionLevel", "expand", "disabled", "hasError", "size", "tabindex", "usePopover"], outputs: ["change"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i3.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
393
393
  }
394
394
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarComponent, decorators: [{
395
395
  type: Component,
@@ -444,4 +444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
444
444
  type: HostBinding,
445
445
  args: ['class.has-year-navigator']
446
446
  }] } });
447
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixPQUFPLEVBQ1AsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsR0FDWixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFhM0QsSUFBSyxRQVNKO0FBVEQsV0FBSyxRQUFRO0lBQ1gsMkJBQWUsQ0FBQTtJ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QVU7c0JBQWxCLEtBQUs7Z0JBUUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQXVCTyxZQUFZO3NCQUF4QixLQUFLO2dCQWlCTyxhQUFhO3NCQUF6QixLQUFLO2dCQVFPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBUU8sU0FBUztzQkFBckIsS0FBSztnQkFRTyxPQUFPO3NCQUFuQixLQUFLO2dCQVdPLE9BQU87c0JBQW5CLEtBQUs7Z0JBaUNGLGlCQUFpQjtzQkFEcEIsV0FBVzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZCxcbiAgZWFjaERheU9mSW50ZXJ2YWwsXG4gIGVuZE9mV2VlayxcbiAgZm9ybWF0LFxuICBnZXRZZWFyLFxuICBpc0FmdGVyLFxuICBpc0JlZm9yZSxcbiAgaXNTYW1lRGF5LFxuICBpc1NhbWVNb250aCxcbiAgaXNXZWVrZW5kLFxuICBMb2NhbGUgYXMgTG9jYWxlRGF0ZUZucyxcbiAgc3RhcnRPZkRheSxcbiAgc3RhcnRPZk1vbnRoLFxuICBzdGFydE9mV2Vlayxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUsIHpvbmVkVGltZVRvVXRjIH0gZnJvbSAnZGF0ZS1mbnMtdHonO1xuaW1wb3J0IHsgZGEsIGVuR0IsIGVuVVMgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUnO1xuXG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pY29uJztcblxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2Ryb3Bkb3duJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQ2VsbCB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1jZWxsLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1vcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2NhbGVuZGFyLmhlbHBlcic7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJOYXZpZ2F0b3JDb25maWcgfSBmcm9tICcuL29wdGlvbnMvY2FsZW5kYXIteWVhci1uYXZpZ2F0b3ItY29uZmlnJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlID0gTG9jYWxlRGF0ZUZucztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1RvZGF5OiBib29sZWFuO1xuICBpc1dlZWtlbmQ6IGJvb2xlYW47XG4gIGlzUGFzdDogYm9vbGVhbjtcbiAgaXNGdXR1cmU6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmVudW0gVGltZVVuaXQge1xuICB5ZWFycyA9ICd5ZWFycycsXG4gIG1vbnRocyA9ICdtb250aHMnLFxuICB3ZWVrcyA9ICd3ZWVrcycsXG4gIGRheXMgPSAnZGF5cycsXG4gIGhvdXJzID0gJ2hvdXJzJyxcbiAgbWludXRlcyA9ICdtaW51dGVzJyxcbiAgc2Vjb25kcyA9ICdzZWNvbmRzJyxcbiAgbWlsbGlzZWNvbmRzID0gJ21pbGxpc2Vjb25kcycsXG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRHJvcGRvd25Nb2R1bGUsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdraXJieS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NhbGVuZGFySGVscGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhbGVuZGFyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSB5ZWFyU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwcmV2aW91c01vbnRoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIG5leHRNb250aENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBJbnB1dCgpIHRpbWV6b25lOiAnbG9jYWwnIHwgJ1VUQycgPSAnbG9jYWwnO1xuICBASW5wdXQoKSBkaXNhYmxlV2Vla2VuZHMgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlRnV0dXJlRGF0ZXMgPSBmYWxzZTtcbiAgQElucHV0KCkgYWx3YXlzRW5hYmxlVG9kYXkgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgbG9jYWxlcyhsb2NhbGVzOiB7IFtrZXk6IHN0cmluZ106IExvY2FsZSB9KSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYFN1cHBseWluZyBhZGRpdGlvbmFsIGxvY2FsZXMgdG8gdGhlIEtpcmJ5IENhbGVuZGFyIENvbXBvbmVudCB2aWEgYW4gaW5wdXQgcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBcbiAgICAgICAgQSBmdXR1cmUgdXBkYXRlIHdpbGwgYWxsb3cgaW5qZWN0aW5nIGFkZGl0aW9uYWwgbG9jYWxlcyB2aWEgYSBwcm92aWRlciBpbnN0ZWFkLmBcbiAgICApO1xuICB9XG4gIEBJbnB1dCgpIGN1c3RvbUxvY2FsZXM6IHsgW2tleTogc3RyaW5nXTogTG9jYWxlIH0gPSB7fTtcbiAgLyogXG4gICAgRXhwZXJpbWVudGFsOiBJbnB1dCBwcm9wZXJ0eSBub3QgZG9jdW1lbnRlZCBvbiBwdXJwb3NlLiBcbiAgICBGb3IgY29udGV4dCBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzIwODdcbiAgKi9cbiAgQElucHV0KCkgdXNlUG9wb3ZlciA9IGZhbHNlO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHllYXIgbmF2aWdhdG9yLlxuICAgKlxuICAgKiBJbnRlcm5hbGx5LCBjYWxlbmRhciBjb21wb25lbnQ6XG4gICAqIC0gYmFzZXMgeWVhck5hdmlnYXRvck9wdGlvbnMuZnJvbSBhbmQgeWVhck5hdmlnYXRvck9wdGlvbnMudG8gb24gdG9kYXlEYXRlIGlmIGEgbnVtYmVyIGlzIHByb3ZpZGVkXG4gICAqIC0gcHJpb3JpdGl6ZXMgbWluRGF0ZSBhbmQgbWF4RGF0ZSBvdmVyIHllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20gYW5kIHllYXJOYXZpZ2F0b3JPcHRpb25zLnRvXG4gICAqL1xuICBASW5wdXQoKSB5ZWFyTmF2aWdhdG9yT3B0aW9uczogQ2FsZW5kYXJZZWFyTmF2aWdhdG9yQ29uZmlnO1xuXG4gIF9tb250aDogQ2FsZW5kYXJDZWxsW11bXTtcbiAgX3dlZWtEYXlzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBzZWxlY3RlZERheTogQ2FsZW5kYXJDZWxsO1xuICAvLyBOT1RFOiBJbnRlcm5hbGx5LCBhbGwgRGF0ZXNcbiAgLy8gYXJlIG5vcm1hbGl6ZWQgdG8gcG9pbnQgdG8gbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHRpbWV6b25lXG4gIC8vIHNldHRpbmcuXG4gIHByaXZhdGUgYWN0aXZlTW9udGg6IERhdGU7XG4gIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIHByaXZhdGUgX2VuYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIHByaXZhdGUgX3RvZGF5RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWF4RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IExvY2FsZTtcbiAgcHJpdmF0ZSB0aW1lWm9uZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBpbmNsdWRlZExvY2FsZXMgPSB7IGRhLCBlbkdCLCBlblVTIH07XG5cbiAgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZUxvY2FsT3JVVEM6IERhdGUgfCBudWxsKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWVMb2NhbE9yVVRDKTtcblxuICAgIGlmICh2YWx1ZUxvY2FsT3JVVEMpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0RhdGVDaGFuZ2VkKHZhbHVlLCB0aGlzLl9zZWxlY3RlZERhdGUpKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0ZWREYXRlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNhYmxlZERhdGVzKCk6IERhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRGF0ZXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWREYXRlcyh2YWx1ZTogRGF0ZVtdKSB7XG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9ICh2YWx1ZSB8fCBbXSkubWFwKChkYXRlKSA9PiB0aGlzLm5vcm1hbGl6ZURhdGUoZGF0ZSkpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWREYXRlcygpOiBEYXRlW10ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkRGF0ZXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZW5hYmxlZERhdGVzKHZhbHVlOiBEYXRlW10pIHtcbiAgICB0aGlzLl9lbmFibGVkRGF0ZXMgPSAodmFsdWUgfHwgW10pLm1hcCgoZGF0ZSkgPT4gdGhpcy5ub3JtYWxpemVEYXRlKGRhdGUpKTtcbiAgfVxuXG4gIGdldCB0b2RheURhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvZGF5RGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB0b2RheURhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl90b2RheURhdGUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG1pbkRhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbWluRGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmFjdGl2ZU1vbnRoICYmIGlzQmVmb3JlKHRoaXMuYWN0aXZlTW9udGgsIHZhbHVlKSkge1xuICAgICAgdGhpcy5zZXRBY3RpdmVNb250aCh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuX21pbkRhdGUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbWF4RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmFjdGl2ZU1vbnRoICYmIGlzQWZ0ZXIodGhpcy5hY3RpdmVNb250aCwgdmFsdWUpKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fbWF4RGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgYWN0aXZlTW9udGhOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhcGl0YWxpemVGaXJzdExldHRlcih0aGlzLmZvcm1hdFdpdGhMb2NhbGUodGhpcy5hY3RpdmVNb250aCwgJ01NTU0nKSk7XG4gIH1cblxuICBnZXQgYWN0aXZlWWVhcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhMb2NhbGUodGhpcy5hY3RpdmVNb250aCwgJ3l5eXknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIG5hdmlnYWJsZSB5ZWFycyBmb3IgeWVhciBuYXZpZ2F0b3IgYmFzZWQgb24geWVhck5hdmlnYXRvck9wdGlvbnMuXG4gICAqL1xuICBnZXQgbmF2aWdhYmxlWWVhcnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGRhdGVPZkZpcnN0TmF2aWdhYmxlWWVhciA9XG4gICAgICB0aGlzLm1pbkRhdGUgfHwgdGhpcy5nZXREYXRlRnJvbU5hdmlnYWJsZVllYXIodGhpcy55ZWFyTmF2aWdhdG9yT3B0aW9ucy5mcm9tKTtcblxuICAgIGNvbnN0IGRhdGVPZkxhc3ROYXZpZ2FibGVZZWFyID1cbiAgICAgIHRoaXMubWF4RGF0ZSB8fCB0aGlzLmdldERhdGVGcm9tTmF2aWdhYmxlWWVhcih0aGlzLnllYXJOYXZpZ2F0b3JPcHRpb25zLnRvKTtcblxuICAgIHJldHVybiB0aGlzLmdldFllYXJzQmV0d2VlbkRhdGVzKGRhdGVPZkZpcnN0TmF2aWdhYmxlWWVhciwgZGF0ZU9mTGFzdE5hdmlnYWJsZVllYXIpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRlZFllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2FibGVZZWFycy5pbmRleE9mKHRoaXMuYWN0aXZlWWVhcik7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhcy15ZWFyLW5hdmlnYXRvcicpXG4gIGdldCBfaGFzWWVhck5hdmlnYXRvcigpIHtcbiAgICByZXR1cm4gISF0aGlzLnllYXJOYXZpZ2F0b3JPcHRpb25zO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWxlbmRhckhlbHBlcjogQ2FsZW5kYXJIZWxwZXIsIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZykge1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy5tYXBMb2NhbGUobG9jYWxlKTtcbiAgICB0aGlzLnRpbWVab25lTmFtZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0V2l0aExvY2FsZShkYXRlOiBEYXRlLCBmb3JtYXRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZvcm1hdChkYXRlLCBmb3JtYXRTdHJpbmcsIHtcbiAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcExvY2FsZShsb2NhbGU6IHN0cmluZyk6IExvY2FsZSB7XG4gICAgaWYgKGxvY2FsZSA9PT0gJ2VuJykge1xuICAgICAgbG9jYWxlID0gJ2VuR0InOyAvLyBpZiBlbmdsaXNoIGxvY2FsZSBpcyBwcm92aWRlZCB3aXRob3V0IHJlZ2lvbiwgd2UgZGVmYXVsdCB0byBHQlxuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUucmVwbGFjZSgnLScsICcnKTtcbiAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0geyAuLi50aGlzLmluY2x1ZGVkTG9jYWxlcywgLi4udGhpcy5sb2NhbGVzLCAuLi50aGlzLmN1c3RvbUxvY2FsZXMgfTtcbiAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlc1tsb2NhbGVdIHx8IHRoaXMuaW5jbHVkZWRMb2NhbGVzLmVuR0I7IC8vIERlZmF1bHQgdG8gZW5HQiBpZiBpbmplY3RlZCBsb2NhbGUgZG9lc250IGV4aXN0XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl93ZWVrRGF5cyA9IHRoaXMuZ2V0V2Vla0RheXMoKTtcbiAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNhbGVuZGFySGVscGVyLmluaXQoXG4gICAgICB0aGlzLmNhbGVuZGFyQ29udGFpbmVyLFxuICAgICAgdGhpcy5nZXRIZWxwZXJPcHRpb25zKCksXG4gICAgICB0aGlzLl9vbkRhdGVTZWxlY3RlZC5iaW5kKHRoaXMpLFxuICAgICAgdGhpcy5vbkNoYW5nZU1vbnRoLmJpbmQodGhpcylcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hY3RpdmVNb250aCkgcmV0dXJuO1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXMuZGlzYWJsZVdlZWtlbmRzIHx8XG4gICAgICBjaGFuZ2VzLmRpc2FibGVQYXN0RGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZUZ1dHVyZURhdGVzIHx8XG4gICAgICBjaGFuZ2VzLmRpc2FibGVkRGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMuZW5hYmxlZERhdGVzIHx8XG4gICAgICBjaGFuZ2VzLm1pbkRhdGUgfHxcbiAgICAgIGNoYW5nZXMubWF4RGF0ZSB8fFxuICAgICAgY2hhbmdlcy50b2RheURhdGUgfHxcbiAgICAgIGNoYW5nZXMudGltZXpvbmVcbiAgICApIHtcbiAgICAgIHRoaXMucmVmcmVzaEFjdGl2ZU1vbnRoKCk7XG4gICAgICB0aGlzLmNhbGVuZGFySGVscGVyLnVwZGF0ZSh0aGlzLmdldEhlbHBlck9wdGlvbnMoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVNb250aChkYXRlOiBEYXRlID0gbmV3IERhdGUoKSkge1xuICAgIGlmICghdGhpcy5hY3RpdmVNb250aCB8fCAhaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgZGF0ZSkpIHtcbiAgICAgIHRoaXMuYWN0aXZlTW9udGggPSBzdGFydE9mTW9udGgoZGF0ZSk7XG4gICAgICB0aGlzLnJlZnJlc2hBY3RpdmVNb250aCgpO1xuICAgICAgdGhpcy5jYWxlbmRhckhlbHBlci51cGRhdGUodGhpcy5nZXRIZWxwZXJPcHRpb25zKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBsZW5pZW5jeSwgdGhlIGNvbXBvbmVudCB3aWxsIGFjY2VwdCBhbnkgRGF0ZSB0aGF0IHBvaW50cyB0byBlaXRoZXIgVVRDIG1pZG5pZ2h0XG4gIC8vIG9yIHRvIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0IGFsdGhvdWdoIHdlIHdpbGwgaW50ZXJuYWxseSBub3JtYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uXG4gIC8vIG9mIGFsbCByZWNlaXZlZCBkYXRlcyB0byBwb2ludCB0byBsb2NhbCB0aW1lem9uZSBtaWRuaWdodC5cbiAgLy8gV2UgY3VycmVudGx5IGxvZyBubyB3YXJuaW5ncyBpZiB0aGUgZGF0ZSBkb2Vzbid0IG1hdGNoIHRoZSB0aW1lem9uZSBzZXR0aW5nIG9yXG4gIC8vIGlmIGl0IGRvZXNuJ3QgcG9pbnQgdG8gbWlkbmlnaHQuXG4gIHByaXZhdGUgbm9ybWFsaXplRGF0ZShkYXRlTG9jYWxPclVUQzogRGF0ZSkge1xuICAgIGlmICghZGF0ZUxvY2FsT3JVVEMpIHJldHVybjtcblxuICAgIGlmIChzdGFydE9mRGF5KGRhdGVMb2NhbE9yVVRDKS5nZXRUaW1lKCkgPT09IGRhdGVMb2NhbE9yVVRDLmdldFRpbWUoKSkge1xuICAgICAgLy8gZGF0ZSBpcyBsb2NhbCB0aW1lem9uZSBtaWRuaWdodFxuICAgICAgcmV0dXJuIGRhdGVMb2NhbE9yVVRDO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBzdGFydE9mRGF5KHV0Y1RvWm9uZWRUaW1lKGRhdGVMb2NhbE9yVVRDLCB0aGlzLnRpbWVab25lTmFtZSkpLmdldFRpbWUoKSA9PT1cbiAgICAgIHV0Y1RvWm9uZWRUaW1lKGRhdGVMb2NhbE9yVVRDLCB0aGlzLnRpbWVab25lTmFtZSkuZ2V0VGltZSgpXG4gICAgKSB7XG4gICAgICAvLyB0aGUgZGF0ZSBpcyBhIFVUQyBtaWRuaWdodDsgY3JlYXRlIHRoZSBlcXVpdmFsZW50IGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0IGRhdGVcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVVENkYXRlID0gdXRjVG9ab25lZFRpbWUoZGF0ZUxvY2FsT3JVVEMsIHRoaXMudGltZVpvbmVOYW1lKTtcbiAgICAgIHJldHVybiBub3JtYWxpemVkVVRDZGF0ZTtcbiAgICB9XG4gICAgLy8gZG9lcyBub3QgcG9pbnQgdG8gbWlkbmlnaHQgc28gd2UgbWFrZSBpdFxuICAgIHJldHVybiBzdGFydE9mRGF5KGRhdGVMb2NhbE9yVVRDKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2Vla0RheXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgd2VlayA9IGVhY2hEYXlPZkludGVydmFsKHtcbiAgICAgIHN0YXJ0OiBzdGFydE9mV2Vlayhub3csIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KSxcbiAgICAgIGVuZDogZW5kT2ZXZWVrKG5vdywgeyBsb2NhbGU6IHRoaXMubG9jYWxlIH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHdlZWsubWFwKChkYXRlKSA9PiB0aGlzLmdldEZpcnN0TGV0dGVyT2ZXZWVrRGF5Q2FwaXRhbGl6ZWQoZGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaXJzdExldHRlck9mV2Vla0RheUNhcGl0YWxpemVkKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRXaXRoTG9jYWxlKGRhdGUsICdFRUVFRScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEYXRlQ2hhbmdlZChuZXdEYXRlOiBEYXRlLCBwcmV2aW91c0RhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAoIW5ld0RhdGUgJiYgIXByZXZpb3VzRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobmV3RGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIXByZXZpb3VzRGF0ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAhaXNTYW1lRGF5KG5ld0RhdGUsIHByZXZpb3VzRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzRGlzYWJsZWREYXRlKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGRpc2FibGVkRGF0ZSkgPT4gaXNTYW1lRGF5KGRpc2FibGVkRGF0ZSwgZGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VuYWJsZWREYXRlKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fZW5hYmxlZERhdGVzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgdGhpcy5lbmFibGVkRGF0ZXMuc29tZSgoZW5hYmxlZERhdGUpID0+IGlzU2FtZURheShlbmFibGVkRGF0ZSwgZGF0ZSkpXG4gICAgKTtcbiAgfVxuXG4gIHJlZnJlc2hBY3RpdmVNb250aCgpIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlTW9udGgpIHJldHVybjtcblxuICAgIGNvbnN0IG1vbnRoU3RhcnQgPSBzdGFydE9mTW9udGgodGhpcy5hY3RpdmVNb250aCk7XG4gICAgY29uc3Qgc3RhcnRPZkZpcnN0V2VlayA9IHN0YXJ0T2ZXZWVrKG1vbnRoU3RhcnQsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KTtcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudG9kYXlEYXRlID8gc3RhcnRPZkRheSh0aGlzLnRvZGF5RGF0ZSkgOiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xuXG4gICAgY29uc3QgdG90YWxOdW1iZXJPZkRheXMgPSA0MjsgLy8gQWx3YXlzIHNob3cgNDIgZGF5cyAoNiB3ZWVrcykgaW4gY2FsZW5kYXJcbiAgICBjb25zdCBkYXlzQXJyYXkgPSBBcnJheS5mcm9tKEFycmF5KHRvdGFsTnVtYmVyT2ZEYXlzKS5rZXlzKCkpO1xuXG4gICAgY29uc3QgZGF5czogQ2FsZW5kYXJDZWxsW10gPSBkYXlzQXJyYXkubWFwKChudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGNlbGxEYXRlID0gYWRkKHN0YXJ0T2ZGaXJzdFdlZWssIHsgW1RpbWVVbml0LmRheXNdOiBudW1iZXIgfSk7XG4gICAgICBjb25zdCBkYXkgPSB0aGlzLmdldENhbGVuZGFyRGF5KGNlbGxEYXRlLCB0b2RheSwgbW9udGhTdGFydCk7XG5cbiAgICAgIGNvbnN0IGlzU2VsZWN0YWJsZSA9IHRoaXMuaXNTZWxlY3RhYmxlKGRheSwgY2VsbERhdGUpO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGlzU2FtZURheSh0aGlzLnNlbGVjdGVkRGF0ZSwgY2VsbERhdGUpO1xuICAgICAgY29uc3QgY2VsbDogQ2FsZW5kYXJDZWxsID0ge1xuICAgICAgICBkYXRlOiBjZWxsRGF0ZS5nZXREYXRlKCksXG4gICAgICAgIG1vbnRoSW5kZXg6IGNlbGxEYXRlLmdldE1vbnRoKCksXG4gICAgICAgIHllYXI6IGNlbGxEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGlzQ3VycmVudE1vbnRoOiBkYXkuaXNDdXJyZW50TW9udGgsXG4gICAgICAgIGlzU2VsZWN0YWJsZSxcbiAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgY3NzQ2xhc3NlczogdGhpcy5nZXRDc3NDbGFzc2VzKGRheSwgaXNTZWxlY3RhYmxlLCBpc1NlbGVjdGVkKSxcbiAgICAgIH07XG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gY2VsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjZWxsO1xuICAgIH0pO1xuICAgIHRoaXMuX21vbnRoID0gdGhpcy5jaHVuayhkYXlzLCA3KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FsZW5kYXJEYXkoZGF0ZTogRGF0ZSwgdG9kYXk6IERhdGUsIG1vbnRoU3RhcnQ6IERhdGUpOiBDYWxlbmRhckRheSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVG9kYXk6IGlzU2FtZURheSh0b2RheSwgZGF0ZSksXG4gICAgICBpc1Bhc3Q6IGlzQmVmb3JlKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzRnV0dXJlOiBpc0FmdGVyKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzV2Vla2VuZDogaXNXZWVrZW5kKGRhdGUpLFxuICAgICAgaXNDdXJyZW50TW9udGg6IGlzU2FtZU1vbnRoKGRhdGUsIG1vbnRoU3RhcnQpLFxuICAgICAgaXNEaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkRGF0ZShkYXRlKSB8fCAhdGhpcy5pc0VuYWJsZWREYXRlKGRhdGUpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZWN0YWJsZShkYXk6IENhbGVuZGFyRGF5LCBkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmFsd2F5c0VuYWJsZVRvZGF5ICYmIGRheS5pc1RvZGF5KSB8fFxuICAgICAgKCFkYXkuaXNEaXNhYmxlZCAmJlxuICAgICAgICAhKHRoaXMuZGlzYWJsZVdlZWtlbmRzICYmIGRheS5pc1dlZWtlbmQpICYmXG4gICAgICAgICEodGhpcy5kaXNhYmxlUGFzdERhdGVzICYmIGRheS5pc1Bhc3QpICYmXG4gICAgICAgICEodGhpcy5kaXNhYmxlRnV0dXJlRGF0ZXMgJiYgZGF5LmlzRnV0dXJlKSAmJlxuICAgICAgICAhKHRoaXMubWluRGF0ZSAmJiBpc0JlZm9yZShkYXRlLCB0aGlzLm1pbkRhdGUpKSAmJlxuICAgICAgICAhKHRoaXMubWF4RGF0ZSAmJiBpc0FmdGVyKGRhdGUsIHRoaXMubWF4RGF0ZSkpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldENzc0NsYXNzZXMoZGF5OiBDYWxlbmRhckRheSwgaXNTZWxlY3RhYmxlOiBib29sZWFuLCBpc1NlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHtcbiAgICAgICdjdXJyZW50LW1vbnRoJzogZGF5LmlzQ3VycmVudE1vbnRoLFxuICAgICAgd2Vla2VuZDogZGF5LmlzV2Vla2VuZCxcbiAgICAgIHRvZGF5OiBkYXkuaXNUb2RheSxcbiAgICAgIHNlbGVjdGFibGU6IGlzU2VsZWN0YWJsZSxcbiAgICAgIHNlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgcGFzdDogZGF5LmlzUGFzdCxcbiAgICAgIGRpc2FibGVkOiBkYXkuaXNEaXNhYmxlZCxcbiAgICB9O1xuICAgIGxldCBjc3NDbGFzc1N0cmluZyA9ICdkYXknO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNzc0NsYXNzZXMpIHtcbiAgICAgIGlmIChjc3NDbGFzc2VzW2tleV0pIHtcbiAgICAgICAgY3NzQ2xhc3NTdHJpbmcgKz0gJyAnICsga2V5O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3NzQ2xhc3NTdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIGNodW5rKGFycmF5OiBhbnlbXSwgc2l6ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgIHdoaWxlIChhcnJheS5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdHMucHVzaChhcnJheS5zcGxpY2UoMCwgc2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIHByaXZhdGUgb25TZWxlY3RlZERhdGVDaGFuZ2UobmV3RGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5LmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdEYXkgPSB0aGlzLmdldENlbGwobmV3RGF0ZSk7XG4gICAgaWYgKG5ld0RheSkge1xuICAgICAgbmV3RGF5LmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RlZERheSA9IG5ld0RheTtcbiAgICB9XG5cbiAgICBpZiAobmV3RGF0ZSkge1xuICAgICAgdGhpcy5jYWxlbmRhckhlbHBlci5zZXRTZWxlY3RlZERheShuZXdEYXRlLmdldERhdGUoKSk7XG4gICAgfVxuICB9XG5cbiAgX29uRGF0ZVNlbGVjdGVkKG5ld0RheTogQ2FsZW5kYXJDZWxsKSB7XG4gICAgaWYgKCFuZXdEYXkuaXNTZWxlY3RhYmxlKSByZXR1cm47XG5cbiAgICBsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKG5ld0RheS55ZWFyLCBuZXdEYXkubW9udGhJbmRleCwgbmV3RGF5LmRhdGUpO1xuXG4gICAgaWYgKHRoaXMudGltZXpvbmUgPT09ICdVVEMnKSB7XG4gICAgICBuZXdEYXRlID0gem9uZWRUaW1lVG9VdGModGhpcy5zdWJ0cmFjdFRpbWV6b25lT2Zmc2V0KG5ld0RhdGUpLCB0aGlzLnRpbWVab25lTmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZVRvRW1pdCA9IG5ld0RhdGU7XG5cbiAgICBpZiAodGhpcy5oYXNEYXRlQ2hhbmdlZChuZXdEYXRlLCB0aGlzLl9zZWxlY3RlZERhdGUpKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKG5ld0RhdGUpO1xuICAgICAgdGhpcy5vblNlbGVjdGVkRGF0ZUNoYW5nZShuZXdEYXRlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IG5ld0RhdGU7XG4gICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChkYXRlVG9FbWl0KTtcbiAgICB9XG4gICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQoZGF0ZVRvRW1pdCk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlTW9udGgoZGlyZWN0aW9uOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jaGFuZ2VNb250aChkaXJlY3Rpb24pO1xuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIudXBkYXRlKHRoaXMuZ2V0SGVscGVyT3B0aW9ucygpKTtcbiAgfVxuXG4gIF9jaGFuZ2VNb250aChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGFuZ2VBY3RpdmVWaWV3KGluZGV4LCBUaW1lVW5pdC5tb250aHMpO1xuICAgIGluZGV4ID4gMFxuICAgICAgPyB0aGlzLm5leHRNb250aENsaWNrZWQuZW1pdCh0aGlzLmFjdGl2ZU1vbnRoKVxuICAgICAgOiB0aGlzLnByZXZpb3VzTW9udGhDbGlja2VkLmVtaXQodGhpcy5hY3RpdmVNb250aCk7XG4gIH1cblxuICBfY2hhbmdlWWVhcih5ZWFyOiBzdHJpbmcpIHtcbiAgICBjb25zdCB5ZWFyTnVtZXJpYyA9IE51bWJlcih5ZWFyKTtcbiAgICB0aGlzLmNoYW5nZUFjdGl2ZVZpZXcoeWVhck51bWVyaWMgLSBnZXRZZWFyKHRoaXMuYWN0aXZlTW9udGgpLCBUaW1lVW5pdC55ZWFycyk7XG4gICAgdGhpcy55ZWFyU2VsZWN0LmVtaXQoeWVhck51bWVyaWMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VBY3RpdmVWaWV3KGluZGV4OiBudW1iZXIsIHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgaWYgKGluZGV4ID09PSAwKSByZXR1cm47XG4gICAgdGhpcy5hY3RpdmVNb250aCA9IGFkZCh0aGlzLmFjdGl2ZU1vbnRoLCB7IFt1bml0XTogaW5kZXggfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hBY3RpdmVNb250aCgpO1xuICB9XG5cbiAgZ2V0IF9jYW5OYXZpZ2F0ZUJhY2soKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVhY2hlZFBhc3REYXRlc0xpbWl0ID1cbiAgICAgIHRoaXMuZGlzYWJsZVBhc3REYXRlcyAmJiBpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLnRvZGF5RGF0ZSk7XG5cbiAgICBjb25zdCByZWFjaGVkT3JFeGNlZWRlZE1pbkRhdGUgPVxuICAgICAgdGhpcy5taW5EYXRlICYmXG4gICAgICAoaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgdGhpcy5taW5EYXRlKSB8fCBpc0JlZm9yZSh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLm1pbkRhdGUpKTtcblxuICAgIHJldHVybiAhcmVhY2hlZFBhc3REYXRlc0xpbWl0ICYmICFyZWFjaGVkT3JFeGNlZWRlZE1pbkRhdGU7XG4gIH1cblxuICBnZXQgX2Nhbk5hdmlnYXRlRm9yd2FyZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWFjaGVkRnV0dXJlRGF0ZXNMaW1pdCA9XG4gICAgICB0aGlzLmRpc2FibGVGdXR1cmVEYXRlcyAmJiBpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLnRvZGF5RGF0ZSk7XG5cbiAgICBjb25zdCByZWFjaGVkT3JFeGNlZWRlZE1heERhdGUgPVxuICAgICAgdGhpcy5tYXhEYXRlICYmXG4gICAgICAoaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgdGhpcy5tYXhEYXRlKSB8fCBpc0FmdGVyKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMubWF4RGF0ZSkpO1xuXG4gICAgcmV0dXJuICFyZWFjaGVkRnV0dXJlRGF0ZXNMaW1pdCAmJiAhcmVhY2hlZE9yRXhjZWVkZWRNYXhEYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDZWxsKGRhdGU6IERhdGUpIHtcbiAgICBsZXQgZm91bmREYXk6IENhbGVuZGFyQ2VsbCA9IG51bGw7XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIGZvciAoY29uc3Qgd2VlayBvZiB0aGlzLl9tb250aCkge1xuICAgICAgICBmb3VuZERheSA9IHdlZWsuZmluZCgoZGF5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRheS5pc0N1cnJlbnRNb250aCAmJiBkYXkuZGF0ZSA9PT0gZGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZm91bmREYXkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm91bmREYXk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlbHBlck9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FuTmF2aWdhdGVCYWNrOiB0aGlzLl9jYW5OYXZpZ2F0ZUJhY2ssXG4gICAgICBjYW5OYXZpZ2F0ZUZvcndhcmQ6IHRoaXMuX2Nhbk5hdmlnYXRlRm9yd2FyZCxcbiAgICAgIHllYXI6IHRoaXMuYWN0aXZlWWVhcixcbiAgICAgIG1vbnRoTmFtZTogdGhpcy5hY3RpdmVNb250aE5hbWUsXG4gICAgICB3ZWVrRGF5czogdGhpcy5fd2Vla0RheXMsXG4gICAgICBtb250aDogdGhpcy5fbW9udGgsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3VidHJhY3RUaW1lem9uZU9mZnNldChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbk1zID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHRpbWV6b25lT2Zmc2V0SW5Ncyk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVGcm9tTmF2aWdhYmxlWWVhcihuYXZpZ2FibGVZZWFyOiBudW1iZXIgfCBEYXRlKTogRGF0ZSB7XG4gICAgaWYgKG5hdmlnYWJsZVllYXIgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gbmF2aWdhYmxlWWVhcjtcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudG9kYXlEYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyBuYXZpZ2FibGVZZWFyLCAwLCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nW10ge1xuICAgIC8vIEVuc3VyZSB5ZWFycyBhcmUgb3JkZXJlZCBjb3JyZWN0bHkgaWYgcGFyYW1ldGVycyBhcmUgc3dpdGNoZWQ6XG4gICAgY29uc3QgW3N0YXJ0WWVhciwgZW5kWWVhcl0gPSBbc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIGVuZERhdGUuZ2V0RnVsbFllYXIoKV0uc29ydCgpO1xuICAgIGNvbnN0IG51bWJlck9mWWVhcnMgPSBlbmRZZWFyIC0gc3RhcnRZZWFyO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1iZXJPZlllYXJzICsgMSB9LCAoXywgaSkgPT4gKHN0YXJ0WWVhciArIGkpLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJtb250aC1uYXZpZ2F0b3JcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhX2Nhbk5hdmlnYXRlQmFja1wiXG4gICAgICAoY2xpY2spPVwiX2NoYW5nZU1vbnRoKC0xKVwiXG4gICAgICBraXJieS1idXR0b25cbiAgICAgIFtub0RlY29yYXRpb25dPVwidHJ1ZVwiXG4gICAgICBjbGFzcz1cIm5vLW1hcmdpblwiXG4gICAgPlxuICAgICAgPGtpcmJ5LWljb24gbmFtZT1cImFycm93LWJhY2tcIj48L2tpcmJ5LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGgtYW5kLXllYXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibW9udGhcIj57eyBhY3RpdmVNb250aE5hbWUgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFfaGFzWWVhck5hdmlnYXRvclwiIGNsYXNzPVwieWVhclwiPnt7IGFjdGl2ZVllYXIgfX08L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhX2Nhbk5hdmlnYXRlRm9yd2FyZFwiXG4gICAgICAoY2xpY2spPVwiX2NoYW5nZU1vbnRoKDEpXCJcbiAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgW25vRGVjb3JhdGlvbl09XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwibm8tbWFyZ2luXCJcbiAgICA+XG4gICAgICA8a2lyYnktaWNvbiBuYW1lPVwiYXJyb3ctbW9yZVwiPjwva2lyYnktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxraXJieS1kcm9wZG93blxuICAgICpuZ0lmPVwiX2hhc1llYXJOYXZpZ2F0b3JcIlxuICAgIFt1c2VQb3BvdmVyXT1cInVzZVBvcG92ZXJcIlxuICAgIFtzZWxlY3RlZEluZGV4XT1cIm5hdmlnYXRlZFllYXJcIlxuICAgIFtpdGVtc109XCJuYXZpZ2FibGVZZWFyc1wiXG4gICAgcG9wb3V0PVwibGVmdFwiXG4gICAgKGNoYW5nZSk9XCJfY2hhbmdlWWVhcigkZXZlbnQpXCJcbiAgPjwva2lyYnktZHJvcGRvd24+XG48L2Rpdj5cblxuPHRhYmxlPlxuICA8dGhlYWQ+XG4gICAgPHRyPlxuICAgICAgPHRoICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIF93ZWVrRGF5c1wiPnt7IHdlZWtEYXkgfX08L3RoPlxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG5cbiAgPHRib2R5PlxuICAgIDx0ciAqbmdGb3I9XCJsZXQgd2VlayBvZiBfbW9udGhcIj5cbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIChjbGljayk9XCJfb25EYXRlU2VsZWN0ZWQoZGF5KVwiXG4gICAgICAgICAgY2xhc3M9XCJ7eyBkYXkuY3NzQ2xhc3NlcyB9fSBjb250YWluLXN0YXRlLWxheWVyXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LmlzU2VsZWN0ZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0ZS1sYXllclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRlbnQtbGF5ZXJcIj57eyBkYXkuZGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuXG48IS0tIDxpZnJhbWUgc3JjPVwia2lyYnkvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci53ZWJ2aWV3Lmh0bWxcIiAjY2FsZW5kYXJDb250YWluZXIgc3R5bGU9XCJ3aWR0aDogMzIwcHg7IGhlaWdodDogMzA0cHg7IGJvcmRlcjogMFwiPiAtLT5cbiJdfQ==
447
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixPQUFPLEVBQ1AsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsR0FDWixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFhM0QsSUFBSyxRQVNKO0FBVEQsV0FBSyxRQUFRO0lBQ1gsMkJBQWUsQ0FBQTtJ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QVU7c0JBQWxCLEtBQUs7Z0JBUUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQXVCTyxZQUFZO3NCQUF4QixLQUFLO2dCQWlCTyxhQUFhO3NCQUF6QixLQUFLO2dCQVFPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBUU8sU0FBUztzQkFBckIsS0FBSztnQkFRTyxPQUFPO3NCQUFuQixLQUFLO2dCQVdPLE9BQU87c0JBQW5CLEtBQUs7Z0JBaUNGLGlCQUFpQjtzQkFEcEIsV0FBVzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZCxcbiAgZWFjaERheU9mSW50ZXJ2YWwsXG4gIGVuZE9mV2VlayxcbiAgZm9ybWF0LFxuICBnZXRZZWFyLFxuICBpc0FmdGVyLFxuICBpc0JlZm9yZSxcbiAgaXNTYW1lRGF5LFxuICBpc1NhbWVNb250aCxcbiAgaXNXZWVrZW5kLFxuICBMb2NhbGUgYXMgTG9jYWxlRGF0ZUZucyxcbiAgc3RhcnRPZkRheSxcbiAgc3RhcnRPZk1vbnRoLFxuICBzdGFydE9mV2Vlayxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUsIHpvbmVkVGltZVRvVXRjIH0gZnJvbSAnZGF0ZS1mbnMtdHonO1xuaW1wb3J0IHsgZGEsIGVuR0IsIGVuVVMgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUnO1xuXG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pY29uJztcblxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2Ryb3Bkb3duJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQ2VsbCB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1jZWxsLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1vcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2NhbGVuZGFyLmhlbHBlcic7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJOYXZpZ2F0b3JDb25maWcgfSBmcm9tICcuL29wdGlvbnMvY2FsZW5kYXIteWVhci1uYXZpZ2F0b3ItY29uZmlnJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlID0gTG9jYWxlRGF0ZUZucztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1RvZGF5OiBib29sZWFuO1xuICBpc1dlZWtlbmQ6IGJvb2xlYW47XG4gIGlzUGFzdDogYm9vbGVhbjtcbiAgaXNGdXR1cmU6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmVudW0gVGltZVVuaXQge1xuICB5ZWFycyA9ICd5ZWFycycsXG4gIG1vbnRocyA9ICdtb250aHMnLFxuICB3ZWVrcyA9ICd3ZWVrcycsXG4gIGRheXMgPSAnZGF5cycsXG4gIGhvdXJzID0gJ2hvdXJzJyxcbiAgbWludXRlcyA9ICdtaW51dGVzJyxcbiAgc2Vjb25kcyA9ICdzZWNvbmRzJyxcbiAgbWlsbGlzZWNvbmRzID0gJ21pbGxpc2Vjb25kcycsXG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRHJvcGRvd25Nb2R1bGUsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdraXJieS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NhbGVuZGFySGVscGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhbGVuZGFyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSB5ZWFyU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwcmV2aW91c01vbnRoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIG5leHRNb250aENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBJbnB1dCgpIHRpbWV6b25lOiAnbG9jYWwnIHwgJ1VUQycgPSAnbG9jYWwnO1xuICBASW5wdXQoKSBkaXNhYmxlV2Vla2VuZHMgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlRnV0dXJlRGF0ZXMgPSBmYWxzZTtcbiAgQElucHV0KCkgYWx3YXlzRW5hYmxlVG9kYXkgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgbG9jYWxlcyhsb2NhbGVzOiB7IFtrZXk6IHN0cmluZ106IExvY2FsZSB9KSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYFN1cHBseWluZyBhZGRpdGlvbmFsIGxvY2FsZXMgdG8gdGhlIEtpcmJ5IENhbGVuZGFyIENvbXBvbmVudCB2aWEgYW4gaW5wdXQgcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBcbiAgICAgICAgQSBmdXR1cmUgdXBkYXRlIHdpbGwgYWxsb3cgaW5qZWN0aW5nIGFkZGl0aW9uYWwgbG9jYWxlcyB2aWEgYSBwcm92aWRlciBpbnN0ZWFkLmBcbiAgICApO1xuICB9XG4gIEBJbnB1dCgpIGN1c3RvbUxvY2FsZXM6IHsgW2tleTogc3RyaW5nXTogTG9jYWxlIH0gPSB7fTtcbiAgLyogXG4gICAgRXhwZXJpbWVudGFsOiBJbnB1dCBwcm9wZXJ0eSBub3QgZG9jdW1lbnRlZCBvbiBwdXJwb3NlLiBcbiAgICBGb3IgY29udGV4dCBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzIwODdcbiAgKi9cbiAgQElucHV0KCkgdXNlUG9wb3ZlciA9IGZhbHNlO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHllYXIgbmF2aWdhdG9yLlxuICAgKlxuICAgKiBJbnRlcm5hbGx5LCBjYWxlbmRhciBjb21wb25lbnQ6XG4gICAqIC0gYmFzZXMgeWVhck5hdmlnYXRvck9wdGlvbnMuZnJvbSBhbmQgeWVhck5hdmlnYXRvck9wdGlvbnMudG8gb24gdG9kYXlEYXRlIGlmIGEgbnVtYmVyIGlzIHByb3ZpZGVkXG4gICAqIC0gcHJpb3JpdGl6ZXMgbWluRGF0ZSBhbmQgbWF4RGF0ZSBvdmVyIHllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20gYW5kIHllYXJOYXZpZ2F0b3JPcHRpb25zLnRvXG4gICAqL1xuICBASW5wdXQoKSB5ZWFyTmF2aWdhdG9yT3B0aW9uczogQ2FsZW5kYXJZZWFyTmF2aWdhdG9yQ29uZmlnO1xuXG4gIF9tb250aDogQ2FsZW5kYXJDZWxsW11bXTtcbiAgX3dlZWtEYXlzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBzZWxlY3RlZERheTogQ2FsZW5kYXJDZWxsO1xuICAvLyBOT1RFOiBJbnRlcm5hbGx5LCBhbGwgRGF0ZXNcbiAgLy8gYXJlIG5vcm1hbGl6ZWQgdG8gcG9pbnQgdG8gbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHRpbWV6b25lXG4gIC8vIHNldHRpbmcuXG4gIHByaXZhdGUgYWN0aXZlTW9udGg6IERhdGU7XG4gIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIHByaXZhdGUgX2VuYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIHByaXZhdGUgX3RvZGF5RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWF4RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IExvY2FsZTtcbiAgcHJpdmF0ZSB0aW1lWm9uZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBpbmNsdWRlZExvY2FsZXMgPSB7IGRhLCBlbkdCLCBlblVTIH07XG5cbiAgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZUxvY2FsT3JVVEM6IERhdGUgfCBudWxsKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWVMb2NhbE9yVVRDKTtcblxuICAgIGlmICh2YWx1ZUxvY2FsT3JVVEMpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0RhdGVDaGFuZ2VkKHZhbHVlLCB0aGlzLl9zZWxlY3RlZERhdGUpKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0ZWREYXRlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNhYmxlZERhdGVzKCk6IERhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRGF0ZXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWREYXRlcyh2YWx1ZTogRGF0ZVtdKSB7XG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9ICh2YWx1ZSB8fCBbXSkubWFwKChkYXRlKSA9PiB0aGlzLm5vcm1hbGl6ZURhdGUoZGF0ZSkpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWREYXRlcygpOiBEYXRlW10ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkRGF0ZXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZW5hYmxlZERhdGVzKHZhbHVlOiBEYXRlW10pIHtcbiAgICB0aGlzLl9lbmFibGVkRGF0ZXMgPSAodmFsdWUgfHwgW10pLm1hcCgoZGF0ZSkgPT4gdGhpcy5ub3JtYWxpemVEYXRlKGRhdGUpKTtcbiAgfVxuXG4gIGdldCB0b2RheURhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvZGF5RGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB0b2RheURhdGUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl90b2RheURhdGUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG1pbkRhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbWluRGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmFjdGl2ZU1vbnRoICYmIGlzQmVmb3JlKHRoaXMuYWN0aXZlTW9udGgsIHZhbHVlKSkge1xuICAgICAgdGhpcy5zZXRBY3RpdmVNb250aCh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuX21pbkRhdGUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbWF4RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmFjdGl2ZU1vbnRoICYmIGlzQWZ0ZXIodGhpcy5hY3RpdmVNb250aCwgdmFsdWUpKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fbWF4RGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgYWN0aXZlTW9udGhOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhcGl0YWxpemVGaXJzdExldHRlcih0aGlzLmZvcm1hdFdpdGhMb2NhbGUodGhpcy5hY3RpdmVNb250aCwgJ01NTU0nKSk7XG4gIH1cblxuICBnZXQgYWN0aXZlWWVhcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhMb2NhbGUodGhpcy5hY3RpdmVNb250aCwgJ3l5eXknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIG5hdmlnYWJsZSB5ZWFycyBmb3IgeWVhciBuYXZpZ2F0b3IgYmFzZWQgb24geWVhck5hdmlnYXRvck9wdGlvbnMuXG4gICAqL1xuICBnZXQgbmF2aWdhYmxlWWVhcnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGRhdGVPZkZpcnN0TmF2aWdhYmxlWWVhciA9XG4gICAgICB0aGlzLm1pbkRhdGUgfHwgdGhpcy5nZXREYXRlRnJvbU5hdmlnYWJsZVllYXIodGhpcy55ZWFyTmF2aWdhdG9yT3B0aW9ucy5mcm9tKTtcblxuICAgIGNvbnN0IGRhdGVPZkxhc3ROYXZpZ2FibGVZZWFyID1cbiAgICAgIHRoaXMubWF4RGF0ZSB8fCB0aGlzLmdldERhdGVGcm9tTmF2aWdhYmxlWWVhcih0aGlzLnllYXJOYXZpZ2F0b3JPcHRpb25zLnRvKTtcblxuICAgIHJldHVybiB0aGlzLmdldFllYXJzQmV0d2VlbkRhdGVzKGRhdGVPZkZpcnN0TmF2aWdhYmxlWWVhciwgZGF0ZU9mTGFzdE5hdmlnYWJsZVllYXIpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRlZFllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2FibGVZZWFycy5pbmRleE9mKHRoaXMuYWN0aXZlWWVhcik7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhhcy15ZWFyLW5hdmlnYXRvcicpXG4gIGdldCBfaGFzWWVhck5hdmlnYXRvcigpIHtcbiAgICByZXR1cm4gISF0aGlzLnllYXJOYXZpZ2F0b3JPcHRpb25zO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWxlbmRhckhlbHBlcjogQ2FsZW5kYXJIZWxwZXIsIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZykge1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy5tYXBMb2NhbGUobG9jYWxlKTtcbiAgICB0aGlzLnRpbWVab25lTmFtZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0V2l0aExvY2FsZShkYXRlOiBEYXRlLCBmb3JtYXRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZvcm1hdChkYXRlLCBmb3JtYXRTdHJpbmcsIHtcbiAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcExvY2FsZShsb2NhbGU6IHN0cmluZyk6IExvY2FsZSB7XG4gICAgaWYgKGxvY2FsZSA9PT0gJ2VuJykge1xuICAgICAgbG9jYWxlID0gJ2VuR0InOyAvLyBpZiBlbmdsaXNoIGxvY2FsZSBpcyBwcm92aWRlZCB3aXRob3V0IHJlZ2lvbiwgd2UgZGVmYXVsdCB0byBHQlxuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUucmVwbGFjZSgnLScsICcnKTtcbiAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0geyAuLi50aGlzLmluY2x1ZGVkTG9jYWxlcywgLi4udGhpcy5sb2NhbGVzLCAuLi50aGlzLmN1c3RvbUxvY2FsZXMgfTtcbiAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlc1tsb2NhbGVdIHx8IHRoaXMuaW5jbHVkZWRMb2NhbGVzLmVuR0I7IC8vIERlZmF1bHQgdG8gZW5HQiBpZiBpbmplY3RlZCBsb2NhbGUgZG9lc250IGV4aXN0XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl93ZWVrRGF5cyA9IHRoaXMuZ2V0V2Vla0RheXMoKTtcbiAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNhbGVuZGFySGVscGVyLmluaXQoXG4gICAgICB0aGlzLmNhbGVuZGFyQ29udGFpbmVyLFxuICAgICAgdGhpcy5nZXRIZWxwZXJPcHRpb25zKCksXG4gICAgICB0aGlzLl9vbkRhdGVTZWxlY3RlZC5iaW5kKHRoaXMpLFxuICAgICAgdGhpcy5vbkNoYW5nZU1vbnRoLmJpbmQodGhpcylcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hY3RpdmVNb250aCkgcmV0dXJuO1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXMuZGlzYWJsZVdlZWtlbmRzIHx8XG4gICAgICBjaGFuZ2VzLmRpc2FibGVQYXN0RGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZUZ1dHVyZURhdGVzIHx8XG4gICAgICBjaGFuZ2VzLmRpc2FibGVkRGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMuZW5hYmxlZERhdGVzIHx8XG4gICAgICBjaGFuZ2VzLm1pbkRhdGUgfHxcbiAgICAgIGNoYW5nZXMubWF4RGF0ZSB8fFxuICAgICAgY2hhbmdlcy50b2RheURhdGUgfHxcbiAgICAgIGNoYW5nZXMudGltZXpvbmVcbiAgICApIHtcbiAgICAgIHRoaXMucmVmcmVzaEFjdGl2ZU1vbnRoKCk7XG4gICAgICB0aGlzLmNhbGVuZGFySGVscGVyLnVwZGF0ZSh0aGlzLmdldEhlbHBlck9wdGlvbnMoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVNb250aChkYXRlOiBEYXRlID0gbmV3IERhdGUoKSkge1xuICAgIGlmICghdGhpcy5hY3RpdmVNb250aCB8fCAhaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgZGF0ZSkpIHtcbiAgICAgIHRoaXMuYWN0aXZlTW9udGggPSBzdGFydE9mTW9udGgoZGF0ZSk7XG4gICAgICB0aGlzLnJlZnJlc2hBY3RpdmVNb250aCgpO1xuICAgICAgdGhpcy5jYWxlbmRhckhlbHBlci51cGRhdGUodGhpcy5nZXRIZWxwZXJPcHRpb25zKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBsZW5pZW5jeSwgdGhlIGNvbXBvbmVudCB3aWxsIGFjY2VwdCBhbnkgRGF0ZSB0aGF0IHBvaW50cyB0byBlaXRoZXIgVVRDIG1pZG5pZ2h0XG4gIC8vIG9yIHRvIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0IGFsdGhvdWdoIHdlIHdpbGwgaW50ZXJuYWxseSBub3JtYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uXG4gIC8vIG9mIGFsbCByZWNlaXZlZCBkYXRlcyB0byBwb2ludCB0byBsb2NhbCB0aW1lem9uZSBtaWRuaWdodC5cbiAgLy8gV2UgY3VycmVudGx5IGxvZyBubyB3YXJuaW5ncyBpZiB0aGUgZGF0ZSBkb2Vzbid0IG1hdGNoIHRoZSB0aW1lem9uZSBzZXR0aW5nIG9yXG4gIC8vIGlmIGl0IGRvZXNuJ3QgcG9pbnQgdG8gbWlkbmlnaHQuXG4gIHByaXZhdGUgbm9ybWFsaXplRGF0ZShkYXRlTG9jYWxPclVUQzogRGF0ZSkge1xuICAgIGlmICghZGF0ZUxvY2FsT3JVVEMpIHJldHVybjtcblxuICAgIGlmIChzdGFydE9mRGF5KGRhdGVMb2NhbE9yVVRDKS5nZXRUaW1lKCkgPT09IGRhdGVMb2NhbE9yVVRDLmdldFRpbWUoKSkge1xuICAgICAgLy8gZGF0ZSBpcyBsb2NhbCB0aW1lem9uZSBtaWRuaWdodFxuICAgICAgcmV0dXJuIGRhdGVMb2NhbE9yVVRDO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBzdGFydE9mRGF5KHV0Y1RvWm9uZWRUaW1lKGRhdGVMb2NhbE9yVVRDLCB0aGlzLnRpbWVab25lTmFtZSkpLmdldFRpbWUoKSA9PT1cbiAgICAgIHV0Y1RvWm9uZWRUaW1lKGRhdGVMb2NhbE9yVVRDLCB0aGlzLnRpbWVab25lTmFtZSkuZ2V0VGltZSgpXG4gICAgKSB7XG4gICAgICAvLyB0aGUgZGF0ZSBpcyBhIFVUQyBtaWRuaWdodDsgY3JlYXRlIHRoZSBlcXVpdmFsZW50IGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0IGRhdGVcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVVENkYXRlID0gdXRjVG9ab25lZFRpbWUoZGF0ZUxvY2FsT3JVVEMsIHRoaXMudGltZVpvbmVOYW1lKTtcbiAgICAgIHJldHVybiBub3JtYWxpemVkVVRDZGF0ZTtcbiAgICB9XG4gICAgLy8gZG9lcyBub3QgcG9pbnQgdG8gbWlkbmlnaHQgc28gd2UgbWFrZSBpdFxuICAgIHJldHVybiBzdGFydE9mRGF5KGRhdGVMb2NhbE9yVVRDKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2Vla0RheXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgd2VlayA9IGVhY2hEYXlPZkludGVydmFsKHtcbiAgICAgIHN0YXJ0OiBzdGFydE9mV2Vlayhub3csIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KSxcbiAgICAgIGVuZDogZW5kT2ZXZWVrKG5vdywgeyBsb2NhbGU6IHRoaXMubG9jYWxlIH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHdlZWsubWFwKChkYXRlKSA9PiB0aGlzLmdldEZpcnN0TGV0dGVyT2ZXZWVrRGF5Q2FwaXRhbGl6ZWQoZGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaXJzdExldHRlck9mV2Vla0RheUNhcGl0YWxpemVkKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRXaXRoTG9jYWxlKGRhdGUsICdFRUVFRScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEYXRlQ2hhbmdlZChuZXdEYXRlOiBEYXRlLCBwcmV2aW91c0RhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAoIW5ld0RhdGUgJiYgIXByZXZpb3VzRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobmV3RGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIXByZXZpb3VzRGF0ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAhaXNTYW1lRGF5KG5ld0RhdGUsIHByZXZpb3VzRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzRGlzYWJsZWREYXRlKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGRpc2FibGVkRGF0ZSkgPT4gaXNTYW1lRGF5KGRpc2FibGVkRGF0ZSwgZGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VuYWJsZWREYXRlKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fZW5hYmxlZERhdGVzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgdGhpcy5lbmFibGVkRGF0ZXMuc29tZSgoZW5hYmxlZERhdGUpID0+IGlzU2FtZURheShlbmFibGVkRGF0ZSwgZGF0ZSkpXG4gICAgKTtcbiAgfVxuXG4gIHJlZnJlc2hBY3RpdmVNb250aCgpIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlTW9udGgpIHJldHVybjtcblxuICAgIGNvbnN0IG1vbnRoU3RhcnQgPSBzdGFydE9mTW9udGgodGhpcy5hY3RpdmVNb250aCk7XG4gICAgY29uc3Qgc3RhcnRPZkZpcnN0V2VlayA9IHN0YXJ0T2ZXZWVrKG1vbnRoU3RhcnQsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KTtcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudG9kYXlEYXRlID8gc3RhcnRPZkRheSh0aGlzLnRvZGF5RGF0ZSkgOiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xuXG4gICAgY29uc3QgdG90YWxOdW1iZXJPZkRheXMgPSA0MjsgLy8gQWx3YXlzIHNob3cgNDIgZGF5cyAoNiB3ZWVrcykgaW4gY2FsZW5kYXJcbiAgICBjb25zdCBkYXlzQXJyYXkgPSBBcnJheS5mcm9tKEFycmF5KHRvdGFsTnVtYmVyT2ZEYXlzKS5rZXlzKCkpO1xuXG4gICAgY29uc3QgZGF5czogQ2FsZW5kYXJDZWxsW10gPSBkYXlzQXJyYXkubWFwKChudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGNlbGxEYXRlID0gYWRkKHN0YXJ0T2ZGaXJzdFdlZWssIHsgW1RpbWVVbml0LmRheXNdOiBudW1iZXIgfSk7XG4gICAgICBjb25zdCBkYXkgPSB0aGlzLmdldENhbGVuZGFyRGF5KGNlbGxEYXRlLCB0b2RheSwgbW9udGhTdGFydCk7XG5cbiAgICAgIGNvbnN0IGlzU2VsZWN0YWJsZSA9IHRoaXMuaXNTZWxlY3RhYmxlKGRheSwgY2VsbERhdGUpO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGlzU2FtZURheSh0aGlzLnNlbGVjdGVkRGF0ZSwgY2VsbERhdGUpO1xuICAgICAgY29uc3QgY2VsbDogQ2FsZW5kYXJDZWxsID0ge1xuICAgICAgICBkYXRlOiBjZWxsRGF0ZS5nZXREYXRlKCksXG4gICAgICAgIG1vbnRoSW5kZXg6IGNlbGxEYXRlLmdldE1vbnRoKCksXG4gICAgICAgIHllYXI6IGNlbGxEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGlzQ3VycmVudE1vbnRoOiBkYXkuaXNDdXJyZW50TW9udGgsXG4gICAgICAgIGlzU2VsZWN0YWJsZSxcbiAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgY3NzQ2xhc3NlczogdGhpcy5nZXRDc3NDbGFzc2VzKGRheSwgaXNTZWxlY3RhYmxlLCBpc1NlbGVjdGVkKSxcbiAgICAgIH07XG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gY2VsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjZWxsO1xuICAgIH0pO1xuICAgIHRoaXMuX21vbnRoID0gdGhpcy5jaHVuayhkYXlzLCA3KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FsZW5kYXJEYXkoZGF0ZTogRGF0ZSwgdG9kYXk6IERhdGUsIG1vbnRoU3RhcnQ6IERhdGUpOiBDYWxlbmRhckRheSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVG9kYXk6IGlzU2FtZURheSh0b2RheSwgZGF0ZSksXG4gICAgICBpc1Bhc3Q6IGlzQmVmb3JlKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzRnV0dXJlOiBpc0FmdGVyKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzV2Vla2VuZDogaXNXZWVrZW5kKGRhdGUpLFxuICAgICAgaXNDdXJyZW50TW9udGg6IGlzU2FtZU1vbnRoKGRhdGUsIG1vbnRoU3RhcnQpLFxuICAgICAgaXNEaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkRGF0ZShkYXRlKSB8fCAhdGhpcy5pc0VuYWJsZWREYXRlKGRhdGUpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZWN0YWJsZShkYXk6IENhbGVuZGFyRGF5LCBkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmFsd2F5c0VuYWJsZVRvZGF5ICYmIGRheS5pc1RvZGF5KSB8fFxuICAgICAgKCFkYXkuaXNEaXNhYmxlZCAmJlxuICAgICAgICAhKHRoaXMuZGlzYWJsZVdlZWtlbmRzICYmIGRheS5pc1dlZWtlbmQpICYmXG4gICAgICAgICEodGhpcy5kaXNhYmxlUGFzdERhdGVzICYmIGRheS5pc1Bhc3QpICYmXG4gICAgICAgICEodGhpcy5kaXNhYmxlRnV0dXJlRGF0ZXMgJiYgZGF5LmlzRnV0dXJlKSAmJlxuICAgICAgICAhKHRoaXMubWluRGF0ZSAmJiBpc0JlZm9yZShkYXRlLCB0aGlzLm1pbkRhdGUpKSAmJlxuICAgICAgICAhKHRoaXMubWF4RGF0ZSAmJiBpc0FmdGVyKGRhdGUsIHRoaXMubWF4RGF0ZSkpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldENzc0NsYXNzZXMoZGF5OiBDYWxlbmRhckRheSwgaXNTZWxlY3RhYmxlOiBib29sZWFuLCBpc1NlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHtcbiAgICAgICdjdXJyZW50LW1vbnRoJzogZGF5LmlzQ3VycmVudE1vbnRoLFxuICAgICAgd2Vla2VuZDogZGF5LmlzV2Vla2VuZCxcbiAgICAgIHRvZGF5OiBkYXkuaXNUb2RheSxcbiAgICAgIHNlbGVjdGFibGU6IGlzU2VsZWN0YWJsZSxcbiAgICAgIHNlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgcGFzdDogZGF5LmlzUGFzdCxcbiAgICAgIGRpc2FibGVkOiBkYXkuaXNEaXNhYmxlZCxcbiAgICB9O1xuICAgIGxldCBjc3NDbGFzc1N0cmluZyA9ICdkYXknO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNzc0NsYXNzZXMpIHtcbiAgICAgIGlmIChjc3NDbGFzc2VzW2tleV0pIHtcbiAgICAgICAgY3NzQ2xhc3NTdHJpbmcgKz0gJyAnICsga2V5O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3NzQ2xhc3NTdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIGNodW5rKGFycmF5OiBhbnlbXSwgc2l6ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgIHdoaWxlIChhcnJheS5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdHMucHVzaChhcnJheS5zcGxpY2UoMCwgc2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIHByaXZhdGUgb25TZWxlY3RlZERhdGVDaGFuZ2UobmV3RGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5LmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdEYXkgPSB0aGlzLmdldENlbGwobmV3RGF0ZSk7XG4gICAgaWYgKG5ld0RheSkge1xuICAgICAgbmV3RGF5LmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RlZERheSA9IG5ld0RheTtcbiAgICB9XG5cbiAgICBpZiAobmV3RGF0ZSkge1xuICAgICAgdGhpcy5jYWxlbmRhckhlbHBlci5zZXRTZWxlY3RlZERheShuZXdEYXRlLmdldERhdGUoKSk7XG4gICAgfVxuICB9XG5cbiAgX29uRGF0ZVNlbGVjdGVkKG5ld0RheTogQ2FsZW5kYXJDZWxsKSB7XG4gICAgaWYgKCFuZXdEYXkuaXNTZWxlY3RhYmxlKSByZXR1cm47XG5cbiAgICBsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKG5ld0RheS55ZWFyLCBuZXdEYXkubW9udGhJbmRleCwgbmV3RGF5LmRhdGUpO1xuXG4gICAgaWYgKHRoaXMudGltZXpvbmUgPT09ICdVVEMnKSB7XG4gICAgICBuZXdEYXRlID0gem9uZWRUaW1lVG9VdGModGhpcy5zdWJ0cmFjdFRpbWV6b25lT2Zmc2V0KG5ld0RhdGUpLCB0aGlzLnRpbWVab25lTmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZVRvRW1pdCA9IG5ld0RhdGU7XG5cbiAgICBpZiAodGhpcy5oYXNEYXRlQ2hhbmdlZChuZXdEYXRlLCB0aGlzLl9zZWxlY3RlZERhdGUpKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKG5ld0RhdGUpO1xuICAgICAgdGhpcy5vblNlbGVjdGVkRGF0ZUNoYW5nZShuZXdEYXRlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IG5ld0RhdGU7XG4gICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChkYXRlVG9FbWl0KTtcbiAgICB9XG4gICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQoZGF0ZVRvRW1pdCk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlTW9udGgoZGlyZWN0aW9uOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jaGFuZ2VNb250aChkaXJlY3Rpb24pO1xuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIudXBkYXRlKHRoaXMuZ2V0SGVscGVyT3B0aW9ucygpKTtcbiAgfVxuXG4gIF9jaGFuZ2VNb250aChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGFuZ2VBY3RpdmVWaWV3KGluZGV4LCBUaW1lVW5pdC5tb250aHMpO1xuICAgIGluZGV4ID4gMFxuICAgICAgPyB0aGlzLm5leHRNb250aENsaWNrZWQuZW1pdCh0aGlzLmFjdGl2ZU1vbnRoKVxuICAgICAgOiB0aGlzLnByZXZpb3VzTW9udGhDbGlja2VkLmVtaXQodGhpcy5hY3RpdmVNb250aCk7XG4gIH1cblxuICBfY2hhbmdlWWVhcih5ZWFyOiBzdHJpbmcpIHtcbiAgICBjb25zdCB5ZWFyTnVtZXJpYyA9IE51bWJlcih5ZWFyKTtcbiAgICB0aGlzLmNoYW5nZUFjdGl2ZVZpZXcoeWVhck51bWVyaWMgLSBnZXRZZWFyKHRoaXMuYWN0aXZlTW9udGgpLCBUaW1lVW5pdC55ZWFycyk7XG4gICAgdGhpcy55ZWFyU2VsZWN0LmVtaXQoeWVhck51bWVyaWMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VBY3RpdmVWaWV3KGluZGV4OiBudW1iZXIsIHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgaWYgKGluZGV4ID09PSAwKSByZXR1cm47XG4gICAgdGhpcy5hY3RpdmVNb250aCA9IGFkZCh0aGlzLmFjdGl2ZU1vbnRoLCB7IFt1bml0XTogaW5kZXggfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hBY3RpdmVNb250aCgpO1xuICB9XG5cbiAgZ2V0IF9jYW5OYXZpZ2F0ZUJhY2soKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVhY2hlZFBhc3REYXRlc0xpbWl0ID1cbiAgICAgIHRoaXMuZGlzYWJsZVBhc3REYXRlcyAmJiBpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLnRvZGF5RGF0ZSk7XG5cbiAgICBjb25zdCByZWFjaGVkT3JFeGNlZWRlZE1pbkRhdGUgPVxuICAgICAgdGhpcy5taW5EYXRlICYmXG4gICAgICAoaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgdGhpcy5taW5EYXRlKSB8fCBpc0JlZm9yZSh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLm1pbkRhdGUpKTtcblxuICAgIHJldHVybiAhcmVhY2hlZFBhc3REYXRlc0xpbWl0ICYmICFyZWFjaGVkT3JFeGNlZWRlZE1pbkRhdGU7XG4gIH1cblxuICBnZXQgX2Nhbk5hdmlnYXRlRm9yd2FyZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWFjaGVkRnV0dXJlRGF0ZXNMaW1pdCA9XG4gICAgICB0aGlzLmRpc2FibGVGdXR1cmVEYXRlcyAmJiBpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLnRvZGF5RGF0ZSk7XG5cbiAgICBjb25zdCByZWFjaGVkT3JFeGNlZWRlZE1heERhdGUgPVxuICAgICAgdGhpcy5tYXhEYXRlICYmXG4gICAgICAoaXNTYW1lTW9udGgodGhpcy5hY3RpdmVNb250aCwgdGhpcy5tYXhEYXRlKSB8fCBpc0FmdGVyKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMubWF4RGF0ZSkpO1xuXG4gICAgcmV0dXJuICFyZWFjaGVkRnV0dXJlRGF0ZXNMaW1pdCAmJiAhcmVhY2hlZE9yRXhjZWVkZWRNYXhEYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDZWxsKGRhdGU6IERhdGUpIHtcbiAgICBsZXQgZm91bmREYXk6IENhbGVuZGFyQ2VsbCA9IG51bGw7XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIGZvciAoY29uc3Qgd2VlayBvZiB0aGlzLl9tb250aCkge1xuICAgICAgICBmb3VuZERheSA9IHdlZWsuZmluZCgoZGF5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRheS5pc0N1cnJlbnRNb250aCAmJiBkYXkuZGF0ZSA9PT0gZGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZm91bmREYXkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm91bmREYXk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlbHBlck9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FuTmF2aWdhdGVCYWNrOiB0aGlzLl9jYW5OYXZpZ2F0ZUJhY2ssXG4gICAgICBjYW5OYXZpZ2F0ZUZvcndhcmQ6IHRoaXMuX2Nhbk5hdmlnYXRlRm9yd2FyZCxcbiAgICAgIHllYXI6IHRoaXMuYWN0aXZlWWVhcixcbiAgICAgIG1vbnRoTmFtZTogdGhpcy5hY3RpdmVNb250aE5hbWUsXG4gICAgICB3ZWVrRGF5czogdGhpcy5fd2Vla0RheXMsXG4gICAgICBtb250aDogdGhpcy5fbW9udGgsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3VidHJhY3RUaW1lem9uZU9mZnNldChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbk1zID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHRpbWV6b25lT2Zmc2V0SW5Ncyk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVGcm9tTmF2aWdhYmxlWWVhcihuYXZpZ2FibGVZZWFyOiBudW1iZXIgfCBEYXRlKTogRGF0ZSB7XG4gICAgaWYgKG5hdmlnYWJsZVllYXIgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gbmF2aWdhYmxlWWVhcjtcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudG9kYXlEYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyBuYXZpZ2FibGVZZWFyLCAwLCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nW10ge1xuICAgIC8vIEVuc3VyZSB5ZWFycyBhcmUgb3JkZXJlZCBjb3JyZWN0bHkgaWYgcGFyYW1ldGVycyBhcmUgc3dpdGNoZWQ6XG4gICAgY29uc3QgW3N0YXJ0WWVhciwgZW5kWWVhcl0gPSBbc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIGVuZERhdGUuZ2V0RnVsbFllYXIoKV0uc29ydCgpO1xuICAgIGNvbnN0IG51bWJlck9mWWVhcnMgPSBlbmRZZWFyIC0gc3RhcnRZZWFyO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1iZXJPZlllYXJzICsgMSB9LCAoXywgaSkgPT4gKHN0YXJ0WWVhciArIGkpLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJtb250aC1uYXZpZ2F0b3JcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhX2Nhbk5hdmlnYXRlQmFja1wiXG4gICAgICAoY2xpY2spPVwiX2NoYW5nZU1vbnRoKC0xKVwiXG4gICAgICBraXJieS1idXR0b25cbiAgICAgIFtub0RlY29yYXRpb25dPVwidHJ1ZVwiXG4gICAgICBjbGFzcz1cIm5vLW1hcmdpblwiXG4gICAgPlxuICAgICAgPGtpcmJ5LWljb24gbmFtZT1cImFycm93LWJhY2tcIj48L2tpcmJ5LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGgtYW5kLXllYXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibW9udGhcIj57eyBhY3RpdmVNb250aE5hbWUgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFfaGFzWWVhck5hdmlnYXRvclwiIGNsYXNzPVwieWVhclwiPnt7IGFjdGl2ZVllYXIgfX08L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhX2Nhbk5hdmlnYXRlRm9yd2FyZFwiXG4gICAgICAoY2xpY2spPVwiX2NoYW5nZU1vbnRoKDEpXCJcbiAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgW25vRGVjb3JhdGlvbl09XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwibm8tbWFyZ2luXCJcbiAgICA+XG4gICAgICA8a2lyYnktaWNvbiBuYW1lPVwiYXJyb3ctbW9yZVwiPjwva2lyYnktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxraXJieS1kcm9wZG93blxuICAgICpuZ0lmPVwiX2hhc1llYXJOYXZpZ2F0b3JcIlxuICAgIFt1c2VQb3BvdmVyXT1cInVzZVBvcG92ZXJcIlxuICAgIFtzZWxlY3RlZEluZGV4XT1cIm5hdmlnYXRlZFllYXJcIlxuICAgIFtpdGVtc109XCJuYXZpZ2FibGVZZWFyc1wiXG4gICAgcG9wb3V0PVwibGVmdFwiXG4gICAgKGNoYW5nZSk9XCJfY2hhbmdlWWVhcigkZXZlbnQpXCJcbiAgPjwva2lyYnktZHJvcGRvd24+XG48L2Rpdj5cblxuPHRhYmxlPlxuICA8dGhlYWQ+XG4gICAgPHRyPlxuICAgICAgPHRoICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIF93ZWVrRGF5c1wiPnt7IHdlZWtEYXkgfX08L3RoPlxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG5cbiAgPHRib2R5PlxuICAgIDx0ciAqbmdGb3I9XCJsZXQgd2VlayBvZiBfbW9udGhcIj5cbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIChjbGljayk9XCJfb25EYXRlU2VsZWN0ZWQoZGF5KVwiXG4gICAgICAgICAgY2xhc3M9XCJ7eyBkYXkuY3NzQ2xhc3NlcyB9fSBjb250YWluLXN0YXRlLWxheWVyXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZGF5LmlzU2VsZWN0ZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0ZS1sYXllclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRlbnQtbGF5ZXJcIj57eyBkYXkuZGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuXG48IS0tIDxpZnJhbWUgc3JjPVwia2lyYnkvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci53ZWJ2aWV3Lmh0bWxcIiAjY2FsZW5kYXJDb250YWluZXIgc3R5bGU9XCJ3aWR0aDogMzIwcHg7IGhlaWdodDogMzA0cHg7IGJvcmRlcjogMFwiPiAtLT5cbiJdfQ==
@@ -11,6 +11,8 @@ export class CardAsButtonDirective {
11
11
  this._pressed = false;
12
12
  }
13
13
  _onKeydownHandler(event) {
14
+ if (event.currentTarget !== event.target)
15
+ return; // Do not handle keydown events for nested elements - let event bubbling take place as normal
14
16
  this._pressed = true;
15
17
  this.clickableElement.nativeElement.click(event);
16
18
  /*
@@ -59,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
59
61
  type: HostListener,
60
62
  args: ['blur']
61
63
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1hcy1idXR0b24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY2FyZC9zcmMvY2FyZC1hcy1idXR0b24vY2FyZC1hcy1idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBTWxELE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBZ0MsSUFBbUIsRUFBVSxnQkFBNEI7UUFBekQsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBWTtRQUovRCxTQUFJLEdBQVcsUUFBUSxDQUFDO1FBQ3BCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFFSixhQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzRCLENBQUM7SUFJN0YsaUJBQWlCLENBQUMsS0FBb0I7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQ7Ozs7V0FJRztRQUVILEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBS0Qsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7a0lBMUJVLHFCQUFxQjtzSEFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7OzBCQU1jLFFBQVE7a0VBSkssSUFBSTtzQkFBN0IsV0FBVzt1QkFBQyxXQUFXO2dCQUNNLFFBQVE7c0JBQXJDLFdBQVc7dUJBQUMsZUFBZTtnQkFFbUIsUUFBUTtzQkFBdEQsV0FBVzt1QkFBQyxnQ0FBZ0M7Z0JBSzdDLGlCQUFpQjtzQkFGaEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN4QyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnpDLGtCQUFrQjtzQkFIakIsWUFBWTt1QkFBQyxhQUFhOztzQkFDMUIsWUFBWTt1QkFBQyxhQUFhOztzQkFDMUIsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FyZC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdraXJieS1jYXJkW2NsaWNrXScsXG59KVxuZXhwb3J0IGNsYXNzIENhcmRBc0J1dHRvbkRpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZTogc3RyaW5nID0gJ2J1dHRvbic7XG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHRhYmluZGV4OiBudW1iZXIgPSAwO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW50ZXJhY3Rpb24tc3RhdGUtYWN0aXZlJykgX3ByZXNzZWQgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBjYXJkOiBDYXJkQ29tcG9uZW50LCBwcml2YXRlIGNsaWNrYWJsZUVsZW1lbnQ6IEVsZW1lbnRSZWYpIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zcGFjZScsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBfb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuX3ByZXNzZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWNrKGV2ZW50KTtcbiAgICAvKlxuICAgICAqIFByZXZlbnQgZGVmYXVsdCBldmVudCBmcm9tIGZpcmluZyBzbyB0aGUgVUEgd29udFxuICAgICAqIGNhdGNoIHRoaXMgZXZlbnQgYW5kIGUuZy4gc2Nyb2xsIHRoZSBwYWdlIG9uIHNwYWNlLFxuICAgICAqIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIG1ham9yIGJyb3dzZXJzXG4gICAgICovXG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAuc3BhY2UnKVxuICBASG9zdExpc3RlbmVyKCdrZXl1cC5lbnRlcicpXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBfb25JbmFjdGl2ZUhhbmRsZXIoKSB7XG4gICAgdGhpcy5fcHJlc3NlZCA9IGZhbHNlO1xuICB9XG59XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1hcy1idXR0b24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY2FyZC9zcmMvY2FyZC1hcy1idXR0b24vY2FyZC1hcy1idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBTWxELE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBZ0MsSUFBbUIsRUFBVSxnQkFBNEI7UUFBekQsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBWTtRQUovRCxTQUFJLEdBQVcsUUFBUSxDQUFDO1FBQ3BCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDSixhQUFRLEdBQUcsS0FBSyxDQUFDO0lBRTRCLENBQUM7SUFJN0YsaUJBQWlCLENBQUMsS0FBb0I7UUFDcEMsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLDZGQUE2RjtRQUUvSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRDs7OztXQUlHO1FBRUgsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFLRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztrSUE1QlUscUJBQXFCO3NIQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsbUJBQW1CO2lCQUM5Qjs7MEJBTWMsUUFBUTtrRUFKSyxJQUFJO3NCQUE3QixXQUFXO3VCQUFDLFdBQVc7Z0JBQ00sUUFBUTtzQkFBckMsV0FBVzt1QkFBQyxlQUFlO2dCQUNtQixRQUFRO3NCQUF0RCxXQUFXO3VCQUFDLGdDQUFnQztnQkFNN0MsaUJBQWlCO3NCQUZoQixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3hDLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWtCekMsa0JBQWtCO3NCQUhqQixZQUFZO3VCQUFDLGFBQWE7O3NCQUMxQixZQUFZO3VCQUFDLGFBQWE7O3NCQUMxQixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENhcmRDb21wb25lbnQgfSBmcm9tICcuLi9jYXJkLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2tpcmJ5LWNhcmRbY2xpY2tdJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZEFzQnV0dG9uRGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlOiBzdHJpbmcgPSAnYnV0dG9uJztcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JykgdGFiaW5kZXg6IG51bWJlciA9IDA7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW50ZXJhY3Rpb24tc3RhdGUtYWN0aXZlJykgX3ByZXNzZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIGNhcmQ6IENhcmRDb21wb25lbnQsIHByaXZhdGUgY2xpY2thYmxlRWxlbWVudDogRWxlbWVudFJlZikge31cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnNwYWNlJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gIF9vbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQgIT09IGV2ZW50LnRhcmdldCkgcmV0dXJuOyAvLyBEbyBub3QgaGFuZGxlIGtleWRvd24gZXZlbnRzIGZvciBuZXN0ZWQgZWxlbWVudHMgLSBsZXQgZXZlbnQgYnViYmxpbmcgdGFrZSBwbGFjZSBhcyBub3JtYWxcblxuICAgIHRoaXMuX3ByZXNzZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWNrKGV2ZW50KTtcbiAgICAvKlxuICAgICAqIFByZXZlbnQgZGVmYXVsdCBldmVudCBmcm9tIGZpcmluZyBzbyB0aGUgVUEgd29udFxuICAgICAqIGNhdGNoIHRoaXMgZXZlbnQgYW5kIGUuZy4gc2Nyb2xsIHRoZSBwYWdlIG9uIHNwYWNlLFxuICAgICAqIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIG1ham9yIGJyb3dzZXJzXG4gICAgICovXG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAuc3BhY2UnKVxuICBASG9zdExpc3RlbmVyKCdrZXl1cC5lbnRlcicpXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBfb25JbmFjdGl2ZUhhbmRsZXIoKSB7XG4gICAgdGhpcy5fcHJlc3NlZCA9IGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -67,11 +67,11 @@ export class CardComponent {
67
67
  }
68
68
  }
69
69
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CardComponent, deps: [{ token: i0.ElementRef }, { token: i1.ResizeObserverService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
70
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CardComponent, selector: "kirby-card", inputs: { title: "title", subtitle: "subtitle", backgroundImageUrl: "backgroundImageUrl", hasPadding: "hasPadding", sizes: "sizes", flat: "flat", variant: "variant" }, host: { properties: { "style.--kirby-card-background-image": "this._backgroundImage", "class": "this._cssClass" } }, ngImport: i0, template: "<div class=\"state-layer\" aria-hidden=\"true\"></div>\n<div class=\"content-layer\">\n <ng-content select=\"kirby-card-header\"></ng-content>\n <div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"kirby-card-footer\"></ng-content>\n</div>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{--kirby-card-main-background-color: var(--kirby-white);--kirby-card-main-color: var(--kirby-white-contrast);--kirby-card-footer-background-color: var(--kirby-white);--kirby-card-footer-color: var(--kirby-white-contrast);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);border-radius:16px;box-shadow:0 1px 24px #1c1c1c0a;color:var(--kirby-card-main-color);background-color:var(--kirby-card-main-background-color);background-image:var(--kirby-card-background-image);background-repeat:var(--kirby-card-background-repeat, no-repeat);background-position:var(--kirby-card-background-position, center);background-size:var(--kirby-card-background-size, cover);border:var(--kirby-card-border, none);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative;z-index:1;width:var(--kirby-card-width, auto)}:host.kirby-color-brightness-light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2)}:host.kirby-color-brightness-dark{--kirby-inputs-background-color: var(--kirby-white-overlay);--kirby-inputs-background-color-hover: var(--kirby-white-overlay-30);--kirby-inputs-background-color-active: var(--kirby-white-overlay-40);--kirby-inputs-color: var(--kirby-white);--kirby-inputs-indicator-background-color: var(--kirby-white);--kirby-inputs-indicator-color: var(--kirby-black);--kirby-inputs-placeholder-color: var(--kirby-white-overlay-50);--kirby-inputs-elevation: none}@media (hover: hover){:host.kirby-color-brightness-dark[role=button]:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host.kirby-color-brightness-dark[role=button]:active,:host.kirby-color-brightness-dark[role=button].interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black-contrast)}:host .content-layer{display:inherit;flex-direction:inherit;justify-content:inherit}:host.flat{box-shadow:none}:host.outlined{background-color:transparent;border:var(--kirby-card-border, 1px solid var(--kirby-medium));box-shadow:none}:host.outlined:has(kirby-card-header.flagged){border:none}:host.outlined:has(kirby-card-header.flagged) .content-wrapper{border-block-end:var(--kirby-card-border, 1px solid var(--kirby-medium));border-inline-start:var(--kirby-card-border, 1px solid var(--kirby-medium));border-inline-end:var(--kirby-card-border, 1px solid var(--kirby-medium));border-bottom-left-radius:16px;border-bottom-right-radius:16px}:host[role=button]{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative;outline:none}:host[role=button] .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}:host[role=button] .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}:host[role=button] .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){:host[role=button]:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host[role=button]:active,:host[role=button].interaction-state-active{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}@media (hover: hover) and (pointer: fine){:host[role=button]:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host[role=button]:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host[role=button]:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.content-wrapper.padding{padding-top:var(--kirby-card-padding-top, 16px);padding-bottom:var(--kirby-card-padding-bottom, 16px);padding-inline:16px}.content-layer{height:100%}:host(.primary):not(.outlined){--kirby-card-main-background-color: var(--kirby-primary);--kirby-card-main-color: var(--kirby-primary-contrast)}:host(.secondary):not(.outlined){--kirby-card-main-background-color: var(--kirby-secondary);--kirby-card-main-color: var(--kirby-secondary-contrast)}:host(.tertiary):not(.outlined){--kirby-card-main-background-color: var(--kirby-tertiary);--kirby-card-main-color: var(--kirby-tertiary-contrast)}:host(.success):not(.outlined){--kirby-card-main-background-color: var(--kirby-success);--kirby-card-main-color: var(--kirby-success-contrast)}:host(.warning):not(.outlined){--kirby-card-main-background-color: var(--kirby-warning);--kirby-card-main-color: var(--kirby-warning-contrast)}:host(.danger):not(.outlined){--kirby-card-main-background-color: var(--kirby-danger);--kirby-card-main-color: var(--kirby-danger-contrast)}:host(.white-overlay):not(.outlined){--kirby-card-main-background-color: var(--kirby-white-overlay);--kirby-card-main-color: var(--kirby-white-overlay-contrast)}:host(.light):not(.outlined){--kirby-card-main-background-color: var(--kirby-light);--kirby-card-main-color: var(--kirby-light-contrast)}:host(.medium):not(.outlined){--kirby-card-main-background-color: var(--kirby-medium);--kirby-card-main-color: var(--kirby-medium-contrast)}:host(.dark):not(.outlined){--kirby-card-main-background-color: var(--kirby-dark);--kirby-card-main-color: var(--kirby-dark-contrast)}:host(.dark-overlay):not(.outlined){--kirby-card-main-background-color: var(--kirby-dark-overlay);--kirby-card-main-color: var(--kirby-dark-overlay-contrast)}\n"] }); }
70
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CardComponent, selector: "kirby-card", inputs: { title: "title", subtitle: "subtitle", backgroundImageUrl: "backgroundImageUrl", hasPadding: "hasPadding", sizes: "sizes", flat: "flat", variant: "variant" }, host: { properties: { "style.--kirby-card-background-image": "this._backgroundImage", "class": "this._cssClass" } }, ngImport: i0, template: "<div class=\"state-layer\" aria-hidden=\"true\"></div>\n<div class=\"content-layer\">\n <ng-content select=\"kirby-card-header\"></ng-content>\n <div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"kirby-card-footer\"></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{--kirby-card-main-background-color: var(--kirby-white);--kirby-card-main-color: var(--kirby-white-contrast);--kirby-card-footer-background-color: var(--kirby-white);--kirby-card-footer-color: var(--kirby-white-contrast);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);border-radius:16px;box-shadow:0 1px 24px #1c1c1c0a;color:var(--kirby-card-main-color);background-color:var(--kirby-card-main-background-color);background-image:var(--kirby-card-background-image);background-repeat:var(--kirby-card-background-repeat, no-repeat);background-position:var(--kirby-card-background-position, center);background-size:var(--kirby-card-background-size, cover);border:var(--kirby-card-border, none);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative;z-index:1;width:var(--kirby-card-width, auto)}:host.kirby-color-brightness-light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2)}:host.kirby-color-brightness-dark{--kirby-inputs-background-color: var(--kirby-white-overlay);--kirby-inputs-background-color-hover: var(--kirby-white-overlay-30);--kirby-inputs-background-color-active: var(--kirby-white-overlay-40);--kirby-inputs-color: var(--kirby-white);--kirby-inputs-indicator-background-color: var(--kirby-white);--kirby-inputs-indicator-color: var(--kirby-black);--kirby-inputs-placeholder-color: var(--kirby-white-overlay-50);--kirby-inputs-elevation: none}@media (hover: hover){:host.kirby-color-brightness-dark[role=button]:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host.kirby-color-brightness-dark[role=button]:active,:host.kirby-color-brightness-dark[role=button].interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black-contrast)}:host .content-layer{display:inherit;flex-direction:inherit;justify-content:inherit}:host.flat{box-shadow:none}:host.outlined{background-color:transparent;border:var(--kirby-card-border, 1px solid var(--kirby-medium));box-shadow:none}:host.outlined:has(kirby-card-header.flagged){border:none}:host.outlined:has(kirby-card-header.flagged) .content-wrapper{border-block-end:var(--kirby-card-border, 1px solid var(--kirby-medium));border-inline-start:var(--kirby-card-border, 1px solid var(--kirby-medium));border-inline-end:var(--kirby-card-border, 1px solid var(--kirby-medium));border-bottom-left-radius:16px;border-bottom-right-radius:16px}:host[role=button]{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative;outline:none}:host[role=button] .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}:host[role=button] .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}:host[role=button] .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){:host[role=button]:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host[role=button]:active,:host[role=button].interaction-state-active{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}@media (hover: hover) and (pointer: fine){:host[role=button]:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host[role=button]:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host[role=button]:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.content-wrapper.padding{padding-top:var(--kirby-card-padding-top, 16px);padding-bottom:var(--kirby-card-padding-bottom, 16px);padding-inline:16px}.content-layer{height:100%}:host(.primary):not(.outlined){--kirby-card-main-background-color: var(--kirby-primary);--kirby-card-main-color: var(--kirby-primary-contrast)}:host(.secondary):not(.outlined){--kirby-card-main-background-color: var(--kirby-secondary);--kirby-card-main-color: var(--kirby-secondary-contrast)}:host(.tertiary):not(.outlined){--kirby-card-main-background-color: var(--kirby-tertiary);--kirby-card-main-color: var(--kirby-tertiary-contrast)}:host(.success):not(.outlined){--kirby-card-main-background-color: var(--kirby-success);--kirby-card-main-color: var(--kirby-success-contrast)}:host(.warning):not(.outlined){--kirby-card-main-background-color: var(--kirby-warning);--kirby-card-main-color: var(--kirby-warning-contrast)}:host(.danger):not(.outlined){--kirby-card-main-background-color: var(--kirby-danger);--kirby-card-main-color: var(--kirby-danger-contrast)}:host(.white-overlay):not(.outlined){--kirby-card-main-background-color: var(--kirby-white-overlay);--kirby-card-main-color: var(--kirby-white-overlay-contrast)}:host(.light):not(.outlined){--kirby-card-main-background-color: var(--kirby-light);--kirby-card-main-color: var(--kirby-light-contrast)}:host(.medium):not(.outlined){--kirby-card-main-background-color: var(--kirby-medium);--kirby-card-main-color: var(--kirby-medium-contrast)}:host(.dark):not(.outlined){--kirby-card-main-background-color: var(--kirby-dark);--kirby-card-main-color: var(--kirby-dark-contrast)}:host(.dark-overlay):not(.outlined){--kirby-card-main-background-color: var(--kirby-dark-overlay);--kirby-card-main-color: var(--kirby-dark-overlay-contrast)}\n"] }); }
71
71
  }
72
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CardComponent, decorators: [{
73
73
  type: Component,
74
- args: [{ selector: 'kirby-card', template: "<div class=\"state-layer\" aria-hidden=\"true\"></div>\n<div class=\"content-layer\">\n <ng-content select=\"kirby-card-header\"></ng-content>\n <div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"kirby-card-footer\"></ng-content>\n</div>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{--kirby-card-main-background-color: var(--kirby-white);--kirby-card-main-color: var(--kirby-white-contrast);--kirby-card-footer-background-color: var(--kirby-white);--kirby-card-footer-color: var(--kirby-white-contrast);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);border-radius:16px;box-shadow:0 1px 24px #1c1c1c0a;color:var(--kirby-card-main-color);background-color:var(--kirby-card-main-background-color);background-image:var(--kirby-card-background-image);background-repeat:var(--kirby-card-background-repeat, no-repeat);background-position:var(--kirby-card-background-position, center);background-size:var(--kirby-card-background-size, cover);border:var(--kirby-card-border, none);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative;z-index:1;width:var(--kirby-card-width, auto)}:host.kirby-color-brightness-light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2)}:host.kirby-color-brightness-dark{--kirby-inputs-background-color: var(--kirby-white-overlay);--kirby-inputs-background-color-hover: var(--kirby-white-overlay-30);--kirby-inputs-background-color-active: var(--kirby-white-overlay-40);--kirby-inputs-color: var(--kirby-white);--kirby-inputs-indicator-background-color: var(--kirby-white);--kirby-inputs-indicator-color: var(--kirby-black);--kirby-inputs-placeholder-color: var(--kirby-white-overlay-50);--kirby-inputs-elevation: none}@media (hover: hover){:host.kirby-color-brightness-dark[role=button]:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host.kirby-color-brightness-dark[role=button]:active,:host.kirby-color-brightness-dark[role=button].interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black-contrast)}:host .content-layer{display:inherit;flex-direction:inherit;justify-content:inherit}:host.flat{box-shadow:none}:host.outlined{background-color:transparent;border:var(--kirby-card-border, 1px solid var(--kirby-medium));box-shadow:none}:host.outlined:has(kirby-card-header.flagged){border:none}:host.outlined:has(kirby-card-header.flagged) .content-wrapper{border-block-end:var(--kirby-card-border, 1px solid var(--kirby-medium));border-inline-start:var(--kirby-card-border, 1px solid var(--kirby-medium));border-inline-end:var(--kirby-card-border, 1px solid var(--kirby-medium));border-bottom-left-radius:16px;border-bottom-right-radius:16px}:host[role=button]{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative;outline:none}:host[role=button] .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}:host[role=button] .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}:host[role=button] .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){:host[role=button]:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host[role=button]:active,:host[role=button].interaction-state-active{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}@media (hover: hover) and (pointer: fine){:host[role=button]:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host[role=button]:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host[role=button]:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.content-wrapper.padding{padding-top:var(--kirby-card-padding-top, 16px);padding-bottom:var(--kirby-card-padding-bottom, 16px);padding-inline:16px}.content-layer{height:100%}:host(.primary):not(.outlined){--kirby-card-main-background-color: var(--kirby-primary);--kirby-card-main-color: var(--kirby-primary-contrast)}:host(.secondary):not(.outlined){--kirby-card-main-background-color: var(--kirby-secondary);--kirby-card-main-color: var(--kirby-secondary-contrast)}:host(.tertiary):not(.outlined){--kirby-card-main-background-color: var(--kirby-tertiary);--kirby-card-main-color: var(--kirby-tertiary-contrast)}:host(.success):not(.outlined){--kirby-card-main-background-color: var(--kirby-success);--kirby-card-main-color: var(--kirby-success-contrast)}:host(.warning):not(.outlined){--kirby-card-main-background-color: var(--kirby-warning);--kirby-card-main-color: var(--kirby-warning-contrast)}:host(.danger):not(.outlined){--kirby-card-main-background-color: var(--kirby-danger);--kirby-card-main-color: var(--kirby-danger-contrast)}:host(.white-overlay):not(.outlined){--kirby-card-main-background-color: var(--kirby-white-overlay);--kirby-card-main-color: var(--kirby-white-overlay-contrast)}:host(.light):not(.outlined){--kirby-card-main-background-color: var(--kirby-light);--kirby-card-main-color: var(--kirby-light-contrast)}:host(.medium):not(.outlined){--kirby-card-main-background-color: var(--kirby-medium);--kirby-card-main-color: var(--kirby-medium-contrast)}:host(.dark):not(.outlined){--kirby-card-main-background-color: var(--kirby-dark);--kirby-card-main-color: var(--kirby-dark-contrast)}:host(.dark-overlay):not(.outlined){--kirby-card-main-background-color: var(--kirby-dark-overlay);--kirby-card-main-color: var(--kirby-dark-overlay-contrast)}\n"] }]
74
+ args: [{ selector: 'kirby-card', template: "<div class=\"state-layer\" aria-hidden=\"true\"></div>\n<div class=\"content-layer\">\n <ng-content select=\"kirby-card-header\"></ng-content>\n <div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"kirby-card-footer\"></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{--kirby-card-main-background-color: var(--kirby-white);--kirby-card-main-color: var(--kirby-white-contrast);--kirby-card-footer-background-color: var(--kirby-white);--kirby-card-footer-color: var(--kirby-white-contrast);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);border-radius:16px;box-shadow:0 1px 24px #1c1c1c0a;color:var(--kirby-card-main-color);background-color:var(--kirby-card-main-background-color);background-image:var(--kirby-card-background-image);background-repeat:var(--kirby-card-background-repeat, no-repeat);background-position:var(--kirby-card-background-position, center);background-size:var(--kirby-card-background-size, cover);border:var(--kirby-card-border, none);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative;z-index:1;width:var(--kirby-card-width, auto)}:host.kirby-color-brightness-light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2)}:host.kirby-color-brightness-dark{--kirby-inputs-background-color: var(--kirby-white-overlay);--kirby-inputs-background-color-hover: var(--kirby-white-overlay-30);--kirby-inputs-background-color-active: var(--kirby-white-overlay-40);--kirby-inputs-color: var(--kirby-white);--kirby-inputs-indicator-background-color: var(--kirby-white);--kirby-inputs-indicator-color: var(--kirby-black);--kirby-inputs-placeholder-color: var(--kirby-white-overlay-50);--kirby-inputs-elevation: none}@media (hover: hover){:host.kirby-color-brightness-dark[role=button]:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black-contrast);cursor:pointer}}:host.kirby-color-brightness-dark[role=button]:active,:host.kirby-color-brightness-dark[role=button].interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black-contrast)}:host .content-layer{display:inherit;flex-direction:inherit;justify-content:inherit}:host.flat{box-shadow:none}:host.outlined{background-color:transparent;border:var(--kirby-card-border, 1px solid var(--kirby-medium));box-shadow:none}:host.outlined:has(kirby-card-header.flagged){border:none}:host.outlined:has(kirby-card-header.flagged) .content-wrapper{border-block-end:var(--kirby-card-border, 1px solid var(--kirby-medium));border-inline-start:var(--kirby-card-border, 1px solid var(--kirby-medium));border-inline-end:var(--kirby-card-border, 1px solid var(--kirby-medium));border-bottom-left-radius:16px;border-bottom-right-radius:16px}:host[role=button]{--state-layer-opacity: 0;--state-layer-background-color: var(--kirby-black);position:relative;outline:none}:host[role=button] .content-layer{position:relative;z-index:var(--content-layer-z-index, 1)}:host[role=button] .state-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:2}:host[role=button] .state-layer:before{transition:all 80ms linear 0ms;content:\"\";position:absolute;pointer-events:none;inset:-50%;opacity:var(--state-layer-opacity, 0);background-color:var(--state-layer-background-color, var(--kirby-black))}@media (hover: hover){:host[role=button]:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host[role=button]:active,:host[role=button].interaction-state-active{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black)}@media (hover: hover) and (pointer: fine){:host[role=button]:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host[role=button]:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host[role=button]:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}.content-wrapper.padding{padding-top:var(--kirby-card-padding-top, 16px);padding-bottom:var(--kirby-card-padding-bottom, 16px);padding-inline:16px}.content-layer{height:100%}:host(.primary):not(.outlined){--kirby-card-main-background-color: var(--kirby-primary);--kirby-card-main-color: var(--kirby-primary-contrast)}:host(.secondary):not(.outlined){--kirby-card-main-background-color: var(--kirby-secondary);--kirby-card-main-color: var(--kirby-secondary-contrast)}:host(.tertiary):not(.outlined){--kirby-card-main-background-color: var(--kirby-tertiary);--kirby-card-main-color: var(--kirby-tertiary-contrast)}:host(.success):not(.outlined){--kirby-card-main-background-color: var(--kirby-success);--kirby-card-main-color: var(--kirby-success-contrast)}:host(.warning):not(.outlined){--kirby-card-main-background-color: var(--kirby-warning);--kirby-card-main-color: var(--kirby-warning-contrast)}:host(.danger):not(.outlined){--kirby-card-main-background-color: var(--kirby-danger);--kirby-card-main-color: var(--kirby-danger-contrast)}:host(.white-overlay):not(.outlined){--kirby-card-main-background-color: var(--kirby-white-overlay);--kirby-card-main-color: var(--kirby-white-overlay-contrast)}:host(.light):not(.outlined){--kirby-card-main-background-color: var(--kirby-light);--kirby-card-main-color: var(--kirby-light-contrast)}:host(.medium):not(.outlined){--kirby-card-main-background-color: var(--kirby-medium);--kirby-card-main-color: var(--kirby-medium-contrast)}:host(.dark):not(.outlined){--kirby-card-main-background-color: var(--kirby-dark);--kirby-card-main-color: var(--kirby-dark-contrast)}:host(.dark-overlay):not(.outlined){--kirby-card-main-background-color: var(--kirby-dark-overlay);--kirby-card-main-color: var(--kirby-dark-overlay-contrast)}\n"] }]
75
75
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ResizeObserverService }, { type: i0.Renderer2 }], propDecorators: { title: [{
76
76
  type: Input
77
77
  }], subtitle: [{
@@ -16,7 +16,8 @@ export class CheckboxComponent {
16
16
  get isAttentionLevel2() {
17
17
  return this.attentionLevel === '2';
18
18
  }
19
- constructor(ionicElementPartHelper) {
19
+ constructor(element, ionicElementPartHelper) {
20
+ this.element = element;
20
21
  this.ionicElementPartHelper = ionicElementPartHelper;
21
22
  this.checked = false;
22
23
  this.attentionLevel = '2';
@@ -24,12 +25,21 @@ export class CheckboxComponent {
24
25
  this.hasError = false;
25
26
  this.disabled = false;
26
27
  this.checkedChange = new EventEmitter();
28
+ this._justify = 'start';
29
+ this._labelPlacement = 'end';
27
30
  // Initialize default ControlValueAccessor callback functions (noop)
28
31
  // eslint-disable-next-line no-empty-function
29
32
  this._onChange = () => { };
30
33
  // eslint-disable-next-line no-empty-function
31
34
  this._onTouched = () => { };
32
35
  }
36
+ ngOnInit() {
37
+ const slot = this.element.nativeElement.getAttribute('slot');
38
+ if (slot === 'end') {
39
+ this._justify = 'space-between';
40
+ this._labelPlacement = 'start';
41
+ }
42
+ }
33
43
  ngAfterViewInit() {
34
44
  this.ionicElementPartHelper.setPart('label', this.ionCheckboxElement, '.checkbox-wrapper');
35
45
  this.ionicElementPartHelper.setPart('label-text-wrapper', this.ionCheckboxElement, '.label-text-wrapper');
@@ -81,15 +91,15 @@ export class CheckboxComponent {
81
91
  setDisabledState(isDisabled) {
82
92
  this.disabled = isDisabled;
83
93
  }
84
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckboxComponent, deps: [{ token: i1.IonicElementPartHelper }], target: i0.ɵɵFactoryTarget.Component }); }
85
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CheckboxComponent, isStandalone: true, selector: "kirby-checkbox", inputs: { checked: "checked", attentionLevel: "attentionLevel", text: "text", size: "size", hasError: "hasError", disabled: "disabled" }, outputs: { checkedChange: "checkedChange" }, host: { properties: { "class.has-label": "this.text", "class": "this.size", "class.error": "this.hasError", "attr.disabled": "this._isDisabled", "class.attention-level1": "this.isAttentionLevel1", "class.attention-level2": "this.isAttentionLevel2" } }, providers: [
94
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckboxComponent, deps: [{ token: i0.ElementRef }, { token: i1.IonicElementPartHelper }], target: i0.ɵɵFactoryTarget.Component }); }
95
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CheckboxComponent, isStandalone: true, selector: "kirby-checkbox", inputs: { checked: "checked", attentionLevel: "attentionLevel", text: "text", size: "size", hasError: "hasError", disabled: "disabled" }, outputs: { checkedChange: "checkedChange" }, host: { properties: { "class": "this.size", "class.error": "this.hasError", "attr.disabled": "this._isDisabled", "class.attention-level1": "this.isAttentionLevel1", "class.attention-level2": "this.isAttentionLevel2" } }, providers: [
86
96
  IonicElementPartHelper,
87
97
  {
88
98
  provide: NG_VALUE_ACCESSOR,
89
99
  useExisting: forwardRef((() => CheckboxComponent)),
90
100
  multi: true,
91
101
  },
92
- ], viewQueries: [{ propertyName: "ionCheckboxElement", first: true, predicate: IonCheckbox, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n labelPlacement=\"end\"\n (ionBlur)=\"onBlur()\"\n>\n <span *ngIf=\"text\">{{ text }}</span>\n</ion-checkbox>\n", styles: [":host{display:inline-block}:host.attention-level1 ion-checkbox{--checkmark-color: var(--kirby-black);--checkbox-background-checked: var(--kirby-success);--border-color-checked: var(--kirby-success)}@media (hover: hover){:host.attention-level1 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: #2dc172;--border-color-checked: #2dc172}}:host.attention-level1 ion-checkbox:active,:host.attention-level1 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background-checked: #29ae67;--border-color-checked: #29ae67}:host.attention-level2 ion-checkbox{--checkmark-color: var(--kirby-white);--checkbox-background-checked: var(--kirby-black);--border-color-checked: var(--kirby-black)}@media (hover: hover){:host.attention-level2 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: #5c5c5c;--border-color-checked: #5c5c5c}}:host.attention-level2 ion-checkbox:active,:host.attention-level2 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkmark-color: #ebebeb;--checkbox-background-checked: #6e6e6e;--border-color-checked: #6e6e6e}:host.error ion-checkbox{--border-color: var(--kirby-danger)}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-checkbox{--checkmark-color: var(--kirby-semi-dark);--checkbox-background: var(--kirby-semi-light);--checkbox-background-checked: var(--kirby-semi-light);--border-color: var(--kirby-medium);--border-color-checked: var(--kirby-semi-light)}:host[disabled] ion-checkbox::part(label-text-wrapper){opacity:1}:host[disabled] ion-checkbox::part(native-wrapper){opacity:1}:host ion-checkbox{--transition: 80ms;--size: 24px;--checkmark-width: 4px;--checkbox-background: var(--kirby-white);--border-width: 1px;--border-color: var(--kirby-semi-dark);--border-radius: 6px}@media (hover: hover) and (pointer: fine){:host ion-checkbox:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media (hover: hover){:host ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background: #ebebeb}}:host ion-checkbox:active,:host ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background: #e0e0e0}:host ion-checkbox::part(container){padding:4px}:host ion-checkbox::part(label){align-items:start;padding-left:16px;padding-right:12px;line-height:24px}:host ion-checkbox::part(label-text-wrapper){margin-inline:12px 0}:host ion-checkbox span{white-space:pre-line}:host.has-label{display:block}:host.has-label.xs ion-checkbox::part(label){padding-block:4px}:host.has-label.sm ion-checkbox::part(label){padding-block:10px}:host.has-label.md ion-checkbox::part(label){padding-block:16px}:host.has-label.xs ion-checkbox::part(label){line-height:16px;font-size:14px}:host.has-label.xs ion-checkbox{--size: 16px;--border-radius: 4px}:host.has-label.xs ion-checkbox::part(container){padding:2px}:host :host-context(kirby-item){z-index:1}:host :host-context(kirby-item) ion-checkbox{margin:0}:host :host-context(kirby-item)[slot=start]{margin-inline-end:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
102
+ ], viewQueries: [{ propertyName: "ionCheckboxElement", first: true, predicate: IonCheckbox, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n (ionBlur)=\"onBlur()\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n <span *ngIf=\"text\">{{ text }}</span>\n <ng-content></ng-content>\n</ion-checkbox>\n", styles: [":host{display:flex}:host.attention-level1 ion-checkbox{--checkmark-color: var(--kirby-black);--checkbox-background-checked: var(--kirby-success);--border-color-checked: var(--kirby-success)}@media (hover: hover){:host.attention-level1 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: rgb(45.030660793, 192.689339207, 114.1474889868);--border-color-checked: rgb(45.030660793, 192.689339207, 114.1474889868)}}:host.attention-level1 ion-checkbox:active,:host.attention-level1 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background-checked: rgb(40.7420264317, 174.3379735683, 103.2762995595);--border-color-checked: rgb(40.7420264317, 174.3379735683, 103.2762995595)}:host.attention-level2 ion-checkbox{--checkmark-color: var(--kirby-white);--checkbox-background-checked: var(--kirby-black);--border-color-checked: var(--kirby-black)}@media (hover: hover){:host.attention-level2 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: rgb(91.56, 91.56, 91.56);--border-color-checked: rgb(91.56, 91.56, 91.56)}}:host.attention-level2 ion-checkbox:active,:host.attention-level2 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkmark-color: rgb(234.6, 234.6, 234.6);--checkbox-background-checked: rgb(109.72, 109.72, 109.72);--border-color-checked: rgb(109.72, 109.72, 109.72)}:host.error ion-checkbox{--border-color: var(--kirby-danger)}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-checkbox{--checkmark-color: var(--kirby-semi-dark);--checkbox-background: var(--kirby-semi-light);--checkbox-background-checked: var(--kirby-semi-light);--border-color: var(--kirby-medium);--border-color-checked: var(--kirby-semi-light)}:host[disabled] ion-checkbox::part(label-text-wrapper){opacity:1}:host[disabled] ion-checkbox::part(native-wrapper){opacity:1}:host:has(ion-checkbox.in-item.checkbox-justify-space-between){width:100%}:host.xs ion-checkbox:not(.in-item)::part(label){padding-block:4px}:host.sm ion-checkbox:not(.in-item)::part(label){padding-block:10px}:host.md ion-checkbox:not(.in-item)::part(label){padding-block:16px}:host.xs ion-checkbox::part(label){line-height:16px;font-size:14px}:host.xs ion-checkbox{--size: 16px;--border-radius: 4px}:host.xs ion-checkbox::part(container){padding:2px}:host ion-checkbox{--transition: 80ms;--size: 24px;--checkmark-width: 4px;--checkbox-background: var(--kirby-white);--border-width: 1px;--border-color: var(--kirby-semi-dark);--border-radius: 6px}@media (hover: hover) and (pointer: fine){:host ion-checkbox:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media (hover: hover){:host ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background: rgb(234.6, 234.6, 234.6)}}:host ion-checkbox:active,:host ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background: rgb(224.4, 224.4, 224.4)}:host ion-checkbox::part(container){padding:4px}:host ion-checkbox::part(label){align-items:start;padding-inline:16px 12px;line-height:24px}:host ion-checkbox::part(label-text-wrapper){margin-inline:12px 0}:host ion-checkbox.in-item::part(label){align-items:center;padding-inline:0}:host ion-checkbox.in-item::part(label-text-wrapper){margin-block:0}:host ion-checkbox.in-item.checkbox-label-placement-start::part(label-text-wrapper){margin-inline:0 12px}:host ion-checkbox.in-item.checkbox-label-placement-end::part(label-text-wrapper){margin-inline:12px 0}:host ion-checkbox span{white-space:pre-line}:host :host-context(kirby-item){z-index:1}:host :host-context(kirby-item) ion-checkbox{margin:0}:host :host-context(kirby-item)[slot=start]{margin-block:0;margin-inline-end:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
93
103
  }
94
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CheckboxComponent, decorators: [{
95
105
  type: Component,
@@ -100,8 +110,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
100
110
  useExisting: forwardRef((() => CheckboxComponent)),
101
111
  multi: true,
102
112
  },
103
- ], template: "<ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n labelPlacement=\"end\"\n (ionBlur)=\"onBlur()\"\n>\n <span *ngIf=\"text\">{{ text }}</span>\n</ion-checkbox>\n", styles: [":host{display:inline-block}:host.attention-level1 ion-checkbox{--checkmark-color: var(--kirby-black);--checkbox-background-checked: var(--kirby-success);--border-color-checked: var(--kirby-success)}@media (hover: hover){:host.attention-level1 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: #2dc172;--border-color-checked: #2dc172}}:host.attention-level1 ion-checkbox:active,:host.attention-level1 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background-checked: #29ae67;--border-color-checked: #29ae67}:host.attention-level2 ion-checkbox{--checkmark-color: var(--kirby-white);--checkbox-background-checked: var(--kirby-black);--border-color-checked: var(--kirby-black)}@media (hover: hover){:host.attention-level2 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: #5c5c5c;--border-color-checked: #5c5c5c}}:host.attention-level2 ion-checkbox:active,:host.attention-level2 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkmark-color: #ebebeb;--checkbox-background-checked: #6e6e6e;--border-color-checked: #6e6e6e}:host.error ion-checkbox{--border-color: var(--kirby-danger)}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-checkbox{--checkmark-color: var(--kirby-semi-dark);--checkbox-background: var(--kirby-semi-light);--checkbox-background-checked: var(--kirby-semi-light);--border-color: var(--kirby-medium);--border-color-checked: var(--kirby-semi-light)}:host[disabled] ion-checkbox::part(label-text-wrapper){opacity:1}:host[disabled] ion-checkbox::part(native-wrapper){opacity:1}:host ion-checkbox{--transition: 80ms;--size: 24px;--checkmark-width: 4px;--checkbox-background: var(--kirby-white);--border-width: 1px;--border-color: var(--kirby-semi-dark);--border-radius: 6px}@media (hover: hover) and (pointer: fine){:host ion-checkbox:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media (hover: hover){:host ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background: #ebebeb}}:host ion-checkbox:active,:host ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background: #e0e0e0}:host ion-checkbox::part(container){padding:4px}:host ion-checkbox::part(label){align-items:start;padding-left:16px;padding-right:12px;line-height:24px}:host ion-checkbox::part(label-text-wrapper){margin-inline:12px 0}:host ion-checkbox span{white-space:pre-line}:host.has-label{display:block}:host.has-label.xs ion-checkbox::part(label){padding-block:4px}:host.has-label.sm ion-checkbox::part(label){padding-block:10px}:host.has-label.md ion-checkbox::part(label){padding-block:16px}:host.has-label.xs ion-checkbox::part(label){line-height:16px;font-size:14px}:host.has-label.xs ion-checkbox{--size: 16px;--border-radius: 4px}:host.has-label.xs ion-checkbox::part(container){padding:2px}:host :host-context(kirby-item){z-index:1}:host :host-context(kirby-item) ion-checkbox{margin:0}:host :host-context(kirby-item)[slot=start]{margin-inline-end:12px}\n"] }]
104
- }], ctorParameters: () => [{ type: i1.IonicElementPartHelper }], propDecorators: { ionCheckboxElement: [{
113
+ ], template: "<ion-checkbox\n mode=\"md\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (ionChange)=\"onChecked($event.detail.checked)\"\n (ionBlur)=\"onBlur()\"\n [labelPlacement]=\"_labelPlacement\"\n [justify]=\"_justify\"\n>\n <span *ngIf=\"text\">{{ text }}</span>\n <ng-content></ng-content>\n</ion-checkbox>\n", styles: [":host{display:flex}:host.attention-level1 ion-checkbox{--checkmark-color: var(--kirby-black);--checkbox-background-checked: var(--kirby-success);--border-color-checked: var(--kirby-success)}@media (hover: hover){:host.attention-level1 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: rgb(45.030660793, 192.689339207, 114.1474889868);--border-color-checked: rgb(45.030660793, 192.689339207, 114.1474889868)}}:host.attention-level1 ion-checkbox:active,:host.attention-level1 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background-checked: rgb(40.7420264317, 174.3379735683, 103.2762995595);--border-color-checked: rgb(40.7420264317, 174.3379735683, 103.2762995595)}:host.attention-level2 ion-checkbox{--checkmark-color: var(--kirby-white);--checkbox-background-checked: var(--kirby-black);--border-color-checked: var(--kirby-black)}@media (hover: hover){:host.attention-level2 ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background-checked: rgb(91.56, 91.56, 91.56);--border-color-checked: rgb(91.56, 91.56, 91.56)}}:host.attention-level2 ion-checkbox:active,:host.attention-level2 ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkmark-color: rgb(234.6, 234.6, 234.6);--checkbox-background-checked: rgb(109.72, 109.72, 109.72);--border-color-checked: rgb(109.72, 109.72, 109.72)}:host.error ion-checkbox{--border-color: var(--kirby-danger)}:host[disabled]{color:var(--kirby-text-color-semi-dark)}:host[disabled] ion-checkbox{--checkmark-color: var(--kirby-semi-dark);--checkbox-background: var(--kirby-semi-light);--checkbox-background-checked: var(--kirby-semi-light);--border-color: var(--kirby-medium);--border-color-checked: var(--kirby-semi-light)}:host[disabled] ion-checkbox::part(label-text-wrapper){opacity:1}:host[disabled] ion-checkbox::part(native-wrapper){opacity:1}:host:has(ion-checkbox.in-item.checkbox-justify-space-between){width:100%}:host.xs ion-checkbox:not(.in-item)::part(label){padding-block:4px}:host.sm ion-checkbox:not(.in-item)::part(label){padding-block:10px}:host.md ion-checkbox:not(.in-item)::part(label){padding-block:16px}:host.xs ion-checkbox::part(label){line-height:16px;font-size:14px}:host.xs ion-checkbox{--size: 16px;--border-radius: 4px}:host.xs ion-checkbox::part(container){padding:2px}:host ion-checkbox{--transition: 80ms;--size: 24px;--checkmark-width: 4px;--checkbox-background: var(--kirby-white);--border-width: 1px;--border-color: var(--kirby-semi-dark);--border-radius: 6px}@media (hover: hover) and (pointer: fine){:host ion-checkbox:focus-within::part(container){transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}@media (hover: hover){:host ion-checkbox:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--checkbox-background: rgb(234.6, 234.6, 234.6)}}:host ion-checkbox:active,:host ion-checkbox.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--checkbox-background: rgb(224.4, 224.4, 224.4)}:host ion-checkbox::part(container){padding:4px}:host ion-checkbox::part(label){align-items:start;padding-inline:16px 12px;line-height:24px}:host ion-checkbox::part(label-text-wrapper){margin-inline:12px 0}:host ion-checkbox.in-item::part(label){align-items:center;padding-inline:0}:host ion-checkbox.in-item::part(label-text-wrapper){margin-block:0}:host ion-checkbox.in-item.checkbox-label-placement-start::part(label-text-wrapper){margin-inline:0 12px}:host ion-checkbox.in-item.checkbox-label-placement-end::part(label-text-wrapper){margin-inline:12px 0}:host ion-checkbox span{white-space:pre-line}:host :host-context(kirby-item){z-index:1}:host :host-context(kirby-item) ion-checkbox{margin:0}:host :host-context(kirby-item)[slot=start]{margin-block:0;margin-inline-end:12px}\n"] }]
114
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.IonicElementPartHelper }], propDecorators: { ionCheckboxElement: [{
105
115
  type: ViewChild,
106
116
  args: [IonCheckbox, { read: ElementRef, static: true }]
107
117
  }], checked: [{
@@ -109,9 +119,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
109
119
  }], attentionLevel: [{
110
120
  type: Input
111
121
  }], text: [{
112
- type: HostBinding,
113
- args: ['class.has-label']
114
- }, {
115
122
  type: Input
116
123
  }], size: [{
117
124
  type: HostBinding,
@@ -137,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
137
144
  }], checkedChange: [{
138
145
  type: Output
139
146
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY2hlY2tib3gvc3JjL2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NoZWNrYm94L3NyYy9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFrQnhELE1BQU0sT0FBTyxpQkFBaUI7SUFvQjVCLElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQTJDLGlCQUFpQjtRQUMxRCxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUEyQyxpQkFBaUI7UUFDMUQsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLEdBQUcsQ0FBQztJQUNyQyxDQUFDO0lBSUQsWUFBb0Isc0JBQThDO1FBQTlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUE5QnpELFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsbUJBQWMsR0FBYyxHQUFHLENBQUM7UUFRekMsU0FBSSxHQUF1QixJQUFJLENBQUM7UUFJaEMsYUFBUSxHQUFZ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LFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUYsV0FBVztzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBS2UsaUJBQWlCO3NCQUEzRCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFHTSxpQkFBaUI7c0JBQTNELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUkzQixhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IElvbmljRWxlbWVudFBhcnRIZWxwZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHsgSW9uQ2hlY2tib3ggfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkNoZWNrYm94XSxcbiAgc2VsZWN0b3I6ICdraXJieS1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBJb25pY0VsZW1lbnRQYXJ0SGVscGVyLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hlY2tib3hDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBWaWV3Q2hpbGQoSW9uQ2hlY2tib3gsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgaW9uQ2hlY2tib3hFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MSW9uQ2hlY2tib3hFbGVtZW50PjtcblxuICBASW5wdXQoKSBjaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF0dGVudGlvbkxldmVsOiAnMScgfCAnMicgPSAnMic7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtbGFiZWwnKVxuICBASW5wdXQoKVxuICB0ZXh0OiBzdHJpbmc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIEBJbnB1dCgpXG4gIHNpemU6ICd4cycgfCAnc20nIHwgJ21kJyA9ICdtZCc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lcnJvcicpXG4gIEBJbnB1dCgpXG4gIGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgZ2V0IF9pc0Rpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGw7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmF0dGVudGlvbi1sZXZlbDEnKSBnZXQgaXNBdHRlbnRpb25MZXZlbDEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0ZW50aW9uTGV2ZWwgPT09ICcxJztcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmF0dGVudGlvbi1sZXZlbDInKSBnZXQgaXNBdHRlbnRpb25MZXZlbDIoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0ZW50aW9uTGV2ZWwgPT09ICcyJztcbiAgfVxuXG4gIEBPdXRwdXQoKSBjaGVja2VkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW9uaWNFbGVtZW50UGFydEhlbHBlcjogSW9uaWNFbGVtZW50UGFydEhlbHBlcikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pb25pY0VsZW1lbnRQYXJ0SGVscGVyLnNldFBhcnQoJ2xhYmVsJywgdGhpcy5pb25DaGVja2JveEVsZW1lbnQsICcuY2hlY2tib3gtd3JhcHBlcicpO1xuICAgIHRoaXMuaW9uaWNFbGVtZW50UGFydEhlbHBlci5zZXRQYXJ0KFxuICAgICAgJ2xhYmVsLXRleHQtd3JhcHBlcicsXG4gICAgICB0aGlzLmlvbkNoZWNrYm94RWxlbWVudCxcbiAgICAgICcubGFiZWwtdGV4dC13cmFwcGVyJ1xuICAgICk7XG4gICAgdGhpcy5pb25pY0VsZW1lbnRQYXJ0SGVscGVyLnNldFBhcnQoXG4gICAgICAnbmF0aXZlLXdyYXBwZXInLFxuICAgICAgdGhpcy5pb25DaGVja2JveEVsZW1lbnQsXG4gICAgICAnLm5hdGl2ZS13cmFwcGVyJ1xuICAgICk7XG4gIH1cblxuICBvbkNoZWNrZWQoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XG4gICAgdGhpcy5fb25DaGFuZ2UodGhpcy5jaGVja2VkKTtcbiAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdCh0aGlzLmNoZWNrZWQpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgLy8gSW5pdGlhbGl6ZSBkZWZhdWx0IENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNhbGxiYWNrIGZ1bmN0aW9ucyAobm9vcClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXG4gIHByaXZhdGUgX29uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjaGVja2JveCdzIHZhbHVlLiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgICogcmVxdWlyZWQgdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIG1vZGVsLlxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBjaGVja2JveCdzIHZhbHVlXG4gICAqIGNoYW5nZXMgZnJvbSB1c2VyIGlucHV0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgICogcmVxdWlyZWQgdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBibHVycmVkXG4gICAqIGJ5IHRoZSB1c2VyLiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiB0b3VjaGVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIHRoZSBjaGVja2JveC4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlIHJlcXVpcmVkXG4gICAqIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgU2V0cyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIjxpb24tY2hlY2tib3hcbiAgbW9kZT1cIm1kXCJcbiAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIChpb25DaGFuZ2UpPVwib25DaGVja2VkKCRldmVudC5kZXRhaWwuY2hlY2tlZClcIlxuICBsYWJlbFBsYWNlbWVudD1cImVuZFwiXG4gIChpb25CbHVyKT1cIm9uQmx1cigpXCJcbj5cbiAgPHNwYW4gKm5nSWY9XCJ0ZXh0XCI+e3sgdGV4dCB9fTwvc3Bhbj5cbjwvaW9uLWNoZWNrYm94PlxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY2hlY2tib3gvc3JjL2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NoZWNrYm94L3NyYy9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFrQnhELE1BQU0sT0FBTyxpQkFBaUI7SUFtQjVCLElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQTJDLGlCQUFpQjtRQUMxRCxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUEyQyxpQkFBaUI7UUFDMUQsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLEdBQUcsQ0FBQztJQUNyQyxDQUFDO0lBT0QsWUFDVSxPQUFnQyxFQUNoQyxzQkFBOEM7UUFEOUMsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQWxDL0MsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixtQkFBYyxHQUFjLEdBQUcsQ0FBQztRQU96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RSxJQUFJO3lCQUNaO3FCQUNGO29IQUlPLGtCQUFrQjtzQkFEekIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2pELE9BQU87c0JBQWYsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFLTixJQUFJO3NCQUZILFdBQVc7dUJBQUMsT0FBTzs7c0JBQ25CLEtBQUs7Z0JBS04sUUFBUTtzQkFGUCxXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUYsV0FBVztzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBS2UsaUJBQWlCO3NCQUEzRCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFHTSxpQkFBaUI7c0JBQTNELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUkzQixhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgSW9uaWNFbGVtZW50UGFydEhlbHBlciB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBJb25DaGVja2JveCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQ2hlY2tib3hdLFxuICBzZWxlY3RvcjogJ2tpcmJ5LWNoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3guY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIElvbmljRWxlbWVudFBhcnRIZWxwZXIsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGVja2JveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICBAVmlld0NoaWxkKElvbkNoZWNrYm94LCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGlvbkNoZWNrYm94RWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTElvbkNoZWNrYm94RWxlbWVudD47XG5cbiAgQElucHV0KCkgY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdHRlbnRpb25MZXZlbDogJzEnIHwgJzInID0gJzInO1xuXG4gIEBJbnB1dCgpXG4gIHRleHQ6IHN0cmluZztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgQElucHV0KClcbiAgc2l6ZTogJ3hzJyB8ICdzbScgfCAnbWQnID0gJ21kJztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVycm9yJylcbiAgQElucHV0KClcbiAgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBnZXQgX2lzRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYXR0ZW50aW9uLWxldmVsMScpIGdldCBpc0F0dGVudGlvbkxldmVsMSgpIHtcbiAgICByZXR1cm4gdGhpcy5hdHRlbnRpb25MZXZlbCA9PT0gJzEnO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYXR0ZW50aW9uLWxldmVsMicpIGdldCBpc0F0dGVudGlvbkxldmVsMigpIHtcbiAgICByZXR1cm4gdGhpcy5hdHRlbnRpb25MZXZlbCA9PT0gJzInO1xuICB9XG5cbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgX2p1c3RpZnk6ICdzdGFydCcgfCAnZW5kJyB8ICdzcGFjZS1iZXR3ZWVuJyA9ICdzdGFydCc7XG4gIF9sYWJlbFBsYWNlbWVudDogJ2VuZCcgfCAnZml4ZWQnIHwgJ3N0YWNrZWQnIHwgJ3N0YXJ0JyA9ICdlbmQnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBpb25pY0VsZW1lbnRQYXJ0SGVscGVyOiBJb25pY0VsZW1lbnRQYXJ0SGVscGVyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzbG90ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzbG90Jyk7XG4gICAgaWYgKHNsb3QgPT09ICdlbmQnKSB7XG4gICAgICB0aGlzLl9qdXN0aWZ5ID0gJ3NwYWNlLWJldHdlZW4nO1xuICAgICAgdGhpcy5fbGFiZWxQbGFjZW1lbnQgPSAnc3RhcnQnO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlvbmljRWxlbWVudFBhcnRIZWxwZXIuc2V0UGFydCgnbGFiZWwnLCB0aGlzLmlvbkNoZWNrYm94RWxlbWVudCwgJy5jaGVja2JveC13cmFwcGVyJyk7XG4gICAgdGhpcy5pb25pY0VsZW1lbnRQYXJ0SGVscGVyLnNldFBhcnQoXG4gICAgICAnbGFiZWwtdGV4dC13cmFwcGVyJyxcbiAgICAgIHRoaXMuaW9uQ2hlY2tib3hFbGVtZW50LFxuICAgICAgJy5sYWJlbC10ZXh0LXdyYXBwZXInXG4gICAgKTtcbiAgICB0aGlzLmlvbmljRWxlbWVudFBhcnRIZWxwZXIuc2V0UGFydChcbiAgICAgICduYXRpdmUtd3JhcHBlcicsXG4gICAgICB0aGlzLmlvbkNoZWNrYm94RWxlbWVudCxcbiAgICAgICcubmF0aXZlLXdyYXBwZXInXG4gICAgKTtcbiAgfVxuXG4gIG9uQ2hlY2tlZChjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDtcbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZCk7XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICAvLyBJbml0aWFsaXplIGRlZmF1bHQgQ29udHJvbFZhbHVlQWNjZXNzb3IgY2FsbGJhY2sgZnVuY3Rpb25zIChub29wKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJpdmF0ZSBfb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNoZWNrYm94J3MgdmFsdWUuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja2VkID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIGNoZWNrYm94J3MgdmFsdWVcbiAgICogY2hhbmdlcyBmcm9tIHVzZXIgaW5wdXQuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIGNoZWNrYm94IGlzIGJsdXJyZWRcbiAgICogYnkgdGhlIHVzZXIuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSByZXF1aXJlZFxuICAgKiB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIHRvdWNoZWQuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZXMgdGhlIGNoZWNrYm94LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPGlvbi1jaGVja2JveFxuICBtb2RlPVwibWRcIlxuICBbY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgKGlvbkNoYW5nZSk9XCJvbkNoZWNrZWQoJGV2ZW50LmRldGFpbC5jaGVja2VkKVwiXG4gIChpb25CbHVyKT1cIm9uQmx1cigpXCJcbiAgW2xhYmVsUGxhY2VtZW50XT1cIl9sYWJlbFBsYWNlbWVudFwiXG4gIFtqdXN0aWZ5XT1cIl9qdXN0aWZ5XCJcbj5cbiAgPHNwYW4gKm5nSWY9XCJ0ZXh0XCI+e3sgdGV4dCB9fTwvc3Bhbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9pb24tY2hlY2tib3g+XG4iXX0=
@@ -466,7 +466,7 @@ export class DropdownComponent {
466
466
  useExisting: forwardRef((() => DropdownComponent)),
467
467
  multi: true,
468
468
  },
469
- ], queries: [{ propertyName: "itemTemplate", first: true, predicate: ListItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "slottedItems", predicate: ListItemTemplateDirective, read: ElementRef }, { propertyName: "kirbyItemsSlotted", predicate: ItemComponent, read: ElementRef }], viewQueries: [{ propertyName: "cardElement", first: true, predicate: CardComponent, descendants: true, read: ElementRef }, { propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true }, { propertyName: "buttonElement", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "kirbyItemsDefault", predicate: ItemComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<button\n kirby-button\n [size]=\"size\"\n [attentionLevel]=\"attentionLevel\"\n tabindex=\"-1\"\n (click)=\"onToggle($event)\"\n (mousedown)=\"onButtonMouseEvent($event)\"\n [disabled]=\"disabled\"\n type=\"button\"\n>\n <span class=\"text\">{{ selectedText || placeholder }}</span>\n <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n <kirby-popover\n [target]=\"buttonElement\"\n [popout]=\"popout\"\n (click)=\"_onPopoverClick()\"\n (willHide)=\"_onPopoverWillHide()\"\n >\n <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n <kirby-card>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: {\n $implicit: item,\n selected: i === selectedIndex,\n focused: i === focusedIndex,\n index: i\n }\n \"\n ></ng-container>\n </ng-container>\n </kirby-card>\n</ng-template>\n\n<ng-template\n #defaultItemTemplate\n let-item\n let-selected=\"selected\"\n let-index=\"index\"\n let-focused=\"focused\"\n>\n <kirby-item\n [selectable]=\"true\"\n [selected]=\"selected\"\n (click)=\"onItemSelect(index)\"\n [class.focused]=\"focused\"\n role=\"option\"\n >\n <!-- Tabindex fixes issue with popover dropdown not working in safari -->\n <h3 tabindex=\"0\">{{ getTextFromItem(item) }}</h3>\n <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n </kirby-item>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative;max-width:calc(100vw - 32px)}@media (hover: hover) and (pointer: fine){:host{outline:none;border-radius:999px}:host:focus{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host.clicked{box-shadow:none}:host.expand{display:block}:host.expand kirby-card{width:100%;min-width:initial;max-width:initial}:host.error>button,:host.ng-touched.ng-invalid>button{border-color:var(--kirby-danger)}:host>button{position:relative;margin:0;outline:none;width:100%;min-width:0}:host>button.attention-level2{border:1px solid transparent}:host>button .text{overflow:hidden;text-overflow:ellipsis}:host kirby-card{display:none;opacity:0;position:absolute;z-index:800}:host.is-opening kirby-card{display:block}:host.is-open kirby-card{display:block;opacity:1}:host.is-open>button{box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26}:host.popout-left kirby-card{right:0}:host.popout-up kirby-card{top:0;margin-top:-4px;transform:translateY(-100%)}:host.popout-up.is-open>button{z-index:801}kirby-popover{--max-height: 352px}kirby-card{max-height:352px;margin-block:4px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:288px;max-width:calc(100vw - 32px)}@media (min-width: 321px){kirby-card{min-width:343px}}:host-context(kirby-calendar)>button{border-color:transparent;font-weight:700;font-size:initial}@media (hover: hover){:host-context(kirby-calendar)>button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-calendar)>button:active,:host-context(kirby-calendar)>button.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-calendar).is-open>button{box-shadow:none}\n"], dependencies: [{ kind: "component", type: i3.CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "flat", "variant"] }, { kind: "component", type: i4.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "component", type: i5.ItemComponent, selector: "kirby-item", inputs: ["disabled", "selected", "disclosure", "selectable", "reorderable", "size", "rotateIcon"] }, { kind: "component", type: i6.PopoverComponent, selector: "kirby-popover", inputs: ["popout", "target"], outputs: ["willHide"] }, { kind: "component", type: i7.ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
469
+ ], queries: [{ propertyName: "itemTemplate", first: true, predicate: ListItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "slottedItems", predicate: ListItemTemplateDirective, read: ElementRef }, { propertyName: "kirbyItemsSlotted", predicate: ItemComponent, read: ElementRef }], viewQueries: [{ propertyName: "cardElement", first: true, predicate: CardComponent, descendants: true, read: ElementRef }, { propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true }, { propertyName: "buttonElement", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "kirbyItemsDefault", predicate: ItemComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<button\n kirby-button\n [size]=\"size\"\n [attentionLevel]=\"attentionLevel\"\n tabindex=\"-1\"\n (click)=\"onToggle($event)\"\n (mousedown)=\"onButtonMouseEvent($event)\"\n [disabled]=\"disabled\"\n type=\"button\"\n>\n <span class=\"text\">{{ selectedText || placeholder }}</span>\n <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n <kirby-popover\n [target]=\"buttonElement\"\n [popout]=\"popout\"\n (click)=\"_onPopoverClick()\"\n (willHide)=\"_onPopoverWillHide()\"\n >\n <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n <kirby-card>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: {\n $implicit: item,\n selected: i === selectedIndex,\n focused: i === focusedIndex,\n index: i\n }\n \"\n ></ng-container>\n </ng-container>\n </kirby-card>\n</ng-template>\n\n<ng-template\n #defaultItemTemplate\n let-item\n let-selected=\"selected\"\n let-index=\"index\"\n let-focused=\"focused\"\n>\n <kirby-item\n [selectable]=\"true\"\n [selected]=\"selected\"\n (click)=\"onItemSelect(index)\"\n [class.focused]=\"focused\"\n role=\"option\"\n >\n <!-- Tabindex fixes issue with popover dropdown not working in safari -->\n <h3 tabindex=\"0\">{{ getTextFromItem(item) }}</h3>\n <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n </kirby-item>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative;max-width:calc(100vw - 32px)}@media (hover: hover) and (pointer: fine){:host{outline:none;border-radius:999px}:host:focus{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host.clicked{box-shadow:none}:host.expand{display:block}:host.expand kirby-card{width:100%;min-width:initial;max-width:initial}:host.error>button,:host.ng-touched.ng-invalid>button{border-color:var(--kirby-danger)}:host>button{position:relative;margin:0;outline:none;width:100%;min-width:0}:host>button.attention-level2{border:1px solid transparent}:host>button .text{overflow:hidden;text-overflow:ellipsis}:host kirby-card{display:none;opacity:0;position:absolute;z-index:800}:host.is-opening kirby-card{display:block}:host.is-open kirby-card{display:block;opacity:1}:host.is-open>button{box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26}:host.popout-left kirby-card{right:0}:host.popout-up kirby-card{top:0;margin-top:-4px;transform:translateY(-100%)}:host.popout-up.is-open>button{z-index:801}kirby-popover{--max-height: 352px}kirby-card{max-height:352px;margin-block:4px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;min-width:288px;max-width:calc(100vw - 32px)}@media (min-width: 321px){kirby-card{min-width:343px}}:host-context(kirby-calendar)>button{border-color:transparent;font-weight:700;font-size:initial}@media (hover: hover){:host-context(kirby-calendar)>button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-calendar)>button:active,:host-context(kirby-calendar)>button.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-calendar).is-open>button{box-shadow:none}\n"], dependencies: [{ kind: "component", type: i3.CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "flat", "variant"] }, { kind: "component", type: i4.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "component", type: i5.ItemComponent, selector: "kirby-item", inputs: ["disabled", "selected", "disclosure", "selectable", "reorderable", "size", "rotateIcon"] }, { kind: "component", type: i6.PopoverComponent, selector: "kirby-popover", inputs: ["popout", "target"], outputs: ["willHide"] }, { kind: "component", type: i7.ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
470
470
  }
471
471
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownComponent, decorators: [{
472
472
  type: Component,