@kirbydesign/designsystem 10.2.1 → 10.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +2 -1
- 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 +11 -10
- 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 +19 -19
- 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 +49 -156
- 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/README.md +0 -7
- 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,543 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, ContentChild, ElementRef, EnvironmentInjector, HostBinding, HostListener, Injector, Input, NgZone, QueryList, Renderer2, RendererStyleFlags2, TemplateRef, ViewChild, ViewChildren, } from '@angular/core';
|
|
2
|
-
import { RouterModule, RouterOutlet } from '@angular/router';
|
|
3
|
-
import { firstValueFrom, merge, Subject } from 'rxjs';
|
|
4
|
-
import { debounceTime, first, map, takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { DesignTokenHelper, getIonModalDialogAncestor } from '@kirbydesign/designsystem/helpers';
|
|
6
|
-
import { ResizeObserverService, TranslationService } from '@kirbydesign/designsystem/shared';
|
|
7
|
-
import { WindowRef } from '@kirbydesign/designsystem/types';
|
|
8
|
-
import { observeContent, PlatformService } from '@kirbydesign/designsystem/helpers';
|
|
9
|
-
import { CommonModule } from '@angular/common';
|
|
10
|
-
import { IconModule } from '@kirbydesign/designsystem/icon';
|
|
11
|
-
import { ButtonComponent } from '@kirbydesign/designsystem/button';
|
|
12
|
-
import { IonButtons, IonContent, IonHeader, IonTitle, IonToolbar, } from '@ionic/angular/standalone';
|
|
13
|
-
import { Modal, ModalElementsAdvertiser, ModalElementType } from '../modal.interfaces';
|
|
14
|
-
import { CanDismissHelper } from '../modal/services/can-dismiss.helper';
|
|
15
|
-
import { COMPONENT_PROPS } from './config/modal-config.helper';
|
|
16
|
-
import { ModalElementsMoverDelegate } from './modal-elements-mover.delegate';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@kirbydesign/designsystem/shared";
|
|
19
|
-
import * as i2 from "@kirbydesign/designsystem/types";
|
|
20
|
-
import * as i3 from "@kirbydesign/designsystem/helpers";
|
|
21
|
-
import * as i4 from "../modal/services/can-dismiss.helper";
|
|
22
|
-
import * as i5 from "@angular/router";
|
|
23
|
-
import * as i6 from "@kirbydesign/designsystem/icon";
|
|
24
|
-
import * as i7 from "@angular/common";
|
|
25
|
-
const contentScrollDebounceTimeInMS = 10;
|
|
26
|
-
const contentScrolledOffsetInPixels = 4;
|
|
27
|
-
export class ModalWrapperComponent {
|
|
28
|
-
get _hasCollapsibleTitle() {
|
|
29
|
-
return !!this.config?.collapseTitle;
|
|
30
|
-
}
|
|
31
|
-
static { this.KEYBOARD_HIDE_DELAY_IN_MS = 100; }
|
|
32
|
-
set scrollDisabled(disabled) {
|
|
33
|
-
this.ionContent.scrollY = !disabled;
|
|
34
|
-
}
|
|
35
|
-
set canDismiss(callback) {
|
|
36
|
-
this.ionModalElement.canDismiss = this.canDismissHelper.getCanDismissCallback(callback);
|
|
37
|
-
}
|
|
38
|
-
get contentTitleElement() {
|
|
39
|
-
/*
|
|
40
|
-
contentTitleElement has ngIf directive dependent on _hasCollapsibleTitle; trigger CD to make sure element has been queried.
|
|
41
|
-
Solution taken from: https://danieleyassu.com/angular-viewchild-and-ngif/
|
|
42
|
-
*/
|
|
43
|
-
if (!this._contentTitleElement && this._hasCollapsibleTitle) {
|
|
44
|
-
this.changeDetector.detectChanges();
|
|
45
|
-
}
|
|
46
|
-
return this._contentTitleElement;
|
|
47
|
-
}
|
|
48
|
-
get intersectionObserver() {
|
|
49
|
-
if (!this._intersectionObserver) {
|
|
50
|
-
this._intersectionObserver = this.createModalWrapperIntersectionObserver();
|
|
51
|
-
}
|
|
52
|
-
return this._intersectionObserver;
|
|
53
|
-
}
|
|
54
|
-
get _isDrawer() {
|
|
55
|
-
return this.config.flavor === 'drawer';
|
|
56
|
-
}
|
|
57
|
-
constructor(changeDetector, injector, elementRef, renderer, zone, resizeObserverService, windowRef, platform, canDismissHelper, environmentInjector, translations) {
|
|
58
|
-
this.changeDetector = changeDetector;
|
|
59
|
-
this.injector = injector;
|
|
60
|
-
this.elementRef = elementRef;
|
|
61
|
-
this.renderer = renderer;
|
|
62
|
-
this.zone = zone;
|
|
63
|
-
this.resizeObserverService = resizeObserverService;
|
|
64
|
-
this.windowRef = windowRef;
|
|
65
|
-
this.platform = platform;
|
|
66
|
-
this.canDismissHelper = canDismissHelper;
|
|
67
|
-
this.environmentInjector = environmentInjector;
|
|
68
|
-
this.translations = translations;
|
|
69
|
-
this.scrollY = Math.abs(this.windowRef.nativeWindow.scrollY);
|
|
70
|
-
this.VIEWPORT_RESIZE_DEBOUNCE_TIME = 100;
|
|
71
|
-
this.keyboardVisible = false;
|
|
72
|
-
this.toolbarButtons = [];
|
|
73
|
-
this.delayedClose = () => { };
|
|
74
|
-
this.viewportResized = false;
|
|
75
|
-
this.ionModalDidPresent = new Subject();
|
|
76
|
-
this.didPresent = firstValueFrom(this.ionModalDidPresent);
|
|
77
|
-
this.ionModalWillDismiss = new Subject();
|
|
78
|
-
this.willClose = firstValueFrom(this.ionModalWillDismiss);
|
|
79
|
-
this.viewportResize = new Subject();
|
|
80
|
-
this.viewportResize$ = this.viewportResize
|
|
81
|
-
.asObservable()
|
|
82
|
-
.pipe(debounceTime(this.VIEWPORT_RESIZE_DEBOUNCE_TIME));
|
|
83
|
-
this.destroy$ = new Subject();
|
|
84
|
-
this.willClose$ = this.ionModalWillDismiss.pipe(first());
|
|
85
|
-
this._currentFooter = null;
|
|
86
|
-
this.setAriaLabelFromTitleContent = () => {
|
|
87
|
-
const titleTextContent = this.ionTitleElement?.nativeElement.textContent;
|
|
88
|
-
if (this.ionModalDialog && titleTextContent) {
|
|
89
|
-
this.renderer.setAttribute(this.ionModalDialog, 'aria-label', titleTextContent);
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
this.setViewportHeight();
|
|
93
|
-
this.observeViewportResize();
|
|
94
|
-
this.modalElementsMoverDelegate = new ModalElementsMoverDelegate(renderer, elementRef);
|
|
95
|
-
}
|
|
96
|
-
ngOnInit() {
|
|
97
|
-
this.ionModalElement = this.elementRef.nativeElement.closest('ion-modal');
|
|
98
|
-
this.ionModalDialog = getIonModalDialogAncestor(this.elementRef.nativeElement);
|
|
99
|
-
this.initializeSizing();
|
|
100
|
-
this.initializeModalRoute();
|
|
101
|
-
this.listenForIonModalDidPresent();
|
|
102
|
-
this.listenForIonModalWillDismiss();
|
|
103
|
-
this.listenForScroll();
|
|
104
|
-
this.initializeResizeModalToModalWrapper();
|
|
105
|
-
this.componentPropsInjector = Injector.create({
|
|
106
|
-
providers: [{ provide: COMPONENT_PROPS, useValue: this.config.componentProps }],
|
|
107
|
-
parent: this.injector,
|
|
108
|
-
});
|
|
109
|
-
this.modalWrapperInjector = Injector.create({
|
|
110
|
-
providers: [{ provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent }],
|
|
111
|
-
parent: this.injector,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
ngAfterViewInit() {
|
|
115
|
-
if (this.toolbarButtonsQuery) {
|
|
116
|
-
this.toolbarButtons = this.toolbarButtonsQuery.map((buttonRef) => buttonRef.nativeElement);
|
|
117
|
-
}
|
|
118
|
-
this.setAriaLabel();
|
|
119
|
-
}
|
|
120
|
-
set currentFooter(footer) {
|
|
121
|
-
if (footer !== null) {
|
|
122
|
-
this.resizeObserverService.observe(footer, (entry) => {
|
|
123
|
-
const [property, pixelValue] = [
|
|
124
|
-
'--footer-height',
|
|
125
|
-
`${Math.floor(entry.contentRect.height)}px`,
|
|
126
|
-
];
|
|
127
|
-
this.setCssVar(this.elementRef.nativeElement, property, pixelValue);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
this._currentFooter = footer;
|
|
131
|
-
}
|
|
132
|
-
get currentFooter() {
|
|
133
|
-
return this._currentFooter;
|
|
134
|
-
}
|
|
135
|
-
addModalElement(type, modalElement) {
|
|
136
|
-
const addModalElementFn = {
|
|
137
|
-
[ModalElementType.FOOTER]: () => {
|
|
138
|
-
this.modalElementsMoverDelegate.addFooter(modalElement);
|
|
139
|
-
this.currentFooter = modalElement.nativeElement;
|
|
140
|
-
},
|
|
141
|
-
[ModalElementType.TITLE]: () => this.modalElementsMoverDelegate.addTitle(modalElement, this.contentTitleElement, this._hasCollapsibleTitle, this.ionTitleElement),
|
|
142
|
-
[ModalElementType.PAGE_PROGRESS]: () => this.modalElementsMoverDelegate.addPageProgress(modalElement, this.ionToolbarElement),
|
|
143
|
-
}[type];
|
|
144
|
-
addModalElementFn();
|
|
145
|
-
}
|
|
146
|
-
removeModalElement(type, modalElement) {
|
|
147
|
-
const removeModalElementFn = {
|
|
148
|
-
[ModalElementType.FOOTER]: () => {
|
|
149
|
-
this.modalElementsMoverDelegate.removeFooter(modalElement);
|
|
150
|
-
this.currentFooter = null;
|
|
151
|
-
},
|
|
152
|
-
[ModalElementType.TITLE]: () => this.modalElementsMoverDelegate.removeTitle(modalElement, this._hasCollapsibleTitle, this.contentTitleElement),
|
|
153
|
-
[ModalElementType.PAGE_PROGRESS]: () => this.modalElementsMoverDelegate.removePageProgress(modalElement),
|
|
154
|
-
}[type];
|
|
155
|
-
removeModalElementFn();
|
|
156
|
-
}
|
|
157
|
-
initializeResizeModalToModalWrapper() {
|
|
158
|
-
if (this.config.flavor === 'drawer' && this.config.interactWithBackground) {
|
|
159
|
-
merge(this.ionModalDidPresent, this.viewportResize$)
|
|
160
|
-
.pipe(takeUntil(this.destroy$))
|
|
161
|
-
.subscribe(() => {
|
|
162
|
-
// wait for template to render
|
|
163
|
-
setTimeout(() => {
|
|
164
|
-
const domRect = this.elementRef.nativeElement.getBoundingClientRect();
|
|
165
|
-
const document = this.windowRef.nativeWindow.document.documentElement;
|
|
166
|
-
const right = document.clientWidth - domRect.right;
|
|
167
|
-
this.renderer.setStyle(this.ionModalElement, 'top', `${domRect.top}px`);
|
|
168
|
-
this.renderer.setStyle(this.ionModalElement, 'left', `${domRect.left}px`);
|
|
169
|
-
this.renderer.setStyle(this.ionModalElement, 'right', `${right}px`);
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
initializeSizing() {
|
|
175
|
-
if (this.config.size === 'full-height')
|
|
176
|
-
return;
|
|
177
|
-
this.patchScrollElementSize();
|
|
178
|
-
this.observeHeaderResize();
|
|
179
|
-
this.observeModalFullHeight();
|
|
180
|
-
}
|
|
181
|
-
initializeModalRoute() {
|
|
182
|
-
if (this.config.modalRoute) {
|
|
183
|
-
this.onSiblingModalRouteActivated(this.config.siblingModalRouteActivated$);
|
|
184
|
-
// Load component from modal-route inside router-outlet:
|
|
185
|
-
this.routerOutlet.activateWith(this.config.modalRoute, this.environmentInjector);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
onSiblingModalRouteActivated(siblingModalRouteActivated$) {
|
|
189
|
-
if (!siblingModalRouteActivated$)
|
|
190
|
-
return;
|
|
191
|
-
siblingModalRouteActivated$.pipe(takeUntil(this.willClose$)).subscribe((route) => {
|
|
192
|
-
if (this.routerOutlet.isActivated) {
|
|
193
|
-
this.routerOutlet.deactivate();
|
|
194
|
-
}
|
|
195
|
-
this.routerOutlet.activateWith(route, this.environmentInjector);
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
patchScrollElementSize() {
|
|
199
|
-
const supportsCssShadowParts = 'part' in HTMLElement.prototype;
|
|
200
|
-
if (supportsCssShadowParts)
|
|
201
|
-
return;
|
|
202
|
-
this.ionContent.getScrollElement().then((scrollElement) => {
|
|
203
|
-
this.renderer.setStyle(scrollElement, 'height', '100%');
|
|
204
|
-
this.renderer.setStyle(scrollElement, 'position', 'relative');
|
|
205
|
-
if (this.config.flavor === 'drawer') {
|
|
206
|
-
this.renderer.setStyle(scrollElement, 'transition', 'padding-bottom ' + DesignTokenHelper.softKeyboardTransitionLeave);
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
observeModalFullHeight() {
|
|
211
|
-
const ionModalWrapper = this.getIonModalWrapperElement();
|
|
212
|
-
if (!ionModalWrapper)
|
|
213
|
-
return;
|
|
214
|
-
// Start observing when modal has finished animating:
|
|
215
|
-
this.didPresent.then(() => {
|
|
216
|
-
this.intersectionObserver.observe(ionModalWrapper);
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
// Extracted into function for ease of testing
|
|
220
|
-
getIonModalWrapperElement() {
|
|
221
|
-
return this.ionModalElement.shadowRoot.querySelector('.modal-wrapper');
|
|
222
|
-
}
|
|
223
|
-
observeHeaderResize() {
|
|
224
|
-
this.resizeObserverService.observe(this.ionHeaderElement.nativeElement, (entry) => {
|
|
225
|
-
const [property, pixelValue] = ['--header-height', `${entry.contentRect.height}px`];
|
|
226
|
-
this.setCssVar(this.elementRef.nativeElement, property, pixelValue);
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
listenForIonModalDidPresent() {
|
|
230
|
-
if (this.ionModalElement) {
|
|
231
|
-
this.ionModalElement.addEventListener('ionModalDidPresent', () => {
|
|
232
|
-
this.ionModalDidPresent.next();
|
|
233
|
-
this.ionModalDidPresent.complete();
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
listenForIonModalWillDismiss() {
|
|
238
|
-
if (this.ionModalElement) {
|
|
239
|
-
this.ionModalElement.addEventListener('ionModalWillDismiss', () => {
|
|
240
|
-
this.ionModalWillDismiss.next();
|
|
241
|
-
this.ionModalWillDismiss.complete();
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
listenForScroll() {
|
|
246
|
-
const query = `(min-width: ${DesignTokenHelper.breakpoints.medium})`;
|
|
247
|
-
const mediaQuery = this.windowRef.nativeWindow.matchMedia(query);
|
|
248
|
-
const enableScrollEvents = (listOrEvent) => {
|
|
249
|
-
const isDesktop = listOrEvent.matches;
|
|
250
|
-
this.scrollEventsEnabled = !isDesktop;
|
|
251
|
-
};
|
|
252
|
-
enableScrollEvents(mediaQuery);
|
|
253
|
-
mediaQuery.onchange = enableScrollEvents;
|
|
254
|
-
// Runs scroll subscription outside zone to avoid excessive amount of CD cycles
|
|
255
|
-
// when ionScroll emits.
|
|
256
|
-
this.zone.runOutsideAngular(() => {
|
|
257
|
-
// Always subscribe as ionScroll only emits when scrollEventsEnabled is true
|
|
258
|
-
this.ionContent.ionScroll
|
|
259
|
-
.pipe(debounceTime(contentScrollDebounceTimeInMS), map((event) => event.detail), takeUntil(this.destroy$))
|
|
260
|
-
.subscribe((scrollInfo) => {
|
|
261
|
-
const contentScrolledPastOffset = scrollInfo.scrollTop > contentScrolledOffsetInPixels;
|
|
262
|
-
if (contentScrolledPastOffset !== this.isContentScrolled) {
|
|
263
|
-
this.isContentScrolled = contentScrolledPastOffset;
|
|
264
|
-
this.changeDetector.detectChanges();
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
observeTitleContentChanges() {
|
|
270
|
-
this.mutationObserverUnobserveFn = observeContent(this.ionTitleElement.nativeElement, this.setAriaLabelFromTitleContent);
|
|
271
|
-
}
|
|
272
|
-
setAriaLabel() {
|
|
273
|
-
const ariaLabel = this.config.htmlAttributes?.['aria-label'];
|
|
274
|
-
const ionModalElementDialog = getIonModalDialogAncestor(this.ionModalElement);
|
|
275
|
-
if (ionModalElementDialog && ariaLabel) {
|
|
276
|
-
this.renderer.setAttribute(ionModalElementDialog, 'aria-label', ariaLabel);
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
this.setAriaLabelFromTitleContent();
|
|
280
|
-
this.observeTitleContentChanges();
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
scrollToTop(scrollDuration) {
|
|
284
|
-
this.ionContent.scrollToTop(scrollDuration || 0);
|
|
285
|
-
}
|
|
286
|
-
scrollToBottom(scrollDuration) {
|
|
287
|
-
this.ionContent.scrollToBottom(scrollDuration || 0);
|
|
288
|
-
}
|
|
289
|
-
async close(data) {
|
|
290
|
-
if (!this.ionModalElement) {
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
|
-
if (!this.keyboardVisible || !this.viewportResized) {
|
|
294
|
-
// No keyboard visible or viewport not resized:
|
|
295
|
-
// Dismiss modal and return:
|
|
296
|
-
clearTimeout(this.delayedCloseTimeoutId);
|
|
297
|
-
await this.ionModalElement.dismiss(data);
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
|
-
// Keyboard visible:
|
|
301
|
-
// Blur active element and wait for keyboard to hide,
|
|
302
|
-
// then dismiss modal and return:
|
|
303
|
-
this.blurActiveElement();
|
|
304
|
-
return new Promise((resolve) => {
|
|
305
|
-
this.delayedClose = async () => {
|
|
306
|
-
await this.ionModalElement.dismiss(data);
|
|
307
|
-
resolve();
|
|
308
|
-
};
|
|
309
|
-
this.delayedCloseTimeoutId = setTimeout(this.delayedClose, ModalWrapperComponent.KEYBOARD_HIDE_DELAY_IN_MS);
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
onFocusChange() {
|
|
313
|
-
// This fixes an undesired scroll behaviour occurring on keyboard-tabbing backwards (with shift+tab):
|
|
314
|
-
this.windowRef.nativeWindow.scrollTo({ top: this.scrollY });
|
|
315
|
-
}
|
|
316
|
-
_onKeyboardShow(keyboardHeight) {
|
|
317
|
-
this.setKeyboardVisibility(keyboardHeight);
|
|
318
|
-
}
|
|
319
|
-
_onKeyboardHide() {
|
|
320
|
-
this.setKeyboardVisibility(0);
|
|
321
|
-
}
|
|
322
|
-
toggleContentMaxHeight(freeze) {
|
|
323
|
-
const shouldToggleMaxHeight = this.config.flavor === 'modal' && this.platform.isPhabletOrBigger();
|
|
324
|
-
if (!shouldToggleMaxHeight)
|
|
325
|
-
return;
|
|
326
|
-
const style = 'max-height';
|
|
327
|
-
const contentElement = this.ionContentElement.nativeElement;
|
|
328
|
-
this.zone.run(() => {
|
|
329
|
-
if (freeze) {
|
|
330
|
-
const contentHeight = contentElement.offsetHeight;
|
|
331
|
-
this.renderer.setStyle(contentElement, style, `${contentHeight}px`);
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
this.renderer.removeStyle(contentElement, style);
|
|
335
|
-
}
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
setKeyboardVisibility(keyboardHeight) {
|
|
339
|
-
const keyboardAlreadyVisible = keyboardHeight > 0 && this.keyboardVisible;
|
|
340
|
-
const keyboardAlreadyHidden = keyboardHeight === 0 && !this.keyboardVisible;
|
|
341
|
-
if (keyboardAlreadyVisible || keyboardAlreadyHidden)
|
|
342
|
-
return;
|
|
343
|
-
this.keyboardVisible = keyboardHeight > 0;
|
|
344
|
-
this.toggleContentMaxHeight(this.keyboardVisible);
|
|
345
|
-
this.setKeyboardOverlap(keyboardHeight);
|
|
346
|
-
}
|
|
347
|
-
getKeyboardOverlap(keyboardHeight, element) {
|
|
348
|
-
if (keyboardHeight <= 0 || !element)
|
|
349
|
-
return 0;
|
|
350
|
-
const distanceFromViewportBottomToElement = Math.floor(this.windowRef.nativeWindow.innerHeight - element.getBoundingClientRect().bottom);
|
|
351
|
-
return Math.max(keyboardHeight - distanceFromViewportBottomToElement, 0);
|
|
352
|
-
}
|
|
353
|
-
setCssVar(element, property, value) {
|
|
354
|
-
this.zone.run(() => this.renderer.setStyle(element, property, value, RendererStyleFlags2.DashCase));
|
|
355
|
-
}
|
|
356
|
-
toggleCssClass(element, klass, condition) {
|
|
357
|
-
this.zone.run(() => condition ? this.renderer.addClass(element, klass) : this.renderer.removeClass(element, klass));
|
|
358
|
-
}
|
|
359
|
-
setKeyboardOverlap(keyboardHeight) {
|
|
360
|
-
this.toggleCssClass(this.elementRef.nativeElement, 'keyboard-visible', keyboardHeight > 0);
|
|
361
|
-
const keyboardOverlap = this.getKeyboardOverlap(keyboardHeight, this.elementRef.nativeElement);
|
|
362
|
-
let snapFooterToKeyboard = false;
|
|
363
|
-
const embeddedFooterElement = this.currentFooter;
|
|
364
|
-
if (embeddedFooterElement) {
|
|
365
|
-
this.setCssVar(embeddedFooterElement, '--keyboard-offset', `${keyboardOverlap}px`);
|
|
366
|
-
snapFooterToKeyboard = embeddedFooterElement.classList.contains('snap-to-keyboard');
|
|
367
|
-
}
|
|
368
|
-
const contentElement = this.ionContentElement.nativeElement;
|
|
369
|
-
const contentKeyboardOffset = snapFooterToKeyboard
|
|
370
|
-
? keyboardOverlap
|
|
371
|
-
: this.getKeyboardOverlap(keyboardHeight, contentElement);
|
|
372
|
-
this.setCssVar(contentElement, '--keyboard-offset', `${contentKeyboardOffset}px`);
|
|
373
|
-
}
|
|
374
|
-
onHeaderTouchStart(event) {
|
|
375
|
-
if (this.keyboardVisible) {
|
|
376
|
-
const isToolbarButtonTouch = this.toolbarButtons.some((button) => {
|
|
377
|
-
return (event.target instanceof HTMLElement &&
|
|
378
|
-
(event.target === button || button.contains(event.target)));
|
|
379
|
-
});
|
|
380
|
-
// Prevent blur if event target is a toolbar button
|
|
381
|
-
// (to allow tap event to fire):
|
|
382
|
-
if (!isToolbarButtonTouch) {
|
|
383
|
-
this.blurActiveElement();
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
_onWindowResize() {
|
|
388
|
-
this.setViewportHeight();
|
|
389
|
-
}
|
|
390
|
-
setViewportHeight() {
|
|
391
|
-
const vh = (this.windowRef.nativeWindow.innerHeight * 0.01).toFixed(2);
|
|
392
|
-
this.setCssVar(this.elementRef.nativeElement, '--vh', `${vh}px`);
|
|
393
|
-
}
|
|
394
|
-
observeViewportResize() {
|
|
395
|
-
this.resizeObserverService.observe(this.windowRef.nativeWindow.document.body, (entry) => this.onViewportResize(entry));
|
|
396
|
-
}
|
|
397
|
-
onViewportResize(entry) {
|
|
398
|
-
if (!this.initialViewportHeight) {
|
|
399
|
-
// Initial observe callback, register initial height:
|
|
400
|
-
this.initialViewportHeight = entry.contentRect.height;
|
|
401
|
-
return;
|
|
402
|
-
}
|
|
403
|
-
this.viewportResized = entry.contentRect.height !== this.initialViewportHeight;
|
|
404
|
-
if (!this.viewportResized) {
|
|
405
|
-
// We are back to initial view port height, check for pending close func:
|
|
406
|
-
if (this.delayedCloseTimeoutId) {
|
|
407
|
-
clearTimeout(this.delayedCloseTimeoutId);
|
|
408
|
-
this.delayedClose();
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
this.viewportResize.next();
|
|
412
|
-
}
|
|
413
|
-
blurActiveElement() {
|
|
414
|
-
const BLUR_TARGET_SELECTOR = 'input, textarea';
|
|
415
|
-
if (this.keyboardVisible) {
|
|
416
|
-
if (document.activeElement instanceof HTMLElement &&
|
|
417
|
-
document.activeElement.matches(BLUR_TARGET_SELECTOR)) {
|
|
418
|
-
document.activeElement.blur();
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
createModalWrapperIntersectionObserver() {
|
|
423
|
-
const callback = (entries) => {
|
|
424
|
-
const entry = entries[0];
|
|
425
|
-
const isTouchingViewport = entry.intersectionRatio < 1;
|
|
426
|
-
if (isTouchingViewport) {
|
|
427
|
-
this.ionModalElement.classList.add('full-height');
|
|
428
|
-
}
|
|
429
|
-
else {
|
|
430
|
-
this.ionModalElement.classList.remove('full-height');
|
|
431
|
-
}
|
|
432
|
-
};
|
|
433
|
-
// Set explicit viewport root if within iframe:
|
|
434
|
-
const root = this.windowRef.nativeWindow.frameElement
|
|
435
|
-
? this.windowRef.nativeWindow.document // Cast to `any` as Typescript lib.d.ts doesnt support Document type yet
|
|
436
|
-
: undefined;
|
|
437
|
-
const options = {
|
|
438
|
-
rootMargin: '0px 0px -1px 0px', // `bottom: -1px` allows checking when the modal bottom is touching the viewport
|
|
439
|
-
root,
|
|
440
|
-
threshold: [0.99, 1],
|
|
441
|
-
};
|
|
442
|
-
return new IntersectionObserver(callback, options);
|
|
443
|
-
}
|
|
444
|
-
ngOnDestroy() {
|
|
445
|
-
if (this.routerOutlet.isActivated) {
|
|
446
|
-
this.routerOutlet.deactivate();
|
|
447
|
-
}
|
|
448
|
-
//clean up the observer
|
|
449
|
-
this.mutationObserverUnobserveFn?.();
|
|
450
|
-
this.intersectionObserver.disconnect();
|
|
451
|
-
delete this._intersectionObserver;
|
|
452
|
-
if (this.resizeObserverService) {
|
|
453
|
-
this.resizeObserverService.unobserve(this.windowRef.nativeWindow.document.body);
|
|
454
|
-
this.resizeObserverService.unobserve(this.ionHeaderElement.nativeElement);
|
|
455
|
-
this.resizeObserverService.unobserve(this.currentFooter);
|
|
456
|
-
}
|
|
457
|
-
this.destroy$.next();
|
|
458
|
-
this.destroy$.complete();
|
|
459
|
-
}
|
|
460
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalWrapperComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.ResizeObserverService }, { token: i2.WindowRef }, { token: i3.PlatformService }, { token: i4.CanDismissHelper }, { token: i0.EnvironmentInjector }, { token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
461
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ModalWrapperComponent, isStandalone: true, selector: "kirby-modal-wrapper", inputs: { scrollDisabled: "scrollDisabled", config: "config", content: "content" }, host: { listeners: { "window:focus": "onFocusChange()", "window:focusout": "onFocusChange()", "window:ionKeyboardDidShow": "_onKeyboardShow($event.detail.keyboardHeight)", "window:keyboardWillShow": "_onKeyboardShow($event.keyboardHeight)", "window:ionKeyboardDidHide": "_onKeyboardHide()", "window:keyboardWillHide": "_onKeyboardHide()", "window:resize": "_onWindowResize()" }, properties: { "class.collapsible-title": "this._hasCollapsibleTitle", "class.drawer": "this._isDrawer" } }, providers: [
|
|
462
|
-
{ provide: Modal, useExisting: ModalWrapperComponent },
|
|
463
|
-
{ provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },
|
|
464
|
-
], queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionToolbarElement", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: "ionTitleElement", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: "routerOutlet", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: "_contentTitleElement", first: true, predicate: ["contentTitle"], descendants: true, read: ElementRef }, { propertyName: "toolbarButtonsQuery", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ion-header [class.content-scrolled]=\"isContentScrolled\" (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons\n slot=\"secondary\"\n *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n [attr.aria-label]=\"translations.get('close')\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i6.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
|
|
465
|
-
}
|
|
466
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalWrapperComponent, decorators: [{
|
|
467
|
-
type: Component,
|
|
468
|
-
args: [{ standalone: true, imports: [
|
|
469
|
-
RouterModule,
|
|
470
|
-
ButtonComponent,
|
|
471
|
-
IconModule,
|
|
472
|
-
CommonModule,
|
|
473
|
-
IonHeader,
|
|
474
|
-
IonToolbar,
|
|
475
|
-
IonTitle,
|
|
476
|
-
IonButtons,
|
|
477
|
-
IonContent,
|
|
478
|
-
], selector: 'kirby-modal-wrapper', providers: [
|
|
479
|
-
{ provide: Modal, useExisting: ModalWrapperComponent },
|
|
480
|
-
{ provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },
|
|
481
|
-
], template: "<ion-header [class.content-scrolled]=\"isContentScrolled\" (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons\n slot=\"secondary\"\n *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n [attr.aria-label]=\"translations.get('close')\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"] }]
|
|
482
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.ResizeObserverService }, { type: i2.WindowRef }, { type: i3.PlatformService }, { type: i4.CanDismissHelper }, { type: i0.EnvironmentInjector }, { type: i1.TranslationService }], propDecorators: { _hasCollapsibleTitle: [{
|
|
483
|
-
type: HostBinding,
|
|
484
|
-
args: ['class.collapsible-title']
|
|
485
|
-
}], scrollDisabled: [{
|
|
486
|
-
type: Input
|
|
487
|
-
}], config: [{
|
|
488
|
-
type: Input
|
|
489
|
-
}], content: [{
|
|
490
|
-
type: Input
|
|
491
|
-
}], templateRef: [{
|
|
492
|
-
type: ContentChild,
|
|
493
|
-
args: [TemplateRef]
|
|
494
|
-
}], toolbarButtonsQuery: [{
|
|
495
|
-
type: ViewChildren,
|
|
496
|
-
args: [ButtonComponent, { read: ElementRef }]
|
|
497
|
-
}], ionContent: [{
|
|
498
|
-
type: ViewChild,
|
|
499
|
-
args: [IonContent, { static: true }]
|
|
500
|
-
}], ionContentElement: [{
|
|
501
|
-
type: ViewChild,
|
|
502
|
-
args: [IonContent, { static: true, read: ElementRef }]
|
|
503
|
-
}], ionHeaderElement: [{
|
|
504
|
-
type: ViewChild,
|
|
505
|
-
args: [IonHeader, { static: true, read: ElementRef }]
|
|
506
|
-
}], ionToolbarElement: [{
|
|
507
|
-
type: ViewChild,
|
|
508
|
-
args: [IonToolbar, { static: true, read: ElementRef }]
|
|
509
|
-
}], ionTitleElement: [{
|
|
510
|
-
type: ViewChild,
|
|
511
|
-
args: [IonTitle, { static: true, read: ElementRef }]
|
|
512
|
-
}], routerOutlet: [{
|
|
513
|
-
type: ViewChild,
|
|
514
|
-
args: [RouterOutlet, { static: true }]
|
|
515
|
-
}], _contentTitleElement: [{
|
|
516
|
-
type: ViewChild,
|
|
517
|
-
args: ['contentTitle', { read: ElementRef }]
|
|
518
|
-
}], _isDrawer: [{
|
|
519
|
-
type: HostBinding,
|
|
520
|
-
args: ['class.drawer']
|
|
521
|
-
}], onFocusChange: [{
|
|
522
|
-
type: HostListener,
|
|
523
|
-
args: ['window:focus']
|
|
524
|
-
}, {
|
|
525
|
-
type: HostListener,
|
|
526
|
-
args: ['window:focusout']
|
|
527
|
-
}], _onKeyboardShow: [{
|
|
528
|
-
type: HostListener,
|
|
529
|
-
args: ['window:ionKeyboardDidShow', ['$event.detail.keyboardHeight']]
|
|
530
|
-
}, {
|
|
531
|
-
type: HostListener,
|
|
532
|
-
args: ['window:keyboardWillShow', ['$event.keyboardHeight']]
|
|
533
|
-
}], _onKeyboardHide: [{
|
|
534
|
-
type: HostListener,
|
|
535
|
-
args: ['window:ionKeyboardDidHide']
|
|
536
|
-
}, {
|
|
537
|
-
type: HostListener,
|
|
538
|
-
args: ['window:keyboardWillHide']
|
|
539
|
-
}], _onWindowResize: [{
|
|
540
|
-
type: HostListener,
|
|
541
|
-
args: ['window:resize']
|
|
542
|
-
}] } });
|
|
543
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdGLE9BQU8sRUFBZSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1B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cG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJTdHlsZUZsYWdzMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEZXNpZ25Ub2tlbkhlbHBlciwgZ2V0SW9uTW9kYWxEaWFsb2dBbmNlc3RvciB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5cbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgVW5vYnNlcnZlRm4sIFdpbmRvd1JlZiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vdHlwZXMnO1xuaW1wb3J0IHsgb2JzZXJ2ZUNvbnRlbnQsIFBsYXRmb3JtU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uVGl0bGUsXG4gIElvblRvb2xiYXIsXG4gIFNjcm9sbERldGFpbCxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBNb2RhbCwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIE1vZGFsRWxlbWVudFR5cGUgfSBmcm9tICcuLi9tb2RhbC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhbkRpc21pc3NIZWxwZXIgfSBmcm9tICcuLi9tb2RhbC9zZXJ2aWNlcy9jYW4tZGlzbWlzcy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxDb25maWcsIFNob3dBbGVydENhbGxiYWNrIH0gZnJvbSAnLi9jb25maWcvbW9kYWwtY29uZmlnJztcbmltcG9ydCB7IENPTVBPTkVOVF9QUk9QUyB9IGZyb20gJy4vY29uZmlnL21vZGFsLWNvbmZpZy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUgfSBmcm9tICcuL21vZGFsLWVsZW1lbnRzLW1vdmVyLmRlbGVnYXRlJztcblxuY29uc3QgY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMgPSAxMDtcbmNvbnN0IGNvbnRlbnRTY3JvbGxlZE9mZnNldEluUGl4ZWxzID0gNDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEljb25Nb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvblRpdGxlLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQ29udGVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdraXJieS1tb2RhbC13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTW9kYWwsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsV3JhcHBlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE1vZGFsLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXJcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2xsYXBzaWJsZS10aXRsZScpXG4gIGdldCBfaGFzQ29sbGFwc2libGVUaXRsZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZz8uY29sbGFwc2VUaXRsZTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBLRVlCT0FSRF9ISURFX0RFTEFZX0lOX01TID0gMTAwO1xuXG4gIHNjcm9sbFk6IG51bWJlciA9IE1hdGguYWJzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBWSUVXUE9SVF9SRVNJWkVfREVCT1VOQ0VfVElNRSA9IDEwMDtcblxuICBASW5wdXQoKSBzZXQgc2Nyb2xsRGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsWSA9ICFkaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBjYW5EaXNtaXNzKGNhbGxiYWNrOiBTaG93QWxlcnRDYWxsYmFjaykge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNhbkRpc21pc3MgPSB0aGlzLmNhbkRpc21pc3NIZWxwZXIuZ2V0Q2FuRGlzbWlzc0NhbGxiYWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNvbmZpZzogTW9kYWxDb25maWc7XG4gIEBJbnB1dCgpIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29tcG9uZW50UHJvcHNJbmplY3RvcjogSW5qZWN0b3I7XG4gIG1vZGFsV3JhcHBlckluamVjdG9yOiBJbmplY3RvcjtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgdG9vbGJhckJ1dHRvbnNRdWVyeTogUXVlcnlMaXN0PFxuICAgIEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gID47XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpb25Db250ZW50OiBJb25Db250ZW50O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uQ29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkNvbnRlbnRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25IZWFkZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uVG9vbGJhciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Ub29sYmFyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVG9vbGJhckVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvblRpdGxlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvblRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVGl0bGVFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFRpdGxlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgX2NvbnRlbnRUaXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGdldCBjb250ZW50VGl0bGVFbGVtZW50KCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICAvKiBcbiAgICAgICAgY29udGVudFRpdGxlRWxlbWVudCBoYXMgbmdJZiBkaXJlY3RpdmUgZGVwZW5kZW50IG9uIF9oYXNDb2xsYXBzaWJsZVRpdGxlOyB0cmlnZ2VyIENEIHRvIG1ha2Ugc3VyZSBlbGVtZW50IGhhcyBiZWVuIHF1ZXJpZWQuIFxuICAgICAgICBTb2x1dGlvbiB0YWtlbiBmcm9tOiBodHRwczovL2RhbmllbGV5YXNzdS5jb20vYW5ndWxhci12aWV3Y2hpbGQtYW5kLW5naWYvXG4gICAgICAqL1xuICAgIGlmICghdGhpcy5fY29udGVudFRpdGxlRWxlbWVudCAmJiB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUaXRsZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIHRvb2xiYXJCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZGVsYXllZENsb3NlID0gKCkgPT4ge307XG4gIHByaXZhdGUgZGVsYXllZENsb3NlVGltZW91dElkO1xuICBwcml2YXRlIGluaXRpYWxWaWV3cG9ydEhlaWdodDogbnVtYmVyO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGlvbk1vZGFsRWxlbWVudD86IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgaW9uTW9kYWxEaWFsb2c/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbERpZFByZXNlbnQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSBkaWRQcmVzZW50ID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbERpZFByZXNlbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlvbk1vZGFsV2lsbERpc21pc3MgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSB3aWxsQ2xvc2UgPSBmaXJzdFZhbHVlRnJvbSh0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MpO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSQgPSB0aGlzLnZpZXdwb3J0UmVzaXplXG4gICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuVklFV1BPUlRfUkVTSVpFX0RFQk9VTkNFX1RJTUUpKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyVW5vYnNlcnZlRm46IFVub2JzZXJ2ZUZuO1xuICBwcml2YXRlIF9pbnRlcnNlY3Rpb25PYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgZ2V0IGludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBpZiAoIXRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IHRoaXMuY3JlYXRlTW9kYWxXcmFwcGVySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICB9XG4gIHNjcm9sbEV2ZW50c0VuYWJsZWQ6IGJvb2xlYW47XG4gIGlzQ29udGVudFNjcm9sbGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYXdlcicpXG4gIGdldCBfaXNEcmF3ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcic7XG4gIH1cblxuICB3aWxsQ2xvc2UkID0gdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLnBpcGUoZmlyc3QoKSk7XG5cbiAgcHJpdmF0ZSBtb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZTogTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcml2YXRlIGNhbkRpc21pc3NIZWxwZXI6IENhbkRpc21pc3NIZWxwZXIsXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNldFZpZXdwb3J0SGVpZ2h0KCk7XG4gICAgdGhpcy5vYnNlcnZlVmlld3BvcnRSZXNpemUoKTtcbiAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlID0gbmV3IE1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlKHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgdGhpcy5pb25Nb2RhbERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNpemluZygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1vZGFsUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZvcklvbk1vZGFsRGlkUHJlc2VudCgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpO1xuICAgIHRoaXMubGlzdGVuRm9yU2Nyb2xsKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpO1xuICAgIHRoaXMuY29tcG9uZW50UHJvcHNJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENPTVBPTkVOVF9QUk9QUywgdXNlVmFsdWU6IHRoaXMuY29uZmlnLmNvbXBvbmVudFByb3BzIH1dLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb2RhbFdyYXBwZXJJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH1dLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2xiYXJCdXR0b25zUXVlcnkpIHtcbiAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMgPSB0aGlzLnRvb2xiYXJCdXR0b25zUXVlcnkubWFwKChidXR0b25SZWYpID0+IGJ1dHRvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldEFyaWFMYWJlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudEZvb3RlcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHNldCBjdXJyZW50Rm9vdGVyKGZvb3RlcjogSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgaWYgKGZvb3RlciAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZShmb290ZXIsIChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBbcHJvcGVydHksIHBpeGVsVmFsdWVdID0gW1xuICAgICAgICAgICctLWZvb3Rlci1oZWlnaHQnLFxuICAgICAgICAgIGAke01hdGguZmxvb3IoZW50cnkuY29udGVudFJlY3QuaGVpZ2h0KX1weGAsXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBwcm9wZXJ0eSwgcGl4ZWxWYWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9jdXJyZW50Rm9vdGVyID0gZm9vdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY3VycmVudEZvb3RlcigpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Rm9vdGVyO1xuICB9XG5cbiAgcHVibGljIGFkZE1vZGFsRWxlbWVudCh0eXBlOiBNb2RhbEVsZW1lbnRUeXBlLCBtb2RhbEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgY29uc3QgYWRkTW9kYWxFbGVtZW50Rm4gPSB7XG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5GT09URVJdOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUuYWRkRm9vdGVyKG1vZGFsRWxlbWVudCk7XG4gICAgICAgIHRoaXMuY3VycmVudEZvb3RlciA9IG1vZGFsRWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgfSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlRJVExFXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5hZGRUaXRsZShcbiAgICAgICAgICBtb2RhbEVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5jb250ZW50VGl0bGVFbGVtZW50LFxuICAgICAgICAgIHRoaXMuX2hhc0NvbGxhcHNpYmxlVGl0bGUsXG4gICAgICAgICAgdGhpcy5pb25UaXRsZUVsZW1lbnRcbiAgICAgICAgKSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlBBR0VfUFJPR1JFU1NdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLmFkZFBhZ2VQcm9ncmVzcyhtb2RhbEVsZW1lbnQsIHRoaXMuaW9uVG9vbGJhckVsZW1lbnQpLFxuICAgIH1bdHlwZV07XG5cbiAgICBhZGRNb2RhbEVsZW1lbnRGbigpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZU1vZGFsRWxlbWVudCh0eXBlOiBNb2RhbEVsZW1lbnRUeXBlLCBtb2RhbEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgY29uc3QgcmVtb3ZlTW9kYWxFbGVtZW50Rm4gPSB7XG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5GT09URVJdOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUucmVtb3ZlRm9vdGVyKG1vZGFsRWxlbWVudCk7XG4gICAgICAgIHRoaXMuY3VycmVudEZvb3RlciA9IG51bGw7XG4gICAgICB9LFxuICAgICAgW01vZGFsRWxlbWVudFR5cGUuVElUTEVdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZVRpdGxlKFxuICAgICAgICAgIG1vZGFsRWxlbWVudCxcbiAgICAgICAgICB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlLFxuICAgICAgICAgIHRoaXMuY29udGVudFRpdGxlRWxlbWVudFxuICAgICAgICApLFxuICAgICAgW01vZGFsRWxlbWVudFR5cGUuUEFHRV9QUk9HUkVTU106ICgpID0+XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUucmVtb3ZlUGFnZVByb2dyZXNzKG1vZGFsRWxlbWVudCksXG4gICAgfVt0eXBlXTtcblxuICAgIHJlbW92ZU1vZGFsRWxlbWVudEZuKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVSZXNpemVNb2RhbFRvTW9kYWxXcmFwcGVyKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInICYmIHRoaXMuY29uZmlnLmludGVyYWN0V2l0aEJhY2tncm91bmQpIHtcbiAgICAgIG1lcmdlKHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50LCB0aGlzLnZpZXdwb3J0UmVzaXplJClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAvLyB3YWl0IGZvciB0ZW1wbGF0ZSB0byByZW5kZXJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvbVJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gZG9jdW1lbnQuY2xpZW50V2lkdGggLSBkb21SZWN0LnJpZ2h0O1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ3RvcCcsIGAke2RvbVJlY3QudG9wfXB4YCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW9uTW9kYWxFbGVtZW50LCAnbGVmdCcsIGAke2RvbVJlY3QubGVmdH1weGApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ3JpZ2h0JywgYCR7cmlnaHR9cHhgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU2l6aW5nKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5zaXplID09PSAnZnVsbC1oZWlnaHQnKSByZXR1cm47XG4gICAgdGhpcy5wYXRjaFNjcm9sbEVsZW1lbnRTaXplKCk7XG4gICAgdGhpcy5vYnNlcnZlSGVhZGVyUmVzaXplKCk7XG4gICAgdGhpcy5vYnNlcnZlTW9kYWxGdWxsSGVpZ2h0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVNb2RhbFJvdXRlKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5tb2RhbFJvdXRlKSB7XG4gICAgICB0aGlzLm9uU2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQodGhpcy5jb25maWcuc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkKTtcbiAgICAgIC8vIExvYWQgY29tcG9uZW50IGZyb20gbW9kYWwtcm91dGUgaW5zaWRlIHJvdXRlci1vdXRsZXQ6XG4gICAgICB0aGlzLnJvdXRlck91dGxldC5hY3RpdmF0ZVdpdGgodGhpcy5jb25maWcubW9kYWxSb3V0ZSwgdGhpcy5lbnZpcm9ubWVudEluamVjdG9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uU2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQoc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkPzogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZT4pIHtcbiAgICBpZiAoIXNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCkgcmV0dXJuO1xuICAgIHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJC5waXBlKHRha2VVbnRpbCh0aGlzLndpbGxDbG9zZSQpKS5zdWJzY3JpYmUoKHJvdXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuZGVhY3RpdmF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYWN0aXZhdGVXaXRoKHJvdXRlLCB0aGlzLmVudmlyb25tZW50SW5qZWN0b3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaFNjcm9sbEVsZW1lbnRTaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IHN1cHBvcnRzQ3NzU2hhZG93UGFydHMgPSAncGFydCcgaW4gSFRNTEVsZW1lbnQucHJvdG90eXBlO1xuICAgIGlmIChzdXBwb3J0c0Nzc1NoYWRvd1BhcnRzKSByZXR1cm47XG4gICAgdGhpcy5pb25Db250ZW50LmdldFNjcm9sbEVsZW1lbnQoKS50aGVuKChzY3JvbGxFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNjcm9sbEVsZW1lbnQsICdoZWlnaHQnLCAnMTAwJScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgc2Nyb2xsRWxlbWVudCxcbiAgICAgICAgICAndHJhbnNpdGlvbicsXG4gICAgICAgICAgJ3BhZGRpbmctYm90dG9tICcgKyBEZXNpZ25Ub2tlbkhlbHBlci5zb2Z0S2V5Ym9hcmRUcmFuc2l0aW9uTGVhdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpIHtcbiAgICBjb25zdCBpb25Nb2RhbFdyYXBwZXIgPSB0aGlzLmdldElvbk1vZGFsV3JhcHBlckVsZW1lbnQoKTtcblxuICAgIGlmICghaW9uTW9kYWxXcmFwcGVyKSByZXR1cm47XG4gICAgLy8gU3RhcnQgb2JzZXJ2aW5nIHdoZW4gbW9kYWwgaGFzIGZpbmlzaGVkIGFuaW1hdGluZzpcbiAgICB0aGlzLmRpZFByZXNlbnQudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUoaW9uTW9kYWxXcmFwcGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4dHJhY3RlZCBpbnRvIGZ1bmN0aW9uIGZvciBlYXNlIG9mIHRlc3RpbmdcbiAgcHJpdmF0ZSBnZXRJb25Nb2RhbFdyYXBwZXJFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5pb25Nb2RhbEVsZW1lbnQuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtd3JhcHBlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlSGVhZGVyUmVzaXplKCkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFsnLS1oZWFkZXItaGVpZ2h0JywgYCR7ZW50cnkuY29udGVudFJlY3QuaGVpZ2h0fXB4YF07XG4gICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JJb25Nb2RhbERpZFByZXNlbnQoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbERpZFByZXNlbnQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50Lm5leHQoKTtcbiAgICAgICAgdGhpcy5pb25Nb2RhbERpZFByZXNlbnQuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpIHtcbiAgICBpZiAodGhpcy5pb25Nb2RhbEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vZGFsV2lsbERpc21pc3MnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JTY3JvbGwoKSB7XG4gICAgY29uc3QgcXVlcnkgPSBgKG1pbi13aWR0aDogJHtEZXNpZ25Ub2tlbkhlbHBlci5icmVha3BvaW50cy5tZWRpdW19KWA7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICBjb25zdCBlbmFibGVTY3JvbGxFdmVudHMgPSAobGlzdE9yRXZlbnQ6IE1lZGlhUXVlcnlMaXN0IHwgTWVkaWFRdWVyeUxpc3RFdmVudCkgPT4ge1xuICAgICAgY29uc3QgaXNEZXNrdG9wID0gbGlzdE9yRXZlbnQubWF0Y2hlcztcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnRzRW5hYmxlZCA9ICFpc0Rlc2t0b3A7XG4gICAgfTtcblxuICAgIGVuYWJsZVNjcm9sbEV2ZW50cyhtZWRpYVF1ZXJ5KTtcbiAgICBtZWRpYVF1ZXJ5Lm9uY2hhbmdlID0gZW5hYmxlU2Nyb2xsRXZlbnRzO1xuXG4gICAgLy8gUnVucyBzY3JvbGwgc3Vic2NyaXB0aW9uIG91dHNpZGUgem9uZSB0byBhdm9pZCBleGNlc3NpdmUgYW1vdW50IG9mIENEIGN5Y2xlc1xuICAgIC8vIHdoZW4gaW9uU2Nyb2xsIGVtaXRzLlxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgc3Vic2NyaWJlIGFzIGlvblNjcm9sbCBvbmx5IGVtaXRzIHdoZW4gc2Nyb2xsRXZlbnRzRW5hYmxlZCBpcyB0cnVlXG4gICAgICB0aGlzLmlvbkNvbnRlbnQuaW9uU2Nyb2xsXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZShjb250ZW50U2Nyb2xsRGVib3VuY2VUaW1lSW5NUyksXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gZXZlbnQuZGV0YWlsKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChzY3JvbGxJbmZvOiBTY3JvbGxEZXRhaWwpID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0ID0gc2Nyb2xsSW5mby5zY3JvbGxUb3AgPiBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscztcblxuICAgICAgICAgIGlmIChjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0ICE9PSB0aGlzLmlzQ29udGVudFNjcm9sbGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29udGVudFNjcm9sbGVkID0gY29udGVudFNjcm9sbGVkUGFzdE9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVUaXRsZUNvbnRlbnRDaGFuZ2VzKCkge1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlclVub2JzZXJ2ZUZuID0gb2JzZXJ2ZUNvbnRlbnQoXG4gICAgICB0aGlzLmlvblRpdGxlRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5zZXRBcmlhTGFiZWxGcm9tVGl0bGVDb250ZW50XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QXJpYUxhYmVsRnJvbVRpdGxlQ29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCB0aXRsZVRleHRDb250ZW50ID0gdGhpcy5pb25UaXRsZUVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxEaWFsb2cgJiYgdGl0bGVUZXh0Q29udGVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5pb25Nb2RhbERpYWxvZywgJ2FyaWEtbGFiZWwnLCB0aXRsZVRleHRDb250ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRBcmlhTGFiZWwoKSB7XG4gICAgY29uc3QgYXJpYUxhYmVsID0gdGhpcy5jb25maWcuaHRtbEF0dHJpYnV0ZXM/LlsnYXJpYS1sYWJlbCddO1xuICAgIGNvbnN0IGlvbk1vZGFsRWxlbWVudERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5pb25Nb2RhbEVsZW1lbnQpO1xuXG4gICAgaWYgKGlvbk1vZGFsRWxlbWVudERpYWxvZyAmJiBhcmlhTGFiZWwpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGlvbk1vZGFsRWxlbWVudERpYWxvZywgJ2FyaWEtbGFiZWwnLCBhcmlhTGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEFyaWFMYWJlbEZyb21UaXRsZUNvbnRlbnQoKTtcbiAgICAgIHRoaXMub2JzZXJ2ZVRpdGxlQ29udGVudENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb1RvcChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbiB8fCAwKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5rZXlib2FyZFZpc2libGUgfHwgIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBObyBrZXlib2FyZCB2aXNpYmxlIG9yIHZpZXdwb3J0IG5vdCByZXNpemVkOlxuICAgICAgLy8gRGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgdmlzaWJsZTpcbiAgICAvLyBCbHVyIGFjdGl2ZSBlbGVtZW50IGFuZCB3YWl0IGZvciBrZXlib2FyZCB0byBoaWRlLFxuICAgIC8vIHRoZW4gZGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZENsb3NlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmlvbk1vZGFsRWxlbWVudC5kaXNtaXNzKGRhdGEpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLmRlbGF5ZWRDbG9zZSxcbiAgICAgICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LktFWUJPQVJEX0hJREVfREVMQVlfSU5fTVNcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRTaG93JywgWyckZXZlbnQuZGV0YWlsLmtleWJvYXJkSGVpZ2h0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQua2V5Ym9hcmRIZWlnaHQnXSlcbiAgX29uS2V5Ym9hcmRTaG93KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eShrZXlib2FyZEhlaWdodCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRIaWRlJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZEhpZGUoKSB7XG4gICAgdGhpcy5zZXRLZXlib2FyZFZpc2liaWxpdHkoMCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQoZnJlZXplOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2hvdWxkVG9nZ2xlTWF4SGVpZ2h0ID1cbiAgICAgIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ21vZGFsJyAmJiB0aGlzLnBsYXRmb3JtLmlzUGhhYmxldE9yQmlnZ2VyKCk7XG4gICAgaWYgKCFzaG91bGRUb2dnbGVNYXhIZWlnaHQpIHJldHVybjtcbiAgICBjb25zdCBzdHlsZSA9ICdtYXgtaGVpZ2h0JztcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIGlmIChmcmVlemUpIHtcbiAgICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUsIGAke2NvbnRlbnRIZWlnaHR9cHhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGVudEVsZW1lbnQsIHN0eWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlib2FyZEFscmVhZHlWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwICYmIHRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeUhpZGRlbiA9IGtleWJvYXJkSGVpZ2h0ID09PSAwICYmICF0aGlzLmtleWJvYXJkVmlzaWJsZTtcbiAgICBpZiAoa2V5Ym9hcmRBbHJlYWR5VmlzaWJsZSB8fCBrZXlib2FyZEFscmVhZHlIaWRkZW4pIHJldHVybjtcbiAgICB0aGlzLmtleWJvYXJkVmlzaWJsZSA9IGtleWJvYXJkSGVpZ2h0ID4gMDtcbiAgICB0aGlzLnRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQodGhpcy5rZXlib2FyZFZpc2libGUpO1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIsIGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAoa2V5Ym9hcmRIZWlnaHQgPD0gMCB8fCAhZWxlbWVudCkgcmV0dXJuIDA7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQgPSBNYXRoLmZsb29yKFxuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0IC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b21cbiAgICApO1xuICAgIHJldHVybiBNYXRoLm1heChrZXlib2FyZEhlaWdodCAtIGRpc3RhbmNlRnJvbVZpZXdwb3J0Qm90dG9tVG9FbGVtZW50LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3NzVmFyKGVsZW1lbnQ6IEVsZW1lbnQsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSwgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVDc3NDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBrbGFzczogc3RyaW5nLCBjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICBjb25kaXRpb24gPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGtsYXNzKSA6IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwga2xhc3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvZ2dsZUNzc0NsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5Ym9hcmQtdmlzaWJsZScsIGtleWJvYXJkSGVpZ2h0ID4gMCk7XG4gICAgY29uc3Qga2V5Ym9hcmRPdmVybGFwID0gdGhpcy5nZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICBsZXQgc25hcEZvb3RlclRvS2V5Ym9hcmQgPSBmYWxzZTtcbiAgICBjb25zdCBlbWJlZGRlZEZvb3RlckVsZW1lbnQgPSB0aGlzLmN1cnJlbnRGb290ZXI7XG4gICAgaWYgKGVtYmVkZGVkRm9vdGVyRWxlbWVudCkge1xuICAgICAgdGhpcy5zZXRDc3NWYXIoZW1iZWRkZWRGb290ZXJFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtrZXlib2FyZE92ZXJsYXB9cHhgKTtcbiAgICAgIHNuYXBGb290ZXJUb0tleWJvYXJkID0gZW1iZWRkZWRGb290ZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc25hcC10by1rZXlib2FyZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRlbnRLZXlib2FyZE9mZnNldCA9IHNuYXBGb290ZXJUb0tleWJvYXJkXG4gICAgICA/IGtleWJvYXJkT3ZlcmxhcFxuICAgICAgOiB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgY29udGVudEVsZW1lbnQpO1xuICAgIHRoaXMuc2V0Q3NzVmFyKGNvbnRlbnRFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtjb250ZW50S2V5Ym9hcmRPZmZzZXR9cHhgKTtcbiAgfVxuXG4gIG9uSGVhZGVyVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgY29uc3QgaXNUb29sYmFyQnV0dG9uVG91Y2ggPSB0aGlzLnRvb2xiYXJCdXR0b25zLnNvbWUoKGJ1dHRvbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gYnV0dG9uIHx8IGJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICAvLyBQcmV2ZW50IGJsdXIgaWYgZXZlbnQgdGFyZ2V0IGlzIGEgdG9vbGJhciBidXR0b25cbiAgICAgIC8vICh0byBhbGxvdyB0YXAgZXZlbnQgdG8gZmlyZSk6XG4gICAgICBpZiAoIWlzVG9vbGJhckJ1dHRvblRvdWNoKSB7XG4gICAgICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgY29uc3QgdmggPSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0ICogMC4wMSkudG9GaXhlZCgyKTtcbiAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJy0tdmgnLCBgJHt2aH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVmlld3BvcnRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keSwgKGVudHJ5KSA9PlxuICAgICAgdGhpcy5vblZpZXdwb3J0UmVzaXplKGVudHJ5KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVmlld3BvcnRSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAvLyBJbml0aWFsIG9ic2VydmUgY2FsbGJhY2ssIHJlZ2lzdGVyIGluaXRpYWwgaGVpZ2h0OlxuICAgICAgdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnRSZXNpemVkID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ICE9PSB0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodDtcbiAgICBpZiAoIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBXZSBhcmUgYmFjayB0byBpbml0aWFsIHZpZXcgcG9ydCBoZWlnaHQsIGNoZWNrIGZvciBwZW5kaW5nIGNsb3NlIGZ1bmM6XG4gICAgICBpZiAodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgICAgdGhpcy5kZWxheWVkQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydFJlc2l6ZS5uZXh0KCk7XG4gIH1cblxuICBibHVyQWN0aXZlRWxlbWVudCgpIHtcbiAgICBjb25zdCBCTFVSX1RBUkdFVF9TRUxFQ1RPUiA9ICdpbnB1dCwgdGV4dGFyZWEnO1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5tYXRjaGVzKEJMVVJfVEFSR0VUX1NFTEVDVE9SKVxuICAgICAgKSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGNyZWF0ZU1vZGFsV3JhcHBlckludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBjb25zdCBpc1RvdWNoaW5nVmlld3BvcnQgPSBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDE7XG4gICAgICBpZiAoaXNUb3VjaGluZ1ZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmdWxsLWhlaWdodCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXQgZXhwbGljaXQgdmlld3BvcnQgcm9vdCBpZiB3aXRoaW4gaWZyYW1lOlxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZnJhbWVFbGVtZW50XG4gICAgICA/ICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQgYXMgYW55KSAvLyBDYXN0IHRvIGBhbnlgIGFzIFR5cGVzY3JpcHQgbGliLmQudHMgZG9lc250IHN1cHBvcnQgRG9jdW1lbnQgdHlwZSB5ZXRcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMHB4IC0xcHggMHB4JywgLy8gYGJvdHRvbTogLTFweGAgYWxsb3dzIGNoZWNraW5nIHdoZW4gdGhlIG1vZGFsIGJvdHRvbSBpcyB0b3VjaGluZyB0aGUgdmlld3BvcnRcbiAgICAgIHJvb3QsXG4gICAgICB0aHJlc2hvbGQ6IFswLjk5LCAxXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICB9XG4gICAgLy9jbGVhbiB1cCB0aGUgb2JzZXJ2ZXJcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJVbm9ic2VydmVGbj8uKCk7XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgZGVsZXRlIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZSkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5jdXJyZW50Rm9vdGVyKTtcbiAgICB9XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlciBbY2xhc3MuY29udGVudC1zY3JvbGxlZF09XCJpc0NvbnRlbnRTY3JvbGxlZFwiICh0b3VjaHN0YXJ0KT1cIm9uSGVhZGVyVG91Y2hTdGFydCgkZXZlbnQpXCI+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8aW9uLXRpdGxlPjwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9uc1xuICAgICAgc2xvdD1cInNlY29uZGFyeVwiXG4gICAgICAqbmdJZj1cImNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInICYmIGNvbmZpZy5kcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgICBhdHRlbnRpb25MZXZlbD1cIjNcIlxuICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICAoY2xpY2spPVwiY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb24uYWN0aW9uKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8a2lyYnktaWNvbiBbbmFtZV09XCJjb25maWcuZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbi5pY29uTmFtZVwiPjwva2lyYnktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJwcmltYXJ5XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGtpcmJ5LWJ1dHRvblxuICAgICAgICBhdHRlbnRpb25MZXZlbD1cIjNcIlxuICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICBbbm9EZWNvcmF0aW9uXT1cImNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmFuc2xhdGlvbnMuZ2V0KCdjbG9zZScpXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgPlxuICAgICAgICA8a2lyYnktaWNvbiBuYW1lPVwiY2xvc2VcIj48L2tpcmJ5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgW3Njcm9sbEV2ZW50c109XCJzY3JvbGxFdmVudHNFbmFibGVkXCI+XG4gIDxpb24taGVhZGVyICpuZ0lmPVwiX2hhc0NvbGxhcHNpYmxlVGl0bGVcIiBjb2xsYXBzZT1cImNvbmRlbnNlXCI+XG4gICAgPGlvbi10b29sYmFyPlxuICAgICAgPHNwYW4gY2xhc3M9XCJraXJieS10ZXh0LXhsYXJnZVwiICNjb250ZW50VGl0bGU+PC9zcGFuPlxuICAgIDwvaW9uLXRvb2xiYXI+XG4gIDwvaW9uLWhlYWRlcj5cblxuICA8IS0tIE91dGxldCBmb3IgTW9kYWxDb250cm9sbGVyIC0tPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiY29uZmlnLmNvbXBvbmVudDsgaW5qZWN0b3I6IGNvbXBvbmVudFByb3BzSW5qZWN0b3JcIlxuICA+PC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBPdXRsZXQgZm9yIHByb2plY3RlZCBjb250ZW50IC0tPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudDsgaW5qZWN0b3I6IG1vZGFsV3JhcHBlckluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBPdXRsZXQgZm9yIHJvdXRlLWJhc2VkIG1vZGFsIC0tPlxuICA8cm91dGVyLW91dGxldFxuICAgIG5hbWU9XCJraXJieU1vZGFsV3JhcHBlck91dGxldFwiXG4gICAgW3N0eWxlLnZpc2liaWxpdHldPVwiY29uZmlnLm1vZGFsUm91dGUgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXG4gID48L3JvdXRlci1vdXRsZXQ+XG48L2lvbi1jb250ZW50PlxuIl19
|