@kirbydesign/designsystem 5.2.2 → 6.0.0-rc.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/bundles/kirbydesign-designsystem-testing-base.umd.js +1988 -1259
- package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js +34 -16
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-jest.umd.js +34 -16
- package/bundles/kirbydesign-designsystem-testing-jest.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.js +10025 -9233
- package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
- package/esm2015/kirbydesign-designsystem.js +1 -115
- package/esm2015/lib/components/accordion/accordion-item.component.js +31 -20
- package/esm2015/lib/components/accordion/accordion.directive.js +11 -7
- package/esm2015/lib/components/app/app.component.js +23 -18
- package/esm2015/lib/components/app/app.module.js +13 -8
- package/esm2015/lib/components/avatar/avatar.component.js +31 -19
- package/esm2015/lib/components/button/button.component.js +63 -34
- package/esm2015/lib/components/calendar/calendar.component.js +59 -35
- package/esm2015/lib/components/calendar/helpers/calendar.helper.js +8 -8
- package/esm2015/lib/components/card/card-footer/card-footer.component.js +14 -11
- package/esm2015/lib/components/card/card-header/card-header.component.js +26 -15
- package/esm2015/lib/components/card/card.component.js +34 -25
- package/esm2015/lib/components/chart/chart-js/chart-js.service.js +48 -34
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js +1 -3
- package/esm2015/lib/components/chart/chart.component.js +36 -39
- package/esm2015/lib/components/chart/chart.module.js +13 -8
- package/esm2015/lib/components/chart/chart.types.js +1 -1
- package/esm2015/lib/components/chart/configs/chart-config.service.js +7 -4
- package/esm2015/lib/components/chart/configs/interaction-functions-extensions.config.js +8 -10
- package/esm2015/lib/components/chart/configs/shared.utils.js +1 -1
- package/esm2015/lib/components/chart/configs/type.config.js +1 -3
- package/esm2015/lib/components/chart/index.js +2 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated-helper.js +7 -4
- package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.js +56 -38
- package/esm2015/lib/components/chart-deprecated/options/areaspline.js +7 -9
- package/esm2015/lib/components/chart-deprecated/options/donut.js +5 -7
- package/esm2015/lib/components/chart-deprecated/options/timeseries.js +8 -10
- package/esm2015/lib/components/checkbox/checkbox.component.js +47 -21
- package/esm2015/lib/components/chip/chip.component.js +24 -13
- package/esm2015/lib/components/divider/divider.component.js +16 -12
- package/esm2015/lib/components/dropdown/dropdown.component.js +154 -61
- package/esm2015/lib/components/dropdown/keyboard-handler.service.js +9 -7
- package/esm2015/lib/components/empty-state/empty-state.component.js +27 -16
- package/esm2015/lib/components/fab-sheet/fab-sheet.component.js +37 -23
- package/esm2015/lib/components/flag/flag.component.js +21 -17
- package/esm2015/lib/components/form-field/directives/date/date-input.directive.js +16 -15
- package/esm2015/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.js +41 -28
- package/esm2015/lib/components/form-field/form-field-message/form-field-message.component.js +17 -13
- package/esm2015/lib/components/form-field/form-field.component.js +39 -26
- package/esm2015/lib/components/form-field/input/input.component.js +65 -23
- package/esm2015/lib/components/form-field/input-counter/input-counter.component.js +14 -11
- package/esm2015/lib/components/form-field/textarea/textarea.component.js +51 -20
- package/esm2015/lib/components/grid/breakpoint-helper.service.js +9 -9
- package/esm2015/lib/components/grid/grid.component.js +21 -18
- package/esm2015/lib/components/icon/icon-registry.service.js +11 -19
- package/esm2015/lib/components/icon/icon-settings.js +2 -3
- package/esm2015/lib/components/icon/icon.component.js +27 -20
- package/esm2015/lib/components/icon/icon.module.js +13 -8
- package/esm2015/lib/components/icon/index.js +1 -2
- package/esm2015/lib/components/icon/kirby-icon-settings.js +2 -4
- package/esm2015/lib/components/index.js +11 -10
- package/esm2015/lib/components/item/item.component.js +33 -16
- package/esm2015/lib/components/item/item.module.js +13 -8
- package/esm2015/lib/components/item/label/label.component.js +18 -12
- package/esm2015/lib/components/item-group/item-group.component.js +15 -11
- package/esm2015/lib/components/item-sliding/item-sliding.component.js +19 -12
- package/esm2015/lib/components/list/directives/infinite-scroll.directive.js +18 -17
- package/esm2015/lib/components/list/directives/list-item-color.directive.js +17 -11
- package/esm2015/lib/components/list/helpers/list-helper.js +7 -4
- package/esm2015/lib/components/list/index.js +2 -3
- package/esm2015/lib/components/list/list-experimental/list-experimental.component.js +20 -13
- package/esm2015/lib/components/list/list-header/list-header.component.js +14 -11
- package/esm2015/lib/components/list/list-item/list-item.component.js +38 -24
- package/esm2015/lib/components/list/list-section-header/list-section-header.component.js +15 -14
- package/esm2015/lib/components/list/list.component.js +81 -40
- package/esm2015/lib/components/list/list.directive.js +34 -45
- package/esm2015/lib/components/list/list.module.js +33 -12
- package/esm2015/lib/components/list/pipes/group-by.pipe.js +10 -6
- package/esm2015/lib/components/loading-overlay/loading-overlay.component.js +20 -13
- package/esm2015/lib/components/loading-overlay/loading-overlay.service.js +9 -13
- package/esm2015/lib/components/modal/action-sheet/action-sheet.component.js +32 -18
- package/esm2015/lib/components/modal/alert/alert.component.js +38 -26
- package/esm2015/lib/components/modal/alert/config/alert-config.js +1 -1
- package/esm2015/lib/components/modal/footer/modal-footer.component.js +25 -13
- package/esm2015/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.js +25 -21
- package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.js +1 -1
- package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.js +124 -56
- package/esm2015/lib/components/modal/services/action-sheet.helper.js +8 -8
- package/esm2015/lib/components/modal/services/alert.helper.js +10 -20
- package/esm2015/lib/components/modal/services/modal-animation-builder.service.js +7 -10
- package/esm2015/lib/components/modal/services/modal-navigation.service.js +8 -13
- package/esm2015/lib/components/modal/services/modal.controller.js +17 -16
- package/esm2015/lib/components/modal/services/modal.helper.js +10 -10
- package/esm2015/lib/components/page/index.js +2 -1
- package/esm2015/lib/components/page/page-footer/page-footer.component.js +21 -18
- package/esm2015/lib/components/page/page.component.js +187 -118
- package/esm2015/lib/components/page/page.module.js +60 -32
- package/esm2015/lib/components/popover/popover.component.js +27 -23
- package/esm2015/lib/components/progress-circle/progress-circle-ring.component.js +29 -17
- package/esm2015/lib/components/progress-circle/progress-circle.component.js +30 -21
- package/esm2015/lib/components/radio/radio-group/radio-group.component.js +60 -34
- package/esm2015/lib/components/radio/radio.component.js +36 -17
- package/esm2015/lib/components/range/range.component.js +51 -29
- package/esm2015/lib/components/reorder-list/reorder-list.component.js +32 -21
- package/esm2015/lib/components/router-outlet/router-outlet.component.js +18 -12
- package/esm2015/lib/components/router-outlet/router-outlet.module.js +13 -8
- package/esm2015/lib/components/section-header/section-header.component.js +15 -9
- package/esm2015/lib/components/segmented-control/segment-item.js +1 -1
- package/esm2015/lib/components/segmented-control/segmented-control.component.js +38 -29
- package/esm2015/lib/components/shared/component-loader.directive.js +15 -16
- package/esm2015/lib/components/shared/resize-observer/resize-observer.factory.js +7 -5
- package/esm2015/lib/components/shared/resize-observer/resize-observer.service.js +7 -10
- package/esm2015/lib/components/slide-button/slide-button.component.js +22 -19
- package/esm2015/lib/components/slides/slides.component.js +42 -20
- package/esm2015/lib/components/spinner/index.js +3 -0
- package/esm2015/lib/components/spinner/spinner.component.js +14 -11
- package/esm2015/lib/components/spinner/spinner.module.js +14 -9
- package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.js +9 -3
- package/esm2015/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.js +25 -20
- package/esm2015/lib/components/tabs/tab-button/tab-button.component.js +21 -18
- package/esm2015/lib/components/tabs/tabs.component.js +20 -16
- package/esm2015/lib/components/tabs/tabs.module.js +14 -9
- package/esm2015/lib/components/tabs/tabs.service.js +9 -7
- package/esm2015/lib/components/toast/config/toast-config.js +1 -1
- package/esm2015/lib/components/toast/services/toast.controller.js +8 -8
- package/esm2015/lib/components/toast/services/toast.helper.js +8 -12
- package/esm2015/lib/components/toggle/toggle.component.js +21 -14
- package/esm2015/lib/components/toggle-button/index.js +3 -0
- package/esm2015/lib/components/toggle-button/toggle-button.component.js +20 -13
- package/esm2015/lib/components/toggle-button/toggle-button.module.js +13 -8
- package/esm2015/lib/components/web-component-proxies.component.js +13 -15
- package/esm2015/lib/directives/element-as-button/element-as-button.directive.js +26 -17
- package/esm2015/lib/directives/fit-heading/fit-heading.directive.js +16 -17
- package/esm2015/lib/directives/fit-heading/fit-heading.module.js +12 -7
- package/esm2015/lib/directives/index.js +3 -1
- package/esm2015/lib/directives/key-handler/key-handler.directive.js +14 -14
- package/esm2015/lib/directives/modal-router-link/modal-router-link.directive.js +20 -15
- package/esm2015/lib/directives/theme-color/theme-color.directive.js +55 -24
- package/esm2015/lib/helpers/element-has-ancestor.js +1 -1
- package/esm2015/lib/helpers/line-clamp-helper.js +7 -8
- package/esm2015/lib/helpers/platform.service.js +9 -11
- package/esm2015/lib/index.js +1 -5
- package/esm2015/lib/kirby.module.js +166 -25
- package/esm2015/lib/types/window-ref.js +9 -7
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.js +1 -59
- package/esm2015/testing-base/lib/components/index.js +56 -0
- package/esm2015/testing-base/lib/components/mock.accordion-item.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.action-sheet.component.js +38 -24
- package/esm2015/testing-base/lib/components/mock.app.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.avatar.component.js +37 -24
- package/esm2015/testing-base/lib/components/mock.button.component.js +36 -24
- package/esm2015/testing-base/lib/components/mock.calendar.component.js +54 -31
- package/esm2015/testing-base/lib/components/mock.card-footer.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.card-header.component.js +30 -20
- package/esm2015/testing-base/lib/components/mock.card.component.js +34 -22
- package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.js +38 -24
- package/esm2015/testing-base/lib/components/mock.chart.component.js +38 -25
- package/esm2015/testing-base/lib/components/mock.checkbox.component.js +36 -23
- package/esm2015/testing-base/lib/components/mock.chip.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.divider.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.dropdown.component.js +49 -30
- package/esm2015/testing-base/lib/components/mock.empty-state.component.js +30 -20
- package/esm2015/testing-base/lib/components/mock.fab-sheet.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.flag.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.form-field-message.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.form-field.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.grid.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.icon.component.js +29 -20
- package/esm2015/testing-base/lib/components/mock.input-counter.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.input.component.js +42 -27
- package/esm2015/testing-base/lib/components/mock.item-group.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.item-sliding.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.item.component.js +33 -22
- package/esm2015/testing-base/lib/components/mock.label.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.list-experimental.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.list-header.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.list-item.component.js +40 -25
- package/esm2015/testing-base/lib/components/mock.list-section-header.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.list.component.js +50 -30
- package/esm2015/testing-base/lib/components/mock.loading-overlay.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.modal-footer.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.page-footer.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.page.component.js +228 -125
- package/esm2015/testing-base/lib/components/mock.popover.component.js +29 -20
- package/esm2015/testing-base/lib/components/mock.progress-circle.component.js +28 -19
- package/esm2015/testing-base/lib/components/mock.radio-group.component.js +38 -24
- package/esm2015/testing-base/lib/components/mock.radio.component.js +30 -20
- package/esm2015/testing-base/lib/components/mock.range.component.js +44 -27
- package/esm2015/testing-base/lib/components/mock.reorder-list.component.js +32 -21
- package/esm2015/testing-base/lib/components/mock.router-outlet.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.section-header.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.segmented-control.component.js +35 -23
- package/esm2015/testing-base/lib/components/mock.slide-button.component.js +30 -20
- package/esm2015/testing-base/lib/components/mock.slides.component.js +51 -0
- package/esm2015/testing-base/lib/components/mock.spinner.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.tab-button.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.tabs.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.textarea.component.js +35 -23
- package/esm2015/testing-base/lib/components/mock.toggle-button.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.toggle.component.js +28 -19
- package/esm2015/testing-base/lib/components/mock.web-component-proxies.component.js +33 -0
- package/esm2015/testing-base/lib/directives/index.js +4 -0
- package/esm2015/testing-base/lib/directives/mock.accordion.directive.js +22 -13
- package/esm2015/testing-base/lib/directives/mock.fit-heading.directive.js +24 -15
- package/esm2015/testing-base/lib/directives/mock.theme-color.directive.js +24 -16
- package/esm2015/testing-base/lib/index.js +4 -0
- package/esm2015/testing-base/lib/kirby-testing-base.module.js +69 -7
- package/esm2015/testing-base/lib/mock-components.js +5 -2
- package/esm2015/testing-base/public_api.js +2 -2
- package/esm2015/testing-jasmine/kirbydesign-designsystem-testing-jasmine.js +1 -2
- package/esm2015/testing-jasmine/lib/kirby-testing.module.js +14 -8
- package/esm2015/testing-jasmine/lib/mock-providers.js +1 -1
- package/esm2015/testing-jest/kirbydesign-designsystem-testing-jest.js +1 -2
- package/esm2015/testing-jest/lib/kirby-testing.module.js +14 -8
- package/esm2015/testing-jest/lib/mock-providers.js +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-base.js +1859 -1163
- package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-jasmine.js +13 -8
- package/fesm2015/kirbydesign-designsystem-testing-jasmine.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-jest.js +13 -8
- package/fesm2015/kirbydesign-designsystem-testing-jest.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem.js +5261 -4353
- package/fesm2015/kirbydesign-designsystem.js.map +1 -1
- package/icons/svg/more.svg +5 -7
- package/kirbydesign-designsystem.d.ts +1 -114
- package/lib/components/accordion/accordion-item.component.d.ts +3 -0
- package/lib/components/accordion/accordion.directive.d.ts +3 -0
- package/lib/components/app/app.component.d.ts +3 -0
- package/lib/components/app/app.module.d.ts +7 -0
- package/lib/components/avatar/avatar.component.d.ts +5 -2
- package/lib/components/button/button.component.d.ts +5 -2
- package/lib/components/calendar/calendar.component.d.ts +3 -0
- package/lib/components/calendar/helpers/calendar.helper.d.ts +3 -0
- package/lib/components/card/card-footer/card-footer.component.d.ts +3 -0
- package/lib/components/card/card-header/card-header.component.d.ts +3 -0
- package/lib/components/card/card.component.d.ts +3 -0
- package/lib/components/chart/chart-js/chart-js.service.d.ts +7 -3
- package/lib/components/chart/chart.component.d.ts +5 -5
- package/lib/components/chart/chart.module.d.ts +5 -0
- package/lib/components/chart/chart.types.d.ts +1 -0
- package/lib/components/chart/configs/chart-config.service.d.ts +4 -1
- package/lib/components/chart/index.d.ts +1 -0
- package/lib/components/chart-deprecated/chart-deprecated-helper.d.ts +3 -0
- package/lib/components/chart-deprecated/chart-deprecated.component.d.ts +3 -0
- package/lib/components/checkbox/checkbox.component.d.ts +3 -0
- package/lib/components/chip/chip.component.d.ts +3 -0
- package/lib/components/divider/divider.component.d.ts +3 -0
- package/lib/components/dropdown/dropdown.component.d.ts +5 -2
- package/lib/components/dropdown/keyboard-handler.service.d.ts +3 -0
- package/lib/components/empty-state/empty-state.component.d.ts +3 -0
- package/lib/components/fab-sheet/fab-sheet.component.d.ts +3 -0
- package/lib/components/flag/flag.component.d.ts +3 -0
- package/lib/components/form-field/directives/date/date-input.directive.d.ts +3 -0
- package/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.d.ts +3 -0
- package/lib/components/form-field/form-field-message/form-field-message.component.d.ts +3 -0
- package/lib/components/form-field/form-field.component.d.ts +3 -0
- package/lib/components/form-field/input/input.component.d.ts +4 -1
- package/lib/components/form-field/input-counter/input-counter.component.d.ts +5 -2
- package/lib/components/form-field/textarea/textarea.component.d.ts +3 -0
- package/lib/components/grid/breakpoint-helper.service.d.ts +3 -0
- package/lib/components/grid/grid.component.d.ts +3 -0
- package/lib/components/icon/icon-registry.service.d.ts +4 -2
- package/lib/components/icon/icon-settings.d.ts +0 -2
- package/lib/components/icon/icon.component.d.ts +4 -1
- package/lib/components/icon/icon.module.d.ts +6 -0
- package/lib/components/icon/index.d.ts +1 -1
- package/lib/components/index.d.ts +10 -9
- package/lib/components/item/item.component.d.ts +4 -1
- package/lib/components/item/item.module.d.ts +9 -0
- package/lib/components/item/label/label.component.d.ts +3 -0
- package/lib/components/item-group/item-group.component.d.ts +3 -0
- package/lib/components/item-sliding/item-sliding.component.d.ts +3 -0
- package/lib/components/list/directives/infinite-scroll.directive.d.ts +3 -0
- package/lib/components/list/directives/list-item-color.directive.d.ts +3 -0
- package/lib/components/list/helpers/list-helper.d.ts +3 -0
- package/lib/components/list/index.d.ts +1 -2
- package/lib/components/list/list-experimental/list-experimental.component.d.ts +3 -0
- package/lib/components/list/list-header/list-header.component.d.ts +3 -0
- package/lib/components/list/list-item/list-item.component.d.ts +3 -0
- package/lib/components/list/list-section-header/list-section-header.component.d.ts +3 -0
- package/lib/components/list/list.component.d.ts +3 -0
- package/lib/components/list/list.directive.d.ts +9 -6
- package/lib/components/list/list.module.d.ts +16 -0
- package/lib/components/list/pipes/group-by.pipe.d.ts +3 -0
- package/lib/components/loading-overlay/loading-overlay.component.d.ts +3 -0
- package/lib/components/loading-overlay/loading-overlay.service.d.ts +3 -0
- package/lib/components/modal/action-sheet/action-sheet.component.d.ts +3 -0
- package/lib/components/modal/alert/alert.component.d.ts +5 -2
- package/lib/components/modal/alert/config/alert-config.d.ts +0 -8
- package/lib/components/modal/footer/modal-footer.component.d.ts +3 -0
- package/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +3 -0
- package/lib/components/modal/modal-wrapper/config/modal-config.d.ts +1 -8
- package/lib/components/modal/modal-wrapper/modal-wrapper.component.d.ts +5 -0
- package/lib/components/modal/services/action-sheet.helper.d.ts +3 -0
- package/lib/components/modal/services/alert.helper.d.ts +4 -2
- package/lib/components/modal/services/modal-animation-builder.service.d.ts +3 -0
- package/lib/components/modal/services/modal-navigation.service.d.ts +3 -0
- package/lib/components/modal/services/modal.controller.d.ts +3 -0
- package/lib/components/modal/services/modal.helper.d.ts +3 -0
- package/lib/components/page/index.d.ts +1 -0
- package/lib/components/page/page-footer/page-footer.component.d.ts +3 -0
- package/lib/components/page/page.component.d.ts +26 -0
- package/lib/components/page/page.module.d.ts +10 -0
- package/lib/components/popover/popover.component.d.ts +4 -1
- package/lib/components/progress-circle/progress-circle-ring.component.d.ts +3 -0
- package/lib/components/progress-circle/progress-circle.component.d.ts +3 -0
- package/lib/components/radio/radio-group/radio-group.component.d.ts +3 -0
- package/lib/components/radio/radio.component.d.ts +3 -0
- package/lib/components/range/range.component.d.ts +3 -0
- package/lib/components/reorder-list/reorder-list.component.d.ts +3 -0
- package/lib/components/router-outlet/router-outlet.component.d.ts +3 -0
- package/lib/components/router-outlet/router-outlet.module.d.ts +7 -0
- package/lib/components/section-header/section-header.component.d.ts +3 -0
- package/lib/components/segmented-control/segment-item.d.ts +0 -4
- package/lib/components/segmented-control/segmented-control.component.d.ts +4 -1
- package/lib/components/shared/component-loader.directive.d.ts +3 -0
- package/lib/components/shared/resize-observer/resize-observer.factory.d.ts +3 -0
- package/lib/components/shared/resize-observer/resize-observer.service.d.ts +3 -0
- package/lib/components/slide-button/slide-button.component.d.ts +3 -0
- package/lib/components/slides/slides.component.d.ts +5 -0
- package/lib/components/spinner/index.d.ts +2 -0
- package/lib/components/spinner/spinner.component.d.ts +3 -0
- package/lib/components/spinner/spinner.module.d.ts +6 -0
- package/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.d.ts +3 -0
- package/lib/components/tabs/tab-button/tab-button.component.d.ts +3 -0
- package/lib/components/tabs/tabs.component.d.ts +3 -0
- package/lib/components/tabs/tabs.module.d.ts +9 -0
- package/lib/components/tabs/tabs.service.d.ts +3 -0
- package/lib/components/toast/config/toast-config.d.ts +1 -4
- package/lib/components/toast/services/toast.controller.d.ts +3 -0
- package/lib/components/toast/services/toast.helper.d.ts +3 -0
- package/lib/components/toggle/toggle.component.d.ts +3 -0
- package/lib/components/toggle-button/index.d.ts +2 -0
- package/lib/components/toggle-button/toggle-button.component.d.ts +3 -0
- package/lib/components/toggle-button/toggle-button.module.d.ts +6 -0
- package/lib/components/web-component-proxies.component.d.ts +3 -0
- package/lib/custom-elements-initializer.d.ts +1 -1
- package/lib/directives/element-as-button/element-as-button.directive.d.ts +3 -0
- package/lib/directives/fit-heading/fit-heading.directive.d.ts +3 -0
- package/lib/directives/fit-heading/fit-heading.module.d.ts +5 -0
- package/lib/directives/index.d.ts +2 -0
- package/lib/directives/key-handler/key-handler.directive.d.ts +3 -0
- package/lib/directives/modal-router-link/modal-router-link.directive.d.ts +3 -0
- package/lib/directives/theme-color/theme-color.directive.d.ts +3 -0
- package/lib/helpers/line-clamp-helper.d.ts +3 -0
- package/lib/helpers/platform.service.d.ts +3 -0
- package/lib/index.d.ts +0 -1
- package/lib/kirby.module.d.ts +69 -0
- package/lib/types/window-ref.d.ts +3 -0
- package/package.json +3 -4
- package/polyfills/intersection-observer-polyfill-loader.js +12 -12
- package/polyfills/resize-observer-polyfill-loader.js +1 -1
- package/readme.md +0 -16
- package/scss/_trigger-publish.scss +1 -0
- package/scss/_trigger.scss +1 -0
- package/scss/awesome-stylesheet.scss +1 -0
- package/scss/base/_awesome-partial.scss +1 -0
- package/scss/base/_index.scss +1 -0
- package/scss/base/_interaction-states.scss +1 -0
- package/scss/base/_link.scss +1 -0
- package/scss/base/index.scss +1 -0
- package/scss/interaction-state/_active.scss +1 -0
- package/scss/interaction-state/_focus.scss +1 -0
- package/scss/interaction-state/_hover.scss +1 -0
- package/scss/interaction-state/_index.scss +1 -0
- package/scss/interaction-state/_interaction-state.utilities.scss +1 -0
- package/scss/interaction-state/_layer.scss +1 -0
- package/scss/interaction-state/_state-layer.scss +1 -0
- package/scss/interaction-state/_utilities.scss +1 -0
- package/scss/interaction-state/ionic/_active.scss +1 -0
- package/scss/interaction-state/ionic/_hover.scss +1 -0
- package/scss/interaction-state/ionic/_index.scss +1 -0
- package/scss/interaction-states/_hover.scss +1 -0
- package/scss/interaction-states/_index.scss +1 -0
- package/scss/opt-out/_index.scss +1 -0
- package/scss/opt-out/_link.scss +1 -0
- package/testing-base/kirbydesign-designsystem-testing-base.d.ts +1 -58
- package/testing-base/lib/components/index.d.ts +55 -0
- package/testing-base/lib/components/mock.accordion-item.component.d.ts +3 -0
- package/testing-base/lib/components/mock.action-sheet.component.d.ts +3 -0
- package/testing-base/lib/components/mock.app.component.d.ts +3 -0
- package/testing-base/lib/components/mock.avatar.component.d.ts +4 -1
- package/testing-base/lib/components/mock.button.component.d.ts +4 -1
- package/testing-base/lib/components/mock.calendar.component.d.ts +4 -0
- package/testing-base/lib/components/mock.card-footer.component.d.ts +3 -0
- package/testing-base/lib/components/mock.card-header.component.d.ts +3 -0
- package/testing-base/lib/components/mock.card.component.d.ts +3 -0
- package/testing-base/lib/components/mock.chart-deprecated.component.d.ts +3 -0
- package/testing-base/lib/components/mock.chart.component.d.ts +5 -3
- package/testing-base/lib/components/mock.checkbox.component.d.ts +3 -0
- package/testing-base/lib/components/mock.chip.component.d.ts +3 -0
- package/testing-base/lib/components/mock.divider.component.d.ts +3 -0
- package/testing-base/lib/components/mock.dropdown.component.d.ts +4 -1
- package/testing-base/lib/components/mock.empty-state.component.d.ts +3 -0
- package/testing-base/lib/components/mock.fab-sheet.component.d.ts +3 -0
- package/testing-base/lib/components/mock.flag.component.d.ts +3 -0
- package/testing-base/lib/components/mock.form-field-message.component.d.ts +3 -0
- package/testing-base/lib/components/mock.form-field.component.d.ts +3 -0
- package/testing-base/lib/components/mock.grid.component.d.ts +3 -0
- package/testing-base/lib/components/mock.icon.component.d.ts +4 -1
- package/testing-base/lib/components/mock.input-counter.component.d.ts +3 -0
- package/testing-base/lib/components/mock.input.component.d.ts +4 -1
- package/testing-base/lib/components/mock.item-group.component.d.ts +3 -0
- package/testing-base/lib/components/mock.item-sliding.component.d.ts +3 -0
- package/testing-base/lib/components/mock.item.component.d.ts +4 -1
- package/testing-base/lib/components/mock.label.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list-experimental.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list-header.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list-item.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list-section-header.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list.component.d.ts +3 -0
- package/testing-base/lib/components/mock.loading-overlay.component.d.ts +3 -0
- package/testing-base/lib/components/mock.modal-footer.component.d.ts +3 -0
- package/testing-base/lib/components/mock.page-footer.component.d.ts +3 -0
- package/testing-base/lib/components/mock.page.component.d.ts +24 -0
- package/testing-base/lib/components/mock.popover.component.d.ts +4 -1
- package/testing-base/lib/components/mock.progress-circle.component.d.ts +3 -0
- package/testing-base/lib/components/mock.radio-group.component.d.ts +3 -0
- package/testing-base/lib/components/mock.radio.component.d.ts +3 -0
- package/testing-base/lib/components/mock.range.component.d.ts +3 -0
- package/testing-base/lib/components/mock.reorder-list.component.d.ts +3 -0
- package/testing-base/lib/components/mock.router-outlet.component.d.ts +3 -0
- package/testing-base/lib/components/mock.section-header.component.d.ts +3 -0
- package/testing-base/lib/components/mock.segmented-control.component.d.ts +4 -1
- package/testing-base/lib/components/mock.slide-button.component.d.ts +3 -0
- package/testing-base/lib/components/mock.slides.component.d.ts +11 -0
- package/testing-base/lib/components/mock.spinner.component.d.ts +3 -0
- package/testing-base/lib/components/mock.tab-button.component.d.ts +3 -0
- package/testing-base/lib/components/mock.tabs.component.d.ts +3 -0
- package/testing-base/lib/components/mock.textarea.component.d.ts +3 -0
- package/testing-base/lib/components/mock.toggle-button.component.d.ts +3 -0
- package/testing-base/lib/components/mock.toggle.component.d.ts +3 -0
- package/testing-base/lib/components/mock.web-component-proxies.component.d.ts +8 -0
- package/testing-base/lib/directives/index.d.ts +3 -0
- package/testing-base/lib/directives/mock.accordion.directive.d.ts +3 -0
- package/testing-base/lib/directives/mock.fit-heading.directive.d.ts +3 -0
- package/testing-base/lib/directives/mock.theme-color.directive.d.ts +3 -0
- package/testing-base/lib/index.d.ts +3 -0
- package/testing-base/lib/kirby-testing-base.module.d.ts +61 -0
- package/testing-base/package.json +0 -1
- package/testing-base/public_api.d.ts +1 -1
- package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.d.ts +1 -1
- package/testing-jasmine/lib/kirby-testing.module.d.ts +5 -0
- package/testing-jasmine/package.json +0 -1
- package/testing-jest/kirbydesign-designsystem-testing-jest.d.ts +1 -1
- package/testing-jest/lib/kirby-testing.module.d.ts +5 -0
- package/testing-jest/package.json +0 -1
- package/README.md +0 -7
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +0 -2
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +0 -1
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js +0 -16
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js.map +0 -1
- package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js +0 -16
- package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js.map +0 -1
- package/bundles/kirbydesign-designsystem.umd.min.js +0 -2
- package/bundles/kirbydesign-designsystem.umd.min.js.map +0 -1
- package/esm2015/index.metadata.json +0 -1
- package/esm2015/kirbydesign-designsystem.metadata.json +0 -1
- package/esm2015/lib/components/accordion/accordion-item.component.metadata.json +0 -1
- package/esm2015/lib/components/accordion/accordion.directive.metadata.json +0 -1
- package/esm2015/lib/components/accordion/index.metadata.json +0 -1
- package/esm2015/lib/components/angular-component-lib/utils.metadata.json +0 -1
- package/esm2015/lib/components/app/app.component.metadata.json +0 -1
- package/esm2015/lib/components/app/app.module.metadata.json +0 -1
- package/esm2015/lib/components/app/index.metadata.json +0 -1
- package/esm2015/lib/components/avatar/avatar.component.metadata.json +0 -1
- package/esm2015/lib/components/button/button.component.metadata.json +0 -1
- package/esm2015/lib/components/calendar/calendar.component.metadata.json +0 -1
- package/esm2015/lib/components/calendar/helpers/calendar-cell.model.metadata.json +0 -1
- package/esm2015/lib/components/calendar/helpers/calendar-options.model.metadata.json +0 -1
- package/esm2015/lib/components/calendar/helpers/calendar.helper.metadata.json +0 -1
- package/esm2015/lib/components/calendar/index.metadata.json +0 -1
- package/esm2015/lib/components/calendar/options/calendar-year-navigator-config.metadata.json +0 -1
- package/esm2015/lib/components/card/card-footer/card-footer.component.metadata.json +0 -1
- package/esm2015/lib/components/card/card-header/card-header.component.metadata.json +0 -1
- package/esm2015/lib/components/card/card.component.metadata.json +0 -1
- package/esm2015/lib/components/card/index.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart-js/chart-js.service.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart-js/configured-chart-js.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart.component.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart.module.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart.types.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/annotations.config.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/chart-config.service.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/global-defaults.config.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/interaction-functions-extensions.config.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/shared.utils.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/type.config.metadata.json +0 -1
- package/esm2015/lib/components/chart/index.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated-helper.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated-type.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/index.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/activitygauge.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/areaspline.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/bar.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/column.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/donut.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/timeseries.metadata.json +0 -1
- package/esm2015/lib/components/checkbox/checkbox.component.metadata.json +0 -1
- package/esm2015/lib/components/chip/chip.component.metadata.json +0 -1
- package/esm2015/lib/components/divider/divider.component.metadata.json +0 -1
- package/esm2015/lib/components/dropdown/dropdown.component.metadata.json +0 -1
- package/esm2015/lib/components/dropdown/dropdown.types.metadata.json +0 -1
- package/esm2015/lib/components/dropdown/keyboard-handler.service.metadata.json +0 -1
- package/esm2015/lib/components/empty-state/empty-state.component.metadata.json +0 -1
- package/esm2015/lib/components/fab-sheet/fab-sheet.component.metadata.json +0 -1
- package/esm2015/lib/components/flag/flag.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/directives/date/date-input.directive.metadata.json +0 -1
- package/esm2015/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.metadata.json +0 -1
- package/esm2015/lib/components/form-field/form-field-message/form-field-message.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/form-field.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/index.metadata.json +0 -1
- package/esm2015/lib/components/form-field/input/input.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/input-counter/input-counter.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/textarea/textarea.component.metadata.json +0 -1
- package/esm2015/lib/components/grid/breakpoint-helper.service.metadata.json +0 -1
- package/esm2015/lib/components/grid/grid-card-configuration.metadata.json +0 -1
- package/esm2015/lib/components/grid/grid.component.metadata.json +0 -1
- package/esm2015/lib/components/icon/icon-registry.service.metadata.json +0 -1
- package/esm2015/lib/components/icon/icon-settings.metadata.json +0 -1
- package/esm2015/lib/components/icon/icon.component.metadata.json +0 -1
- package/esm2015/lib/components/icon/icon.module.metadata.json +0 -1
- package/esm2015/lib/components/icon/index.metadata.json +0 -1
- package/esm2015/lib/components/icon/kirby-icon-settings.metadata.json +0 -1
- package/esm2015/lib/components/index.metadata.json +0 -1
- package/esm2015/lib/components/item/index.metadata.json +0 -1
- package/esm2015/lib/components/item/item.component.metadata.json +0 -1
- package/esm2015/lib/components/item/item.module.metadata.json +0 -1
- package/esm2015/lib/components/item/label/label.component.metadata.json +0 -1
- package/esm2015/lib/components/item-group/item-group.component.metadata.json +0 -1
- package/esm2015/lib/components/item-sliding/index.metadata.json +0 -1
- package/esm2015/lib/components/item-sliding/item-sliding.component.metadata.json +0 -1
- package/esm2015/lib/components/item-sliding/item-sliding.types.metadata.json +0 -1
- package/esm2015/lib/components/list/directives/infinite-scroll.directive.metadata.json +0 -1
- package/esm2015/lib/components/list/directives/list-item-color.directive.metadata.json +0 -1
- package/esm2015/lib/components/list/directives/scroll.model.metadata.json +0 -1
- package/esm2015/lib/components/list/helpers/list-helper.metadata.json +0 -1
- package/esm2015/lib/components/list/index.metadata.json +0 -1
- package/esm2015/lib/components/list/list-experimental/list-experimental.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list-header/list-header.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list-item/list-item.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list-section-header/list-section-header.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list-swipe-action.type.metadata.json +0 -1
- package/esm2015/lib/components/list/list.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list.directive.metadata.json +0 -1
- package/esm2015/lib/components/list/list.event.metadata.json +0 -1
- package/esm2015/lib/components/list/list.module.metadata.json +0 -1
- package/esm2015/lib/components/list/pipes/group-by.pipe.metadata.json +0 -1
- package/esm2015/lib/components/loading-overlay/index.metadata.json +0 -1
- package/esm2015/lib/components/loading-overlay/loading-overlay.component.metadata.json +0 -1
- package/esm2015/lib/components/loading-overlay/loading-overlay.service.metadata.json +0 -1
- package/esm2015/lib/components/modal/action-sheet/action-sheet.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/action-sheet/config/action-sheet-config.metadata.json +0 -1
- package/esm2015/lib/components/modal/action-sheet/config/action-sheet-item.metadata.json +0 -1
- package/esm2015/lib/components/modal/alert/alert.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/alert/config/alert-config.metadata.json +0 -1
- package/esm2015/lib/components/modal/footer/modal-footer.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/index.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/config/drawer-supplementary-action.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.helper.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/action-sheet.helper.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/alert.helper.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal-animation-builder.service.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal-navigation.service.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal.controller.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal.helper.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal.interfaces.metadata.json +0 -1
- package/esm2015/lib/components/page/index.metadata.json +0 -1
- package/esm2015/lib/components/page/page-footer/page-footer.component.metadata.json +0 -1
- package/esm2015/lib/components/page/page.component.metadata.json +0 -1
- package/esm2015/lib/components/page/page.module.metadata.json +0 -1
- package/esm2015/lib/components/popover/popover.component.metadata.json +0 -1
- package/esm2015/lib/components/progress-circle/progress-circle-ring.component.metadata.json +0 -1
- package/esm2015/lib/components/progress-circle/progress-circle.component.metadata.json +0 -1
- package/esm2015/lib/components/radio/index.metadata.json +0 -1
- package/esm2015/lib/components/radio/radio-group/radio-group.component.metadata.json +0 -1
- package/esm2015/lib/components/radio/radio.component.metadata.json +0 -1
- package/esm2015/lib/components/range/range.component.metadata.json +0 -1
- package/esm2015/lib/components/reorder-list/index.metadata.json +0 -1
- package/esm2015/lib/components/reorder-list/reorder-event.metadata.json +0 -1
- package/esm2015/lib/components/reorder-list/reorder-list.component.metadata.json +0 -1
- package/esm2015/lib/components/router-outlet/index.metadata.json +0 -1
- package/esm2015/lib/components/router-outlet/router-outlet.component.metadata.json +0 -1
- package/esm2015/lib/components/router-outlet/router-outlet.module.metadata.json +0 -1
- package/esm2015/lib/components/section-header/section-header.component.metadata.json +0 -1
- package/esm2015/lib/components/segmented-control/segment-item.metadata.json +0 -1
- package/esm2015/lib/components/segmented-control/segmented-control.component.metadata.json +0 -1
- package/esm2015/lib/components/shared/component-configuration.metadata.json +0 -1
- package/esm2015/lib/components/shared/component-loader.directive.metadata.json +0 -1
- package/esm2015/lib/components/shared/dynamic-component.metadata.json +0 -1
- package/esm2015/lib/components/shared/index.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/resize-observer.factory.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/resize-observer.service.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/types/resize-observer-callback.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/types/resize-observer-entry.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/types/resize-observer.metadata.json +0 -1
- package/esm2015/lib/components/slide-button/slide-button.component.metadata.json +0 -1
- package/esm2015/lib/components/slides/slides.component.metadata.json +0 -1
- package/esm2015/lib/components/spinner/spinner.component.metadata.json +0 -1
- package/esm2015/lib/components/spinner/spinner.module.metadata.json +0 -1
- package/esm2015/lib/components/stock-chart-deprecated/index.metadata.json +0 -1
- package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.metadata.json +0 -1
- package/esm2015/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.metadata.json +0 -1
- package/esm2015/lib/components/tabs/index.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tab-button/tab-button.component.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tab-button/tab-button.events.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tabs.component.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tabs.module.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tabs.service.metadata.json +0 -1
- package/esm2015/lib/components/toast/config/toast-config.metadata.json +0 -1
- package/esm2015/lib/components/toast/index.metadata.json +0 -1
- package/esm2015/lib/components/toast/services/toast.controller.metadata.json +0 -1
- package/esm2015/lib/components/toast/services/toast.helper.metadata.json +0 -1
- package/esm2015/lib/components/toggle/toggle.component.metadata.json +0 -1
- package/esm2015/lib/components/toggle-button/toggle-button.component.metadata.json +0 -1
- package/esm2015/lib/components/toggle-button/toggle-button.module.metadata.json +0 -1
- package/esm2015/lib/components/web-component-proxies.component.metadata.json +0 -1
- package/esm2015/lib/custom-elements-initializer.metadata.json +0 -1
- package/esm2015/lib/directives/element-as-button/element-as-button.directive.metadata.json +0 -1
- package/esm2015/lib/directives/fit-heading/fit-heading.directive.metadata.json +0 -1
- package/esm2015/lib/directives/fit-heading/fit-heading.module.metadata.json +0 -1
- package/esm2015/lib/directives/index.metadata.json +0 -1
- package/esm2015/lib/directives/key-handler/key-handler.directive.metadata.json +0 -1
- package/esm2015/lib/directives/modal-router-link/modal-router-link.directive.metadata.json +0 -1
- package/esm2015/lib/directives/theme-color/theme-color.directive.metadata.json +0 -1
- package/esm2015/lib/helpers/color-helper.metadata.json +0 -1
- package/esm2015/lib/helpers/deep-copy.metadata.json +0 -1
- package/esm2015/lib/helpers/design-token-helper.metadata.json +0 -1
- package/esm2015/lib/helpers/element-has-ancestor.metadata.json +0 -1
- package/esm2015/lib/helpers/index.metadata.json +0 -1
- package/esm2015/lib/helpers/line-clamp-helper.metadata.json +0 -1
- package/esm2015/lib/helpers/merge-deep.metadata.json +0 -1
- package/esm2015/lib/helpers/platform.service.metadata.json +0 -1
- package/esm2015/lib/helpers/string-helper.metadata.json +0 -1
- package/esm2015/lib/helpers/theme-color.type.metadata.json +0 -1
- package/esm2015/lib/helpers/unique-id-generator.helper.metadata.json +0 -1
- package/esm2015/lib/index.metadata.json +0 -1
- package/esm2015/lib/kirby.module.metadata.json +0 -1
- package/esm2015/lib/scss/scss-helper.metadata.json +0 -1
- package/esm2015/lib/types/window-ref.metadata.json +0 -1
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.accordion-item.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.action-sheet.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.app.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.avatar.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.button.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.calendar.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.card-footer.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.card-header.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.card.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.chart.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.checkbox.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.chip.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.divider.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.dropdown.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.empty-state.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.fab-sheet.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.flag.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.form-field-message.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.form-field.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.grid.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.icon.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.input-counter.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.input.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.item-group.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.item-sliding.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.item.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.label.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list-experimental.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list-header.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list-item.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list-section-header.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.loading-overlay.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.modal-footer.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.page-footer.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.page.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.popover.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.progress-circle.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.radio-group.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.radio.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.range.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.reorder-list.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.router-outlet.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.section-header.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.segmented-control.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.slide-button.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.spinner.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.tab-button.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.tabs.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.textarea.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.toggle-button.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.toggle.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/directives/mock.accordion.directive.metadata.json +0 -1
- package/esm2015/testing-base/lib/directives/mock.fit-heading.directive.metadata.json +0 -1
- package/esm2015/testing-base/lib/directives/mock.theme-color.directive.metadata.json +0 -1
- package/esm2015/testing-base/lib/kirby-testing-base.module.metadata.json +0 -1
- package/esm2015/testing-base/lib/mock-components.metadata.json +0 -1
- package/esm2015/testing-base/lib/mock-directives.metadata.json +0 -1
- package/esm2015/testing-base/public_api.metadata.json +0 -1
- package/esm2015/testing-jasmine/kirbydesign-designsystem-testing-jasmine.metadata.json +0 -1
- package/esm2015/testing-jasmine/lib/kirby-testing.module.metadata.json +0 -1
- package/esm2015/testing-jasmine/lib/mock-providers.metadata.json +0 -1
- package/esm2015/testing-jasmine/public_api.metadata.json +0 -1
- package/esm2015/testing-jest/kirbydesign-designsystem-testing-jest.metadata.json +0 -1
- package/esm2015/testing-jest/lib/kirby-testing.module.metadata.json +0 -1
- package/esm2015/testing-jest/lib/mock-providers.metadata.json +0 -1
- package/esm2015/testing-jest/public_api.metadata.json +0 -1
- package/kirbydesign-designsystem.metadata.json +0 -1
- package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +0 -1
- package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.metadata.json +0 -1
- package/testing-jest/kirbydesign-designsystem-testing-jest.metadata.json +0 -1
|
@@ -1,20 +1,31 @@
|
|
|
1
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
2
4
|
export class CardHeaderComponent {
|
|
3
5
|
constructor() {
|
|
4
6
|
this.flagged = null;
|
|
5
7
|
}
|
|
6
8
|
}
|
|
7
|
-
CardHeaderComponent
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
9
|
+
/** @nocollapse */ CardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
/** @nocollapse */ CardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CardHeaderComponent, selector: "kirby-card-header", inputs: { title: "title", subtitle: "subtitle", isTitleBold: "isTitleBold", flagged: "flagged" }, host: { properties: { "class": "this.flagged" } }, ngImport: i0, template: "<header>\n <h2 *ngIf=\"title\" [class.bold]=\"isTitleBold\">{{ title }}</h2>\n <h4 *ngIf=\"subtitle\">{{ subtitle }}</h4>\n <ng-content></ng-content>\n</header>\n", styles: [":host{display:block;border-top-left-radius:16px;border-top-right-radius:16px;text-align:center;padding:var(--kirby-internal-card-header-padding, 16px);color:var(--kirby-card-header-color);background-color:var(--kirby-card-header-background-color)}h2{font-size:16px;font-weight:400;margin:0 0 var(--kirby-internal-card-header-margin-bottom, 8px);line-height:var(--kirby-internal-card-header-line-height, 28px)}h2.bold{font-weight:700}h4{font-size:14px;margin:0;font-weight:400}:host(.danger){--kirby-card-header-background-color: var(--kirby-danger);--kirby-card-header-color: var(--kirby-danger-contrast)}:host(.warning){--kirby-card-header-background-color: var(--kirby-warning);--kirby-card-header-color: var(--kirby-warning-contrast)}:host(.success){--kirby-card-header-background-color: var(--kirby-success);--kirby-card-header-color: var(--kirby-success-contrast)}:host(.info){--kirby-card-header-background-color: var(--kirby-semi-light);--kirby-card-header-color: var(--kirby-semi-light-contrast)}:host(.danger,.warning,.success,.info){--kirby-internal-card-header-padding: 2px 8px}:host(.danger,.warning,.success,.info) h2{--kirby-internal-card-header-line-height: 24px;--kirby-internal-card-header-margin-bottom: 0px}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CardHeaderComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{
|
|
14
|
+
selector: 'kirby-card-header',
|
|
15
|
+
templateUrl: './card-header.component.html',
|
|
16
|
+
styleUrls: ['./card-header.component.scss'],
|
|
17
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
18
|
+
}]
|
|
19
|
+
}], propDecorators: { title: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], subtitle: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], isTitleBold: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], flagged: [{
|
|
26
|
+
type: HostBinding,
|
|
27
|
+
args: ['class']
|
|
28
|
+
}, {
|
|
29
|
+
type: Input
|
|
30
|
+
}] } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC1oZWFkZXIvY2FyZC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC1oZWFkZXIvY2FyZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFZdkYsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQVlFLFlBQU8sR0FBa0IsSUFBSSxDQUFDO0tBQy9COztvSUFQWSxtQkFBbUI7d0hBQW5CLG1CQUFtQiw4TUNaaEMsdUtBS0E7NEZET2EsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO29CQUMzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFHTixPQUFPO3NCQUZOLFdBQVc7dUJBQUMsT0FBTzs7c0JBQ25CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ29sb3IgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmV4cG9ydCB0eXBlIENhcmRGbGFnTGV2ZWwgPSBOb3RpZmljYXRpb25Db2xvciB8ICdpbmZvJyB8IG51bGw7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWNhcmQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhcmRIZWFkZXJDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBpc1RpdGxlQm9sZDogYm9vbGVhbjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIEBJbnB1dCgpXG4gIGZsYWdnZWQ6IENhcmRGbGFnTGV2ZWwgPSBudWxsO1xufVxuIiwiPGhlYWRlcj5cbiAgPGgyICpuZ0lmPVwidGl0bGVcIiBbY2xhc3MuYm9sZF09XCJpc1RpdGxlQm9sZFwiPnt7IHRpdGxlIH19PC9oMj5cbiAgPGg0ICpuZ0lmPVwic3VidGl0bGVcIj57eyBzdWJ0aXRsZSB9fTwvaDQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvaGVhZGVyPlxuIl19
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Component, ElementRef, HostBinding, Input, Renderer2, } from '@angular/core';
|
|
2
2
|
import { ResizeObserverService } from '../shared/resize-observer/resize-observer.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../shared/resize-observer/resize-observer.service";
|
|
3
5
|
export class CardComponent {
|
|
4
6
|
constructor(elementRef, resizeObserverService, renderer) {
|
|
5
7
|
this.elementRef = elementRef;
|
|
@@ -54,28 +56,35 @@ export class CardComponent {
|
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
|
-
CardComponent
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
59
|
+
/** @nocollapse */ CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CardComponent, deps: [{ token: i0.ElementRef }, { token: i1.ResizeObserverService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
/** @nocollapse */ CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CardComponent, selector: "kirby-card", inputs: { title: "title", subtitle: "subtitle", backgroundImageUrl: "backgroundImageUrl", hasPadding: "hasPadding", sizes: "sizes", mode: "mode" }, host: { properties: { "style.--kirby-card-background-image": "this._backgroundImage", "class.flat": "this.flat", "class.highlighted": "this.highlighted" } }, ngImport: i0, template: "<ng-content select=\"kirby-card-header\"></ng-content>\n<div class=\"content-wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n<ng-content select=\"kirby-card-footer\"></ng-content>\n", styles: [":host{--kirby-card-main-background-color: var(--kirby-white);--kirby-card-main-color: var(--kirby-white-contrast);--kirby-card-footer-background-color: var(--kirby-white);--kirby-card-footer-color: var(--kirby-white-contrast);border-radius:16px;box-shadow:0 5px 10px -10px #1c1c1c4d,0 0 5px #1c1c1c14;color:var(--kirby-card-main-color);background-color:var(--kirby-card-main-background-color);background-image:var(--kirby-card-background-image);background-repeat:var(--kirby-card-background-repeat, no-repeat);background-position:var(--kirby-card-background-position, center);background-size:var(--kirby-card-background-size, cover);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative;z-index:1;width:var(--kirby-card-width, auto)}:host .content-wrapper.padding{padding:16px}:host.highlighted{box-shadow:0 10px 15px -10px #1c1c1c4d,0 0 5px #1c1c1c14}:host.flat{box-shadow:none}:host[role=button]{cursor:pointer;outline-offset:2px}:host-context(.swiper-slide-active){box-shadow:0 10px 15px -10px #1c1c1c4d,0 0 5px #1c1c1c14;transition:all .5s;transform:translateY(-3px)}:host(.primary){--kirby-card-main-background-color: var(--kirby-primary);--kirby-card-main-color: var(--kirby-primary-contrast)}:host(.secondary){--kirby-card-main-background-color: var(--kirby-secondary);--kirby-card-main-color: var(--kirby-secondary-contrast)}:host(.tertiary){--kirby-card-main-background-color: var(--kirby-tertiary);--kirby-card-main-color: var(--kirby-tertiary-contrast)}:host(.success){--kirby-card-main-background-color: var(--kirby-success);--kirby-card-main-color: var(--kirby-success-contrast)}:host(.warning){--kirby-card-main-background-color: var(--kirby-warning);--kirby-card-main-color: var(--kirby-warning-contrast)}:host(.danger){--kirby-card-main-background-color: var(--kirby-danger);--kirby-card-main-color: var(--kirby-danger-contrast)}:host(.light){--kirby-card-main-background-color: var(--kirby-light);--kirby-card-main-color: var(--kirby-light-contrast)}:host(.medium){--kirby-card-main-background-color: var(--kirby-medium);--kirby-card-main-color: var(--kirby-medium-contrast)}:host(.dark){--kirby-card-main-background-color: var(--kirby-dark);--kirby-card-main-color: var(--kirby-dark-contrast)}\n"] });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CardComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{
|
|
64
|
+
selector: 'kirby-card',
|
|
65
|
+
templateUrl: './card.component.html',
|
|
66
|
+
styleUrls: ['./card.component.scss'],
|
|
67
|
+
}]
|
|
68
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ResizeObserverService }, { type: i0.Renderer2 }]; }, propDecorators: { title: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], subtitle: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], _backgroundImage: [{
|
|
73
|
+
type: HostBinding,
|
|
74
|
+
args: ['style.--kirby-card-background-image']
|
|
75
|
+
}], backgroundImageUrl: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], hasPadding: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], sizes: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], flat: [{
|
|
82
|
+
type: HostBinding,
|
|
83
|
+
args: ['class.flat']
|
|
84
|
+
}], highlighted: [{
|
|
85
|
+
type: HostBinding,
|
|
86
|
+
args: ['class.highlighted']
|
|
87
|
+
}], mode: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}] } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7OztBQVExRixNQUFNLE9BQU8sYUFBYTtJQXdDeEIsWUFDVSxVQUFzQixFQUN0QixxQkFBNEMsRUFDNUMsUUFBbUI7UUFGbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGFBQVEsR0FBUixRQUFRLENBQVc7UUE1QnJCLDRCQUF1QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUMzRCxLQUFLLEVBQUUsR0FBRztZQUNWLE1BQU0sRUFBRSxHQUFHO1lBQ1gsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7UUFhSCxTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXRCLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBVTFCLENBQUM7SUFyQ0osSUFDSSxrQkFBa0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzVDLENBQUM7SUFXRCxJQUNJLEtBQUssQ0FBQyxLQUFpQztRQUN6QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLENBQUMsS0FBSyxDQUNYLGdIQUFnSCxDQUNq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LEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJFbnRyeSB9IGZyb20gJy4uL3NoYXJlZC9yZXNpemUtb2JzZXJ2ZXIvdHlwZXMvcmVzaXplLW9ic2VydmVyLWVudHJ5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1raXJieS1jYXJkLWJhY2tncm91bmQtaW1hZ2UnKVxuICBfYmFja2dyb3VuZEltYWdlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2V0IGJhY2tncm91bmRJbWFnZVVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYmFja2dyb3VuZEltYWdlID0gYHVybCgnJHt2YWx1ZX0nKWA7XG4gIH1cblxuICBASW5wdXQoKVxuICBoYXNQYWRkaW5nOiBib29sZWFuO1xuXG4gIHByaXZhdGUgc2l6ZXNTb3J0ZWRCeUJyZWFrcG9pbnQgPSB0aGlzLnNvcnRTaXplc0J5QnJlYWtwb2ludCh7XG4gICAgc21hbGw6IDM2MCxcbiAgICBtZWRpdW06IDcyMCxcbiAgICBsYXJnZTogMTAyNCxcbiAgfSk7XG5cbiAgQElucHV0KClcbiAgc2V0IHNpemVzKHZhbHVlOiB7IFtzaXplOiBzdHJpbmddOiBudW1iZXIgfSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnU2l6ZXMgcHJvcGVydHkgY2Fubm90IGJlIGEgc3RyaW5nLiBQbGVhc2UgZW5zdXJlIHRoZSBzaXplIHByb3BlcnR5IGlzIGJvdW5kIGFzIGFuIGV4cHJlc3Npb246XFxuW3NpemVzXT1cInsuLi59XCInXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnNpemVzU29ydGVkQnlCcmVha3BvaW50ID0gdGhpcy5zb3J0U2l6ZXNCeUJyZWFrcG9pbnQodmFsdWUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbGF0JylcbiAgZmxhdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZ2hsaWdodGVkJylcbiAgaGlnaGxpZ2h0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IG1vZGUodmFsdWU6ICdmbGF0JyB8ICdoaWdobGlnaHRlZCcpIHtcbiAgICB0aGlzLmZsYXQgPSB2YWx1ZSA9PT0gJ2ZsYXQnO1xuICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSB2YWx1ZSA9PT0gJ2hpZ2hsaWdodGVkJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTogUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYsIChlbnRyeSkgPT4gdGhpcy5oYW5kbGVSZXNpemUoZW50cnkpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0U2l6ZXNCeUJyZWFrcG9pbnQoc2l6ZXM6IHsgW3NpemU6IHN0cmluZ106IG51bWJlciB9KTogW3N0cmluZywgbnVtYmVyXVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc2l6ZXMpLnNvcnQodGhpcy5jb21wYXJlU2l6ZXNCeUJyZWFrcG9pbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wYXJlU2l6ZXNCeUJyZWFrcG9pbnQoYTogW3N0cmluZywgbnVtYmVyXSwgYjogW3N0cmluZywgbnVtYmVyXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGFbMV0gPiBiWzFdID8gMSA6IGJbMV0gPiBhWzFdID8gLTEgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBjb25zdCBzaXplQXR0cmlidXRlTmFtZSA9ICdzaXplJztcbiAgICBjb25zdCBzbWFsbGVzdEJyZWFrcG9pbnROYW1lID0gdGhpcy5zaXplc1NvcnRlZEJ5QnJlYWtwb2ludFswXVswXTtcbiAgICBjb25zdCBzbWFsbGVzdEJyZWFrcG9pbnRXaWR0aCA9IHRoaXMuc2l6ZXNTb3J0ZWRCeUJyZWFrcG9pbnRbMF1bMV07XG4gICAgaWYgKGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoIDwgc21hbGxlc3RCcmVha3BvaW50V2lkdGgpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVudHJ5LnRhcmdldCwgc2l6ZUF0dHJpYnV0ZU5hbWUsIGA8JHtzbWFsbGVzdEJyZWFrcG9pbnROYW1lfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpemVzU29ydGVkQnlCcmVha3BvaW50LmZvckVhY2goKFtzaXplLCB3aWR0aF0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoID49IHdpZHRoKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZW50cnkudGFyZ2V0LCBzaXplQXR0cmlidXRlTmFtZSwgc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktY2FyZC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwiY29udGVudC13cmFwcGVyXCIgW2NsYXNzLnBhZGRpbmddPVwiaGFzUGFkZGluZ1wiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LWNhcmQtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuIl19
|
|
@@ -4,6 +4,8 @@ import { mergeDeepAll } from '../../../helpers/merge-deep';
|
|
|
4
4
|
import { isNumberArray, } from '../chart.types';
|
|
5
5
|
import { ChartConfigService } from '../configs/chart-config.service';
|
|
6
6
|
import { Chart } from './configured-chart-js';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../configs/chart-config.service";
|
|
7
9
|
const CHART_LOCALE_DEFAULT = 'en-US';
|
|
8
10
|
export class ChartJSService {
|
|
9
11
|
constructor(chartConfigService) {
|
|
@@ -32,6 +34,8 @@ export class ChartJSService {
|
|
|
32
34
|
this.chart.data.datasets = datasets;
|
|
33
35
|
}
|
|
34
36
|
updateLabels(labels) {
|
|
37
|
+
/* As labels provided via the 'labels' input property always has
|
|
38
|
+
highest priority - we can just set the property directly */
|
|
35
39
|
this.chart.data.labels = labels;
|
|
36
40
|
}
|
|
37
41
|
updateType(type, customOptions) {
|
|
@@ -83,7 +87,7 @@ export class ChartJSService {
|
|
|
83
87
|
}
|
|
84
88
|
destructivelyUpdateType(type, customOptions) {
|
|
85
89
|
const datasets = this.chart.data.datasets;
|
|
86
|
-
const labels = this.chart.data.labels;
|
|
90
|
+
const labels = this.chart.data.labels; // chart.js stores labels as unknown[]; cast it to ChartLabel[]
|
|
87
91
|
const annotations = this.getExistingChartAnnotations();
|
|
88
92
|
this.chartType = type;
|
|
89
93
|
const options = this.createOptionsObject({ customOptions, annotations });
|
|
@@ -190,32 +194,42 @@ export class ChartJSService {
|
|
|
190
194
|
day: 'numeric',
|
|
191
195
|
}));
|
|
192
196
|
}
|
|
197
|
+
getLabelsToApply(args) {
|
|
198
|
+
const { datasets, labels, type, indexAxis } = args;
|
|
199
|
+
const datasetHasLabels = ({ data }) => !!(data === null || data === void 0 ? void 0 : data.some((datapoint) => typeof datapoint === 'object' && typeof datapoint[indexAxis] === 'string'));
|
|
200
|
+
/*
|
|
201
|
+
Labels can be provided by the user two ways:
|
|
202
|
+
1. As a seperate ChartLabel[] via the 'labels' input prop - this has highest priority
|
|
203
|
+
2. Together with the dataset via the 'data' input prop - here each datapoint contains
|
|
204
|
+
a label for the indexAxis.
|
|
205
|
+
For example: { x: 'label1', y: 1} in the case where the index axis is 'x'.
|
|
206
|
+
|
|
207
|
+
If no labels are provided then default labels are used.
|
|
208
|
+
*/
|
|
209
|
+
const labelsAreGivenAsSeperateArray = labels !== undefined;
|
|
210
|
+
const labelsAreGivenTogetherWithDataset = datasets.some(datasetHasLabels);
|
|
211
|
+
if (labelsAreGivenAsSeperateArray) {
|
|
212
|
+
return labels;
|
|
213
|
+
}
|
|
214
|
+
else if (labelsAreGivenTogetherWithDataset) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
/*
|
|
219
|
+
Chart.js requires labels along the index axis to render anything therefore
|
|
220
|
+
all other types than stock uses empty labels as default. The stock type
|
|
221
|
+
displays day & month as default.
|
|
222
|
+
*/
|
|
223
|
+
return type === 'stock'
|
|
224
|
+
? this.getDefaultStockLabels(datasets, this.locale)
|
|
225
|
+
: this.createBlankLabels(datasets);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
193
228
|
createConfigurationObject(type, datasets, options, labels) {
|
|
229
|
+
var _a, _b;
|
|
194
230
|
const typeConfig = this.chartConfigService.getTypeConfig(type);
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
if (type === 'stock') {
|
|
198
|
-
/*
|
|
199
|
-
The time scale will auto generate labels based on data.
|
|
200
|
-
It should be possible to pass an empty array to get the default
|
|
201
|
-
behaviour of chart.js when using stock chart.
|
|
202
|
-
|
|
203
|
-
TODO: Simplify to always pass labels, if given, to chart.js.
|
|
204
|
-
Would be a breaking change. See issue:
|
|
205
|
-
https://github.com/kirbydesign/designsystem/issues/2085
|
|
206
|
-
*/
|
|
207
|
-
const shouldUseTimescaleLabels = (labels === null || labels === void 0 ? void 0 : labels.length) === 0 && ((_b = (_a = options === null || options === void 0 ? void 0 : options.scales) === null || _a === void 0 ? void 0 : _a.x) === null || _b === void 0 ? void 0 : _b.type) === 'time';
|
|
208
|
-
if (shouldUseTimescaleLabels)
|
|
209
|
-
return labels;
|
|
210
|
-
return this.getDefaultStockLabels(datasets, this.locale);
|
|
211
|
-
}
|
|
212
|
-
else if ((labels === null || labels === void 0 ? void 0 : labels.length) > 0) {
|
|
213
|
-
return labels;
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
return this.createBlankLabels(datasets);
|
|
217
|
-
}
|
|
218
|
-
})();
|
|
231
|
+
const indexAxis = (_b = (_a = typeConfig === null || typeConfig === void 0 ? void 0 : typeConfig.options) === null || _a === void 0 ? void 0 : _a.indexAxis) !== null && _b !== void 0 ? _b : 'x';
|
|
232
|
+
const labelsToApply = this.getLabelsToApply({ labels, datasets, type, indexAxis });
|
|
219
233
|
return mergeDeepAll(typeConfig, {
|
|
220
234
|
data: {
|
|
221
235
|
labels: labelsToApply,
|
|
@@ -241,7 +255,9 @@ export class ChartJSService {
|
|
|
241
255
|
createDatasets(data) {
|
|
242
256
|
var _a, _b, _c;
|
|
243
257
|
// We need to modify the datasets in order to add datalabels.
|
|
244
|
-
if (((_a = this.dataLabelOptions) === null || _a === void 0 ? void 0 : _a.showCurrent) ||
|
|
258
|
+
if (((_a = this.dataLabelOptions) === null || _a === void 0 ? void 0 : _a.showCurrent) ||
|
|
259
|
+
((_b = this.dataLabelOptions) === null || _b === void 0 ? void 0 : _b.showMax) ||
|
|
260
|
+
((_c = this.dataLabelOptions) === null || _c === void 0 ? void 0 : _c.showMin)) {
|
|
245
261
|
data = this.addDataLabelsData(data);
|
|
246
262
|
}
|
|
247
263
|
let datasets = isNumberArray(data) ? [{ data }] : data;
|
|
@@ -304,11 +320,9 @@ export class ChartJSService {
|
|
|
304
320
|
return { value, pointer };
|
|
305
321
|
}
|
|
306
322
|
}
|
|
307
|
-
ChartJSService
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
{ type: ChartConfigService }
|
|
313
|
-
];
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQU1MLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5QyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUdyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFdkQsV0FBVyxDQUFDLElBU2xCO1FBQ0MsTUFBTSxFQUNKLGFBQWEsRUFDYixJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixtQkFBbUIsR0FDcEIsR0FBRyxJQUFJLENBQUM7UUFFVCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsSUFBSSxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixD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LEtBQUssRUFBRSxFQUFFO1lBQ3hDLElBQUksU0FBUyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDN0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtZQUNELElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDOUQsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7WUE3WUYsVUFBVTs7OztZQU5GLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUVsZW1lbnQsIENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRPcHRpb25zLCBTY2F0dGVyRGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk9wdGlvbnMgfSBmcm9tICdjaGFydGpzLXBsdWdpbi1hbm5vdGF0aW9uJztcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgbWVyZ2VEZWVwQWxsIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwJztcbmltcG9ydCB7XG4gIENoYXJ0RGF0YUxhYmVsT3B0aW9ucyxcbiAgQ2hhcnREYXRhc2V0LFxuICBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gIENoYXJ0TG9jYWxlLFxuICBDaGFydFR5cGUsXG4gIGlzTnVtYmVyQXJyYXksXG59IGZyb20gJy4uL2NoYXJ0LnR5cGVzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZ3MvY2hhcnQtY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJy4vY29uZmlndXJlZC1jaGFydC1qcyc7XG5cbmNvbnN0IENIQVJUX0xPQ0FMRV9ERUZBVUxUID0gJ2VuLVVTJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFydDogQ2hhcnQ7XG4gIHByaXZhdGUgZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICBwcml2YXRlIGhpZ2hsaWdodGVkRWxlbWVudHM6IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgcHJpdmF0ZSBjaGFydFR5cGU6IENoYXJ0VHlwZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IENoYXJ0TG9jYWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhcnRDb25maWdTZXJ2aWNlOiBDaGFydENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIHJlbmRlckNoYXJ0KGFyZ3M6IHtcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXTtcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSB8IHN0cmluZ1tdW107XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgZGF0YUxhYmVsT3B0aW9ucz86IENoYXJ0RGF0YUxhYmVsT3B0aW9ucztcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgdGFyZ2V0RWxlbWVudCxcbiAgICAgIHR5cGUsXG4gICAgICBkYXRhLFxuICAgICAgbGFiZWxzLFxuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgfSA9IGFyZ3M7XG5cbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zIHx8IG51bGw7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cyB8fCBudWxsO1xuICAgIHRoaXMuY2hhcnRUeXBlID0gdHlwZTtcbiAgICB0aGlzLmxvY2FsZSA9IGRhdGFMYWJlbE9wdGlvbnM/LmxvY2FsZSB8fCBDSEFSVF9MT0NBTEVfREVGQVVMVDtcblxuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3Qoe1xuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICB9KTtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5jcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KHR5cGUsIGRhdGFzZXRzLCBvcHRpb25zLCBsYWJlbHMpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQodGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlZHJhd0NoYXJ0KCkge1xuICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEpO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gZGF0YXNldHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFiZWxzKGxhYmVsczogc3RyaW5nW10gfCBzdHJpbmdbXVtdKSB7XG4gICAgdGhpcy5jaGFydC5kYXRhLmxhYmVscyA9IGxhYmVscztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IENoYXJ0VHlwZSwgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucykge1xuICAgIGlmICh0eXBlID09PSAnYmFyJyB8fCB0eXBlID09PSAnY29sdW1uJykge1xuICAgICAgLyogaW5kZXhBeGlzIGRvZXMgbm90IHVwZGF0ZSBwcmVkaWN0YWJseTsgdXBkYXRlIGJ5IHJlcGxhY2luZyBcbiAgICAgICAgIHRoZSBjaGFydCBlbnRpcmVseSBpbnN0ZWFkICovXG4gICAgICB0aGlzLmRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGUsIGN1c3RvbU9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vbkRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGUsIGN1c3RvbU9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhTGFiZWxPcHRpb25zKGRhdGFMYWJlbE9wdGlvbnM6IENoYXJ0RGF0YUxhYmVsT3B0aW9ucykge1xuICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucyA9IGRhdGFMYWJlbE9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlT3B0aW9ucyhjdXN0b21PcHRpb25zOiBDaGFydE9wdGlvbnMsIHR5cGU6IENoYXJ0VHlwZSkge1xuICAgIGNvbnN0IGFubm90YXRpb25zID0gdGhpcy5nZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTtcbiAgICB0aGlzLmNoYXJ0VHlwZSA9IHR5cGU7XG4gICAgdGhpcy5jaGFydC5vcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zT2JqZWN0KHsgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHRoaXMuY2hhcnQub3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVIaWdobGlnaHRlZEVsZW1lbnRzKGhpZ2hsaWdodGVkRWxlbWVudHM/OiBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMpIHtcbiAgICB0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHMgPSBoaWdobGlnaHRlZEVsZW1lbnRzO1xuICAgIGNvbnN0IG9sZERhdGFzZXRzID0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzIGFzIENoYXJ0RGF0YXNldFtdO1xuXG4gICAgLy8gQ2xlYXIgb2xkIGRhdGFzZXRzIG9mIGhpZ2hsaWdodGVkIGVsZW1lbnRzXG4gICAgb2xkRGF0YXNldHMubWFwKChkYXRhc2V0KSA9PiB7XG4gICAgICBpZiAoZGF0YXNldD8ua2lyYnlPcHRpb25zPy5oaWdobGlnaHRlZEVsZW1lbnRzKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhc2V0LmtpcmJ5T3B0aW9ucy5oaWdobGlnaHRlZEVsZW1lbnRzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhvbGREYXRhc2V0cyk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpOiBBbm5vdGF0aW9uT3B0aW9uc1tdIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuY2hhcnQub3B0aW9ucy5wbHVnaW5zPy5hbm5vdGF0aW9uPy5hbm5vdGF0aW9ucztcbiAgICAvKiBJbiBicm93c2VyIGNoYXJ0LmpzIG1pZ2h0IHJldHVybiBhbm5vdGF0aW9ucyBhcyBhIFByb3h5IG9iamVjdDsgZm9yY2UgaXQgdG8gYmUgYW4gYXJyYXkuXG4gICAgICAgRWFjaCBhbm5vdGF0aW9uT3B0aW9uIGluIHRoZSByZXN1bHRpbmcgYXJyYXkgIHdpbGwgYWxzbyBiZSBhIFByb3h5IG9iamVjdC4gXG4gICAgICAgQnV0IGludGVybmFsbHkgY2hhcnQuanMgd2lsbCBqdXN0IHdvcmsgd2l0aCB0aGVtIGFzIG5vcm1hbCB2YWx1ZXMgKi9cbiAgICBpZiAoYW5ub3RhdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGFubm90YXRpb25zKS5tYXAoKGtleSkgPT4gYW5ub3RhdGlvbnNba2V5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGU6IENoYXJ0VHlwZSwgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucykge1xuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzIGFzIENoYXJ0RGF0YXNldFtdO1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuY2hhcnQuZGF0YS5sYWJlbHM7XG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3QoeyBjdXN0b21PcHRpb25zLCBhbm5vdGF0aW9ucyB9KTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QodHlwZSwgZGF0YXNldHMsIG9wdGlvbnMsIGxhYmVscyk7XG4gICAgY29uc3QgY2FudmFzRWxlbWVudCA9IHRoaXMuY2hhcnQuY2FudmFzO1xuXG4gICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQoY2FudmFzRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9uRGVzdHJ1Y3RpdmVseVVwZGF0ZVR5cGUoY2hhcnRUeXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSBjaGFydFR5cGU7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7XG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhcnQuY29uZmlnLnR5cGUgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5jaGFydFR5cGVUb0NoYXJ0SlNUeXBlKGNoYXJ0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVOZXdDaGFydChjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCwgY29uZmlnOiBDaGFydENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KGNhbnZhc0VsZW1lbnQsIGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBBcnJheShsYXJnZXN0RGF0YXNldC5kYXRhLmxlbmd0aCkuZmlsbCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgcmV0dXJuIGFubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xuICAgICAgY29uc3QgYW5ub3RhdGlvblR5cGVEZWZhdWx0cyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEFubm90YXRpb25EZWZhdWx0cyhhbm5vdGF0aW9uLnR5cGUpO1xuICAgICAgcmV0dXJuIG1lcmdlRGVlcEFsbChhbm5vdGF0aW9uVHlwZURlZmF1bHRzLCBhbm5vdGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5ub3RhdGlvblBsdWdpbk9wdGlvbnNPYmplY3QoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIGFubm90YXRpb246IHtcbiAgICAgICAgICBhbm5vdGF0aW9uczogYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKG9wdGlvbnM6IENoYXJ0T3B0aW9ucyk6IENoYXJ0T3B0aW9ucyB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKCk7XG4gICAgT2JqZWN0LmVudHJpZXMoaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKS5mb3JFYWNoKChba2V5LCBfXSkgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSBvcHRpb25zW2tleV07XG4gICAgICBvcHRpb25zW2tleV0gPSAoZTogRXZlbnQsIGE6IEFjdGl2ZUVsZW1lbnRbXSwgYzogQ2hhcnQpID0+IHtcbiAgICAgICAgaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zW2tleV0oZSwgYSwgYywgY2FsbGJhY2spO1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3RvY2tPcHRpb25zT2JqZWN0KGRhdGFMYWJlbE9wdGlvbnM6IENoYXJ0RGF0YUxhYmVsT3B0aW9ucykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBkYXRlID0gdG9EYXRlKCh0b29sdGlwSXRlbXNbMF0/LnJhdyBhcyBhbnkpPy54KTtcbiAgICAgICAgICAgICAgaWYgKGRhdGUudmFsdWVPZigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCB7XG4gICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICAgICAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogKGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgLy8gSXQncyBub3QgcG9zc2libGUgdG8gYWRkIHNwYWNpbmcgYmV0d2VlbiBjb2xvciBsZWdlbmQgYW5kIHRleHQgc28gd2VcbiAgICAgICAgICAgICAgLy8gcHJlZml4IHdpdGggYSBzcGFjZS5cbiAgICAgICAgICAgICAgcmV0dXJuICcgJyArIGNvbnRleHQuZm9ybWF0dGVkVmFsdWUgKyAoZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHk6IHtcbiAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgKyAoZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU9wdGlvbnNPYmplY3QoYXJnczoge1xuICAgIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnM7XG4gICAgYW5ub3RhdGlvbnM/OiBBbm5vdGF0aW9uT3B0aW9uc1tdO1xuICAgIGRhdGFMYWJlbE9wdGlvbnM/OiBDaGFydERhdGFMYWJlbE9wdGlvbnM7XG4gIH0pOiBDaGFydE9wdGlvbnMge1xuICAgIGNvbnN0IHsgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMsIGRhdGFMYWJlbE9wdGlvbnM6IGNoYXJ0RGF0YUxhYmVsT3B0aW9ucyB9ID0gYXJncztcblxuICAgIGNvbnN0IHR5cGVDb25maWcgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5nZXRUeXBlQ29uZmlnKHRoaXMuY2hhcnRUeXBlKTtcbiAgICBjb25zdCB0eXBlQ29uZmlnT3B0aW9ucyA9IHR5cGVDb25maWc/Lm9wdGlvbnM7XG4gICAgY29uc3QgYW5ub3RhdGlvblBsdWdpbk9wdGlvbnMgPSBhbm5vdGF0aW9uc1xuICAgICAgPyB0aGlzLmNyZWF0ZUFubm90YXRpb25QbHVnaW5PcHRpb25zT2JqZWN0KGFubm90YXRpb25zKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBzdG9ja09wdGlvbnM6IENoYXJ0T3B0aW9ucyA9XG4gICAgICB0aGlzLmNoYXJ0VHlwZSA9PT0gJ3N0b2NrJyA/IHRoaXMuY3JlYXRlU3RvY2tPcHRpb25zT2JqZWN0KGNoYXJ0RGF0YUxhYmVsT3B0aW9ucykgOiB7fTtcblxuICAgIGxldCBvcHRpb25zOiBDaGFydE9wdGlvbnMgPSBtZXJnZURlZXBBbGwoXG4gICAgICBzdG9ja09wdGlvbnMsXG4gICAgICB0eXBlQ29uZmlnT3B0aW9ucyxcbiAgICAgIGN1c3RvbU9wdGlvbnMsXG4gICAgICBhbm5vdGF0aW9uUGx1Z2luT3B0aW9uc1xuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hcHBseUludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFN0b2NrTGFiZWxzKGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSwgbG9jYWxlOiBDaGFydExvY2FsZSkge1xuICAgIGNvbnN0IGxhcmdlc3REYXRhc2V0ID0gZGF0YXNldHMucmVkdWNlKChwcmV2aW91c0RhdGFzZXQsIGN1cnJlbnREYXRhc2V0KSA9PlxuICAgICAgcHJldmlvdXNEYXRhc2V0LmRhdGEubGVuZ3RoID4gY3VycmVudERhdGFzZXQuZGF0YS5sZW5ndGggPyBwcmV2aW91c0RhdGFzZXQgOiBjdXJyZW50RGF0YXNldFxuICAgICk7XG4gICAgcmV0dXJuIGxhcmdlc3REYXRhc2V0LmRhdGEubWFwKChwb2ludDogU2NhdHRlckRhdGFQb2ludCkgPT5cbiAgICAgIHRvRGF0ZShwb2ludC54KS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29uZmlndXJhdGlvbk9iamVjdChcbiAgICB0eXBlOiBDaGFydFR5cGUsXG4gICAgZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdLFxuICAgIG9wdGlvbnM6IENoYXJ0T3B0aW9ucyxcbiAgICBsYWJlbHM/OiB1bmtub3duW11cbiAgKTogQ2hhcnRDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0eXBlKTtcblxuICAgIGNvbnN0IGxhYmVsc1RvQXBwbHkgPSAoKCkgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICdzdG9jaycpIHtcbiAgICAgICAgLyogXG4gICAgICAgICAgIFRoZSB0aW1lIHNjYWxlIHdpbGwgYXV0byBnZW5lcmF0ZSBsYWJlbHMgYmFzZWQgb24gZGF0YS4gXG4gICAgICAgICAgIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBwYXNzIGFuIGVtcHR5IGFycmF5IHRvIGdldCB0aGUgZGVmYXVsdCBcbiAgICAgICAgICAgYmVoYXZpb3VyIG9mIGNoYXJ0LmpzIHdoZW4gdXNpbmcgc3RvY2sgY2hhcnQuIFxuXG4gICAgICAgICAgIFRPRE86IFNpbXBsaWZ5IHRvIGFsd2F5cyBwYXNzIGxhYmVscywgaWYgZ2l2ZW4sIHRvIGNoYXJ0LmpzLlxuICAgICAgICAgICBXb3VsZCBiZSBhIGJyZWFraW5nIGNoYW5nZS4gU2VlIGlzc3VlOiBcbiAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2tpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pc3N1ZXMvMjA4NVxuICAgICAgICAqL1xuICAgICAgICBjb25zdCBzaG91bGRVc2VUaW1lc2NhbGVMYWJlbHMgPVxuICAgICAgICAgIGxhYmVscz8ubGVuZ3RoID09PSAwICYmIG9wdGlvbnM/LnNjYWxlcz8ueD8udHlwZSA9PT0gJ3RpbWUnO1xuICAgICAgICBpZiAoc2hvdWxkVXNlVGltZXNjYWxlTGFiZWxzKSByZXR1cm4gbGFiZWxzO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0U3RvY2tMYWJlbHMoZGF0YXNldHMsIHRoaXMubG9jYWxlKTtcbiAgICAgIH0gZWxzZSBpZiAobGFiZWxzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBsYWJlbHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVCbGFua0xhYmVscyhkYXRhc2V0cyk7XG4gICAgICB9XG4gICAgfSkoKTtcblxuICAgIHJldHVybiBtZXJnZURlZXBBbGwodHlwZUNvbmZpZywge1xuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbHM6IGxhYmVsc1RvQXBwbHksXG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgfSkgYXMgQ2hhcnRDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIaWdobGlnaHRlZEVsZW1lbnRzVG9EYXRhc2V0cyhcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzOiBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdXG4gICkge1xuICAgIGhpZ2hsaWdodGVkRWxlbWVudHMuZm9yRWFjaCgoW2RhdGFzZXRJbmRleCwgZGF0YUluZGV4XSkgPT4ge1xuICAgICAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFzZXRJbmRleF07XG4gICAgICBpZiAoIWRhdGFzZXQpIHJldHVybjtcblxuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucy5oaWdobGlnaHRlZEVsZW1lbnRzLnB1c2goZGF0YUluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFzZXQua2lyYnlPcHRpb25zID0ge1xuICAgICAgICAgIC4uLmRhdGFzZXQua2lyYnlPcHRpb25zLFxuICAgICAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHM6IFtkYXRhSW5kZXhdLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlRGF0YXNldHMoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICAvLyBXZSBuZWVkIHRvIG1vZGlmeSB0aGUgZGF0YXNldHMgaW4gb3JkZXIgdG8gYWRkIGRhdGFsYWJlbHMuXG4gICAgaWYgKFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93Q3VycmVudCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWF4IHx8XG4gICAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnM/LnNob3dNaW5cbiAgICApIHtcbiAgICAgIGRhdGEgPSB0aGlzLmFkZERhdGFMYWJlbHNEYXRhKGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGF0YXNldHMgPSBpc051bWJlckFycmF5KGRhdGEpID8gW3sgZGF0YSB9XSA6IGRhdGE7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRFbGVtZW50cylcbiAgICAgIHRoaXMuYWRkSGlnaGxpZ2h0ZWRFbGVtZW50c1RvRGF0YXNldHModGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzLCBkYXRhc2V0cyk7XG5cbiAgICAvKiBcbiAgICAgICBIYWNreSBzb2x1dGlvbi4gU2hvdWxkIGJlIGZpeGVkIGluIHRoaXMgaXNzdWU6XG4gICAgICBodHRwczovL2dpdGh1Yi5jb20va2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2lzc3Vlcy8xOTY3IFxuICAgICovXG4gICAgaWYgKHRoaXMuY2hhcnRUeXBlID09PSAnc3RvY2snKSB7XG4gICAgICBkYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0KSA9PiB7XG4gICAgICAgIGRhdGFzZXQua2lyYnlPcHRpb25zID0ge1xuICAgICAgICAgIC4uLmRhdGFzZXQua2lyYnlPcHRpb25zLFxuICAgICAgICAgIGlzU3RvY2tDaGFydDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhc2V0cztcbiAgfVxuICAvKipcbiAgICogRGVjb3JhdGUgQ2hhcnREYXRhc2V0IHdpdGggcHJvcGVydGllcyB0byBhbGxvdyBmb3IgZGF0YWxhYmVscy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHJldHVybnMgQ2hhcnREYXRhc2V0W11cbiAgICovXG4gIHB1YmxpYyBhZGREYXRhTGFiZWxzRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogQ2hhcnREYXRhc2V0W10ge1xuICAgIGlmIChpc051bWJlckFycmF5KGRhdGEpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkN1cnJlbnRseSBpdCdzIGltcG9zc2libGUgdG8gYWRkIGRhdGFMYWJlbHMgdG8gbm9uIFNjYXR0ZXJEYXRhUG9pbnQgZGF0YXNldHNcIik7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjb3JhdGVEYXRhUG9pbnQgPSAoXG4gICAgICBzZXQ6IENoYXJ0RGF0YXNldCxcbiAgICAgIGF4aXM6ICd4JyB8ICd5JyxcbiAgICAgIGRpcmVjdGlvbjogJ2hpZ2gnIHwgJ2xvdycsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbScgfCAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCdcbiAgICApOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIHBvaW50ZXIgfSA9IHRoaXMubG9jYXRlVmFsdWVJbmRleEluRGF0YXNldChzZXQsIGF4aXMsIGRpcmVjdGlvbik7XG4gICAgICBzZXQuZGF0YVtwb2ludGVyXSA9IHtcbiAgICAgICAgLi4uKHNldC5kYXRhW3BvaW50ZXJdIGFzIFNjYXR0ZXJEYXRhUG9pbnQpLFxuICAgICAgICBkYXRhbGFiZWw6IHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWUgKyAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnZhbHVlU3VmZml4IHx8ICcnKSxcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgU2NhdHRlckRhdGFQb2ludDtcbiAgICB9O1xuXG4gICAgZGF0YS5tYXAoKHNldCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy5zaG93TWluKSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3knLCAnbG93JywgJ2JvdHRvbScpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy5zaG93TWF4KSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3knLCAnaGlnaCcsICd0b3AnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd0N1cnJlbnQpIHtcbiAgICAgICAgZGVjb3JhdGVEYXRhUG9pbnQoc2V0LCAneCcsICdoaWdoJywgJ3JpZ2h0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGxvY2F0ZVZhbHVlSW5kZXhJbkRhdGFzZXQoXG4gICAgZGF0YXNldDogQ2hhcnREYXRhc2V0LFxuICAgIGF4aXM6IHN0cmluZyxcbiAgICBkaXJlY3Rpb246ICdsb3cnIHwgJ2hpZ2gnXG4gICk6IHsgdmFsdWU6IG51bWJlcjsgcG9pbnRlcjogbnVtYmVyIH0ge1xuICAgIGxldCBwb2ludGVyOiBudW1iZXI7XG4gICAgbGV0IHZhbHVlOiBudW1iZXI7XG4gICAgZGF0YXNldC5kYXRhLmZvckVhY2goKGRhdGFwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gJ2xvdycgJiYgKCF2YWx1ZSB8fCBkYXRhcG9pbnRbYXhpc10gPCB2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBkYXRhcG9pbnRbJ3knXTtcbiAgICAgICAgcG9pbnRlciA9IGluZGV4O1xuICAgICAgfVxuICAgICAgaWYgKGRpcmVjdGlvbiA9PSAnaGlnaCcgJiYgKCF2YWx1ZSB8fCBkYXRhcG9pbnRbYXhpc10gPiB2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBkYXRhcG9pbnRbJ3knXTtcbiAgICAgICAgcG9pbnRlciA9IGluZGV4O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IHZhbHVlLCBwb2ludGVyIH07XG4gIH1cbn1cbiJdfQ==
|
|
323
|
+
/** @nocollapse */ ChartJSService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChartJSService, deps: [{ token: i1.ChartConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
324
|
+
/** @nocollapse */ ChartJSService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChartJSService });
|
|
325
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ChartJSService, decorators: [{
|
|
326
|
+
type: Injectable
|
|
327
|
+
}], ctorParameters: function () { return [{ type: i1.ChartConfigService }]; } });
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQU9MLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRTlDLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBR3JDLE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUcsQ0FBQztJQUV2RCxXQUFXLENBQUMsSUFTbEI7UUFDQyxNQUFNLEVBQ0osYUFBYSxFQUNiLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUNwQixHQUFHLElBQUksQ0FBQztRQUVULElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsSUFBSSxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixJQUFJLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUEsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdC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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUVsZW1lbnQsIENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRPcHRpb25zLCBTY2F0dGVyRGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk9wdGlvbnMgfSBmcm9tICdjaGFydGpzLXBsdWdpbi1hbm5vdGF0aW9uJztcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgbWVyZ2VEZWVwQWxsIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwJztcbmltcG9ydCB7XG4gIENoYXJ0RGF0YUxhYmVsT3B0aW9ucyxcbiAgQ2hhcnREYXRhc2V0LFxuICBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gIENoYXJ0TGFiZWwsXG4gIENoYXJ0TG9jYWxlLFxuICBDaGFydFR5cGUsXG4gIGlzTnVtYmVyQXJyYXksXG59IGZyb20gJy4uL2NoYXJ0LnR5cGVzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZ3MvY2hhcnQtY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJy4vY29uZmlndXJlZC1jaGFydC1qcyc7XG5cbmNvbnN0IENIQVJUX0xPQ0FMRV9ERUZBVUxUID0gJ2VuLVVTJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFydDogQ2hhcnQ7XG4gIHByaXZhdGUgZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICBwcml2YXRlIGhpZ2hsaWdodGVkRWxlbWVudHM6IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgcHJpdmF0ZSBjaGFydFR5cGU6IENoYXJ0VHlwZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IENoYXJ0TG9jYWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhcnRDb25maWdTZXJ2aWNlOiBDaGFydENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIHJlbmRlckNoYXJ0KGFyZ3M6IHtcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXTtcbiAgICBsYWJlbHM/OiBDaGFydExhYmVsW107XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgZGF0YUxhYmVsT3B0aW9ucz86IENoYXJ0RGF0YUxhYmVsT3B0aW9ucztcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgdGFyZ2V0RWxlbWVudCxcbiAgICAgIHR5cGUsXG4gICAgICBkYXRhLFxuICAgICAgbGFiZWxzLFxuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgfSA9IGFyZ3M7XG5cbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zIHx8IG51bGw7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cyB8fCBudWxsO1xuICAgIHRoaXMuY2hhcnRUeXBlID0gdHlwZTtcbiAgICB0aGlzLmxvY2FsZSA9IGRhdGFMYWJlbE9wdGlvbnM/LmxvY2FsZSB8fCBDSEFSVF9MT0NBTEVfREVGQVVMVDtcblxuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3Qoe1xuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25zLFxuICAgICAgZGF0YUxhYmVsT3B0aW9ucyxcbiAgICB9KTtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5jcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KHR5cGUsIGRhdGFzZXRzLCBvcHRpb25zLCBsYWJlbHMpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQodGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlZHJhd0NoYXJ0KCkge1xuICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEpO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gZGF0YXNldHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFiZWxzKGxhYmVsczogQ2hhcnRMYWJlbFtdKSB7XG4gICAgLyogQXMgbGFiZWxzIHByb3ZpZGVkIHZpYSB0aGUgJ2xhYmVscycgaW5wdXQgcHJvcGVydHkgYWx3YXlzIGhhcyBcbiAgICBoaWdoZXN0IHByaW9yaXR5IC0gd2UgY2FuIGp1c3Qgc2V0IHRoZSBwcm9wZXJ0eSBkaXJlY3RseSAqL1xuICAgIHRoaXMuY2hhcnQuZGF0YS5sYWJlbHMgPSBsYWJlbHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBpZiAodHlwZSA9PT0gJ2JhcicgfHwgdHlwZSA9PT0gJ2NvbHVtbicpIHtcbiAgICAgIC8qIGluZGV4QXhpcyBkb2VzIG5vdCB1cGRhdGUgcHJlZGljdGFibHk7IHVwZGF0ZSBieSByZXBsYWNpbmcgXG4gICAgICAgICB0aGUgY2hhcnQgZW50aXJlbHkgaW5zdGVhZCAqL1xuICAgICAgdGhpcy5kZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlLCBjdXN0b21PcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub25EZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlLCBjdXN0b21PcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RGF0YUxhYmVsT3B0aW9ucyhkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnMpIHtcbiAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnMgPSBkYXRhTGFiZWxPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU9wdGlvbnMoY3VzdG9tT3B0aW9uczogQ2hhcnRPcHRpb25zLCB0eXBlOiBDaGFydFR5cGUpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIHRoaXMuY2hhcnQub3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7IGN1c3RvbU9wdGlvbnMsIGFubm90YXRpb25zIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMgPSB0aGlzLmFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zKTtcbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uLmFubm90YXRpb25zID0gYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSGlnaGxpZ2h0ZWRFbGVtZW50cyhoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzKSB7XG4gICAgdGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICBjb25zdCBvbGREYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcblxuICAgIC8vIENsZWFyIG9sZCBkYXRhc2V0cyBvZiBoaWdobGlnaHRlZCBlbGVtZW50c1xuICAgIG9sZERhdGFzZXRzLm1hcCgoZGF0YXNldCkgPT4ge1xuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkZWxldGUgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyA9IHRoaXMuY3JlYXRlRGF0YXNldHMob2xkRGF0YXNldHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTogQW5ub3RhdGlvbk9wdGlvbnNbXSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucz8uYW5ub3RhdGlvbj8uYW5ub3RhdGlvbnM7XG4gICAgLyogSW4gYnJvd3NlciBjaGFydC5qcyBtaWdodCByZXR1cm4gYW5ub3RhdGlvbnMgYXMgYSBQcm94eSBvYmplY3Q7IGZvcmNlIGl0IHRvIGJlIGFuIGFycmF5LlxuICAgICAgIEVhY2ggYW5ub3RhdGlvbk9wdGlvbiBpbiB0aGUgcmVzdWx0aW5nIGFycmF5ICB3aWxsIGFsc28gYmUgYSBQcm94eSBvYmplY3QuIFxuICAgICAgIEJ1dCBpbnRlcm5hbGx5IGNoYXJ0LmpzIHdpbGwganVzdCB3b3JrIHdpdGggdGhlbSBhcyBub3JtYWwgdmFsdWVzICovXG4gICAgaWYgKGFubm90YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhhbm5vdGF0aW9ucykubWFwKChrZXkpID0+IGFubm90YXRpb25zW2tleV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmNoYXJ0LmRhdGEubGFiZWxzIGFzIENoYXJ0TGFiZWxbXTsgLy8gY2hhcnQuanMgc3RvcmVzIGxhYmVscyBhcyB1bmtub3duW107IGNhc3QgaXQgdG8gQ2hhcnRMYWJlbFtdXG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpO1xuXG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3QoeyBjdXN0b21PcHRpb25zLCBhbm5vdGF0aW9ucyB9KTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QodHlwZSwgZGF0YXNldHMsIG9wdGlvbnMsIGxhYmVscyk7XG4gICAgY29uc3QgY2FudmFzRWxlbWVudCA9IHRoaXMuY2hhcnQuY2FudmFzO1xuXG4gICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQoY2FudmFzRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9uRGVzdHJ1Y3RpdmVseVVwZGF0ZVR5cGUoY2hhcnRUeXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydFR5cGUgPSBjaGFydFR5cGU7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7XG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY2hhcnQuY29uZmlnLnR5cGUgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5jaGFydFR5cGVUb0NoYXJ0SlNUeXBlKGNoYXJ0VHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVOZXdDaGFydChjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCwgY29uZmlnOiBDaGFydENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KGNhbnZhc0VsZW1lbnQsIGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBBcnJheShsYXJnZXN0RGF0YXNldC5kYXRhLmxlbmd0aCkuZmlsbCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdHNUb0Fubm90YXRpb25zKGFubm90YXRpb25zOiBBbm5vdGF0aW9uT3B0aW9uc1tdKSB7XG4gICAgcmV0dXJuIGFubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbikgPT4ge1xuICAgICAgY29uc3QgYW5ub3RhdGlvblR5cGVEZWZhdWx0cyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEFubm90YXRpb25EZWZhdWx0cyhhbm5vdGF0aW9uLnR5cGUpO1xuICAgICAgcmV0dXJuIG1lcmdlRGVlcEFsbChhbm5vdGF0aW9uVHlwZURlZmF1bHRzLCBhbm5vdGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5ub3RhdGlvblBsdWdpbk9wdGlvbnNPYmplY3QoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIGFubm90YXRpb246IHtcbiAgICAgICAgICBhbm5vdGF0aW9uczogYW5ub3RhdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKG9wdGlvbnM6IENoYXJ0T3B0aW9ucyk6IENoYXJ0T3B0aW9ucyB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zID1cbiAgICAgIHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldEludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucygpO1xuICAgIE9iamVjdC5lbnRyaWVzKGludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9ucykuZm9yRWFjaCgoW2tleSwgX10pID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gb3B0aW9uc1trZXldO1xuICAgICAgb3B0aW9uc1trZXldID0gKGU6IEV2ZW50LCBhOiBBY3RpdmVFbGVtZW50W10sIGM6IENoYXJ0KSA9PiB7XG4gICAgICAgIGludGVyYWN0aW9uRnVuY3Rpb25zRXh0ZW5zaW9uc1trZXldKGUsIGEsIGMsIGNhbGxiYWNrKTtcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0b2NrT3B0aW9uc09iamVjdChkYXRhTGFiZWxPcHRpb25zOiBDaGFydERhdGFMYWJlbE9wdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgICAgdGl0bGU6ICh0b29sdGlwSXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRvRGF0ZSgodG9vbHRpcEl0ZW1zWzBdPy5yYXcgYXMgYW55KT8ueCk7XG4gICAgICAgICAgICAgIGlmIChkYXRlLnZhbHVlT2YoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZSwge1xuICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGFkZCBzcGFjaW5nIGJldHdlZW4gY29sb3IgbGVnZW5kIGFuZCB0ZXh0IHNvIHdlXG4gICAgICAgICAgICAgIC8vIHByZWZpeCB3aXRoIGEgc3BhY2UuXG4gICAgICAgICAgICAgIHJldHVybiAnICcgKyBjb250ZXh0LmZvcm1hdHRlZFZhbHVlICsgKGRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB5OiB7XG4gICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgKGRhdGFMYWJlbE9wdGlvbnMudmFsdWVTdWZmaXggfHwgJycpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPcHRpb25zT2JqZWN0KGFyZ3M6IHtcbiAgICBjdXN0b21PcHRpb25zPzogQ2hhcnRPcHRpb25zO1xuICAgIGFubm90YXRpb25zPzogQW5ub3RhdGlvbk9wdGlvbnNbXTtcbiAgICBkYXRhTGFiZWxPcHRpb25zPzogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICB9KTogQ2hhcnRPcHRpb25zIHtcbiAgICBjb25zdCB7IGN1c3RvbU9wdGlvbnMsIGFubm90YXRpb25zLCBkYXRhTGFiZWxPcHRpb25zOiBjaGFydERhdGFMYWJlbE9wdGlvbnMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0aGlzLmNoYXJ0VHlwZSk7XG4gICAgY29uc3QgdHlwZUNvbmZpZ09wdGlvbnMgPSB0eXBlQ29uZmlnPy5vcHRpb25zO1xuICAgIGNvbnN0IGFubm90YXRpb25QbHVnaW5PcHRpb25zID0gYW5ub3RhdGlvbnNcbiAgICAgID8gdGhpcy5jcmVhdGVBbm5vdGF0aW9uUGx1Z2luT3B0aW9uc09iamVjdChhbm5vdGF0aW9ucylcbiAgICAgIDoge307XG4gICAgY29uc3Qgc3RvY2tPcHRpb25zOiBDaGFydE9wdGlvbnMgPVxuICAgICAgdGhpcy5jaGFydFR5cGUgPT09ICdzdG9jaycgPyB0aGlzLmNyZWF0ZVN0b2NrT3B0aW9uc09iamVjdChjaGFydERhdGFMYWJlbE9wdGlvbnMpIDoge307XG5cbiAgICBsZXQgb3B0aW9uczogQ2hhcnRPcHRpb25zID0gbWVyZ2VEZWVwQWxsKFxuICAgICAgc3RvY2tPcHRpb25zLFxuICAgICAgdHlwZUNvbmZpZ09wdGlvbnMsXG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvblBsdWdpbk9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBwbHlJbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMob3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRTdG9ja0xhYmVscyhkYXRhc2V0czogQ2hhcnREYXRhc2V0W10sIGxvY2FsZTogQ2hhcnRMb2NhbGUpIHtcbiAgICBjb25zdCBsYXJnZXN0RGF0YXNldCA9IGRhdGFzZXRzLnJlZHVjZSgocHJldmlvdXNEYXRhc2V0LCBjdXJyZW50RGF0YXNldCkgPT5cbiAgICAgIHByZXZpb3VzRGF0YXNldC5kYXRhLmxlbmd0aCA+IGN1cnJlbnREYXRhc2V0LmRhdGEubGVuZ3RoID8gcHJldmlvdXNEYXRhc2V0IDogY3VycmVudERhdGFzZXRcbiAgICApO1xuICAgIHJldHVybiBsYXJnZXN0RGF0YXNldC5kYXRhLm1hcCgocG9pbnQ6IFNjYXR0ZXJEYXRhUG9pbnQpID0+XG4gICAgICB0b0RhdGUocG9pbnQueCkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsc1RvQXBwbHkoYXJnczoge1xuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXTtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgaW5kZXhBeGlzOiAneCcgfCAneSc7XG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdO1xuICB9KSB7XG4gICAgY29uc3QgeyBkYXRhc2V0cywgbGFiZWxzLCB0eXBlLCBpbmRleEF4aXMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCBkYXRhc2V0SGFzTGFiZWxzID0gKHsgZGF0YSB9OiBDaGFydERhdGFzZXQpID0+XG4gICAgICAhIWRhdGE/LnNvbWUoXG4gICAgICAgIChkYXRhcG9pbnQpID0+IHR5cGVvZiBkYXRhcG9pbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBkYXRhcG9pbnRbaW5kZXhBeGlzXSA9PT0gJ3N0cmluZydcbiAgICAgICk7XG5cbiAgICAvKlxuICAgICAgIExhYmVscyBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdHdvIHdheXM6XG4gICAgICAgMS4gQXMgYSBzZXBlcmF0ZSBDaGFydExhYmVsW10gdmlhIHRoZSAnbGFiZWxzJyBpbnB1dCBwcm9wIC0gdGhpcyBoYXMgaGlnaGVzdCBwcmlvcml0eVxuICAgICAgIDIuIFRvZ2V0aGVyIHdpdGggdGhlIGRhdGFzZXQgdmlhIHRoZSAnZGF0YScgaW5wdXQgcHJvcCAtIGhlcmUgZWFjaCBkYXRhcG9pbnQgY29udGFpbnMgXG4gICAgICAgYSBsYWJlbCBmb3IgdGhlIGluZGV4QXhpcy4gXG4gICAgICAgRm9yIGV4YW1wbGU6IHsgeDogJ2xhYmVsMScsIHk6IDF9IGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbmRleCBheGlzIGlzICd4Jy4gXG5cbiAgICAgICBJZiBubyBsYWJlbHMgYXJlIHByb3ZpZGVkIHRoZW4gZGVmYXVsdCBsYWJlbHMgYXJlIHVzZWQuIFxuICAgICovXG4gICAgY29uc3QgbGFiZWxzQXJlR2l2ZW5Bc1NlcGVyYXRlQXJyYXkgPSBsYWJlbHMgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsYWJlbHNBcmVHaXZlblRvZ2V0aGVyV2l0aERhdGFzZXQgPSBkYXRhc2V0cy5zb21lKGRhdGFzZXRIYXNMYWJlbHMpO1xuXG4gICAgaWYgKGxhYmVsc0FyZUdpdmVuQXNTZXBlcmF0ZUFycmF5KSB7XG4gICAgICByZXR1cm4gbGFiZWxzO1xuICAgIH0gZWxzZSBpZiAobGFiZWxzQXJlR2l2ZW5Ub2dldGhlcldpdGhEYXRhc2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogXG4gICAgICAgIENoYXJ0LmpzIHJlcXVpcmVzIGxhYmVscyBhbG9uZyB0aGUgaW5kZXggYXhpcyB0byByZW5kZXIgYW55dGhpbmcgdGhlcmVmb3JlXG4gICAgICAgIGFsbCBvdGhlciB0eXBlcyB0aGFuIHN0b2NrIHVzZXMgZW1wdHkgbGFiZWxzIGFzIGRlZmF1bHQuIFRoZSBzdG9jayB0eXBlIFxuICAgICAgICBkaXNwbGF5cyBkYXkgJiBtb250aCBhcyBkZWZhdWx0LiBcbiAgICAgICovXG4gICAgICByZXR1cm4gdHlwZSA9PT0gJ3N0b2NrJ1xuICAgICAgICA/IHRoaXMuZ2V0RGVmYXVsdFN0b2NrTGFiZWxzKGRhdGFzZXRzLCB0aGlzLmxvY2FsZSlcbiAgICAgICAgOiB0aGlzLmNyZWF0ZUJsYW5rTGFiZWxzKGRhdGFzZXRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QoXG4gICAgdHlwZTogQ2hhcnRUeXBlLFxuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXSxcbiAgICBvcHRpb25zOiBDaGFydE9wdGlvbnMsXG4gICAgbGFiZWxzPzogQ2hhcnRMYWJlbFtdXG4gICk6IENoYXJ0Q29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgdHlwZUNvbmZpZyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldFR5cGVDb25maWcodHlwZSk7XG5cbiAgICBjb25zdCBpbmRleEF4aXMgPSB0eXBlQ29uZmlnPy5vcHRpb25zPy5pbmRleEF4aXMgPz8gJ3gnO1xuICAgIGNvbnN0IGxhYmVsc1RvQXBwbHkgPSB0aGlzLmdldExhYmVsc1RvQXBwbHkoeyBsYWJlbHMsIGRhdGFzZXRzLCB0eXBlLCBpbmRleEF4aXMgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VEZWVwQWxsKHR5cGVDb25maWcsIHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWxzOiBsYWJlbHNUb0FwcGx5LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgIH0pIGFzIENoYXJ0Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSGlnaGxpZ2h0ZWRFbGVtZW50c1RvRGF0YXNldHMoXG4gICAgaGlnaGxpZ2h0ZWRFbGVtZW50czogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzLFxuICAgIGRhdGFzZXRzOiBDaGFydERhdGFzZXRbXVxuICApIHtcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzLmZvckVhY2goKFtkYXRhc2V0SW5kZXgsIGRhdGFJbmRleF0pID0+IHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhc2V0SW5kZXhdO1xuICAgICAgaWYgKCFkYXRhc2V0KSByZXR1cm47XG5cbiAgICAgIGlmIChkYXRhc2V0Py5raXJieU9wdGlvbnM/LmhpZ2hsaWdodGVkRWxlbWVudHMpIHtcbiAgICAgICAgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cy5wdXNoKGRhdGFJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LmtpcmJ5T3B0aW9ucyxcbiAgICAgICAgICBoaWdobGlnaHRlZEVsZW1lbnRzOiBbZGF0YUluZGV4XSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZURhdGFzZXRzKGRhdGE6IENoYXJ0RGF0YXNldFtdIHwgbnVtYmVyW10pOiBDaGFydERhdGFzZXRbXSB7XG4gICAgLy8gV2UgbmVlZCB0byBtb2RpZnkgdGhlIGRhdGFzZXRzIGluIG9yZGVyIHRvIGFkZCBkYXRhbGFiZWxzLlxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd0N1cnJlbnQgfHxcbiAgICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucz8uc2hvd01heCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWluXG4gICAgKSB7XG4gICAgICBkYXRhID0gdGhpcy5hZGREYXRhTGFiZWxzRGF0YShkYXRhKTtcbiAgICB9XG4gICAgbGV0IGRhdGFzZXRzID0gaXNOdW1iZXJBcnJheShkYXRhKSA/IFt7IGRhdGEgfV0gOiBkYXRhO1xuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHMpXG4gICAgICB0aGlzLmFkZEhpZ2hsaWdodGVkRWxlbWVudHNUb0RhdGFzZXRzKHRoaXMuaGlnaGxpZ2h0ZWRFbGVtZW50cywgZGF0YXNldHMpO1xuXG4gICAgLyogXG4gICAgICAgSGFja3kgc29sdXRpb24uIFNob3VsZCBiZSBmaXhlZCBpbiB0aGlzIGlzc3VlOlxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2tpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pc3N1ZXMvMTk2NyBcbiAgICAqL1xuICAgIGlmICh0aGlzLmNoYXJ0VHlwZSA9PT0gJ3N0b2NrJykge1xuICAgICAgZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCkgPT4ge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LmtpcmJ5T3B0aW9ucyxcbiAgICAgICAgICBpc1N0b2NrQ2hhcnQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YXNldHM7XG4gIH1cbiAgLyoqXG4gICAqIERlY29yYXRlIENoYXJ0RGF0YXNldCB3aXRoIHByb3BlcnRpZXMgdG8gYWxsb3cgZm9yIGRhdGFsYWJlbHMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIENoYXJ0RGF0YXNldFtdXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0YUxhYmVsc0RhdGEoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICBpZiAoaXNOdW1iZXJBcnJheShkYXRhKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJDdXJyZW50bHkgaXQncyBpbXBvc3NpYmxlIHRvIGFkZCBkYXRhTGFiZWxzIHRvIG5vbiBTY2F0dGVyRGF0YVBvaW50IGRhdGFzZXRzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY29yYXRlRGF0YVBvaW50ID0gKFxuICAgICAgc2V0OiBDaGFydERhdGFzZXQsXG4gICAgICBheGlzOiAneCcgfCAneScsXG4gICAgICBkaXJlY3Rpb246ICdoaWdoJyB8ICdsb3cnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nIHwgJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAgKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBwb2ludGVyIH0gPSB0aGlzLmxvY2F0ZVZhbHVlSW5kZXhJbkRhdGFzZXQoc2V0LCBheGlzLCBkaXJlY3Rpb24pO1xuICAgICAgc2V0LmRhdGFbcG9pbnRlcl0gPSB7XG4gICAgICAgIC4uLihzZXQuZGF0YVtwb2ludGVyXSBhcyBTY2F0dGVyRGF0YVBvaW50KSxcbiAgICAgICAgZGF0YWxhYmVsOiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlICsgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyksXG4gICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIFNjYXR0ZXJEYXRhUG9pbnQ7XG4gICAgfTtcblxuICAgIGRhdGEubWFwKChzZXQpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01pbikge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2xvdycsICdib3R0b20nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01heCkge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2hpZ2gnLCAndG9wJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dDdXJyZW50KSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3gnLCAnaGlnaCcsICdyaWdodCcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2NhdGVWYWx1ZUluZGV4SW5EYXRhc2V0KFxuICAgIGRhdGFzZXQ6IENoYXJ0RGF0YXNldCxcbiAgICBheGlzOiBzdHJpbmcsXG4gICAgZGlyZWN0aW9uOiAnbG93JyB8ICdoaWdoJ1xuICApOiB7IHZhbHVlOiBudW1iZXI7IHBvaW50ZXI6IG51bWJlciB9IHtcbiAgICBsZXQgcG9pbnRlcjogbnVtYmVyO1xuICAgIGxldCB2YWx1ZTogbnVtYmVyO1xuICAgIGRhdGFzZXQuZGF0YS5mb3JFYWNoKChkYXRhcG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09ICdsb3cnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdIDwgdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gJ2hpZ2gnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdID4gdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyB2YWx1ZSwgcG9pbnRlciB9O1xuICB9XG59XG4iXX0=
|
package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js
CHANGED
|
@@ -20,7 +20,6 @@ const hasMarkerConfiguration = (chart) => {
|
|
|
20
20
|
*/
|
|
21
21
|
return chart.data.datasets.some((dataset) => { var _a; return !!((_a = dataset === null || dataset === void 0 ? void 0 : dataset.kirbyOptions) === null || _a === void 0 ? void 0 : _a.isStockChart); });
|
|
22
22
|
};
|
|
23
|
-
const ɵ0 = hasMarkerConfiguration;
|
|
24
23
|
export default {
|
|
25
24
|
id: 'marker',
|
|
26
25
|
afterInit: function (chart) {
|
|
@@ -197,5 +196,4 @@ export default {
|
|
|
197
196
|
}
|
|
198
197
|
},
|
|
199
198
|
};
|
|
200
|
-
export { ɵ0 };
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRqcy1wbHVnaW4tbWFya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LWpzL2NoYXJ0anMtcGx1Z2luLW1hcmtlci9jaGFydGpzLXBsdWdpbi1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7RUFJRTtBQUdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsRCxJQUFJLGNBQWMsR0FBRztJQUNuQixJQUFJLEVBQUU7UUFDSixLQUFLLEVBQUUsT0FBTztRQUNkLEtBQUssRUFBRSxDQUFDO1FBQ1IsV0FBVyxFQUFFLEVBQUU7S0FDaEI7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztLQUNmO0NBQ0YsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtJQUM5Qzs7TUFFRTtJQUNGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBcUIsRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFDLFFBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVksMENBQUUsWUFBWSxDQUFBLENBQUEsRUFBQSxDQUFDLENBQUM7QUFDcEcsQ0FBQyxDQUFDOztBQUVGLGVBQWU7SUFDYixFQUFFLEVBQUUsUUFBUTtJQUVaLFNBQVMsRUFBRSxVQUFTLEtBQUs7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBELElBQ0UsVUFBVSxLQUFLLFFBQVE7WUFDdkIsVUFBVSxL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biBpcyBoZWF2aWx5IGluc3BpcmVkIGJ5IGh0dHBzOi8vY2hhcnRqcy1wbHVnaW4tY3Jvc3NoYWlyLm5ldGxpZnkuYXBwXG4gIFRoZSBwcm9qZWN0IGFwcGVhcnMgc3RhbGUgYW5kIG9ubHkgdGhlIHZlcnRpY2FsIGxpbmUgZmVhdHVyZSBpcyBuZWVkZWRcbiAgIHBhcnQgb2YgdGhlIHBsdWdpbiB0aGF0IHdhcyBhY3R1YWxseSBuZWVkZWQgaXMgaW1wbGVtZW50ZWQgaGVyZS4gXG4qL1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IHZhbHVlT3JEZWZhdWx0IH0gZnJvbSAnY2hhcnQuanMvaGVscGVycyc7XG5cbmltcG9ydCB7IENoYXJ0RGF0YXNldCB9IGZyb20gJy4uLy4uL2NoYXJ0LnR5cGVzJztcblxudmFyIGRlZmF1bHRPcHRpb25zID0ge1xuICBsaW5lOiB7XG4gICAgY29sb3I6ICdibGFjaycsXG4gICAgd2lkdGg6IDEsXG4gICAgZGFzaFBhdHRlcm46IFtdLFxuICB9LFxuICBzbmFwOiB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gIH0sXG59O1xuXG5jb25zdCBoYXNNYXJrZXJDb25maWd1cmF0aW9uID0gKGNoYXJ0OiBDaGFydCkgPT4ge1xuICAvKiBcbiAgICBIYWNreSBzb2x1dGlvbi4gU2hvdWxkIGJlIGZpeGVkIGluIHRoaXMgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzE5NjdcbiAgKi9cbiAgcmV0dXJuIGNoYXJ0LmRhdGEuZGF0YXNldHMuc29tZSgoZGF0YXNldDogQ2hhcnREYXRhc2V0KSA9PiAhIWRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaXNTdG9ja0NoYXJ0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaWQ6ICdtYXJrZXInLFxuXG4gIGFmdGVySW5pdDogZnVuY3Rpb24oY2hhcnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHhTY2FsZVR5cGUgPSBjaGFydC5jb25maWcub3B0aW9ucy5zY2FsZXMueC50eXBlO1xuXG4gICAgaWYgKFxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ2xpbmVhcicgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICd0aW1lJyAmJlxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ2NhdGVnb3J5JyAmJlxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ2xvZ2FyaXRobWljJ1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFydC5vcHRpb25zLnBsdWdpbnMubWFya2VyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5tYXJrZXIgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICBjaGFydC5tYXJrZXIgPSB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzVXBkYXRlOiBmYWxzZSxcbiAgICAgIHg6IG51bGwsXG4gICAgICBvcmlnaW5hbERhdGE6IFtdLFxuICAgICAgb3JpZ2luYWxYUmFuZ2U6IHt9LFxuICAgICAgZHJhZ1N0YXJ0ZWQ6IGZhbHNlLFxuICAgICAgZHJhZ1N0YXJ0WDogbnVsbCxcbiAgICAgIGRyYWdFbmRYOiBudWxsLFxuICAgICAgc3VwcHJlc3NUb29sdGlwczogZmFsc2UsXG4gICAgICBpZ25vcmVOZXh0RXZlbnRzOiAwLFxuICAgIH07XG4gIH0sXG5cbiAgZ2V0T3B0aW9uOiBmdW5jdGlvbihjaGFydCwgY2F0ZWdvcnksIG5hbWUpIHtcbiAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQoXG4gICAgICBjaGFydC5vcHRpb25zLnBsdWdpbnMubWFya2VyW2NhdGVnb3J5XVxuICAgICAgICA/IGNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5tYXJrZXJbY2F0ZWdvcnldW25hbWVdXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdE9wdGlvbnNbY2F0ZWdvcnldW25hbWVdXG4gICAgKTtcbiAgfSxcblxuICBnZXRYU2NhbGU6IGZ1bmN0aW9uKGNoYXJ0KSB7XG4gICAgcmV0dXJuIGNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoID8gY2hhcnQuc2NhbGVzW2NoYXJ0LmdldERhdGFzZXRNZXRhKDApLnhBeGlzSURdIDogbnVsbDtcbiAgfSxcbiAgZ2V0WVNjYWxlOiBmdW5jdGlvbihjaGFydCkge1xuICAgIHJldHVybiBjaGFydC5zY2FsZXNbY2hhcnQuZ2V0RGF0YXNldE1ldGEoMCkueUF4aXNJRF07XG4gIH0sXG5cbiAgYWZ0ZXJFdmVudDogZnVuY3Rpb24oY2hhcnQsIGV2ZW50KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhcnQuY29uZmlnLm9wdGlvbnMuc2NhbGVzLngubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZSA9IGV2ZW50LmV2ZW50O1xuXG4gICAgdmFyIHhTY2FsZVR5cGUgPSBjaGFydC5jb25maWcub3B0aW9ucy5zY2FsZXMueC50eXBlO1xuXG4gICAgaWYgKFxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ2xpbmVhcicgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICd0aW1lJyAmJlxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ2NhdGVnb3J5JyAmJlxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ2xvZ2FyaXRobWljJ1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB4U2NhbGUgPSB0aGlzLmdldFhTY2FsZShjaGFydCk7XG5cbiAgICBpZiAoIXhTY2FsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFydC5tYXJrZXIuaWdub3JlTmV4dEV2ZW50cyA+IDApIHtcbiAgICAgIGNoYXJ0Lm1hcmtlci5pZ25vcmVOZXh0RXZlbnRzIC09IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZml4IGZvciBTYWZhcmlcbiAgICB2YXIgYnV0dG9ucyA9IGUubmF0aXZlLmJ1dHRvbnMgPT09IHVuZGVmaW5lZCA/IGUubmF0aXZlLndoaWNoIDogZS5uYXRpdmUuYnV0dG9ucztcbiAgICBpZiAoZS5uYXRpdmUudHlwZSA9PT0gJ21vdXNldXAnKSB7XG4gICAgICBidXR0b25zID0gMDtcbiAgICB9XG5cbiAgICBjaGFydC5tYXJrZXIuZW5hYmxlZCA9XG4gICAgICBlLnR5cGUgIT09ICdtb3VzZW91dCcgJiZcbiAgICAgIGUueCA+IHhTY2FsZS5nZXRQaXhlbEZvclZhbHVlKHhTY2FsZS5taW4pICYmXG4gICAgICBlLnggPCB4U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh4U2NhbGUubWF4KTtcblxuICAgIGlmICghY2hhcnQubWFya2VyLmVuYWJsZWQgJiYgIWNoYXJ0Lm1hcmtlci5zdXBwcmVzc1VwZGF0ZSkge1xuICAgICAgaWYgKGUueCA+IHhTY2FsZS5nZXRQaXhlbEZvclZhbHVlKHhTY2FsZS5tYXgpKSB7XG4gICAgICAgIC8vIHN1cHByZXNzIGZ1dHVyZSB1cGRhdGVzIHRvIHByZXZlbnQgZW5kbGVzcyByZWRyYXdpbmcgb2YgY2hhcnRcbiAgICAgICAgY2hhcnQubWFya2VyLnN1cHByZXNzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgY2hhcnQudXBkYXRlKCdub25lJyk7XG4gICAgICB9XG4gICAgICBjaGFydC5tYXJrZXIuZHJhZ1N0YXJ0ZWQgPSBmYWxzZTsgLy8gY2FuY2VsIHpvb20gaW4gcHJvZ3Jlc3NcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2hhcnQubWFya2VyLnN1cHByZXNzVXBkYXRlID0gZmFsc2U7XG5cbiAgICBjaGFydC5tYXJrZXIueCA9IGUueDtcblxuICAgIGNoYXJ0LmRyYXcoKTtcbiAgfSxcbiAgZG9EcmF3OiBmdW5jdGlvbihjaGFydCkge1xuICAgIGlmICghaGFzTWFya2VyQ29uZmlndXJhdGlvbihjaGFydCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNoYXJ0Lm1hcmtlci5lbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3VHJhY2VMaW5lKGNoYXJ0KTtcbiAgICB0aGlzLmludGVycG9sYXRlVmFsdWVzKGNoYXJ0KTtcbiAgICB0aGlzLmRyYXdUcmFjZVBvaW50cyhjaGFydCk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgYmVmb3JlRHJhdzogZnVuY3Rpb24oY2hhcnQpIHtcbiAgICByZXR1cm4gdGhpcy5kb0RyYXcoY2hhcnQpO1xuICB9LFxuICAvLyBMb2dpYyBtb3ZlZCB0byBiZWZvcmVEcmF3IGluIG9yZGVyXG4gIC8vIGZvciB0aGUgdmVydGljYWwgbGluZSB0byBiZSBkcmF3blxuICAvLyB1bmRlciB0b29sdGlwIGFuZCBkYXRhbGFiZWxzLlxuICAvLyBhZnRlckRyYXc6IGZ1bmN0aW9uKGNoYXJ0KSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuZG9EcmF3KGNoYXJ0KTtcbiAgLy8gfSxcblxuICBkcmF3VHJhY2VMaW5lOiBmdW5jdGlvbihjaGFydCkge1xuICAgIGlmICghaGFzTWFya2VyQ29uZmlndXJhdGlvbihjaGFydCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHlTY2FsZSA9IHRoaXMuZ2V0WVNjYWxlKGNoYXJ0KTtcblxuICAgIHZhciBsaW5lV2lkdGggPSB0aGlzLmdldE9wdGlvbihjaGFydCwgJ2xpbmUnLCAnd2lkdGgnKTtcbiAgICB2YXIgY29sb3IgPSB0aGlzLmdldE9wdGlvbihjaGFydCwgJ2xpbmUnLCAnY29sb3InKTtcbiAgICB2YXIgZGFzaFBhdHRlcm4gPSB0aGlzLmdldE9wdGlvbihjaGFydCwgJ2xpbmUnLCAnZGFzaFBhdHRlcm4nKTtcbiAgICB2YXIgc25hcEVuYWJsZWQgPSB0aGlzLmdldE9wdGlvbihjaGFydCwgJ3NuYXAnLCAnZW5hYmxlZCcpO1xuXG4gICAgdmFyIGxpbmVYID0gY2hhcnQubWFya2VyLng7XG5cbiAgICBpZiAoc25hcEVuYWJsZWQgJiYgY2hhcnQuX2FjdGl2ZS5sZW5ndGgpIHtcbiAgICAgIGxpbmVYID0gY2hhcnQuX2FjdGl2ZVswXS5lbGVtZW50Lng7XG4gICAgfVxuXG4gICAgY2hhcnQuY3R4LmJlZ2luUGF0aCgpO1xuICAgIGNoYXJ0LmN0eC5zZXRMaW5lRGFzaChkYXNoUGF0dGVybik7XG4gICAgY2hhcnQuY3R4Lm1vdmVUbyhsaW5lWCwgeVNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeVNjYWxlLm1heCkpO1xuICAgIGNoYXJ0LmN0eC5saW5lV2lkdGggPSBsaW5lV2lkdGg7XG4gICAgY2hhcnQuY3R4LnN0cm9rZVN0eWxlID0gY29sb3I7XG4gICAgY2hhcnQuY3R4LmxpbmVUbyhsaW5lWCwgeVNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeVNjYWxlLm1pbikpO1xuICAgIGNoYXJ0LmN0eC5zdHJva2UoKTtcbiAgICBjaGFydC5jdHguc2V0TGluZURhc2goW10pO1xuICB9LFxuXG4gIGRyYXdUcmFjZVBvaW50czogZnVuY3Rpb24oY2hhcnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAodmFyIGNoYXJ0SW5kZXggPSAwOyBjaGFydEluZGV4IDwgY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGg7IGNoYXJ0SW5kZXgrKykge1xuICAgICAgdmFyIGRhdGFzZXQgPSBjaGFydC5kYXRhLmRhdGFzZXRzW2NoYXJ0SW5kZXhdO1xuICAgICAgdmFyIG1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YShjaGFydEluZGV4KTtcblxuICAgICAgdmFyIHlTY2FsZSA9IGNoYXJ0LnNjYWxlc1ttZXRhLnlBeGlzSURdO1xuXG4gICAgICBpZiAobWV0YS5oaWRkZW4gfHwgIWRhdGFzZXQuaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNoYXJ0LmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIGNoYXJ0LmN0eC5hcmMoXG4gICAgICAgIGNoYXJ0Lm1hcmtlci54LFxuICAgICAgICB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZShkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlKSxcbiAgICAgICAgMyxcbiAgICAgICAgMCxcbiAgICAgICAgMiAqIE1hdGguUEksXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuICAgICAgY2hhcnQuY3R4LmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICBjaGFydC5jdHgubGluZVdpZHRoID0gMjtcbiAgICAgIGNoYXJ0LmN0eC5zdHJva2VTdHlsZSA9IGRhdGFzZXQuYm9yZGVyQ29sb3I7XG4gICAgICBjaGFydC5jdHguZmlsbCgpO1xuICAgICAgY2hhcnQuY3R4LnN0cm9rZSgpO1xuICAgIH1cbiAgfSxcblxuICBpbnRlcnBvbGF0ZVZhbHVlczogZnVuY3Rpb24oY2hhcnQpIHtcbiAgICBmb3IgKHZhciBjaGFydEluZGV4ID0gMDsgY2hhcnRJbmRleCA8IGNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoOyBjaGFydEluZGV4KyspIHtcbiAgICAgIHZhciBkYXRhc2V0ID0gY2hhcnQuZGF0YS5kYXRhc2V0c1tjaGFydEluZGV4XTtcblxuICAgICAgdmFyIG1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YShjaGFydEluZGV4KTtcblxuICAgICAgdmFyIHhTY2FsZSA9IGNoYXJ0LnNjYWxlc1ttZXRhLnhBeGlzSURdO1xuICAgICAgdmFyIHhWYWx1ZSA9IHhTY2FsZS5nZXRWYWx1ZUZvclBpeGVsKGNoYXJ0Lm1hcmtlci54KTtcblxuICAgICAgaWYgKG1ldGEuaGlkZGVuIHx8ICFkYXRhc2V0LmludGVycG9sYXRlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGF0YSA9IGRhdGFzZXQuZGF0YTtcbiAgICAgIHZhciBpbmRleCA9IGRhdGEuZmluZEluZGV4KGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgcmV0dXJuIG8ueCA+PSB4VmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcmV2ID0gZGF0YVtpbmRleCAtIDFdO1xuICAgICAgdmFyIG5leHQgPSBkYXRhW2luZGV4XTtcblxuICAgICAgaWYgKGNoYXJ0LmRhdGEuZGF0YXNldHNbY2hhcnRJbmRleF0uc3RlcHBlZExpbmUgJiYgcHJldikge1xuICAgICAgICBkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlID0gcHJldi55O1xuICAgICAgfSBlbHNlIGlmIChwcmV2ICYmIG5leHQpIHtcbiAgICAgICAgdmFyIHNsb3BlID0gKG5leHQueSAtIHByZXYueSkgLyAobmV4dC54IC0gcHJldi54KTtcbiAgICAgICAgZGF0YXNldC5pbnRlcnBvbGF0ZWRWYWx1ZSA9IHByZXYueSArICh4VmFsdWUgLSBwcmV2LngpICogc2xvcGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlID0gTmFOO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbn07XG4iXX0=
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRqcy1wbHVnaW4tbWFya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LWpzL2NoYXJ0anMtcGx1Z2luLW1hcmtlci9jaGFydGpzLXBsdWdpbi1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7RUFJRTtBQUdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsRCxJQUFJLGNBQWMsR0FBRztJQUNuQixJQUFJLEVBQUU7UUFDSixLQUFLLEVBQUUsT0FBTztRQUNkLEtBQUssRUFBRSxDQUFDO1FBQ1IsV0FBVyxFQUFFLEVBQUU7S0FDaEI7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztLQUNmO0NBQ0YsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtJQUM5Qzs7TUFFRTtJQUNGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBcUIsRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFDLENBQUMsQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxZQUFZLDBDQUFFLFlBQVksQ0FBQSxDQUFBLEVBQUEsQ0FBQyxDQUFDO0FBQ3BHLENBQUMsQ0FBQztBQUVGLGVBQWU7SUFDYixFQUFFLEVBQUUsUUFBUTtJQUVaLFNBQVMsRUFBRSxVQUFVLEtBQUs7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBELElBQ0UsVUFBVSxLQUFLLFFBQVE7WUFD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a2VyIHBsdWdpbiBpcyBoZWF2aWx5IGluc3BpcmVkIGJ5IGh0dHBzOi8vY2hhcnRqcy1wbHVnaW4tY3Jvc3NoYWlyLm5ldGxpZnkuYXBwXG4gIFRoZSBwcm9qZWN0IGFwcGVhcnMgc3RhbGUgYW5kIG9ubHkgdGhlIHZlcnRpY2FsIGxpbmUgZmVhdHVyZSBpcyBuZWVkZWRcbiAgIHBhcnQgb2YgdGhlIHBsdWdpbiB0aGF0IHdhcyBhY3R1YWxseSBuZWVkZWQgaXMgaW1wbGVtZW50ZWQgaGVyZS4gXG4qL1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IHZhbHVlT3JEZWZhdWx0IH0gZnJvbSAnY2hhcnQuanMvaGVscGVycyc7XG5cbmltcG9ydCB7IENoYXJ0RGF0YXNldCB9IGZyb20gJy4uLy4uL2NoYXJ0LnR5cGVzJztcblxudmFyIGRlZmF1bHRPcHRpb25zID0ge1xuICBsaW5lOiB7XG4gICAgY29sb3I6ICdibGFjaycsXG4gICAgd2lkdGg6IDEsXG4gICAgZGFzaFBhdHRlcm46IFtdLFxuICB9LFxuICBzbmFwOiB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gIH0sXG59O1xuXG5jb25zdCBoYXNNYXJrZXJDb25maWd1cmF0aW9uID0gKGNoYXJ0OiBDaGFydCkgPT4ge1xuICAvKiBcbiAgICBIYWNreSBzb2x1dGlvbi4gU2hvdWxkIGJlIGZpeGVkIGluIHRoaXMgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzE5NjdcbiAgKi9cbiAgcmV0dXJuIGNoYXJ0LmRhdGEuZGF0YXNldHMuc29tZSgoZGF0YXNldDogQ2hhcnREYXRhc2V0KSA9PiAhIWRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaXNTdG9ja0NoYXJ0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaWQ6ICdtYXJrZXInLFxuXG4gIGFmdGVySW5pdDogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB4U2NhbGVUeXBlID0gY2hhcnQuY29uZmlnLm9wdGlvbnMuc2NhbGVzLngudHlwZTtcblxuICAgIGlmIChcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsaW5lYXInICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAndGltZScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdjYXRlZ29yeScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsb2dhcml0aG1pYydcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhcnQub3B0aW9ucy5wbHVnaW5zLm1hcmtlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGFydC5vcHRpb25zLnBsdWdpbnMubWFya2VyID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgY2hhcnQubWFya2VyID0ge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBzdXBwcmVzc1VwZGF0ZTogZmFsc2UsXG4gICAgICB4OiBudWxsLFxuICAgICAgb3JpZ2luYWxEYXRhOiBbXSxcbiAgICAgIG9yaWdpbmFsWFJhbmdlOiB7fSxcbiAgICAgIGRyYWdTdGFydGVkOiBmYWxzZSxcbiAgICAgIGRyYWdTdGFydFg6IG51bGwsXG4gICAgICBkcmFnRW5kWDogbnVsbCxcbiAgICAgIHN1cHByZXNzVG9vbHRpcHM6IGZhbHNlLFxuICAgICAgaWdub3JlTmV4dEV2ZW50czogMCxcbiAgICB9O1xuICB9LFxuXG4gIGdldE9wdGlvbjogZnVuY3Rpb24gKGNoYXJ0LCBjYXRlZ29yeSwgbmFtZSkge1xuICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChcbiAgICAgIGNoYXJ0Lm9wdGlvbnMucGx1Z2lucy5tYXJrZXJbY2F0ZWdvcnldXG4gICAgICAgID8gY2hhcnQub3B0aW9ucy5wbHVnaW5zLm1hcmtlcltjYXRlZ29yeV1bbmFtZV1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0T3B0aW9uc1tjYXRlZ29yeV1bbmFtZV1cbiAgICApO1xuICB9LFxuXG4gIGdldFhTY2FsZTogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgcmV0dXJuIGNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoID8gY2hhcnQuc2NhbGVzW2NoYXJ0LmdldERhdGFzZXRNZXRhKDApLnhBeGlzSURdIDogbnVsbDtcbiAgfSxcbiAgZ2V0WVNjYWxlOiBmdW5jdGlvbiAoY2hhcnQpIHtcbiAgICByZXR1cm4gY2hhcnQuc2NhbGVzW2NoYXJ0LmdldERhdGFzZXRNZXRhKDApLnlBeGlzSURdO1xuICB9LFxuXG4gIGFmdGVyRXZlbnQ6IGZ1bmN0aW9uIChjaGFydCwgZXZlbnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFydC5jb25maWcub3B0aW9ucy5zY2FsZXMueC5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlID0gZXZlbnQuZXZlbnQ7XG5cbiAgICB2YXIgeFNjYWxlVHlwZSA9IGNoYXJ0LmNvbmZpZy5vcHRpb25zLnNjYWxlcy54LnR5cGU7XG5cbiAgICBpZiAoXG4gICAgICB4U2NhbGVUeXBlICE9PSAnbGluZWFyJyAmJlxuICAgICAgeFNjYWxlVHlwZSAhPT0gJ3RpbWUnICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAnY2F0ZWdvcnknICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAnbG9nYXJpdGhtaWMnXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHhTY2FsZSA9IHRoaXMuZ2V0WFNjYWxlKGNoYXJ0KTtcblxuICAgIGlmICgheFNjYWxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNoYXJ0Lm1hcmtlci5pZ25vcmVOZXh0RXZlbnRzID4gMCkge1xuICAgICAgY2hhcnQubWFya2VyLmlnbm9yZU5leHRFdmVudHMgLT0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBmaXggZm9yIFNhZmFyaVxuICAgIHZhciBidXR0b25zID0gZS5uYXRpdmUuYnV0dG9ucyA9PT0gdW5kZWZpbmVkID8gZS5uYXRpdmUud2hpY2ggOiBlLm5hdGl2ZS5idXR0b25zO1xuICAgIGlmIChlLm5hdGl2ZS50eXBlID09PSAnbW91c2V1cCcpIHtcbiAgICAgIGJ1dHRvbnMgPSAwO1xuICAgIH1cblxuICAgIGNoYXJ0Lm1hcmtlci5lbmFibGVkID1cbiAgICAgIGUudHlwZSAhPT0gJ21vdXNlb3V0JyAmJlxuICAgICAgZS54ID4geFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeFNjYWxlLm1pbikgJiZcbiAgICAgIGUueCA8IHhTY2FsZS5nZXRQaXhlbEZvclZhbHVlKHhTY2FsZS5tYXgpO1xuXG4gICAgaWYgKCFjaGFydC5tYXJrZXIuZW5hYmxlZCAmJiAhY2hhcnQubWFya2VyLnN1cHByZXNzVXBkYXRlKSB7XG4gICAgICBpZiAoZS54ID4geFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeFNjYWxlLm1heCkpIHtcbiAgICAgICAgLy8gc3VwcHJlc3MgZnV0dXJlIHVwZGF0ZXMgdG8gcHJldmVudCBlbmRsZXNzIHJlZHJhd2luZyBvZiBjaGFydFxuICAgICAgICBjaGFydC5tYXJrZXIuc3VwcHJlc3NVcGRhdGUgPSB0cnVlO1xuICAgICAgICBjaGFydC51cGRhdGUoJ25vbmUnKTtcbiAgICAgIH1cbiAgICAgIGNoYXJ0Lm1hcmtlci5kcmFnU3RhcnRlZCA9IGZhbHNlOyAvLyBjYW5jZWwgem9vbSBpbiBwcm9ncmVzc1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjaGFydC5tYXJrZXIuc3VwcHJlc3NVcGRhdGUgPSBmYWxzZTtcblxuICAgIGNoYXJ0Lm1hcmtlci54ID0gZS54O1xuXG4gICAgY2hhcnQuZHJhdygpO1xuICB9LFxuICBkb0RyYXc6IGZ1bmN0aW9uIChjaGFydCkge1xuICAgIGlmICghaGFzTWFya2VyQ29uZmlndXJhdGlvbihjaGFydCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNoYXJ0Lm1hcmtlci5lbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3VHJhY2VMaW5lKGNoYXJ0KTtcbiAgICB0aGlzLmludGVycG9sYXRlVmFsdWVzKGNoYXJ0KTtcbiAgICB0aGlzLmRyYXdUcmFjZVBvaW50cyhjaGFydCk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgYmVmb3JlRHJhdzogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgcmV0dXJuIHRoaXMuZG9EcmF3KGNoYXJ0KTtcbiAgfSxcbiAgLy8gTG9naWMgbW92ZWQgdG8gYmVmb3JlRHJhdyBpbiBvcmRlclxuICAvLyBmb3IgdGhlIHZlcnRpY2FsIGxpbmUgdG8gYmUgZHJhd25cbiAgLy8gdW5kZXIgdG9vbHRpcCBhbmQgZGF0YWxhYmVscy5cbiAgLy8gYWZ0ZXJEcmF3OiBmdW5jdGlvbihjaGFydCkge1xuICAvLyAgIHJldHVybiB0aGlzLmRvRHJhdyhjaGFydCk7XG4gIC8vIH0sXG5cbiAgZHJhd1RyYWNlTGluZTogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgeVNjYWxlID0gdGhpcy5nZXRZU2NhbGUoY2hhcnQpO1xuXG4gICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICd3aWR0aCcpO1xuICAgIHZhciBjb2xvciA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICdjb2xvcicpO1xuICAgIHZhciBkYXNoUGF0dGVybiA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnbGluZScsICdkYXNoUGF0dGVybicpO1xuICAgIHZhciBzbmFwRW5hYmxlZCA9IHRoaXMuZ2V0T3B0aW9uKGNoYXJ0LCAnc25hcCcsICdlbmFibGVkJyk7XG5cbiAgICB2YXIgbGluZVggPSBjaGFydC5tYXJrZXIueDtcblxuICAgIGlmIChzbmFwRW5hYmxlZCAmJiBjaGFydC5fYWN0aXZlLmxlbmd0aCkge1xuICAgICAgbGluZVggPSBjaGFydC5fYWN0aXZlWzBdLmVsZW1lbnQueDtcbiAgICB9XG5cbiAgICBjaGFydC5jdHguYmVnaW5QYXRoKCk7XG4gICAgY2hhcnQuY3R4LnNldExpbmVEYXNoKGRhc2hQYXR0ZXJuKTtcbiAgICBjaGFydC5jdHgubW92ZVRvKGxpbmVYLCB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh5U2NhbGUubWF4KSk7XG4gICAgY2hhcnQuY3R4LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDtcbiAgICBjaGFydC5jdHguc3Ryb2tlU3R5bGUgPSBjb2xvcjtcbiAgICBjaGFydC5jdHgubGluZVRvKGxpbmVYLCB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh5U2NhbGUubWluKSk7XG4gICAgY2hhcnQuY3R4LnN0cm9rZSgpO1xuICAgIGNoYXJ0LmN0eC5zZXRMaW5lRGFzaChbXSk7XG4gIH0sXG5cbiAgZHJhd1RyYWNlUG9pbnRzOiBmdW5jdGlvbiAoY2hhcnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAodmFyIGNoYXJ0SW5kZXggPSAwOyBjaGFydEluZGV4IDwgY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGg7IGNoYXJ0SW5kZXgrKykge1xuICAgICAgdmFyIGRhdGFzZXQgPSBjaGFydC5kYXRhLmRhdGFzZXRzW2NoYXJ0SW5kZXhdO1xuICAgICAgdmFyIG1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YShjaGFydEluZGV4KTtcblxuICAgICAgdmFyIHlTY2FsZSA9IGNoYXJ0LnNjYWxlc1ttZXRhLnlBeGlzSURdO1xuXG4gICAgICBpZiAobWV0YS5oaWRkZW4gfHwgIWRhdGFzZXQuaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNoYXJ0LmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIGNoYXJ0LmN0eC5hcmMoXG4gICAgICAgIGNoYXJ0Lm1hcmtlci54LFxuICAgICAgICB5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZShkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlKSxcbiAgICAgICAgMyxcbiAgICAgICAgMCxcbiAgICAgICAgMiAqIE1hdGguUEksXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuICAgICAgY2hhcnQuY3R4LmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICBjaGFydC5jdHgubGluZVdpZHRoID0gMjtcbiAgICAgIGNoYXJ0LmN0eC5zdHJva2VTdHlsZSA9IGRhdGFzZXQuYm9yZGVyQ29sb3I7XG4gICAgICBjaGFydC5jdHguZmlsbCgpO1xuICAgICAgY2hhcnQuY3R4LnN0cm9rZSgpO1xuICAgIH1cbiAgfSxcblxuICBpbnRlcnBvbGF0ZVZhbHVlczogZnVuY3Rpb24gKGNoYXJ0KSB7XG4gICAgZm9yICh2YXIgY2hhcnRJbmRleCA9IDA7IGNoYXJ0SW5kZXggPCBjaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aDsgY2hhcnRJbmRleCsrKSB7XG4gICAgICB2YXIgZGF0YXNldCA9IGNoYXJ0LmRhdGEuZGF0YXNldHNbY2hhcnRJbmRleF07XG5cbiAgICAgIHZhciBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoY2hhcnRJbmRleCk7XG5cbiAgICAgIHZhciB4U2NhbGUgPSBjaGFydC5zY2FsZXNbbWV0YS54QXhpc0lEXTtcbiAgICAgIHZhciB4VmFsdWUgPSB4U2NhbGUuZ2V0VmFsdWVGb3JQaXhlbChjaGFydC5tYXJrZXIueCk7XG5cbiAgICAgIGlmIChtZXRhLmhpZGRlbiB8fCAhZGF0YXNldC5pbnRlcnBvbGF0ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRhdGEgPSBkYXRhc2V0LmRhdGE7XG4gICAgICB2YXIgaW5kZXggPSBkYXRhLmZpbmRJbmRleChmdW5jdGlvbiAobykge1xuICAgICAgICByZXR1cm4gby54ID49IHhWYWx1ZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHByZXYgPSBkYXRhW2luZGV4IC0gMV07XG4gICAgICB2YXIgbmV4dCA9IGRhdGFbaW5kZXhdO1xuXG4gICAgICBpZiAoY2hhcnQuZGF0YS5kYXRhc2V0c1tjaGFydEluZGV4XS5zdGVwcGVkTGluZSAmJiBwcmV2KSB7XG4gICAgICAgIGRhdGFzZXQuaW50ZXJwb2xhdGVkVmFsdWUgPSBwcmV2Lnk7XG4gICAgICB9IGVsc2UgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgICB2YXIgc2xvcGUgPSAobmV4dC55IC0gcHJldi55KSAvIChuZXh0LnggLSBwcmV2LngpO1xuICAgICAgICBkYXRhc2V0LmludGVycG9sYXRlZFZhbHVlID0gcHJldi55ICsgKHhWYWx1ZSAtIHByZXYueCkgKiBzbG9wZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFzZXQuaW50ZXJwb2xhdGVkVmFsdWUgPSBOYU47XG4gICAgICB9XG4gICAgfVxuICB9LFxufTtcbiJdfQ==
|