@kirbydesign/designsystem 10.2.1 → 10.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-item.component.d.ts +1 -0
- package/accordion/accordion-item.component.d.ts.map +1 -0
- package/accordion/accordion.directive.d.ts +1 -0
- package/accordion/accordion.directive.d.ts.map +1 -0
- package/accordion/accordion.module.d.ts +1 -0
- package/accordion/accordion.module.d.ts.map +1 -0
- package/accordion/index.d.ts +1 -0
- package/accordion/kirbydesign-designsystem-accordion.d.ts.map +1 -0
- package/accordion/public_api.d.ts +1 -0
- package/accordion/public_api.d.ts.map +1 -0
- package/action-group/action-group.component.d.ts +1 -0
- package/action-group/action-group.component.d.ts.map +1 -0
- package/action-group/index.d.ts +1 -0
- package/action-group/kirbydesign-designsystem-action-group.d.ts.map +1 -0
- package/action-group/public_api.d.ts +1 -0
- package/action-group/public_api.d.ts.map +1 -0
- package/avatar/avatar.component.d.ts +1 -0
- package/avatar/avatar.component.d.ts.map +1 -0
- package/avatar/index.d.ts +1 -0
- package/avatar/kirbydesign-designsystem-avatar.d.ts.map +1 -0
- package/avatar/public_api.d.ts +1 -0
- package/avatar/public_api.d.ts.map +1 -0
- package/badge/badge.component.d.ts +1 -0
- package/badge/badge.component.d.ts.map +1 -0
- package/badge/index.d.ts +1 -0
- package/badge/kirbydesign-designsystem-badge.d.ts.map +1 -0
- package/badge/public_api.d.ts +1 -0
- package/badge/public_api.d.ts.map +1 -0
- package/button/button.component.d.ts +1 -0
- package/button/button.component.d.ts.map +1 -0
- package/button/index.d.ts +1 -0
- package/button/kirbydesign-designsystem-button.d.ts.map +1 -0
- package/button/public_api.d.ts +1 -0
- package/button/public_api.d.ts.map +1 -0
- package/calendar/calendar.component.d.ts +1 -0
- package/calendar/calendar.component.d.ts.map +1 -0
- package/calendar/index.d.ts +1 -0
- package/calendar/interfaces/calendar-day.d.ts +1 -0
- package/calendar/interfaces/calendar-day.d.ts.map +1 -0
- package/calendar/interfaces/calendar-year-navigator-config.d.ts +1 -0
- package/calendar/interfaces/calendar-year-navigator-config.d.ts.map +1 -0
- package/calendar/kirbydesign-designsystem-calendar.d.ts.map +1 -0
- package/calendar/public_api.d.ts +1 -0
- package/calendar/public_api.d.ts.map +1 -0
- package/card/card-as-button/card-as-button.directive.d.ts +1 -0
- package/card/card-as-button/card-as-button.directive.d.ts.map +1 -0
- package/card/card-flag-level.d.ts +1 -0
- package/card/card-flag-level.d.ts.map +1 -0
- package/card/card-footer/card-footer.component.d.ts +1 -0
- package/card/card-footer/card-footer.component.d.ts.map +1 -0
- package/card/card-header/card-header.component.d.ts +1 -0
- package/card/card-header/card-header.component.d.ts.map +1 -0
- package/card/card.component.d.ts +1 -0
- package/card/card.component.d.ts.map +1 -0
- package/card/card.module.d.ts +1 -0
- package/card/card.module.d.ts.map +1 -0
- package/card/index.d.ts +1 -0
- package/card/kirbydesign-designsystem-card.d.ts.map +1 -0
- package/card/public_api.d.ts +1 -0
- package/card/public_api.d.ts.map +1 -0
- package/chart/chart/chart.component.d.ts +1 -0
- package/chart/chart/chart.component.d.ts.map +1 -0
- package/chart/chart/index.d.ts +1 -0
- package/chart/chart/index.d.ts.map +1 -0
- package/chart/chart-config/chart-bar-config/chart-bar-config.d.ts +1 -0
- package/chart/chart-config/chart-bar-config/chart-bar-config.d.ts.map +1 -0
- package/chart/chart-config/chart-base-config.d.ts +1 -0
- package/chart/chart-config/chart-base-config.d.ts.map +1 -0
- package/chart/chart-config/chart-stock-config/chart-stock-config.d.ts +1 -0
- package/chart/chart-config/chart-stock-config/chart-stock-config.d.ts.map +1 -0
- package/chart/chart-config/chart-stock-config/data-label-position/data-label-position.d.ts +1 -0
- package/chart/chart-config/chart-stock-config/data-label-position/data-label-position.d.ts.map +1 -0
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.d.ts +1 -0
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.d.ts.map +1 -0
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.d.ts +1 -0
- package/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.d.ts.map +1 -0
- package/chart/charts.module.d.ts +1 -0
- package/chart/charts.module.d.ts.map +1 -0
- package/chart/index.d.ts +1 -0
- package/chart/kirbydesign-designsystem-chart.d.ts.map +1 -0
- package/chart/public_api.d.ts +1 -0
- package/chart/public_api.d.ts.map +1 -0
- package/chart/shared/base-chart/base-chart.component.d.ts +1 -0
- package/chart/shared/base-chart/base-chart.component.d.ts.map +1 -0
- package/chart/shared/base-chart/index.d.ts +1 -0
- package/chart/shared/base-chart/index.d.ts.map +1 -0
- package/chart/shared/chart-config-service/chart-config.service.d.ts +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 +18 -18
- package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide.mjs +16 -14
- package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-spinner.mjs +8 -8
- package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +15 -15
- package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs +287 -354
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +19 -10
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem.mjs +16 -14
- package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
- package/flag/flag.component.d.ts +1 -0
- package/flag/flag.component.d.ts.map +1 -0
- package/flag/index.d.ts +1 -0
- package/flag/kirbydesign-designsystem-flag.d.ts.map +1 -0
- package/flag/public_api.d.ts +1 -0
- package/flag/public_api.d.ts.map +1 -0
- package/form-field/directives/affix/affix.directive.d.ts +1 -0
- package/form-field/directives/affix/affix.directive.d.ts.map +1 -0
- package/form-field/directives/date/date-input.directive.d.ts +1 -0
- package/form-field/directives/date/date-input.directive.d.ts.map +1 -0
- package/form-field/directives/decimal-mask/decimal-mask.directive.d.ts +1 -0
- package/form-field/directives/decimal-mask/decimal-mask.directive.d.ts.map +1 -0
- package/form-field/form-field-message/form-field-message.component.d.ts +1 -0
- package/form-field/form-field-message/form-field-message.component.d.ts.map +1 -0
- package/form-field/form-field.component.d.ts +1 -0
- package/form-field/form-field.component.d.ts.map +1 -0
- package/form-field/form-field.module.d.ts +1 -0
- package/form-field/form-field.module.d.ts.map +1 -0
- package/form-field/index.d.ts +1 -0
- package/form-field/input/input.component.d.ts +1 -0
- package/form-field/input/input.component.d.ts.map +1 -0
- package/form-field/input-counter/input-counter.component.d.ts +1 -0
- package/form-field/input-counter/input-counter.component.d.ts.map +1 -0
- package/form-field/kirbydesign-designsystem-form-field.d.ts.map +1 -0
- package/form-field/public_api.d.ts +1 -0
- package/form-field/public_api.d.ts.map +1 -0
- package/form-field/textarea/textarea.component.d.ts +1 -0
- package/form-field/textarea/textarea.component.d.ts.map +1 -0
- package/header/header.component.d.ts +1 -0
- package/header/header.component.d.ts.map +1 -0
- package/header/header.module.d.ts +1 -0
- package/header/header.module.d.ts.map +1 -0
- package/header/index.d.ts +1 -0
- package/header/kirbydesign-designsystem-header.d.ts.map +1 -0
- package/header/public_api.d.ts +1 -0
- package/header/public_api.d.ts.map +1 -0
- package/helpers/chart-config-has-type.d.ts +1 -0
- package/helpers/chart-config-has-type.d.ts.map +1 -0
- package/helpers/color-helper.d.ts +1 -0
- package/helpers/color-helper.d.ts.map +1 -0
- package/helpers/content-mutation-observer.d.ts +1 -0
- package/helpers/content-mutation-observer.d.ts.map +1 -0
- package/helpers/deep-copy.d.ts +1 -0
- package/helpers/deep-copy.d.ts.map +1 -0
- package/helpers/design-token-helper.d.ts +1 -0
- package/helpers/design-token-helper.d.ts.map +1 -0
- package/helpers/element-ancestor-utils.d.ts +1 -0
- package/helpers/element-ancestor-utils.d.ts.map +1 -0
- package/helpers/index.d.ts +1 -0
- package/helpers/ionic-element-part-helper.d.ts +1 -0
- package/helpers/ionic-element-part-helper.d.ts.map +1 -0
- package/helpers/kirby-animation.d.ts +1 -0
- package/helpers/kirby-animation.d.ts.map +1 -0
- package/helpers/kirbydesign-designsystem-helpers.d.ts.map +1 -0
- package/helpers/line-clamp-helper.d.ts +1 -0
- package/helpers/line-clamp-helper.d.ts.map +1 -0
- package/helpers/merge-deep.d.ts +1 -0
- package/helpers/merge-deep.d.ts.map +1 -0
- package/helpers/platform.service.d.ts +1 -0
- package/helpers/platform.service.d.ts.map +1 -0
- package/helpers/public_api.d.ts +1 -0
- package/helpers/public_api.d.ts.map +1 -0
- package/helpers/scss/index.d.ts +1 -0
- package/helpers/scss/kirbydesign-designsystem-helpers-scss.d.ts.map +1 -0
- package/helpers/scss/public_api.d.ts +1 -0
- package/helpers/scss/public_api.d.ts.map +1 -0
- package/helpers/scss/scss-helper.d.ts +1 -0
- package/helpers/scss/scss-helper.d.ts.map +1 -0
- package/helpers/string-helper.d.ts +1 -0
- package/helpers/string-helper.d.ts.map +1 -0
- package/helpers/theme-color.type.d.ts +1 -0
- package/helpers/theme-color.type.d.ts.map +1 -0
- package/helpers/unique-id-generator.helper.d.ts +1 -0
- package/helpers/unique-id-generator.helper.d.ts.map +1 -0
- package/icon/icon-registry.service.d.ts +1 -0
- package/icon/icon-registry.service.d.ts.map +1 -0
- package/icon/icon-settings.d.ts +1 -0
- package/icon/icon-settings.d.ts.map +1 -0
- package/icon/icon.component.d.ts +7 -2
- package/icon/icon.component.d.ts.map +1 -0
- package/icon/icon.module.d.ts +1 -0
- package/icon/icon.module.d.ts.map +1 -0
- package/icon/index.d.ts +1 -0
- package/icon/kirby-icon-settings.d.ts +1 -0
- package/icon/kirby-icon-settings.d.ts.map +1 -0
- package/icon/kirbydesign-designsystem-icon.d.ts.map +1 -0
- package/icon/public_api.d.ts +1 -0
- package/icon/public_api.d.ts.map +1 -0
- package/icons/svg/expense.svg +1 -0
- package/icons/svg/income.svg +1 -0
- package/icons/svg/notification-fill.svg +1 -0
- package/icons/svg/signed-document.svg +1 -0
- package/index.d.ts +1 -0
- package/item/index.d.ts +1 -0
- package/item/item.component.d.ts +1 -0
- package/item/item.component.d.ts.map +1 -0
- package/item/item.module.d.ts +1 -0
- package/item/item.module.d.ts.map +1 -0
- package/item/kirbydesign-designsystem-item.d.ts.map +1 -0
- package/item/label/label.component.d.ts +1 -0
- package/item/label/label.component.d.ts.map +1 -0
- package/item/public_api.d.ts +1 -0
- package/item/public_api.d.ts.map +1 -0
- package/item-group/index.d.ts +1 -0
- package/item-group/item-group.component.d.ts +1 -0
- package/item-group/item-group.component.d.ts.map +1 -0
- package/item-group/kirbydesign-designsystem-item-group.d.ts.map +1 -0
- package/item-group/public_api.d.ts +1 -0
- package/item-group/public_api.d.ts.map +1 -0
- package/item-sliding/index.d.ts +1 -0
- package/item-sliding/item-sliding.component.d.ts +1 -0
- package/item-sliding/item-sliding.component.d.ts.map +1 -0
- package/item-sliding/item-sliding.types.d.ts +1 -0
- package/item-sliding/item-sliding.types.d.ts.map +1 -0
- package/item-sliding/kirbydesign-designsystem-item-sliding.d.ts.map +1 -0
- package/item-sliding/public_api.d.ts +1 -0
- package/item-sliding/public_api.d.ts.map +1 -0
- package/kirby-app/index.d.ts +1 -0
- package/kirby-app/kirby-app.component.d.ts +1 -0
- package/kirby-app/kirby-app.component.d.ts.map +1 -0
- package/kirby-app/kirby-app.module.d.ts +1 -0
- package/kirby-app/kirby-app.module.d.ts.map +1 -0
- package/kirby-app/kirbydesign-designsystem-kirby-app.d.ts.map +1 -0
- package/kirby-app/public_api.d.ts +1 -0
- package/kirby-app/public_api.d.ts.map +1 -0
- package/kirby-ionic-module/index.d.ts +1 -0
- package/kirby-ionic-module/kirby-ionic.module.d.ts +1 -0
- package/kirby-ionic-module/kirby-ionic.module.d.ts.map +1 -0
- package/kirby-ionic-module/kirbydesign-designsystem-kirby-ionic-module.d.ts.map +1 -0
- package/kirby-ionic-module/public_api.d.ts +1 -0
- package/kirby-ionic-module/public_api.d.ts.map +1 -0
- package/kirbydesign-designsystem.d.ts.map +1 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/segmented-control/segment-item.d.ts +1 -0
- package/lib/components/segmented-control/segment-item.d.ts.map +1 -0
- package/lib/components/segmented-control/segmented-control.component.d.ts +1 -2
- package/lib/components/segmented-control/segmented-control.component.d.ts.map +1 -0
- package/lib/directives/index.d.ts +1 -0
- package/lib/directives/index.d.ts.map +1 -0
- package/lib/directives/key-handler/key-handler.directive.d.ts +1 -0
- package/lib/directives/key-handler/key-handler.directive.d.ts.map +1 -0
- package/lib/directives/modal-router-link/modal-router-link.directive.d.ts +1 -0
- package/lib/directives/modal-router-link/modal-router-link.directive.d.ts.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/kirby.module.d.ts +1 -0
- package/lib/kirby.module.d.ts.map +1 -0
- package/list/directives/index.d.ts +1 -0
- package/list/directives/index.d.ts.map +1 -0
- package/list/directives/infinite-scroll.directive.d.ts +1 -0
- package/list/directives/infinite-scroll.directive.d.ts.map +1 -0
- package/list/directives/list-item-color.directive.d.ts +1 -0
- package/list/directives/list-item-color.directive.d.ts.map +1 -0
- package/list/directives/scroll.model.d.ts +1 -0
- package/list/directives/scroll.model.d.ts.map +1 -0
- package/list/helpers/index.d.ts +1 -0
- package/list/helpers/index.d.ts.map +1 -0
- package/list/helpers/list-helper.d.ts +1 -0
- package/list/helpers/list-helper.d.ts.map +1 -0
- package/list/index.d.ts +1 -0
- package/list/kirbydesign-designsystem-list.d.ts.map +1 -0
- package/list/list-experimental/index.d.ts +1 -0
- package/list/list-experimental/index.d.ts.map +1 -0
- package/list/list-experimental/list-experimental.component.d.ts +1 -0
- package/list/list-experimental/list-experimental.component.d.ts.map +1 -0
- package/list/list-header/index.d.ts +1 -0
- package/list/list-header/index.d.ts.map +1 -0
- package/list/list-header/list-header.component.d.ts +1 -0
- package/list/list-header/list-header.component.d.ts.map +1 -0
- package/list/list-item/index.d.ts +1 -0
- package/list/list-item/index.d.ts.map +1 -0
- package/list/list-item/list-item.component.d.ts +1 -0
- package/list/list-item/list-item.component.d.ts.map +1 -0
- package/list/list-section-header/index.d.ts +1 -0
- package/list/list-section-header/index.d.ts.map +1 -0
- package/list/list-section-header/list-section-header.component.d.ts +1 -0
- package/list/list-section-header/list-section-header.component.d.ts.map +1 -0
- package/list/list-swipe-action.d.ts +1 -0
- package/list/list-swipe-action.d.ts.map +1 -0
- package/list/list-swipe-action.type.d.ts +1 -0
- package/list/list-swipe-action.type.d.ts.map +1 -0
- package/list/list.component.d.ts +1 -0
- package/list/list.component.d.ts.map +1 -0
- package/list/list.directive.d.ts +1 -0
- package/list/list.directive.d.ts.map +1 -0
- package/list/list.event.d.ts +1 -0
- package/list/list.event.d.ts.map +1 -0
- package/list/list.module.d.ts +1 -0
- package/list/list.module.d.ts.map +1 -0
- package/list/public_api.d.ts +1 -0
- package/list/public_api.d.ts.map +1 -0
- package/loading-overlay/index.d.ts +1 -0
- package/loading-overlay/kirbydesign-designsystem-loading-overlay.d.ts.map +1 -0
- package/loading-overlay/loading-overlay.component.d.ts +1 -0
- package/loading-overlay/loading-overlay.component.d.ts.map +1 -0
- package/loading-overlay/loading-overlay.service.d.ts +1 -0
- package/loading-overlay/loading-overlay.service.d.ts.map +1 -0
- package/loading-overlay/public_api.d.ts +1 -0
- package/loading-overlay/public_api.d.ts.map +1 -0
- package/menu/index.d.ts +1 -0
- package/menu/kirbydesign-designsystem-menu.d.ts.map +1 -0
- package/menu/menu.component.d.ts +1 -0
- package/menu/menu.component.d.ts.map +1 -0
- package/menu/public_api.d.ts +1 -0
- package/menu/public_api.d.ts.map +1 -0
- package/modal/index.d.ts +1 -0
- package/modal/kirbydesign-designsystem-modal.d.ts.map +1 -0
- package/modal/modal/action-sheet/action-sheet.component.d.ts +1 -0
- package/modal/modal/action-sheet/action-sheet.component.d.ts.map +1 -0
- package/modal/modal/action-sheet/config/action-sheet-config.d.ts +1 -0
- package/modal/modal/action-sheet/config/action-sheet-config.d.ts.map +1 -0
- package/modal/modal/action-sheet/config/action-sheet-item.d.ts +1 -0
- package/modal/modal/action-sheet/config/action-sheet-item.d.ts.map +1 -0
- package/modal/modal/action-sheet/index.d.ts +1 -0
- package/modal/modal/action-sheet/index.d.ts.map +1 -0
- package/modal/modal/alert/alert.component.d.ts +1 -0
- package/modal/modal/alert/alert.component.d.ts.map +1 -0
- package/modal/modal/alert/config/alert-config.d.ts +1 -0
- package/modal/modal/alert/config/alert-config.d.ts.map +1 -0
- package/modal/modal/alert/index.d.ts +1 -0
- package/modal/modal/alert/index.d.ts.map +1 -0
- package/modal/modal/footer/modal-footer.component.d.ts +1 -0
- package/modal/modal/footer/modal-footer.component.d.ts.map +1 -0
- package/modal/modal/index.d.ts +1 -0
- package/modal/modal/index.d.ts.map +1 -0
- package/modal/modal/modal-component/modal.component.d.ts +1 -0
- package/modal/modal/modal-component/modal.component.d.ts.map +1 -0
- package/modal/modal/services/action-sheet.helper.d.ts +1 -0
- package/modal/modal/services/action-sheet.helper.d.ts.map +1 -0
- package/modal/modal/services/alert.helper.d.ts +1 -0
- package/modal/modal/services/alert.helper.d.ts.map +1 -0
- package/modal/modal/services/can-dismiss-modal-guard.d.ts +1 -0
- package/modal/modal/services/can-dismiss-modal-guard.d.ts.map +1 -0
- package/modal/modal/services/can-dismiss.helper.d.ts +1 -0
- package/modal/modal/services/can-dismiss.helper.d.ts.map +1 -0
- package/modal/modal/services/index.d.ts +1 -0
- package/modal/modal/services/index.d.ts.map +1 -0
- package/modal/modal/services/modal-animation-builder.service.d.ts +1 -0
- package/modal/modal/services/modal-animation-builder.service.d.ts.map +1 -0
- package/modal/modal/services/modal.controller.d.ts +1 -0
- package/modal/modal/services/modal.controller.d.ts.map +1 -0
- package/modal/modal/services/modal.helper.d.ts +1 -0
- package/modal/modal/services/modal.helper.d.ts.map +1 -0
- package/modal/modal-navigation.service.d.ts +1 -0
- package/modal/modal-navigation.service.d.ts.map +1 -0
- package/modal/modal-wrapper/compact/index.d.ts +1 -0
- package/modal/modal-wrapper/compact/index.d.ts.map +1 -0
- package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +1 -0
- package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts.map +1 -0
- package/modal/modal-wrapper/config/drawer-supplementary-action.d.ts +1 -0
- package/modal/modal-wrapper/config/drawer-supplementary-action.d.ts.map +1 -0
- package/modal/modal-wrapper/config/index.d.ts +1 -0
- package/modal/modal-wrapper/config/index.d.ts.map +1 -0
- package/modal/modal-wrapper/config/modal-config.d.ts +1 -0
- package/modal/modal-wrapper/config/modal-config.d.ts.map +1 -0
- package/modal/modal-wrapper/config/modal-config.helper.d.ts +1 -0
- package/modal/modal-wrapper/config/modal-config.helper.d.ts.map +1 -0
- package/modal/modal-wrapper/index.d.ts +1 -0
- package/modal/modal-wrapper/index.d.ts.map +1 -0
- package/modal/modal-wrapper/modal-elements-mover.delegate.d.ts +1 -0
- package/modal/modal-wrapper/modal-elements-mover.delegate.d.ts.map +1 -0
- package/modal/modal-wrapper/modal-wrapper.component.d.ts +1 -0
- package/modal/modal-wrapper/modal-wrapper.component.d.ts.map +1 -0
- package/modal/modal.interfaces.d.ts +1 -0
- package/modal/modal.interfaces.d.ts.map +1 -0
- package/modal/public_api.d.ts +1 -0
- package/modal/public_api.d.ts.map +1 -0
- package/package.json +11 -118
- package/page/index.d.ts +1 -0
- package/page/kirbydesign-designsystem-page.d.ts.map +1 -0
- package/page/page-footer/page-footer.component.d.ts +1 -0
- package/page/page-footer/page-footer.component.d.ts.map +1 -0
- package/page/page.component.d.ts +1 -0
- package/page/page.component.d.ts.map +1 -0
- package/page/page.module.d.ts +1 -0
- package/page/page.module.d.ts.map +1 -0
- package/page/public_api.d.ts +1 -0
- package/page/public_api.d.ts.map +1 -0
- package/popover/index.d.ts +1 -0
- package/popover/kirbydesign-designsystem-popover.d.ts.map +1 -0
- package/popover/popover.component.d.ts +1 -0
- package/popover/popover.component.d.ts.map +1 -0
- package/popover/public_api.d.ts +1 -0
- package/popover/public_api.d.ts.map +1 -0
- package/progress-circle/index.d.ts +1 -0
- package/progress-circle/kirbydesign-designsystem-progress-circle.d.ts.map +1 -0
- package/progress-circle/progress-circle-ring.component.d.ts +1 -0
- package/progress-circle/progress-circle-ring.component.d.ts.map +1 -0
- package/progress-circle/progress-circle.component.d.ts +1 -0
- package/progress-circle/progress-circle.component.d.ts.map +1 -0
- package/progress-circle/public_api.d.ts +1 -0
- package/progress-circle/public_api.d.ts.map +1 -0
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -0
- package/radio/index.d.ts +1 -0
- package/radio/kirbydesign-designsystem-radio.d.ts.map +1 -0
- package/radio/public_api.d.ts +1 -0
- package/radio/public_api.d.ts.map +1 -0
- package/radio/radio-group/radio-group.component.d.ts +1 -0
- package/radio/radio-group/radio-group.component.d.ts.map +1 -0
- package/radio/radio-module.d.ts +1 -0
- package/radio/radio-module.d.ts.map +1 -0
- package/radio/radio.component.d.ts +1 -0
- package/radio/radio.component.d.ts.map +1 -0
- package/range/index.d.ts +1 -0
- package/range/kirbydesign-designsystem-range.d.ts.map +1 -0
- package/range/public_api.d.ts +1 -0
- package/range/public_api.d.ts.map +1 -0
- package/range/range.component.d.ts +1 -0
- package/range/range.component.d.ts.map +1 -0
- package/reorder-list/index.d.ts +1 -0
- package/reorder-list/kirbydesign-designsystem-reorder-list.d.ts.map +1 -0
- package/reorder-list/public_api.d.ts +1 -0
- package/reorder-list/public_api.d.ts.map +1 -0
- package/reorder-list/reorder-event.d.ts +1 -0
- package/reorder-list/reorder-event.d.ts.map +1 -0
- package/reorder-list/reorder-list.component.d.ts +1 -0
- package/reorder-list/reorder-list.component.d.ts.map +1 -0
- package/router-outlet/index.d.ts +1 -0
- package/router-outlet/kirbydesign-designsystem-router-outlet.d.ts.map +1 -0
- package/router-outlet/public_api.d.ts +1 -0
- package/router-outlet/public_api.d.ts.map +1 -0
- package/router-outlet/router-outlet.component.d.ts +1 -0
- package/router-outlet/router-outlet.component.d.ts.map +1 -0
- package/router-outlet/router-outlet.module.d.ts +1 -0
- package/router-outlet/router-outlet.module.d.ts.map +1 -0
- package/section-header/index.d.ts +1 -0
- package/section-header/kirbydesign-designsystem-section-header.d.ts.map +1 -0
- package/section-header/public_api.d.ts +1 -0
- package/section-header/public_api.d.ts.map +1 -0
- package/section-header/section-header.component.d.ts +1 -0
- package/section-header/section-header.component.d.ts.map +1 -0
- package/shared/component-configuration.d.ts +1 -0
- package/shared/component-configuration.d.ts.map +1 -0
- package/shared/component-loader.directive.d.ts +1 -0
- package/shared/component-loader.directive.d.ts.map +1 -0
- package/shared/controls/label-helpers.d.ts +1 -0
- package/shared/controls/label-helpers.d.ts.map +1 -0
- package/shared/dynamic-component.d.ts +1 -0
- package/shared/dynamic-component.d.ts.map +1 -0
- package/shared/fit-heading/fit-heading.directive.d.ts +1 -0
- package/shared/fit-heading/fit-heading.directive.d.ts.map +1 -0
- package/shared/fit-heading/index.d.ts +1 -0
- package/shared/fit-heading/index.d.ts.map +1 -0
- package/shared/floating/floating.directive.d.ts +1 -0
- package/shared/floating/floating.directive.d.ts.map +1 -0
- package/shared/floating/index.d.ts +1 -0
- package/shared/floating/kirbydesign-designsystem-shared-floating.d.ts.map +1 -0
- package/shared/floating/public_api.d.ts +1 -0
- package/shared/floating/public_api.d.ts.map +1 -0
- package/shared/index.d.ts +1 -0
- package/shared/kirbydesign-designsystem-shared.d.ts.map +1 -0
- package/shared/portal/index.d.ts +1 -0
- package/shared/portal/kirbydesign-designsystem-shared-portal.d.ts.map +1 -0
- package/shared/portal/portal.directive.d.ts +1 -0
- package/shared/portal/portal.directive.d.ts.map +1 -0
- package/shared/portal/public_api.d.ts +1 -0
- package/shared/portal/public_api.d.ts.map +1 -0
- package/shared/public_api.d.ts +1 -0
- package/shared/public_api.d.ts.map +1 -0
- package/shared/resize-observer/resize-observer.factory.d.ts +1 -0
- package/shared/resize-observer/resize-observer.factory.d.ts.map +1 -0
- package/shared/resize-observer/resize-observer.service.d.ts +1 -0
- package/shared/resize-observer/resize-observer.service.d.ts.map +1 -0
- package/shared/theme-color/theme-color.directive.d.ts +1 -0
- package/shared/theme-color/theme-color.directive.d.ts.map +1 -0
- package/shared/translation/translation.interface.d.ts +1 -0
- package/shared/translation/translation.interface.d.ts.map +1 -0
- package/shared/translation/translation.service.d.ts +1 -0
- package/shared/translation/translation.service.d.ts.map +1 -0
- package/shared/translation/translations/da.d.ts +1 -0
- package/shared/translation/translations/da.d.ts.map +1 -0
- package/shared/translation/translations/en.d.ts +1 -0
- package/shared/translation/translations/en.d.ts.map +1 -0
- package/slide/index.d.ts +1 -0
- package/slide/kirbydesign-designsystem-slide.d.ts.map +1 -0
- package/slide/public_api.d.ts +1 -0
- package/slide/public_api.d.ts.map +1 -0
- package/slide/slide-stretch-height.directive.d.ts +1 -0
- package/slide/slide-stretch-height.directive.d.ts.map +1 -0
- package/slide/slide.directive.d.ts +1 -0
- package/slide/slide.directive.d.ts.map +1 -0
- package/slide/slide.module.d.ts +1 -0
- package/slide/slide.module.d.ts.map +1 -0
- package/slide/slides.component.d.ts +1 -0
- package/slide/slides.component.d.ts.map +1 -0
- package/slide-button/index.d.ts +1 -0
- package/slide-button/kirbydesign-designsystem-slide-button.d.ts.map +1 -0
- package/slide-button/public_api.d.ts +1 -0
- package/slide-button/public_api.d.ts.map +1 -0
- package/slide-button/slide-button.component.d.ts +1 -0
- package/slide-button/slide-button.component.d.ts.map +1 -0
- package/spinner/index.d.ts +1 -0
- package/spinner/kirbydesign-designsystem-spinner.d.ts.map +1 -0
- package/spinner/public_api.d.ts +1 -0
- package/spinner/public_api.d.ts.map +1 -0
- package/spinner/spinner.component.d.ts +1 -0
- package/spinner/spinner.component.d.ts.map +1 -0
- package/spinner/spinner.module.d.ts +1 -0
- package/spinner/spinner.module.d.ts.map +1 -0
- package/tab-navigation/index.d.ts +1 -0
- package/tab-navigation/kirbydesign-designsystem-tab-navigation.d.ts.map +1 -0
- package/tab-navigation/public_api.d.ts +1 -0
- package/tab-navigation/public_api.d.ts.map +1 -0
- package/tab-navigation/tab-navigation/tab-navigation.component.d.ts +1 -0
- package/tab-navigation/tab-navigation/tab-navigation.component.d.ts.map +1 -0
- package/tab-navigation/tab-navigation-item/tab-navigation-item.component.d.ts +1 -0
- package/tab-navigation/tab-navigation-item/tab-navigation-item.component.d.ts.map +1 -0
- package/tab-navigation/tab-navigation.module.d.ts +1 -0
- package/tab-navigation/tab-navigation.module.d.ts.map +1 -0
- package/tabs/index.d.ts +1 -0
- package/tabs/kirbydesign-designsystem-tabs.d.ts.map +1 -0
- package/tabs/public_api.d.ts +1 -0
- package/tabs/public_api.d.ts.map +1 -0
- package/tabs/tab-button/tab-button.component.d.ts +1 -0
- package/tabs/tab-button/tab-button.component.d.ts.map +1 -0
- package/tabs/tab-button/tab-button.events.d.ts +1 -0
- package/tabs/tab-button/tab-button.events.d.ts.map +1 -0
- package/tabs/tabs.component.d.ts +1 -0
- package/tabs/tabs.component.d.ts.map +1 -0
- package/tabs/tabs.module.d.ts +1 -0
- package/tabs/tabs.module.d.ts.map +1 -0
- package/tabs/tabs.service.d.ts +1 -0
- package/tabs/tabs.service.d.ts.map +1 -0
- package/testing/element-css-custom-matchers.d.ts +1 -0
- package/testing/element-css-custom-matchers.d.ts.map +1 -0
- package/testing/index.d.ts +1 -0
- package/testing/kirbydesign-designsystem-testing.d.ts.map +1 -0
- package/testing/public_api.d.ts +1 -0
- package/testing/public_api.d.ts.map +1 -0
- package/testing/test-helper.d.ts +1 -0
- package/testing/test-helper.d.ts.map +1 -0
- package/testing-base/index.d.ts +1 -0
- package/testing-base/kirbydesign-designsystem-testing-base.d.ts.map +1 -0
- package/testing-base/lib/components/index.d.ts +1 -0
- package/testing-base/lib/components/index.d.ts.map +1 -0
- package/testing-base/lib/components/mock.accordion-item.component.d.ts +2 -1
- package/testing-base/lib/components/mock.accordion-item.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.action-group.component.d.ts +2 -1
- package/testing-base/lib/components/mock.action-group.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.action-sheet.component.d.ts +2 -1
- package/testing-base/lib/components/mock.action-sheet.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.alert.component.d.ts +2 -1
- package/testing-base/lib/components/mock.alert.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.avatar.component.d.ts +2 -1
- package/testing-base/lib/components/mock.avatar.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.badge.component.d.ts +2 -1
- package/testing-base/lib/components/mock.badge.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.base-chart.component.d.ts +2 -1
- package/testing-base/lib/components/mock.base-chart.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.button.component.d.ts +2 -1
- package/testing-base/lib/components/mock.button.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.calendar.component.d.ts +2 -1
- package/testing-base/lib/components/mock.calendar.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.card-footer.component.d.ts +2 -1
- package/testing-base/lib/components/mock.card-footer.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.card-header.component.d.ts +2 -1
- package/testing-base/lib/components/mock.card-header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.card.component.d.ts +2 -1
- package/testing-base/lib/components/mock.card.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.chart.component.d.ts +2 -1
- package/testing-base/lib/components/mock.chart.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.checkbox.component.d.ts +2 -1
- package/testing-base/lib/components/mock.checkbox.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.divider.component.d.ts +2 -1
- package/testing-base/lib/components/mock.divider.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.dropdown.component.d.ts +2 -1
- package/testing-base/lib/components/mock.dropdown.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.empty-state.component.d.ts +2 -1
- package/testing-base/lib/components/mock.empty-state.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.fab-sheet.component.d.ts +2 -1
- package/testing-base/lib/components/mock.fab-sheet.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.flag.component.d.ts +2 -1
- package/testing-base/lib/components/mock.flag.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.form-field-message.component.d.ts +2 -1
- package/testing-base/lib/components/mock.form-field-message.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.form-field.component.d.ts +2 -1
- package/testing-base/lib/components/mock.form-field.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.header.component.d.ts +4 -3
- package/testing-base/lib/components/mock.header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.icon.component.d.ts +2 -1
- package/testing-base/lib/components/mock.icon.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.input-counter.component.d.ts +2 -1
- package/testing-base/lib/components/mock.input-counter.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.input.component.d.ts +2 -1
- package/testing-base/lib/components/mock.input.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.item-group.component.d.ts +2 -1
- package/testing-base/lib/components/mock.item-group.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.item-sliding.component.d.ts +2 -1
- package/testing-base/lib/components/mock.item-sliding.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.item.component.d.ts +2 -1
- package/testing-base/lib/components/mock.item.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.kirby-app.component.d.ts +2 -1
- package/testing-base/lib/components/mock.kirby-app.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.label.component.d.ts +2 -1
- package/testing-base/lib/components/mock.label.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list-experimental.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list-experimental.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list-header.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list-header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list-item.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list-item.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list-section-header.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list-section-header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.list.component.d.ts +2 -1
- package/testing-base/lib/components/mock.list.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.loading-overlay.component.d.ts +2 -1
- package/testing-base/lib/components/mock.loading-overlay.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.menu.component.d.ts +2 -1
- package/testing-base/lib/components/mock.menu.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.modal-compact-wrapper.component.d.ts +2 -1
- package/testing-base/lib/components/mock.modal-compact-wrapper.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.modal-footer.component.d.ts +2 -1
- package/testing-base/lib/components/mock.modal-footer.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.modal-wrapper.component.d.ts +2 -1
- package/testing-base/lib/components/mock.modal-wrapper.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.page-footer.component.d.ts +2 -1
- package/testing-base/lib/components/mock.page-footer.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.page.component.d.ts +12 -11
- package/testing-base/lib/components/mock.page.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.popover.component.d.ts +2 -1
- package/testing-base/lib/components/mock.popover.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.progress-circle-ring.component.d.ts +2 -1
- package/testing-base/lib/components/mock.progress-circle-ring.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.progress-circle.component.d.ts +2 -1
- package/testing-base/lib/components/mock.progress-circle.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.radio-group.component.d.ts +2 -1
- package/testing-base/lib/components/mock.radio-group.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.radio.component.d.ts +2 -1
- package/testing-base/lib/components/mock.radio.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.range.component.d.ts +2 -1
- package/testing-base/lib/components/mock.range.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.reorder-list.component.d.ts +2 -1
- package/testing-base/lib/components/mock.reorder-list.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.router-outlet.component.d.ts +2 -1
- package/testing-base/lib/components/mock.router-outlet.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.section-header.component.d.ts +2 -1
- package/testing-base/lib/components/mock.section-header.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.segmented-control.component.d.ts +2 -1
- package/testing-base/lib/components/mock.segmented-control.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.slide-button.component.d.ts +2 -1
- package/testing-base/lib/components/mock.slide-button.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.slides.component.d.ts +2 -1
- package/testing-base/lib/components/mock.slides.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.spinner.component.d.ts +2 -1
- package/testing-base/lib/components/mock.spinner.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.stock-chart.component.d.ts +2 -1
- package/testing-base/lib/components/mock.stock-chart.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.tab-button.component.d.ts +2 -1
- package/testing-base/lib/components/mock.tab-button.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.tab-navigation-item.component.d.ts +2 -1
- package/testing-base/lib/components/mock.tab-navigation-item.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.tab-navigation.component.d.ts +2 -1
- package/testing-base/lib/components/mock.tab-navigation.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.tabs.component.d.ts +2 -1
- package/testing-base/lib/components/mock.tabs.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.textarea.component.d.ts +2 -1
- package/testing-base/lib/components/mock.textarea.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.toggle-button.component.d.ts +2 -1
- package/testing-base/lib/components/mock.toggle-button.component.d.ts.map +1 -0
- package/testing-base/lib/components/mock.toggle.component.d.ts +2 -1
- package/testing-base/lib/components/mock.toggle.component.d.ts.map +1 -0
- package/testing-base/lib/directives/index.d.ts +1 -0
- package/testing-base/lib/directives/index.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.accordion.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.accordion.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.affix.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.affix.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.card-as-button.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.card-as-button.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.component-loader.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.component-loader.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.date-input.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.date-input.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.decimal-mask.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.decimal-mask.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.fit-heading.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.fit-heading.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.floating.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.floating.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.infinite-scroll.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.infinite-scroll.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.key-handler.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.key-handler.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.list-item-color.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.list-item-color.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.list.directive.d.ts +5 -4
- package/testing-base/lib/directives/mock.list.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.modal-router-link.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.modal-router-link.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.portal.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.portal.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.slide.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.slide.directive.d.ts.map +1 -0
- package/testing-base/lib/directives/mock.theme-color.directive.d.ts +2 -1
- package/testing-base/lib/directives/mock.theme-color.directive.d.ts.map +1 -0
- package/testing-base/lib/index.d.ts +1 -0
- package/testing-base/lib/index.d.ts.map +1 -0
- package/testing-base/lib/kirby-testing-base.module.d.ts +2 -1
- package/testing-base/lib/kirby-testing-base.module.d.ts.map +1 -0
- package/testing-base/lib/mock-components.d.ts +1 -0
- package/testing-base/lib/mock-components.d.ts.map +1 -0
- package/testing-base/lib/mock-directives.d.ts +1 -0
- package/testing-base/lib/mock-directives.d.ts.map +1 -0
- package/testing-base/public_api.d.ts +1 -0
- package/testing-base/public_api.d.ts.map +1 -0
- package/testing-jasmine/index.d.ts +1 -0
- package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.d.ts.map +1 -0
- package/testing-jasmine/lib/kirby-testing.module.d.ts +1 -0
- package/testing-jasmine/lib/kirby-testing.module.d.ts.map +1 -0
- package/testing-jasmine/lib/mock-providers.d.ts +1 -0
- package/testing-jasmine/lib/mock-providers.d.ts.map +1 -0
- package/testing-jasmine/public_api.d.ts +1 -0
- package/testing-jasmine/public_api.d.ts.map +1 -0
- package/testing-jest/index.d.ts +1 -0
- package/testing-jest/kirbydesign-designsystem-testing-jest.d.ts.map +1 -0
- package/testing-jest/lib/kirby-testing.module.d.ts +1 -0
- package/testing-jest/lib/kirby-testing.module.d.ts.map +1 -0
- package/testing-jest/lib/mock-providers.d.ts +1 -0
- package/testing-jest/lib/mock-providers.d.ts.map +1 -0
- package/testing-jest/public_api.d.ts +1 -0
- package/testing-jest/public_api.d.ts.map +1 -0
- package/toast/config/toast-config.d.ts +1 -0
- package/toast/config/toast-config.d.ts.map +1 -0
- package/toast/index.d.ts +1 -0
- package/toast/kirbydesign-designsystem-toast.d.ts.map +1 -0
- package/toast/public_api.d.ts +1 -0
- package/toast/public_api.d.ts.map +1 -0
- package/toast/services/indexs.d.ts +1 -0
- package/toast/services/indexs.d.ts.map +1 -0
- package/toast/services/toast.controller.d.ts +1 -0
- package/toast/services/toast.controller.d.ts.map +1 -0
- package/toast/services/toast.helper.d.ts +1 -0
- package/toast/services/toast.helper.d.ts.map +1 -0
- package/toggle/index.d.ts +1 -0
- package/toggle/kirbydesign-designsystem-toggle.d.ts.map +1 -0
- package/toggle/public_api.d.ts +1 -0
- package/toggle/public_api.d.ts.map +1 -0
- package/toggle/toggle.component.d.ts +1 -0
- package/toggle/toggle.component.d.ts.map +1 -0
- package/toggle-button/index.d.ts +1 -0
- package/toggle-button/kirbydesign-designsystem-toggle-button.d.ts.map +1 -0
- package/toggle-button/public_api.d.ts +1 -0
- package/toggle-button/public_api.d.ts.map +1 -0
- package/toggle-button/toggle-button.component.d.ts +6 -1
- package/toggle-button/toggle-button.component.d.ts.map +1 -0
- package/toggle-button/toggle-button.module.d.ts +1 -0
- package/toggle-button/toggle-button.module.d.ts.map +1 -0
- package/types/event-listener-dispose-fn.d.ts +1 -0
- package/types/event-listener-dispose-fn.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/kirbydesign-designsystem-types.d.ts.map +1 -0
- package/types/public_api.d.ts +1 -0
- package/types/public_api.d.ts.map +1 -0
- package/types/unobserve-fn.d.ts +1 -0
- package/types/unobserve-fn.d.ts.map +1 -0
- package/types/window-ref.d.ts +1 -0
- package/types/window-ref.d.ts.map +1 -0
- package/esm2022/accordion/accordion-item.component.mjs +0 -85
- package/esm2022/accordion/accordion.directive.mjs +0 -14
- package/esm2022/accordion/accordion.module.mjs +0 -20
- package/esm2022/accordion/kirbydesign-designsystem-accordion.mjs +0 -5
- package/esm2022/accordion/public_api.mjs +0 -4
- package/esm2022/action-group/action-group.component.mjs +0 -131
- package/esm2022/action-group/kirbydesign-designsystem-action-group.mjs +0 -5
- package/esm2022/action-group/public_api.mjs +0 -2
- package/esm2022/avatar/avatar.component.mjs +0 -51
- package/esm2022/avatar/kirbydesign-designsystem-avatar.mjs +0 -5
- package/esm2022/avatar/public_api.mjs +0 -2
- package/esm2022/badge/badge.component.mjs +0 -38
- package/esm2022/badge/kirbydesign-designsystem-badge.mjs +0 -5
- package/esm2022/badge/public_api.mjs +0 -2
- package/esm2022/button/button.component.mjs +0 -158
- package/esm2022/button/kirbydesign-designsystem-button.mjs +0 -5
- package/esm2022/button/public_api.mjs +0 -2
- package/esm2022/calendar/calendar.component.mjs +0 -514
- package/esm2022/calendar/interfaces/calendar-day.mjs +0 -2
- package/esm2022/calendar/interfaces/calendar-year-navigator-config.mjs +0 -2
- package/esm2022/calendar/kirbydesign-designsystem-calendar.mjs +0 -5
- package/esm2022/calendar/public_api.mjs +0 -2
- package/esm2022/card/card-as-button/card-as-button.directive.mjs +0 -64
- package/esm2022/card/card-flag-level.mjs +0 -2
- package/esm2022/card/card-footer/card-footer.component.mjs +0 -19
- package/esm2022/card/card-header/card-header.component.mjs +0 -35
- package/esm2022/card/card.component.mjs +0 -78
- package/esm2022/card/card.module.mjs +0 -34
- package/esm2022/card/kirbydesign-designsystem-card.mjs +0 -5
- package/esm2022/card/public_api.mjs +0 -7
- package/esm2022/chart/chart/chart.component.mjs +0 -18
- package/esm2022/chart/chart/index.mjs +0 -2
- package/esm2022/chart/chart-config/chart-bar-config/chart-bar-config.mjs +0 -43
- package/esm2022/chart/chart-config/chart-base-config.mjs +0 -4
- package/esm2022/chart/chart-config/chart-stock-config/chart-stock-config.mjs +0 -153
- package/esm2022/chart/chart-config/chart-stock-config/data-label-position/data-label-position.mjs +0 -48
- package/esm2022/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.mjs +0 -37
- package/esm2022/chart/chart-config/chart-stock-config/vertical-line-plugin/vertical-line-plugin.model.mjs +0 -2
- package/esm2022/chart/charts.module.mjs +0 -19
- package/esm2022/chart/kirbydesign-designsystem-chart.mjs +0 -5
- package/esm2022/chart/public_api.mjs +0 -7
- package/esm2022/chart/shared/base-chart/base-chart.component.mjs +0 -124
- package/esm2022/chart/shared/base-chart/index.mjs +0 -2
- package/esm2022/chart/shared/chart-config-service/chart-config.service.mjs +0 -75
- package/esm2022/chart/shared/chart-config-service/configs/annotations.config.mjs +0 -32
- package/esm2022/chart/shared/chart-config-service/configs/global-defaults.config.mjs +0 -65
- package/esm2022/chart/shared/chart-config-service/configs/interaction-functions-extensions.config.mjs +0 -13
- package/esm2022/chart/shared/chart-config-service/configs/type.config.mjs +0 -207
- package/esm2022/chart/shared/chart-config-service/index.mjs +0 -2
- package/esm2022/chart/shared/chart-js-service/annotations.delegate.mjs +0 -35
- package/esm2022/chart/shared/chart-js-service/chart-js.service.mjs +0 -179
- package/esm2022/chart/shared/chart-js-service/chartjs-plugin-marker/chartjs-plugin-marker.mjs +0 -194
- package/esm2022/chart/shared/chart-js-service/configured-chart-js.mjs +0 -22
- package/esm2022/chart/shared/chart-js-service/index.mjs +0 -3
- package/esm2022/chart/shared/chart-js-service/test-utils.mjs +0 -167
- package/esm2022/chart/shared/charts.types.mjs +0 -4
- package/esm2022/chart/shared/index.mjs +0 -5
- package/esm2022/chart/stock-chart/index.mjs +0 -2
- package/esm2022/chart/stock-chart/stock-chart-js.service.mjs +0 -100
- package/esm2022/chart/stock-chart/stock-chart.component.mjs +0 -22
- package/esm2022/checkbox/checkbox.component.mjs +0 -166
- package/esm2022/checkbox/kirbydesign-designsystem-checkbox.mjs +0 -5
- package/esm2022/checkbox/public_api.mjs +0 -2
- package/esm2022/data-table/data-table.module.mjs +0 -24
- package/esm2022/data-table/kirbydesign-designsystem-data-table.mjs +0 -5
- package/esm2022/data-table/public_api.mjs +0 -3
- package/esm2022/data-table/sortable/sortable.component.mjs +0 -58
- package/esm2022/divider/divider.component.mjs +0 -14
- package/esm2022/divider/kirbydesign-designsystem-divider.mjs +0 -5
- package/esm2022/divider/public_api.mjs +0 -2
- package/esm2022/dropdown/dropdown.component.mjs +0 -611
- package/esm2022/dropdown/dropdown.module.mjs +0 -47
- package/esm2022/dropdown/dropdown.types.mjs +0 -12
- package/esm2022/dropdown/keyboard-handler.service.mjs +0 -50
- package/esm2022/dropdown/kirbydesign-designsystem-dropdown.mjs +0 -5
- package/esm2022/dropdown/public_api.mjs +0 -6
- package/esm2022/empty-state/empty-state.component.mjs +0 -69
- package/esm2022/empty-state/empty-state.module.mjs +0 -21
- package/esm2022/empty-state/kirbydesign-designsystem-empty-state.mjs +0 -5
- package/esm2022/empty-state/public_api.mjs +0 -3
- package/esm2022/fab-sheet/fab-sheet.component.mjs +0 -78
- package/esm2022/fab-sheet/kirbydesign-designsystem-fab-sheet.mjs +0 -5
- package/esm2022/fab-sheet/public_api.mjs +0 -2
- package/esm2022/flag/flag.component.mjs +0 -30
- package/esm2022/flag/kirbydesign-designsystem-flag.mjs +0 -5
- package/esm2022/flag/public_api.mjs +0 -2
- package/esm2022/form-field/directives/affix/affix.directive.mjs +0 -21
- package/esm2022/form-field/directives/date/date-input.directive.mjs +0 -129
- package/esm2022/form-field/directives/decimal-mask/decimal-mask.directive.mjs +0 -131
- package/esm2022/form-field/form-field-message/form-field-message.component.mjs +0 -18
- package/esm2022/form-field/form-field.component.mjs +0 -156
- package/esm2022/form-field/form-field.module.mjs +0 -24
- package/esm2022/form-field/input/input.component.mjs +0 -116
- package/esm2022/form-field/input-counter/input-counter.component.mjs +0 -35
- package/esm2022/form-field/kirbydesign-designsystem-form-field.mjs +0 -5
- package/esm2022/form-field/public_api.mjs +0 -10
- package/esm2022/form-field/textarea/textarea.component.mjs +0 -66
- package/esm2022/header/header.component.mjs +0 -158
- package/esm2022/header/header.module.mjs +0 -34
- package/esm2022/header/kirbydesign-designsystem-header.mjs +0 -5
- package/esm2022/header/public_api.mjs +0 -3
- package/esm2022/helpers/chart-config-has-type.mjs +0 -10
- package/esm2022/helpers/color-helper.mjs +0 -2
- package/esm2022/helpers/content-mutation-observer.mjs +0 -50
- package/esm2022/helpers/deep-copy.mjs +0 -52
- package/esm2022/helpers/design-token-helper.mjs +0 -2
- package/esm2022/helpers/element-ancestor-utils.mjs +0 -33
- package/esm2022/helpers/ionic-element-part-helper.mjs +0 -25
- package/esm2022/helpers/kirby-animation.mjs +0 -15
- package/esm2022/helpers/kirbydesign-designsystem-helpers.mjs +0 -5
- package/esm2022/helpers/line-clamp-helper.mjs +0 -31
- package/esm2022/helpers/merge-deep.mjs +0 -38
- package/esm2022/helpers/platform.service.mjs +0 -27
- package/esm2022/helpers/public_api.mjs +0 -17
- package/esm2022/helpers/scss/kirbydesign-designsystem-helpers-scss.mjs +0 -5
- package/esm2022/helpers/scss/public_api.mjs +0 -2
- package/esm2022/helpers/scss/scss-helper.mjs +0 -9
- package/esm2022/helpers/string-helper.mjs +0 -2
- package/esm2022/helpers/theme-color.type.mjs +0 -2
- package/esm2022/helpers/unique-id-generator.helper.mjs +0 -19
- package/esm2022/icon/icon-registry.service.mjs +0 -61
- package/esm2022/icon/icon-settings.mjs +0 -2
- package/esm2022/icon/icon.component.mjs +0 -62
- package/esm2022/icon/icon.module.mjs +0 -19
- package/esm2022/icon/kirby-icon-settings.mjs +0 -130
- package/esm2022/icon/kirbydesign-designsystem-icon.mjs +0 -5
- package/esm2022/icon/public_api.mjs +0 -6
- package/esm2022/item/item.component.mjs +0 -74
- package/esm2022/item/item.module.mjs +0 -22
- package/esm2022/item/kirbydesign-designsystem-item.mjs +0 -5
- package/esm2022/item/label/label.component.mjs +0 -23
- package/esm2022/item/public_api.mjs +0 -4
- package/esm2022/item-group/item-group.component.mjs +0 -18
- package/esm2022/item-group/kirbydesign-designsystem-item-group.mjs +0 -5
- package/esm2022/item-group/public_api.mjs +0 -2
- package/esm2022/item-sliding/item-sliding.component.mjs +0 -38
- package/esm2022/item-sliding/item-sliding.types.mjs +0 -2
- package/esm2022/item-sliding/kirbydesign-designsystem-item-sliding.mjs +0 -5
- package/esm2022/item-sliding/public_api.mjs +0 -3
- package/esm2022/kirby-app/kirby-app.component.mjs +0 -35
- package/esm2022/kirby-app/kirby-app.module.mjs +0 -19
- package/esm2022/kirby-app/kirbydesign-designsystem-kirby-app.mjs +0 -5
- package/esm2022/kirby-app/public_api.mjs +0 -3
- package/esm2022/kirby-ionic-module/kirby-ionic.module.mjs +0 -23
- package/esm2022/kirby-ionic-module/kirbydesign-designsystem-kirby-ionic-module.mjs +0 -5
- package/esm2022/kirby-ionic-module/public_api.mjs +0 -2
- package/esm2022/kirbydesign-designsystem.mjs +0 -5
- package/esm2022/lib/components/index.mjs +0 -3
- package/esm2022/lib/components/segmented-control/segment-item.mjs +0 -2
- package/esm2022/lib/components/segmented-control/segmented-control.component.mjs +0 -166
- package/esm2022/lib/directives/index.mjs +0 -3
- package/esm2022/lib/directives/key-handler/key-handler.directive.mjs +0 -28
- package/esm2022/lib/directives/modal-router-link/modal-router-link.directive.mjs +0 -35
- package/esm2022/lib/index.mjs +0 -49
- package/esm2022/lib/kirby.module.mjs +0 -339
- package/esm2022/list/directives/index.mjs +0 -4
- package/esm2022/list/directives/infinite-scroll.directive.mjs +0 -114
- package/esm2022/list/directives/list-item-color.directive.mjs +0 -30
- package/esm2022/list/directives/scroll.model.mjs +0 -2
- package/esm2022/list/helpers/index.mjs +0 -2
- package/esm2022/list/helpers/list-helper.mjs +0 -83
- package/esm2022/list/kirbydesign-designsystem-list.mjs +0 -5
- package/esm2022/list/list-experimental/index.mjs +0 -2
- package/esm2022/list/list-experimental/list-experimental.component.mjs +0 -24
- package/esm2022/list/list-header/index.mjs +0 -2
- package/esm2022/list/list-header/list-header.component.mjs +0 -12
- package/esm2022/list/list-item/index.mjs +0 -2
- package/esm2022/list/list-item/list-item.component.mjs +0 -129
- package/esm2022/list/list-section-header/index.mjs +0 -2
- package/esm2022/list/list-section-header/list-section-header.component.mjs +0 -13
- package/esm2022/list/list-swipe-action.mjs +0 -2
- package/esm2022/list/list-swipe-action.type.mjs +0 -2
- package/esm2022/list/list.component.mjs +0 -187
- package/esm2022/list/list.directive.mjs +0 -43
- package/esm2022/list/list.event.mjs +0 -2
- package/esm2022/list/list.module.mjs +0 -93
- package/esm2022/list/public_api.mjs +0 -12
- package/esm2022/loading-overlay/kirbydesign-designsystem-loading-overlay.mjs +0 -5
- package/esm2022/loading-overlay/loading-overlay.component.mjs +0 -26
- package/esm2022/loading-overlay/loading-overlay.service.mjs +0 -49
- package/esm2022/loading-overlay/public_api.mjs +0 -3
- package/esm2022/menu/kirbydesign-designsystem-menu.mjs +0 -5
- package/esm2022/menu/menu.component.mjs +0 -294
- package/esm2022/menu/public_api.mjs +0 -2
- package/esm2022/modal/kirbydesign-designsystem-modal.mjs +0 -5
- package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +0 -45
- package/esm2022/modal/modal/action-sheet/config/action-sheet-config.mjs +0 -2
- package/esm2022/modal/modal/action-sheet/config/action-sheet-item.mjs +0 -2
- package/esm2022/modal/modal/action-sheet/index.mjs +0 -4
- package/esm2022/modal/modal/alert/alert.component.mjs +0 -76
- package/esm2022/modal/modal/alert/config/alert-config.mjs +0 -2
- package/esm2022/modal/modal/alert/index.mjs +0 -3
- package/esm2022/modal/modal/footer/modal-footer.component.mjs +0 -38
- package/esm2022/modal/modal/index.mjs +0 -7
- package/esm2022/modal/modal/modal-component/modal.component.mjs +0 -152
- package/esm2022/modal/modal/services/action-sheet.helper.mjs +0 -46
- package/esm2022/modal/modal/services/alert.helper.mjs +0 -56
- package/esm2022/modal/modal/services/can-dismiss-modal-guard.mjs +0 -31
- package/esm2022/modal/modal/services/can-dismiss.helper.mjs +0 -29
- package/esm2022/modal/modal/services/index.mjs +0 -7
- package/esm2022/modal/modal/services/modal-animation-builder.service.mjs +0 -268
- package/esm2022/modal/modal/services/modal.controller.mjs +0 -121
- package/esm2022/modal/modal/services/modal.helper.mjs +0 -118
- package/esm2022/modal/modal-navigation.service.mjs +0 -265
- package/esm2022/modal/modal-wrapper/compact/index.mjs +0 -2
- package/esm2022/modal/modal-wrapper/compact/modal-compact-wrapper.component.mjs +0 -89
- package/esm2022/modal/modal-wrapper/config/drawer-supplementary-action.mjs +0 -3
- package/esm2022/modal/modal-wrapper/config/index.mjs +0 -4
- package/esm2022/modal/modal-wrapper/config/modal-config.helper.mjs +0 -3
- package/esm2022/modal/modal-wrapper/config/modal-config.mjs +0 -2
- package/esm2022/modal/modal-wrapper/index.mjs +0 -4
- package/esm2022/modal/modal-wrapper/modal-elements-mover.delegate.mjs +0 -62
- package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +0 -543
- package/esm2022/modal/modal.interfaces.mjs +0 -50
- package/esm2022/modal/public_api.mjs +0 -5
- package/esm2022/page/kirbydesign-designsystem-page.mjs +0 -5
- package/esm2022/page/page-footer/page-footer.component.mjs +0 -35
- package/esm2022/page/page.component.mjs +0 -734
- package/esm2022/page/page.module.mjs +0 -107
- package/esm2022/page/public_api.mjs +0 -4
- package/esm2022/popover/kirbydesign-designsystem-popover.mjs +0 -5
- package/esm2022/popover/popover.component.mjs +0 -159
- package/esm2022/popover/public_api.mjs +0 -2
- package/esm2022/progress-circle/kirbydesign-designsystem-progress-circle.mjs +0 -5
- package/esm2022/progress-circle/progress-circle-ring.component.mjs +0 -62
- package/esm2022/progress-circle/progress-circle.component.mjs +0 -88
- package/esm2022/progress-circle/public_api.mjs +0 -3
- package/esm2022/public-api.mjs +0 -2
- package/esm2022/radio/kirbydesign-designsystem-radio.mjs +0 -5
- package/esm2022/radio/public_api.mjs +0 -4
- package/esm2022/radio/radio-group/radio-group.component.mjs +0 -252
- package/esm2022/radio/radio-module.mjs +0 -21
- package/esm2022/radio/radio.component.mjs +0 -80
- package/esm2022/range/kirbydesign-designsystem-range.mjs +0 -5
- package/esm2022/range/public_api.mjs +0 -2
- package/esm2022/range/range.component.mjs +0 -136
- package/esm2022/reorder-list/kirbydesign-designsystem-reorder-list.mjs +0 -5
- package/esm2022/reorder-list/public_api.mjs +0 -3
- package/esm2022/reorder-list/reorder-event.mjs +0 -14
- package/esm2022/reorder-list/reorder-list.component.mjs +0 -80
- package/esm2022/router-outlet/kirbydesign-designsystem-router-outlet.mjs +0 -5
- package/esm2022/router-outlet/public_api.mjs +0 -6
- package/esm2022/router-outlet/router-outlet.component.mjs +0 -19
- package/esm2022/router-outlet/router-outlet.module.mjs +0 -19
- package/esm2022/section-header/kirbydesign-designsystem-section-header.mjs +0 -5
- package/esm2022/section-header/public_api.mjs +0 -2
- package/esm2022/section-header/section-header.component.mjs +0 -13
- package/esm2022/shared/component-configuration.mjs +0 -2
- package/esm2022/shared/component-loader.directive.mjs +0 -36
- package/esm2022/shared/controls/label-helpers.mjs +0 -23
- package/esm2022/shared/dynamic-component.mjs +0 -2
- package/esm2022/shared/fit-heading/fit-heading.directive.mjs +0 -107
- package/esm2022/shared/fit-heading/index.mjs +0 -2
- package/esm2022/shared/floating/floating.directive.mjs +0 -385
- package/esm2022/shared/floating/kirbydesign-designsystem-shared-floating.mjs +0 -5
- package/esm2022/shared/floating/public_api.mjs +0 -2
- package/esm2022/shared/kirbydesign-designsystem-shared.mjs +0 -5
- package/esm2022/shared/portal/kirbydesign-designsystem-shared-portal.mjs +0 -5
- package/esm2022/shared/portal/portal.directive.mjs +0 -78
- package/esm2022/shared/portal/public_api.mjs +0 -2
- package/esm2022/shared/public_api.mjs +0 -10
- package/esm2022/shared/resize-observer/resize-observer.factory.mjs +0 -18
- package/esm2022/shared/resize-observer/resize-observer.service.mjs +0 -50
- package/esm2022/shared/theme-color/theme-color.directive.mjs +0 -127
- package/esm2022/shared/translation/translation.interface.mjs +0 -2
- package/esm2022/shared/translation/translation.service.mjs +0 -37
- package/esm2022/shared/translation/translations/da.mjs +0 -11
- package/esm2022/shared/translation/translations/en.mjs +0 -11
- package/esm2022/slide/kirbydesign-designsystem-slide.mjs +0 -5
- package/esm2022/slide/public_api.mjs +0 -5
- package/esm2022/slide/slide-stretch-height.directive.mjs +0 -19
- package/esm2022/slide/slide.directive.mjs +0 -13
- package/esm2022/slide/slide.module.mjs +0 -24
- package/esm2022/slide/slides.component.mjs +0 -113
- package/esm2022/slide-button/kirbydesign-designsystem-slide-button.mjs +0 -5
- package/esm2022/slide-button/public_api.mjs +0 -2
- package/esm2022/slide-button/slide-button.component.mjs +0 -138
- package/esm2022/spinner/kirbydesign-designsystem-spinner.mjs +0 -5
- package/esm2022/spinner/public_api.mjs +0 -3
- package/esm2022/spinner/spinner.component.mjs +0 -11
- package/esm2022/spinner/spinner.module.mjs +0 -19
- package/esm2022/tab-navigation/kirbydesign-designsystem-tab-navigation.mjs +0 -5
- package/esm2022/tab-navigation/public_api.mjs +0 -4
- package/esm2022/tab-navigation/tab-navigation/tab-navigation.component.mjs +0 -136
- package/esm2022/tab-navigation/tab-navigation-item/tab-navigation-item.component.mjs +0 -20
- package/esm2022/tab-navigation/tab-navigation.module.mjs +0 -19
- package/esm2022/tabs/kirbydesign-designsystem-tabs.mjs +0 -5
- package/esm2022/tabs/public_api.mjs +0 -6
- package/esm2022/tabs/tab-button/tab-button.component.mjs +0 -32
- package/esm2022/tabs/tab-button/tab-button.events.mjs +0 -2
- package/esm2022/tabs/tabs.component.mjs +0 -31
- package/esm2022/tabs/tabs.module.mjs +0 -23
- package/esm2022/tabs/tabs.service.mjs +0 -26
- package/esm2022/testing/element-css-custom-matchers.mjs +0 -94
- package/esm2022/testing/kirbydesign-designsystem-testing.mjs +0 -5
- package/esm2022/testing/public_api.mjs +0 -3
- package/esm2022/testing/test-helper.mjs +0 -155
- package/esm2022/testing-base/kirbydesign-designsystem-testing-base.mjs +0 -5
- package/esm2022/testing-base/lib/components/index.mjs +0 -65
- package/esm2022/testing-base/lib/components/mock.accordion-item.component.mjs +0 -37
- package/esm2022/testing-base/lib/components/mock.action-group.component.mjs +0 -35
- package/esm2022/testing-base/lib/components/mock.action-sheet.component.mjs +0 -49
- package/esm2022/testing-base/lib/components/mock.alert.component.mjs +0 -43
- package/esm2022/testing-base/lib/components/mock.avatar.component.mjs +0 -45
- package/esm2022/testing-base/lib/components/mock.badge.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.base-chart.component.mjs +0 -43
- package/esm2022/testing-base/lib/components/mock.button.component.mjs +0 -44
- package/esm2022/testing-base/lib/components/mock.calendar.component.mjs +0 -76
- package/esm2022/testing-base/lib/components/mock.card-footer.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.card-header.component.mjs +0 -39
- package/esm2022/testing-base/lib/components/mock.card.component.mjs +0 -41
- package/esm2022/testing-base/lib/components/mock.chart.component.mjs +0 -34
- package/esm2022/testing-base/lib/components/mock.checkbox.component.mjs +0 -46
- package/esm2022/testing-base/lib/components/mock.divider.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.dropdown.component.mjs +0 -60
- package/esm2022/testing-base/lib/components/mock.empty-state.component.mjs +0 -35
- package/esm2022/testing-base/lib/components/mock.fab-sheet.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.flag.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.form-field-message.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.form-field.component.mjs +0 -36
- package/esm2022/testing-base/lib/components/mock.header.component.mjs +0 -87
- package/esm2022/testing-base/lib/components/mock.icon.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.input-counter.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.input.component.mjs +0 -48
- package/esm2022/testing-base/lib/components/mock.item-group.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.item-sliding.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.item.component.mjs +0 -41
- package/esm2022/testing-base/lib/components/mock.kirby-app.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.label.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.list-experimental.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.list-header.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.list-item.component.mjs +0 -51
- package/esm2022/testing-base/lib/components/mock.list-section-header.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.list.component.mjs +0 -65
- package/esm2022/testing-base/lib/components/mock.loading-overlay.component.mjs +0 -35
- package/esm2022/testing-base/lib/components/mock.menu.component.mjs +0 -54
- package/esm2022/testing-base/lib/components/mock.modal-compact-wrapper.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.modal-footer.component.mjs +0 -33
- package/esm2022/testing-base/lib/components/mock.modal-wrapper.component.mjs +0 -37
- package/esm2022/testing-base/lib/components/mock.page-footer.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.page.component.mjs +0 -289
- package/esm2022/testing-base/lib/components/mock.popover.component.mjs +0 -38
- package/esm2022/testing-base/lib/components/mock.progress-circle-ring.component.mjs +0 -39
- package/esm2022/testing-base/lib/components/mock.progress-circle.component.mjs +0 -35
- package/esm2022/testing-base/lib/components/mock.radio-group.component.mjs +0 -48
- package/esm2022/testing-base/lib/components/mock.radio.component.mjs +0 -37
- package/esm2022/testing-base/lib/components/mock.range.component.mjs +0 -66
- package/esm2022/testing-base/lib/components/mock.reorder-list.component.mjs +0 -43
- package/esm2022/testing-base/lib/components/mock.router-outlet.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.section-header.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.segmented-control.component.mjs +0 -49
- package/esm2022/testing-base/lib/components/mock.slide-button.component.mjs +0 -41
- package/esm2022/testing-base/lib/components/mock.slides.component.mjs +0 -41
- package/esm2022/testing-base/lib/components/mock.spinner.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.stock-chart.component.mjs +0 -34
- package/esm2022/testing-base/lib/components/mock.tab-button.component.mjs +0 -36
- package/esm2022/testing-base/lib/components/mock.tab-navigation-item.component.mjs +0 -31
- package/esm2022/testing-base/lib/components/mock.tab-navigation.component.mjs +0 -34
- package/esm2022/testing-base/lib/components/mock.tabs.component.mjs +0 -29
- package/esm2022/testing-base/lib/components/mock.textarea.component.mjs +0 -42
- package/esm2022/testing-base/lib/components/mock.toggle-button.component.mjs +0 -36
- package/esm2022/testing-base/lib/components/mock.toggle.component.mjs +0 -38
- package/esm2022/testing-base/lib/directives/index.mjs +0 -18
- package/esm2022/testing-base/lib/directives/mock.accordion.directive.mjs +0 -27
- package/esm2022/testing-base/lib/directives/mock.affix.directive.mjs +0 -30
- package/esm2022/testing-base/lib/directives/mock.card-as-button.directive.mjs +0 -27
- package/esm2022/testing-base/lib/directives/mock.component-loader.directive.mjs +0 -31
- package/esm2022/testing-base/lib/directives/mock.date-input.directive.mjs +0 -27
- package/esm2022/testing-base/lib/directives/mock.decimal-mask.directive.mjs +0 -41
- package/esm2022/testing-base/lib/directives/mock.fit-heading.directive.mjs +0 -30
- package/esm2022/testing-base/lib/directives/mock.floating.directive.mjs +0 -69
- package/esm2022/testing-base/lib/directives/mock.infinite-scroll.directive.mjs +0 -33
- package/esm2022/testing-base/lib/directives/mock.key-handler.directive.mjs +0 -27
- package/esm2022/testing-base/lib/directives/mock.list-item-color.directive.mjs +0 -30
- package/esm2022/testing-base/lib/directives/mock.list.directive.mjs +0 -89
- package/esm2022/testing-base/lib/directives/mock.modal-router-link.directive.mjs +0 -33
- package/esm2022/testing-base/lib/directives/mock.portal.directive.mjs +0 -28
- package/esm2022/testing-base/lib/directives/mock.slide.directive.mjs +0 -26
- package/esm2022/testing-base/lib/directives/mock.theme-color.directive.mjs +0 -34
- package/esm2022/testing-base/lib/index.mjs +0 -4
- package/esm2022/testing-base/lib/kirby-testing-base.module.mjs +0 -96
- package/esm2022/testing-base/lib/mock-components.mjs +0 -142
- package/esm2022/testing-base/lib/mock-directives.mjs +0 -39
- package/esm2022/testing-base/public_api.mjs +0 -2
- package/esm2022/testing-jasmine/kirbydesign-designsystem-testing-jasmine.mjs +0 -5
- package/esm2022/testing-jasmine/lib/kirby-testing.module.mjs +0 -20
- package/esm2022/testing-jasmine/lib/mock-providers.mjs +0 -86
- package/esm2022/testing-jasmine/public_api.mjs +0 -2
- package/esm2022/testing-jest/kirbydesign-designsystem-testing-jest.mjs +0 -5
- package/esm2022/testing-jest/lib/kirby-testing.module.mjs +0 -20
- package/esm2022/testing-jest/lib/mock-providers.mjs +0 -92
- package/esm2022/testing-jest/public_api.mjs +0 -2
- package/esm2022/toast/config/toast-config.mjs +0 -2
- package/esm2022/toast/kirbydesign-designsystem-toast.mjs +0 -5
- package/esm2022/toast/public_api.mjs +0 -4
- package/esm2022/toast/services/indexs.mjs +0 -3
- package/esm2022/toast/services/toast.controller.mjs +0 -22
- package/esm2022/toast/services/toast.helper.mjs +0 -39
- package/esm2022/toggle/kirbydesign-designsystem-toggle.mjs +0 -5
- package/esm2022/toggle/public_api.mjs +0 -2
- package/esm2022/toggle/toggle.component.mjs +0 -114
- package/esm2022/toggle-button/kirbydesign-designsystem-toggle-button.mjs +0 -5
- package/esm2022/toggle-button/public_api.mjs +0 -3
- package/esm2022/toggle-button/toggle-button.component.mjs +0 -30
- package/esm2022/toggle-button/toggle-button.module.mjs +0 -19
- package/esm2022/types/event-listener-dispose-fn.mjs +0 -2
- package/esm2022/types/kirbydesign-designsystem-types.mjs +0 -5
- package/esm2022/types/public_api.mjs +0 -4
- package/esm2022/types/unobserve-fn.mjs +0 -2
- package/esm2022/types/window-ref.mjs +0 -16
- package/ngcc.config.js +0 -3
|
@@ -1,734 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Inject, InjectionToken, Injector, Input, NgZone, Optional, Output, QueryList, Renderer2, RendererStyleFlags2, SkipSelf, TemplateRef, ViewChild, ViewChildren, } from '@angular/core';
|
|
2
|
-
import { NavigationEnd, NavigationStart, Router } from '@angular/router';
|
|
3
|
-
import { IonBackButton, IonButtons, IonContent, IonFooter, IonHeader, IonRouterOutlet, IonToolbar, NavController, } from '@ionic/angular/standalone';
|
|
4
|
-
import { componentOnReady } from '@ionic/core';
|
|
5
|
-
import { selectedTabClickEvent, TabsComponent } from '@kirbydesign/designsystem/tabs';
|
|
6
|
-
import { Subject } from 'rxjs';
|
|
7
|
-
import { debounceTime, filter, map, takeUntil } from 'rxjs/operators';
|
|
8
|
-
import { ACTIONGROUP_CONFIG } from '@kirbydesign/designsystem/action-group';
|
|
9
|
-
import { HeaderComponent, } from '@kirbydesign/designsystem/header';
|
|
10
|
-
import { IonicElementPartHelper, KirbyAnimation } from '@kirbydesign/designsystem/helpers';
|
|
11
|
-
import { ModalElementComponent, ModalElementsAdvertiser, ModalElementType, ModalNavigationService, } from '@kirbydesign/designsystem/modal';
|
|
12
|
-
import { ResizeObserverService, TranslationService, } from '@kirbydesign/designsystem/shared';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@kirbydesign/designsystem/modal";
|
|
15
|
-
import * as i2 from "@angular/router";
|
|
16
|
-
import * as i3 from "@kirbydesign/designsystem/shared";
|
|
17
|
-
import * as i4 from "@kirbydesign/designsystem/tabs";
|
|
18
|
-
import * as i5 from "@ionic/angular/standalone";
|
|
19
|
-
import * as i6 from "@kirbydesign/designsystem/helpers";
|
|
20
|
-
import * as i7 from "@angular/common";
|
|
21
|
-
import * as i8 from "@kirbydesign/designsystem/spinner";
|
|
22
|
-
/**
|
|
23
|
-
* Specify scroll event debounce time in ms and scrolled offset from top in pixels
|
|
24
|
-
*/
|
|
25
|
-
const contentScrollDebounceTimeInMS = 10;
|
|
26
|
-
const contentScrolledOffsetInPixels = 4;
|
|
27
|
-
export const PAGE_BACK_BUTTON_OVERRIDE = new InjectionToken('page-back-button-override');
|
|
28
|
-
export class PageTitleDirective {
|
|
29
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
30
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PageTitleDirective, selector: "[kirbyPageTitle]", ngImport: i0 }); }
|
|
31
|
-
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageTitleDirective, decorators: [{
|
|
33
|
-
type: Directive,
|
|
34
|
-
args: [{
|
|
35
|
-
selector: '[kirbyPageTitle]',
|
|
36
|
-
}]
|
|
37
|
-
}] });
|
|
38
|
-
export class PageSubtitleDirective {
|
|
39
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageSubtitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
40
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PageSubtitleDirective, selector: "[kirbyPageSubtitle]", ngImport: i0 }); }
|
|
41
|
-
}
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageSubtitleDirective, decorators: [{
|
|
43
|
-
type: Directive,
|
|
44
|
-
args: [{
|
|
45
|
-
selector: '[kirbyPageSubtitle]',
|
|
46
|
-
}]
|
|
47
|
-
}] });
|
|
48
|
-
export class PageToolbarTitleDirective {
|
|
49
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageToolbarTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
50
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PageToolbarTitleDirective, selector: "[kirbyPageToolbarTitle]", ngImport: i0 }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageToolbarTitleDirective, decorators: [{
|
|
53
|
-
type: Directive,
|
|
54
|
-
args: [{
|
|
55
|
-
selector: '[kirbyPageToolbarTitle]',
|
|
56
|
-
}]
|
|
57
|
-
}] });
|
|
58
|
-
export class PageActionsDirective {
|
|
59
|
-
constructor(template) {
|
|
60
|
-
this.template = template;
|
|
61
|
-
this.stickyDefault = true;
|
|
62
|
-
this.fixedDefault = false;
|
|
63
|
-
console.warn('Defining Page Actions via *kirbyPageActions is deprecated and will be removed in Kirby v11. A Kirby Header with Actions should be used instead, as it has an improved API with better support for responsive layouts.');
|
|
64
|
-
}
|
|
65
|
-
get isSticky() {
|
|
66
|
-
return this.config ? this.config.sticky : this.stickyDefault;
|
|
67
|
-
}
|
|
68
|
-
get isFixed() {
|
|
69
|
-
return this.config ? this.config.fixed : this.fixedDefault;
|
|
70
|
-
}
|
|
71
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageActionsDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
72
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PageActionsDirective, selector: "[kirbyPageActions]", inputs: { config: ["kirbyPageActions", "config"] }, ngImport: i0 }); }
|
|
73
|
-
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageActionsDirective, decorators: [{
|
|
75
|
-
type: Directive,
|
|
76
|
-
args: [{
|
|
77
|
-
selector: '[kirbyPageActions]',
|
|
78
|
-
}]
|
|
79
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { config: [{
|
|
80
|
-
type: Input,
|
|
81
|
-
args: ['kirbyPageActions']
|
|
82
|
-
}] } });
|
|
83
|
-
export class PageContentDirective {
|
|
84
|
-
constructor(template) {
|
|
85
|
-
this.template = template;
|
|
86
|
-
}
|
|
87
|
-
get isFixed() {
|
|
88
|
-
return this.config && this.config.fixed;
|
|
89
|
-
}
|
|
90
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageContentDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
91
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PageContentDirective, selector: "[kirbyPageContent]", inputs: { config: ["kirbyPageContent", "config"] }, ngImport: i0 }); }
|
|
92
|
-
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageContentDirective, decorators: [{
|
|
94
|
-
type: Directive,
|
|
95
|
-
args: [{
|
|
96
|
-
selector: '[kirbyPageContent]',
|
|
97
|
-
}]
|
|
98
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { config: [{
|
|
99
|
-
type: Input,
|
|
100
|
-
args: ['kirbyPageContent']
|
|
101
|
-
}] } });
|
|
102
|
-
export class PageStickyContentDirective {
|
|
103
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageStickyContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
104
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PageStickyContentDirective, selector: "[kirbyPageStickyContent]", ngImport: i0 }); }
|
|
105
|
-
}
|
|
106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageStickyContentDirective, decorators: [{
|
|
107
|
-
type: Directive,
|
|
108
|
-
args: [{
|
|
109
|
-
selector: '[kirbyPageStickyContent]',
|
|
110
|
-
}]
|
|
111
|
-
}] });
|
|
112
|
-
export class PageProgressComponent extends ModalElementComponent {
|
|
113
|
-
constructor(modalElementsAdvertiser, elementRef) {
|
|
114
|
-
super(ModalElementType.PAGE_PROGRESS, elementRef, modalElementsAdvertiser);
|
|
115
|
-
// TODO: Find alternative implementation, which aligns with future page configuration / consumption
|
|
116
|
-
// This implementation was chosen over expanding `moveChild` method in component wrapper with yet another scenario
|
|
117
|
-
this.slot = 'start';
|
|
118
|
-
}
|
|
119
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageProgressComponent, deps: [{ token: i1.ModalElementsAdvertiser, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageProgressComponent, selector: "kirby-page-progress", host: { properties: { "attr.slot": "this.slot" } }, usesInheritance: true, ngImport: i0, template: `
|
|
121
|
-
<ng-content></ng-content>
|
|
122
|
-
`, isInline: true, styles: [":host{display:flex;margin-inline-end:4px}\n"] }); }
|
|
123
|
-
}
|
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageProgressComponent, decorators: [{
|
|
125
|
-
type: Component,
|
|
126
|
-
args: [{ selector: 'kirby-page-progress', template: `
|
|
127
|
-
<ng-content></ng-content>
|
|
128
|
-
`, styles: [":host{display:flex;margin-inline-end:4px}\n"] }]
|
|
129
|
-
}], ctorParameters: () => [{ type: i1.ModalElementsAdvertiser, decorators: [{
|
|
130
|
-
type: Optional
|
|
131
|
-
}] }, { type: i0.ElementRef }], propDecorators: { slot: [{
|
|
132
|
-
type: HostBinding,
|
|
133
|
-
args: ['attr.slot']
|
|
134
|
-
}] } });
|
|
135
|
-
export class PageTitleComponent extends ModalElementComponent {
|
|
136
|
-
constructor(elementRef, modalElementsAdvertiser) {
|
|
137
|
-
super(ModalElementType.TITLE, elementRef, modalElementsAdvertiser);
|
|
138
|
-
}
|
|
139
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageTitleComponent, deps: [{ token: i0.ElementRef }, { token: i1.ModalElementsAdvertiser, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
140
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageTitleComponent, selector: "kirby-page-title", usesInheritance: true, ngImport: i0, template: `
|
|
141
|
-
<ng-content></ng-content>
|
|
142
|
-
`, isInline: true }); }
|
|
143
|
-
}
|
|
144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageTitleComponent, decorators: [{
|
|
145
|
-
type: Component,
|
|
146
|
-
args: [{
|
|
147
|
-
selector: 'kirby-page-title',
|
|
148
|
-
template: `
|
|
149
|
-
<ng-content></ng-content>
|
|
150
|
-
`,
|
|
151
|
-
}]
|
|
152
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ModalElementsAdvertiser, decorators: [{
|
|
153
|
-
type: Optional
|
|
154
|
-
}] }] });
|
|
155
|
-
export class PageContentComponent {
|
|
156
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
157
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageContentComponent, selector: "kirby-page-content", ngImport: i0, template: `
|
|
158
|
-
<ng-content></ng-content>
|
|
159
|
-
`, isInline: true }); }
|
|
160
|
-
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageContentComponent, decorators: [{
|
|
162
|
-
type: Component,
|
|
163
|
-
args: [{
|
|
164
|
-
selector: 'kirby-page-content',
|
|
165
|
-
template: `
|
|
166
|
-
<ng-content></ng-content>
|
|
167
|
-
`,
|
|
168
|
-
}]
|
|
169
|
-
}] });
|
|
170
|
-
export class PageActionsComponent {
|
|
171
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
172
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageActionsComponent, selector: "kirby-page-actions", ngImport: i0, template: `
|
|
173
|
-
<ng-content select="button[kirby-button]"></ng-content>
|
|
174
|
-
`, isInline: true, styles: [":host{display:inline-flex;column-gap:8px}\n"] }); }
|
|
175
|
-
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageActionsComponent, decorators: [{
|
|
177
|
-
type: Component,
|
|
178
|
-
args: [{ selector: 'kirby-page-actions', template: `
|
|
179
|
-
<ng-content select="button[kirby-button]"></ng-content>
|
|
180
|
-
`, styles: [":host{display:inline-flex;column-gap:8px}\n"] }]
|
|
181
|
-
}] });
|
|
182
|
-
export class PageComponent {
|
|
183
|
-
set maxWidth(width) {
|
|
184
|
-
this._maxWidth = width;
|
|
185
|
-
}
|
|
186
|
-
get maxWidth() {
|
|
187
|
-
return this._maxWidth;
|
|
188
|
-
}
|
|
189
|
-
get tabBarBottomHidden() {
|
|
190
|
-
return this._tabBarBottomHidden;
|
|
191
|
-
}
|
|
192
|
-
set tabBarBottomHidden(value) {
|
|
193
|
-
if (this.tabsComponent) {
|
|
194
|
-
// as we are setting a class on tabs, we need this to happen in a separate cd cycle
|
|
195
|
-
setTimeout(() => {
|
|
196
|
-
this.tabsComponent.tabBarBottomHidden = value;
|
|
197
|
-
this.changeDetectorRef.markForCheck();
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
this._tabBarBottomHidden = value;
|
|
201
|
-
}
|
|
202
|
-
constructor(elementRef, injector, renderer, router, changeDetectorRef, zone, modalNavigationService, resizeObserverService, tabsComponent, backButtonOverride, routerOutlet, navCtrl, ionicElementPartHelper, translations) {
|
|
203
|
-
this.elementRef = elementRef;
|
|
204
|
-
this.injector = injector;
|
|
205
|
-
this.renderer = renderer;
|
|
206
|
-
this.router = router;
|
|
207
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
208
|
-
this.zone = zone;
|
|
209
|
-
this.modalNavigationService = modalNavigationService;
|
|
210
|
-
this.resizeObserverService = resizeObserverService;
|
|
211
|
-
this.tabsComponent = tabsComponent;
|
|
212
|
-
this.backButtonOverride = backButtonOverride;
|
|
213
|
-
this.routerOutlet = routerOutlet;
|
|
214
|
-
this.navCtrl = navCtrl;
|
|
215
|
-
this.ionicElementPartHelper = ionicElementPartHelper;
|
|
216
|
-
this.translations = translations;
|
|
217
|
-
this.titleAlignment = 'left';
|
|
218
|
-
this._maxWidth = 'default';
|
|
219
|
-
this.enter = new EventEmitter();
|
|
220
|
-
this.leave = new EventEmitter();
|
|
221
|
-
this.refresh = new EventEmitter();
|
|
222
|
-
this.backButtonClick = new EventEmitter();
|
|
223
|
-
this.toolbarTitleClick = new EventEmitter();
|
|
224
|
-
this.isStickyContentPinned = false;
|
|
225
|
-
this.isObservingTitle = false;
|
|
226
|
-
this.isObservingActions = false;
|
|
227
|
-
this.ngOnDestroy$ = new Subject();
|
|
228
|
-
this.navigationStart$ = this.router.events.pipe(filter((event) => event instanceof NavigationStart), takeUntil(this.ngOnDestroy$));
|
|
229
|
-
this.navigationEnd$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd), takeUntil(this.ngOnDestroy$));
|
|
230
|
-
}
|
|
231
|
-
whenContentReady() {
|
|
232
|
-
if (!this.contentReadyPromise) {
|
|
233
|
-
this.contentReadyPromise = new Promise((resolve) => {
|
|
234
|
-
this.resizeObserverService.observe(this.ionContentElement, (entry) => {
|
|
235
|
-
if (entry.contentRect.height > 0) {
|
|
236
|
-
this.resizeObserverService.unobserve(this.ionContentElement);
|
|
237
|
-
resolve();
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
return this.contentReadyPromise;
|
|
243
|
-
}
|
|
244
|
-
ngOnInit() {
|
|
245
|
-
this.removeWrapper();
|
|
246
|
-
this.ionicElementPartHelper.setPart('background', this.ionToolbarElement, '.toolbar-background');
|
|
247
|
-
const actionGroupConfig = {
|
|
248
|
-
isCondensed: true,
|
|
249
|
-
maxVisibleActions: 1,
|
|
250
|
-
};
|
|
251
|
-
this.toolbarActionGroupInjector = Injector.create({
|
|
252
|
-
providers: [
|
|
253
|
-
{
|
|
254
|
-
provide: ACTIONGROUP_CONFIG,
|
|
255
|
-
useValue: actionGroupConfig,
|
|
256
|
-
},
|
|
257
|
-
],
|
|
258
|
-
parent: this.injector,
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
ngOnChanges(changes) {
|
|
262
|
-
if (changes.titleMaxLines) {
|
|
263
|
-
this.fitHeadingConfig = {
|
|
264
|
-
maxLines: changes.titleMaxLines.currentValue,
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
if (changes.subtitle && !changes.subtitle.isFirstChange) {
|
|
268
|
-
this.subtitle = changes.title.currentValue;
|
|
269
|
-
this.hasPageSubtitle = this.subtitle !== undefined;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
ngAfterViewInit() {
|
|
273
|
-
this.zone.runOutsideAngular(() => {
|
|
274
|
-
this.contentScrolled$ = this.content.ionScroll.pipe(debounceTime(contentScrollDebounceTimeInMS), map((event) => event.detail), takeUntil(this.ngOnDestroy$));
|
|
275
|
-
this.contentScrolled$.subscribe((scrollInfo) => {
|
|
276
|
-
if (scrollInfo.scrollTop > contentScrolledOffsetInPixels !== this.isContentScrolled) {
|
|
277
|
-
this.isContentScrolled = !this.isContentScrolled;
|
|
278
|
-
this.changeDetectorRef.detectChanges();
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
// This instance has observed a page enter so register the correct url for this instance
|
|
283
|
-
this.url = this.router.url;
|
|
284
|
-
this.onEnter();
|
|
285
|
-
// Watch navigation events for page enter and leave
|
|
286
|
-
this.navigationStart$.subscribe((event) => {
|
|
287
|
-
if (this.getPathname(event.url) !== this.getPathname(this.url) &&
|
|
288
|
-
!this.modalNavigationService.isModalRoute(this.url) &&
|
|
289
|
-
!this.modalNavigationService.isModalRoute(event.url)) {
|
|
290
|
-
this.onLeave();
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
this.navigationEnd$.subscribe((event) => {
|
|
294
|
-
if (this.getPathname(event.urlAfterRedirects) === this.getPathname(this.url)) {
|
|
295
|
-
this.onEnter();
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
this.interceptBackButtonClicksSetup();
|
|
299
|
-
this.initializeStickyIntersectionObserver();
|
|
300
|
-
this.setActionButtonsWidth();
|
|
301
|
-
}
|
|
302
|
-
ngAfterContentChecked() {
|
|
303
|
-
this.initializeHeader();
|
|
304
|
-
this.initializeTitle();
|
|
305
|
-
this.initializeActions();
|
|
306
|
-
this.initializeContent();
|
|
307
|
-
this.initializeStickyContent();
|
|
308
|
-
this.changeDetectorRef.detectChanges();
|
|
309
|
-
}
|
|
310
|
-
ngOnDestroy() {
|
|
311
|
-
this.ngOnDestroy$.next();
|
|
312
|
-
this.ngOnDestroy$.complete();
|
|
313
|
-
this.titleIntersectionObserver?.disconnect();
|
|
314
|
-
this.stickyActionsIntersectionObserver?.disconnect();
|
|
315
|
-
this.stickyContentIntersectionObserver?.disconnect();
|
|
316
|
-
}
|
|
317
|
-
delegateRefreshEvent(event) {
|
|
318
|
-
this.refresh.emit({
|
|
319
|
-
complete: event.target.complete.bind(event.target),
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
getMaxWidthClasses() {
|
|
323
|
-
if (!this.maxWidth) {
|
|
324
|
-
return '';
|
|
325
|
-
}
|
|
326
|
-
if (this.maxWidth === 'default') {
|
|
327
|
-
return '';
|
|
328
|
-
}
|
|
329
|
-
return `max-width-${this.maxWidth}`;
|
|
330
|
-
}
|
|
331
|
-
onTitleClick(event) {
|
|
332
|
-
if (this.toolbarTitleClick.observed) {
|
|
333
|
-
this.toolbarTitleClick.emit(event);
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
this.header?.titleClick.emit(event);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
removeWrapper() {
|
|
340
|
-
const parent = this.elementRef.nativeElement.parentNode;
|
|
341
|
-
this.renderer.removeChild(parent, this.elementRef.nativeElement);
|
|
342
|
-
this.renderer.appendChild(parent, this.ionHeaderElement.nativeElement);
|
|
343
|
-
this.renderer.appendChild(parent, this.ionContentElement.nativeElement);
|
|
344
|
-
this.renderer.appendChild(parent, this.ionFooterElement.nativeElement);
|
|
345
|
-
}
|
|
346
|
-
onEnter() {
|
|
347
|
-
if (this.isActive)
|
|
348
|
-
return;
|
|
349
|
-
this.isActive = true;
|
|
350
|
-
this.enter.emit();
|
|
351
|
-
this.observeTitle();
|
|
352
|
-
this.observeActions();
|
|
353
|
-
}
|
|
354
|
-
onLeave() {
|
|
355
|
-
if (!this.isActive)
|
|
356
|
-
return;
|
|
357
|
-
this.isActive = false;
|
|
358
|
-
this.leave.emit();
|
|
359
|
-
this.unobserveTitle();
|
|
360
|
-
this.unobserveActions();
|
|
361
|
-
if (this.tabBarBottomHidden && this.tabsComponent) {
|
|
362
|
-
this.tabsComponent.tabBarBottomHidden = false;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
interceptBackButtonClicksSetup() {
|
|
366
|
-
if (this.backButtonOverride) {
|
|
367
|
-
this.backButton.onClick = (event) => {
|
|
368
|
-
event.preventDefault();
|
|
369
|
-
this.backButtonOverride.navigateBack(this.routerOutlet, this.navCtrl, this.defaultBackHref);
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
// Intercept back-button click events, defaulting to the built-in click-handler.
|
|
373
|
-
if (this.backButtonClick.observers.length === 0) {
|
|
374
|
-
this.backButtonClick
|
|
375
|
-
.pipe(takeUntil(this.ngOnDestroy$))
|
|
376
|
-
.subscribe(this.backButton.onClick.bind(this.backButton));
|
|
377
|
-
}
|
|
378
|
-
this.backButton.onClick = (event) => {
|
|
379
|
-
this.backButtonClick.emit(event);
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
initializeStickyIntersectionObserver() {
|
|
383
|
-
if (this.stickyContentTemplate) {
|
|
384
|
-
// Sticky content present - start observing for stickiness
|
|
385
|
-
if (!this.stickyContentIntersectionObserver) {
|
|
386
|
-
this.stickyContentIntersectionObserver = this.createStickyContentIntersectionObserver();
|
|
387
|
-
}
|
|
388
|
-
setTimeout(() => {
|
|
389
|
-
this.stickyContentIntersectionObserver.observe(this.stickyContentContainer.nativeElement);
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
initializeHeader() {
|
|
394
|
-
if (this.hasHeader === undefined && !!this.header) {
|
|
395
|
-
this.hasHeader = true;
|
|
396
|
-
// Header could later be removed from DOM (e.g. in virtual scrolling scenarios),
|
|
397
|
-
// so store a reference to `header.titleActionIconTemplate` and `header.titleClick`:
|
|
398
|
-
this.titleActionIconTemplate = this.header.titleActionIconTemplate;
|
|
399
|
-
if (this.header.titleClick.observed && this.hasInteractiveTitle === undefined) {
|
|
400
|
-
this.hasInteractiveTitle = true;
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
initializeTitle() {
|
|
405
|
-
if (this.hasHeader && this.isObservingTitle && !this.header?.titleElement) {
|
|
406
|
-
// If we're already observing the header's title element, but it's no longer present,
|
|
407
|
-
// it means it has been removed from DOM (e.g. in virtual scrolling scenarios).
|
|
408
|
-
// Flip observing flag:
|
|
409
|
-
this.isObservingTitle = false;
|
|
410
|
-
}
|
|
411
|
-
if (this.hasPageTitle) {
|
|
412
|
-
if (!this.isObservingTitle && !!this.header?.titleElement) {
|
|
413
|
-
// Header and title element re-attached to DOM - observe title:
|
|
414
|
-
this.observeTitle();
|
|
415
|
-
}
|
|
416
|
-
// Ensures rest of initializeTitle() won't run, if already initialized
|
|
417
|
-
return;
|
|
418
|
-
}
|
|
419
|
-
this.hasPageTitle =
|
|
420
|
-
this.title !== undefined || !!this.customTitleTemplate || !!this.header?.title;
|
|
421
|
-
this.toolbarTitleVisible = !this.hasPageTitle;
|
|
422
|
-
this.hasPageSubtitle = this.subtitle !== undefined || !!this.customSubtitleTemplate;
|
|
423
|
-
if (this.header?.title && !this.toolbarTitle) {
|
|
424
|
-
this.toolbarTitle = this.header.title;
|
|
425
|
-
this.header.title$.pipe(takeUntil(this.ngOnDestroy$)).subscribe((title) => {
|
|
426
|
-
this.toolbarTitle = title;
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
this.observeTitle();
|
|
430
|
-
const defaultTitleTemplate = this.customTitleTemplate || this.simpleTitleTemplate;
|
|
431
|
-
/* eslint-disable */
|
|
432
|
-
// prettier-ignore
|
|
433
|
-
this.toolbarTitleTemplate = this.customToolbarTitleTemplate
|
|
434
|
-
? this.customToolbarTitleTemplate
|
|
435
|
-
: typeof this.toolbarTitle === 'string'
|
|
436
|
-
? this.simpleToolbarTitleTemplate
|
|
437
|
-
: defaultTitleTemplate;
|
|
438
|
-
if (this.toolbarTitleClick.observed && this.hasInteractiveTitle === undefined) {
|
|
439
|
-
this.hasInteractiveTitle = true;
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
observeTitle() {
|
|
443
|
-
if (!this.hasPageTitle) {
|
|
444
|
-
// Nothing to observe
|
|
445
|
-
return;
|
|
446
|
-
}
|
|
447
|
-
if (this.isObservingTitle) {
|
|
448
|
-
// Already observing
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
// We are not actually observing the title until after the `whenContentReady` promise has resolved,
|
|
452
|
-
// but since we've already checked that the page has a title in the guard above,
|
|
453
|
-
// we'll - eagerly - set this flag now to prevent unnecessary re-runs of the rest of this method:
|
|
454
|
-
this.isObservingTitle = true;
|
|
455
|
-
if (!this.titleIntersectionObserver) {
|
|
456
|
-
this.titleIntersectionObserver = new IntersectionObserver((entries) => {
|
|
457
|
-
// In rare scenarios we get more than 1 entry - use the last one:
|
|
458
|
-
const lastEntry = entries[entries.length - 1];
|
|
459
|
-
if (lastEntry) {
|
|
460
|
-
const showToolbarTitle = !lastEntry.isIntersecting;
|
|
461
|
-
// Only flip the flag and run Change Detection when changed:
|
|
462
|
-
if (showToolbarTitle !== this.toolbarTitleVisible) {
|
|
463
|
-
this.toolbarTitleVisible = showToolbarTitle;
|
|
464
|
-
this.changeDetectorRef.detectChanges();
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
}, { root: this.ionContentElement.nativeElement });
|
|
468
|
-
}
|
|
469
|
-
// Run outside Angular to prevent unnecessary triggering change detection
|
|
470
|
-
// and - under certain conditions - an infinite loop when called within ngAfterContentChecked:
|
|
471
|
-
this.zone.runOutsideAngular(() => {
|
|
472
|
-
this.whenContentReady().then(() => {
|
|
473
|
-
const titleElementRef = this.pageTitle || this.header?.titleElement;
|
|
474
|
-
if (titleElementRef?.nativeElement) {
|
|
475
|
-
this.titleIntersectionObserver.observe(titleElementRef.nativeElement);
|
|
476
|
-
}
|
|
477
|
-
});
|
|
478
|
-
});
|
|
479
|
-
}
|
|
480
|
-
unobserveTitle() {
|
|
481
|
-
const titleElementRef = this.pageTitle || this.header?.titleElement;
|
|
482
|
-
if (titleElementRef) {
|
|
483
|
-
this.titleIntersectionObserver?.unobserve(titleElementRef.nativeElement);
|
|
484
|
-
}
|
|
485
|
-
this.isObservingTitle = false;
|
|
486
|
-
}
|
|
487
|
-
initializeActions() {
|
|
488
|
-
if (this.headerActionsTemplate === undefined && !!this.header) {
|
|
489
|
-
this.headerActionsTemplate = this.header.actionsTemplate;
|
|
490
|
-
}
|
|
491
|
-
if (this.hasHeader && this.isObservingActions && !this.header?.actionsElement) {
|
|
492
|
-
// If we're already observing the header's actions element, but it's no longer present,
|
|
493
|
-
// it means it has been removed from DOM (e.g. in virtual scrolling scenarios).
|
|
494
|
-
// Flip observing flag:
|
|
495
|
-
this.isObservingActions = false;
|
|
496
|
-
}
|
|
497
|
-
this.observeActions();
|
|
498
|
-
this.customActions.forEach((pageAction) => {
|
|
499
|
-
if (pageAction.isFixed) {
|
|
500
|
-
this.fixedActionsTemplate = pageAction.template;
|
|
501
|
-
}
|
|
502
|
-
else if (pageAction.isSticky) {
|
|
503
|
-
this.stickyActionsTemplate = pageAction.template;
|
|
504
|
-
}
|
|
505
|
-
else {
|
|
506
|
-
this.pageActionsTemplate = pageAction.template;
|
|
507
|
-
}
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
observeActions() {
|
|
511
|
-
if (!this.header?.actionsElement) {
|
|
512
|
-
// Nothing to observe
|
|
513
|
-
return;
|
|
514
|
-
}
|
|
515
|
-
if (this.isObservingActions) {
|
|
516
|
-
// Already observing
|
|
517
|
-
return;
|
|
518
|
-
}
|
|
519
|
-
// We are not actually observing actions until after the `whenContentReady` promise has resolved,
|
|
520
|
-
// but since we've already checked that there's an actions element present in the guard above,
|
|
521
|
-
// we'll - eagerly - set this flag now to prevent unnecessary re-runs of the rest of this method:
|
|
522
|
-
this.isObservingActions = true;
|
|
523
|
-
if (!this.stickyActionsIntersectionObserver) {
|
|
524
|
-
this.stickyActionsIntersectionObserver = new IntersectionObserver((entries) => {
|
|
525
|
-
// In rare scenarios we get more than 1 entry - use the last one:
|
|
526
|
-
const lastEntry = entries[entries.length - 1];
|
|
527
|
-
if (lastEntry) {
|
|
528
|
-
const showToolbarActions = !lastEntry.isIntersecting;
|
|
529
|
-
// Only flip the flag and run Change Detection when changed:
|
|
530
|
-
if (showToolbarActions !== this.toolbarActionsVisible) {
|
|
531
|
-
this.toolbarActionsVisible = showToolbarActions;
|
|
532
|
-
this.changeDetectorRef.detectChanges();
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
}, { root: this.ionContentElement.nativeElement });
|
|
536
|
-
}
|
|
537
|
-
// Run outside Angular to prevent unnecessary triggering change detection
|
|
538
|
-
// and - under certain conditions - an infinite loop when called within ngAfterContentChecked:
|
|
539
|
-
this.zone.runOutsideAngular(() => {
|
|
540
|
-
this.whenContentReady().then(() => {
|
|
541
|
-
if (this.header?.actionsElement?.nativeElement) {
|
|
542
|
-
this.stickyActionsIntersectionObserver.observe(this.header.actionsElement.nativeElement);
|
|
543
|
-
}
|
|
544
|
-
});
|
|
545
|
-
});
|
|
546
|
-
}
|
|
547
|
-
unobserveActions() {
|
|
548
|
-
if (this.header?.actionsElement) {
|
|
549
|
-
this.stickyActionsIntersectionObserver?.unobserve(this.header.actionsElement.nativeElement);
|
|
550
|
-
}
|
|
551
|
-
this.isObservingActions = false;
|
|
552
|
-
}
|
|
553
|
-
setActionButtonsWidth() {
|
|
554
|
-
if (!this.ionToolbarButtonsElement)
|
|
555
|
-
return;
|
|
556
|
-
// Ensure ion-toolbar custom element has been defined (primarily when testing, but doesn't hurt):
|
|
557
|
-
customElements.whenDefined(this.ionToolbarElement.nativeElement.localName).then(() => {
|
|
558
|
-
// Ensure toolbar and buttons have been rendered and has dimensions:
|
|
559
|
-
componentOnReady(this.ionToolbarElement.nativeElement, (toolbar) => {
|
|
560
|
-
let startButtonsWidth = 0;
|
|
561
|
-
let endButtonsWidth = 0;
|
|
562
|
-
this.ionToolbarButtonsElement
|
|
563
|
-
.map((ionButtonsElementRef) => ionButtonsElementRef.nativeElement)
|
|
564
|
-
.forEach((ionButtonsElement) => {
|
|
565
|
-
const style = getComputedStyle(ionButtonsElement);
|
|
566
|
-
const margin = parseInt(style.marginLeft) + parseInt(style.marginRight);
|
|
567
|
-
if (ionButtonsElement.getAttribute('slot') === 'start') {
|
|
568
|
-
startButtonsWidth += ionButtonsElement.offsetWidth + margin;
|
|
569
|
-
}
|
|
570
|
-
else {
|
|
571
|
-
endButtonsWidth += ionButtonsElement.offsetWidth + margin;
|
|
572
|
-
}
|
|
573
|
-
});
|
|
574
|
-
const actionButtonsMaxWidth = Math.max(startButtonsWidth, endButtonsWidth);
|
|
575
|
-
this.renderer.setStyle(toolbar, '--action-buttons-width', `${actionButtonsMaxWidth}px`, RendererStyleFlags2.DashCase);
|
|
576
|
-
});
|
|
577
|
-
});
|
|
578
|
-
}
|
|
579
|
-
initializeContent() {
|
|
580
|
-
this.customContent.forEach((content) => {
|
|
581
|
-
if (content.isFixed) {
|
|
582
|
-
this.fixedContentTemplate = content.template;
|
|
583
|
-
}
|
|
584
|
-
else {
|
|
585
|
-
this.customContentTemplate = content.template;
|
|
586
|
-
}
|
|
587
|
-
});
|
|
588
|
-
}
|
|
589
|
-
initializeStickyContent() {
|
|
590
|
-
this.stickyContentTemplate = this.stickyContentRef;
|
|
591
|
-
}
|
|
592
|
-
createStickyContentIntersectionObserver() {
|
|
593
|
-
const options = {
|
|
594
|
-
root: this.ionContentElement.nativeElement,
|
|
595
|
-
threshold: 1,
|
|
596
|
-
};
|
|
597
|
-
const callback = (entries) => {
|
|
598
|
-
if (this.isStickyContentPinned !== !entries[0].isIntersecting) {
|
|
599
|
-
this.isStickyContentPinned = !this.isStickyContentPinned;
|
|
600
|
-
this.changeDetectorRef.detectChanges();
|
|
601
|
-
}
|
|
602
|
-
};
|
|
603
|
-
return new IntersectionObserver(callback, options);
|
|
604
|
-
}
|
|
605
|
-
getPathname(url) {
|
|
606
|
-
return url.split('?')[0];
|
|
607
|
-
}
|
|
608
|
-
_onKeyboardWillShow(info) {
|
|
609
|
-
if (info && info.keyboardHeight) {
|
|
610
|
-
this.ionContentElement.nativeElement.style.setProperty('--keyboard-offset', `${info.keyboardHeight}px`);
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
_onKeyboardWillHide() {
|
|
614
|
-
this.ionContentElement.nativeElement.style.setProperty('--keyboard-offset', '0px');
|
|
615
|
-
}
|
|
616
|
-
_onSelectedTabClick() {
|
|
617
|
-
if (this.content) {
|
|
618
|
-
this.content.scrollToTop(KirbyAnimation.Duration.LONG);
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i2.Router }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.ModalNavigationService }, { token: i3.ResizeObserverService }, { token: i4.TabsComponent, optional: true, skipSelf: true }, { token: PAGE_BACK_BUTTON_OVERRIDE, optional: true }, { token: i5.IonRouterOutlet, optional: true }, { token: i5.NavController, optional: true }, { token: i6.IonicElementPartHelper }, { token: i3.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
622
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", hasInteractiveTitle: "hasInteractiveTitle", maxWidth: "maxWidth", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick", toolbarTitleClick: "toolbarTitleClick" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()", "window:kirbySelectedTabClick": "_onSelectedTabClick()" } }, providers: [IonicElementPartHelper], queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "stickyContentRef", first: true, predicate: PageStickyContentDirective, descendants: true, read: TemplateRef }, { propertyName: "header", first: true, predicate: HeaderComponent, descendants: true }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", 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: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "ionToolbarElement", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: "backButton", first: true, predicate: IonBackButton, descendants: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "stickyContentContainer", first: true, predicate: ["stickyContentContainer"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "ionToolbarButtonsElement", predicate: IonButtons, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar\n [class.content-scrolled]=\"isContentScrolled\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n [attr.aria-label]=\"translations.get('back')\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title [class.slide-and-fade-in]=\"toolbarTitleVisible\">\n <div class=\"toolbar-title\">\n <ng-container *ngIf=\"!titleActionIconTemplate && !hasInteractiveTitle\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </ng-container>\n <span\n *ngIf=\"!!titleActionIconTemplate || hasInteractiveTitle\"\n [class.clickable]=\"hasInteractiveTitle\"\n [class.has-icon]=\"!!titleActionIconTemplate\"\n (click)=\"onTitleClick($event)\"\n >\n <span>\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </span>\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </span>\n </div>\n </ion-title>\n <ion-buttons\n *ngIf=\"!!headerActionsTemplate\"\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarActionsVisible\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerActionsTemplate; injector: toolbarActionGroupInjector\"\n ></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!stickyActionsTemplate\" class=\"legacy-actions\" slot=\"primary\">\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!fixedActionsTemplate\" class=\"legacy-actions\" slot=\"secondary\">\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content\n scrollEvents=\"true\"\n forceOverscroll=\"false\"\n [class]=\"getMaxWidthClasses()\"\n [class.has-header]=\"hasHeader\"\n>\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <!-- Page header -->\n <div class=\"page-header-container\" *ngIf=\"hasPageTitle && !hasHeader\">\n <div\n class=\"page-header\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right',\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"!!pageActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n </div>\n\n <!-- Header -->\n <div class=\"page-header-container\" *ngIf=\"hasHeader\">\n <ng-content select=\"kirby-header\"></ng-content>\n </div>\n\n <!-- Sticky content -->\n <ng-container *ngIf=\"stickyContentTemplate\">\n <div\n #stickyContentContainer\n class=\"sticky-content-container\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <div>\n <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Content -->\n <div class=\"content-inner\">\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}ion-toolbar{--border-width: 0 !important;--padding-start: 16px;--padding-end: 16px;--padding-top: 0;--padding-bottom: 0;--ion-toolbar-color: var(--kirby-black);--min-height: 56px}@media (min-width: 768px){ion-toolbar{--padding-start: 24px;--padding-end: 24px;--min-height: 72px}}ion-toolbar:before{content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px}ion-toolbar:before,ion-toolbar::part(background){transition:background-color 50ms linear}ion-toolbar.content-scrolled{--background: rgb(243.294, 243.294, 243.294)}ion-toolbar.content-scrolled:before,ion-toolbar.content-scrolled::part(background){transition-duration:.2s}ion-toolbar.content-scrolled:not(.content-pinned):before{background-color:var(--kirby-medium)}ion-toolbar.content-pinned:before{transition:none}ion-toolbar ion-buttons[slot=start]{margin-right:8px}ion-toolbar ion-buttons[slot=primary],ion-toolbar ion-buttons[slot=secondary]{margin-left:8px}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title{visibility:hidden;opacity:0;transform:translateY(10px);transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:ease;padding-inline:calc(var(--action-buttons-width, 48px) + var(--padding-start))}ion-toolbar ion-title.slide-and-fade-in{visibility:visible;opacity:1;transform:translateY(0)}ion-toolbar ion-title .toolbar-title,ion-toolbar ion-title .toolbar-title>span.has-icon>span{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title{font-weight:700}ion-toolbar ion-title .toolbar-title span.clickable{cursor:pointer}ion-toolbar ion-title .toolbar-title span.has-icon{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;max-width:100%}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}@media (hover: hover){ion-back-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}ion-back-button:active,ion-back-button.ion-activated{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}ion-back-button{--color: var(--kirby-black);--background: var(--kirby-white);--icon-font-size: 24px;height:40px;width:40px;opacity:1}ion-back-button::part(icon){margin-inline:0}ion-back-button::part(native){opacity:1;border-radius:999px;overflow:hidden}ion-back-button::part(native):after{transition:all 80ms linear 0ms}.page-header-container{max-width:var(--page-content-max-width, 792px);margin:0 auto}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-top: 12px;--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color);--color: var(--kirby-black)}@media (min-width: 768px){ion-content{--padding-start: var(--page-content-padding-start, 48px);--padding-end: var(--page-content-padding-end, 48px)}}ion-content.has-header{--padding-top: 0}ion-content.max-width-lg{--page-content-max-width: 1092px}ion-content.max-width-xl{--page-content-max-width: 1392px}ion-content.max-width-full{--page-content-max-width: 100%}ion-content::part(scroll){scrollbar-gutter:stable}ion-content .content-inner{max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0;transform:initial}ion-content .fixed-content .content-inner{position:relative}.sticky-content-container{position:sticky;top:-13px;left:0;right:0;padding-top:1px;margin-block-end:24px;z-index:10}.sticky-content-container div{max-width:var(--page-content-max-width, 792px);margin:0 auto}.sticky-content-container:before,.sticky-content-container:after{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0}.sticky-content-container:before{top:0;background-color:var(--background)}.sticky-content-container:after{height:1px}.sticky-content-container.content-pinned:before{background-color:#f3f3f3}.sticky-content-container.content-pinned:after{background-color:var(--kirby-medium)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }, { kind: "component", type: i8.SpinnerComponent, selector: "kirby-spinner" }, { kind: "component", type: i5.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i5.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i5.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i5.IonBackButton, selector: "ion-back-button" }, { kind: "component", type: i5.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i5.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i5.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i5.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
623
|
-
}
|
|
624
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageComponent, decorators: [{
|
|
625
|
-
type: Component,
|
|
626
|
-
args: [{ selector: 'kirby-page', changeDetection: ChangeDetectionStrategy.OnPush, providers: [IonicElementPartHelper], template: "<ion-header>\n <ion-toolbar\n [class.content-scrolled]=\"isContentScrolled\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n [attr.aria-label]=\"translations.get('back')\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title [class.slide-and-fade-in]=\"toolbarTitleVisible\">\n <div class=\"toolbar-title\">\n <ng-container *ngIf=\"!titleActionIconTemplate && !hasInteractiveTitle\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </ng-container>\n <span\n *ngIf=\"!!titleActionIconTemplate || hasInteractiveTitle\"\n [class.clickable]=\"hasInteractiveTitle\"\n [class.has-icon]=\"!!titleActionIconTemplate\"\n (click)=\"onTitleClick($event)\"\n >\n <span>\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </span>\n <ng-container *ngTemplateOutlet=\"titleActionIconTemplate\"></ng-container>\n </span>\n </div>\n </ion-title>\n <ion-buttons\n *ngIf=\"!!headerActionsTemplate\"\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarActionsVisible\"\n >\n <ng-container\n *ngTemplateOutlet=\"headerActionsTemplate; injector: toolbarActionGroupInjector\"\n ></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!stickyActionsTemplate\" class=\"legacy-actions\" slot=\"primary\">\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!fixedActionsTemplate\" class=\"legacy-actions\" slot=\"secondary\">\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content\n scrollEvents=\"true\"\n forceOverscroll=\"false\"\n [class]=\"getMaxWidthClasses()\"\n [class.has-header]=\"hasHeader\"\n>\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <!-- Page header -->\n <div class=\"page-header-container\" *ngIf=\"hasPageTitle && !hasHeader\">\n <div\n class=\"page-header\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right',\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"!!pageActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n </div>\n\n <!-- Header -->\n <div class=\"page-header-container\" *ngIf=\"hasHeader\">\n <ng-content select=\"kirby-header\"></ng-content>\n </div>\n\n <!-- Sticky content -->\n <ng-container *ngIf=\"stickyContentTemplate\">\n <div\n #stickyContentContainer\n class=\"sticky-content-container\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <div>\n <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Content -->\n <div class=\"content-inner\">\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}ion-toolbar{--border-width: 0 !important;--padding-start: 16px;--padding-end: 16px;--padding-top: 0;--padding-bottom: 0;--ion-toolbar-color: var(--kirby-black);--min-height: 56px}@media (min-width: 768px){ion-toolbar{--padding-start: 24px;--padding-end: 24px;--min-height: 72px}}ion-toolbar:before{content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px}ion-toolbar:before,ion-toolbar::part(background){transition:background-color 50ms linear}ion-toolbar.content-scrolled{--background: rgb(243.294, 243.294, 243.294)}ion-toolbar.content-scrolled:before,ion-toolbar.content-scrolled::part(background){transition-duration:.2s}ion-toolbar.content-scrolled:not(.content-pinned):before{background-color:var(--kirby-medium)}ion-toolbar.content-pinned:before{transition:none}ion-toolbar ion-buttons[slot=start]{margin-right:8px}ion-toolbar ion-buttons[slot=primary],ion-toolbar ion-buttons[slot=secondary]{margin-left:8px}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title{visibility:hidden;opacity:0;transform:translateY(10px);transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:ease;padding-inline:calc(var(--action-buttons-width, 48px) + var(--padding-start))}ion-toolbar ion-title.slide-and-fade-in{visibility:visible;opacity:1;transform:translateY(0)}ion-toolbar ion-title .toolbar-title,ion-toolbar ion-title .toolbar-title>span.has-icon>span{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title{font-weight:700}ion-toolbar ion-title .toolbar-title span.clickable{cursor:pointer}ion-toolbar ion-title .toolbar-title span.has-icon{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;max-width:100%}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}@media (hover: hover){ion-back-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}ion-back-button:active,ion-back-button.ion-activated{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}ion-back-button{--color: var(--kirby-black);--background: var(--kirby-white);--icon-font-size: 24px;height:40px;width:40px;opacity:1}ion-back-button::part(icon){margin-inline:0}ion-back-button::part(native){opacity:1;border-radius:999px;overflow:hidden}ion-back-button::part(native):after{transition:all 80ms linear 0ms}.page-header-container{max-width:var(--page-content-max-width, 792px);margin:0 auto}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-top: 12px;--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color);--color: var(--kirby-black)}@media (min-width: 768px){ion-content{--padding-start: var(--page-content-padding-start, 48px);--padding-end: var(--page-content-padding-end, 48px)}}ion-content.has-header{--padding-top: 0}ion-content.max-width-lg{--page-content-max-width: 1092px}ion-content.max-width-xl{--page-content-max-width: 1392px}ion-content.max-width-full{--page-content-max-width: 100%}ion-content::part(scroll){scrollbar-gutter:stable}ion-content .content-inner{max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0;transform:initial}ion-content .fixed-content .content-inner{position:relative}.sticky-content-container{position:sticky;top:-13px;left:0;right:0;padding-top:1px;margin-block-end:24px;z-index:10}.sticky-content-container div{max-width:var(--page-content-max-width, 792px);margin:0 auto}.sticky-content-container:before,.sticky-content-container:after{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0}.sticky-content-container:before{top:0;background-color:var(--background)}.sticky-content-container:after{height:1px}.sticky-content-container.content-pinned:before{background-color:#f3f3f3}.sticky-content-container.content-pinned:after{background-color:var(--kirby-medium)}\n"] }]
|
|
627
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i2.Router }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.ModalNavigationService }, { type: i3.ResizeObserverService }, { type: i4.TabsComponent, decorators: [{
|
|
628
|
-
type: Optional
|
|
629
|
-
}, {
|
|
630
|
-
type: SkipSelf
|
|
631
|
-
}] }, { type: undefined, decorators: [{
|
|
632
|
-
type: Optional
|
|
633
|
-
}, {
|
|
634
|
-
type: Inject,
|
|
635
|
-
args: [PAGE_BACK_BUTTON_OVERRIDE]
|
|
636
|
-
}] }, { type: i5.IonRouterOutlet, decorators: [{
|
|
637
|
-
type: Optional
|
|
638
|
-
}] }, { type: i5.NavController, decorators: [{
|
|
639
|
-
type: Optional
|
|
640
|
-
}] }, { type: i6.IonicElementPartHelper }, { type: i3.TranslationService }], propDecorators: { title: [{
|
|
641
|
-
type: Input
|
|
642
|
-
}], subtitle: [{
|
|
643
|
-
type: Input
|
|
644
|
-
}], toolbarTitle: [{
|
|
645
|
-
type: Input
|
|
646
|
-
}], titleAlignment: [{
|
|
647
|
-
type: Input
|
|
648
|
-
}], defaultBackHref: [{
|
|
649
|
-
type: Input
|
|
650
|
-
}], hideBackButton: [{
|
|
651
|
-
type: Input
|
|
652
|
-
}], titleMaxLines: [{
|
|
653
|
-
type: Input
|
|
654
|
-
}], hasInteractiveTitle: [{
|
|
655
|
-
type: Input
|
|
656
|
-
}], maxWidth: [{
|
|
657
|
-
type: Input
|
|
658
|
-
}], tabBarBottomHidden: [{
|
|
659
|
-
type: Input
|
|
660
|
-
}], enter: [{
|
|
661
|
-
type: Output
|
|
662
|
-
}], leave: [{
|
|
663
|
-
type: Output
|
|
664
|
-
}], refresh: [{
|
|
665
|
-
type: Output
|
|
666
|
-
}], backButtonClick: [{
|
|
667
|
-
type: Output
|
|
668
|
-
}], toolbarTitleClick: [{
|
|
669
|
-
type: Output
|
|
670
|
-
}], content: [{
|
|
671
|
-
type: ViewChild,
|
|
672
|
-
args: [IonContent, { static: true }]
|
|
673
|
-
}], ionContentElement: [{
|
|
674
|
-
type: ViewChild,
|
|
675
|
-
args: [IonContent, { static: true, read: ElementRef }]
|
|
676
|
-
}], ionHeaderElement: [{
|
|
677
|
-
type: ViewChild,
|
|
678
|
-
args: [IonHeader, { static: true, read: ElementRef }]
|
|
679
|
-
}], ionFooterElement: [{
|
|
680
|
-
type: ViewChild,
|
|
681
|
-
args: [IonFooter, { static: true, read: ElementRef }]
|
|
682
|
-
}], ionToolbarElement: [{
|
|
683
|
-
type: ViewChild,
|
|
684
|
-
args: [IonToolbar, { static: true, read: ElementRef }]
|
|
685
|
-
}], ionToolbarButtonsElement: [{
|
|
686
|
-
type: ViewChildren,
|
|
687
|
-
args: [IonButtons, { read: ElementRef }]
|
|
688
|
-
}], backButton: [{
|
|
689
|
-
type: ViewChild,
|
|
690
|
-
args: [IonBackButton, { static: false }]
|
|
691
|
-
}], pageTitle: [{
|
|
692
|
-
type: ViewChild,
|
|
693
|
-
args: ['pageTitle', { static: false, read: ElementRef }]
|
|
694
|
-
}], stickyContentContainer: [{
|
|
695
|
-
type: ViewChild,
|
|
696
|
-
args: ['stickyContentContainer', { static: false, read: ElementRef }]
|
|
697
|
-
}], simpleTitleTemplate: [{
|
|
698
|
-
type: ViewChild,
|
|
699
|
-
args: ['simpleTitleTemplate', { static: true, read: TemplateRef }]
|
|
700
|
-
}], simpleToolbarTitleTemplate: [{
|
|
701
|
-
type: ViewChild,
|
|
702
|
-
args: ['simpleToolbarTitleTemplate', { static: true, read: TemplateRef }]
|
|
703
|
-
}], customToolbarTitleTemplate: [{
|
|
704
|
-
type: ContentChild,
|
|
705
|
-
args: [PageToolbarTitleDirective, { static: false, read: TemplateRef }]
|
|
706
|
-
}], customTitleTemplate: [{
|
|
707
|
-
type: ContentChild,
|
|
708
|
-
args: [PageTitleDirective, { static: false, read: TemplateRef }]
|
|
709
|
-
}], customSubtitleTemplate: [{
|
|
710
|
-
type: ContentChild,
|
|
711
|
-
args: [PageSubtitleDirective, { static: false, read: TemplateRef }]
|
|
712
|
-
}], customActions: [{
|
|
713
|
-
type: ContentChildren,
|
|
714
|
-
args: [PageActionsDirective]
|
|
715
|
-
}], customContent: [{
|
|
716
|
-
type: ContentChildren,
|
|
717
|
-
args: [PageContentDirective]
|
|
718
|
-
}], stickyContentRef: [{
|
|
719
|
-
type: ContentChild,
|
|
720
|
-
args: [PageStickyContentDirective, { static: false, read: TemplateRef }]
|
|
721
|
-
}], header: [{
|
|
722
|
-
type: ContentChild,
|
|
723
|
-
args: [HeaderComponent]
|
|
724
|
-
}], _onKeyboardWillShow: [{
|
|
725
|
-
type: HostListener,
|
|
726
|
-
args: ['window:keyboardWillShow', ['$event']]
|
|
727
|
-
}], _onKeyboardWillHide: [{
|
|
728
|
-
type: HostListener,
|
|
729
|
-
args: ['window:keyboardWillHide']
|
|
730
|
-
}], _onSelectedTabClick: [{
|
|
731
|
-
type: HostListener,
|
|
732
|
-
args: [`window:${selectedTabClickEvent}`]
|
|
733
|
-
}] } });
|
|
734
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWdlL3NyYy9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhZ2Uvc3JjL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUlOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxtQkFBbUIsRUFFbkIsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsYUFBYSxHQUNkLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQXFCLE1BQU0sd0NBQXdDLENBQUM7QUFDL0YsT0FBTyxFQUVMLGVB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LFVBQVUsRUFBRTtnQkFJaEUsbUJBQW1CO3NCQUQxQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUc3RCwwQkFBMEI7c0JBRGpDLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR3BFLDBCQUEwQjtzQkFEakMsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHN0UsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUd0RSxzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR3pFLGFBQWE7c0JBRFosZUFBZTt1QkFBQyxvQkFBb0I7Z0JBRzdCLGFBQWE7c0JBRHBCLGVBQWU7dUJBQUMsb0JBQW9CO2dCQUc3QixnQkFBZ0I7c0JBRHZCLFlBQVk7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzlFLE1BQU07c0JBREwsWUFBWTt1QkFBQyxlQUFlO2dCQXFnQjdCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkQsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLHlCQUF5QjtnQkFNdkMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLFVBQVUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyU3R5bGVGbGFnczIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgSW9uQmFja0J1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uRm9vdGVyLFxuICBJb25IZWFkZXIsXG4gIElvblJvdXRlck91dGxldCxcbiAgSW9uVG9vbGJhcixcbiAgTmF2Q29udHJvbGxlcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBjb21wb25lbnRPblJlYWR5IH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBTY3JvbGxEZXRhaWwgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBzZWxlY3RlZFRhYkNsaWNrRXZlbnQsIFRhYnNDb21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3RhYnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBQ1RJT05HUk9VUF9DT05GSUcsIEFjdGlvbkdyb3VwQ29uZmlnIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9hY3Rpb24tZ3JvdXAnO1xuaW1wb3J0IHtcbiAgSGVhZGVyQWN0aW9uc0RpcmVjdGl2ZSxcbiAgSGVhZGVyQ29tcG9uZW50LFxuICBIZWFkZXJUaXRsZUFjdGlvbkljb25EaXJlY3RpdmUsXG59IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVhZGVyJztcbmltcG9ydCB7IElvbmljRWxlbWVudFBhcnRIZWxwZXIsIEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7XG4gIE1vZGFsRWxlbWVudENvbXBvbmVudCxcbiAgTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsXG4gIE1vZGFsRWxlbWVudFR5cGUsXG4gIE1vZGFsTmF2aWdhdGlvblNlcnZpY2UsXG59IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vbW9kYWwnO1xuaW1wb3J0IHtcbiAgRml0SGVhZGluZ0NvbmZpZyxcbiAgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICBUcmFuc2xhdGlvblNlcnZpY2UsXG59IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkJztcblxuLyoqXG4gKiBTcGVjaWZ5IHNjcm9sbCBldmVudCBkZWJvdW5jZSB0aW1lIGluIG1zIGFuZCBzY3JvbGxlZCBvZmZzZXQgZnJvbSB0b3AgaW4gcGl4ZWxzXG4gKi9cbmNvbnN0IGNvbnRlbnRTY3JvbGxEZWJvdW5jZVRpbWVJbk1TID0gMTA7XG5jb25zdCBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscyA9IDQ7XG5cbnR5cGUgc3RpY2t5Q29uZmlnID0geyBzdGlja3k6IGJvb2xlYW4gfTtcbnR5cGUgZml4ZWRDb25maWcgPSB7IGZpeGVkOiBib29sZWFuIH07XG50eXBlIE1heFdpZHRoID0gJ2RlZmF1bHQnIHwgJ2xnJyB8ICd4bCcgfCAnZnVsbCc7XG5cbmV4cG9ydCBjb25zdCBQQUdFX0JBQ0tfQlVUVE9OX09WRVJSSURFID0gbmV3IEluamVjdGlvblRva2VuPFBhZ2VCYWNrQnV0dG9uT3ZlcnJpZGU+KFxuICAncGFnZS1iYWNrLWJ1dHRvbi1vdmVycmlkZSdcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUJhY2tCdXR0b25PdmVycmlkZSB7XG4gIG5hdmlnYXRlQmFjazogKFxuICAgIHJvdXRlck91dGxldDogSW9uUm91dGVyT3V0bGV0LFxuICAgIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmdcbiAgKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcInB1bGwtdG8tcmVmcmVzaFwiIGJlZ2lucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsVG9SZWZyZXNoRXZlbnQge1xuICAvKipcbiAgICogSW52b2tlIHRoaXMgY2FsbGJhY2stbWV0aG9kIHdoZW4gYWN0aW9uIHRvIHBlcmZvcm0gdXBvbiBcInB1bGwtdG8tcmVmcmVzaFwiIGNvbXBsZXRlcy5cbiAgICovXG4gIGNvbXBsZXRlKCk7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VUaXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN1YnRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVG9vbGJhclRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUFjdGlvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0aWNreURlZmF1bHQgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpeGVkRGVmYXVsdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdEZWZpbmluZyBQYWdlIEFjdGlvbnMgdmlhICpraXJieVBhZ2VBY3Rpb25zIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBLaXJieSB2MTEuIEEgS2lyYnkgSGVhZGVyIHdpdGggQWN0aW9ucyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLCBhcyBpdCBoYXMgYW4gaW1wcm92ZWQgQVBJIHdpdGggYmV0dGVyIHN1cHBvcnQgZm9yIHJlc3BvbnNpdmUgbGF5b3V0cy4nXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpc1N0aWNreSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcgPyAodGhpcy5jb25maWcgYXMgc3RpY2t5Q29uZmlnKS5zdGlja3kgOiB0aGlzLnN0aWNreURlZmF1bHQ7XG4gIH1cblxuICBnZXQgaXNGaXhlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcgPyAodGhpcy5jb25maWcgYXMgZml4ZWRDb25maWcpLmZpeGVkIDogdGhpcy5maXhlZERlZmF1bHQ7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUNvbnRlbnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnREaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUNvbnRlbnQnKSBjb25maWc6IGZpeGVkQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNGaXhlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZml4ZWQ7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN0aWNreUNvbnRlbnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVN0aWNreUNvbnRlbnREaXJlY3RpdmUge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1wcm9ncmVzcycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA0cHg7IC8qIEFkZCBzcGFjaW5nIHRvIHBvdGVudGlhbCBzdXBwbGVtZW50YXJ5IGFjdGlvbiBidXR0b24gKi9cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlUHJvZ3Jlc3NDb21wb25lbnQgZXh0ZW5kcyBNb2RhbEVsZW1lbnRDb21wb25lbnQge1xuICAvLyBUT0RPOiBGaW5kIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbGlnbnMgd2l0aCBmdXR1cmUgcGFnZSBjb25maWd1cmF0aW9uIC8gY29uc3VtcHRpb25cbiAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB3YXMgY2hvc2VuIG92ZXIgZXhwYW5kaW5nIGBtb3ZlQ2hpbGRgIG1ldGhvZCBpbiBjb21wb25lbnQgd3JhcHBlciB3aXRoIHlldCBhbm90aGVyIHNjZW5hcmlvXG4gIEBIb3N0QmluZGluZygnYXR0ci5zbG90Jykgc2xvdCA9ICdzdGFydCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgbW9kYWxFbGVtZW50c0FkdmVydGlzZXI6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICkge1xuICAgIHN1cGVyKE1vZGFsRWxlbWVudFR5cGUuUEFHRV9QUk9HUkVTUywgZWxlbWVudFJlZiwgbW9kYWxFbGVtZW50c0FkdmVydGlzZXIpO1xuICB9XG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLXRpdGxlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZUNvbXBvbmVudCBleHRlbmRzIE1vZGFsRWxlbWVudENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyOiBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxuICApIHtcbiAgICBzdXBlcihNb2RhbEVsZW1lbnRUeXBlLlRJVExFLCBlbGVtZW50UmVmLCBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcik7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1jb250ZW50JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50Q29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtYWN0aW9ucycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW2tpcmJ5LWJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGNvbHVtbi1nYXA6IDhweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQWN0aW9uc0NvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtJb25pY0VsZW1lbnRQYXJ0SGVscGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdG9vbGJhclRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlQWxpZ25tZW50OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gIEBJbnB1dCgpIGRlZmF1bHRCYWNrSHJlZjogc3RyaW5nO1xuICBASW5wdXQoKSBoaWRlQmFja0J1dHRvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgdGl0bGVNYXhMaW5lczogbnVtYmVyO1xuICBASW5wdXQoKSBoYXNJbnRlcmFjdGl2ZVRpdGxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNldCBtYXhXaWR0aCh3aWR0aDogTWF4V2lkdGgpIHtcbiAgICB0aGlzLl9tYXhXaWR0aCA9IHdpZHRoO1xuICB9XG5cbiAgZ2V0IG1heFdpZHRoKCk6IE1heFdpZHRoIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4V2lkdGg7XG4gIH1cblxuICBwcml2YXRlIF9tYXhXaWR0aDogTWF4V2lkdGggPSAnZGVmYXVsdCc7XG5cbiAgcHJpdmF0ZSBfdGFiQmFyQm90dG9tSGlkZGVuOiBib29sZWFuO1xuICBwdWJsaWMgZ2V0IHRhYkJhckJvdHRvbUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiQmFyQm90dG9tSGlkZGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudGFic0NvbXBvbmVudCkge1xuICAgICAgLy8gYXMgd2UgYXJlIHNldHRpbmcgYSBjbGFzcyBvbiB0YWJzLCB3ZSBuZWVkIHRoaXMgdG8gaGFwcGVuIGluIGEgc2VwYXJhdGUgY2QgY3ljbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuID0gdmFsdWU7XG4gIH1cblxuICBAT3V0cHV0KCkgZW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBsZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPFB1bGxUb1JlZnJlc2hFdmVudD4oKTtcbiAgQE91dHB1dCgpIGJhY2tCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSB0b29sYmFyVGl0bGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8UG9pbnRlckV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBjb250ZW50PzogSW9uQ29udGVudDtcbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkNvbnRlbnRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Db250ZW50RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uSGVhZGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBpb25IZWFkZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25IZWFkZXJFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25Gb290ZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uRm9vdGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uRm9vdGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uVG9vbGJhciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Ub29sYmFyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVG9vbGJhckVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKElvbkJ1dHRvbnMsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvblRvb2xiYXJCdXR0b25zRWxlbWVudDogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTElvbkJ1dHRvbnNFbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoSW9uQmFja0J1dHRvbiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgYmFja0J1dHRvbjogSW9uQmFja0J1dHRvbjtcbiAgQFZpZXdDaGlsZCgncGFnZVRpdGxlJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgcGFnZVRpdGxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzdGlja3lDb250ZW50Q29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgc3RpY2t5Q29udGVudENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzaW1wbGVUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVN1YnRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVN1YnRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUFjdGlvbnNEaXJlY3RpdmUpXG4gIGN1c3RvbUFjdGlvbnM6IFF1ZXJ5TGlzdDxQYWdlQWN0aW9uc0RpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUNvbnRlbnREaXJlY3RpdmUpXG4gIHByaXZhdGUgY3VzdG9tQ29udGVudDogUXVlcnlMaXN0PFBhZ2VDb250ZW50RGlyZWN0aXZlPjtcbiAgQENvbnRlbnRDaGlsZChQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHN0aWNreUNvbnRlbnRSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoSGVhZGVyQ29tcG9uZW50KVxuICBoZWFkZXI/OiBIZWFkZXJDb21wb25lbnQ7XG5cbiAgaGFzSGVhZGVyOiBib29sZWFuO1xuICBoYXNQYWdlVGl0bGU6IGJvb2xlYW47XG4gIGhhc1BhZ2VTdWJ0aXRsZTogYm9vbGVhbjtcbiAgdG9vbGJhclRpdGxlVmlzaWJsZTogYm9vbGVhbjtcbiAgdG9vbGJhckFjdGlvbnNWaXNpYmxlOiBib29sZWFuO1xuICBpc0NvbnRlbnRTY3JvbGxlZDogYm9vbGVhbjtcbiAgaXNTdGlja3lDb250ZW50UGlubmVkID0gZmFsc2U7XG5cbiAgZml0SGVhZGluZ0NvbmZpZzogRml0SGVhZGluZ0NvbmZpZztcblxuICB0b29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY3VzdG9tQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwYWdlQWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZENvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5QWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZEFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZT47XG4gIGhlYWRlckFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SGVhZGVyQWN0aW9uc0RpcmVjdGl2ZT47XG4gIHRpdGxlQWN0aW9uSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIZWFkZXJUaXRsZUFjdGlvbkljb25EaXJlY3RpdmU+O1xuXG4gIHByaXZhdGUgdGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIHN0aWNreUFjdGlvbnNJbnRlcnNlY3Rpb25PYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIHN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIGlzT2JzZXJ2aW5nVGl0bGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc09ic2VydmluZ0FjdGlvbnMgPSBmYWxzZTtcblxuICBwcml2YXRlIHVybDogc3RyaW5nO1xuICBwcml2YXRlIGlzQWN0aXZlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgbmdPbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBjb250ZW50U2Nyb2xsZWQkOiBPYnNlcnZhYmxlPFNjcm9sbERldGFpbD47XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uU3RhcnQkOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25TdGFydD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgTmF2aWdhdGlvblN0YXJ0ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICk7XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgdGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKVxuICApO1xuXG4gIHRvb2xiYXJBY3Rpb25Hcm91cEluamVjdG9yOiBJbmplY3RvcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBtb2RhbE5hdmlnYXRpb25TZXJ2aWNlOiBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSB0YWJzQ29tcG9uZW50OiBUYWJzQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChQQUdFX0JBQ0tfQlVUVE9OX09WRVJSSURFKVxuICAgIHByaXZhdGUgYmFja0J1dHRvbk92ZXJyaWRlOiBQYWdlQmFja0J1dHRvbk92ZXJyaWRlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSByb3V0ZXJPdXRsZXQ6IElvblJvdXRlck91dGxldCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgbmF2Q3RybDogTmF2Q29udHJvbGxlcixcbiAgICBwcml2YXRlIGlvbmljRWxlbWVudFBhcnRIZWxwZXI6IElvbmljRWxlbWVudFBhcnRIZWxwZXIsXG4gICAgcHVibGljIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBwcml2YXRlIGNvbnRlbnRSZWFkeVByb21pc2U6IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgd2hlbkNvbnRlbnRSZWFkeSgpIHtcbiAgICBpZiAoIXRoaXMuY29udGVudFJlYWR5UHJvbWlzZSkge1xuICAgICAgdGhpcy5jb250ZW50UmVhZHlQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmlvbkNvbnRlbnRFbGVtZW50LCAoZW50cnkpID0+IHtcbiAgICAgICAgICBpZiAoZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMuaW9uQ29udGVudEVsZW1lbnQpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFJlYWR5UHJvbWlzZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlV3JhcHBlcigpO1xuICAgIHRoaXMuaW9uaWNFbGVtZW50UGFydEhlbHBlci5zZXRQYXJ0KFxuICAgICAgJ2JhY2tncm91bmQnLFxuICAgICAgdGhpcy5pb25Ub29sYmFyRWxlbWVudCxcbiAgICAgICcudG9vbGJhci1iYWNrZ3JvdW5kJ1xuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25Hcm91cENvbmZpZzogQWN0aW9uR3JvdXBDb25maWcgPSB7XG4gICAgICBpc0NvbmRlbnNlZDogdHJ1ZSxcbiAgICAgIG1heFZpc2libGVBY3Rpb25zOiAxLFxuICAgIH07XG4gICAgdGhpcy50b29sYmFyQWN0aW9uR3JvdXBJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFDVElPTkdST1VQX0NPTkZJRyxcbiAgICAgICAgICB1c2VWYWx1ZTogYWN0aW9uR3JvdXBDb25maWcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnRpdGxlTWF4TGluZXMpIHtcbiAgICAgIHRoaXMuZml0SGVhZGluZ0NvbmZpZyA9IHtcbiAgICAgICAgbWF4TGluZXM6IGNoYW5nZXMudGl0bGVNYXhMaW5lcy5jdXJyZW50VmFsdWUsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5zdWJ0aXRsZSAmJiAhY2hhbmdlcy5zdWJ0aXRsZS5pc0ZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnN1YnRpdGxlID0gY2hhbmdlcy50aXRsZS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmhhc1BhZ2VTdWJ0aXRsZSA9IHRoaXMuc3VidGl0bGUgIT09IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudFNjcm9sbGVkJCA9IHRoaXMuY29udGVudC5pb25TY3JvbGwucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKGNvbnRlbnRTY3JvbGxEZWJvdW5jZVRpbWVJbk1TKSxcbiAgICAgICAgbWFwKChldmVudCkgPT4gZXZlbnQuZGV0YWlsKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKVxuICAgICAgKTtcblxuICAgICAgdGhpcy5jb250ZW50U2Nyb2xsZWQkLnN1YnNjcmliZSgoc2Nyb2xsSW5mbzogU2Nyb2xsRGV0YWlsKSA9PiB7XG4gICAgICAgIGlmIChzY3JvbGxJbmZvLnNjcm9sbFRvcCA+IGNvbnRlbnRTY3JvbGxlZE9mZnNldEluUGl4ZWxzICE9PSB0aGlzLmlzQ29udGVudFNjcm9sbGVkKSB7XG4gICAgICAgICAgdGhpcy5pc0NvbnRlbnRTY3JvbGxlZCA9ICF0aGlzLmlzQ29udGVudFNjcm9sbGVkO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIFRoaXMgaW5zdGFuY2UgaGFzIG9ic2VydmVkIGEgcGFnZSBlbnRlciBzbyByZWdpc3RlciB0aGUgY29ycmVjdCB1cmwgZm9yIHRoaXMgaW5zdGFuY2VcbiAgICB0aGlzLnVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICB0aGlzLm9uRW50ZXIoKTtcblxuICAgIC8vIFdhdGNoIG5hdmlnYXRpb24gZXZlbnRzIGZvciBwYWdlIGVudGVyIGFuZCBsZWF2ZVxuICAgIHRoaXMubmF2aWdhdGlvblN0YXJ0JC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5nZXRQYXRobmFtZShldmVudC51cmwpICE9PSB0aGlzLmdldFBhdGhuYW1lKHRoaXMudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZSh0aGlzLnVybCkgJiZcbiAgICAgICAgIXRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5pc01vZGFsUm91dGUoZXZlbnQudXJsKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMub25MZWF2ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5uYXZpZ2F0aW9uRW5kJC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICBpZiAodGhpcy5nZXRQYXRobmFtZShldmVudC51cmxBZnRlclJlZGlyZWN0cykgPT09IHRoaXMuZ2V0UGF0aG5hbWUodGhpcy51cmwpKSB7XG4gICAgICAgIHRoaXMub25FbnRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5pbnRlcmNlcHRCYWNrQnV0dG9uQ2xpY2tzU2V0dXAoKTtcbiAgICB0aGlzLmluaXRpYWxpemVTdGlja3lJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICAgIHRoaXMuc2V0QWN0aW9uQnV0dG9uc1dpZHRoKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplSGVhZGVyKCk7XG4gICAgdGhpcy5pbml0aWFsaXplVGl0bGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpb25zKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm5nT25EZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy50aXRsZUludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zdGlja3lBY3Rpb25zSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLnN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgZGVsZWdhdGVSZWZyZXNoRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgIGNvbXBsZXRlOiBldmVudC50YXJnZXQuY29tcGxldGUuYmluZChldmVudC50YXJnZXQpLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWF4V2lkdGhDbGFzc2VzKCkge1xuICAgIGlmICghdGhpcy5tYXhXaWR0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5tYXhXaWR0aCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBgbWF4LXdpZHRoLSR7dGhpcy5tYXhXaWR0aH1gO1xuICB9XG5cbiAgb25UaXRsZUNsaWNrKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICBpZiAodGhpcy50b29sYmFyVGl0bGVDbGljay5vYnNlcnZlZCkge1xuICAgICAgdGhpcy50b29sYmFyVGl0bGVDbGljay5lbWl0KGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFkZXI/LnRpdGxlQ2xpY2suZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVXcmFwcGVyKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuXG4gICAgdGhpcy5vYnNlcnZlVGl0bGUoKTtcbiAgICB0aGlzLm9ic2VydmVBY3Rpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIG9uTGVhdmUoKSB7XG4gICAgaWYgKCF0aGlzLmlzQWN0aXZlKSByZXR1cm47XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5sZWF2ZS5lbWl0KCk7XG5cbiAgICB0aGlzLnVub2JzZXJ2ZVRpdGxlKCk7XG4gICAgdGhpcy51bm9ic2VydmVBY3Rpb25zKCk7XG5cbiAgICBpZiAodGhpcy50YWJCYXJCb3R0b21IaWRkZW4gJiYgdGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRCYWNrQnV0dG9uQ2xpY2tzU2V0dXAoKSB7XG4gICAgaWYgKHRoaXMuYmFja0J1dHRvbk92ZXJyaWRlKSB7XG4gICAgICB0aGlzLmJhY2tCdXR0b24ub25DbGljayA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5iYWNrQnV0dG9uT3ZlcnJpZGUubmF2aWdhdGVCYWNrKHRoaXMucm91dGVyT3V0bGV0LCB0aGlzLm5hdkN0cmwsIHRoaXMuZGVmYXVsdEJhY2tIcmVmKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSW50ZXJjZXB0IGJhY2stYnV0dG9uIGNsaWNrIGV2ZW50cywgZGVmYXVsdGluZyB0byB0aGUgYnVpbHQtaW4gY2xpY2staGFuZGxlci5cbiAgICBpZiAodGhpcy5iYWNrQnV0dG9uQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uQ2xpY2tcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLmJhY2tCdXR0b24ub25DbGljay5iaW5kKHRoaXMuYmFja0J1dHRvbikpO1xuICAgIH1cbiAgICB0aGlzLmJhY2tCdXR0b24ub25DbGljayA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuYmFja0J1dHRvbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTdGlja3lJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHtcbiAgICBpZiAodGhpcy5zdGlja3lDb250ZW50VGVtcGxhdGUpIHtcbiAgICAgIC8vIFN0aWNreSBjb250ZW50IHByZXNlbnQgLSBzdGFydCBvYnNlcnZpbmcgZm9yIHN0aWNraW5lc3NcbiAgICAgIGlmICghdGhpcy5zdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5zdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSB0aGlzLmNyZWF0ZVN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RpY2t5Q29udGVudEludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5zdGlja3lDb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplSGVhZGVyKCkge1xuICAgIGlmICh0aGlzLmhhc0hlYWRlciA9PT0gdW5kZWZpbmVkICYmICEhdGhpcy5oZWFkZXIpIHtcbiAgICAgIHRoaXMuaGFzSGVhZGVyID0gdHJ1ZTtcbiAgICAgIC8vIEhlYWRlciBjb3VsZCBsYXRlciBiZSByZW1vdmVkIGZyb20gRE9NIChlLmcuIGluIHZpcnR1YWwgc2Nyb2xsaW5nIHNjZW5hcmlvcyksXG4gICAgICAvLyBzbyBzdG9yZSBhIHJlZmVyZW5jZSB0byBgaGVhZGVyLnRpdGxlQWN0aW9uSWNvblRlbXBsYXRlYCBhbmQgYGhlYWRlci50aXRsZUNsaWNrYDpcbiAgICAgIHRoaXMudGl0bGVBY3Rpb25JY29uVGVtcGxhdGUgPSB0aGlzLmhlYWRlci50aXRsZUFjdGlvbkljb25UZW1wbGF0ZTtcbiAgICAgIGlmICh0aGlzLmhlYWRlci50aXRsZUNsaWNrLm9ic2VydmVkICYmIHRoaXMuaGFzSW50ZXJhY3RpdmVUaXRsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuaGFzSW50ZXJhY3RpdmVUaXRsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGl0bGUoKSB7XG4gICAgaWYgKHRoaXMuaGFzSGVhZGVyICYmIHRoaXMuaXNPYnNlcnZpbmdUaXRsZSAmJiAhdGhpcy5oZWFkZXI/LnRpdGxlRWxlbWVudCkge1xuICAgICAgLy8gSWYgd2UncmUgYWxyZWFkeSBvYnNlcnZpbmcgdGhlIGhlYWRlcidzIHRpdGxlIGVsZW1lbnQsIGJ1dCBpdCdzIG5vIGxvbmdlciBwcmVzZW50LFxuICAgICAgLy8gaXQgbWVhbnMgaXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIERPTSAoZS5nLiBpbiB2aXJ0dWFsIHNjcm9sbGluZyBzY2VuYXJpb3MpLlxuICAgICAgLy8gRmxpcCBvYnNlcnZpbmcgZmxhZzpcbiAgICAgIHRoaXMuaXNPYnNlcnZpbmdUaXRsZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNQYWdlVGl0bGUpIHtcbiAgICAgIGlmICghdGhpcy5pc09ic2VydmluZ1RpdGxlICYmICEhdGhpcy5oZWFkZXI/LnRpdGxlRWxlbWVudCkge1xuICAgICAgICAvLyBIZWFkZXIgYW5kIHRpdGxlIGVsZW1lbnQgcmUtYXR0YWNoZWQgdG8gRE9NIC0gb2JzZXJ2ZSB0aXRsZTpcbiAgICAgICAgdGhpcy5vYnNlcnZlVGl0bGUoKTtcbiAgICAgIH1cblxuICAgICAgLy8gRW5zdXJlcyByZXN0IG9mIGluaXRpYWxpemVUaXRsZSgpIHdvbid0IHJ1biwgaWYgYWxyZWFkeSBpbml0aWFsaXplZFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaGFzUGFnZVRpdGxlID1cbiAgICAgIHRoaXMudGl0bGUgIT09IHVuZGVmaW5lZCB8fCAhIXRoaXMuY3VzdG9tVGl0bGVUZW1wbGF0ZSB8fCAhIXRoaXMuaGVhZGVyPy50aXRsZTtcbiAgICB0aGlzLnRvb2xiYXJUaXRsZVZpc2libGUgPSAhdGhpcy5oYXNQYWdlVGl0bGU7XG4gICAgdGhpcy5oYXNQYWdlU3VidGl0bGUgPSB0aGlzLnN1YnRpdGxlICE9PSB1bmRlZmluZWQgfHwgISF0aGlzLmN1c3RvbVN1YnRpdGxlVGVtcGxhdGU7XG4gICAgaWYgKHRoaXMuaGVhZGVyPy50aXRsZSAmJiAhdGhpcy50b29sYmFyVGl0bGUpIHtcbiAgICAgIHRoaXMudG9vbGJhclRpdGxlID0gdGhpcy5oZWFkZXIudGl0bGU7XG4gICAgICB0aGlzLmhlYWRlci50aXRsZSQucGlwZSh0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHRpdGxlKSA9PiB7XG4gICAgICAgIHRoaXMudG9vbGJhclRpdGxlID0gdGl0bGU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLm9ic2VydmVUaXRsZSgpO1xuXG4gICAgY29uc3QgZGVmYXVsdFRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGUgfHwgdGhpcy5zaW1wbGVUaXRsZVRlbXBsYXRlO1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgdGhpcy50b29sYmFyVGl0bGVUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgID8gdGhpcy5jdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgOiB0eXBlb2YgdGhpcy50b29sYmFyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gdGhpcy5zaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgICA6IGRlZmF1bHRUaXRsZVRlbXBsYXRlO1xuXG4gICAgaWYgKHRoaXMudG9vbGJhclRpdGxlQ2xpY2sub2JzZXJ2ZWQgJiYgdGhpcy5oYXNJbnRlcmFjdGl2ZVRpdGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaGFzSW50ZXJhY3RpdmVUaXRsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVGl0bGUoKSB7XG4gICAgaWYgKCF0aGlzLmhhc1BhZ2VUaXRsZSkge1xuICAgICAgLy8gTm90aGluZyB0byBvYnNlcnZlXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzT2JzZXJ2aW5nVGl0bGUpIHtcbiAgICAgIC8vIEFscmVhZHkgb2JzZXJ2aW5nXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gV2UgYXJlIG5vdCBhY3R1YWxseSBvYnNlcnZpbmcgdGhlIHRpdGxlIHVudGlsIGFmdGVyIHRoZSBgd2hlbkNvbnRlbnRSZWFkeWAgcHJvbWlzZSBoYXMgcmVzb2x2ZWQsXG4gICAgLy8gYnV0IHNpbmNlIHdlJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBwYWdlIGhhcyBhIHRpdGxlIGluIHRoZSBndWFyZCBhYm92ZSxcbiAgICAvLyB3ZSdsbCAtIGVhZ2VybHkgLSBzZXQgdGhpcyBmbGFnIG5vdyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJ1bnMgb2YgdGhlIHJlc3Qgb2YgdGhpcyBtZXRob2Q6XG4gICAgdGhpcy5pc09ic2VydmluZ1RpdGxlID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy50aXRsZUludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLnRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgLy8gSW4gcmFyZSBzY2VuYXJpb3Mgd2UgZ2V0IG1vcmUgdGhhbiAxIGVudHJ5IC0gdXNlIHRoZSBsYXN0IG9uZTpcbiAgICAgICAgICBjb25zdCBsYXN0RW50cnkgPSBlbnRyaWVzW2VudHJpZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKGxhc3RFbnRyeSkge1xuICAgICAgICAgICAgY29uc3Qgc2hvd1Rvb2xiYXJUaXRsZSA9ICFsYXN0RW50cnkuaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgICAgICAvLyBPbmx5IGZsaXAgdGhlIGZsYWcgYW5kIHJ1biBDaGFuZ2UgRGV0ZWN0aW9uIHdoZW4gY2hhbmdlZDpcbiAgICAgICAgICAgIGlmIChzaG93VG9vbGJhclRpdGxlICE9PSB0aGlzLnRvb2xiYXJUaXRsZVZpc2libGUpIHtcbiAgICAgICAgICAgICAgdGhpcy50b29sYmFyVGl0bGVWaXNpYmxlID0gc2hvd1Rvb2xiYXJUaXRsZTtcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7IHJvb3Q6IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCB9XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFJ1biBvdXRzaWRlIEFuZ3VsYXIgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSB0cmlnZ2VyaW5nIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAvLyBhbmQgLSB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgLSBhbiBpbmZpbml0ZSBsb29wIHdoZW4gY2FsbGVkIHdpdGhpbiBuZ0FmdGVyQ29udGVudENoZWNrZWQ6XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMud2hlbkNvbnRlbnRSZWFkeSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCB0aXRsZUVsZW1lbnRSZWYgPSB0aGlzLnBhZ2VUaXRsZSB8fCB0aGlzLmhlYWRlcj8udGl0bGVFbGVtZW50O1xuICAgICAgICBpZiAodGl0bGVFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy50aXRsZUludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGl0bGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5vYnNlcnZlVGl0bGUoKSB7XG4gICAgY29uc3QgdGl0bGVFbGVtZW50UmVmID0gdGhpcy5wYWdlVGl0bGUgfHwgdGhpcy5oZWFkZXI/LnRpdGxlRWxlbWVudDtcbiAgICBpZiAodGl0bGVFbGVtZW50UmVmKSB7XG4gICAgICB0aGlzLnRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aXRsZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuaXNPYnNlcnZpbmdUaXRsZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5oZWFkZXJBY3Rpb25zVGVtcGxhdGUgPT09IHVuZGVmaW5lZCAmJiAhIXRoaXMuaGVhZGVyKSB7XG4gICAgICB0aGlzLmhlYWRlckFjdGlvbnNUZW1wbGF0ZSA9IHRoaXMuaGVhZGVyLmFjdGlvbnNUZW1wbGF0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzSGVhZGVyICYmIHRoaXMuaXNPYnNlcnZpbmdBY3Rpb25zICYmICF0aGlzLmhlYWRlcj8uYWN0aW9uc0VsZW1lbnQpIHtcbiAgICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgb2JzZXJ2aW5nIHRoZSBoZWFkZXIncyBhY3Rpb25zIGVsZW1lbnQsIGJ1dCBpdCdzIG5vIGxvbmdlciBwcmVzZW50LFxuICAgICAgLy8gaXQgbWVhbnMgaXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIERPTSAoZS5nLiBpbiB2aXJ0dWFsIHNjcm9sbGluZyBzY2VuYXJpb3MpLlxuICAgICAgLy8gRmxpcCBvYnNlcnZpbmcgZmxhZzpcbiAgICAgIHRoaXMuaXNPYnNlcnZpbmdBY3Rpb25zID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5vYnNlcnZlQWN0aW9ucygpO1xuXG4gICAgdGhpcy5jdXN0b21BY3Rpb25zLmZvckVhY2goKHBhZ2VBY3Rpb24pID0+IHtcbiAgICAgIGlmIChwYWdlQWN0aW9uLmlzRml4ZWQpIHtcbiAgICAgICAgdGhpcy5maXhlZEFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VBY3Rpb24uaXNTdGlja3kpIHtcbiAgICAgICAgdGhpcy5zdGlja3lBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYWdlQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUFjdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLmhlYWRlcj8uYWN0aW9uc0VsZW1lbnQpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gb2JzZXJ2ZVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzT2JzZXJ2aW5nQWN0aW9ucykge1xuICAgICAgLy8gQWxyZWFkeSBvYnNlcnZpbmdcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBXZSBhcmUgbm90IGFjdHVhbGx5IG9ic2VydmluZyBhY3Rpb25zIHVudGlsIGFmdGVyIHRoZSBgd2hlbkNvbnRlbnRSZWFkeWAgcHJvbWlzZSBoYXMgcmVzb2x2ZWQsXG4gICAgLy8gYnV0IHNpbmNlIHdlJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZXJlJ3MgYW4gYWN0aW9ucyBlbGVtZW50IHByZXNlbnQgaW4gdGhlIGd1YXJkIGFib3ZlLFxuICAgIC8vIHdlJ2xsIC0gZWFnZXJseSAtIHNldCB0aGlzIGZsYWcgbm93IHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgcmUtcnVucyBvZiB0aGUgcmVzdCBvZiB0aGlzIG1ldGhvZDpcbiAgICB0aGlzLmlzT2JzZXJ2aW5nQWN0aW9ucyA9IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuc3RpY2t5QWN0aW9uc0ludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLnN0aWNreUFjdGlvbnNJbnRlcnNlY3Rpb25PYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICAgKGVudHJpZXMpID0+IHtcbiAgICAgICAgICAvLyBJbiByYXJlIHNjZW5hcmlvcyB3ZSBnZXQgbW9yZSB0aGFuIDEgZW50cnkgLSB1c2UgdGhlIGxhc3Qgb25lOlxuICAgICAgICAgIGNvbnN0IGxhc3RFbnRyeSA9IGVudHJpZXNbZW50cmllcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZiAobGFzdEVudHJ5KSB7XG4gICAgICAgICAgICBjb25zdCBzaG93VG9vbGJhckFjdGlvbnMgPSAhbGFzdEVudHJ5LmlzSW50ZXJzZWN0aW5nO1xuICAgICAgICAgICAgLy8gT25seSBmbGlwIHRoZSBmbGFnIGFuZCBydW4gQ2hhbmdlIERldGVjdGlvbiB3aGVuIGNoYW5nZWQ6XG4gICAgICAgICAgICBpZiAoc2hvd1Rvb2xiYXJBY3Rpb25zICE9PSB0aGlzLnRvb2xiYXJBY3Rpb25zVmlzaWJsZSkge1xuICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJBY3Rpb25zVmlzaWJsZSA9IHNob3dUb29sYmFyQWN0aW9ucztcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7IHJvb3Q6IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCB9XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFJ1biBvdXRzaWRlIEFuZ3VsYXIgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSB0cmlnZ2VyaW5nIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAvLyBhbmQgLSB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgLSBhbiBpbmZpbml0ZSBsb29wIHdoZW4gY2FsbGVkIHdpdGhpbiBuZ0FmdGVyQ29udGVudENoZWNrZWQ6XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMud2hlbkNvbnRlbnRSZWFkeSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5oZWFkZXI/LmFjdGlvbnNFbGVtZW50Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5zdGlja3lBY3Rpb25zSW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhlYWRlci5hY3Rpb25zRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVub2JzZXJ2ZUFjdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuaGVhZGVyPy5hY3Rpb25zRWxlbWVudCkge1xuICAgICAgdGhpcy5zdGlja3lBY3Rpb25zSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aGlzLmhlYWRlci5hY3Rpb25zRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5pc09ic2VydmluZ0FjdGlvbnMgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aW9uQnV0dG9uc1dpZHRoKCkge1xuICAgIGlmICghdGhpcy5pb25Ub29sYmFyQnV0dG9uc0VsZW1lbnQpIHJldHVybjtcblxuICAgIC8vIEVuc3VyZSBpb24tdG9vbGJhciBjdXN0b20gZWxlbWVudCBoYXMgYmVlbiBkZWZpbmVkIChwcmltYXJpbHkgd2hlbiB0ZXN0aW5nLCBidXQgZG9lc24ndCBodXJ0KTpcbiAgICBjdXN0b21FbGVtZW50cy53aGVuRGVmaW5lZCh0aGlzLmlvblRvb2xiYXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQubG9jYWxOYW1lKS50aGVuKCgpID0+IHtcbiAgICAgIC8vIEVuc3VyZSB0b29sYmFyIGFuZCBidXR0b25zIGhhdmUgYmVlbiByZW5kZXJlZCBhbmQgaGFzIGRpbWVuc2lvbnM6XG4gICAgICBjb21wb25lbnRPblJlYWR5KHRoaXMuaW9uVG9vbGJhckVsZW1lbnQubmF0aXZlRWxlbWVudCwgKHRvb2xiYXIpID0+IHtcbiAgICAgICAgbGV0IHN0YXJ0QnV0dG9uc1dpZHRoID0gMDtcbiAgICAgICAgbGV0IGVuZEJ1dHRvbnNXaWR0aCA9IDA7XG5cbiAgICAgICAgdGhpcy5pb25Ub29sYmFyQnV0dG9uc0VsZW1lbnRcbiAgICAgICAgICAubWFwKChpb25CdXR0b25zRWxlbWVudFJlZikgPT4gaW9uQnV0dG9uc0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAuZm9yRWFjaCgoaW9uQnV0dG9uc0VsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShpb25CdXR0b25zRWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBtYXJnaW4gPSBwYXJzZUludChzdHlsZS5tYXJnaW5MZWZ0KSArIHBhcnNlSW50KHN0eWxlLm1hcmdpblJpZ2h0KTtcbiAgICAgICAgICAgIGlmIChpb25CdXR0b25zRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3Nsb3QnKSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICBzdGFydEJ1dHRvbnNXaWR0aCArPSBpb25CdXR0b25zRWxlbWVudC5vZmZzZXRXaWR0aCArIG1hcmdpbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVuZEJ1dHRvbnNXaWR0aCArPSBpb25CdXR0b25zRWxlbWVudC5vZmZzZXRXaWR0aCArIG1hcmdpbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBhY3Rpb25CdXR0b25zTWF4V2lkdGggPSBNYXRoLm1heChzdGFydEJ1dHRvbnNXaWR0aCwgZW5kQnV0dG9uc1dpZHRoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICB0b29sYmFyLFxuICAgICAgICAgICctLWFjdGlvbi1idXR0b25zLXdpZHRoJyxcbiAgICAgICAgICBgJHthY3Rpb25CdXR0b25zTWF4V2lkdGh9cHhgLFxuICAgICAgICAgIFJlbmRlcmVyU3R5bGVGbGFnczIuRGFzaENhc2VcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGVudCgpIHtcbiAgICB0aGlzLmN1c3RvbUNvbnRlbnQuZm9yRWFjaCgoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQuaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKSB7XG4gICAgdGhpcy5zdGlja3lDb250ZW50VGVtcGxhdGUgPSB0aGlzLnN0aWNreUNvbnRlbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQgPSB7XG4gICAgICByb290OiB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgfTtcblxuICAgIGNvbnN0IGNhbGxiYWNrOiBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrID0gKGVudHJpZXMpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzU3RpY2t5Q29udGVudFBpbm5lZCAhPT0gIWVudHJpZXNbMF0uaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgdGhpcy5pc1N0aWNreUNvbnRlbnRQaW5uZWQgPSAhdGhpcy5pc1N0aWNreUNvbnRlbnRQaW5uZWQ7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhdGhuYW1lKHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHVybC5zcGxpdCgnPycpWzBdO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbFNob3cnLCBbJyRldmVudCddKVxuICBfb25LZXlib2FyZFdpbGxTaG93KGluZm8/OiB7IGtleWJvYXJkSGVpZ2h0OiBudW1iZXIgfSkge1xuICAgIGlmIChpbmZvICYmIGluZm8ua2V5Ym9hcmRIZWlnaHQpIHtcbiAgICAgIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgJy0ta2V5Ym9hcmQtb2Zmc2V0JyxcbiAgICAgICAgYCR7aW5mby5rZXlib2FyZEhlaWdodH1weGBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZFdpbGxIaWRlKCkge1xuICAgIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1rZXlib2FyZC1vZmZzZXQnLCAnMHB4Jyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKGB3aW5kb3c6JHtzZWxlY3RlZFRhYkNsaWNrRXZlbnR9YClcbiAgX29uU2VsZWN0ZWRUYWJDbGljaygpIHtcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORyk7XG4gICAgfVxuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyXG4gICAgW2NsYXNzLmNvbnRlbnQtc2Nyb2xsZWRdPVwiaXNDb250ZW50U2Nyb2xsZWRcIlxuICAgIFtjbGFzcy5jb250ZW50LXBpbm5lZF09XCJpc1N0aWNreUNvbnRlbnRQaW5uZWRcIlxuICA+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvblxuICAgICAgICB0ZXh0PVwiXCJcbiAgICAgICAgW2RlZmF1bHRIcmVmXT1cImRlZmF1bHRCYWNrSHJlZlwiXG4gICAgICAgIGljb249XCJhc3NldHMva2lyYnkvaWNvbnMvc3ZnL2Fycm93LWJhY2suc3ZnXCJcbiAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiaGlkZUJhY2tCdXR0b24gPyAnaGlkZGVuJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRyYW5zbGF0aW9ucy5nZXQoJ2JhY2snKVwiXG4gICAgICA+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLXRpdGxlIFtjbGFzcy5zbGlkZS1hbmQtZmFkZS1pbl09XCJ0b29sYmFyVGl0bGVWaXNpYmxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci10aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRpdGxlQWN0aW9uSWNvblRlbXBsYXRlICYmICFoYXNJbnRlcmFjdGl2ZVRpdGxlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJUaXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiISF0aXRsZUFjdGlvbkljb25UZW1wbGF0ZSB8fCBoYXNJbnRlcmFjdGl2ZVRpdGxlXCJcbiAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlXT1cImhhc0ludGVyYWN0aXZlVGl0bGVcIlxuICAgICAgICAgIFtjbGFzcy5oYXMtaWNvbl09XCIhIXRpdGxlQWN0aW9uSWNvblRlbXBsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25UaXRsZUNsaWNrKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlQWN0aW9uSWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9uc1xuICAgICAgKm5nSWY9XCIhIWhlYWRlckFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICBjbGFzcz1cImhpZGVcIlxuICAgICAgc2xvdD1cInByaW1hcnlcIlxuICAgICAgW2NsYXNzLmZhZGUtaW5dPVwidG9vbGJhckFjdGlvbnNWaXNpYmxlXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyQWN0aW9uc1RlbXBsYXRlOyBpbmplY3RvcjogdG9vbGJhckFjdGlvbkdyb3VwSW5qZWN0b3JcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi1idXR0b25zICpuZ0lmPVwiISFzdGlja3lBY3Rpb25zVGVtcGxhdGVcIiBjbGFzcz1cImxlZ2FjeS1hY3Rpb25zXCIgc2xvdD1cInByaW1hcnlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGlja3lBY3Rpb25zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tYnV0dG9ucyAqbmdJZj1cIiEhZml4ZWRBY3Rpb25zVGVtcGxhdGVcIiBjbGFzcz1cImxlZ2FjeS1hY3Rpb25zXCIgc2xvdD1cInNlY29uZGFyeVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpeGVkQWN0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50XG4gIHNjcm9sbEV2ZW50cz1cInRydWVcIlxuICBmb3JjZU92ZXJzY3JvbGw9XCJmYWxzZVwiXG4gIFtjbGFzc109XCJnZXRNYXhXaWR0aENsYXNzZXMoKVwiXG4gIFtjbGFzcy5oYXMtaGVhZGVyXT1cImhhc0hlYWRlclwiXG4+XG4gIDxpb24tcmVmcmVzaGVyXG4gICAgKm5nSWY9XCJyZWZyZXNoLm9ic2VydmVycy5sZW5ndGggPiAwXCJcbiAgICAoaW9uUmVmcmVzaCk9XCJkZWxlZ2F0ZVJlZnJlc2hFdmVudCgkZXZlbnQpXCJcbiAgICBzbG90PVwiZml4ZWRcIlxuICA+XG4gICAgPGtpcmJ5LXNwaW5uZXI+PC9raXJieS1zcGlubmVyPlxuICA8L2lvbi1yZWZyZXNoZXI+XG5cbiAgPCEtLSBQYWdlIGhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cInBhZ2UtaGVhZGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiaGFzUGFnZVRpdGxlICYmICFoYXNIZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBhZ2UtaGVhZGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtY2VudGVyJzogdGl0bGVBbGlnbm1lbnQgPT09ICdjZW50ZXInLFxuICAgICAgICAndGV4dC1yaWdodCc6IHRpdGxlQWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdiAjcGFnZVRpdGxlIGNsYXNzPVwicGFnZS10aXRsZVwiIFtjbGFzcy5oYXMtYWN0aW9uc109XCIhIXBhZ2VBY3Rpb25zVGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGl0bGVUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZVRpdGxlVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VBY3Rpb25zVGVtcGxhdGUgfHwgZGVmYXVsdFBhZ2VBY3Rpb25zVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJoYXNQYWdlU3VidGl0bGVcIiBjbGFzcz1cInBhZ2Utc3VidGl0bGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tU3VidGl0bGVUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZVN1YnRpdGxlVGVtcGxhdGVcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBIZWFkZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJwYWdlLWhlYWRlci1jb250YWluZXJcIiAqbmdJZj1cImhhc0hlYWRlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPCEtLSAgU3RpY2t5IGNvbnRlbnQgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGlja3lDb250ZW50VGVtcGxhdGVcIj5cbiAgICA8ZGl2XG4gICAgICAjc3RpY2t5Q29udGVudENvbnRhaW5lclxuICAgICAgY2xhc3M9XCJzdGlja3ktY29udGVudC1jb250YWluZXJcIlxuICAgICAgW2NsYXNzLmNvbnRlbnQtcGlubmVkXT1cImlzU3RpY2t5Q29udGVudFBpbm5lZFwiXG4gICAgPlxuICAgICAgPGRpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0aWNreUNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gQ29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNvbnRlbnRUZW1wbGF0ZSB8fCBkZWZhdWx0Q29udGVudFRlbXBsYXRlXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgc2xvdD1cImZpeGVkXCIgY2xhc3M9XCJmaXhlZC1jb250ZW50XCIgKm5nSWY9XCJmaXhlZENvbnRlbnRUZW1wbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWlubmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZml4ZWRDb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2lvbi1jb250ZW50PlxuXG48aW9uLWZvb3Rlcj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG48L2lvbi1mb290ZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VUaXRsZVRlbXBsYXRlPlxuICA8aDEgW2tpcmJ5Rml0SGVhZGluZ109XCJmaXRIZWFkaW5nQ29uZmlnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbXBsZVRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9oMT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRQYWdlU3VidGl0bGVUZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbXBsZVN1YnRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRQYWdlQWN0aW9uc1RlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWFjdGlvbnNcIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtY29udGVudFwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlVGl0bGVUZW1wbGF0ZT57eyB0aXRsZSB9fTwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpbXBsZVN1YnRpdGxlVGVtcGxhdGU+e3sgc3VidGl0bGUgfX08L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZT57eyB0b29sYmFyVGl0bGUgfX08L25nLXRlbXBsYXRlPlxuIl19
|