@kirbydesign/designsystem 10.2.0 → 10.3.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.
- package/accordion/accordion-item.component.d.ts +1 -0
- package/accordion/accordion-item.component.d.ts.map +1 -0
- package/accordion/accordion.directive.d.ts +1 -0
- package/accordion/accordion.directive.d.ts.map +1 -0
- package/accordion/accordion.module.d.ts +1 -0
- package/accordion/accordion.module.d.ts.map +1 -0
- package/accordion/index.d.ts +1 -0
- package/accordion/kirbydesign-designsystem-accordion.d.ts.map +1 -0
- package/accordion/public_api.d.ts +1 -0
- package/accordion/public_api.d.ts.map +1 -0
- package/action-group/action-group.component.d.ts +1 -0
- package/action-group/action-group.component.d.ts.map +1 -0
- package/action-group/index.d.ts +1 -0
- package/action-group/kirbydesign-designsystem-action-group.d.ts.map +1 -0
- package/action-group/public_api.d.ts +1 -0
- package/action-group/public_api.d.ts.map +1 -0
- package/avatar/avatar.component.d.ts +1 -0
- package/avatar/avatar.component.d.ts.map +1 -0
- package/avatar/index.d.ts +1 -0
- package/avatar/kirbydesign-designsystem-avatar.d.ts.map +1 -0
- package/avatar/public_api.d.ts +1 -0
- package/avatar/public_api.d.ts.map +1 -0
- package/badge/badge.component.d.ts +1 -0
- package/badge/badge.component.d.ts.map +1 -0
- package/badge/index.d.ts +1 -0
- package/badge/kirbydesign-designsystem-badge.d.ts.map +1 -0
- package/badge/public_api.d.ts +1 -0
- package/badge/public_api.d.ts.map +1 -0
- package/button/button.component.d.ts +1 -0
- package/button/button.component.d.ts.map +1 -0
- package/button/index.d.ts +1 -0
- package/button/kirbydesign-designsystem-button.d.ts.map +1 -0
- package/button/public_api.d.ts +1 -0
- package/button/public_api.d.ts.map +1 -0
- package/calendar/calendar.component.d.ts +1 -0
- package/calendar/calendar.component.d.ts.map +1 -0
- package/calendar/index.d.ts +1 -0
- package/calendar/interfaces/calendar-day.d.ts +1 -0
- package/calendar/interfaces/calendar-day.d.ts.map +1 -0
- package/calendar/interfaces/calendar-year-navigator-config.d.ts +1 -0
- package/calendar/interfaces/calendar-year-navigator-config.d.ts.map +1 -0
- package/calendar/kirbydesign-designsystem-calendar.d.ts.map +1 -0
- package/calendar/public_api.d.ts +1 -0
- package/calendar/public_api.d.ts.map +1 -0
- package/card/card-as-button/card-as-button.directive.d.ts +1 -0
- package/card/card-as-button/card-as-button.directive.d.ts.map +1 -0
- package/card/card-flag-level.d.ts +1 -0
- package/card/card-flag-level.d.ts.map +1 -0
- package/card/card-footer/card-footer.component.d.ts +1 -0
- package/card/card-footer/card-footer.component.d.ts.map +1 -0
- package/card/card-header/card-header.component.d.ts +1 -0
- package/card/card-header/card-header.component.d.ts.map +1 -0
- package/card/card.component.d.ts +1 -0
- package/card/card.component.d.ts.map +1 -0
- package/card/card.module.d.ts +1 -0
- package/card/card.module.d.ts.map +1 -0
- package/card/index.d.ts +1 -0
- package/card/kirbydesign-designsystem-card.d.ts.map +1 -0
- package/card/public_api.d.ts +1 -0
- package/card/public_api.d.ts.map +1 -0
- package/chart/chart/chart.component.d.ts +1 -0
- package/chart/chart/chart.component.d.ts.map +1 -0
- package/chart/chart/index.d.ts +1 -0
- package/chart/chart/index.d.ts.map +1 -0
- package/chart/chart-config/chart-bar-config/chart-bar-config.d.ts +1 -0
- package/chart/chart-config/chart-bar-config/chart-bar-config.d.ts.map +1 -0
- package/chart/chart-config/chart-base-config.d.ts +1 -0
- package/chart/chart-config/chart-base-config.d.ts.map +1 -0
- package/chart/chart-config/chart-stock-config/chart-stock-config.d.ts +1 -0
- package/chart/chart-config/chart-stock-config/chart-stock-config.d.ts.map +1 -0
- package/chart/chart-config/chart-stock-config/data-label-position/data-label-position.d.ts +1 -0
- package/chart/chart-config/chart-stock-config/data-label-position/data-label-position.d.ts.map +1 -0
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.d.ts +1 -0
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.d.ts.map +1 -0
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.d.ts +1 -0
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.d.ts.map +1 -0
- package/chart/charts.module.d.ts +1 -0
- package/chart/charts.module.d.ts.map +1 -0
- package/chart/index.d.ts +1 -0
- package/chart/kirbydesign-designsystem-chart.d.ts.map +1 -0
- package/chart/public_api.d.ts +1 -0
- package/chart/public_api.d.ts.map +1 -0
- package/chart/shared/base-chart/base-chart.component.d.ts +1 -0
- package/chart/shared/base-chart/base-chart.component.d.ts.map +1 -0
- package/chart/shared/base-chart/index.d.ts +1 -0
- package/chart/shared/base-chart/index.d.ts.map +1 -0
- package/chart/shared/chart-config-service/chart-config.service.d.ts +1 -0
- package/chart/shared/chart-config-service/chart-config.service.d.ts.map +1 -0
- package/chart/shared/chart-config-service/configs/annotations.config.d.ts +1 -0
- package/chart/shared/chart-config-service/configs/annotations.config.d.ts.map +1 -0
- package/chart/shared/chart-config-service/configs/global-defaults.config.d.ts +1 -0
- package/chart/shared/chart-config-service/configs/global-defaults.config.d.ts.map +1 -0
- package/chart/shared/chart-config-service/configs/interaction-functions-extensions.config.d.ts +1 -0
- package/chart/shared/chart-config-service/configs/interaction-functions-extensions.config.d.ts.map +1 -0
- package/chart/shared/chart-config-service/configs/type.config.d.ts +1 -0
- package/chart/shared/chart-config-service/configs/type.config.d.ts.map +1 -0
- package/chart/shared/chart-config-service/index.d.ts +1 -0
- package/chart/shared/chart-config-service/index.d.ts.map +1 -0
- package/chart/shared/chart-js-service/annotations.delegate.d.ts +1 -0
- package/chart/shared/chart-js-service/annotations.delegate.d.ts.map +1 -0
- package/chart/shared/chart-js-service/chart-js.service.d.ts +1 -0
- package/chart/shared/chart-js-service/chart-js.service.d.ts.map +1 -0
- package/chart/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.d.ts +1 -0
- package/chart/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.d.ts.map +1 -0
- package/chart/shared/chart-js-service/configured-chart-js.d.ts +1 -0
- package/chart/shared/chart-js-service/configured-chart-js.d.ts.map +1 -0
- package/chart/shared/chart-js-service/index.d.ts +1 -0
- package/chart/shared/chart-js-service/index.d.ts.map +1 -0
- package/chart/shared/chart-js-service/test-utils.d.ts +1 -0
- package/chart/shared/chart-js-service/test-utils.d.ts.map +1 -0
- package/chart/shared/charts.types.d.ts +1 -0
- package/chart/shared/charts.types.d.ts.map +1 -0
- package/chart/shared/index.d.ts +1 -0
- package/chart/shared/index.d.ts.map +1 -0
- package/chart/stock-chart/index.d.ts +1 -0
- package/chart/stock-chart/index.d.ts.map +1 -0
- package/chart/stock-chart/stock-chart-js.service.d.ts +1 -0
- package/chart/stock-chart/stock-chart-js.service.d.ts.map +1 -0
- package/chart/stock-chart/stock-chart.component.d.ts +1 -0
- package/chart/stock-chart/stock-chart.component.d.ts.map +1 -0
- package/checkbox/checkbox.component.d.ts +1 -0
- package/checkbox/checkbox.component.d.ts.map +1 -0
- package/checkbox/index.d.ts +1 -0
- package/checkbox/kirbydesign-designsystem-checkbox.d.ts.map +1 -0
- package/checkbox/public_api.d.ts +1 -0
- package/checkbox/public_api.d.ts.map +1 -0
- package/data-table/data-table.module.d.ts +1 -0
- package/data-table/data-table.module.d.ts.map +1 -0
- package/data-table/index.d.ts +1 -0
- package/data-table/kirbydesign-designsystem-data-table.d.ts.map +1 -0
- package/data-table/public_api.d.ts +1 -0
- package/data-table/public_api.d.ts.map +1 -0
- package/data-table/sortable/sortable.component.d.ts +1 -0
- package/data-table/sortable/sortable.component.d.ts.map +1 -0
- package/divider/divider.component.d.ts +1 -0
- package/divider/divider.component.d.ts.map +1 -0
- package/divider/index.d.ts +1 -0
- package/divider/kirbydesign-designsystem-divider.d.ts.map +1 -0
- package/divider/public_api.d.ts +1 -0
- package/divider/public_api.d.ts.map +1 -0
- package/dropdown/dropdown.component.d.ts +1 -0
- package/dropdown/dropdown.component.d.ts.map +1 -0
- package/dropdown/dropdown.module.d.ts +1 -0
- package/dropdown/dropdown.module.d.ts.map +1 -0
- package/dropdown/dropdown.types.d.ts +1 -0
- package/dropdown/dropdown.types.d.ts.map +1 -0
- package/dropdown/index.d.ts +1 -0
- package/dropdown/keyboard-handler.service.d.ts +1 -0
- package/dropdown/keyboard-handler.service.d.ts.map +1 -0
- package/dropdown/kirbydesign-designsystem-dropdown.d.ts.map +1 -0
- package/dropdown/public_api.d.ts +1 -0
- package/dropdown/public_api.d.ts.map +1 -0
- package/empty-state/empty-state.component.d.ts +1 -0
- package/empty-state/empty-state.component.d.ts.map +1 -0
- package/empty-state/empty-state.module.d.ts +1 -0
- package/empty-state/empty-state.module.d.ts.map +1 -0
- package/empty-state/index.d.ts +1 -0
- package/empty-state/kirbydesign-designsystem-empty-state.d.ts.map +1 -0
- package/empty-state/public_api.d.ts +1 -0
- package/empty-state/public_api.d.ts.map +1 -0
- package/fab-sheet/fab-sheet.component.d.ts +1 -0
- package/fab-sheet/fab-sheet.component.d.ts.map +1 -0
- package/fab-sheet/index.d.ts +1 -0
- package/fab-sheet/kirbydesign-designsystem-fab-sheet.d.ts.map +1 -0
- package/fab-sheet/public_api.d.ts +1 -0
- package/fab-sheet/public_api.d.ts.map +1 -0
- package/fesm2022/kirbydesign-designsystem-accordion.mjs +12 -11
- package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-action-group.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-avatar.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-badge.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-button.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-calendar.mjs +5 -4
- package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-card.mjs +20 -19
- package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-chart.mjs +25 -25
- package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-data-table.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-divider.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-flag.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +34 -34
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-header.mjs +24 -20
- package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers.mjs +9 -9
- package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-icon.mjs +29 -13
- package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-group.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-list.mjs +51 -45
- package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-menu.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-modal.mjs +55 -52
- package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-page.mjs +52 -44
- package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-popover.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-radio.mjs +21 -23
- package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +5 -5
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-section-header.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared.mjs +18 -18
- package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide.mjs +16 -14
- package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-spinner.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +15 -15
- package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs +287 -354
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +19 -10
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem.mjs +16 -14
- package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
- package/flag/flag.component.d.ts +1 -0
- package/flag/flag.component.d.ts.map +1 -0
- package/flag/index.d.ts +1 -0
- package/flag/kirbydesign-designsystem-flag.d.ts.map +1 -0
- package/flag/public_api.d.ts +1 -0
- package/flag/public_api.d.ts.map +1 -0
- package/form-field/directives/affix/affix.directive.d.ts +1 -0
- package/form-field/directives/affix/affix.directive.d.ts.map +1 -0
- package/form-field/directives/date/date-input.directive.d.ts +1 -0
- package/form-field/directives/date/date-input.directive.d.ts.map +1 -0
- package/form-field/directives/decimal-mask/decimal-mask.directive.d.ts +1 -0
- package/form-field/directives/decimal-mask/decimal-mask.directive.d.ts.map +1 -0
- package/form-field/form-field-message/form-field-message.component.d.ts +1 -0
- package/form-field/form-field-message/form-field-message.component.d.ts.map +1 -0
- package/form-field/form-field.component.d.ts +1 -0
- package/form-field/form-field.component.d.ts.map +1 -0
- package/form-field/form-field.module.d.ts +1 -0
- package/form-field/form-field.module.d.ts.map +1 -0
- package/form-field/index.d.ts +1 -0
- package/form-field/input/input.component.d.ts +1 -0
- package/form-field/input/input.component.d.ts.map +1 -0
- package/form-field/input-counter/input-counter.component.d.ts +1 -0
- package/form-field/input-counter/input-counter.component.d.ts.map +1 -0
- package/form-field/kirbydesign-designsystem-form-field.d.ts.map +1 -0
- package/form-field/public_api.d.ts +1 -0
- package/form-field/public_api.d.ts.map +1 -0
- package/form-field/textarea/textarea.component.d.ts +1 -0
- package/form-field/textarea/textarea.component.d.ts.map +1 -0
- package/header/header.component.d.ts +1 -0
- package/header/header.component.d.ts.map +1 -0
- package/header/header.module.d.ts +1 -0
- package/header/header.module.d.ts.map +1 -0
- package/header/index.d.ts +1 -0
- package/header/kirbydesign-designsystem-header.d.ts.map +1 -0
- package/header/public_api.d.ts +1 -0
- package/header/public_api.d.ts.map +1 -0
- package/helpers/chart-config-has-type.d.ts +1 -0
- package/helpers/chart-config-has-type.d.ts.map +1 -0
- package/helpers/color-helper.d.ts +1 -0
- package/helpers/color-helper.d.ts.map +1 -0
- package/helpers/content-mutation-observer.d.ts +1 -0
- package/helpers/content-mutation-observer.d.ts.map +1 -0
- package/helpers/deep-copy.d.ts +1 -0
- package/helpers/deep-copy.d.ts.map +1 -0
- package/helpers/design-token-helper.d.ts +1 -0
- package/helpers/design-token-helper.d.ts.map +1 -0
- package/helpers/element-ancestor-utils.d.ts +1 -0
- package/helpers/element-ancestor-utils.d.ts.map +1 -0
- package/helpers/index.d.ts +1 -0
- package/helpers/ionic-element-part-helper.d.ts +1 -0
- package/helpers/ionic-element-part-helper.d.ts.map +1 -0
- package/helpers/kirby-animation.d.ts +1 -0
- package/helpers/kirby-animation.d.ts.map +1 -0
- package/helpers/kirbydesign-designsystem-helpers.d.ts.map +1 -0
- package/helpers/line-clamp-helper.d.ts +1 -0
- package/helpers/line-clamp-helper.d.ts.map +1 -0
- package/helpers/merge-deep.d.ts +1 -0
- package/helpers/merge-deep.d.ts.map +1 -0
- package/helpers/platform.service.d.ts +1 -0
- package/helpers/platform.service.d.ts.map +1 -0
- package/helpers/public_api.d.ts +1 -0
- package/helpers/public_api.d.ts.map +1 -0
- package/helpers/scss/index.d.ts +1 -0
- package/helpers/scss/kirbydesign-designsystem-helpers-scss.d.ts.map +1 -0
- package/helpers/scss/public_api.d.ts +1 -0
- package/helpers/scss/public_api.d.ts.map +1 -0
- package/helpers/scss/scss-helper.d.ts +1 -0
- package/helpers/scss/scss-helper.d.ts.map +1 -0
- package/helpers/string-helper.d.ts +1 -0
- package/helpers/string-helper.d.ts.map +1 -0
- package/helpers/theme-color.type.d.ts +1 -0
- package/helpers/theme-color.type.d.ts.map +1 -0
- package/helpers/unique-id-generator.helper.d.ts +1 -0
- package/helpers/unique-id-generator.helper.d.ts.map +1 -0
- package/icon/icon-registry.service.d.ts +1 -0
- package/icon/icon-registry.service.d.ts.map +1 -0
- package/icon/icon-settings.d.ts +1 -0
- package/icon/icon-settings.d.ts.map +1 -0
- package/icon/icon.component.d.ts +7 -2
- package/icon/icon.component.d.ts.map +1 -0
- package/icon/icon.module.d.ts +1 -0
- package/icon/icon.module.d.ts.map +1 -0
- package/icon/index.d.ts +1 -0
- package/icon/kirby-icon-settings.d.ts +1 -0
- package/icon/kirby-icon-settings.d.ts.map +1 -0
- package/icon/kirbydesign-designsystem-icon.d.ts.map +1 -0
- package/icon/public_api.d.ts +1 -0
- package/icon/public_api.d.ts.map +1 -0
- package/icons/svg/expense.svg +1 -0
- package/icons/svg/income.svg +1 -0
- package/icons/svg/notification-fill.svg +1 -0
- package/icons/svg/signed-document.svg +1 -0
- package/index.d.ts +1 -0
- package/item/index.d.ts +1 -0
- package/item/item.component.d.ts +1 -0
- package/item/item.component.d.ts.map +1 -0
- package/item/item.module.d.ts +1 -0
- package/item/item.module.d.ts.map +1 -0
- package/item/kirbydesign-designsystem-item.d.ts.map +1 -0
- package/item/label/label.component.d.ts +1 -0
- package/item/label/label.component.d.ts.map +1 -0
- package/item/public_api.d.ts +1 -0
- package/item/public_api.d.ts.map +1 -0
- package/item-group/index.d.ts +1 -0
- package/item-group/item-group.component.d.ts +1 -0
- package/item-group/item-group.component.d.ts.map +1 -0
- package/item-group/kirbydesign-designsystem-item-group.d.ts.map +1 -0
- package/item-group/public_api.d.ts +1 -0
- package/item-group/public_api.d.ts.map +1 -0
- package/item-sliding/index.d.ts +1 -0
- package/item-sliding/item-sliding.component.d.ts +1 -0
- package/item-sliding/item-sliding.component.d.ts.map +1 -0
- package/item-sliding/item-sliding.types.d.ts +1 -0
- package/item-sliding/item-sliding.types.d.ts.map +1 -0
- package/item-sliding/kirbydesign-designsystem-item-sliding.d.ts.map +1 -0
- package/item-sliding/public_api.d.ts +1 -0
- package/item-sliding/public_api.d.ts.map +1 -0
- package/kirby-app/index.d.ts +1 -0
- package/kirby-app/kirby-app.component.d.ts +1 -0
- package/kirby-app/kirby-app.component.d.ts.map +1 -0
- package/kirby-app/kirby-app.module.d.ts +1 -0
- package/kirby-app/kirby-app.module.d.ts.map +1 -0
- package/kirby-app/kirbydesign-designsystem-kirby-app.d.ts.map +1 -0
- package/kirby-app/public_api.d.ts +1 -0
- package/kirby-app/public_api.d.ts.map +1 -0
- package/kirby-ionic-module/index.d.ts +1 -0
- package/kirby-ionic-module/kirby-ionic.module.d.ts +1 -0
- package/kirby-ionic-module/kirby-ionic.module.d.ts.map +1 -0
- package/kirby-ionic-module/kirbydesign-designsystem-kirby-ionic-module.d.ts.map +1 -0
- package/kirby-ionic-module/public_api.d.ts +1 -0
- package/kirby-ionic-module/public_api.d.ts.map +1 -0
- package/kirbydesign-designsystem.d.ts.map +1 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/segmented-control/segment-item.d.ts +1 -0
- package/lib/components/segmented-control/segment-item.d.ts.map +1 -0
- package/lib/components/segmented-control/segmented-control.component.d.ts +1 -2
- package/lib/components/segmented-control/segmented-control.component.d.ts.map +1 -0
- package/lib/directives/index.d.ts +1 -0
- package/lib/directives/index.d.ts.map +1 -0
- package/lib/directives/key-handler/key-handler.directive.d.ts +1 -0
- package/lib/directives/key-handler/key-handler.directive.d.ts.map +1 -0
- package/lib/directives/modal-router-link/modal-router-link.directive.d.ts +1 -0
- package/lib/directives/modal-router-link/modal-router-link.directive.d.ts.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/kirby.module.d.ts +1 -0
- package/lib/kirby.module.d.ts.map +1 -0
- package/list/directives/index.d.ts +1 -0
- package/list/directives/index.d.ts.map +1 -0
- package/list/directives/infinite-scroll.directive.d.ts +1 -0
- package/list/directives/infinite-scroll.directive.d.ts.map +1 -0
- package/list/directives/list-item-color.directive.d.ts +1 -0
- package/list/directives/list-item-color.directive.d.ts.map +1 -0
- package/list/directives/scroll.model.d.ts +1 -0
- package/list/directives/scroll.model.d.ts.map +1 -0
- package/list/helpers/index.d.ts +1 -0
- package/list/helpers/index.d.ts.map +1 -0
- package/list/helpers/list-helper.d.ts +1 -0
- package/list/helpers/list-helper.d.ts.map +1 -0
- package/list/index.d.ts +1 -0
- package/list/kirbydesign-designsystem-list.d.ts.map +1 -0
- package/list/list-experimental/index.d.ts +1 -0
- package/list/list-experimental/index.d.ts.map +1 -0
- package/list/list-experimental/list-experimental.component.d.ts +1 -0
- package/list/list-experimental/list-experimental.component.d.ts.map +1 -0
- package/list/list-header/index.d.ts +1 -0
- package/list/list-header/index.d.ts.map +1 -0
- package/list/list-header/list-header.component.d.ts +1 -0
- package/list/list-header/list-header.component.d.ts.map +1 -0
- package/list/list-item/index.d.ts +1 -0
- package/list/list-item/index.d.ts.map +1 -0
- package/list/list-item/list-item.component.d.ts +1 -0
- package/list/list-item/list-item.component.d.ts.map +1 -0
- package/list/list-section-header/index.d.ts +1 -0
- package/list/list-section-header/index.d.ts.map +1 -0
- package/list/list-section-header/list-section-header.component.d.ts +1 -0
- package/list/list-section-header/list-section-header.component.d.ts.map +1 -0
- package/list/list-swipe-action.d.ts +1 -0
- package/list/list-swipe-action.d.ts.map +1 -0
- package/list/list-swipe-action.type.d.ts +1 -0
- package/list/list-swipe-action.type.d.ts.map +1 -0
- package/list/list.component.d.ts +1 -0
- package/list/list.component.d.ts.map +1 -0
- package/list/list.directive.d.ts +1 -0
- package/list/list.directive.d.ts.map +1 -0
- package/list/list.event.d.ts +1 -0
- package/list/list.event.d.ts.map +1 -0
- package/list/list.module.d.ts +1 -0
- package/list/list.module.d.ts.map +1 -0
- package/list/public_api.d.ts +1 -0
- package/list/public_api.d.ts.map +1 -0
- package/loading-overlay/index.d.ts +1 -0
- package/loading-overlay/kirbydesign-designsystem-loading-overlay.d.ts.map +1 -0
- package/loading-overlay/loading-overlay.component.d.ts +1 -0
- package/loading-overlay/loading-overlay.component.d.ts.map +1 -0
- package/loading-overlay/loading-overlay.service.d.ts +1 -0
- package/loading-overlay/loading-overlay.service.d.ts.map +1 -0
- package/loading-overlay/public_api.d.ts +1 -0
- package/loading-overlay/public_api.d.ts.map +1 -0
- package/menu/index.d.ts +1 -0
- package/menu/kirbydesign-designsystem-menu.d.ts.map +1 -0
- package/menu/menu.component.d.ts +1 -0
- package/menu/menu.component.d.ts.map +1 -0
- package/menu/public_api.d.ts +1 -0
- package/menu/public_api.d.ts.map +1 -0
- package/modal/index.d.ts +1 -0
- package/modal/kirbydesign-designsystem-modal.d.ts.map +1 -0
- package/modal/modal/action-sheet/action-sheet.component.d.ts +1 -0
- package/modal/modal/action-sheet/action-sheet.component.d.ts.map +1 -0
- package/modal/modal/action-sheet/config/action-sheet-config.d.ts +1 -0
- package/modal/modal/action-sheet/config/action-sheet-config.d.ts.map +1 -0
- package/modal/modal/action-sheet/config/action-sheet-item.d.ts +1 -0
- package/modal/modal/action-sheet/config/action-sheet-item.d.ts.map +1 -0
- package/modal/modal/action-sheet/index.d.ts +1 -0
- package/modal/modal/action-sheet/index.d.ts.map +1 -0
- package/modal/modal/alert/alert.component.d.ts +1 -0
- package/modal/modal/alert/alert.component.d.ts.map +1 -0
- package/modal/modal/alert/config/alert-config.d.ts +1 -0
- package/modal/modal/alert/config/alert-config.d.ts.map +1 -0
- package/modal/modal/alert/index.d.ts +1 -0
- package/modal/modal/alert/index.d.ts.map +1 -0
- package/modal/modal/footer/modal-footer.component.d.ts +1 -0
- package/modal/modal/footer/modal-footer.component.d.ts.map +1 -0
- package/modal/modal/index.d.ts +1 -0
- package/modal/modal/index.d.ts.map +1 -0
- package/modal/modal/modal-component/modal.component.d.ts +1 -0
- package/modal/modal/modal-component/modal.component.d.ts.map +1 -0
- package/modal/modal/services/action-sheet.helper.d.ts +1 -0
- package/modal/modal/services/action-sheet.helper.d.ts.map +1 -0
- package/modal/modal/services/alert.helper.d.ts +1 -0
- package/modal/modal/services/alert.helper.d.ts.map +1 -0
- package/modal/modal/services/can-dismiss-modal-guard.d.ts +1 -0
- package/modal/modal/services/can-dismiss-modal-guard.d.ts.map +1 -0
- package/modal/modal/services/can-dismiss.helper.d.ts +1 -0
- package/modal/modal/services/can-dismiss.helper.d.ts.map +1 -0
- package/modal/modal/services/index.d.ts +1 -0
- package/modal/modal/services/index.d.ts.map +1 -0
- package/modal/modal/services/modal-animation-builder.service.d.ts +1 -0
- package/modal/modal/services/modal-animation-builder.service.d.ts.map +1 -0
- package/modal/modal/services/modal.controller.d.ts +1 -0
- package/modal/modal/services/modal.controller.d.ts.map +1 -0
- package/modal/modal/services/modal.helper.d.ts +1 -0
- package/modal/modal/services/modal.helper.d.ts.map +1 -0
- package/modal/modal-navigation.service.d.ts +1 -0
- package/modal/modal-navigation.service.d.ts.map +1 -0
- package/modal/modal-wrapper/compact/index.d.ts +1 -0
- package/modal/modal-wrapper/compact/index.d.ts.map +1 -0
- package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +1 -0
- package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts.map +1 -0
- package/modal/modal-wrapper/config/drawer-supplementary-action.d.ts +1 -0
- package/modal/modal-wrapper/config/drawer-supplementary-action.d.ts.map +1 -0
- package/modal/modal-wrapper/config/index.d.ts +1 -0
- package/modal/modal-wrapper/config/index.d.ts.map +1 -0
- package/modal/modal-wrapper/config/modal-config.d.ts +1 -0
- package/modal/modal-wrapper/config/modal-config.d.ts.map +1 -0
- package/modal/modal-wrapper/config/modal-config.helper.d.ts +1 -0
- package/modal/modal-wrapper/config/modal-config.helper.d.ts.map +1 -0
- package/modal/modal-wrapper/index.d.ts +1 -0
- package/modal/modal-wrapper/index.d.ts.map +1 -0
- package/modal/modal-wrapper/modal-elements-mover.delegate.d.ts +1 -0
- package/modal/modal-wrapper/modal-elements-mover.delegate.d.ts.map +1 -0
- package/modal/modal-wrapper/modal-wrapper.component.d.ts +1 -0
- package/modal/modal-wrapper/modal-wrapper.component.d.ts.map +1 -0
- package/modal/modal.interfaces.d.ts +1 -0
- package/modal/modal.interfaces.d.ts.map +1 -0
- package/modal/public_api.d.ts +1 -0
- package/modal/public_api.d.ts.map +1 -0
- package/package.json +9 -116
- package/page/index.d.ts +1 -0
- package/page/kirbydesign-designsystem-page.d.ts.map +1 -0
- package/page/page-footer/page-footer.component.d.ts +1 -0
- package/page/page-footer/page-footer.component.d.ts.map +1 -0
- package/page/page.component.d.ts +1 -0
- package/page/page.component.d.ts.map +1 -0
- package/page/page.module.d.ts +1 -0
- package/page/page.module.d.ts.map +1 -0
- package/page/public_api.d.ts +1 -0
- package/page/public_api.d.ts.map +1 -0
- package/popover/index.d.ts +1 -0
- package/popover/kirbydesign-designsystem-popover.d.ts.map +1 -0
- package/popover/popover.component.d.ts +1 -0
- package/popover/popover.component.d.ts.map +1 -0
- package/popover/public_api.d.ts +1 -0
- package/popover/public_api.d.ts.map +1 -0
- package/progress-circle/index.d.ts +1 -0
- package/progress-circle/kirbydesign-designsystem-progress-circle.d.ts.map +1 -0
- package/progress-circle/progress-circle-ring.component.d.ts +1 -0
- package/progress-circle/progress-circle-ring.component.d.ts.map +1 -0
- package/progress-circle/progress-circle.component.d.ts +1 -0
- package/progress-circle/progress-circle.component.d.ts.map +1 -0
- package/progress-circle/public_api.d.ts +1 -0
- package/progress-circle/public_api.d.ts.map +1 -0
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -0
- package/radio/index.d.ts +1 -0
- package/radio/kirbydesign-designsystem-radio.d.ts.map +1 -0
- package/radio/public_api.d.ts +1 -0
- package/radio/public_api.d.ts.map +1 -0
- package/radio/radio-group/radio-group.component.d.ts +1 -0
- package/radio/radio-group/radio-group.component.d.ts.map +1 -0
- package/radio/radio-module.d.ts +1 -0
- package/radio/radio-module.d.ts.map +1 -0
- package/radio/radio.component.d.ts +1 -0
- package/radio/radio.component.d.ts.map +1 -0
- package/range/index.d.ts +1 -0
- package/range/kirbydesign-designsystem-range.d.ts.map +1 -0
- package/range/public_api.d.ts +1 -0
- package/range/public_api.d.ts.map +1 -0
- package/range/range.component.d.ts +1 -0
- package/range/range.component.d.ts.map +1 -0
- package/reorder-list/index.d.ts +1 -0
- package/reorder-list/kirbydesign-designsystem-reorder-list.d.ts.map +1 -0
- package/reorder-list/public_api.d.ts +1 -0
- package/reorder-list/public_api.d.ts.map +1 -0
- package/reorder-list/reorder-event.d.ts +1 -0
- package/reorder-list/reorder-event.d.ts.map +1 -0
- package/reorder-list/reorder-list.component.d.ts +1 -0
- package/reorder-list/reorder-list.component.d.ts.map +1 -0
- package/router-outlet/index.d.ts +1 -0
- package/router-outlet/kirbydesign-designsystem-router-outlet.d.ts.map +1 -0
- package/router-outlet/public_api.d.ts +1 -0
- package/router-outlet/public_api.d.ts.map +1 -0
- package/router-outlet/router-outlet.component.d.ts +1 -0
- package/router-outlet/router-outlet.component.d.ts.map +1 -0
- package/router-outlet/router-outlet.module.d.ts +1 -0
- package/router-outlet/router-outlet.module.d.ts.map +1 -0
- package/section-header/index.d.ts +1 -0
- package/section-header/kirbydesign-designsystem-section-header.d.ts.map +1 -0
- package/section-header/public_api.d.ts +1 -0
- package/section-header/public_api.d.ts.map +1 -0
- package/section-header/section-header.component.d.ts +1 -0
- package/section-header/section-header.component.d.ts.map +1 -0
- package/shared/component-configuration.d.ts +1 -0
- package/shared/component-configuration.d.ts.map +1 -0
- package/shared/component-loader.directive.d.ts +1 -0
- package/shared/component-loader.directive.d.ts.map +1 -0
- package/shared/controls/label-helpers.d.ts +1 -0
- package/shared/controls/label-helpers.d.ts.map +1 -0
- package/shared/dynamic-component.d.ts +1 -0
- package/shared/dynamic-component.d.ts.map +1 -0
- package/shared/fit-heading/fit-heading.directive.d.ts +1 -0
- package/shared/fit-heading/fit-heading.directive.d.ts.map +1 -0
- package/shared/fit-heading/index.d.ts +1 -0
- package/shared/fit-heading/index.d.ts.map +1 -0
- package/shared/floating/floating.directive.d.ts +1 -0
- package/shared/floating/floating.directive.d.ts.map +1 -0
- package/shared/floating/index.d.ts +1 -0
- package/shared/floating/kirbydesign-designsystem-shared-floating.d.ts.map +1 -0
- package/shared/floating/public_api.d.ts +1 -0
- package/shared/floating/public_api.d.ts.map +1 -0
- package/shared/index.d.ts +1 -0
- package/shared/kirbydesign-designsystem-shared.d.ts.map +1 -0
- package/shared/portal/index.d.ts +1 -0
- package/shared/portal/kirbydesign-designsystem-shared-portal.d.ts.map +1 -0
- package/shared/portal/portal.directive.d.ts +1 -0
- package/shared/portal/portal.directive.d.ts.map +1 -0
- package/shared/portal/public_api.d.ts +1 -0
- package/shared/portal/public_api.d.ts.map +1 -0
- package/shared/public_api.d.ts +1 -0
- package/shared/public_api.d.ts.map +1 -0
- package/shared/resize-observer/resize-observer.factory.d.ts +1 -0
- package/shared/resize-observer/resize-observer.factory.d.ts.map +1 -0
- package/shared/resize-observer/resize-observer.service.d.ts +1 -0
- package/shared/resize-observer/resize-observer.service.d.ts.map +1 -0
- package/shared/theme-color/theme-color.directive.d.ts +1 -0
- package/shared/theme-color/theme-color.directive.d.ts.map +1 -0
- package/shared/translation/translation.interface.d.ts +1 -0
- package/shared/translation/translation.interface.d.ts.map +1 -0
- package/shared/translation/translation.service.d.ts +1 -0
- package/shared/translation/translation.service.d.ts.map +1 -0
- package/shared/translation/translations/da.d.ts +1 -0
- package/shared/translation/translations/da.d.ts.map +1 -0
- package/shared/translation/translations/en.d.ts +1 -0
- package/shared/translation/translations/en.d.ts.map +1 -0
- package/slide/index.d.ts +1 -0
- package/slide/kirbydesign-designsystem-slide.d.ts.map +1 -0
- package/slide/public_api.d.ts +1 -0
- package/slide/public_api.d.ts.map +1 -0
- package/slide/slide-stretch-height.directive.d.ts +1 -0
- package/slide/slide-stretch-height.directive.d.ts.map +1 -0
- package/slide/slide.directive.d.ts +1 -0
- package/slide/slide.directive.d.ts.map +1 -0
- package/slide/slide.module.d.ts +1 -0
- package/slide/slide.module.d.ts.map +1 -0
- package/slide/slides.component.d.ts +1 -0
- package/slide/slides.component.d.ts.map +1 -0
- package/slide-button/index.d.ts +1 -0
- package/slide-button/kirbydesign-designsystem-slide-button.d.ts.map +1 -0
- package/slide-button/public_api.d.ts +1 -0
- package/slide-button/public_api.d.ts.map +1 -0
- package/slide-button/slide-button.component.d.ts +1 -0
- package/slide-button/slide-button.component.d.ts.map +1 -0
- package/spinner/index.d.ts +1 -0
- package/spinner/kirbydesign-designsystem-spinner.d.ts.map +1 -0
- package/spinner/public_api.d.ts +1 -0
- package/spinner/public_api.d.ts.map +1 -0
- package/spinner/spinner.component.d.ts +1 -0
- package/spinner/spinner.component.d.ts.map +1 -0
- package/spinner/spinner.module.d.ts +1 -0
- package/spinner/spinner.module.d.ts.map +1 -0
- package/tab-navigation/index.d.ts +1 -0
- package/tab-navigation/kirbydesign-designsystem-tab-navigation.d.ts.map +1 -0
- package/tab-navigation/public_api.d.ts +1 -0
- package/tab-navigation/public_api.d.ts.map +1 -0
- package/tab-navigation/tab-navigation/tab-navigation.component.d.ts +1 -0
- package/tab-navigation/tab-navigation/tab-navigation.component.d.ts.map +1 -0
- package/tab-navigation/tab-navigation-item/tab-navigation-item.component.d.ts +1 -0
- package/tab-navigation/tab-navigation-item/tab-navigation-item.component.d.ts.map +1 -0
- package/tab-navigation/tab-navigation.module.d.ts +1 -0
- package/tab-navigation/tab-navigation.module.d.ts.map +1 -0
- package/tabs/index.d.ts +1 -0
- package/tabs/kirbydesign-designsystem-tabs.d.ts.map +1 -0
- package/tabs/public_api.d.ts +1 -0
- package/tabs/public_api.d.ts.map +1 -0
- package/tabs/tab-button/tab-button.component.d.ts +1 -0
- package/tabs/tab-button/tab-button.component.d.ts.map +1 -0
- package/tabs/tab-button/tab-button.events.d.ts +1 -0
- package/tabs/tab-button/tab-button.events.d.ts.map +1 -0
- package/tabs/tabs.component.d.ts +1 -0
- package/tabs/tabs.component.d.ts.map +1 -0
- package/tabs/tabs.module.d.ts +1 -0
- package/tabs/tabs.module.d.ts.map +1 -0
- package/tabs/tabs.service.d.ts +1 -0
- package/tabs/tabs.service.d.ts.map +1 -0
- package/testing/element-css-custom-matchers.d.ts +1 -0
- package/testing/element-css-custom-matchers.d.ts.map +1 -0
- package/testing/index.d.ts +1 -0
- package/testing/kirbydesign-designsystem-testing.d.ts.map +1 -0
- package/testing/public_api.d.ts +1 -0
- package/testing/public_api.d.ts.map +1 -0
- package/testing/test-helper.d.ts +1 -0
- package/testing/test-helper.d.ts.map +1 -0
- package/testing-base/index.d.ts +1 -0
- package/testing-base/kirbydesign-designsystem-testing-base.d.ts.map +1 -0
- package/testing-base/lib/components/index.d.ts +1 -0
- package/testing-base/lib/components/index.d.ts.map +1 -0
- package/testing-base/lib/components/mock.accordion-item.component.d.ts +2 -1
- package/testing-base/lib/components/mock.accordion-item.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.action-group.component.d.ts +2 -1
- package/testing-base/lib/components/mock.action-group.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.action-sheet.component.d.ts +2 -1
- package/testing-base/lib/components/mock.action-sheet.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.alert.component.d.ts +2 -1
- package/testing-base/lib/components/mock.alert.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.avatar.component.d.ts +2 -1
- package/testing-base/lib/components/mock.avatar.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.badge.component.d.ts +2 -1
- package/testing-base/lib/components/mock.badge.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.base-chart.component.d.ts +2 -1
- package/testing-base/lib/components/mock.base-chart.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.button.component.d.ts +2 -1
- package/testing-base/lib/components/mock.button.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.calendar.component.d.ts +2 -1
- package/testing-base/lib/components/mock.calendar.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.card-footer.component.d.ts +2 -1
- package/testing-base/lib/components/mock.card-footer.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.card-header.component.d.ts +2 -1
- package/testing-base/lib/components/mock.card-header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.card.component.d.ts +2 -1
- package/testing-base/lib/components/mock.card.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.chart.component.d.ts +2 -1
- package/testing-base/lib/components/mock.chart.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.checkbox.component.d.ts +2 -1
- package/testing-base/lib/components/mock.checkbox.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.divider.component.d.ts +2 -1
- package/testing-base/lib/components/mock.divider.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.dropdown.component.d.ts +2 -1
- package/testing-base/lib/components/mock.dropdown.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.empty-state.component.d.ts +2 -1
- package/testing-base/lib/components/mock.empty-state.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.fab-sheet.component.d.ts +2 -1
- package/testing-base/lib/components/mock.fab-sheet.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.flag.component.d.ts +2 -1
- package/testing-base/lib/components/mock.flag.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.form-field-message.component.d.ts +2 -1
- package/testing-base/lib/components/mock.form-field-message.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.form-field.component.d.ts +2 -1
- package/testing-base/lib/components/mock.form-field.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.header.component.d.ts +4 -3
- package/testing-base/lib/components/mock.header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.icon.component.d.ts +2 -1
- package/testing-base/lib/components/mock.icon.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.input-counter.component.d.ts +2 -1
- package/testing-base/lib/components/mock.input-counter.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.input.component.d.ts +2 -1
- package/testing-base/lib/components/mock.input.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.item-group.component.d.ts +2 -1
- package/testing-base/lib/components/mock.item-group.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.item-sliding.component.d.ts +2 -1
- package/testing-base/lib/components/mock.item-sliding.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.item.component.d.ts +2 -1
- package/testing-base/lib/components/mock.item.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.kirby-app.component.d.ts +2 -1
- package/testing-base/lib/components/mock.kirby-app.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.label.component.d.ts +2 -1
- package/testing-base/lib/components/mock.label.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list-experimental.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list-experimental.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list-header.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list-header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list-item.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list-item.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list-section-header.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list-section-header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.loading-overlay.component.d.ts +2 -1
- package/testing-base/lib/components/mock.loading-overlay.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.menu.component.d.ts +2 -1
- package/testing-base/lib/components/mock.menu.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.modal-compact-wrapper.component.d.ts +2 -1
- package/testing-base/lib/components/mock.modal-compact-wrapper.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.modal-footer.component.d.ts +2 -1
- package/testing-base/lib/components/mock.modal-footer.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.modal-wrapper.component.d.ts +2 -1
- package/testing-base/lib/components/mock.modal-wrapper.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.page-footer.component.d.ts +2 -1
- package/testing-base/lib/components/mock.page-footer.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.page.component.d.ts +12 -11
- package/testing-base/lib/components/mock.page.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.popover.component.d.ts +2 -1
- package/testing-base/lib/components/mock.popover.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.progress-circle-ring.component.d.ts +2 -1
- package/testing-base/lib/components/mock.progress-circle-ring.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.progress-circle.component.d.ts +2 -1
- package/testing-base/lib/components/mock.progress-circle.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.radio-group.component.d.ts +2 -1
- package/testing-base/lib/components/mock.radio-group.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.radio.component.d.ts +2 -1
- package/testing-base/lib/components/mock.radio.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.range.component.d.ts +2 -1
- package/testing-base/lib/components/mock.range.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.reorder-list.component.d.ts +2 -1
- package/testing-base/lib/components/mock.reorder-list.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.router-outlet.component.d.ts +2 -1
- package/testing-base/lib/components/mock.router-outlet.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.section-header.component.d.ts +2 -1
- package/testing-base/lib/components/mock.section-header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.segmented-control.component.d.ts +2 -1
- package/testing-base/lib/components/mock.segmented-control.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.slide-button.component.d.ts +2 -1
- package/testing-base/lib/components/mock.slide-button.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.slides.component.d.ts +2 -1
- package/testing-base/lib/components/mock.slides.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.spinner.component.d.ts +2 -1
- package/testing-base/lib/components/mock.spinner.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.stock-chart.component.d.ts +2 -1
- package/testing-base/lib/components/mock.stock-chart.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.tab-button.component.d.ts +2 -1
- package/testing-base/lib/components/mock.tab-button.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.tab-navigation-item.component.d.ts +2 -1
- package/testing-base/lib/components/mock.tab-navigation-item.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.tab-navigation.component.d.ts +2 -1
- package/testing-base/lib/components/mock.tab-navigation.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.tabs.component.d.ts +2 -1
- package/testing-base/lib/components/mock.tabs.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.textarea.component.d.ts +2 -1
- package/testing-base/lib/components/mock.textarea.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.toggle-button.component.d.ts +2 -1
- package/testing-base/lib/components/mock.toggle-button.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.toggle.component.d.ts +2 -1
- package/testing-base/lib/components/mock.toggle.component.d.ts.map +1 -0
- package/testing-base/lib/directives/index.d.ts +1 -0
- package/testing-base/lib/directives/index.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.accordion.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.accordion.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.affix.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.affix.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.card-as-button.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.card-as-button.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.component-loader.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.component-loader.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.date-input.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.date-input.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.decimal-mask.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.decimal-mask.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.fit-heading.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.fit-heading.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.floating.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.floating.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.infinite-scroll.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.infinite-scroll.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.key-handler.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.key-handler.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.list-item-color.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.list-item-color.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.list.directive.d.ts +5 -4
- package/testing-base/lib/directives/mock.list.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.modal-router-link.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.modal-router-link.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.portal.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.portal.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.slide.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.slide.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.theme-color.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.theme-color.directive.d.ts.map +1 -0
- package/testing-base/lib/index.d.ts +1 -0
- package/testing-base/lib/index.d.ts.map +1 -0
- package/testing-base/lib/kirby-testing-base.module.d.ts +2 -1
- package/testing-base/lib/kirby-testing-base.module.d.ts.map +1 -0
- package/testing-base/lib/mock-components.d.ts +1 -0
- package/testing-base/lib/mock-components.d.ts.map +1 -0
- package/testing-base/lib/mock-directives.d.ts +1 -0
- package/testing-base/lib/mock-directives.d.ts.map +1 -0
- package/testing-base/public_api.d.ts +1 -0
- package/testing-base/public_api.d.ts.map +1 -0
- package/testing-jasmine/index.d.ts +1 -0
- package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.d.ts.map +1 -0
- package/testing-jasmine/lib/kirby-testing.module.d.ts +1 -0
- package/testing-jasmine/lib/kirby-testing.module.d.ts.map +1 -0
- package/testing-jasmine/lib/mock-providers.d.ts +1 -0
- package/testing-jasmine/lib/mock-providers.d.ts.map +1 -0
- package/testing-jasmine/public_api.d.ts +1 -0
- package/testing-jasmine/public_api.d.ts.map +1 -0
- package/testing-jest/index.d.ts +1 -0
- package/testing-jest/kirbydesign-designsystem-testing-jest.d.ts.map +1 -0
- package/testing-jest/lib/kirby-testing.module.d.ts +1 -0
- package/testing-jest/lib/kirby-testing.module.d.ts.map +1 -0
- package/testing-jest/lib/mock-providers.d.ts +1 -0
- package/testing-jest/lib/mock-providers.d.ts.map +1 -0
- package/testing-jest/public_api.d.ts +1 -0
- package/testing-jest/public_api.d.ts.map +1 -0
- package/toast/config/toast-config.d.ts +1 -0
- package/toast/config/toast-config.d.ts.map +1 -0
- package/toast/index.d.ts +1 -0
- package/toast/kirbydesign-designsystem-toast.d.ts.map +1 -0
- package/toast/public_api.d.ts +1 -0
- package/toast/public_api.d.ts.map +1 -0
- package/toast/services/indexs.d.ts +1 -0
- package/toast/services/indexs.d.ts.map +1 -0
- package/toast/services/toast.controller.d.ts +1 -0
- package/toast/services/toast.controller.d.ts.map +1 -0
- package/toast/services/toast.helper.d.ts +1 -0
- package/toast/services/toast.helper.d.ts.map +1 -0
- package/toggle/index.d.ts +1 -0
- package/toggle/kirbydesign-designsystem-toggle.d.ts.map +1 -0
- package/toggle/public_api.d.ts +1 -0
- package/toggle/public_api.d.ts.map +1 -0
- package/toggle/toggle.component.d.ts +1 -0
- package/toggle/toggle.component.d.ts.map +1 -0
- package/toggle-button/index.d.ts +1 -0
- package/toggle-button/kirbydesign-designsystem-toggle-button.d.ts.map +1 -0
- package/toggle-button/public_api.d.ts +1 -0
- package/toggle-button/public_api.d.ts.map +1 -0
- package/toggle-button/toggle-button.component.d.ts +6 -1
- package/toggle-button/toggle-button.component.d.ts.map +1 -0
- package/toggle-button/toggle-button.module.d.ts +1 -0
- package/toggle-button/toggle-button.module.d.ts.map +1 -0
- package/types/event-listener-dispose-fn.d.ts +1 -0
- package/types/event-listener-dispose-fn.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/kirbydesign-designsystem-types.d.ts.map +1 -0
- package/types/public_api.d.ts +1 -0
- package/types/public_api.d.ts.map +1 -0
- package/types/unobserve-fn.d.ts +1 -0
- package/types/unobserve-fn.d.ts.map +1 -0
- package/types/window-ref.d.ts +1 -0
- package/types/window-ref.d.ts.map +1 -0
- package/esm2022/accordion/accordion-item.component.mjs +0 -85
- package/esm2022/accordion/accordion.directive.mjs +0 -14
- package/esm2022/accordion/accordion.module.mjs +0 -20
- package/esm2022/accordion/kirbydesign-designsystem-accordion.mjs +0 -5
- package/esm2022/accordion/public_api.mjs +0 -4
- package/esm2022/action-group/action-group.component.mjs +0 -131
- package/esm2022/action-group/kirbydesign-designsystem-action-group.mjs +0 -5
- package/esm2022/action-group/public_api.mjs +0 -2
- package/esm2022/avatar/avatar.component.mjs +0 -51
- package/esm2022/avatar/kirbydesign-designsystem-avatar.mjs +0 -5
- package/esm2022/avatar/public_api.mjs +0 -2
- package/esm2022/badge/badge.component.mjs +0 -38
- package/esm2022/badge/kirbydesign-designsystem-badge.mjs +0 -5
- package/esm2022/badge/public_api.mjs +0 -2
- package/esm2022/button/button.component.mjs +0 -158
- package/esm2022/button/kirbydesign-designsystem-button.mjs +0 -5
- package/esm2022/button/public_api.mjs +0 -2
- package/esm2022/calendar/calendar.component.mjs +0 -514
- package/esm2022/calendar/interfaces/calendar-day.mjs +0 -2
- package/esm2022/calendar/interfaces/calendar-year-navigator-config.mjs +0 -2
- package/esm2022/calendar/kirbydesign-designsystem-calendar.mjs +0 -5
- package/esm2022/calendar/public_api.mjs +0 -2
- package/esm2022/card/card-as-button/card-as-button.directive.mjs +0 -64
- package/esm2022/card/card-flag-level.mjs +0 -2
- package/esm2022/card/card-footer/card-footer.component.mjs +0 -19
- package/esm2022/card/card-header/card-header.component.mjs +0 -35
- package/esm2022/card/card.component.mjs +0 -78
- package/esm2022/card/card.module.mjs +0 -34
- package/esm2022/card/kirbydesign-designsystem-card.mjs +0 -5
- package/esm2022/card/public_api.mjs +0 -7
- package/esm2022/chart/chart/chart.component.mjs +0 -18
- package/esm2022/chart/chart/index.mjs +0 -2
- package/esm2022/chart/chart-config/chart-bar-config/chart-bar-config.mjs +0 -43
- package/esm2022/chart/chart-config/chart-base-config.mjs +0 -4
- package/esm2022/chart/chart-config/chart-stock-config/chart-stock-config.mjs +0 -153
- package/esm2022/chart/chart-config/chart-stock-config/data-label-position/data-label-position.mjs +0 -48
- package/esm2022/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.mjs +0 -37
- package/esm2022/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.mjs +0 -2
- package/esm2022/chart/charts.module.mjs +0 -19
- package/esm2022/chart/kirbydesign-designsystem-chart.mjs +0 -5
- package/esm2022/chart/public_api.mjs +0 -7
- package/esm2022/chart/shared/base-chart/base-chart.component.mjs +0 -124
- package/esm2022/chart/shared/base-chart/index.mjs +0 -2
- package/esm2022/chart/shared/chart-config-service/chart-config.service.mjs +0 -75
- package/esm2022/chart/shared/chart-config-service/configs/annotations.config.mjs +0 -32
- package/esm2022/chart/shared/chart-config-service/configs/global-defaults.config.mjs +0 -65
- package/esm2022/chart/shared/chart-config-service/configs/interaction-functions-extensions.config.mjs +0 -13
- package/esm2022/chart/shared/chart-config-service/configs/type.config.mjs +0 -207
- package/esm2022/chart/shared/chart-config-service/index.mjs +0 -2
- package/esm2022/chart/shared/chart-js-service/annotations.delegate.mjs +0 -35
- package/esm2022/chart/shared/chart-js-service/chart-js.service.mjs +0 -179
- package/esm2022/chart/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.mjs +0 -194
- package/esm2022/chart/shared/chart-js-service/configured-chart-js.mjs +0 -22
- package/esm2022/chart/shared/chart-js-service/index.mjs +0 -3
- package/esm2022/chart/shared/chart-js-service/test-utils.mjs +0 -167
- package/esm2022/chart/shared/charts.types.mjs +0 -4
- package/esm2022/chart/shared/index.mjs +0 -5
- package/esm2022/chart/stock-chart/index.mjs +0 -2
- package/esm2022/chart/stock-chart/stock-chart-js.service.mjs +0 -100
- package/esm2022/chart/stock-chart/stock-chart.component.mjs +0 -22
- package/esm2022/checkbox/checkbox.component.mjs +0 -166
- package/esm2022/checkbox/kirbydesign-designsystem-checkbox.mjs +0 -5
- package/esm2022/checkbox/public_api.mjs +0 -2
- package/esm2022/data-table/data-table.module.mjs +0 -24
- package/esm2022/data-table/kirbydesign-designsystem-data-table.mjs +0 -5
- package/esm2022/data-table/public_api.mjs +0 -3
- package/esm2022/data-table/sortable/sortable.component.mjs +0 -58
- package/esm2022/divider/divider.component.mjs +0 -14
- package/esm2022/divider/kirbydesign-designsystem-divider.mjs +0 -5
- package/esm2022/divider/public_api.mjs +0 -2
- package/esm2022/dropdown/dropdown.component.mjs +0 -611
- package/esm2022/dropdown/dropdown.module.mjs +0 -47
- package/esm2022/dropdown/dropdown.types.mjs +0 -12
- package/esm2022/dropdown/keyboard-handler.service.mjs +0 -50
- package/esm2022/dropdown/kirbydesign-designsystem-dropdown.mjs +0 -5
- package/esm2022/dropdown/public_api.mjs +0 -6
- package/esm2022/empty-state/empty-state.component.mjs +0 -69
- package/esm2022/empty-state/empty-state.module.mjs +0 -21
- package/esm2022/empty-state/kirbydesign-designsystem-empty-state.mjs +0 -5
- package/esm2022/empty-state/public_api.mjs +0 -3
- package/esm2022/fab-sheet/fab-sheet.component.mjs +0 -78
- package/esm2022/fab-sheet/kirbydesign-designsystem-fab-sheet.mjs +0 -5
- package/esm2022/fab-sheet/public_api.mjs +0 -2
- package/esm2022/flag/flag.component.mjs +0 -30
- package/esm2022/flag/kirbydesign-designsystem-flag.mjs +0 -5
- package/esm2022/flag/public_api.mjs +0 -2
- package/esm2022/form-field/directives/affix/affix.directive.mjs +0 -21
- package/esm2022/form-field/directives/date/date-input.directive.mjs +0 -129
- package/esm2022/form-field/directives/decimal-mask/decimal-mask.directive.mjs +0 -131
- package/esm2022/form-field/form-field-message/form-field-message.component.mjs +0 -18
- package/esm2022/form-field/form-field.component.mjs +0 -156
- package/esm2022/form-field/form-field.module.mjs +0 -24
- package/esm2022/form-field/input/input.component.mjs +0 -116
- package/esm2022/form-field/input-counter/input-counter.component.mjs +0 -35
- package/esm2022/form-field/kirbydesign-designsystem-form-field.mjs +0 -5
- package/esm2022/form-field/public_api.mjs +0 -10
- package/esm2022/form-field/textarea/textarea.component.mjs +0 -66
- package/esm2022/header/header.component.mjs +0 -158
- package/esm2022/header/header.module.mjs +0 -34
- package/esm2022/header/kirbydesign-designsystem-header.mjs +0 -5
- package/esm2022/header/public_api.mjs +0 -3
- package/esm2022/helpers/chart-config-has-type.mjs +0 -10
- package/esm2022/helpers/color-helper.mjs +0 -2
- package/esm2022/helpers/content-mutation-observer.mjs +0 -50
- package/esm2022/helpers/deep-copy.mjs +0 -52
- package/esm2022/helpers/design-token-helper.mjs +0 -2
- package/esm2022/helpers/element-ancestor-utils.mjs +0 -33
- package/esm2022/helpers/ionic-element-part-helper.mjs +0 -25
- package/esm2022/helpers/kirby-animation.mjs +0 -15
- package/esm2022/helpers/kirbydesign-designsystem-helpers.mjs +0 -5
- package/esm2022/helpers/line-clamp-helper.mjs +0 -31
- package/esm2022/helpers/merge-deep.mjs +0 -38
- package/esm2022/helpers/platform.service.mjs +0 -27
- package/esm2022/helpers/public_api.mjs +0 -17
- package/esm2022/helpers/scss/kirbydesign-designsystem-helpers-scss.mjs +0 -5
- package/esm2022/helpers/scss/public_api.mjs +0 -2
- package/esm2022/helpers/scss/scss-helper.mjs +0 -9
- package/esm2022/helpers/string-helper.mjs +0 -2
- package/esm2022/helpers/theme-color.type.mjs +0 -2
- package/esm2022/helpers/unique-id-generator.helper.mjs +0 -19
- package/esm2022/icon/icon-registry.service.mjs +0 -61
- package/esm2022/icon/icon-settings.mjs +0 -2
- package/esm2022/icon/icon.component.mjs +0 -62
- package/esm2022/icon/icon.module.mjs +0 -19
- package/esm2022/icon/kirby-icon-settings.mjs +0 -130
- package/esm2022/icon/kirbydesign-designsystem-icon.mjs +0 -5
- package/esm2022/icon/public_api.mjs +0 -6
- package/esm2022/item/item.component.mjs +0 -74
- package/esm2022/item/item.module.mjs +0 -22
- package/esm2022/item/kirbydesign-designsystem-item.mjs +0 -5
- package/esm2022/item/label/label.component.mjs +0 -23
- package/esm2022/item/public_api.mjs +0 -4
- package/esm2022/item-group/item-group.component.mjs +0 -18
- package/esm2022/item-group/kirbydesign-designsystem-item-group.mjs +0 -5
- package/esm2022/item-group/public_api.mjs +0 -2
- package/esm2022/item-sliding/item-sliding.component.mjs +0 -38
- package/esm2022/item-sliding/item-sliding.types.mjs +0 -2
- package/esm2022/item-sliding/kirbydesign-designsystem-item-sliding.mjs +0 -5
- package/esm2022/item-sliding/public_api.mjs +0 -3
- package/esm2022/kirby-app/kirby-app.component.mjs +0 -35
- package/esm2022/kirby-app/kirby-app.module.mjs +0 -19
- package/esm2022/kirby-app/kirbydesign-designsystem-kirby-app.mjs +0 -5
- package/esm2022/kirby-app/public_api.mjs +0 -3
- package/esm2022/kirby-ionic-module/kirby-ionic.module.mjs +0 -23
- package/esm2022/kirby-ionic-module/kirbydesign-designsystem-kirby-ionic-module.mjs +0 -5
- package/esm2022/kirby-ionic-module/public_api.mjs +0 -2
- package/esm2022/kirbydesign-designsystem.mjs +0 -5
- package/esm2022/lib/components/index.mjs +0 -3
- package/esm2022/lib/components/segmented-control/segment-item.mjs +0 -2
- package/esm2022/lib/components/segmented-control/segmented-control.component.mjs +0 -166
- package/esm2022/lib/directives/index.mjs +0 -3
- package/esm2022/lib/directives/key-handler/key-handler.directive.mjs +0 -28
- package/esm2022/lib/directives/modal-router-link/modal-router-link.directive.mjs +0 -35
- package/esm2022/lib/index.mjs +0 -49
- package/esm2022/lib/kirby.module.mjs +0 -339
- package/esm2022/list/directives/index.mjs +0 -4
- package/esm2022/list/directives/infinite-scroll.directive.mjs +0 -114
- package/esm2022/list/directives/list-item-color.directive.mjs +0 -30
- package/esm2022/list/directives/scroll.model.mjs +0 -2
- package/esm2022/list/helpers/index.mjs +0 -2
- package/esm2022/list/helpers/list-helper.mjs +0 -83
- package/esm2022/list/kirbydesign-designsystem-list.mjs +0 -5
- package/esm2022/list/list-experimental/index.mjs +0 -2
- package/esm2022/list/list-experimental/list-experimental.component.mjs +0 -24
- package/esm2022/list/list-header/index.mjs +0 -2
- package/esm2022/list/list-header/list-header.component.mjs +0 -12
- package/esm2022/list/list-item/index.mjs +0 -2
- package/esm2022/list/list-item/list-item.component.mjs +0 -129
- package/esm2022/list/list-section-header/index.mjs +0 -2
- package/esm2022/list/list-section-header/list-section-header.component.mjs +0 -13
- package/esm2022/list/list-swipe-action.mjs +0 -2
- package/esm2022/list/list-swipe-action.type.mjs +0 -2
- package/esm2022/list/list.component.mjs +0 -187
- package/esm2022/list/list.directive.mjs +0 -43
- package/esm2022/list/list.event.mjs +0 -2
- package/esm2022/list/list.module.mjs +0 -93
- package/esm2022/list/public_api.mjs +0 -12
- package/esm2022/loading-overlay/kirbydesign-designsystem-loading-overlay.mjs +0 -5
- package/esm2022/loading-overlay/loading-overlay.component.mjs +0 -26
- package/esm2022/loading-overlay/loading-overlay.service.mjs +0 -49
- package/esm2022/loading-overlay/public_api.mjs +0 -3
- package/esm2022/menu/kirbydesign-designsystem-menu.mjs +0 -5
- package/esm2022/menu/menu.component.mjs +0 -294
- package/esm2022/menu/public_api.mjs +0 -2
- package/esm2022/modal/kirbydesign-designsystem-modal.mjs +0 -5
- package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +0 -45
- package/esm2022/modal/modal/action-sheet/config/action-sheet-config.mjs +0 -2
- package/esm2022/modal/modal/action-sheet/config/action-sheet-item.mjs +0 -2
- package/esm2022/modal/modal/action-sheet/index.mjs +0 -4
- package/esm2022/modal/modal/alert/alert.component.mjs +0 -76
- package/esm2022/modal/modal/alert/config/alert-config.mjs +0 -2
- package/esm2022/modal/modal/alert/index.mjs +0 -3
- package/esm2022/modal/modal/footer/modal-footer.component.mjs +0 -38
- package/esm2022/modal/modal/index.mjs +0 -7
- package/esm2022/modal/modal/modal-component/modal.component.mjs +0 -152
- package/esm2022/modal/modal/services/action-sheet.helper.mjs +0 -46
- package/esm2022/modal/modal/services/alert.helper.mjs +0 -56
- package/esm2022/modal/modal/services/can-dismiss-modal-guard.mjs +0 -31
- package/esm2022/modal/modal/services/can-dismiss.helper.mjs +0 -29
- package/esm2022/modal/modal/services/index.mjs +0 -7
- package/esm2022/modal/modal/services/modal-animation-builder.service.mjs +0 -268
- package/esm2022/modal/modal/services/modal.controller.mjs +0 -121
- package/esm2022/modal/modal/services/modal.helper.mjs +0 -118
- package/esm2022/modal/modal-navigation.service.mjs +0 -265
- package/esm2022/modal/modal-wrapper/compact/index.mjs +0 -2
- package/esm2022/modal/modal-wrapper/compact/modal-compact-wrapper.component.mjs +0 -89
- package/esm2022/modal/modal-wrapper/config/drawer-supplementary-action.mjs +0 -3
- package/esm2022/modal/modal-wrapper/config/index.mjs +0 -4
- package/esm2022/modal/modal-wrapper/config/modal-config.helper.mjs +0 -3
- package/esm2022/modal/modal-wrapper/config/modal-config.mjs +0 -2
- package/esm2022/modal/modal-wrapper/index.mjs +0 -4
- package/esm2022/modal/modal-wrapper/modal-elements-mover.delegate.mjs +0 -62
- package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +0 -543
- package/esm2022/modal/modal.interfaces.mjs +0 -50
- package/esm2022/modal/public_api.mjs +0 -5
- package/esm2022/page/kirbydesign-designsystem-page.mjs +0 -5
- package/esm2022/page/page-footer/page-footer.component.mjs +0 -35
- package/esm2022/page/page.component.mjs +0 -734
- package/esm2022/page/page.module.mjs +0 -107
- package/esm2022/page/public_api.mjs +0 -4
- package/esm2022/popover/kirbydesign-designsystem-popover.mjs +0 -5
- package/esm2022/popover/popover.component.mjs +0 -159
- package/esm2022/popover/public_api.mjs +0 -2
- package/esm2022/progress-circle/kirbydesign-designsystem-progress-circle.mjs +0 -5
- package/esm2022/progress-circle/progress-circle-ring.component.mjs +0 -62
- package/esm2022/progress-circle/progress-circle.component.mjs +0 -88
- package/esm2022/progress-circle/public_api.mjs +0 -3
- package/esm2022/public-api.mjs +0 -2
- package/esm2022/radio/kirbydesign-designsystem-radio.mjs +0 -5
- package/esm2022/radio/public_api.mjs +0 -4
- package/esm2022/radio/radio-group/radio-group.component.mjs +0 -252
- package/esm2022/radio/radio-module.mjs +0 -21
- package/esm2022/radio/radio.component.mjs +0 -80
- package/esm2022/range/kirbydesign-designsystem-range.mjs +0 -5
- package/esm2022/range/public_api.mjs +0 -2
- package/esm2022/range/range.component.mjs +0 -136
- package/esm2022/reorder-list/kirbydesign-designsystem-reorder-list.mjs +0 -5
- package/esm2022/reorder-list/public_api.mjs +0 -3
- package/esm2022/reorder-list/reorder-event.mjs +0 -14
- package/esm2022/reorder-list/reorder-list.component.mjs +0 -80
- package/esm2022/router-outlet/kirbydesign-designsystem-router-outlet.mjs +0 -5
- package/esm2022/router-outlet/public_api.mjs +0 -6
- package/esm2022/router-outlet/router-outlet.component.mjs +0 -19
- package/esm2022/router-outlet/router-outlet.module.mjs +0 -19
- package/esm2022/section-header/kirbydesign-designsystem-section-header.mjs +0 -5
- package/esm2022/section-header/public_api.mjs +0 -2
- package/esm2022/section-header/section-header.component.mjs +0 -13
- package/esm2022/shared/component-configuration.mjs +0 -2
- package/esm2022/shared/component-loader.directive.mjs +0 -36
- package/esm2022/shared/controls/label-helpers.mjs +0 -23
- package/esm2022/shared/dynamic-component.mjs +0 -2
- package/esm2022/shared/fit-heading/fit-heading.directive.mjs +0 -107
- package/esm2022/shared/fit-heading/index.mjs +0 -2
- package/esm2022/shared/floating/floating.directive.mjs +0 -385
- package/esm2022/shared/floating/kirbydesign-designsystem-shared-floating.mjs +0 -5
- package/esm2022/shared/floating/public_api.mjs +0 -2
- package/esm2022/shared/kirbydesign-designsystem-shared.mjs +0 -5
- package/esm2022/shared/portal/kirbydesign-designsystem-shared-portal.mjs +0 -5
- package/esm2022/shared/portal/portal.directive.mjs +0 -78
- package/esm2022/shared/portal/public_api.mjs +0 -2
- package/esm2022/shared/public_api.mjs +0 -10
- package/esm2022/shared/resize-observer/resize-observer.factory.mjs +0 -18
- package/esm2022/shared/resize-observer/resize-observer.service.mjs +0 -50
- package/esm2022/shared/theme-color/theme-color.directive.mjs +0 -127
- package/esm2022/shared/translation/translation.interface.mjs +0 -2
- package/esm2022/shared/translation/translation.service.mjs +0 -37
- package/esm2022/shared/translation/translations/da.mjs +0 -11
- package/esm2022/shared/translation/translations/en.mjs +0 -11
- package/esm2022/slide/kirbydesign-designsystem-slide.mjs +0 -5
- package/esm2022/slide/public_api.mjs +0 -5
- package/esm2022/slide/slide-stretch-height.directive.mjs +0 -19
- package/esm2022/slide/slide.directive.mjs +0 -13
- package/esm2022/slide/slide.module.mjs +0 -24
- package/esm2022/slide/slides.component.mjs +0 -113
- package/esm2022/slide-button/kirbydesign-designsystem-slide-button.mjs +0 -5
- package/esm2022/slide-button/public_api.mjs +0 -2
- package/esm2022/slide-button/slide-button.component.mjs +0 -138
- package/esm2022/spinner/kirbydesign-designsystem-spinner.mjs +0 -5
- package/esm2022/spinner/public_api.mjs +0 -3
- package/esm2022/spinner/spinner.component.mjs +0 -11
- package/esm2022/spinner/spinner.module.mjs +0 -19
- package/esm2022/tab-navigation/kirbydesign-designsystem-tab-navigation.mjs +0 -5
- package/esm2022/tab-navigation/public_api.mjs +0 -4
- package/esm2022/tab-navigation/tab-navigation/tab-navigation.component.mjs +0 -136
- package/esm2022/tab-navigation/tab-navigation-item/tab-navigation-item.component.mjs +0 -20
- package/esm2022/tab-navigation/tab-navigation.module.mjs +0 -19
- package/esm2022/tabs/kirbydesign-designsystem-tabs.mjs +0 -5
- package/esm2022/tabs/public_api.mjs +0 -6
- package/esm2022/tabs/tab-button/tab-button.component.mjs +0 -32
- package/esm2022/tabs/tab-button/tab-button.events.mjs +0 -2
- package/esm2022/tabs/tabs.component.mjs +0 -31
- package/esm2022/tabs/tabs.module.mjs +0 -23
- package/esm2022/tabs/tabs.service.mjs +0 -26
- package/esm2022/testing/element-css-custom-matchers.mjs +0 -94
- package/esm2022/testing/kirbydesign-designsystem-testing.mjs +0 -5
- package/esm2022/testing/public_api.mjs +0 -3
- package/esm2022/testing/test-helper.mjs +0 -155
- package/esm2022/testing-base/kirbydesign-designsystem-testing-base.mjs +0 -5
- package/esm2022/testing-base/lib/components/index.mjs +0 -65
- package/esm2022/testing-base/lib/components/mock.accordion-item.component.mjs +0 -37
- package/esm2022/testing-base/lib/components/mock.action-group.component.mjs +0 -35
- package/esm2022/testing-base/lib/components/mock.action-sheet.component.mjs +0 -49
- package/esm2022/testing-base/lib/components/mock.alert.component.mjs +0 -43
- package/esm2022/testing-base/lib/components/mock.avatar.component.mjs +0 -45
- package/esm2022/testing-base/lib/components/mock.badge.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.base-chart.component.mjs +0 -43
- package/esm2022/testing-base/lib/components/mock.button.component.mjs +0 -44
- package/esm2022/testing-base/lib/components/mock.calendar.component.mjs +0 -76
- package/esm2022/testing-base/lib/components/mock.card-footer.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.card-header.component.mjs +0 -39
- package/esm2022/testing-base/lib/components/mock.card.component.mjs +0 -41
- package/esm2022/testing-base/lib/components/mock.chart.component.mjs +0 -34
- package/esm2022/testing-base/lib/components/mock.checkbox.component.mjs +0 -46
- package/esm2022/testing-base/lib/components/mock.divider.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.dropdown.component.mjs +0 -60
- package/esm2022/testing-base/lib/components/mock.empty-state.component.mjs +0 -35
- package/esm2022/testing-base/lib/components/mock.fab-sheet.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.flag.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.form-field-message.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.form-field.component.mjs +0 -36
- package/esm2022/testing-base/lib/components/mock.header.component.mjs +0 -87
- package/esm2022/testing-base/lib/components/mock.icon.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.input-counter.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.input.component.mjs +0 -48
- package/esm2022/testing-base/lib/components/mock.item-group.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.item-sliding.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.item.component.mjs +0 -41
- package/esm2022/testing-base/lib/components/mock.kirby-app.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.label.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.list-experimental.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.list-header.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.list-item.component.mjs +0 -51
- package/esm2022/testing-base/lib/components/mock.list-section-header.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.list.component.mjs +0 -65
- package/esm2022/testing-base/lib/components/mock.loading-overlay.component.mjs +0 -35
- package/esm2022/testing-base/lib/components/mock.menu.component.mjs +0 -54
- package/esm2022/testing-base/lib/components/mock.modal-compact-wrapper.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.modal-footer.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.modal-wrapper.component.mjs +0 -37
- package/esm2022/testing-base/lib/components/mock.page-footer.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.page.component.mjs +0 -289
- package/esm2022/testing-base/lib/components/mock.popover.component.mjs +0 -38
- package/esm2022/testing-base/lib/components/mock.progress-circle-ring.component.mjs +0 -39
- package/esm2022/testing-base/lib/components/mock.progress-circle.component.mjs +0 -35
- package/esm2022/testing-base/lib/components/mock.radio-group.component.mjs +0 -48
- package/esm2022/testing-base/lib/components/mock.radio.component.mjs +0 -37
- package/esm2022/testing-base/lib/components/mock.range.component.mjs +0 -66
- package/esm2022/testing-base/lib/components/mock.reorder-list.component.mjs +0 -43
- package/esm2022/testing-base/lib/components/mock.router-outlet.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.section-header.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.segmented-control.component.mjs +0 -49
- package/esm2022/testing-base/lib/components/mock.slide-button.component.mjs +0 -41
- package/esm2022/testing-base/lib/components/mock.slides.component.mjs +0 -41
- package/esm2022/testing-base/lib/components/mock.spinner.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.stock-chart.component.mjs +0 -34
- package/esm2022/testing-base/lib/components/mock.tab-button.component.mjs +0 -36
- package/esm2022/testing-base/lib/components/mock.tab-navigation-item.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.tab-navigation.component.mjs +0 -34
- package/esm2022/testing-base/lib/components/mock.tabs.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.textarea.component.mjs +0 -42
- package/esm2022/testing-base/lib/components/mock.toggle-button.component.mjs +0 -36
- package/esm2022/testing-base/lib/components/mock.toggle.component.mjs +0 -38
- package/esm2022/testing-base/lib/directives/index.mjs +0 -18
- package/esm2022/testing-base/lib/directives/mock.accordion.directive.mjs +0 -27
- package/esm2022/testing-base/lib/directives/mock.affix.directive.mjs +0 -30
- package/esm2022/testing-base/lib/directives/mock.card-as-button.directive.mjs +0 -27
- package/esm2022/testing-base/lib/directives/mock.component-loader.directive.mjs +0 -31
- package/esm2022/testing-base/lib/directives/mock.date-input.directive.mjs +0 -27
- package/esm2022/testing-base/lib/directives/mock.decimal-mask.directive.mjs +0 -41
- package/esm2022/testing-base/lib/directives/mock.fit-heading.directive.mjs +0 -30
- package/esm2022/testing-base/lib/directives/mock.floating.directive.mjs +0 -69
- package/esm2022/testing-base/lib/directives/mock.infinite-scroll.directive.mjs +0 -33
- package/esm2022/testing-base/lib/directives/mock.key-handler.directive.mjs +0 -27
- package/esm2022/testing-base/lib/directives/mock.list-item-color.directive.mjs +0 -30
- package/esm2022/testing-base/lib/directives/mock.list.directive.mjs +0 -89
- package/esm2022/testing-base/lib/directives/mock.modal-router-link.directive.mjs +0 -33
- package/esm2022/testing-base/lib/directives/mock.portal.directive.mjs +0 -28
- package/esm2022/testing-base/lib/directives/mock.slide.directive.mjs +0 -26
- package/esm2022/testing-base/lib/directives/mock.theme-color.directive.mjs +0 -34
- package/esm2022/testing-base/lib/index.mjs +0 -4
- package/esm2022/testing-base/lib/kirby-testing-base.module.mjs +0 -96
- package/esm2022/testing-base/lib/mock-components.mjs +0 -142
- package/esm2022/testing-base/lib/mock-directives.mjs +0 -39
- package/esm2022/testing-base/public_api.mjs +0 -2
- package/esm2022/testing-jasmine/kirbydesign-designsystem-testing-jasmine.mjs +0 -5
- package/esm2022/testing-jasmine/lib/kirby-testing.module.mjs +0 -20
- package/esm2022/testing-jasmine/lib/mock-providers.mjs +0 -86
- package/esm2022/testing-jasmine/public_api.mjs +0 -2
- package/esm2022/testing-jest/kirbydesign-designsystem-testing-jest.mjs +0 -5
- package/esm2022/testing-jest/lib/kirby-testing.module.mjs +0 -20
- package/esm2022/testing-jest/lib/mock-providers.mjs +0 -92
- package/esm2022/testing-jest/public_api.mjs +0 -2
- package/esm2022/toast/config/toast-config.mjs +0 -2
- package/esm2022/toast/kirbydesign-designsystem-toast.mjs +0 -5
- package/esm2022/toast/public_api.mjs +0 -4
- package/esm2022/toast/services/indexs.mjs +0 -3
- package/esm2022/toast/services/toast.controller.mjs +0 -22
- package/esm2022/toast/services/toast.helper.mjs +0 -39
- package/esm2022/toggle/kirbydesign-designsystem-toggle.mjs +0 -5
- package/esm2022/toggle/public_api.mjs +0 -2
- package/esm2022/toggle/toggle.component.mjs +0 -114
- package/esm2022/toggle-button/kirbydesign-designsystem-toggle-button.mjs +0 -5
- package/esm2022/toggle-button/public_api.mjs +0 -3
- package/esm2022/toggle-button/toggle-button.component.mjs +0 -30
- package/esm2022/toggle-button/toggle-button.module.mjs +0 -19
- package/esm2022/types/event-listener-dispose-fn.mjs +0 -2
- package/esm2022/types/kirbydesign-designsystem-types.mjs +0 -5
- package/esm2022/types/public_api.mjs +0 -4
- package/esm2022/types/unobserve-fn.mjs +0 -2
- package/esm2022/types/window-ref.mjs +0 -16
- package/ngcc.config.js +0 -3
|
@@ -1,611 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output, QueryList, Renderer2, RendererStyleFlags2, TemplateRef, ViewChild, ViewChildren, } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { CardComponent } from '@kirbydesign/designsystem/card';
|
|
4
|
-
import { DesignTokenHelper } from '@kirbydesign/designsystem/helpers';
|
|
5
|
-
import { ItemComponent } from '@kirbydesign/designsystem/item';
|
|
6
|
-
import { ListItemTemplateDirective } from '@kirbydesign/designsystem/list';
|
|
7
|
-
import { HorizontalDirection, PopoverComponent } from '@kirbydesign/designsystem/popover';
|
|
8
|
-
import { ButtonComponent } from '@kirbydesign/designsystem/button';
|
|
9
|
-
import { ResizeObserverService } from '@kirbydesign/designsystem/shared';
|
|
10
|
-
import { OpenState, VerticalDirection } from './dropdown.types';
|
|
11
|
-
import { KeyboardHandlerService } from './keyboard-handler.service';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "./keyboard-handler.service";
|
|
14
|
-
import * as i2 from "@kirbydesign/designsystem/shared";
|
|
15
|
-
import * as i3 from "@kirbydesign/designsystem/card";
|
|
16
|
-
import * as i4 from "@kirbydesign/designsystem/icon";
|
|
17
|
-
import * as i5 from "@kirbydesign/designsystem/item";
|
|
18
|
-
import * as i6 from "@kirbydesign/designsystem/popover";
|
|
19
|
-
import * as i7 from "@kirbydesign/designsystem/button";
|
|
20
|
-
import * as i8 from "@angular/common";
|
|
21
|
-
export class DropdownComponent {
|
|
22
|
-
static { this.OPEN_DELAY_IN_MS = 100; }
|
|
23
|
-
get items() {
|
|
24
|
-
return this._items;
|
|
25
|
-
}
|
|
26
|
-
set items(value) {
|
|
27
|
-
this._items = value;
|
|
28
|
-
this._value = this.items[this.selectedIndex] || null;
|
|
29
|
-
}
|
|
30
|
-
get selectedIndex() {
|
|
31
|
-
return this._selectedIndex;
|
|
32
|
-
}
|
|
33
|
-
set selectedIndex(value) {
|
|
34
|
-
if (this._selectedIndex != value) {
|
|
35
|
-
this._selectedIndex = value;
|
|
36
|
-
this.focusedIndex = this._selectedIndex;
|
|
37
|
-
this._value = this.items[this.selectedIndex] || null;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
get focusedIndex() {
|
|
41
|
-
return this._focusedIndex;
|
|
42
|
-
}
|
|
43
|
-
set focusedIndex(value) {
|
|
44
|
-
if (this._focusedIndex !== value) {
|
|
45
|
-
this._focusedIndex = value;
|
|
46
|
-
this.scrollItemIntoView(this._focusedIndex);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
set popout(direction) {
|
|
50
|
-
this.horizontalDirection = direction || HorizontalDirection.right;
|
|
51
|
-
}
|
|
52
|
-
get popout() {
|
|
53
|
-
return this.horizontalDirection;
|
|
54
|
-
}
|
|
55
|
-
get _isDisabled() {
|
|
56
|
-
return this.disabled ? 'disabled' : null;
|
|
57
|
-
}
|
|
58
|
-
get _tabindex() {
|
|
59
|
-
return this.disabled ? -1 : this.tabindex;
|
|
60
|
-
}
|
|
61
|
-
// Prevent Ionic blur on scroll
|
|
62
|
-
get _noBlurOnScroll() {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
get value() {
|
|
66
|
-
return this._value;
|
|
67
|
-
}
|
|
68
|
-
get selectedText() {
|
|
69
|
-
return this.getTextFromItem(this.value);
|
|
70
|
-
}
|
|
71
|
-
get _isBlockLevel() {
|
|
72
|
-
return this.expand === 'block';
|
|
73
|
-
}
|
|
74
|
-
get _isOpening() {
|
|
75
|
-
return this.state === OpenState.opening;
|
|
76
|
-
}
|
|
77
|
-
get isOpen() {
|
|
78
|
-
return this.state === OpenState.open;
|
|
79
|
-
}
|
|
80
|
-
get _popoutLeft() {
|
|
81
|
-
return this.horizontalDirection === HorizontalDirection.left;
|
|
82
|
-
}
|
|
83
|
-
get _popoutUp() {
|
|
84
|
-
return this.verticalDirection === VerticalDirection.up;
|
|
85
|
-
}
|
|
86
|
-
set kirbyItemsSlotted(kirbyItems) {
|
|
87
|
-
const hasSlottedItems = this.itemClickUnlisten?.length > 0;
|
|
88
|
-
if (hasSlottedItems) {
|
|
89
|
-
this.unlistenAllSlottedItems();
|
|
90
|
-
}
|
|
91
|
-
// Setup a click listener for each new slotted items
|
|
92
|
-
kirbyItems.forEach((kirbyItem, index) => {
|
|
93
|
-
this.renderer.setAttribute(kirbyItem.nativeElement, 'role', 'option');
|
|
94
|
-
const unlisten = this.renderer.listen(kirbyItem.nativeElement, 'click', () => {
|
|
95
|
-
this.onItemSelect(index);
|
|
96
|
-
});
|
|
97
|
-
this.itemClickUnlisten.push(unlisten);
|
|
98
|
-
});
|
|
99
|
-
this._kirbyItemsSlotted = kirbyItems;
|
|
100
|
-
}
|
|
101
|
-
get kirbyItemsSlotted() {
|
|
102
|
-
return this._kirbyItemsSlotted;
|
|
103
|
-
}
|
|
104
|
-
constructor(renderer, elementRef, changeDetectorRef, keyboardHandlerService, resizeObserverService) {
|
|
105
|
-
this.renderer = renderer;
|
|
106
|
-
this.elementRef = elementRef;
|
|
107
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
108
|
-
this.keyboardHandlerService = keyboardHandlerService;
|
|
109
|
-
this.resizeObserverService = resizeObserverService;
|
|
110
|
-
this.state = OpenState.closed;
|
|
111
|
-
this.horizontalDirection = HorizontalDirection.right;
|
|
112
|
-
this.verticalDirection = VerticalDirection.down;
|
|
113
|
-
this._items = [];
|
|
114
|
-
this._selectedIndex = -1;
|
|
115
|
-
// _focusedIndex keeps track of which element has focus and will be selected
|
|
116
|
-
// if it is activated (by pressing ENTER or SPACE key)
|
|
117
|
-
this._focusedIndex = -1;
|
|
118
|
-
this.itemTextProperty = 'text';
|
|
119
|
-
this.placeholder = 'Please select:';
|
|
120
|
-
this.attentionLevel = '3';
|
|
121
|
-
this.disabled = false;
|
|
122
|
-
this.size = 'md';
|
|
123
|
-
this.tabindex = 0;
|
|
124
|
-
this.usePopover = false;
|
|
125
|
-
/**
|
|
126
|
-
* Emitted when an item is selected (tap on mobile, click/keypress on web)
|
|
127
|
-
*/
|
|
128
|
-
this.change = new EventEmitter();
|
|
129
|
-
this._value = null;
|
|
130
|
-
this._role = 'listbox';
|
|
131
|
-
/* The 'clicked' class is applied through Hostbinding to prevent the dropdown from getting a focus ring on click.
|
|
132
|
-
There is a bug that causes the dropdown to get a focus ring on click, if it is the first element that is interacted with
|
|
133
|
-
after the page is loaded. If the user interacts with any other element before, then the dropdown won't get a focus ring.
|
|
134
|
-
See issue: https://github.com/kirbydesign/designsystem/issues/2477.
|
|
135
|
-
|
|
136
|
-
This solution can potentially be refactored, when popover is not experimental anymore. Then it could be possible
|
|
137
|
-
to close the dropdown when the popover backdrop is clicked, instead of relying on the blur event, which is utilized
|
|
138
|
-
by this line below: this.elementRef.nativeElement.focus(). Right now this forces the blur event to be triggered, when
|
|
139
|
-
clicking outside of the dropdown.
|
|
140
|
-
*/
|
|
141
|
-
this.clicked = false;
|
|
142
|
-
this.itemClickUnlisten = [];
|
|
143
|
-
this._onChange = () => { };
|
|
144
|
-
this._onTouched = () => { };
|
|
145
|
-
}
|
|
146
|
-
onToggle(event) {
|
|
147
|
-
event.stopPropagation();
|
|
148
|
-
this.clicked = true;
|
|
149
|
-
if (!this.isOpen) {
|
|
150
|
-
this.elementRef.nativeElement.focus();
|
|
151
|
-
}
|
|
152
|
-
this.toggle();
|
|
153
|
-
}
|
|
154
|
-
toggle() {
|
|
155
|
-
if (this.disabled) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
this.isOpen ? this.close() : this.open();
|
|
159
|
-
}
|
|
160
|
-
onButtonMouseEvent(event) {
|
|
161
|
-
// Prevent button focus;
|
|
162
|
-
event.preventDefault();
|
|
163
|
-
}
|
|
164
|
-
/* Utility that makes it easier to set styles on card element
|
|
165
|
-
when using popover*/
|
|
166
|
-
setPopoverCardStyle(style, value) {
|
|
167
|
-
if (!this.usePopover)
|
|
168
|
-
return;
|
|
169
|
-
this.renderer.setStyle(this.cardElement.nativeElement, style, value, RendererStyleFlags2.DashCase);
|
|
170
|
-
}
|
|
171
|
-
ngAfterViewInit() {
|
|
172
|
-
if (this.usePopover && this.expand === 'block') {
|
|
173
|
-
const { width: initialWidth } = this.elementRef.nativeElement.getBoundingClientRect();
|
|
174
|
-
this.setPopoverCardStyle('max-width', 'initial');
|
|
175
|
-
this.setPopoverCardStyle('min-width', 'initial');
|
|
176
|
-
// Ensure initial width is set even if the resize observer callback also fires initially:
|
|
177
|
-
this.setPopoverCardStyle('--kirby-card-width', `${initialWidth}px`);
|
|
178
|
-
this.resizeObserverService.observe(this.elementRef, (entry) => {
|
|
179
|
-
const newWidth = entry.contentRect.width;
|
|
180
|
-
if (newWidth > 0) {
|
|
181
|
-
this.setPopoverCardStyle('--kirby-card-width', `${newWidth}px`);
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
this.initializeAlignment();
|
|
186
|
-
}
|
|
187
|
-
initializeAlignment() {
|
|
188
|
-
if (this.usePopover)
|
|
189
|
-
return;
|
|
190
|
-
if (!this.intersectionObserverRef) {
|
|
191
|
-
// Get the design token size of the button. In the button stylesheet a medium button height is utils.size(xl)
|
|
192
|
-
// and a small button height is utils.size("l")
|
|
193
|
-
const designTokenSizeHeight = this.size === 'md' ? 'xl' : 'l';
|
|
194
|
-
// Setting the rootMargin equal to the height of the button
|
|
195
|
-
// allows the Intersection Observer Callback to be called
|
|
196
|
-
// even if the dropdown button is intersecting with the viewport
|
|
197
|
-
const options = {
|
|
198
|
-
rootMargin: DesignTokenHelper.size(designTokenSizeHeight),
|
|
199
|
-
};
|
|
200
|
-
const callback = (entries) => {
|
|
201
|
-
// Only apply alignment when opening:
|
|
202
|
-
if (this.state !== OpenState.opening) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
// Cancel any pending timer to show dropdown:
|
|
206
|
-
clearTimeout(this.showDropdownTimeoutId);
|
|
207
|
-
const entry = entries[0];
|
|
208
|
-
const isVisible = entry.boundingClientRect.width > 0;
|
|
209
|
-
if (isVisible && entry.intersectionRatio < 1) {
|
|
210
|
-
this.setHorizontalDirection(entry);
|
|
211
|
-
this.setVerticalDirection(entry);
|
|
212
|
-
}
|
|
213
|
-
this.showDropdown();
|
|
214
|
-
this.changeDetectorRef.detectChanges();
|
|
215
|
-
};
|
|
216
|
-
this.intersectionObserverRef = new IntersectionObserver(callback, options);
|
|
217
|
-
this.intersectionObserverRef.observe(this.cardElement.nativeElement);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
setHorizontalDirection(entry) {
|
|
221
|
-
// If popout direction is set to right, and the entry is cut off to the right by ${entry.boundingClientRect.right - entry.intersectionRect.right}px
|
|
222
|
-
// it is set to popout left instead, and vice versa for popout direction left
|
|
223
|
-
if (this.horizontalDirection === HorizontalDirection.right) {
|
|
224
|
-
if (entry.boundingClientRect.right > entry.rootBounds.right) {
|
|
225
|
-
this.horizontalDirection = HorizontalDirection.left;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
if (entry.boundingClientRect.left < entry.rootBounds.left) {
|
|
230
|
-
this.horizontalDirection = HorizontalDirection.right;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
setVerticalDirection(entry) {
|
|
235
|
-
if (entry.boundingClientRect.top < 0) {
|
|
236
|
-
// entry is cut off at the top by ${entry.boundingClientRect.top}px
|
|
237
|
-
// open downwards:
|
|
238
|
-
this.verticalDirection = VerticalDirection.down;
|
|
239
|
-
}
|
|
240
|
-
if (entry.boundingClientRect.bottom > entry.rootBounds.bottom) {
|
|
241
|
-
// entry is cut off at the bottom by ${entry.boundingClientRect.bottom - entry.intersectionRect.bottom}px
|
|
242
|
-
const containerOffsetTop = this.elementRef.nativeElement.getBoundingClientRect().top;
|
|
243
|
-
const SPACING = 5; //TODO: Get from SCSS
|
|
244
|
-
// Check if the card can fit on top of button:
|
|
245
|
-
if (containerOffsetTop > entry.target.clientHeight + SPACING) {
|
|
246
|
-
// open upwards:
|
|
247
|
-
this.verticalDirection = VerticalDirection.up;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
open() {
|
|
252
|
-
if (this.disabled) {
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
if (!this.isOpen) {
|
|
256
|
-
this.state = OpenState.opening;
|
|
257
|
-
// ensures that the dropdown is opened in case the IntersectionObserverCallback isn't invoked
|
|
258
|
-
this.showDropdownTimeoutId = setTimeout(() => this.showDropdown(), DropdownComponent.OPEN_DELAY_IN_MS);
|
|
259
|
-
// Move focus to selected item (if any)
|
|
260
|
-
this.focusedIndex = this.selectedIndex;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
showDropdown() {
|
|
264
|
-
if (this.state === OpenState.opening) {
|
|
265
|
-
this.state = OpenState.open;
|
|
266
|
-
this.popover?.show();
|
|
267
|
-
this.scrollItemIntoView(this.selectedIndex);
|
|
268
|
-
this.changeDetectorRef.markForCheck();
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
close() {
|
|
272
|
-
if (this.disabled) {
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
if (this.isOpen) {
|
|
276
|
-
this.state = OpenState.closed;
|
|
277
|
-
// Reset vertical direction to default
|
|
278
|
-
this.verticalDirection = VerticalDirection.down;
|
|
279
|
-
this.popover?.hide();
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
onItemSelect(index) {
|
|
283
|
-
this.selectItem(index);
|
|
284
|
-
this.close();
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Sets the select's value. Part of the ControlValueAccessor interface
|
|
288
|
-
* required to integrate with Angular's core forms API.
|
|
289
|
-
*
|
|
290
|
-
* @param value New value to be written to the model.
|
|
291
|
-
*/
|
|
292
|
-
writeValue(value) {
|
|
293
|
-
this._selectItemByValue(value);
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Saves a callback function to be invoked when the select's value
|
|
297
|
-
* changes from user input. Part of the ControlValueAccessor interface
|
|
298
|
-
* required to integrate with Angular's core forms API.
|
|
299
|
-
*
|
|
300
|
-
* @param fn Callback to be triggered when the value changes.
|
|
301
|
-
*/
|
|
302
|
-
registerOnChange(fn) {
|
|
303
|
-
this._onChange = fn;
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* Saves a callback function to be invoked when the select is blurred
|
|
307
|
-
* by the user. Part of the ControlValueAccessor interface required
|
|
308
|
-
* to integrate with Angular's core forms API.
|
|
309
|
-
*
|
|
310
|
-
* @param fn Callback to be triggered when the component has been touched.
|
|
311
|
-
*/
|
|
312
|
-
registerOnTouched(fn) {
|
|
313
|
-
this._onTouched = fn;
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Disables the select. Part of the ControlValueAccessor interface required
|
|
317
|
-
* to integrate with Angular's core forms API.
|
|
318
|
-
*
|
|
319
|
-
* @param isDisabled Sets whether the component is disabled.
|
|
320
|
-
*/
|
|
321
|
-
setDisabledState(isDisabled) {
|
|
322
|
-
this.disabled = isDisabled;
|
|
323
|
-
}
|
|
324
|
-
selectItem(index) {
|
|
325
|
-
if (index != this.selectedIndex) {
|
|
326
|
-
this.selectedIndex = index;
|
|
327
|
-
this.focusedIndex = index;
|
|
328
|
-
this.change.emit(this.value);
|
|
329
|
-
this._onChange(this.value);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
_selectItemByValue(value) {
|
|
333
|
-
this.selectedIndex = this.items.indexOf(value);
|
|
334
|
-
}
|
|
335
|
-
getTextFromItem(item) {
|
|
336
|
-
if (!item) {
|
|
337
|
-
return null;
|
|
338
|
-
}
|
|
339
|
-
return typeof item === 'string' ? item : item[this.itemTextProperty];
|
|
340
|
-
}
|
|
341
|
-
scrollItemIntoView(index) {
|
|
342
|
-
const kirbyItems = this.kirbyItemsSlotted && this.kirbyItemsSlotted.length
|
|
343
|
-
? this.kirbyItemsSlotted
|
|
344
|
-
: this.kirbyItemsDefault;
|
|
345
|
-
if (kirbyItems && kirbyItems.length) {
|
|
346
|
-
const selectedKirbyItem = kirbyItems.toArray()[index];
|
|
347
|
-
if (selectedKirbyItem && selectedKirbyItem.nativeElement) {
|
|
348
|
-
const itemElement = selectedKirbyItem.nativeElement;
|
|
349
|
-
itemElement.scrollIntoView({ block: 'nearest' });
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
_onTab(event) {
|
|
354
|
-
if (this.isOpen) {
|
|
355
|
-
event.preventDefault();
|
|
356
|
-
this.close();
|
|
357
|
-
}
|
|
358
|
-
if (this.clicked) {
|
|
359
|
-
// Remove the 'clicked' class (Hostbinding) if the user has previously opened the dropdown by clicking,
|
|
360
|
-
// since the class prevents the focus ring from showing,
|
|
361
|
-
// which is expected to happen, when using the tab key
|
|
362
|
-
this.clicked = false;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
_onMouseDown(event) {
|
|
366
|
-
if (this.disabled) {
|
|
367
|
-
event.preventDefault();
|
|
368
|
-
event.stopImmediatePropagation();
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
_onTouchStart(event) {
|
|
372
|
-
if (this.isOpen) {
|
|
373
|
-
event.stopPropagation();
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
_onFocus() {
|
|
377
|
-
if (this.disabled) {
|
|
378
|
-
this.elementRef.nativeElement.blur();
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
_onPopoverWillHide() {
|
|
382
|
-
this.state = OpenState.closed;
|
|
383
|
-
this.elementRef.nativeElement.focus();
|
|
384
|
-
}
|
|
385
|
-
_onEnterOrEscape() {
|
|
386
|
-
this.close();
|
|
387
|
-
this._onTouched();
|
|
388
|
-
}
|
|
389
|
-
_onPopoverClick() {
|
|
390
|
-
this.close();
|
|
391
|
-
}
|
|
392
|
-
_onBlur() {
|
|
393
|
-
if (this.usePopover)
|
|
394
|
-
return;
|
|
395
|
-
this.close();
|
|
396
|
-
this._onTouched();
|
|
397
|
-
}
|
|
398
|
-
_onEnterOrSpace(event) {
|
|
399
|
-
event.preventDefault();
|
|
400
|
-
event.stopPropagation();
|
|
401
|
-
if (this.isOpen) {
|
|
402
|
-
this.selectItem(this.focusedIndex);
|
|
403
|
-
}
|
|
404
|
-
this.toggle();
|
|
405
|
-
}
|
|
406
|
-
_onArrowKeys(event) {
|
|
407
|
-
if (this.disabled)
|
|
408
|
-
return false;
|
|
409
|
-
// Mirror default HTML5 select behaviour - prevent left/right arrows when open:
|
|
410
|
-
if (this.isOpen && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {
|
|
411
|
-
return false;
|
|
412
|
-
}
|
|
413
|
-
if (!this.isOpen) {
|
|
414
|
-
// Avoid page scroll
|
|
415
|
-
event.preventDefault();
|
|
416
|
-
this.open();
|
|
417
|
-
// If no selected item then focus first or last item
|
|
418
|
-
if (this.selectedIndex < 0) {
|
|
419
|
-
switch (event.key) {
|
|
420
|
-
case 'ArrowUp':
|
|
421
|
-
this.focusedIndex = this.items.length - 1;
|
|
422
|
-
break;
|
|
423
|
-
case 'ArrowDown':
|
|
424
|
-
this.focusedIndex = 0;
|
|
425
|
-
break;
|
|
426
|
-
default:
|
|
427
|
-
break;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
return false;
|
|
431
|
-
}
|
|
432
|
-
const newFocusedIndex = this.keyboardHandlerService.handle(event, this.focusedIndex, this.items.length - 1);
|
|
433
|
-
if (newFocusedIndex > -1) {
|
|
434
|
-
this.focusedIndex = newFocusedIndex;
|
|
435
|
-
}
|
|
436
|
-
return false;
|
|
437
|
-
}
|
|
438
|
-
_onHomeEndKeys(event) {
|
|
439
|
-
if (this.disabled)
|
|
440
|
-
return;
|
|
441
|
-
if (!this.isOpen)
|
|
442
|
-
return;
|
|
443
|
-
const newFocusedIndex = this.keyboardHandlerService.handle(event, this.focusedIndex, this.items.length - 1);
|
|
444
|
-
if (newFocusedIndex > -1) {
|
|
445
|
-
this.focusedIndex = newFocusedIndex;
|
|
446
|
-
}
|
|
447
|
-
return false;
|
|
448
|
-
}
|
|
449
|
-
unlistenAllSlottedItems() {
|
|
450
|
-
let unlistenItem;
|
|
451
|
-
while ((unlistenItem = this.itemClickUnlisten.pop()) !== undefined) {
|
|
452
|
-
unlistenItem();
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
ngOnDestroy() {
|
|
456
|
-
this.unlistenAllSlottedItems();
|
|
457
|
-
this.resizeObserverService.unobserve(this.elementRef);
|
|
458
|
-
if (this.intersectionObserverRef) {
|
|
459
|
-
this.intersectionObserverRef.disconnect();
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.KeyboardHandlerService }, { token: i2.ResizeObserverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
463
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownComponent, selector: "kirby-dropdown", inputs: { items: "items", selectedIndex: "selectedIndex", focusedIndex: "focusedIndex", itemTextProperty: "itemTextProperty", placeholder: "placeholder", popout: "popout", attentionLevel: "attentionLevel", expand: "expand", disabled: "disabled", hasError: "hasError", size: "size", tabindex: "tabindex", usePopover: "usePopover" }, outputs: { change: "change" }, host: { listeners: { "keydown.tab": "_onTab($event)", "mousedown": "_onMouseDown($event)", "touchstart": "_onTouchStart($event)", "focus": "_onFocus()", "keydown.enter": "_onEnterOrSpace($event)", "keydown.escape": "_onEnterOrEscape()", "blur": "_onBlur($event)", "keydown.space": "_onEnterOrSpace($event)", "keydown.arrowup": "_onArrowKeys($event)", "keydown.arrowdown": "_onArrowKeys($event)", "keydown.arrowleft": "_onArrowKeys($event)", "keydown.arrowright": "_onArrowKeys($event)", "keydown.home": "_onHomeEndKeys($event)", "keydown.end": "_onHomeEndKeys($event)" }, properties: { "attr.disabled": "this._isDisabled", "class.error": "this.hasError", "class.with-popover": "this.usePopover", "attr.tabindex": "this._tabindex", "attr.no-blur": "this._noBlurOnScroll", "class.expand": "this._isBlockLevel", "attr.role": "this._role", "class.is-opening": "this._isOpening", "class.is-open": "this.isOpen", "class.popout-left": "this._popoutLeft", "class.popout-up": "this._popoutUp", "class.clicked": "this.clicked" } }, providers: [
|
|
464
|
-
{
|
|
465
|
-
provide: NG_VALUE_ACCESSOR,
|
|
466
|
-
useExisting: forwardRef((() => DropdownComponent)),
|
|
467
|
-
multi: true,
|
|
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 <p class=\"kirby-item-title\" tabindex=\"0\">{{ getTextFromItem(item) }}</p>\n <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n </kirby-item>\n</ng-template>\n", styles: ["@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{display:inline-block;position:relative;max-width:calc(100vw - 32px)}: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;max-width:calc(100vw - 32px);min-width:288px}@media (min-width: 321px){kirby-card{min-width:343px}}@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)>button{border-color:transparent;font-weight:700;font-size:initial}: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", "variant"] }, { kind: "component", type: i4.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { 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
|
-
}
|
|
471
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
472
|
-
type: Component,
|
|
473
|
-
args: [{ selector: 'kirby-dropdown', providers: [
|
|
474
|
-
{
|
|
475
|
-
provide: NG_VALUE_ACCESSOR,
|
|
476
|
-
useExisting: forwardRef((() => DropdownComponent)),
|
|
477
|
-
multi: true,
|
|
478
|
-
},
|
|
479
|
-
], 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 <p class=\"kirby-item-title\" tabindex=\"0\">{{ getTextFromItem(item) }}</p>\n <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n </kirby-item>\n</ng-template>\n", styles: ["@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{display:inline-block;position:relative;max-width:calc(100vw - 32px)}: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;max-width:calc(100vw - 32px);min-width:288px}@media (min-width: 321px){kirby-card{min-width:343px}}@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)>button{border-color:transparent;font-weight:700;font-size:initial}:host-context(kirby-calendar).is-open>button{box-shadow:none}\n"] }]
|
|
480
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.KeyboardHandlerService }, { type: i2.ResizeObserverService }], propDecorators: { items: [{
|
|
481
|
-
type: Input
|
|
482
|
-
}], selectedIndex: [{
|
|
483
|
-
type: Input
|
|
484
|
-
}], focusedIndex: [{
|
|
485
|
-
type: Input
|
|
486
|
-
}], itemTextProperty: [{
|
|
487
|
-
type: Input
|
|
488
|
-
}], placeholder: [{
|
|
489
|
-
type: Input
|
|
490
|
-
}], popout: [{
|
|
491
|
-
type: Input
|
|
492
|
-
}], attentionLevel: [{
|
|
493
|
-
type: Input
|
|
494
|
-
}], expand: [{
|
|
495
|
-
type: Input
|
|
496
|
-
}], disabled: [{
|
|
497
|
-
type: Input
|
|
498
|
-
}], _isDisabled: [{
|
|
499
|
-
type: HostBinding,
|
|
500
|
-
args: ['attr.disabled']
|
|
501
|
-
}], hasError: [{
|
|
502
|
-
type: HostBinding,
|
|
503
|
-
args: ['class.error']
|
|
504
|
-
}, {
|
|
505
|
-
type: Input
|
|
506
|
-
}], size: [{
|
|
507
|
-
type: Input
|
|
508
|
-
}], tabindex: [{
|
|
509
|
-
type: Input
|
|
510
|
-
}], usePopover: [{
|
|
511
|
-
type: HostBinding,
|
|
512
|
-
args: ['class.with-popover']
|
|
513
|
-
}, {
|
|
514
|
-
type: Input
|
|
515
|
-
}], _tabindex: [{
|
|
516
|
-
type: HostBinding,
|
|
517
|
-
args: ['attr.tabindex']
|
|
518
|
-
}], _noBlurOnScroll: [{
|
|
519
|
-
type: HostBinding,
|
|
520
|
-
args: ['attr.no-blur']
|
|
521
|
-
}], change: [{
|
|
522
|
-
type: Output
|
|
523
|
-
}], _isBlockLevel: [{
|
|
524
|
-
type: HostBinding,
|
|
525
|
-
args: ['class.expand']
|
|
526
|
-
}], _role: [{
|
|
527
|
-
type: HostBinding,
|
|
528
|
-
args: ['attr.role']
|
|
529
|
-
}], _isOpening: [{
|
|
530
|
-
type: HostBinding,
|
|
531
|
-
args: ['class.is-opening']
|
|
532
|
-
}], isOpen: [{
|
|
533
|
-
type: HostBinding,
|
|
534
|
-
args: ['class.is-open']
|
|
535
|
-
}], _popoutLeft: [{
|
|
536
|
-
type: HostBinding,
|
|
537
|
-
args: ['class.popout-left']
|
|
538
|
-
}], _popoutUp: [{
|
|
539
|
-
type: HostBinding,
|
|
540
|
-
args: ['class.popout-up']
|
|
541
|
-
}], clicked: [{
|
|
542
|
-
type: HostBinding,
|
|
543
|
-
args: ['class.clicked']
|
|
544
|
-
}], itemTemplate: [{
|
|
545
|
-
type: ContentChild,
|
|
546
|
-
args: [ListItemTemplateDirective, { static: true, read: TemplateRef }]
|
|
547
|
-
}], slottedItems: [{
|
|
548
|
-
type: ContentChildren,
|
|
549
|
-
args: [ListItemTemplateDirective, { read: ElementRef }]
|
|
550
|
-
}], cardElement: [{
|
|
551
|
-
type: ViewChild,
|
|
552
|
-
args: [CardComponent, { read: ElementRef }]
|
|
553
|
-
}], popover: [{
|
|
554
|
-
type: ViewChild,
|
|
555
|
-
args: [PopoverComponent]
|
|
556
|
-
}], buttonElement: [{
|
|
557
|
-
type: ViewChild,
|
|
558
|
-
args: [ButtonComponent, { static: true, read: ElementRef }]
|
|
559
|
-
}], kirbyItemsDefault: [{
|
|
560
|
-
type: ViewChildren,
|
|
561
|
-
args: [ItemComponent, { read: ElementRef }]
|
|
562
|
-
}], kirbyItemsSlotted: [{
|
|
563
|
-
type: ContentChildren,
|
|
564
|
-
args: [ItemComponent, { read: ElementRef }]
|
|
565
|
-
}], _onTab: [{
|
|
566
|
-
type: HostListener,
|
|
567
|
-
args: ['keydown.tab', ['$event']]
|
|
568
|
-
}], _onMouseDown: [{
|
|
569
|
-
type: HostListener,
|
|
570
|
-
args: ['mousedown', ['$event']]
|
|
571
|
-
}], _onTouchStart: [{
|
|
572
|
-
type: HostListener,
|
|
573
|
-
args: ['touchstart', ['$event']]
|
|
574
|
-
}], _onFocus: [{
|
|
575
|
-
type: HostListener,
|
|
576
|
-
args: ['focus']
|
|
577
|
-
}], _onEnterOrEscape: [{
|
|
578
|
-
type: HostListener,
|
|
579
|
-
args: ['keydown.enter']
|
|
580
|
-
}, {
|
|
581
|
-
type: HostListener,
|
|
582
|
-
args: ['keydown.escape']
|
|
583
|
-
}], _onBlur: [{
|
|
584
|
-
type: HostListener,
|
|
585
|
-
args: ['blur', ['$event']]
|
|
586
|
-
}], _onEnterOrSpace: [{
|
|
587
|
-
type: HostListener,
|
|
588
|
-
args: ['keydown.enter', ['$event']]
|
|
589
|
-
}, {
|
|
590
|
-
type: HostListener,
|
|
591
|
-
args: ['keydown.space', ['$event']]
|
|
592
|
-
}], _onArrowKeys: [{
|
|
593
|
-
type: HostListener,
|
|
594
|
-
args: ['keydown.arrowup', ['$event']]
|
|
595
|
-
}, {
|
|
596
|
-
type: HostListener,
|
|
597
|
-
args: ['keydown.arrowdown', ['$event']]
|
|
598
|
-
}, {
|
|
599
|
-
type: HostListener,
|
|
600
|
-
args: ['keydown.arrowleft', ['$event']]
|
|
601
|
-
}, {
|
|
602
|
-
type: HostListener,
|
|
603
|
-
args: ['keydown.arrowright', ['$event']]
|
|
604
|
-
}], _onHomeEndKeys: [{
|
|
605
|
-
type: HostListener,
|
|
606
|
-
args: ['keydown.home', ['$event']]
|
|
607
|
-
}, {
|
|
608
|
-
type: HostListener,
|
|
609
|
-
args: ['keydown.end', ['$event']]
|
|
610
|
-
}] } });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZHJvcGRvd24vc3JjL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7O0FBY3BFLE1BQU0sT0FBTyxpQkFBaUI7YUFDWixx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QyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQTRScEQsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnZDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU3JDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUXRDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPO2dCQWNyQixnQkFBZ0I7c0JBRmYsWUFBWTt1QkFBQyxlQUFlOztzQkFDNUIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBVzlCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU2hDLGVBQWU7c0JBRmQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN4QyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnpDLFlBQVk7c0JBSlgsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzFDLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUM1QyxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDNUMsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE4QzlDLGNBQWM7c0JBRmIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN2QyxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyU3R5bGVGbGFnczIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9jYXJkJztcbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IEl0ZW1Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2l0ZW0nO1xuaW1wb3J0IHsgTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vbGlzdCc7XG5pbXBvcnQgeyBIb3Jpem9udGFsRGlyZWN0aW9uLCBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9wb3BvdmVyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3R5cGVzJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkJztcblxuaW1wb3J0IHsgT3BlblN0YXRlLCBWZXJ0aWNhbERpcmVjdGlvbiB9IGZyb20gJy4vZHJvcGRvd24udHlwZXMnO1xuaW1wb3J0IHsgS2V5Ym9hcmRIYW5kbGVyU2VydmljZSB9IGZyb20gJy4va2V5Ym9hcmQtaGFuZGxlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3Bkb3duQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHN0YXRpYyByZWFkb25seSBPUEVOX0RFTEFZX0lOX01TID0gMTAwO1xuICBwcml2YXRlIHN0YXRlID0gT3BlblN0YXRlLmNsb3NlZDtcbiAgcHJpdmF0ZSBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsRGlyZWN0aW9uIHwgYCR7SG9yaXpvbnRhbERpcmVjdGlvbn1gID1cbiAgICBIb3Jpem9udGFsRGlyZWN0aW9uLnJpZ2h0O1xuICBwcml2YXRlIHZlcnRpY2FsRGlyZWN0aW9uOiBWZXJ0aWNhbERpcmVjdGlvbiB8IGAke1ZlcnRpY2FsRGlyZWN0aW9ufWAgPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuXG4gIHByaXZhdGUgX2l0ZW1zOiBzdHJpbmdbXSB8IGFueVtdID0gW107XG4gIGdldCBpdGVtcygpOiBzdHJpbmdbXSB8IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IHN0cmluZ1tdIHwgYW55W10pIHtcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4OiBudW1iZXIgPSAtMTtcbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCAhPSB2YWx1ZSkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0gfHwgbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyBfZm9jdXNlZEluZGV4IGtlZXBzIHRyYWNrIG9mIHdoaWNoIGVsZW1lbnQgaGFzIGZvY3VzIGFuZCB3aWxsIGJlIHNlbGVjdGVkXG4gIC8vIGlmIGl0IGlzIGFjdGl2YXRlZCAoYnkgcHJlc3NpbmcgRU5URVIgb3IgU1BBQ0Uga2V5KVxuICBwcml2YXRlIF9mb2N1c2VkSW5kZXg6IG51bWJlciA9IC0xO1xuICBnZXQgZm9jdXNlZEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBmb2N1c2VkSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9mb2N1c2VkSW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2Nyb2xsSXRlbUludG9WaWV3KHRoaXMuX2ZvY3VzZWRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgaXRlbVRleHRQcm9wZXJ0eSA9ICd0ZXh0JztcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlciA9ICdQbGVhc2Ugc2VsZWN0Oic7XG5cbiAgQElucHV0KCkgc2V0IHBvcG91dChkaXJlY3Rpb246IEhvcml6b250YWxEaXJlY3Rpb24gfCBgJHtIb3Jpem9udGFsRGlyZWN0aW9ufWApIHtcbiAgICB0aGlzLmhvcml6b250YWxEaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgfVxuXG4gIGdldCBwb3BvdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGF0dGVudGlvbkxldmVsOiAnMScgfCAnMicgfCAnMycgPSAnMyc7XG5cbiAgQElucHV0KClcbiAgZXhwYW5kPzogJ2Jsb2NrJztcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIGdldCBfaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lcnJvcicpXG4gIEBJbnB1dCgpXG4gIGhhc0Vycm9yOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6ICdzbScgfCAnbWQnID0gJ21kJztcblxuICBASW5wdXQoKVxuICB0YWJpbmRleCA9IDA7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53aXRoLXBvcG92ZXInKVxuICBASW5wdXQoKVxuICB1c2VQb3BvdmVyID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgZ2V0IF90YWJpbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy50YWJpbmRleDtcbiAgfVxuXG4gIC8vIFByZXZlbnQgSW9uaWMgYmx1ciBvbiBzY3JvbGxcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm5vLWJsdXInKVxuICBnZXQgX25vQmx1ck9uU2Nyb2xsKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkICh0YXAgb24gbW9iaWxlLCBjbGljay9rZXlwcmVzcyBvbiB3ZWIpXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCBhbnkgPSBudWxsO1xuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGV4dEZyb21JdGVtKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5leHBhbmQnKVxuICBnZXQgX2lzQmxvY2tMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmQgPT09ICdibG9jayc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIF9yb2xlID0gJ2xpc3Rib3gnO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtb3BlbmluZycpXG4gIGdldCBfaXNPcGVuaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlID09PSBPcGVuU3RhdGUub3BlbmluZztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtb3BlbicpXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUgPT09IE9wZW5TdGF0ZS5vcGVuO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wb3BvdXQtbGVmdCcpXG4gIGdldCBfcG9wb3V0TGVmdCgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID09PSBIb3Jpem9udGFsRGlyZWN0aW9uLmxlZnQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvcG91dC11cCcpXG4gIGdldCBfcG9wb3V0VXAoKSB7XG4gICAgcmV0dXJuIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPT09IFZlcnRpY2FsRGlyZWN0aW9uLnVwO1xuICB9XG5cbiAgLyogVGhlICdjbGlja2VkJyBjbGFzcyBpcyBhcHBsaWVkIHRocm91Z2ggSG9zdGJpbmRpbmcgdG8gcHJldmVudCB0aGUgZHJvcGRvd24gZnJvbSBnZXR0aW5nIGEgZm9jdXMgcmluZyBvbiBjbGljay5cbiAgICBUaGVyZSBpcyBhIGJ1ZyB0aGF0IGNhdXNlcyB0aGUgZHJvcGRvd24gdG8gZ2V0IGEgZm9jdXMgcmluZyBvbiBjbGljaywgaWYgaXQgaXMgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyBpbnRlcmFjdGVkIHdpdGhcbiAgICBhZnRlciB0aGUgcGFnZSBpcyBsb2FkZWQuIElmIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGFueSBvdGhlciBlbGVtZW50IGJlZm9yZSwgdGhlbiB0aGUgZHJvcGRvd24gd29uJ3QgZ2V0IGEgZm9jdXMgcmluZy5cbiAgICBTZWUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzI0NzcuXG5cbiAgICBUaGlzIHNvbHV0aW9uIGNhbiBwb3RlbnRpYWxseSBiZSByZWZhY3RvcmVkLCB3aGVuIHBvcG92ZXIgaXMgbm90IGV4cGVyaW1lbnRhbCBhbnltb3JlLiBUaGVuIGl0IGNvdWxkIGJlIHBvc3NpYmxlIFxuICAgIHRvIGNsb3NlIHRoZSBkcm9wZG93biB3aGVuIHRoZSBwb3BvdmVyIGJhY2tkcm9wIGlzIGNsaWNrZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgYmx1ciBldmVudCwgd2hpY2ggaXMgdXRpbGl6ZWRcbiAgICBieSB0aGlzIGxpbmUgYmVsb3c6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCkuIFJpZ2h0IG5vdyB0aGlzIGZvcmNlcyB0aGUgYmx1ciBldmVudCB0byBiZSB0cmlnZ2VyZWQsIHdoZW5cbiAgICBjbGlja2luZyBvdXRzaWRlIG9mIHRoZSBkcm9wZG93bi5cbiAgICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNsaWNrZWQnKVxuICBjbGlja2VkID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZChMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkcmVuKExpc3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBzbG90dGVkSXRlbXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoQ2FyZENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGNhcmRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChQb3BvdmVyQ29tcG9uZW50KVxuICBwb3BvdmVyPzogUG9wb3ZlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChCdXR0b25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGJ1dHRvbkVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKEl0ZW1Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBraXJieUl0ZW1zRGVmYXVsdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICBfa2lyYnlJdGVtc1Nsb3R0ZWQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG4gIEBDb250ZW50Q2hpbGRyZW4oSXRlbUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHNldCBraXJieUl0ZW1zU2xvdHRlZChraXJieUl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KSB7XG4gICAgY29uc3QgaGFzU2xvdHRlZEl0ZW1zID0gdGhpcy5pdGVtQ2xpY2tVbmxpc3Rlbj8ubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzU2xvdHRlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVubGlzdGVuQWxsU2xvdHRlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgYSBjbGljayBsaXN0ZW5lciBmb3IgZWFjaCBuZXcgc2xvdHRlZCBpdGVtc1xuICAgIGtpcmJ5SXRlbXMuZm9yRWFjaCgoa2lyYnlJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoa2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQsICdyb2xlJywgJ29wdGlvbicpO1xuICAgICAgY29uc3QgdW5saXN0ZW46IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAga2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdjbGljaycsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9uSXRlbVNlbGVjdChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaXRlbUNsaWNrVW5saXN0ZW4ucHVzaCh1bmxpc3Rlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9raXJieUl0ZW1zU2xvdHRlZCA9IGtpcmJ5SXRlbXM7XG4gIH1cblxuICBnZXQga2lyYnlJdGVtc1Nsb3R0ZWQoKTogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2tpcmJ5SXRlbXNTbG90dGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpdGVtQ2xpY2tVbmxpc3RlbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbltdID0gW107XG4gIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWY6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIHNob3dEcm9wZG93blRpbWVvdXRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBrZXlib2FyZEhhbmRsZXJTZXJ2aWNlOiBLZXlib2FyZEhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG9uVG9nZ2xlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICB9XG5cbiAgb25CdXR0b25Nb3VzZUV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFByZXZlbnQgYnV0dG9uIGZvY3VzO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKiBVdGlsaXR5IHRoYXQgbWFrZXMgaXQgZWFzaWVyIHRvIHNldCBzdHlsZXMgb24gY2FyZCBlbGVtZW50XG4gIHdoZW4gdXNpbmcgcG9wb3ZlciovXG4gIHByaXZhdGUgc2V0UG9wb3ZlckNhcmRTdHlsZShzdHlsZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnVzZVBvcG92ZXIpIHJldHVybjtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBzdHlsZSxcbiAgICAgIHZhbHVlLFxuICAgICAgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMudXNlUG9wb3ZlciAmJiB0aGlzLmV4cGFuZCA9PT0gJ2Jsb2NrJykge1xuICAgICAgY29uc3QgeyB3aWR0aDogaW5pdGlhbFdpZHRoIH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnbWF4LXdpZHRoJywgJ2luaXRpYWwnKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnbWluLXdpZHRoJywgJ2luaXRpYWwnKTtcbiAgICAgIC8vIEVuc3VyZSBpbml0aWFsIHdpZHRoIGlzIHNldCBldmVuIGlmIHRoZSByZXNpemUgb2JzZXJ2ZXIgY2FsbGJhY2sgYWxzbyBmaXJlcyBpbml0aWFsbHk6XG4gICAgICB0aGlzLnNldFBvcG92ZXJDYXJkU3R5bGUoJy0ta2lyYnktY2FyZC13aWR0aCcsIGAke2luaXRpYWxXaWR0aH1weGApO1xuXG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZiwgKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gZW50cnkuY29udGVudFJlY3Qud2lkdGg7XG4gICAgICAgIGlmIChuZXdXaWR0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNldFBvcG92ZXJDYXJkU3R5bGUoJy0ta2lyYnktY2FyZC13aWR0aCcsIGAke25ld1dpZHRofXB4YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVBbGlnbm1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUFsaWdubWVudCgpIHtcbiAgICBpZiAodGhpcy51c2VQb3BvdmVyKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmKSB7XG4gICAgICAvLyBHZXQgdGhlIGRlc2lnbiB0b2tlbiBzaXplIG9mIHRoZSBidXR0b24uIEluIHRoZSBidXR0b24gc3R5bGVzaGVldCBhIG1lZGl1bSBidXR0b24gaGVpZ2h0IGlzIHV0aWxzLnNpemUoeGwpXG4gICAgICAvLyBhbmQgYSBzbWFsbCBidXR0b24gaGVpZ2h0IGlzIHV0aWxzLnNpemUoXCJsXCIpXG4gICAgICBjb25zdCBkZXNpZ25Ub2tlblNpemVIZWlnaHQgPSB0aGlzLnNpemUgPT09ICdtZCcgPyAneGwnIDogJ2wnO1xuXG4gICAgICAvLyBTZXR0aW5nIHRoZSByb290TWFyZ2luIGVxdWFsIHRvIHRoZSBoZWlnaHQgb2YgdGhlIGJ1dHRvblxuICAgICAgLy8gYWxsb3dzIHRoZSBJbnRlcnNlY3Rpb24gT2JzZXJ2ZXIgQ2FsbGJhY2sgdG8gYmUgY2FsbGVkXG4gICAgICAvLyBldmVuIGlmIHRoZSBkcm9wZG93biBidXR0b24gaXMgaW50ZXJzZWN0aW5nIHdpdGggdGhlIHZpZXdwb3J0XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICByb290TWFyZ2luOiBEZXNpZ25Ub2tlbkhlbHBlci5zaXplKGRlc2lnblRva2VuU2l6ZUhlaWdodCksXG4gICAgICB9O1xuICAgICAgY29uc3QgY2FsbGJhY2s6IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgICAvLyBPbmx5IGFwcGx5IGFsaWdubWVudCB3aGVuIG9wZW5pbmc6XG4gICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSBPcGVuU3RhdGUub3BlbmluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbmNlbCBhbnkgcGVuZGluZyB0aW1lciB0byBzaG93IGRyb3Bkb3duOlxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93RHJvcGRvd25UaW1lb3V0SWQpO1xuICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCA+IDA7XG4gICAgICAgIGlmIChpc1Zpc2libGUgJiYgZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPCAxKSB7XG4gICAgICAgICAgdGhpcy5zZXRIb3Jpem9udGFsRGlyZWN0aW9uKGVudHJ5KTtcbiAgICAgICAgICB0aGlzLnNldFZlcnRpY2FsRGlyZWN0aW9uKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0SG9yaXpvbnRhbERpcmVjdGlvbihlbnRyeTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkge1xuICAgIC8vIElmIHBvcG91dCBkaXJlY3Rpb24gaXMgc2V0IHRvIHJpZ2h0LCBhbmQgdGhlIGVudHJ5IGlzIGN1dCBvZmYgdG8gdGhlIHJpZ2h0IGJ5ICR7ZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnJpZ2h0IC0gZW50cnkuaW50ZXJzZWN0aW9uUmVjdC5yaWdodH1weFxuICAgIC8vIGl0IGlzIHNldCB0byBwb3BvdXQgbGVmdCBpbnN0ZWFkLCBhbmQgdmljZSB2ZXJzYSBmb3IgcG9wb3V0IGRpcmVjdGlvbiBsZWZ0XG4gICAgaWYgKHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbiA9PT0gSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodCkge1xuICAgICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5yaWdodCA+IGVudHJ5LnJvb3RCb3VuZHMucmlnaHQpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID0gSG9yaXpvbnRhbERpcmVjdGlvbi5sZWZ0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmxlZnQgPCBlbnRyeS5yb290Qm91bmRzLmxlZnQpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID0gSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZlcnRpY2FsRGlyZWN0aW9uKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSB7XG4gICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC50b3AgPCAwKSB7XG4gICAgICAvLyBlbnRyeSBpcyBjdXQgb2ZmIGF0IHRoZSB0b3AgYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QudG9wfXB4XG4gICAgICAvLyBvcGVuIGRvd253YXJkczpcbiAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuICAgIH1cbiAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA+IGVudHJ5LnJvb3RCb3VuZHMuYm90dG9tKSB7XG4gICAgICAvLyBlbnRyeSBpcyBjdXQgb2ZmIGF0IHRoZSBib3R0b20gYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QuYm90dG9tIC0gZW50cnkuaW50ZXJzZWN0aW9uUmVjdC5ib3R0b219cHhcbiAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldFRvcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgIGNvbnN0IFNQQUNJTkcgPSA1OyAvL1RPRE86IEdldCBmcm9tIFNDU1NcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBjYXJkIGNhbiBmaXQgb24gdG9wIG9mIGJ1dHRvbjpcbiAgICAgIGlmIChjb250YWluZXJPZmZzZXRUb3AgPiBlbnRyeS50YXJnZXQuY2xpZW50SGVpZ2h0ICsgU1BBQ0lORykge1xuICAgICAgICAvLyBvcGVuIHVwd2FyZHM6XG4gICAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi51cDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUub3BlbmluZztcbiAgICAgIC8vIGVuc3VyZXMgdGhhdCB0aGUgZHJvcGRvd24gaXMgb3BlbmVkIGluIGNhc2UgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgaXNuJ3QgaW52b2tlZFxuICAgICAgdGhpcy5zaG93RHJvcGRvd25UaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnNob3dEcm9wZG93bigpLFxuICAgICAgICBEcm9wZG93bkNvbXBvbmVudC5PUEVOX0RFTEFZX0lOX01TXG4gICAgICApO1xuXG4gICAgICAvLyBNb3ZlIGZvY3VzIHRvIHNlbGVjdGVkIGl0ZW0gKGlmIGFueSlcbiAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5zZWxlY3RlZEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd0Ryb3Bkb3duKCkge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSBPcGVuU3RhdGUub3BlbmluZykge1xuICAgICAgdGhpcy5zdGF0ZSA9IE9wZW5TdGF0ZS5vcGVuO1xuICAgICAgdGhpcy5wb3BvdmVyPy5zaG93KCk7XG4gICAgICB0aGlzLnNjcm9sbEl0ZW1JbnRvVmlldyh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICAgICAgLy8gUmVzZXQgdmVydGljYWwgZGlyZWN0aW9uIHRvIGRlZmF1bHRcbiAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuICAgICAgdGhpcy5wb3BvdmVyPy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgb25JdGVtU2VsZWN0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdEl0ZW0oaW5kZXgpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0J3MgdmFsdWUuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RJdGVtQnlWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHNlbGVjdCdzIHZhbHVlXG4gICAqIGNoYW5nZXMgZnJvbSB1c2VyIGlucHV0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgICogcmVxdWlyZWQgdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBzZWxlY3QgaXMgYmx1cnJlZFxuICAgKiBieSB0aGUgdXNlci4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlIHJlcXVpcmVkXG4gICAqIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgc2VsZWN0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4ICE9IHRoaXMuc2VsZWN0ZWRJbmRleCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdEl0ZW1CeVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLml0ZW1zLmluZGV4T2YodmFsdWUpO1xuICB9XG5cbiAgZ2V0VGV4dEZyb21JdGVtKGl0ZW06IHN0cmluZyB8IGFueSkge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLml0ZW1UZXh0UHJvcGVydHldO1xuICB9XG5cbiAgc2Nyb2xsSXRlbUludG9WaWV3KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBraXJieUl0ZW1zID1cbiAgICAgIHRoaXMua2lyYnlJdGVtc1Nsb3R0ZWQgJiYgdGhpcy5raXJieUl0ZW1zU2xvdHRlZC5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmtpcmJ5SXRlbXNTbG90dGVkXG4gICAgICAgIDogdGhpcy5raXJieUl0ZW1zRGVmYXVsdDtcbiAgICBpZiAoa2lyYnlJdGVtcyAmJiBraXJieUl0ZW1zLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRLaXJieUl0ZW0gPSBraXJieUl0ZW1zLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICBpZiAoc2VsZWN0ZWRLaXJieUl0ZW0gJiYgc2VsZWN0ZWRLaXJieUl0ZW0ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBpdGVtRWxlbWVudCA9IHNlbGVjdGVkS2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGl0ZW1FbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnRhYicsIFsnJGV2ZW50J10pXG4gIF9vblRhYihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICAvLyBSZW1vdmUgdGhlICdjbGlja2VkJyBjbGFzcyAoSG9zdGJpbmRpbmcpIGlmIHRoZSB1c2VyIGhhcyBwcmV2aW91c2x5IG9wZW5lZCB0aGUgZHJvcGRvd24gYnkgY2xpY2tpbmcsXG4gICAgICAvLyBzaW5jZSB0aGUgY2xhc3MgcHJldmVudHMgdGhlIGZvY3VzIHJpbmcgZnJvbSBzaG93aW5nLFxuICAgICAgLy8gd2hpY2ggaXMgZXhwZWN0ZWQgdG8gaGFwcGVuLCB3aGVuIHVzaW5nIHRoZSB0YWIga2V5XG4gICAgICB0aGlzLmNsaWNrZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBfb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICBfb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIF9vbkZvY3VzKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuICB9XG5cbiAgX29uUG9wb3ZlcldpbGxIaWRlKCkge1xuICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJylcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lc2NhcGUnKVxuICBfb25FbnRlck9yRXNjYXBlKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIF9vblBvcG92ZXJDbGljaygpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcbiAgX29uQmx1cigpIHtcbiAgICBpZiAodGhpcy51c2VQb3BvdmVyKSByZXR1cm47XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc3BhY2UnLCBbJyRldmVudCddKVxuICBfb25FbnRlck9yU3BhY2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0odGhpcy5mb2N1c2VkSW5kZXgpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93ZG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnXSlcbiAgX29uQXJyb3dLZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIE1pcnJvciBkZWZhdWx0IEhUTUw1IHNlbGVjdCBiZWhhdmlvdXIgLSBwcmV2ZW50IGxlZnQvcmlnaHQgYXJyb3dzIHdoZW4gb3BlbjpcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgLy8gQXZvaWQgcGFnZSBzY3JvbGxcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9wZW4oKTtcblxuICAgICAgLy8gSWYgbm8gc2VsZWN0ZWQgaXRlbSB0aGVuIGZvY3VzIGZpcnN0IG9yIGxhc3QgaXRlbVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA8IDApIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Rm9jdXNlZEluZGV4ID0gdGhpcy5rZXlib2FyZEhhbmRsZXJTZXJ2aWNlLmhhbmRsZShcbiAgICAgIGV2ZW50LFxuICAgICAgdGhpcy5mb2N1c2VkSW5kZXgsXG4gICAgICB0aGlzLml0ZW1zLmxlbmd0aCAtIDFcbiAgICApO1xuXG4gICAgaWYgKG5ld0ZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IG5ld0ZvY3VzZWRJbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmhvbWUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVuZCcsIFsnJGV2ZW50J10pXG4gIF9vbkhvbWVFbmRLZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdGb2N1c2VkSW5kZXggPSB0aGlzLmtleWJvYXJkSGFuZGxlclNlcnZpY2UuaGFuZGxlKFxuICAgICAgZXZlbnQsXG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCxcbiAgICAgIHRoaXMuaXRlbXMubGVuZ3RoIC0gMVxuICAgICk7XG4gICAgaWYgKG5ld0ZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IG5ld0ZvY3VzZWRJbmRleDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmxpc3RlbkFsbFNsb3R0ZWRJdGVtcygpIHtcbiAgICBsZXQgdW5saXN0ZW5JdGVtOiAoKSA9PiB2b2lkO1xuICAgIHdoaWxlICgodW5saXN0ZW5JdGVtID0gdGhpcy5pdGVtQ2xpY2tVbmxpc3Rlbi5wb3AoKSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdW5saXN0ZW5JdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bmxpc3RlbkFsbFNsb3R0ZWRJdGVtcygpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIGlmICh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmKSB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAga2lyYnktYnV0dG9uXG4gIFtzaXplXT1cInNpemVcIlxuICBbYXR0ZW50aW9uTGV2ZWxdPVwiYXR0ZW50aW9uTGV2ZWxcIlxuICB0YWJpbmRleD1cIi0xXCJcbiAgKGNsaWNrKT1cIm9uVG9nZ2xlKCRldmVudClcIlxuICAobW91c2Vkb3duKT1cIm9uQnV0dG9uTW91c2VFdmVudCgkZXZlbnQpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4+XG4gIDxzcGFuIGNsYXNzPVwidGV4dFwiPnt7IHNlbGVjdGVkVGV4dCB8fCBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgPGtpcmJ5LWljb24gW25hbWVdPVwiaXNPcGVuID8gJ2Fycm93LXVwJyA6ICdhcnJvdy1kb3duJ1wiPjwva2lyYnktaWNvbj5cbjwvYnV0dG9uPlxuXG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXNlUG9wb3ZlciA/IHBvcG92ZXJUZW1wbGF0ZSA6IGl0ZW1XcmFwcGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNwb3BvdmVyVGVtcGxhdGU+XG4gIDxraXJieS1wb3BvdmVyXG4gICAgW3RhcmdldF09XCJidXR0b25FbGVtZW50XCJcbiAgICBbcG9wb3V0XT1cInBvcG91dFwiXG4gICAgKGNsaWNrKT1cIl9vblBvcG92ZXJDbGljaygpXCJcbiAgICAod2lsbEhpZGUpPVwiX29uUG9wb3ZlcldpbGxIaWRlKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1XcmFwcGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9raXJieS1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtV3JhcHBlclRlbXBsYXRlPlxuICA8a2lyYnktY2FyZD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgaXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGkgPT09IHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICBmb2N1c2VkOiBpID09PSBmb2N1c2VkSW5kZXgsXG4gICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwva2lyYnktY2FyZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdEl0ZW1UZW1wbGF0ZVxuICBsZXQtaXRlbVxuICBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiXG4gIGxldC1pbmRleD1cImluZGV4XCJcbiAgbGV0LWZvY3VzZWQ9XCJmb2N1c2VkXCJcbj5cbiAgPGtpcmJ5LWl0ZW1cbiAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgIChjbGljayk9XCJvbkl0ZW1TZWxlY3QoaW5kZXgpXCJcbiAgICBbY2xhc3MuZm9jdXNlZF09XCJmb2N1c2VkXCJcbiAgICByb2xlPVwib3B0aW9uXCJcbiAgPlxuICAgIDwhLS0gVGFiaW5kZXggZml4ZXMgaXNzdWUgd2l0aCBwb3BvdmVyIGRyb3Bkb3duIG5vdCB3b3JraW5nIGluIHNhZmFyaSAtLT5cbiAgICA8cCBjbGFzcz1cImtpcmJ5LWl0ZW0tdGl0bGVcIiB0YWJpbmRleD1cIjBcIj57eyBnZXRUZXh0RnJvbUl0ZW0oaXRlbSkgfX08L3A+XG4gICAgPGtpcmJ5LWljb24gKm5nSWY9XCJzZWxlY3RlZFwiIG5hbWU9XCJjaGVja21hcmstc2VsZWN0ZWRcIiBzbG90PVwiZW5kXCI+PC9raXJieS1pY29uPlxuICA8L2tpcmJ5LWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19
|